Commit Graph
58 Commits
Author SHA1 Message Date
Tianyi Cui 8b0b2dc1d8 Merge master b86916de into release/session-log-v4
Integrate the master tip observed for the final V4 landing preparation on
top of the already merged migration stack. Preserve the V4 writer, flat
message migration, extension policy, catalog validation and historical
recordings while bringing in upstream profile resolution and desktop/UI
changes.

Resolve four generated translation-pairing records from the combined
English/Chinese text. Keep this master checkpoint separate from any
integration fixes and retain all reviewed parent history. Follow-up
validation covers the affected launch/UI paths and migration replay.
2026-09-19 18:00:36 +08:00
imccyu 9fd0a5ad52 refactor(boot): keep runtime-only profile resolution 2026-09-19 13:29:13 +08:00
_KermanandTianyi Cui fb79a944f5 refactor(llm): separate durable producer sources from request inputs
Give durable user context its producer-owned source kind instead of a generic plugin wrapper. The V3-to-V4 conversion preserves the frozen rename and collision rules, all own JSON metadata, event coordinates, and historical request-only kinds. Native catalog and JSONL admission retain source validation so unknown attribution can survive without its producer while malformed owned sources are refused.

Use an explicit user-only RequestUserInput for auxiliary LLM prompts that do not own durable message identity. Auto Review and compaction remove their request-only source registrations while retaining prompt content and freezing; provider serializers and projections keep the same wire data, assistant replay isolation, image ordering, and tool correlation. Session writes, Agent delivery, and recorded title requests continue to require identified durable messages.

Bind the saved compatibility policy only to user sources and qualify tmux location attribution without weakening fixed system, model, or tool semantics. Rebuild the current inventory and unpublished V4 acknowledgement on the actual tool-role parent, preserving its rationale and all accepted historical records. The catalog format version records tooling metadata; Session remains V4. Developer-role policy and activation belong to their own feature.

The latest-master Messages adapter, serialization, request-input typing, EpochHeader reservation, and attribution checks pass 103 tests across five files. The retained V3 Messages input-history snapshot passes through the source profile; Host/Client typechecks and all 41 documentation gates pass. The generated comparison records four changed roots and 447 unchanged type fingerprints. Latest-master ARIA changes are retained, with producer source labels applied independently; new Messages fixtures retain their producer names as declared source kinds and use the fixed system-message helper; recorded Session generations are unchanged by this regrouping.

Co-authored-by: Tianyi Cui <[email protected]>
2026-09-18 19:07:12 +08:00
_KermanandTianyi Cui f4a32dbd0a refactor(llm): flatten tool results and validate native V4 sessions
Represent tool results as tool-role messages and migrate released wrappers
without losing outer own JSON fields, call identity, error state, or writer
field order. Refuse nested or wrapper-only information that has no lossless
current representation before successor publication.

Validate current event relationships directly instead of projecting V4 data
back into V3. Keep lifecycle, PTC, title/command, compaction, system-field and
retired-syntax checks on catalog restoration and ordinary JSONL opens. The
Worker JSON equality helper must inspect own keys so it cannot admit PTC
arguments that Node rejects.

Keep the source role change, required native admission and consumer fixture
updates in one complete review layer. Explain shared-type changes in the
persistence record and the native reader rationale in its existing note.
Use checked branded fixture identities and discriminant narrowing instead
of unknown double casts; fixture values and assertions remain intact.

This recomposes the original tool-role work by _Kerman with the independently
validated migration and admission repairs by Tianyi Cui. Frozen generations
and snapshot input version selection are retained.

Co-authored-by: Tianyi Cui <[email protected]>
2026-09-18 19:05:32 +08:00
imccyu 6aa2e4633c feat(boot): add profile resolution modes 2026-09-14 22:30:48 +08:00
Tianyi Cui 73985344cd feat(presets): disable ralph in the default compositions 2026-09-13 00:15:39 +08:00
Chinesezjc 38391bf6ba Merge remote-tracking branch 'origin/master' into auto-review-per-call 2026-09-11 17:03:09 +08:00
Chinesezjc 1de37ddc2b test(web): follow the settled-loader startup audit
Loader settlement no longer rejects on a failed optional entry, so the Auto
rollback scenario reads the conflict from the startup audit. Refresh the Auto
denial golden for the merged composer chrome.
2026-09-11 15:41:46 +08:00
Chinesezjc fed65b7cad Merge master into the Auto review branch
Resolve 36 conflicts across source, bilingual READMEs, and generated
documentation: keep master's command-identity and popup APIs, RemoteMock
test infrastructure, and regenerated catalogs; keep the Auto review
catalog, slot, dismissal, and snapshot content.
2026-09-11 14:15:32 +08:00
Yichen Jiang 15dd4fa046 Merge remote-tracking branch 'origin/master' into worktree/llm-deepseek-messages 2026-09-10 17:20:22 +08:00
creatixchu 7910cd9e0b test(web): assert the shipped feedback command identity 2026-09-10 16:00:08 +08:00
Yichen Jiang 4af56cf808 feat(llm): sync V41 Messages catalog and keep Web on Chat Completions 2026-09-10 10:32:04 +08:00
Yichen Jiang 2044d2906b Merge remote-tracking branch 'origin/master' into worktree/llm-deepseek-messages
# Conflicts:
#	apps/web/tsconfig.json
#	tsconfig.host.json
2026-09-09 11:09:16 +08:00
creatixchu e6ff3290cf Merge remote-tracking branch 'origin/master' into worktree/composer-plus-menu
Takes the merged slash-command localization (#3557): its zh description
copy replaces this branch's, its contribution description() callback and
HOST_DESCRIPTION_KEYS are superseded by the label/description/icon
contribution face and presentation.ts, and its zh menu golden and
locale-switch test are refreshed for the sectioned menu.
2026-09-09 10:25:10 +08:00
pku-xht 0eb0e8c770 Merge master to restore required CI for Auto review 2026-09-09 05:25:20 +08:00
pku-xht 55e53907ab feat(permission): add experimental Auto review 2026-09-09 04:36:19 +08:00
yudshj 37d27fcdf9 feat(web): present immutable file deliveries with download cards 2026-09-09 01:15:31 +08:00
creatixchu 5b1bb021cf feat(web): group, localize, and re-present the composer command menu
The + button and a typed / open one menu with an Add section (File, Goal,
Plan, Feedback) and a Commands section (Compact, Permission, Model, Export)
in usage order; rows carry a glyph, a localized title and description, and
the command name as an alias where the localized title differs. Built-in
Host rows get their face from the ui-commands dictionaries when the catalog
description is the canonical English text. A menu pick fills the locale's
claim token (/计划 ) while the submission executes the catalog name, and a
typed localized token resolves on Space and Enter in every locale. The File
row is a new action contribution kind that opens the composer's file picker
through the scoped slash/input-pick-files event; the paperclip button is
removed and the + button reads "Add files or run commands".
2026-09-08 12:28:40 +08:00
Yichen Jiang c258d3cf4e feat(web): use Messages for the default DeepSeek provider 2026-09-07 20:57:23 +08:00
fz 0cdcc9c3c5 feat(presets): omit workflow from PTC mode 2026-09-01 22:45:09 +08:00
imccyu 9135a13a8b refactor(consumers): remove cross-package runtime relays 2026-08-30 02:29:52 +08:00
_Kerman f436c888aa Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id 2026-08-25 20:24:54 +08:00
_Kerman 9365ef496d Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id
# Conflicts:
#	packages/acp/acp/tests/approval.spec.ts
#	packages/acp/acp/tests/edges.spec.ts
#	packages/api/session-controller/tests/event-script.client.ts
#	packages/client/connection/src/client/fixture.ts
#	packages/client/ui-conversation/src/client/contract/slots.ts
#	packages/client/ui-conversation/src/client/contract/views.ts
#	packages/client/ui-conversation/src/client/index.ts
#	packages/client/ui-conversation/src/client/stores.ts
#	packages/core/agent-loop/tests/loop.spec.ts
#	packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/host/apiproxy/src/api/events.ts
#	packages/host/apiproxy/tests/api-proxy-view.spec.ts
#	packages/interaction/user-approval/src/index.ts
#	packages/llm/llm-deepseek/tests/adapter.e2e.ts
#	packages/llm/llm-pi-ai/src/context.ts
#	packages/llm/llm-pi-ai/tests/context.spec.ts
#	packages/llm/llm/tests/content.spec.ts
#	packages/subagent/subagent/tests/continuation.spec.ts
#	packages/subagent/tool-subagent/tests/tool-subagent.spec.ts
#	packages/test-support/llm-replay/tests/llm-replay.spec.ts
#	packages/todo/tool-todo/tests/tool-todo.spec.ts
#	scripts/gen-persistence-catalog.ts
2026-08-25 14:37:44 +08:00
Dudu-0223 8bf8e42b63 Merge remote-tracking branch 'origin/master' into fix/web-fetch-ssrf 2026-08-25 09:38:28 +08:00
Dudu-0223 070a180a10 Merge remote-tracking branch 'origin/master' into fix/web-fetch-ssrf
# Conflicts:
#	examples/acp-agent/tests/acp.snapshot.ts
#	examples/acp-agent/tests/snapshots/web-fetch/input.json
#	examples/acp-agent/tests/snapshots/web-fetch/stdout.expected.jsonl
#	knip.json
#	packages/test-support/session-snapshot/tests/fixtures/web-fetch-network.ts
#	snapshots/sdk/subagent-mixed/session.1.jsonl
#	snapshots/sdk/subagent-mixed/session.2.jsonl
#	snapshots/session/advanced-toolchain-runtime/session.1.jsonl
#	snapshots/session/advanced-toolchain-runtime/session.2.jsonl
#	snapshots/session/subagent-depth-two-rejection/session.1.jsonl
#	snapshots/session/subagent-depth-two-rejection/session.2.jsonl
#	snapshots/session/subagent-multi/session.1.jsonl
#	snapshots/session/subagent-multi/session.2.jsonl
#	snapshots/session/subagent-parallel/session.1.jsonl
#	snapshots/session/subagent-parallel/session.2.jsonl
#	snapshots/session/web-fetch/session.jsonl
#	snapshots/session/web-fetch/web-fetch-fixture-server.mjs
2026-08-25 09:14:36 +08:00
imccyu 08ed5a54a8 refactor(webserver): minimize HTTP gzip integration 2026-08-25 06:43:24 +08:00
Tianyi Cui caf386f59c fix(test): use expected-output naming 2026-08-24 21:37:14 +08:00
Tianyi Cui 6189e4a374 test(web): separate session snapshots from goldens 2026-08-24 21:36:31 +08:00
Dudu-0223 470af0a404 fix(web): preserve preview fetch composition 2026-08-24 14:18:15 +08:00
_Kerman a789637db6 refactor(llm): rename CallId to ToolCallId 2026-08-21 16:10:24 +08:00
Yichen Jiang 0ca0f3d0b8 refactor(llm): use one five-retry default 2026-08-18 16:33:22 +08:00
Yichen Jiang 1dbafe2973 refactor(llm): centralize deployment retry defaults 2026-08-18 15:14:09 +08:00
Yichen Jiang 2d2beda196 feat(web): default model retries to five 2026-08-17 17:59:06 +08:00
Tianyi Cui a2d0f7f411 refactor: apply repository naming contract
Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change.
2026-08-13 00:54:38 +08:00
ZiyaZhang 1ca6f68b17 fix(web): guide clickable file references 2026-08-12 07:30:53 -07:00
Turtle 0c708cb10d refactor: replace overloaded surface terminology 2026-08-11 15:23:05 +08:00
creatixchu c1f0a6a683 Merge remote-tracking branch 'origin/master' into feat/read-image-context
# Conflicts:
#	apps/cli/tests/web-agent-presets.e2e.ts
#	packages/fs/tool-fs/package.json
2026-08-11 10:12:14 +08:00
Yichen Jiang d65fe72080 test(web): align shipped preset roster 2026-08-10 23:01:00 +08:00
creatixchu 9fcbeb8615 test(web): expect read_image in shipped composition 2026-08-10 20:21:30 +08:00
Yichen Jiang 8ae1a9d6a8 Merge remote-tracking branch 'origin/master' into fix/preset-host-plane-task-registry 2026-08-10 16:53:03 +08:00
Turtle a27efdef36 docs: make technical prose concrete 2026-08-10 16:34:20 +08:00
Yichen Jiang 5d86a284e5 fix(web-app,agent-presets): keep the task registry on the host plane
`tool-bash` resolves the background-task registry with `ctx.get('tasks')`,
and it sits at the preset's top level. The registry sat inside an
entry-local `isolate: { tasks: true }` realm, which is invisible to every
sibling row outside it, while the Web surface disabled the host row — so
both lookups missed and every `run_in_background` call answered
"background tasks unavailable" with `task_output`, `task_list`, and
`task_kill` still listed in the catalog. `task_list` returning
"(no background tasks)" is what made the outage read as an empty queue
rather than a severed producer.

That is the `goals` criterion read from inside the preset: a Service a row
outside its realm READS belongs to the plane both can see. `tasks` already
keys access by owning agent (`assertAccess` compares `task.owner.id`) and
mints an independent token per `attachSurface` call, so one host instance
serves every session exactly as before presets — the per-preset-standing-mounts
note records that sharing `tasks-local` is a return to its design.

`minimal` mounts no `tool-tasks`, and the `start()` control-surface gate is
a service-wide set that another preset's controls would open for it, so its
`tool-bash` disables `run_in_background` and drops the parameter from the
schema.

Fixes #2141
2026-08-10 14:18:41 +08:00
Yichen Jiang bcfab57318 Merge branch 'stack/agent-profiles-1-seam' into stack/agent-profiles-3-wire 2026-08-08 22:47:15 +08:00
Hypatia May d769d3cbb7 feat(subagent): let ancestors interrupt descendants
interrupt_agent(agent_id) passes the calling agent as the ancestor
authority for ctx.subagents.interrupt(); the service verifies live
registry identity and recorded lineage, so a direct child or deeper
descendant stops with the same generic parameter while send_message keeps
its exact-direct-parent authority.

Discovery: list_agents gains an optional scope. descendants walks the new
SubagentService.listDescendants() — one lineage trace flattened in stable
pre-order across ordinary and one-shot intermediates, each entry carrying
its verified parentId and depth — and every status now comes from the
live Agent registry (running/idle/complete).

Refs #1535
2026-08-08 20:02:37 +08:00
Yichen Jiang 342b5c4830 fix(web): keep both agents distinct in the shipped-composition test
The preset catalog assertion and master's new command-catalog assertion each
create an agent in the same test; the second is now named for what it is.
2026-08-07 16:22:02 +08:00
Yichen Jiang 41938b9da6 Merge branch 'stack/agent-profiles-1-seam' into stack/agent-profiles-3-wire
# Conflicts:
#	apps/web/tests/shipped-composition.e2e.ts
2026-08-07 16:20:38 +08:00
Yichen Jiang 89ae94d89f fix(web): stop leaking ask_user_question into every preset
`ui-question`'s node half called `ctx.tools.register` on the host context.
`ScopedLayers.merge()` combines the global layer with the agent's exact-scope
layer, and an unscoped registration lands in the global one — so the tool
reached every agent no matter which preset composed it. `core-web`, sold as a
two-tool benchmark surface, really presented three.

Rendering a question is a host UI capability; having the tool is an agent
capability, and only a preset decides that. The node half is now empty and the
`tool-ask-user` row moved into the preset that wants it. The TUI keeps its own
row, having no presets.

The composition tests now assert the global tool layer is EMPTY, which is the
invariant that would have caught this: any tool outside a preset reaches every
agent. The browser lane's composition, seeded-history, and hermetic-skill
assertions address their registries through a composed agent for the same
reason — those services are per session now, and the host cannot resolve an
`isolate` realm by name.
2026-08-07 02:57:30 +08:00
Turtle 96ac51f0c8 Merge origin/master into task/command-feedback-master 2026-08-06 16:02:25 +08:00
Huanqi Cao 782894ff8c Merge remote-tracking branch 'origin/master' into feat/ripgrep-packaged-binary 2026-08-02 16:18:46 +08:00
imccyu 5ef5feb01a fix(web): reconcile rebased subagent contracts 2026-08-02 12:51:09 +08:00