Commit Graph
668 Commits
Author SHA1 Message Date
Yudong ecf6acfb15 feat(api): support binary fields in Remote results 2026-09-21 12:50:40 +08:00
Yichen Jiang bb7e92c999 Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/persistence-catalog.i18n.yaml
#	docs/persistence-catalog.md
#	docs/persistence-catalog.zh.md
#	docs/persistence-schema.json
2026-09-21 11:51:54 +08:00
Yichen Jiang 61719629fc Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
# Conflicts:
#	apps/web/tests/expected/agent-preset-selection/header.expected.md
#	docs/architecture.i18n.yaml
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	docs/persistence-catalog.i18n.yaml
#	docs/persistence-catalog.md
#	docs/persistence-catalog.zh.md
#	docs/persistence-schema.json
#	docs/subsystems/web-client.i18n.yaml
#	packages/api/README.i18n.yaml
#	packages/api/README.md
#	packages/api/README.zh.md
#	packages/api/session-controller/README.i18n.yaml
#	packages/api/session-controller/README.md
#	packages/api/session-controller/README.zh.md
#	packages/api/session-controller/src/client/sessions/manager.ts
#	packages/api/session-controller/src/client/sessions/service.ts
#	packages/api/session-controller/tests/manager.client.spec.ts
#	packages/client/locale/tests/language-row.client.spec.tsx
#	packages/client/ui-chat/tests/chat-view.client.spec.tsx
#	packages/client/ui-chat/tests/transcript-view-row.client.spec.tsx
#	packages/client/ui-conversation/tests/conversation-registry.client.spec.ts
#	packages/client/ui-conversation/tests/enter-behavior-row.client.spec.tsx
#	packages/client/ui-conversation/tests/input-bar.client.spec.tsx
#	packages/client/ui-conversation/tests/input-matrix.client.spec.tsx
#	packages/client/ui-conversation/tests/input-scenarios.client.spec.tsx
#	packages/client/ui-conversation/tests/skeleton.client.spec.tsx
#	packages/client/ui-deliverables/tests/deliverables.client.spec.tsx
#	packages/client/ui-jobs/tests/job-list-action.client.spec.tsx
#	packages/client/ui-layout/tests/app-frame.client.spec.tsx
#	packages/client/ui-layout/tests/document-title.client.spec.tsx
#	packages/client/ui-open-in-app/tests/open-in-app-action.client.spec.tsx
#	packages/client/ui-primitives/README.i18n.yaml
#	packages/client/ui-session/tests/ui-session.client.spec.ts
#	packages/client/ui-settings-general/tests/settings-root.client.spec.tsx
#	packages/client/ui-settings-unarchive-sessions/tests/components.client.spec.tsx
#	packages/client/ui-subagent/README.i18n.yaml
#	packages/client/ui-subagent/README.md
#	packages/client/ui-subagent/README.zh.md
#	packages/client/ui-subagent/src/client/SubagentHeaderLineage.tsx
#	packages/client/ui-subagent/tests/conversation-ui.client.spec.tsx
#	packages/client/ui-theme/tests/appearance-row.client.spec.tsx
#	packages/client/ui-theme/tests/font-size-row.client.spec.tsx
#	packages/client/ui-tool/tests/coverage-tails.client.spec.tsx
#	packages/client/ui-tool/tests/diff-card.client.spec.tsx
#	packages/client/ui-tool/tests/image-card.client.spec.tsx
#	packages/client/ui-tool/tests/read-card.client.spec.tsx
#	packages/client/ui-tool/tests/terminal-card.client.spec.tsx
#	packages/client/ui-trajectory/tests/views.client.spec.tsx
#	packages/client/ui-user-questions/tests/plan-review-panel.client.spec.tsx
#	packages/client/ui-user-questions/tests/user-questions-composer.client.spec.tsx
#	packages/client/ui-workflow-run/tests/workflow-run.client.spec.tsx
#	packages/client/ui-workspace/tests/apply.client.spec.ts
#	packages/client/ui-workspace/tests/tree.client.spec.ts
#	packages/client/ui-workspace/tests/workspace-browser.client.spec.tsx
#	packages/client/ui-workspace/tests/workspace-picker.client.spec.tsx
#	packages/client/ui-workspace/tests/workspaces-service.client.spec.ts
#	packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
#	packages/jobs/tool-jobs/src/index.ts
#	packages/shell/tool-bash/README.i18n.yaml
#	packages/test-support/client-runtime/src/sessions.ts
2026-09-21 11:34:20 +08:00
creatixchu 82692090c8 Merge remote-tracking branch 'origin/master' into feat/4562-file-open-apps 2026-09-21 09:56:00 +08:00
_Kerman a4fdaebf52 Merge remote-tracking branch 'origin/master' into xtr/default-workspace-first-send 2026-09-20 20:44:25 +08:00
creatixchu 1790a09f77 Merge remote-tracking branch 'origin/master' into feat/4562-file-open-apps 2026-09-20 20:33:24 +08:00
imccyu ffea3c8818 fix(gateway): close the remaining uplink lifecycle gaps 2026-09-20 17:53:18 +08:00
imccyu 520c225b87 test(gateway): cover the uplink edge paths 2026-09-20 17:53:17 +08:00
imccyu 355df025d4 fix(gateway): harden the Remote uplink lifecycle 2026-09-20 17:53:17 +08:00
imccyu 8ce7c27671 refactor(connection): admit every request as the single operator Peer 2026-09-20 17:53:17 +08:00
imccyu 35602063d7 refactor(typert): name the client stream handle RemoteStreamHandle everywhere 2026-09-20 17:53:17 +08:00
imccyu 089004c418 test(gateway): cover the Remote uplink and document it
Tests bring the changed sources to full per-file coverage, the READMEs and
docs describe the uplink, the invocation context, and the Peer registry in
both languages, and the generated catalogs are refreshed.
2026-09-20 17:53:17 +08:00
imccyu 021bd03b70 feat(gateway): let every Remote stream carry a client uplink
Every Typert Remote stream accepts client-to-Host items on the same
logical stream. A method declares the uplink item type in its return
type, RemoteStream<Out, In>, and reads the items through
this.ctx.invocation.uplink(); the invocation also carries the calling
Peer. Client generated methods return a handle that iterates the
downlink and exposes send/end/dispose for the uplink.
2026-09-20 17:53:16 +08:00
_Kerman 5294b15b31 docs(workspace): separate constructor parameter tags 2026-09-20 17:48:58 +08:00
_Kerman b21fc2c8d1 Merge origin/master into xtr/default-workspace-first-send 2026-09-20 17:26:38 +08:00
_Kerman 4d2e420ef8 refactor(workspace): initialize the default workspace on startup 2026-09-20 17:19:54 +08:00
creatixchu e0187ecdf8 Merge remote-tracking branch 'origin/master' into feat/4562-file-open-apps 2026-09-20 17:16:21 +08:00
creatixchu a4148d687f fix: refine file action menus feedback and shared queries 2026-09-20 16:46:58 +08:00
_Kerman 43372b28ce Merge origin/master into xtr/default-workspace-first-send 2026-09-20 16:00:37 +08:00
_Kerman d4d03b7c41 docs(workspace): clarify default directory lookup and cancellation 2026-09-20 15:58:53 +08:00
_Kerman 8e313eaa30 test(workspace): cover first-use configuration and preset failures 2026-09-20 15:58:33 +08:00
Dudu-0223 e848b6226f Merge remote-tracking branch 'origin/master' into codex/fix-migration 2026-09-20 15:45:12 +08:00
_Kerman b93f55f7ff Merge remote-tracking branch 'origin/master' into xtr/default-workspace-first-send 2026-09-20 15:03:03 +08:00
_Kerman e71df56b1a feat(workspace): create the default workspace on first send 2026-09-20 14:59:15 +08:00
liukx0205 b882e7fc20 docs(session): record the client-local engagement memory limits 2026-09-20 14:54:27 +08:00
liukx0205 d8480db9f0 refactor(web): read engagement retention from one identity set
Address review: retention now has a single definition (retainedIds) shared by
the list-refresh sweep and the single-id prune, an already-engaged identity
skips the redundant row mutation, and the ledger documents why Host-asserted
running is recorded before any holder exists while the client-local acceptance
callback requires one.
2026-09-20 14:54:20 +08:00
liukx0205 e3f0d3fb6e fix(web): preserve session engagement across blank list refreshes 2026-09-20 14:43:46 +08:00
Dudu-0223 6f3140d7cf Merge origin/master into fix/lazy-subagent-migration 2026-09-20 14:37:01 +08:00
Dudu-0223 17a52a8fe3 fix(subagent): retain unreadable children in migrated catalogs 2026-09-20 14:30:02 +08:00
creatixchu 6e260998c9 fix: refine shared file controls and native query errors 2026-09-20 13:39:11 +08:00
creatixchu 7943fb3917 Merge master into file application controls 2026-09-20 13:25:10 +08:00
Dudu-0223 f44b78a622 fix(session): complete parent catalogs while isolating child failures 2026-09-20 12:09:57 +08:00
Dudu-0223 c08ead6900 Merge remote-tracking branch 'origin/master' into fix/lazy-subagent-migration
# Conflicts:
#	packages/client/ui-plugin-manager/tests/components.client.spec.tsx
#	packages/client/ui-workspace/README.i18n.yaml
#	packages/client/ui-workspace/README.md
#	packages/client/ui-workspace/README.zh.md
2026-09-20 11:58:21 +08:00
creatixchu 79798d8c5a fix: satisfy package publication and file-action coverage gates 2026-09-20 11:00:05 +08:00
imccyu 4b02d03ed5 test(session): compare the forked cold row's recency with the list formula
The cold row's updatedAt is the later of the header's creation time and the cached last prompt; the fork's creation time is wall-clock and can trail the inherited prompt by a millisecond, so the restart test asserts the same maximum instead of the prompt time alone.
2026-09-20 10:54:20 +08:00
creatixchu 0ae1b2f91c docs: describe native file application selection and platform scope 2026-09-20 10:39:42 +08:00
creatixchu 0839011204 fix: include native association types in client compilation 2026-09-20 10:37:11 +08:00
creatixchu 97877bd8b4 test: cover file handler selection and shared path authorization 2026-09-20 10:34:24 +08:00
creatixchu 39bde1a5c9 feat: query file applications for sidebar opening (#4562) 2026-09-20 10:31:32 +08:00
imccyu de055efa9a test(session): list a forked Session's cached title after a Host restart
A real fork made through sessions.fork is checkpointed into the projection cache, the Context is disposed, and a Host booted over the same storage root serves the fork's title and list metadata from the header alone, as a kind: 'cached' block, without inspecting or opening the log.
2026-09-20 02:04:37 +08:00
imccyu fd76c9534f docs(session): sync the client merge-rule prose with cached and sequenced rows
The session-controller README, the per-session store JSDoc, and the projcache predecessor-recovery and durable-web-queue-recovery notes described one higher-seq-wins rule and the asOfSeq -1 title hint. They now state that higher-seq-wins applies among Host-sequenced values, that cached list blocks yield to the connected Session's baseline, and that the predecessor title carries its stored row's watermark under kind: 'cached'.
2026-09-20 01:48:34 +08:00
imccyu c4d40864fd fix(client): route list projection blocks by kind
A `sequenced` list block merges key by key under higher-seq-wins like any Host-computed value, so a delayed control baseline at a lower cut can neither overwrite nor clear a newer live-session list value. Only a `cached` block goes through applyCached and yields to every sequenced write. The projection store's module docs describe the two row kinds.
2026-09-20 01:31:52 +08:00
imccyu 1b51a1ad2d fix(session): label list projection blocks with their sequence space
SessionProjectionHints gains a required `kind`: `sequenced` when the Host's live registry computed the block for an attached Session, `cached` when a header-only listing viewed it from the persisted projection cache. `asOfSeq` stays the producer's own watermark in that space, so the cache read faces report the lowest served row seq again instead of the -1 sentinel. The two fields are independent: `kind` names the sequence space, `asOfSeq` the position in it.
2026-09-20 01:31:52 +08:00
imccyu 9ff8f26450 fix(client): keep list-cached projection rows below sequenced writes
ProjectionValueStore rows are either cached (viewed from the persisted checkpoint by the session list, no comparable seq) or sequenced (computed by the connected Host, seq comparable within the connection). Cached values fill empty keys only; every baseline discards cached rows before seeding, and every frame replaces them regardless of seq, so a connected Session's values always supersede list hints. The list response and api-session/added blocks write cached rows.
2026-09-20 01:31:52 +08:00
imccyu 86ca9de07e fix(session): read cold seeded rows from the projection cache by header
The projection cache read-only face (cachedSnapshot, cachedPredecessorTitle) now matches the lifecycle identity a header witnesses (formatVersion, createdAt, cwd, isSeeded) and serves its rows as a cached block with asOfSeq -1. The fold face (hydratePrepared, write, coldSnapshot) keeps the full identity including the inherited cut. The session list and @ completion drop their isSeeded guards, so forked sessions keep their cached title and list metadata across a Host restart; list-children keeps its body fallback.
2026-09-20 01:31:52 +08:00
Tianyi Cui 85c6e80e0c Merge remote-tracking branch 'origin/master' into worktree/session-attachment-carriers-20260919 2026-09-20 00:27:54 +08:00
imccyu d67545f367 docs: sync catalogs and contracts for session fixes 2026-09-19 23:05:40 +08:00
imccyu 8771607f8b test: cover sidebar fork and persistent shell cancellation regressions 2026-09-19 23:05:40 +08:00
imccyu 1e48dae2aa fix(web): keep sidebar forks from switching sessions 2026-09-19 23:05:39 +08:00
Dudu-0223 a9985b49ae fix(session): migrate historical subagents only when opened 2026-09-19 22:47:01 +08:00