Tianyi Cui
aa95a3007f
Merge remote-tracking branch 'origin/master' into worktree/pr683-retarget-20260727
2026-07-27 16:40:42 +08:00
Tianyi Cui
9801a0d102
fix(tool-web): bound HTML conversion work
2026-07-27 16:40:02 +08:00
Tianyi Cui
321fda950f
Merge branch 'master' into nih-imp-gates
2026-07-27 16:30:44 +08:00
Tianyi Cui
ae18216199
Merge remote-tracking branch 'origin/master' into worktree/pr683-retarget-20260727
2026-07-27 16:03:33 +08:00
Tianyi Cui
109b469a7e
fix(tool-web): bound conversion depth and complete fetch output
...
Two review findings on the turndown swap, both verified empirically:
- Unclosed-tag nesting makes the synchronous turndown/domino walk
superlinear (measured: depth 512 ~0.15s, 2k ~2s, 20k ~5s), during
which the cooperative fetchTimeoutMs timer cannot fire. renderBody
now preflights nesting depth with a linear tag scan and passes
bodies past 512 levels through raw; the try/catch stays for markup
the scan cannot see (comment-hidden tags), simulated in tests via a
converter throw.
- Markdown escaping can expand converted HTML ~2x (100k underscores
render as 200k chars), so provider body caps no longer bounded the
model-visible result. formatFetchOutput now caps the complete output
(header + body + footer) under new fetchMaxOutputChars config
(default 200000 = 2x the local provider's default body cap), reusing
the truncation notice.
README EN+ZH, config catalog, Agent Note EN+ZH updated; the new
web-fetch fixture is migrated to the packed layout master now
requires; tool-web coverage stays 100% per-file.
2026-07-27 12:41:36 +08:00
Tianyi Cui
ebdcb5776a
fix(scripts): address review findings on the gate consolidation
...
- publint-all: the recursive publication view uses readdirSync
{recursive} again instead of globSync('**/*') — the glob skips
dot-prefixed segments (verified empirically), but npm pack publishes
dotfiles inside included directories, so hidden exports were
reported missing and other hidden files escaped validation
- markdown.ts/verify-type-equiv: markdownFences now reports whether a
closing delimiter terminates the block (mdast silently closes an
unterminated fence at EOF), and verify-type-equiv rejects unclosed
type-equivalence fences again — the Agent Note claimed such a block
still fails at the manifest checks, but its comparisons can succeed
- Agent Note EN+ZH: record the restored rejection; rewrite the zh
Problem section into past tense to match the English side's shipped
reality; pair re-recorded
2026-07-27 12:02:39 +08:00
Tianyi Cui
035a965973
Merge remote-tracking branch 'origin/master' into nih-imp-gates
...
# Conflicts:
# .agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml
# .agents/notes/proposed/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md
# .agents/notes/proposed/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md
2026-07-27 06:21:53 +08:00
Tianyi Cui
f5f3641330
Merge remote-tracking branch 'origin/master' into nih-imp-sse
...
# Conflicts:
# .agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
# packages/llm/llm/README.i18n.yaml
2026-07-27 06:16:30 +08:00
Tianyi Cui
67b6610e9f
Merge remote-tracking branch 'origin/master' into nih-imp-turndown
2026-07-27 06:08:05 +08:00
Tianyi Cui
45a5175e44
feat(tool-web): replace the regex HTML-to-markdown converter with turndown
...
Implements the turndown Agent Note from the NIH dependency audit (full
variant, not the minimal entities-only fallback): dsh-tool-web's fetch
rendering now converts HTML through turndown + @joplin/turndown-plugin-gfm
(atx headings, fenced code, dash bullets, GFM tables/strikethrough) over
the real domino DOM, with script/style/noscript removed wholesale. The
hand-rolled ~86-line regex converter html.ts and its entity tables are
deleted; renderBody wraps the conversion in try/catch falling back to
the raw HTML body, because turndown's recursive DOM walk overflows with
a RangeError on pathological nesting (measured: 4k levels on the main
thread, 8k in a worker) where the regex version could never throw.
Closure weight, measured: tool-web IS in the single-exe runtime closure,
and the exe asset globs would pack ~7.9 MB of the three new packages —
but ~6 MB of that is domino's test corpus, with runtime lib/ at ~550 KB
against a ~174 MB artifact (<0.5% either way), so the swap wins.
Per testing policy the previously-missing keyless web_fetch snapshot
ships in the same change: the acp-agent `web-fetch` scenario boots a new
web.cordis.yml overlay (web seam + real dsh-web-fetch-local provider +
tool-web fetch-only + a loopback HTTP fixture server on a fixed port
serving deterministic HTML with entities, a GFM table, and nesting), so
recording and keyless replay both drive the real HTTP fetch and real
conversion end to end; the scenario pins the new `web` header class.
The Agent Note moves proposed -> implemented and is rewritten per the
lifecycle contract (Decision/Consequences/Testing, closure verdict and
alternatives recorded); tool-web and acp-agent READMEs updated in both
languages and pairs re-recorded.
2026-07-27 00:22:13 +08:00
Tianyi Cui
c3873464ba
refactor(scripts): consolidate gate scripts on mdast fences, parseArgs, and globSync
...
Implements the gate-consolidation Agent Note from the NIH dependency audit:
- Shared markdownFences helper in scripts/markdown.ts (mdast code-node visit);
doc-typecheck and verify-type-equiv extract fences through it; md-fences.ts
and the duplicated extractEquivBlocks regex scanner are deleted;
markdownProseLines derives fenced lines from parsed code-node positions
instead of a second fence regex.
- publint-all.ts and verify-built-package-invariants.mjs parse argv with
node:util parseArgs instead of hand-stepped parseOptions copies.
- Five straggler readdirSync walks become globSync: verify-runtime-closure,
dev-web discoverPluginDirs, verify-package-paths realPackageNames,
verify-client-domain-graph listSources, publint-all addPath. The
dirent-diagnostic walks in check-workspace-constraints.ts and clean.ts stay.
Behavior parity verified: pnpm run doc-sync and every rewritten gate produce
byte-identical output before and after on this tree.
Moves the owning Agent Note proposed -> implemented and re-records its pair.
2026-07-26 23:14:28 +08:00
Tianyi Cui
37140bf823
docs(notes): archive low-value decision records
2026-07-26 23:06:00 +08:00
Tianyi Cui
c50b899015
refactor(llm-deepseek): replace hand-rolled SSE parser with eventsource-parser
...
Implements the approved simplification Agent Note: sse.ts now pipes the
response body through TextDecoderStream and EventSourceParserStream
(eventsource-parser/stream) and keeps only the DeepSeek protocol shim —
yield each event's data, terminate on [DONE], throw
LlmError('STREAM_CLOSED') on EOF without the sentinel. The SSE
spec-conformance tests are deleted; sse.spec.ts pins only the
[DONE]/STREAM_CLOSED/EOF contract, including the new spec-strict verdict
that an unterminated trailing event is truncation (the old parser
flushed it — a robustness nicety no real provider shape needs).
eventsource-parser@^3.1.0 becomes llm-deepseek's second runtime
dependency (already in the lockfile transitively via the MCP SDK).
Docs: the Agent Note moves proposed/ → implemented/ and is rewritten per
the lifecycle contract; the rejected NIH roll-up note's inbound links
follow. The twin-adapters note, dsh-llm LlmAdapter JSDoc (and its
type-equiv fences), cookbook, group/package READMEs, root AGENTS.md
layout line, sdk-helper comments, and the regenerated config catalog
drop the "hand-rolled fetch + SSE" claim in both languages; all eight
touched pairs re-recorded.
2026-07-26 22:45:33 +08:00
Tianyi Cui
cd15711079
Merge latest master into codex/consolidate-agent-notes
...
# Conflicts:
# .agents/notes/implemented/feature/2026-07-21-tui-no-banner.i18n.yaml
# .agents/notes/implemented/feature/2026-07-21-tui-no-banner.md
# .agents/notes/implemented/feature/2026-07-21-tui-no-banner.zh.md
# .agents/notes/implemented/simplification/2026-07-20-retire-readline-front-door.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-20-retire-readline-front-door.md
# .agents/notes/implemented/simplification/2026-07-20-retire-readline-front-door.zh.md
2026-07-26 00:57:51 +08:00
Turtle
3feb05fef8
docs(agent-notes): consolidate superseded decisions
2026-07-25 16:43:07 +08:00
Turtle
2dfd8635e8
Merge branch 'master' into worktree/dsh-arg-parser
...
Integrate the Commander argument adapter and dsh-front-door work with master's
config-tree `dsh web` (#601 : AppCLIEntry + apps/cli/cordis.yml) and the
packages/ui/acp → packages/acp/acp relocation.
- web.ts: keep master's AppCLIEntry-based boot, but take the adapter's parsed
(host, port, dev) instead of an internal parseArgs. The adapter's host/port
defaults (127.0.0.1/3080) match cordis.yml, so always passing them is
behavior-equivalent to master's "undefined keeps the yml default".
- apps/cli/package.json: master's expanded config-tree dep set + commander.
- retire-readline Agent Note: point the TUI refusal proof at
apps/cli/tests/built-bin.e2e.ts (both languages), re-record the pair.
- READMEs reconciled (demo-bin removal + master's ACP/channel rewording).
2026-07-25 14:37:57 +08:00
Turtle
870fb1cafa
refactor(cli): make dsh the sole terminal front door, drop RESUME_SESSION_ID
...
Remove the redundant dsh-tui-demo bin and the RESUME_SESSION_ID environment
variable, leaving dsh as the one terminal entrypoint.
The dsh-tui-demo package was a plugin (the TUI app bundle mounted by dsh's
config) plus a bin that booted a leaf cordis.yml — the same job `dsh [config]`
does. The bin, its ./bin export, its built-bin.e2e.ts, the tsdown bin entry,
and the now-unused dsh-app-boot dependency are removed; the package keeps its
plugin and invariant. demo:cordis, demo:code-mode, and the tui-agent and
cordis-agent keyless PTY smokes now launch through apps/cli/src/bin.ts with the
config as the positional argument. cli-demo/acp-demo/jsonrpc-demo keep their
bins (distinct surfaces).
RESUME_SESSION_ID was the only bridge from --resume into the shipped config;
--resume now provides the id on the boot context via ctx.provide(
RESUME_SESSION_ID_KEY, id), and the four configs read it as a bare identifier
through a quoted typeof-guarded !!js expression. The TUI resumeCommand fixtures
and docs move to `dsh --resume {session}`.
Agent Note and its Chinese pair updated; config-catalog regenerated.
2026-07-25 12:43:59 +08:00
Tianyi Cui
16910475ef
docs(i18n): mirror ACP-automation edits into the zh pairs from master
...
Master's i18n batches added Chinese counterparts to ~50 docs this PR
edits in English. Bring each zh side along with the minimal edits
covering the en diff (recorded-hash diffs, not re-translations),
reunite the stream-workflow-progress pair under rejected/ with its
manifest entry, re-record all pairing hashes, and regenerate the
event/persistence/tool catalogs and doc graphs over the merged tree.
2026-07-25 01:58:42 +08:00
Tianyi Cui
440384fdb4
Merge remote-tracking branch 'origin/master' into worktree/acp-automation-protocol
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-14-session-persistence.md
# .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.md
# .agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.md
# .agents/notes/implemented/feature/2026-06-14-acp-agent-client-protocol.md
# .agents/notes/implemented/feature/2026-06-14-acp-multi-session.md
# .agents/notes/implemented/feature/2026-06-18-acp-terminal-and-tool-rendering.md
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md
# .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.zh.md
# .agents/notes/implemented/simplification/2026-07-04-trim-acp-bridge-unreachable-surface.md
# docs/architecture.i18n.yaml
# docs/cookbook/extension-cookbook.i18n.yaml
# docs/cookbook/extension-cookbook.md
# docs/cookbook/extension-cookbook.zh.md
# docs/core-data-structures/approval.md
# docs/core-data-structures/user-interaction.md
# docs/event-producer-consumer.md
# docs/persistence-catalog.md
# docs/testing.md
# docs/tool-catalog.md
# examples/acp-agent/tests/fixtures/live-mode-switching-2026-07-07.session.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/stdout.expected.jsonl
# examples/acp-agent/tests/snapshots/permission-switching/session.jsonl
# packages/goal/tool-goal/README.md
# packages/ui/acp/README.md
# packages/ui/acp/acp-feature-support.md
# packages/ui/acp/src/index.ts
# packages/ui/acp/tests/bridge.spec.ts
# packages/ui/acp/tests/dispose.spec.ts
# packages/ui/acp/tests/edges.spec.ts
# packages/ui/acp/tests/turns.spec.ts
2026-07-24 23:43:10 +08:00
Tianyi Cui
5569f3f8ac
docs: repair rewritten rationale and stale claims from the ACP reduction
...
The automation-only rewrite edited many implemented Agent Notes; several
edits replaced still-live or historical rationale instead of reframing:
- llm-model-catalog: restore the prompt/request consistency section and
selection-ownership alternatives — installAgentLlmTarget and the TUI
/model selector still ship that design; only the ACP wire is gone.
- plan-specific-collaboration-state, acp-multi-session, todo-write,
ask-user-question: link the superseding automation-only note instead
of silently rewriting the original decision or motivation; drop a
paragraph duplicating the Web-provider facts stated two paragraphs up.
- sandbox: stop claiming unit coverage for turn-enclosed config writes
(that mechanism left with the bridge) and retitle the commit-boundary
paragraph accordingly.
- Fix the missing blank line before '## Consequences' in the
plugin-command-registration pair, the JSON-RPC/Web render-intent
consumer misattribution (the second consumer is the host/client
runtime), stale bash_output/bash_kill names, and 'optional goals' in
architecture.md.
- examples/acp-agent/README.md: point at the package contract instead
of restating it; packages/ui/permission and plan-mode READMEs record
the consumer-less preset service and the exit_plan_mode coverage gap
under Known Limitations.
- 2026-06-19-acp-snapshot-tests: the new note defers the corpus
migration rather than committing to it; say so.
Re-record the touched bilingual pairs.
2026-07-24 22:12:23 +08:00
Tianyi Cui
74d14f68bb
fix(acp): accept baseline resource links and release a failed prompt slot
...
ACP v1 requires every agent to accept text AND resource_link prompt
content; the automation rewrite dropped the resource_link half of that
baseline. Restore the old bracketed-reference flattening in the codec,
reject only beyond-baseline blocks, and update the package contract and
Agent Note.
Also release the per-session prompt slot when agent.send() throws
synchronously (an agent disposed outside the bridge would otherwise
wedge the session into permanent 'already in flight' rejections),
drop the tautological version-negotiation branch, prove the scenario
env layer reaches the snapshot subprocess, pin bridge-side fail-closed
permission errors, and correct two overpromising test names.
2026-07-24 22:11:49 +08:00
Tianyi Cui
8e84aa6218
docs(i18n): normalize Agent Note terminology
2026-07-24 15:10:55 +08:00
Tianyi Cui
c0eacae2ba
docs(i18n): align Agent Note terminology
2026-07-24 13:57:16 +08:00
Tianyi Cui
d07875947b
Merge remote-tracking branch 'origin/master' into worktree/acp-automation-protocol
...
# Conflicts:
# packages/examples/acp-demo/README.md
2026-07-24 11:50:56 +08:00
Tianyi Cui
331e959c97
fix(acp): tighten automation-only contracts
2026-07-24 01:51:20 +08:00
Tianyi Cui
e819a586b0
refactor(acp): reduce bridge to automation protocol
2026-07-24 01:40:25 +08:00
Tianyi Cui
dee111a212
Merge remote-tracking branch 'origin/docs/i18n-batch-cds-postmortem' into worktree/pr345-retarget-stack
...
# Conflicts:
# .agents/notes/proposed/feature/2026-07-10-sqlite-session-query-provider.md
2026-07-24 00:28:30 +08:00
Tianyi Cui
f27f8f6162
Merge commit 'refs/codex-unblock/20260723/pr570-master-initial' into worktree/pr570-merge-master-20260723
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-18-shared-persistence-write-coordinator.md
# docs/core-data-structures/persistence.md
# packages/session-persistence/session-persistence/README.md
2026-07-23 23:21:08 +08:00
_Kerman
c596dddfe1
fix: return stored metadata from live loads
2026-07-23 21:28:52 +08:00
fz
8e4f666238
feat(plan): add direct plan exit command
2026-07-23 21:06:03 +08:00
_Kerman
4e5166828b
fix: reserve cold loads across repair
2026-07-23 20:58:20 +08:00
Tianyi Cui
cff3cb6dcd
docs(i18n): refresh persistence Agent Notes
2026-07-23 20:52:40 +08:00
Tianyi Cui
daf4f91320
Merge commit '5413ac061ff6b8659a324242ce51369c82417158' into worktree/pr345-retarget-stack
2026-07-23 20:45:18 +08:00
_Kerman
816907ba2d
Merge remote-tracking branch 'origin/master' into refactor/eager-session-persistence
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-18-shared-persistence-write-coordinator.md
# packages/session-persistence/session-persistence-jsonl/README.md
# packages/session-persistence/session-persistence/src/coordinator.ts
# packages/session-persistence/session-persistence/tests/persistence.spec.ts
2026-07-23 20:32:19 +08:00
Tianyi Cui
a5cb16cc0e
Merge master into codex/jsonl-storage-identity
2026-07-23 20:12:26 +08:00
_Kerman
7f5ba286fe
fix: keep crash repair away from live sessions
2026-07-23 18:31:37 +08:00
_Kerman
406c82d1a7
refactor: eagerly persist session events
2026-07-23 17:57:26 +08:00
Tianyi Cui
cecd0fedf5
docs(i18n): normalize seam consumer terminology
2026-07-23 17:48:50 +08:00
Tianyi Cui
8a7112af45
docs(i18n): translate turn and step in note comment
2026-07-23 15:06:47 +08:00
Tianyi Cui
a4d6c302f6
docs(i18n): align turn and step terminology
2026-07-23 14:37:01 +08:00
Tianyi Cui
d5f5517ec0
docs(i18n): address Agent Note review feedback
2026-07-23 01:11:59 +08:00
Tianyi Cui
744d65d63c
docs(i18n): refresh Agent Note translations after merge
2026-07-23 00:10:53 +08:00
Tianyi Cui
cd17f8d23a
Merge refreshed docs/i18n-batch-cds-postmortem into docs/i18n-batch-rfc
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-11-content-block-vocabulary.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-content-block-vocabulary.zh.md
# .agents/notes/implemented/architecture/2026-06-11-custom-schema-dsl.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-custom-schema-dsl.zh.md
# .agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.zh.md
# .agents/notes/implemented/architecture/2026-06-11-event-sourced-sessions.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-event-sourced-sessions.zh.md
# .agents/notes/implemented/architecture/2026-06-11-microkernel-event-taxonomy.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-microkernel-event-taxonomy.zh.md
# .agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.zh.md
# .agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.zh.md
# .agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md
# .agents/notes/implemented/architecture/2026-06-13-capability-seams.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-13-capability-seams.zh.md
# .agents/notes/implemented/architecture/2026-06-13-twin-llm-adapters.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-13-twin-llm-adapters.zh.md
# .agents/notes/implemented/architecture/2026-06-14-session-persistence.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-14-session-persistence.zh.md
# .agents/notes/implemented/architecture/2026-06-15-turn-enclosure-invariant.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-15-turn-enclosure-invariant.zh.md
# .agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.zh.md
# .agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-seams.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-seams.zh.md
# .agents/notes/implemented/architecture/2026-06-18-session-surface.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-18-session-surface.zh.md
# .agents/notes/implemented/architecture/2026-06-18-shared-persistence-write-coordinator.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-18-shared-persistence-write-coordinator.zh.md
# .agents/notes/implemented/architecture/2026-06-20-branded-ids.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-20-branded-ids.zh.md
# .agents/notes/implemented/architecture/2026-06-20-extract-example-app-packages.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-20-extract-example-app-packages.zh.md
# .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.md
# .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.zh.md
# .agents/notes/implemented/architecture/2026-06-21-mandatory-app-attribution-headers.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-21-mandatory-app-attribution-headers.zh.md
# .agents/notes/implemented/architecture/2026-06-24-web-capability-seam.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-24-web-capability-seam.zh.md
# .agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.zh.md
# .agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-surface.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-surface.zh.md
# .agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.zh.md
# .agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.zh.md
# .agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md
# .agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.zh.md
# .agents/notes/implemented/architecture/2026-07-03-filesystem-directory-listing-seam.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-03-filesystem-directory-listing-seam.zh.md
# .agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.zh.md
# .agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md
# .agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.zh.md
# .agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.zh.md
# .agents/notes/implemented/architecture/2026-07-08-agent-scope-contexts.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-08-agent-scope-contexts.zh.md
# .agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md
# .agents/notes/implemented/feature/2026-06-14-acp-agent-client-protocol.i18n.yaml
# .agents/notes/implemented/feature/2026-06-14-acp-agent-client-protocol.zh.md
# .agents/notes/implemented/feature/2026-06-14-acp-multi-session.i18n.yaml
# .agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md
# .agents/notes/implemented/feature/2026-06-15-code-mode.i18n.yaml
# .agents/notes/implemented/feature/2026-06-15-code-mode.zh.md
# .agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml
# .agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.zh.md
# .agents/notes/implemented/feature/2026-06-18-acp-terminal-and-tool-rendering.i18n.yaml
# .agents/notes/implemented/feature/2026-06-18-acp-terminal-and-tool-rendering.zh.md
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md
# .agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.i18n.yaml
# .agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md
# .agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md
# .agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.i18n.yaml
# .agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.zh.md
# .agents/notes/implemented/feature/2026-06-25-ask-user-question.i18n.yaml
# .agents/notes/implemented/feature/2026-06-25-ask-user-question.zh.md
# .agents/notes/implemented/feature/2026-06-29-todo-write-tool.i18n.yaml
# .agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md
# .agents/notes/implemented/feature/2026-06-30-hook-bridges.i18n.yaml
# .agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md
# .agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.i18n.yaml
# .agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md
# .agents/notes/implemented/feature/2026-06-30-interception-seams.i18n.yaml
# .agents/notes/implemented/feature/2026-06-30-interception-seams.zh.md
# .agents/notes/implemented/feature/2026-06-30-session-store-fork-api.i18n.yaml
# .agents/notes/implemented/feature/2026-06-30-session-store-fork-api.zh.md
# .agents/notes/implemented/feature/2026-06-30-subagent-observe-enrich.i18n.yaml
# .agents/notes/implemented/feature/2026-06-30-subagent-observe-enrich.zh.md
# .agents/notes/implemented/feature/2026-07-05-dynamic-workflows.i18n.yaml
# .agents/notes/implemented/feature/2026-07-05-dynamic-workflows.zh.md
# .agents/notes/implemented/feature/2026-07-05-skill-system.i18n.yaml
# .agents/notes/implemented/feature/2026-07-05-skill-system.zh.md
# .agents/notes/implemented/feature/2026-07-06-approval-seam.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-approval-seam.zh.md
# .agents/notes/implemented/feature/2026-07-06-explicit-tool-order.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-explicit-tool-order.zh.md
# .agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-sandbox.zh.md
# .agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.i18n.yaml
# .agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md
# .agents/notes/implemented/feature/2026-07-07-session-prefix.i18n.yaml
# .agents/notes/implemented/feature/2026-07-07-session-prefix.zh.md
# .agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.i18n.yaml
# .agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.zh.md
# .agents/notes/implemented/feature/2026-07-08-self-referential-cordis-toolset.i18n.yaml
# .agents/notes/implemented/feature/2026-07-08-self-referential-cordis-toolset.zh.md
# .agents/notes/implemented/feature/2026-07-10-session-query-service.i18n.yaml
# .agents/notes/implemented/feature/2026-07-10-session-query-service.zh.md
# .agents/notes/implemented/feature/2026-07-12-subagent-persona-tool-filter-and-depth.i18n.yaml
# .agents/notes/implemented/feature/2026-07-12-subagent-persona-tool-filter-and-depth.zh.md
# .agents/notes/implemented/process/2026-06-11-doc-sync-enforcement.i18n.yaml
# .agents/notes/implemented/process/2026-06-11-doc-sync-enforcement.zh.md
# .agents/notes/implemented/process/2026-06-11-quality-gates.i18n.yaml
# .agents/notes/implemented/process/2026-06-11-quality-gates.md
# .agents/notes/implemented/process/2026-06-11-quality-gates.zh.md
# .agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.i18n.yaml
# .agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.zh.md
# .agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.i18n.yaml
# .agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.zh.md
# .agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.i18n.yaml
# .agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.zh.md
# .agents/notes/implemented/process/2026-06-17-ts-build-config.i18n.yaml
# .agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md
# .agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.i18n.yaml
# .agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.zh.md
# .agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.i18n.yaml
# .agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.zh.md
# .agents/notes/implemented/process/2026-06-20-generated-cordis-catalog.i18n.yaml
# .agents/notes/implemented/process/2026-06-20-generated-cordis-catalog.zh.md
# .agents/notes/implemented/process/2026-06-20-rfc-classification.i18n.yaml
# .agents/notes/implemented/process/2026-06-20-rfc-classification.zh.md
# .agents/notes/implemented/process/2026-07-02-tool-schema-catalog.i18n.yaml
# .agents/notes/implemented/process/2026-07-02-tool-schema-catalog.zh.md
# .agents/notes/implemented/process/2026-07-03-documentation-graph-atlas.i18n.yaml
# .agents/notes/implemented/process/2026-07-03-documentation-graph-atlas.zh.md
# .agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml
# .agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md
# .agents/notes/implemented/process/2026-07-04-doc-tiers-and-budgets.i18n.yaml
# .agents/notes/implemented/process/2026-07-04-doc-tiers-and-budgets.zh.md
# .agents/notes/implemented/process/2026-07-04-generate-rfc-index-tables.i18n.yaml
# .agents/notes/implemented/process/2026-07-04-generate-rfc-index-tables.zh.md
# .agents/notes/implemented/process/2026-07-04-persistence-log-catalog.i18n.yaml
# .agents/notes/implemented/process/2026-07-04-persistence-log-catalog.zh.md
# .agents/notes/implemented/process/2026-07-05-uniform-rfc-format.i18n.yaml
# .agents/notes/implemented/process/2026-07-05-uniform-rfc-format.zh.md
# .agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.i18n.yaml
# .agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.zh.md
# .agents/notes/implemented/process/2026-07-06-generated-config-catalog.i18n.yaml
# .agents/notes/implemented/process/2026-07-06-generated-config-catalog.zh.md
# .agents/notes/implemented/process/2026-07-06-node-engine-floor.i18n.yaml
# .agents/notes/implemented/process/2026-07-06-node-engine-floor.zh.md
# .agents/notes/implemented/process/2026-07-06-parallel-github-ci-gates.i18n.yaml
# .agents/notes/implemented/process/2026-07-06-parallel-github-ci-gates.zh.md
# .agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.i18n.yaml
# .agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.zh.md
# .agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.i18n.yaml
# .agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.zh.md
# .agents/notes/implemented/process/2026-07-12-package-model-experience-contract.i18n.yaml
# .agents/notes/implemented/process/2026-07-12-package-model-experience-contract.zh.md
# .agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.zh.md
# .agents/notes/implemented/simplification/2026-06-20-collapse-trace-only-session-events.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-collapse-trace-only-session-events.zh.md
# .agents/notes/implemented/simplification/2026-06-20-drop-unconsumed-llm-adapter-change-event.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-drop-unconsumed-llm-adapter-change-event.zh.md
# .agents/notes/implemented/simplification/2026-06-20-drop-unconsumed-llm-assembled-surfaces.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-drop-unconsumed-llm-assembled-surfaces.zh.md
# .agents/notes/implemented/simplification/2026-06-20-prune-dead-seam-methods.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-prune-dead-seam-methods.md
# .agents/notes/implemented/simplification/2026-06-20-prune-dead-seam-methods.zh.md
# .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-surface.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-surface.zh.md
# .agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md
# .agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.zh.md
# .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md
# .agents/notes/implemented/simplification/2026-07-04-drop-image-content-block.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-drop-image-content-block.zh.md
# .agents/notes/implemented/simplification/2026-07-04-drop-inert-request-knobs.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-drop-inert-request-knobs.zh.md
# .agents/notes/implemented/simplification/2026-07-04-drop-unconsumed-web-observation-surface.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-drop-unconsumed-web-observation-surface.zh.md
# .agents/notes/implemented/simplification/2026-07-04-fold-stdio-ui-helper.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-fold-stdio-ui-helper.md
# .agents/notes/implemented/simplification/2026-07-04-fold-stdio-ui-helper.zh.md
# .agents/notes/implemented/simplification/2026-07-04-prune-producerless-vocabulary-variants.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-prune-producerless-vocabulary-variants.zh.md
# .agents/notes/implemented/simplification/2026-07-04-prune-write-only-fs-surface.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-prune-write-only-fs-surface.zh.md
# .agents/notes/implemented/simplification/2026-07-04-remove-agent-steering-mirror.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-remove-agent-steering-mirror.zh.md
# .agents/notes/implemented/simplification/2026-07-04-share-app-bin-boot-glue.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-share-app-bin-boot-glue.zh.md
# .agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md
# .agents/notes/implemented/simplification/2026-07-04-trim-acp-bridge-unreachable-surface.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-04-trim-acp-bridge-unreachable-surface.zh.md
# .agents/notes/implemented/simplification/2026-07-12-drop-unconsumed-skill-provider-events.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-12-drop-unconsumed-skill-provider-events.zh.md
# .agents/notes/implemented/simplification/2026-07-12-prune-unused-web-seam-fields.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-12-prune-unused-web-seam-fields.zh.md
# .agents/notes/implemented/testing/2026-06-11-property-based-testing.i18n.yaml
# .agents/notes/implemented/testing/2026-06-11-property-based-testing.zh.md
# .agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.i18n.yaml
# .agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.zh.md
# .agents/notes/implemented/testing/2026-06-19-real-api-e2e-ci.i18n.yaml
# .agents/notes/implemented/testing/2026-06-19-real-api-e2e-ci.zh.md
# .agents/notes/implemented/testing/2026-06-20-remove-redundant-snapshot-log-goldens.i18n.yaml
# .agents/notes/implemented/testing/2026-06-20-remove-redundant-snapshot-log-goldens.zh.md
# .agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml
# .agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md
# .agents/notes/implemented/testing/2026-06-22-fork-snapshot-scenarios.i18n.yaml
# .agents/notes/implemented/testing/2026-06-22-fork-snapshot-scenarios.zh.md
# .agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml
# .agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.zh.md
# .agents/notes/implemented/testing/2026-07-04-hook-snapshot-matrix.i18n.yaml
# .agents/notes/implemented/testing/2026-07-04-hook-snapshot-matrix.zh.md
# .agents/notes/implemented/testing/2026-07-04-single-source-acp-replay-config.i18n.yaml
# .agents/notes/implemented/testing/2026-07-04-single-source-acp-replay-config.zh.md
# .agents/notes/implemented/testing/2026-07-06-pin-request-header-content-in-one-scenario.i18n.yaml
# .agents/notes/implemented/testing/2026-07-06-pin-request-header-content-in-one-scenario.zh.md
# .agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml
# .agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.zh.md
# .agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.i18n.yaml
# .agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.zh.md
# .agents/notes/proposed/architecture/2026-06-20-generic-long-running-tool-runtime.i18n.yaml
# .agents/notes/proposed/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md
# .agents/notes/proposed/feature/2026-06-30-pre-tool-input-rewrite.i18n.yaml
# .agents/notes/proposed/feature/2026-06-30-pre-tool-input-rewrite.zh.md
# .agents/notes/proposed/feature/2026-07-07-claude-code-and-codex-subagent-backends.i18n.yaml
# .agents/notes/proposed/feature/2026-07-07-claude-code-and-codex-subagent-backends.zh.md
# .agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.i18n.yaml
# .agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.zh.md
# .agents/notes/proposed/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml
# .agents/notes/proposed/feature/2026-07-10-sqlite-session-query-provider.zh.md
# .agents/notes/proposed/feature/2026-07-13-stream-workflow-progress-through-tool-calls.i18n.yaml
# .agents/notes/proposed/feature/2026-07-13-stream-workflow-progress-through-tool-calls.zh.md
# .agents/notes/proposed/process/2026-06-11-api-extractor-reports.i18n.yaml
# .agents/notes/proposed/process/2026-06-11-api-extractor-reports.md
# .agents/notes/proposed/process/2026-06-11-api-extractor-reports.zh.md
# .agents/notes/proposed/process/2026-06-11-architectural-conformance.i18n.yaml
# .agents/notes/proposed/process/2026-06-11-architectural-conformance.zh.md
# .agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.i18n.yaml
# .agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.zh.md
# .agents/notes/proposed/process/2026-06-20-discover-package-inventory.i18n.yaml
# .agents/notes/proposed/process/2026-06-20-discover-package-inventory.zh.md
# .agents/notes/proposed/simplification/2026-06-20-unify-agent-and-session-id.i18n.yaml
# .agents/notes/proposed/simplification/2026-06-20-unify-agent-and-session-id.zh.md
# .agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-surface.i18n.yaml
# .agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-surface.zh.md
# .agents/notes/proposed/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml
# .agents/notes/proposed/simplification/2026-07-12-simplify-session-log-representation.zh.md
# .agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.i18n.yaml
# .agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.zh.md
# .agents/notes/proposed/testing/2026-06-11-mutation-testing.i18n.yaml
# .agents/notes/proposed/testing/2026-06-11-mutation-testing.zh.md
# .agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.i18n.yaml
# .agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.zh.md
# .agents/notes/rejected/architecture/2026-06-20-providerless-example-base.i18n.yaml
# .agents/notes/rejected/architecture/2026-06-20-providerless-example-base.zh.md
# .agents/notes/rejected/simplification/2026-06-20-assembled-assistant-messages-only.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-assembled-assistant-messages-only.zh.md
# .agents/notes/rejected/simplification/2026-06-20-drop-acp-session-load.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-drop-acp-session-load.zh.md
# .agents/notes/rejected/simplification/2026-06-20-drop-acp-terminal-meta.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-drop-acp-terminal-meta.zh.md
# .agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.zh.md
# .agents/notes/rejected/simplification/2026-06-20-drop-durable-step-boundaries.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-drop-durable-step-boundaries.zh.md
# .agents/notes/rejected/simplification/2026-06-20-drop-unused-session-lineage.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-drop-unused-session-lineage.zh.md
# .agents/notes/rejected/simplification/2026-06-20-fold-session-persistence-interface.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-fold-session-persistence-interface.zh.md
# .agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.zh.md
# .agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.zh.md
# .agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.zh.md
# .agents/notes/rejected/simplification/2026-06-20-truncate-interrupted-turns.i18n.yaml
# .agents/notes/rejected/simplification/2026-06-20-truncate-interrupted-turns.zh.md
# .agents/notes/rejected/simplification/2026-07-04-prune-unimplemented-subagent-vocabulary.i18n.yaml
# .agents/notes/rejected/simplification/2026-07-04-prune-unimplemented-subagent-vocabulary.zh.md
# .agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.i18n.yaml
# .agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.zh.md
# .agents/notes/rejected/simplification/2026-07-12-prune-unused-skill-registry-surface.i18n.yaml
# .agents/notes/rejected/simplification/2026-07-12-prune-unused-skill-registry-surface.zh.md
# docs/rfc/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-seams.md
# docs/rfc/implemented/architecture/2026-06-18-session-surface.md
# docs/rfc/implemented/architecture/2026-06-20-branded-ids.md
# docs/rfc/implemented/architecture/2026-07-02-fs-per-session-cwd.md
# docs/rfc/implemented/feature/2026-06-18-compaction-capability-seam.md
# docs/rfc/implemented/feature/2026-07-07-session-prefix.md
# docs/rfc/implemented/process/2026-06-20-rfc-classification.md
# docs/rfc/implemented/process/2026-07-04-generate-rfc-index-tables.md
# docs/rfc/implemented/process/2026-07-05-uniform-rfc-format.md
# docs/rfc/implemented/process/2026-07-06-parallel-github-ci-gates.md
# docs/rfc/implemented/process/2026-07-06-parallel-pre-push-gates.md
# docs/rfc/implemented/process/2026-07-12-package-model-experience-contract.md
# docs/rfc/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md
# docs/rfc/implemented/simplification/2026-07-04-prune-producerless-vocabulary-variants.md
# docs/rfc/implemented/testing/2026-06-20-remove-redundant-snapshot-log-goldens.md
# docs/rfc/implemented/testing/2026-07-08-shared-acp-snapshot-package.md
# docs/rfc/proposed/architecture/2026-06-20-generic-long-running-tool-runtime.md
# docs/rfc/proposed/simplification/2026-06-20-unify-agent-and-session-id.md
# docs/rfc/proposed/simplification/2026-07-12-simplify-session-log-representation.md
# docs/rfc/rejected/simplification/2026-07-04-prune-unimplemented-subagent-vocabulary.md
# scripts/translation-pairing.manifest.json
2026-07-22 23:07:14 +08:00
Tianyi Cui
78c2741d3e
Merge remote-tracking branch 'origin/master' into worktree/pr504-retarget-latest-master
...
# Conflicts:
# docs/event-producer-consumer.md
# examples/tui-agent/README.md
# examples/tui-agent/composition.md
# examples/tui-agent/cordis.yml
# examples/tui-agent/tests/snapshots/multi-turn-conversation/terminal.expected.txt
# examples/tui-agent/tests/tui-keyless-smoke.e2e.ts
# packages/ui/tui/README.md
# vitest.config.ts
2026-07-22 20:55:12 +08:00
Tianyi Cui
f4185122dc
refactor(plan): remove generic mode abstraction
2026-07-22 16:57:23 +08:00
Turtle
2a9f248594
refactor(tui): drop the TUI-local auto-title; titles come from the session-title service
...
Master's log-backed session-title capability already titles sessions durably
(deterministic fallback in the spine, optional model providers). Remove the
TUI's own autoTitle generation — the latch, prompt, cap, and llm stream call —
and keep the terminal rename: the TUI folds the logged title on mount and sets
'<session title> — <configured title>' on every accepted session/title event.
The tui-agent example and the scripted PTY fixture mount
session-title-first-message-llm so titles stay model-made; the scripted
adapter's tool-less branch now answers that provider's auxiliary request.
See .agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.md
2026-07-22 15:01:54 +08:00
Turtle
2464d6169f
feat(app-boot): move personal config to the Harness home (~/.dsh)
...
Squashes feat/personal-config-dsh-home: personal config.yaml and .env move
from ~/.config/dsh to the Harness home (~/.dsh), plus the module-graph,
lockfile, and i18n pairing regeneration that followed.
2026-07-22 14:29:52 +08:00
Turtle
a5dfffcbe5
chore(examples): make todo_write opt-in for the tui-agent example
...
Make todo_write opt-in for the tui-agent example (disabled by default; TUI
still renders plans when the tool is loaded). Both enabled and disabled cases
covered by tests.
2026-07-22 14:29:52 +08:00
Turtle
8995ce367f
feat(tui): remove the /cancel slash command
2026-07-22 14:29:52 +08:00
Turtle
0c9a4d7c28
Retire the readline front door and the repl-agent example
...
Delete packages/ui/stdio and examples/repl-agent; rename stdio-demo to
@deepseek-ai/dsh-tui-demo (TUI-only, refuses pipes before Loader boot).
tui-agent owns the coding composition inline; echo-agent and the CI demo
smoke move to the one-shot cli-demo bin, which gains -p/--prompt. The
UI-independent with-key e2es move verbatim to tui-agent. SDK wizard's
'stdio' interface becomes 'tui'. PTY testing stays confined to TUI
surfaces; all other subprocess tests ride pipes.
See .agents/notes/implemented/simplification/2026-07-20-retire-readline-front-door.md
2026-07-22 14:29:27 +08:00