mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-10-26 16:55:08 +00:00
Merge master into unified subagent activations
Integrate master 78ae4fc2d4d8ecaebb4b674028f781a358b92cc9 after the four independent review fixes. Keep this base update separate from those fixes and from subsequent review changes so the integration is independently reviewable and the observed-master checkpoint remains preserved. Retain activation-owned execution, caller-independent local discovery, and unconditional parent final-answer delivery. Preserve master's preset scoped scheduling tools and all delegated-child schedule deny rules. Move the new scheduling regression from the removed driver package into the surviving subagent package and run it through a real Spawn activation. Preserve master's removal of runtime invariant plugins, dependencies, exports, and test mounts. Keep context disposal before fixture directory cleanup. Combine Python workflow ordering with activation/catalog events without inventing unsupported source-plane import paths. Keep all frozen Agent Note archives byte-for-byte identical to master; do not accept Git's automatic edits to renamed archived notes. Retain current lifecycle and delivery facts in active documentation, repair its links, and regenerate catalogs/persistence schemas from merged source. All 62 master persistence roots remain; only subagent/catalog gains the PR's external membership extension. Keep master's third-party lock graph and update only workspace dependency changes. Validation before this checkpoint: 683 focused tests passed, seven Windows-only cases skipped; 2,772 archived artifacts verified. Generated catalog and active-pair checks passed. Fresh artifact build and remaining build-dependent documentation checks continue before publication.
This commit is contained in:
commit
9dcc8fa985
4943 files changed
+102223
-113486
No files matched your search
@@ -6,8 +6,8 @@
|
||||
en: a10991a192c7b55d
|
||||
zh: c2e5b938ece4f366
|
||||
/agent-notes/layout-and-naming:
|
||||
en: 6b38cb0eb38c2baf
|
||||
zh: 535234fb23fc8921
|
||||
en: 0a517dfc15d4af0a
|
||||
zh: 324bd9e13a0295e3
|
||||
/agent-notes/classification:
|
||||
en: 055a5e49f9af3dc2
|
||||
zh: 9f7c78409cccfded
|
||||
@@ -18,8 +18,8 @@
|
||||
en: 2beb1b94d8fb633c
|
||||
zh: 889b5542bb771205
|
||||
/agent-notes/the-file-format:
|
||||
en: 601f85df49f80fc7
|
||||
zh: acbd0955d6543b13
|
||||
en: c8efdd37e51c8746
|
||||
zh: 0080340005bd31db
|
||||
/agent-notes/the-file-format/the-header-block:
|
||||
en: 16fdaab0c74a5bb5
|
||||
zh: 2553f145a1eb878f
|
||||
|
||||
@@ -16,7 +16,7 @@ Every Agent Note has two axes, both encoded in its **path** — `{lifecycle}/{cl
|
||||
|
||||
The date in the filename is when the topic was **first proposed** (per git history). Cross-references between Agent Notes use relative markdown links (`[topic](../../implemented/architecture/2026-…-….md)`) — never bare prose or numbers — so they are mechanically checkable and survive moves between folders.
|
||||
|
||||
The active lifecycle tree is the working inventory: browse its lifecycle/class folders or search the repository. Do not add a centralized `INDEX.md`; the [no-index Agent Note](implemented/process/2026-07-19-remove-generated-agent-note-index.md) owns the rationale. Implemented records with historical decision value but little future guidance move to the separate frozen [`archived/`](archived/AGENTS.md) tree described below.
|
||||
The active lifecycle tree is the working inventory: browse its lifecycle/class folders or search the repository. Do not add a centralized `INDEX.md`: it duplicates path metadata and makes unrelated note changes contend on one generated file. Implemented records with historical decision value but little future guidance move to the separate frozen [`archived/`](archived/AGENTS.md) tree described below.
|
||||
|
||||
## Classification
|
||||
|
||||
@@ -53,7 +53,7 @@ A feature-addition note may be consolidated into the later removal note only whe
|
||||
|
||||
## The file format
|
||||
|
||||
Every active Agent Note follows one in-file format, enforced by `pnpm run verify-agent-note-format` ([scripts/verify-agent-note-format.ts](../../scripts/verify-agent-note-format.ts), part of `doc-sync`); the rationale for the format — and the alternatives it rejected — is [the uniform-format Agent Note](implemented/process/2026-07-05-uniform-agent-note-format.md). Archived notes retain the format they had when sealed plus the archive-date line above.
|
||||
Every active Agent Note follows one in-file format, enforced by `pnpm run verify-agent-note-format` ([scripts/verify-agent-note-format.ts](../../scripts/verify-agent-note-format.ts), part of `doc-sync`); the rationale for the format — and the alternatives it rejected — is [archived the uniform-format Agent Note](archived/process/2026-07-05-uniform-agent-note-format.md). Archived notes retain the format they had when sealed plus the archive-date line above.
|
||||
|
||||
### The header block
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
文件名中的日期是该主题**首次提出**的时间(以 git 历史为准)。Agent Note 之间的交叉引用使用相对 Markdown 链接(`[topic](../../implemented/architecture/2026-…-….md)`),从不使用纯文字或编号,这样既可机械检查,也能在文件夹间移动时保持有效。
|
||||
|
||||
活跃生命周期目录树就是工作清单:浏览其生命周期/类别文件夹,或搜索仓库即可。请勿添加集中式 `INDEX.md`;设计理由见[不设索引的 Agent Note](implemented/process/2026-07-19-remove-generated-agent-note-index.zh.md)。具有历史决策价值但未来指导价值较低的已实施记录会移至下文所述、单独冻结的 [`archived/`](archived/AGENTS.md) 目录树。
|
||||
活跃生命周期目录树就是工作清单:浏览其生命周期/类别文件夹,或搜索仓库即可。请勿添加集中式 `INDEX.md`:它重复路径元数据,并让无关记录的变更争用同一个生成文件。具有历史决策价值但未来指导价值较低的已实施记录会移至下文所述、单独冻结的 [`archived/`](archived/AGENTS.md) 目录树。
|
||||
|
||||
<a id="classification"></a>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
## 文件格式
|
||||
|
||||
每份活跃 Agent Note 遵循统一的文件内格式,由 `pnpm run verify-agent-note-format`([scripts/verify-agent-note-format.ts](../../scripts/verify-agent-note-format.ts),`doc-sync`(文档同步门禁)的一环)强制执行;该格式的设计动机及其否决的替代方案见[统一格式 Agent Note](implemented/process/2026-07-05-uniform-agent-note-format.zh.md)。归档记录保留封存时的格式,并增加上述归档日期行。
|
||||
每份活跃 Agent Note 遵循统一的文件内格式,由 `pnpm run verify-agent-note-format`([scripts/verify-agent-note-format.ts](../../scripts/verify-agent-note-format.ts),`doc-sync`(文档同步门禁)的一环)强制执行;该格式的设计动机及其否决的替代方案见[已归档的统一格式 Agent Note](archived/process/2026-07-05-uniform-agent-note-format.md)。归档记录保留封存时的格式,并增加上述归档日期行。
|
||||
|
||||
### 头部块
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-11-content-block-vocabulary.md
|
||||
2026-06-11-content-block-vocabulary.md: ae60931f37b3c470d0a1d6ee5f074ee77f9b3c14
|
||||
2026-06-11-content-block-vocabulary.zh.md: 3feed6e3ac9e7836a6e36be47fb19f346978886c
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Provider-neutral content-block vocabulary owned by dsh-llm
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-06-11-content-block-vocabulary.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 由 dsh-llm 拥有的提供方无关内容块词汇
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-06-11-content-block-vocabulary.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-11-microkernel-event-taxonomy.md
|
||||
2026-06-11-microkernel-event-taxonomy.md: 681ab6eed1dc4d8a361990e69f071b918ce297c2
|
||||
2026-06-11-microkernel-event-taxonomy.zh.md: 3b7504a21be7d83969c9cee77a77c33803a41e74
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Microkernel — extension via Cordis event taxonomy, one concrete loop
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-06-11-microkernel-event-taxonomy.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 微内核——通过 Cordis 事件分类体系实现扩展,唯一具体循环
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-06-11-microkernel-event-taxonomy.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-14-session-persistence.md
|
||||
2026-06-14-session-persistence.md: 4d067d2905d764a5c0d70b0a3eae5de68cb717f4
|
||||
2026-06-14-session-persistence.zh.md: 1f0f4af301a439c02fc23a1ffdc541d6bcbb24d2
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Session persistence as an abstract service over the existing `SessionEvent`
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-06-14-session-persistence.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 会话持久化作为基于现有 `SessionEvent` 的抽象服务
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-06-14-session-persistence.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-20-generic-long-running-tool-runtime.md
|
||||
2026-06-20-generic-long-running-tool-runtime.md: 7cdb72ece6ca5681ba83999dd5d95fc2c27bf318
|
||||
2026-06-20-generic-long-running-tool-runtime.zh.md: bf0a5d61c0e45aa6b39c6bcd0ac71cfb9b61d43f
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: The background job runtime (`ctx.jobs`) and generic task control tools
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-06-20-generic-long-running-tool-runtime.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 后台任务运行时(`ctx.jobs`)与通用任务控制工具
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-06-20-generic-long-running-tool-runtime.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-21-mandatory-app-attribution-headers.md
|
||||
2026-06-21-mandatory-app-attribution-headers.md: 680bd56301d80f87f13294bc7744a5de376425be
|
||||
2026-06-21-mandatory-app-attribution-headers.zh.md: d9e19dbf8cf5a8f8594f25c0cd8565a7deb4b8a6
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Mandatory `User-Agent` attribution for provider requests
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-06-21-mandatory-app-attribution-headers.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 对提供方请求强制携带 `User-Agent` 归属标识
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-06-21-mandatory-app-attribution-headers.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-26-file-context-as-event-gate.md
|
||||
2026-06-26-file-context-as-event-gate.md: 96962f6a7260cc4da393a90349528aece3c23ce1
|
||||
2026-06-26-file-context-as-event-gate.zh.md: 22fb85fc1246bb67bc0793f8cf7816b6134f11ae
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Make `dsh-fs-observation-policy` an event-gate plugin, not a method interface
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-06-26-file-context-as-event-gate.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 将 `dsh-fs-observation-policy` 改为事件门禁插件,而非方法接口
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-06-26-file-context-as-event-gate.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-05-windows-jsonl-durable-publish.md
|
||||
2026-07-05-windows-jsonl-durable-publish.md: f6be0b602d00daabdffc152508b0f8658fcb47a5
|
||||
2026-07-05-windows-jsonl-durable-publish.zh.md: 136b4c92b44d53c6fbfcefc94b683c9cbbfc9597
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Windows-native durable JSONL publication
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-05-windows-jsonl-durable-publish.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Windows 原生持久 JSONL 发布
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-05-windows-jsonl-durable-publish.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-08-agent-scope-contexts.md
|
||||
2026-07-08-agent-scope-contexts.md: e6513e6dc5aab699ba12d028aa7985f8dc5e33af
|
||||
2026-07-08-agent-scope-contexts.zh.md: bfb1dfdad882c51ea39fd701e5a6c549af9b2349
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: The agent is a registration scope
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-08-agent-scope-contexts.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: agent 即注册作用域
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-08-agent-scope-contexts.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-10-after-call-compaction-pressure-and-overflow-recovery.md
|
||||
2026-07-10-after-call-compaction-pressure-and-overflow-recovery.md: f5b739b80022c85c9009a37de0e8b3f147f920b1
|
||||
2026-07-10-after-call-compaction-pressure-and-overflow-recovery.zh.md: 303f266079e0738ed9b0c6d7a19fadce7dc77442
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: After-call compaction pressure and context-overflow recovery
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-10-after-call-compaction-pressure-and-overflow-recovery.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 调用后压缩压力与上下文溢出恢复
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-10-after-call-compaction-pressure-and-overflow-recovery.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-12-agent-scope-runtime-design.md
|
||||
2026-07-12-agent-scope-runtime-design.md: dba700b99a622a2f38c964fcfe6a6fdcf877c45e
|
||||
2026-07-12-agent-scope-runtime-design.zh.md: f5c12fce6b9829e4ada61eab44d49232fa5aa241
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Agent-scope runtime design and correctness
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-12-agent-scope-runtime-design.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Agent 作用域运行时设计与正确性
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-12-agent-scope-runtime-design.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-16-explicit-turn-cancellation.md
|
||||
2026-07-16-explicit-turn-cancellation.md: 23aaaae2d1f57a546ccbae7986c163e50f89fe24
|
||||
2026-07-16-explicit-turn-cancellation.zh.md: 4ce379c84640a214be1fa9708426e15ecc25c1d4
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Explicit turn cancellation capability
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-16-explicit-turn-cancellation.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 显式轮次取消能力
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-16-explicit-turn-cancellation.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-19-gui-web-client-architecture.md
|
||||
2026-07-19-gui-web-client-architecture.md: f54f13869d748b68fd00bdfff23c2da49b8fdc81
|
||||
2026-07-19-gui-web-client-architecture.zh.md: 4ab3639dac9d7e8916a0d3affb14bd965c11d783
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Web client architecture — the client cordis plugin tree, the slot system, and the React-free object layer
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-19-gui-web-client-architecture.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Web 客户端架构——client cordis 插件树、slot 体系与 React-free 对象层
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-19-gui-web-client-architecture.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-19-package-invariant-runtime-contracts.md
|
||||
2026-07-19-package-invariant-runtime-contracts.md: d0559b0379ce05aa9a5a0c30df4808e3088c840b
|
||||
2026-07-19-package-invariant-runtime-contracts.zh.md: 0cfe61ee6344a4f6da73ffff22bb8a1b30f9f3a9
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Meaningful package invariant contracts
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-19-package-invariant-runtime-contracts.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 有意义的包不变量约定
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-19-package-invariant-runtime-contracts.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-19-zstandard-jsonl-session-logs.md
|
||||
2026-07-19-zstandard-jsonl-session-logs.md: 8ab55279bc94224b8b048c972bfda5c4a91a2fc8
|
||||
2026-07-19-zstandard-jsonl-session-logs.zh.md: c8f1b1599c415aaec37af3f238a2a979461f855b
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Zstandard JSONL session logs
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-19-zstandard-jsonl-session-logs.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Zstandard JSONL 会话日志
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-19-zstandard-jsonl-session-logs.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-20-canonical-tool-output-contract.md
|
||||
2026-07-20-canonical-tool-output-contract.md: 1e2cdacdfa9100ca89840bb6ff0c98f07cecf8be
|
||||
2026-07-20-canonical-tool-output-contract.zh.md: 6fa16a682a03a79d98278e2ffa543ec330550b9b
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Canonical tool output contract
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-20-canonical-tool-output-contract.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 规范工具输出约定
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-20-canonical-tool-output-contract.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-20-unified-json-value-schema-dsl.md
|
||||
2026-07-20-unified-json-value-schema-dsl.md: c1cc5c16f3d0e8ac65cff881a9f7b2ff51259e2a
|
||||
2026-07-20-unified-json-value-schema-dsl.zh.md: 7cd7be62c47ba96914c802b208fd87640849b3eb
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Unified JSON-value schema DSL
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-20-unified-json-value-schema-dsl.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 统一 JSON 值 schema DSL
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-20-unified-json-value-schema-dsl.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-24-project-session-directories.md
|
||||
2026-07-24-project-session-directories.md: 92a8ea11b8150b7c60fe76ae1354c5fadddd13c9
|
||||
2026-07-24-project-session-directories.zh.md: 1850f04366deb79709b2bc51db194098eab9a95e
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Project-grouped session directories
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-24-project-session-directories.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 按项目分组的会话目录
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-24-project-session-directories.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.md
|
||||
2026-07-24-web-config-tree-boot-and-transport-layering.md: 7f1a619796158be987e58fa718af119421e477fa
|
||||
2026-07-24-web-config-tree-boot-and-transport-layering.zh.md: 6f0dc590944f3994752ef1de06de46a843fdbc94
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: dsh web config-tree boot and the web transport layering
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-24-web-config-tree-boot-and-transport-layering.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: dsh web 的 config-tree boot 与 web 传输分层
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-24-web-config-tree-boot-and-transport-layering.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-25-web-client-session-scope-and-provide-channel.md
|
||||
2026-07-25-web-client-session-scope-and-provide-channel.md: 9afd2419c24f21b903c6e2c692cc6ee943244e07
|
||||
2026-07-25-web-client-session-scope-and-provide-channel.zh.md: 2385cfc8edde2dd65291037ea6d0d18c90f720d4
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Web client Agent-scope parity model and the provisioning channel (agents/scope / blank reuse / provide)
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-25-web-client-session-scope-and-provide-channel.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Web client Agent-scope 对等模型与供数通道(agents/scope / blank 复用 / provide)
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-25-web-client-session-scope-and-provide-channel.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-session-end-seed-log-boundary.md
|
||||
2026-07-30-session-end-seed-log-boundary.md: d7025aac7a69ffafd4f64a2f73d202e7107452b2
|
||||
2026-07-30-session-end-seed-log-boundary.zh.md: 5c6227c5866b8a12506709726a1a0f93a8a6dcdc
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: the end-seed log boundary
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-30-session-end-seed-log-boundary.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 种子结束日志边界
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-30-session-end-seed-log-boundary.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-31-claimed-pre-step-inbox-lifecycle.md
|
||||
2026-07-31-claimed-pre-step-inbox-lifecycle.md: 1f5d06b7314e1433880e17cc370a842b153fe287
|
||||
2026-07-31-claimed-pre-step-inbox-lifecycle.zh.md: f31790826ea3464ab519a5b21084834390075526
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Claim inbox input before one pre-step decision
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-07-31-claimed-pre-step-inbox-lifecycle.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 在单一 pre-step 决策前领取 inbox 输入
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-07-31-claimed-pre-step-inbox-lifecycle.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-04-draft-provider-endpoint-interrogation.md
|
||||
2026-08-04-draft-provider-endpoint-interrogation.md: d6de95d91b4c045d4eca793ca7190f6d148888d4
|
||||
2026-08-04-draft-provider-endpoint-interrogation.zh.md: eb72884a7119db36549d64a613a5f9d927a1d30a
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Interrogating a draft provider endpoint
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-08-04-draft-provider-endpoint-interrogation.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 询问草稿中的提供方端点
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-08-04-draft-provider-endpoint-interrogation.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-10-remote-event-delivery.md
|
||||
2026-08-10-remote-event-delivery.md: c5c68db6e280dcd10344d019d7f961bd0530f965
|
||||
2026-08-10-remote-event-delivery.zh.md: 86c1321fd153ea0e062193f95e31aafbf0dd6c46
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Remote event delivery (`ctx.remote.$on`)
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-08-10-remote-event-delivery.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Remote 事件投递(ctx.remote.$on)
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-08-10-remote-event-delivery.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-18-experimental-agent-teams-packages.md
|
||||
2026-08-18-experimental-agent-teams-packages.md: 358eec1f0d51286fe1bfb8b6b7ab71a858c26bef
|
||||
2026-08-18-experimental-agent-teams-packages.zh.md: f511a2b5ae5560d8cae0f5925e67b7ea00da49c3
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Publish Agent Teams under experimental package names
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-08-18-experimental-agent-teams-packages.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 以实验性包名发布 Agent Teams
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-08-18-experimental-agent-teams-packages.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-28-subprocess-native-containment.md
|
||||
2026-08-28-subprocess-native-containment.md: ea47118fa7da79bc56bfdba9fe08eb91d04c6a51
|
||||
2026-08-28-subprocess-native-containment.zh.md: 750315d4b406cd0a802b91314e4cd4a77a19a99e
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Native owners contain escaped subprocess descendants
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-08-28-subprocess-native-containment.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 原生 owner 收容逃逸的 subprocess 后代
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-08-28-subprocess-native-containment.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-01-jobs-absorb-activity-record.md
|
||||
2026-09-01-jobs-absorb-activity-record.md: e5543737155cc75f62485d8b125a7fa178e63ca0
|
||||
2026-09-01-jobs-absorb-activity-record.zh.md: 1f6e283c7924e2a30cc6f617396e4e0c9852e7e0
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: The job registry absorbs the observation record; the standalone activity seam is removed
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
Superseded: the record declaration (`JobStart.record`, `RecordingJob`, `readRecord`, `pumpJobOutput`) and the split wire (`SessionJob.record` on the session control stream, `ctx.jobOutput`) described below were consolidated into one output ring and direct operations on `ctx.jobs` — see [the jobs seam consolidation](2026-09-03-jobs-seam-consolidation.md). The argument for absorbing the standalone activity seam into `ctx.jobs` still holds.
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note:job 注册表吸收观测 record;独立的 activity seam 被移除
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
Superseded:下文描述的 record 声明(`JobStart.record`、`RecordingJob`、`readRecord`、`pumpJobOutput`)与拆分的线路(会话控制流上的 `SessionJob.record`、`ctx.jobOutput`)已收敛为一个输出环与 `ctx.jobs` 上的直接操作——见 [jobs seam 收敛](2026-09-03-jobs-seam-consolidation.zh.md)。把独立 activity seam 吸收进 `ctx.jobs` 的论证仍然成立。
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-02-projcache-cross-version-read-compat.md
|
||||
2026-09-02-projcache-cross-version-read-compat.md: 22722e7bb41c2d06ffbdf433aad10a9647abce3f
|
||||
2026-09-02-projcache-cross-version-read-compat.zh.md: a928c40bfa6d294b2ed927a381528ccc260692ea
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Projection-cache predecessor recovery and Session-format binding (session_projcache v3-v6 → v7)
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-09-02-projcache-cross-version-read-compat.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 投影缓存前代恢复与 Session 格式绑定(session_projcache v3-v6 → v7)
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-09-02-projcache-cross-version-read-compat.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-05-package-manifest-types.md
|
||||
2026-09-05-package-manifest-types.md: 63c2dd833508d2246ba818b584eabe5c02846c07
|
||||
2026-09-05-package-manifest-types.zh.md: 794983e05b914705eb431d204470cd67d512fab4
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Package manifest declaration ownership
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-09-05-package-manifest-types.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Package manifest 声明归属
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-09-05-package-manifest-types.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-05-sidebar-tab-types-and-navigation.md
|
||||
2026-09-05-sidebar-tab-types-and-navigation.md: a2eaed465332d1dc9adc4a770554ecac69535920
|
||||
2026-09-05-sidebar-tab-types-and-navigation.zh.md: 60d0fc9ae20e6e234939a2cf45233a5c6bd602e9
|
||||
+5
-2
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Right Sidebar tab types and navigation
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-09-05-sidebar-tab-types-and-navigation.zh.md)
|
||||
|
||||
@@ -72,7 +73,7 @@ interface SidebarRightTabParamsMap {} // key: kind — a page type declar
|
||||
|
||||
`openResource` accepts the union of every declared resource shape and `openTab<K>` the shape declared for `K`; a body narrows `navigation.params` by the protocol or kind it knows it serves. Parameters belong to the resource type rather than to the viewer because a line number is a fact about a file location, not about the text preview, and any type that claims `file` addresses receives the same shape. Values must be JSON-serializable, and a record must be rebuildable from address and parameters alone, because undo, redo, reload, and HMR rebuild tabs after the opener is gone.
|
||||
|
||||
Beside the two opens, the face carries `close(tabId)`, `active()`, `isExpanded()`, `toggleExpanded()`, and four operational methods — `focus(tabId)`, `split(paneId?)` (returning the new pane, or `undefined` when the pane budget or the width rule forbids the split, recording nothing), `float(tabId, rect?)`, and `dock(paneId)` — each recording one history entry and a no-op on a missing target or one already in the requested state. There is no layout snapshot, no subscription, and no lookup by address: the face grants control over the layout, not a view of it. The seat publishes its binding — its session, its store's actions, and its surface — while mounted; a command on the public face acts on the mounted session and throws with no mounted session surface. A tab's own actions reach their session's own store instead: the slot runtime mints one store per session, the plugin adopts each as it is minted, and the controller routes by session id, so an action fired after the user switched sessions still lands, and does nothing for a session whose store was never minted.
|
||||
Beside the two opens, the face carries `close(tabId)`, `active()`, `isExpanded()`, `toggleExpanded()`, and four operational methods — `focus(tabId)`, `split(paneId?)` (returning the new pane, or `undefined` when the pane budget or the width rule forbids the split, recording nothing), `float(tabId, rect?)`, and `dock(paneId)` — each recording one history entry and a no-op on a missing target or one already in the requested state. There is no layout snapshot, no subscription, and no lookup by address: the face grants control over the layout, not a view of it. The plugin names the Session on screen — the selected Session while the Conversation fills the main column — from the Session selection and the main panel, before React renders either change, and publishes it as `mounted`; a command on the public face acts on that Session through its adopted store and throws when no Session is on screen or its store has not been minted. The seat reports only what it renders with: the room its docking kit measured and whether its frame width presents the panel fullscreen automatically. A tab's own actions reach their session's own store instead: the slot runtime mints one store per session, the plugin adopts each as it is minted, and the controller routes by session id, so an action fired after the user switched sessions still lands, and does nothing for a session whose store was never minted.
|
||||
|
||||
### Addresses
|
||||
|
||||
@@ -100,6 +101,8 @@ The conversation's `openFile(path, { line? })` — tool-row path links, produced
|
||||
|
||||
**Slot priorities to express an extension taking over a builtin, then registry-minted slot keys.** The first attempt had the overriding type register its body at a lower slot priority through an exported constant — a value import across dynamic plugins, and a second rule system (slot priority) standing in for the registry's. The second attempt had the registry mint a key per registration and return it from `register()`, which made registration a two-step dance whose ordering mattered. Letting the implementation declare its own `id` — required, unique, the same string it registers its seats under — needs no constant, no minting, and no ordering, and gives the registry the identity it needs to reject duplicates.
|
||||
|
||||
**A binding the seat publishes from its own effects.** The first form had the mounted seat publish its session, actions, and surface after each commit and release them when it left. React runs a commit's passive effects in tree order, and the frame renders the Conversation column before the right column, so in a commit that switched Sessions or returned from a global panel a Conversation component opening content from its effect ran while no seat was bound — after the departing seat's release and before the arriving seat's bind — and the open threw. The Session selection and the main panel change before React renders, so deriving the on-screen Session from them removes that ordering dependency. The seat still measures pane room, because only its rendered kit can.
|
||||
|
||||
## Consequences
|
||||
|
||||
- A type is one static object plus one or two keyed seat registrations; its occurrence information is read through injected `useTabInfo()`. The framework grows no per-type API surface, and a type shipped from outside this repository imports only types from the Sidebar package.
|
||||
@@ -116,5 +119,5 @@ The conversation's `openFile(path, { line? })` — tool-row path links, produced
|
||||
## Deferred
|
||||
|
||||
- A navigation protocol beyond `sidebar://<kind>`: sub-routes within a page, naming an implementation, and the ecosystem-facing rules for other navigation schemes.
|
||||
- Opening into a session other than the one on screen from the public face, which acts on the mounted session only; a tab's own actions already act on their tab's session.
|
||||
- Opening into a session other than the one on screen from the public face, which acts on the on-screen Session only; a tab's own actions already act on their tab's session.
|
||||
- A localized message when an open fails from the conversation; the failure is currently the thrown error's text.
|
||||
+5
-2
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 右侧 Sidebar 的 tab 类型与导航
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-09-05-sidebar-tab-types-and-navigation.md) | 中文
|
||||
|
||||
@@ -72,7 +73,7 @@ interface SidebarRightTabParamsMap {} // key: kind — a page type declar
|
||||
|
||||
`openResource` 接受所有已声明资源形状的联合,`openTab<K>` 接受为 `K` 声明的形状;正文按自己所服务的协议或 kind 收窄 `navigation.params`。参数属于资源类型而非查看器,因为行号是关于文件位置的事实,不是关于文本预览的,任何认领 `file` 地址的类型收到同一形状。值必须可 JSON 序列化,一条记录必须只凭地址与参数就能重建,因为撤销、重做、刷新与 HMR 都在开启方已不在时重建 tab。
|
||||
|
||||
除两种打开外,该面还有 `close(tabId)`、`active()`、`isExpanded()`、`toggleExpanded()`,以及四个操作型方法——`focus(tabId)`、`split(paneId?)`(返回新格,预算或宽度规则不允许分栏时返回 `undefined` 且不记账)、`float(tabId, rect?)` 与 `dock(paneId)`——每个记一条历史,目标不存在或已在目标态时为 no-op。没有布局快照、没有订阅、没有按地址查找:该面给的是对布局的控制权,不是布局的视图。座位挂载期间发布其绑定——自己的会话、其 store 的 action 与其面;公开面上的命令作用于已挂载会话,没有已挂载会话面时抛错。tab 自己的动作则到达其会话自己的 store:slot 运行时每个会话铸一个 store,插件在铸出时逐个收养,控制器按会话 id 路由,因此用户切换会话之后触发的动作照样落地,而 store 从未铸出的会话什么也不做。
|
||||
除两种打开外,该面还有 `close(tabId)`、`active()`、`isExpanded()`、`toggleExpanded()`,以及四个操作型方法——`focus(tabId)`、`split(paneId?)`(返回新格,预算或宽度规则不允许分栏时返回 `undefined` 且不记账)、`float(tabId, rect?)` 与 `dock(paneId)`——每个记一条历史,目标不存在或已在目标态时为 no-op。没有布局快照、没有订阅、没有按地址查找:该面给的是对布局的控制权,不是布局的视图。插件依据会话选择与主面板确定屏上会话——Conversation 占据主栏时的选中会话——并在 React 渲染这两者的变化之前将其发布为 `mounted`;公开面上的命令经该会话被收养的 store 作用于它,没有会话在屏上或其 store 尚未铸出时抛错。座位只上报它渲染时依据的事实:停靠套件测得的空间,以及框架宽度是否让面板自动全屏。tab 自己的动作则到达其会话自己的 store:slot 运行时每个会话铸一个 store,插件在铸出时逐个收养,控制器按会话 id 路由,因此用户切换会话之后触发的动作照样落地,而 store 从未铸出的会话什么也不做。
|
||||
|
||||
### 地址
|
||||
|
||||
@@ -100,6 +101,8 @@ interface SidebarRightTabParamsMap {} // key: kind — a page type declar
|
||||
|
||||
**用 Slot 优先级表达 extension 接管 builtin,随后是注册表铸造的坑位键。** 第一次尝试让覆盖方经一个导出常量以更低的 Slot 优先级注册正文——这是动态插件间的值引用,也是拿第二套规则(Slot 优先级)替注册表的规则站台。第二次尝试让注册表为每次注册铸一个键并从 `register()` 返回,这把注册变成了两步且顺序敏感的舞步。让实现自己声明 `id`——必填、唯一、与它注册坑位所用的同一个串——既不需要常量,也不需要铸键与顺序,还给了注册表拒绝重复所需的身份。
|
||||
|
||||
**由座位在自己的 effect 里发布绑定。** 最初的形式由已挂载的座位在每次提交后发布自己的会话、action 与面,离开时释放。React 按树序运行一次提交的被动 effect,而框架先渲染 Conversation 列、后渲染右栏,于是在切换会话或从全局面板返回的那次提交里,从自己 effect 打开内容的 Conversation 组件运行时没有任何座位已绑定——在离开的座位释放之后、到来的座位绑定之前——打开随之抛错。会话选择与主面板都在 React 渲染之前变化,从它们推导屏上会话便消除了这一顺序依赖。分栏空间仍由座位测量,因为只有它渲染出的套件能测。
|
||||
|
||||
## Consequences
|
||||
|
||||
- 一个类型 = 一个静态对象 + 一到两个 keyed 坑位注册;其实例信息通过注入的 `useTabInfo()` 读取。框架不长任何按类型的 API 面,仓外类型从 Sidebar 包只引类型。
|
||||
@@ -116,5 +119,5 @@ interface SidebarRightTabParamsMap {} // key: kind — a page type declar
|
||||
## Deferred
|
||||
|
||||
- `sidebar://<kind>` 之外的导航协议:页内子路由、点名实现、以及面向生态的其它导航 scheme 规则。
|
||||
- 从公开面往屏上会话之外的会话里打开;公开面只作用于已挂载的会话,而 tab 自己的动作已作用于其所在会话。
|
||||
- 从公开面往屏上会话之外的会话里打开;公开面只作用于屏上会话,而 tab 自己的动作已作用于其所在会话。
|
||||
- 从会话区打开失败时的本地化提示;目前是抛错文本本身。
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-06-embedded-stream-record-readers.md
|
||||
2026-09-06-embedded-stream-record-readers.md: 88a15f50f8d122676b1b5d2c7df39aa7b7e7b331
|
||||
2026-09-06-embedded-stream-record-readers.zh.md: a66dbc69c788a05569859de7de4bc43b985183ff
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Embedded Assistant stream consumers read compact records
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-09-06-embedded-stream-record-readers.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 内嵌 Assistant 流的消费方直接读取紧凑记录
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-09-06-embedded-stream-record-readers.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-07-sidebar-responsive-tab-info.md
|
||||
2026-09-07-sidebar-responsive-tab-info.md: e47ad9cd1a9b24b783d5acec780f0a2af6303727
|
||||
2026-09-07-sidebar-responsive-tab-info.zh.md: d2e3c84b76ffad6f52f7db1d13158ed51e3d5624
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Responsive Sidebar and injected tab information
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-09-07-sidebar-responsive-tab-info.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 响应式 Sidebar 与注入的标签信息
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-09-07-sidebar-responsive-tab-info.md) | 中文
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-07-workspace-files-dual-face-package.md
|
||||
2026-09-07-workspace-files-dual-face-package.md: dbefb894291ac7c0b3e7847c75a7bd4d19c19d3e
|
||||
2026-09-07-workspace-files-dual-face-package.zh.md: c10a46736982a2b326bcedae11723feef6871476
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: Workspace files as one dual-face API package
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
English | [中文](2026-09-07-workspace-files-dual-face-package.zh.md)
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
# Agent Note: 工作区文件统一为 API 双面包
|
||||
|
||||
Status: implemented
|
||||
Archived: 2026-09-30
|
||||
|
||||
[English](2026-09-07-workspace-files-dual-face-package.md) | 中文
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-08-global-main-panels.md
|
||||
2026-09-08-global-main-panels.md: 86336e694ea89bcb219b1fb927f92a5c72ee2630
|
||||
2026-09-08-global-main-panels.zh.md: 89743b456c7aad101705c2d9264e63449222b29a
|
||||
Loaded 100 of 4943 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user