creatixchu
51b70f5864
Merge remote-tracking branch 'origin/master' into doc/host-client-group-readmes
...
# Conflicts:
# apps/cli/README.i18n.yaml
2026-07-29 01:08:17 +08:00
imccyu
c804dfde3e
docs: document native TypeScript source launch
2026-07-28 23:13:28 +08:00
_Kerman
b10dad0fcb
fix(persistence): restore pre-identity sessions
2026-07-28 22:16:43 +08:00
creatixchu
302dfca4d5
Merge remote-tracking branch 'origin/master' into doc/host-client-group-readmes
...
# Conflicts:
# packages/README.i18n.yaml
# packages/README.md
# packages/README.zh.md
# packages/client/connection/src/index.ts
# packages/client/connection/src/native-dialog-request.ts
# packages/client/connection/tests/node-half.spec.ts
# packages/host/apiproxy/README.i18n.yaml
2026-07-28 21:01:20 +08:00
creatixchu
772653464d
fix(connection): hold markerless requests to the Host fence — plain-HTTP browser reads carry no markers
...
Fetch-Metadata and Origin are only attached to trustworthy destinations, so
over plain HTTP a rebound page's same-origin GET (EventSource, images,
navigations) arrives with no browser markers and a readable response. Remove
the marker shortcut; non-browser clients pass the same fence via loopback,
the CLI-derived LAN IP literals, or a declared authority.
2026-07-28 17:02:39 +08:00
creatixchu
b9cbe2f029
fix(connection): fail the load on a trustedHosts entry that is not a bare authority
...
WHATWG parsing would quietly read a hostname out of harness.internal/path or
user@harness.internal , authorizing the typo's hostname; other typos would sit
silently ignored until requests 403. Refuse every URL part beyond host[:port]
at plugin load.
2026-07-28 15:57:02 +08:00
_Kerman
019b0abb68
Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.i18n.yaml
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# packages/core/session/README.i18n.yaml
# packages/session-title/session-title/tests/persistence.spec.ts
2026-07-28 15:45:53 +08:00
creatixchu
01eea07bab
fix(connection): keep LAN serving working under the /api browser-trust fence
...
Markerless requests pass on any Host (a non-browser sender is the principal
and forges headers anyway); browser Host matching gains port-less entries and
WHATWG normalization; dsh derives LAN IP-literal authorities for an
all-interfaces bind and web grows --trusted-host for named ones.
2026-07-28 15:40:02 +08:00
_Kerman
b1af35145b
fix: enforce message snapshot invariants
2026-07-28 15:33:00 +08:00
_Kerman
f074444cf0
Merge remote-tracking branch 'origin/master' into xtr/remove-append-out-of-band
2026-07-28 15:19:00 +08:00
_Kerman
0a3d38bb08
Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages
...
# Conflicts:
# docs/event-producer-consumer.md
2026-07-28 14:59:40 +08:00
creatixchu
01d68dee4e
fix(connection): fence every /api request behind one browser-trust check
...
The only browser-trust guard covered host.pickDirectory, while the
consequential methods (session.prompt drives bash) accepted any Host —
open to DNS rebinding, where a rebound page reads and writes the API as
if same-origin and only the Host header betrays the attacker's domain.
The pickDirectory-specific loopback guard becomes a prefix-wide fence:
Host must be loopback or an exact host[:port] from the new trustedHosts
config, an attached Origin must equal that authority, and explicit
cross-site markers are refused; requests without browser markers (curl,
tests, native clients) pass, because without a browser there is no
confused deputy. The loopback-socket check is dropped — binding policy
expresses reachability, and the fence is not an auth layer. The Agent
Note records the full threat model and the alternatives.
2026-07-28 14:56:45 +08:00
_Kerman
cee0666a4d
refactor(session): remove synthetic log-only turns
2026-07-28 14:41:51 +08:00
_Kerman
fbf87e660c
refactor: identify and freeze messages at creation
2026-07-28 13:55:59 +08:00
imccyu
b5168bbf86
feat(ui-slots): bind inject hooks compartments into use<Name> selector hooks
...
Registrant-private reactive facts previously reached components as raw
observables that each component subscribed by hand (InputBar notices/
lexicon via uSES, SettingsRoot via a version/subscribe/getter triple).
The inject face now carries a reserved hooks compartment of bare
sources; the renderer binds each into a use<Name> selector hook through
the same machinery as the provide channel, so components consume
useNotices/useLexicon/useSections and never see a subscription
primitive. InputBar and SettingsRoot are the first two consumers.
2026-07-28 12:09:48 +08:00
imccyu
c4df0628db
docs(notes): record reactive provide projection and lexicon subscription decisions
2026-07-28 12:09:48 +08:00
Tianyi Cui
2a562236d0
Merge remote-tracking branch 'origin/master' into worktree/pr784-merge-20260728
2026-07-28 01:02:49 +08:00
Tianyi Cui
9c6de3644e
Merge branch 'master' into archive-agent-notes-sweep-2
2026-07-28 00:49:13 +08:00
imccyu
af70af4020
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
2026-07-28 00:39:24 +08:00
Tianyi Cui
4a45981e76
Merge remote-tracking branch 'origin/master' into worktree/pr743-merge-20260727
...
# Conflicts:
# examples/tui-agent/tests/snapshots/cordis-dynamic-toolchain/terminal.expected.txt
# packages/ui/tui/tests/snapshots/cordis-tools-pending.expected.txt
2026-07-28 00:03:56 +08:00
Tianyi Cui
f2c0021941
docs(notes): aggressive archive sweep of low-value decision records
...
Archive 21 implemented triplets whose shipped decisions are complete and
whose bodies no longer guide future work (one-off UI chrome, generator
applications whose scripts are self-explanatory, superseded implementation
detail, process history owned by current contracts/skills). Delete 4
rejected triplets whose premises are obsolete: the DeepReadonly proposal
(dev-invariants note now carries the alternative inline), the collapse
tool-owned presentation proposal (superseded by the shipped render-intent
union), retire-mid-turn-steering (steering is now load-bearing across
plan-mode/apiproxy/TUI), and single-session-ACP (automation-only ACP
resolved the question; multi-session isolation is pinned by tests).
Repair every inbound link: retarget intentional historical citations to
archived paths, replace decision-current citations with the surviving
authority, and fix the stale example-execute-over-tsx pointer in
pnpm-workspace.yaml. Re-record pairing sidecars and seal the archive
manifest (append-only; existing seals unchanged).
2026-07-28 00:00:51 +08:00
Tianyi Cui
064cea4ebe
Merge remote-tracking branch 'origin/master' into worktree/pr743-merge-20260727
...
# Conflicts:
# examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/session-query-spill/session.jsonl
# examples/cordis-agent/tests/cordis-tools.e2e.ts
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
2026-07-27 23:59:33 +08:00
Tianyi Cui
f6a450102e
Merge updated origin/master into feat/tui-master-port
2026-07-27 23:55:53 +08:00
Tianyi Cui
f843d2b238
Merge origin/master into feat/tui-master-port
2026-07-27 23:34:56 +08:00
Tianyi Cui
29619eda77
Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/cordis-catalog/events.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
# packages/compact/compact-basic/src/index.ts
# packages/compact/compact-basic/tests/compact-basic.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/README.md
# packages/core/agent-loop/README.zh.md
# packages/core/agent-loop/src/loop.ts
# packages/core/agent-loop/tests/request-recovery.spec.ts
# packages/core/agent/src/types.ts
# packages/core/scope/tests/invariant.spec.ts
# packages/llm/llm-retry/README.i18n.yaml
# packages/llm/llm-retry/README.md
# packages/llm/llm-retry/README.zh.md
# packages/llm/llm-retry/src/index.ts
# packages/llm/llm-retry/src/invariant.ts
# packages/llm/llm-retry/tests/invariant.spec.ts
# packages/llm/llm-retry/tests/retry.spec.ts
# packages/plan/plan-mode/src/index.ts
# packages/plan/plan-mode/tests/integration.spec.ts
# packages/plan/plan-mode/tests/plan-mode.spec.ts
2026-07-27 23:29:26 +08:00
Tianyi Cui
8a952ab433
Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
# docs/architecture.i18n.yaml
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/headless-agent/tests/headless.snapshot.ts
# packages/compact/compact-basic/tests/compact-loop-repro.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.md
# packages/core/agent-loop/src/loop.ts
# packages/examples/agent-spine-demo/README.md
# packages/llm/README.md
# packages/llm/llm-deepseek/src/adapter.ts
# packages/llm/llm-pi-ai/src/adapter.ts
# packages/llm/llm-retry/README.md
# packages/llm/llm/README.md
# packages/llm/llm/src/index.ts
# packages/llm/llm/tests/service.spec.ts
# packages/support/llm-replay/src/index.ts
# packages/support/llm-replay/tests/llm-replay.spec.ts
2026-07-27 22:44:43 +08:00
Tianyi Cui
7a60a523f9
Merge branch 'master' into feature/cordis-temporary-tools
2026-07-27 22:26:49 +08:00
NI0317
1ef285d038
Restore Cordis mount and unmount names
...
Keep temporary lifecycle descriptions and UI labels explicit.
2026-07-27 21:20:06 +08:00
_Kerman
ed67ad53d2
refactor(agent): return request retry action
2026-07-27 21:17:49 +08:00
Turtle
46bbbce109
refactor(tui): split createTuiChat into chat/ sub-controllers
...
Extract model-command, questions, and resume sub-machines from the
~1600-line createTuiChat closure into src/chat/ factories that take
explicit dependency bundles (shared ChatChannelDeps/ChannelNotice).
Reorganize src/ so chat/ holds all chat-channel concerns (former input
and session/ files move under it); xml-tool-output moves to components/;
TuiRuntime/TuiResumeHost move to runtime.ts. index.ts drops 2067->~1530
lines. Behavior identical: 167 tests and all TUI snapshots pass unchanged.
2026-07-27 21:04:11 +08:00
_Kerman
c6073f07c2
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/core-data-structures/core.i18n.yaml
2026-07-27 19:55:55 +08:00
_Kerman
9152858fd7
fix(agent-loop): preserve deferred message boundaries
2026-07-27 18:58:27 +08:00
_Kerman
98238ceace
fix(agent-loop): settle rejected admission context
2026-07-27 18:32:07 +08:00
_Kerman
ff7792b17c
docs(agent): document next-step acceptance window
2026-07-27 18:07:51 +08:00
_Kerman
a59ce0367c
fix(agent-loop): route next-step input during admission
2026-07-27 17:55:55 +08:00
NI0317
8cec221dab
Merge remote-tracking branch 'origin/master' into feature/cordis-temporary-tools
2026-07-27 17:45:01 +08:00
_Kerman
52174e32cb
refactor(agent): clarify turn lifecycle event names
2026-07-27 17:38:42 +08:00
NI0317
b4a1304489
Rename Cordis tools for temporary plugins
...
Clarify process-local lifecycle semantics and refresh generated documentation, demos, and snapshots.
2026-07-27 16:57:26 +08:00
_Kerman
bd40eec770
Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/README.md
# packages/core/agent-loop/README.zh.md
# packages/core/agent-loop/src/loop.ts
# packages/core/agent/README.i18n.yaml
# packages/core/agent/tests/llm-target.spec.ts
# packages/core/session/tests/request-header.spec.ts
2026-07-27 16:48:38 +08:00
Tianyi Cui
21fe97d19d
Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
...
# Conflicts:
# docs/architecture.i18n.yaml
# docs/core-data-structures/core.i18n.yaml
2026-07-27 16:40:07 +08:00
imccyu
9249c5504e
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
2026-07-27 16:16:17 +08:00
imccyu
52985d688d
Merge branch 'master' into markdown-ui
2026-07-27 15:58:13 +08:00
Yichen Jiang
39c60d5d64
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md
# .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm-deepseek/tests/adapter.spec.ts
2026-07-27 15:49:09 +08:00
Tianyi Cui
bfdaf7600b
Merge remote-tracking branch 'origin/master' into worktree/pr674-retarget-20260727
...
# Conflicts:
# docs/cookbook/adding-an-llm-adapter.i18n.yaml
# docs/core-data-structures/llm-streaming.i18n.yaml
# packages/llm/llm-deepseek/README.i18n.yaml
# packages/llm/llm/README.i18n.yaml
2026-07-27 15:48:17 +08:00
imccyu
b8d7938498
Merge branch 'master' into markdown-ui
2026-07-27 15:44:30 +08:00
Yichen Jiang
21aeff3029
Merge remote-tracking branch 'origin/master' into worktree/llm-reasoning-effort
...
# Conflicts:
# .agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml
# docs/config-catalog.md
# docs/core-data-structures/session.i18n.yaml
# scripts/type-equiv.manifest.json
2026-07-27 13:35:10 +08:00
Tianyi Cui
73d2a787a7
Merge branch 'master' into nih-imp-sse
2026-07-27 13:13:57 +08:00
Yichen Jiang
bde5e26a96
Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector
...
# Conflicts:
# apps/cli/package.json
# apps/web/tests/smoke-real.e2e.ts
# apps/web/tests/snapshots/fresh-round-trip/ui.expected.md
# apps/web/tests/snapshots/seeded-history/ui.expected.md
# docs/config-catalog.md
# packages/client/connection/tests/fake-api.ts
# packages/client/runtime/src/client/index.ts
# packages/client/runtime/src/client/sessions/conversation.ts
# packages/client/runtime/src/client/sessions/session.ts
# packages/client/runtime/tests/fake-api.ts
# packages/client/ui-conversation/src/client/apply.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/skeleton/ConversationRoot.tsx
# packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
# packages/client/ui-conversation/tests/chat-stats-bash-sample.spec.tsx
# packages/client/ui-conversation/tests/chat-toolview-slot.spec.tsx
# packages/client/ui-conversation/tests/chat-view.spec.tsx
# packages/client/ui-conversation/tests/gate-branch-tails.spec.tsx
# packages/client/ui-conversation/tests/input-bar.spec.tsx
# packages/client/ui-conversation/tests/skeleton.spec.tsx
# packages/host/apiproxy/README.md
# packages/host/apiproxy/src/api-proxy.ts
# pnpm-lock.yaml
# scripts/verify-package-readme-model-experience.ts
# tsconfig.base.json
2026-07-27 12:17:38 +08:00
07akioni
3ee2982f85
optimize chat ui
2026-07-27 12:04:12 +08:00
Tianyi Cui
38a05724f4
Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
...
# Conflicts:
# apps/cli/package.json
2026-07-27 11:36:03 +08:00