diff --git a/.agents/notes/implemented/process/2026-09-11-persistence-type-history.i18n.yaml b/.agents/notes/implemented/process/2026-09-11-persistence-type-history.i18n.yaml index 83a051efa6..a1afea9eb1 100644 --- a/.agents/notes/implemented/process/2026-09-11-persistence-type-history.i18n.yaml +++ b/.agents/notes/implemented/process/2026-09-11-persistence-type-history.i18n.yaml @@ -2,5 +2,5 @@ # 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/implemented/process/2026-09-11-persistence-type-history.md -2026-09-11-persistence-type-history.md: 251ac7e1ba9f87e712c5e1d92a80640b527ed4a3 -2026-09-11-persistence-type-history.zh.md: fee3bf7f7babf3dc9bece0b66880155318bdad70 +2026-09-11-persistence-type-history.md: e1fd4ac704f6908daab573ee63eacc1c93780896 +2026-09-11-persistence-type-history.zh.md: d54c0d845f24ca23b17bf8f386995b68f718d43a diff --git a/.agents/notes/implemented/process/2026-09-11-persistence-type-history.md b/.agents/notes/implemented/process/2026-09-11-persistence-type-history.md index 251ac7e1ba..e1fd4ac704 100644 --- a/.agents/notes/implemented/process/2026-09-11-persistence-type-history.md +++ b/.agents/notes/implemented/process/2026-09-11-persistence-type-history.md @@ -10,11 +10,11 @@ A persisted event can retain the same payload type expression while a referenced ## Decision -One normalized type model supplies the readable persistence catalog, the complete schema inventory, and transitive per-root digests. Roots identify the logical Session header, the physical JSONL header line, the event envelope, and every repository-declared event. Source locations, alias names, comments, and property order are presentation details outside the digest. Historical records retain source file paths without line numbers because their selected source trees differ from the current checkout. Referenced and recursive types participate in structural comparison; opaque values retain explicit coverage limits. +One normalized type model supplies the readable persistence catalog, the complete schema inventory, and transitive per-root digests. Roots identify the logical Session header, the physical JSONL header line, the event envelope, and every repository-declared event. Source locations, alias names, ordinary comments, and property order are presentation details outside the digest. Explicit compatibility annotations carry fingerprinted policy data under the [source-attribution policy](2026-09-17-persistence-schema-review.md). Historical records retain source file paths without line numbers because their selected source trees differ from the current checkout. Referenced and recursive types participate in structural comparison; opaque values retain explicit coverage limits. The dedicated [persistence-change records](../../../../docs/persistence-changes/README.md) bind acknowledgement to the after digest of each affected root. A generated companion stores complete after schemas. The initial record covers all roots; later records name each root's predecessor. A predecessor's after schema supplies the next before schema. Verification rejects ambiguous history and requires current source to match the terminal recorded state without consulting Git history or remote services. -Automatic classification permits optional body additions, required-to-optional body changes, and ordinary event additions within one version. Other structural changes require a version-bump decision that includes an increasing header version in that record. The [format-version procedure](../../../../docs/cookbook/adding-a-session-format-version.md) continues to own adjacent migration work. Every structural difference requires an explicit record, including additions allowed within the same version. +Automatic classification permits optional body additions, required-to-optional body changes, and ordinary event additions within one version. The scoped [source-attribution policy](2026-09-17-persistence-schema-review.md) also permits qualified new producer kinds when both saved schemas opt in. Other structural changes require a version-bump decision that includes an increasing header version in that record. The [format-version procedure](../../../../docs/cookbook/adding-a-session-format-version.md) continues to own adjacent migration work. Every structural difference requires an explicit record, including additions allowed within the same version. The new document kind preserves the compatibility reasoning and evidence for a historical type transition. Agent Notes retain mechanism-level decisions; they do not become a growing inventory of individual acknowledgements. Machine declarations remain identical across the bilingual pair and are parsed once. diff --git a/.agents/notes/implemented/process/2026-09-11-persistence-type-history.zh.md b/.agents/notes/implemented/process/2026-09-11-persistence-type-history.zh.md index fee3bf7f7b..d54c0d845f 100644 --- a/.agents/notes/implemented/process/2026-09-11-persistence-type-history.zh.md +++ b/.agents/notes/implemented/process/2026-09-11-persistence-type-history.zh.md @@ -10,11 +10,11 @@ Status: implemented ## 决策 -一个规范化类型模型提供可读持久化目录、完整 schema 清单和包含传递引用的逐根摘要。根标识逻辑会话头、物理 JSONL 头行、事件封装以及每个仓库内声明的事件。源码位置、别名名称、注释和属性顺序属于摘要之外的展示细节。历史记录保留源码文件路径而不包含行号,因为其选定的源码树与当前工作树不同。被引用类型和递归类型参与结构比较;不透明值保留明确的覆盖限制。 +一个规范化类型模型提供可读持久化目录、完整 schema 清单和包含传递引用的逐根摘要。根标识逻辑会话头、物理 JSONL 头行、事件封装以及每个仓库内声明的事件。源码位置、别名名称、普通注释和属性顺序属于摘要之外的展示细节。历史记录保留源码文件路径而不包含行号,因为其选定的源码树与当前工作树不同。被引用类型和递归类型参与结构比较;不透明值保留明确的覆盖限制。显式兼容性标记依照[消息源归属策略](2026-09-17-persistence-schema-review.zh.md)携带纳入指纹的策略数据。 专用的[持久化变更记录](../../../../docs/persistence-changes/README.zh.md)将确认绑定到每个受影响根的变更后摘要。生成的伴随文件保存完整的变更后 schema。初始记录覆盖所有根;后续记录为每个根指定前驱。前驱的变更后 schema 提供下一次的变更前 schema。验证拒绝有歧义的历史,并要求当前源码匹配最终记录状态,无需查询 Git 历史或远端服务。 -自动分类允许可选事件体新增、事件体属性从必选改为可选,以及普通事件新增保持同一版本。其他结构变更需要升版本决策,并在该记录中包含递增的头部版本。[格式版本流程](../../../../docs/cookbook/adding-a-session-format-version.zh.md)继续负责相邻迁移工作。每个结构差异都需要显式记录,包括允许保持同一版本的新增。 +自动分类允许可选事件体新增、事件体属性从必选改为可选,以及普通事件新增保持同一版本。当双方保存的 schema 均声明支持时,受限的[消息源归属策略](2026-09-17-persistence-schema-review.zh.md)也允许添加符合条件的生产者 kind。其他结构变更需要升版本决策,并在该记录中包含递增的头部版本。[格式版本流程](../../../../docs/cookbook/adding-a-session-format-version.zh.md)继续负责相邻迁移工作。每个结构差异都需要显式记录,包括允许保持同一版本的新增。 新文档类型保留历史类型转换的兼容性说明和证据。Agent Note 保留机制层面的决策,不积累单次确认清单。双语对中的机器声明保持相同,且只解析一次。 diff --git a/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.i18n.yaml b/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.i18n.yaml new file mode 100644 index 0000000000..6e8c8c5809 --- /dev/null +++ b/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.i18n.yaml @@ -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/implemented/process/2026-09-17-persistence-schema-review.md +2026-09-17-persistence-schema-review.md: c4b5f87e0bc37a7f1bba8999317b045f4a367847 +2026-09-17-persistence-schema-review.zh.md: 8707d304eb8e3653a97c73b5876b6977fea3ac83 diff --git a/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.md b/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.md new file mode 100644 index 0000000000..c4b5f87e0b --- /dev/null +++ b/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.md @@ -0,0 +1,35 @@ +# Agent Note: Persistence schema policy and review + +Status: implemented + +English | [中文](2026-09-17-persistence-schema-review.zh.md) + +## Problem + +Structural fingerprints identify changed persistence types, but a fingerprint alone cannot explain a shared change or distinguish a declared reader promise from an assumption about runtime behavior. Names derived from union positions and traversal paths also change when unrelated siblings are added, obscuring the fields a reviewer needs to inspect. + +## Decision + +Inventory format 2 records supported compatibility metadata with the affected property. The metadata names its binding, policy version, literal discriminator, unknown-kind preservation promise, and qualified attribution kinds. Policy-bearing graphs use a separate fingerprint domain; graphs without a bound policy retain format-1 normalization and fingerprints. Inventory versions describe schema tooling, independently of Session format versions. + +The extractor accepts explicit source bindings only at the core-owned source declaration and requires a literal user or developer role at each use. Producer annotations qualify complete wire-kind groups. The classifier permits a qualified new attribution kind only when both saved schemas carry matching promises. Existing kinds remain subject to structural comparison; removals, retroactive qualification, reserved identities, and unrelated breaking changes retain strict classification. Runtime owners establish and test the promised preservation behavior before activating a binding. + +Current inventories retain authored names and source locations as descriptive metadata. Structural digests identify types and provide catalog anchors. Catalogs group source alternatives by literal `kind` and retain every `form` alternative, required field, index signature, and link to its complete definition. Bounded array labels describe their elements instead of inheriting the first event that reached the array. Historical references retain their frozen rendering. + +The read-only `persistence-review` command accepts explicit before and after inventories. It matches unchanged schemas by digest and changed alternatives only when literal discriminators identify them uniquely. Ambiguous alternatives remain separate additions and removals. Shared structural evidence lists every affected root, while a separate section preserves the authoritative classifier diagnostics. The [history mechanism](2026-09-11-persistence-type-history.md) continues to own acknowledgement and version requirements. + +## Alternatives considered + +**Ignore all source changes.** A source can carry replay or validation meaning. Explicit, fingerprinted opt-ins constrain the supported exception and leave other changes visible. + +**Use traversal paths as type identities.** Union positions and first-owner paths describe one walk through a graph. Unrelated insertions and shared references can change them without changing the persisted type. + +**Infer renames from similar fields.** Several alternatives can have the same discriminator or similar structure. Keeping ambiguous additions and removals avoids presenting an unsupported correspondence as fact. + +**Replace compatibility checks with a readable diff.** Review explanations group evidence for a human reader. They cannot relax the classifier or replace the in-tree acknowledgement history. + +## Consequences + +Declared compatibility promises participate in fingerprints and remain available when comparing historical snapshots. The tooling does not infer or enforce runtime preservation; the owner of an activated binding supplies that behavior. Ordinary comments, labels, and source locations remain outside structural identity. + +Complete nested schema graphs remain stored in each inventory. Stable labels and grouped review output reduce presentation noise without changing that storage encoding or rewriting frozen historical records. The [cookbook](../../../../docs/cookbook/reviewing-persistence-type-changes.md) describes the review command and acknowledgement workflow. diff --git a/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.zh.md b/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.zh.md new file mode 100644 index 0000000000..8707d304eb --- /dev/null +++ b/.agents/notes/implemented/process/2026-09-17-persistence-schema-review.zh.md @@ -0,0 +1,35 @@ +# Agent Note: 持久化 schema 策略与审阅 + +Status: implemented + +[English](2026-09-17-persistence-schema-review.md) | 中文 + +## 问题 + +结构指纹能标识变化的持久化类型,但单凭指纹无法解释共享变更,也无法区分已声明的读取承诺与对运行时行为的假设。由联合类型位置和遍历路径生成的名称还会因无关分支新增而变化,遮蔽审阅者需要检查的字段。 + +## 决策 + +Inventory format 2 在受影响属性上记录受支持的兼容性元数据。元数据包含绑定、策略版本、字面量判别字段、未知 kind 保留承诺和符合条件的归属 kind。带策略的图使用独立指纹域;没有绑定策略的图保留 format-1 规范化和指纹。Inventory 版本描述 schema 工具,独立于 Session 格式版本。 + +提取器仅接受核心拥有的 source 声明上的显式绑定,并要求每个使用位置具有 user 或 developer 字面量角色。生产者标记对完整 wire-kind 分组赋予资格。仅当双方保存的 schema 携带匹配承诺时,分类器才允许新增符合条件的归属 kind。已有 kind 仍须进行结构比较;删除、追认资格、保留标识和无关破坏性变更继续采用严格分类。运行时所有者在激活绑定前实现并验证承诺的保留行为。 + +当前 inventory 将人工声明名称和源码位置保留为描述性元数据。结构摘要标识类型并提供目录锚点。目录按字面量 `kind` 对消息源分支分组,并保留每个 `form` 分支、必需字段、索引签名及指向完整定义的链接。有界数组标签描述元素,不继承最先到达该数组的事件名称。历史参考保留冻结的渲染方式。 + +只读 `persistence-review` 命令接受显式的变更前后 inventory。它按摘要匹配未变 schema,仅当字面量判别字段唯一标识分支时才匹配变化分支。有歧义的分支保留为独立新增与删除。共享结构证据列出每个受影响根,独立章节保留权威分类器诊断。[历史机制](2026-09-11-persistence-type-history.zh.md)继续负责确认和版本要求。 + +## 考虑过的替代方案 + +**忽略所有 source 变更。** 消息源可能承载回放或校验语义。显式且纳入指纹的选择加入约束受支持的例外,并使其他变更保持可见。 + +**将遍历路径用作类型身份。** 联合类型位置和首个引用者路径描述的是一次图遍历。无关插入和共享引用可能改变它们,而持久化类型并未改变。 + +**从相似字段推断重命名。** 多个分支可能具有相同判别值或相似结构。保留有歧义的新增与删除,避免将缺乏依据的对应关系呈现为事实。 + +**用可读 diff 取代兼容性检查。** 审阅说明为读者归并证据,不能放宽分类器,也不能取代目录内的确认历史。 + +## 影响 + +声明的兼容性承诺参与指纹,并在比较历史快照时保持可用。工具不会推断或强制运行时保留行为;激活绑定的所有者提供该行为。普通注释、标签和源码位置仍处于结构身份之外。 + +每份 inventory 继续存储完整嵌套 schema 图。稳定标签和分组审阅输出减少展示噪音,不改变存储编码,也不重写冻结历史记录。[实操手册](../../../../docs/cookbook/reviewing-persistence-type-changes.zh.md)介绍审阅命令和确认流程。 diff --git a/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml b/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml index 67a9df2ffb..d917dc6604 100644 --- a/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +++ b/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml @@ -2,5 +2,5 @@ # 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 docs/cookbook/reviewing-persistence-type-changes.md -reviewing-persistence-type-changes.md: 881bc689af656f0c4976e909a49848e38d53c453 -reviewing-persistence-type-changes.zh.md: f1961013886cfab1abdbd7e2cd7e09bcfce2101d +reviewing-persistence-type-changes.md: 28c1600fac95b30d667073889ddbca4892c53ac5 +reviewing-persistence-type-changes.zh.md: 9abd1630a1ae70b5df26c19d1cdb7fda68230c3b diff --git a/docs/cookbook/reviewing-persistence-type-changes.md b/docs/cookbook/reviewing-persistence-type-changes.md index 881bc689af..28c1600fac 100644 --- a/docs/cookbook/reviewing-persistence-type-changes.md +++ b/docs/cookbook/reviewing-persistence-type-changes.md @@ -33,6 +33,14 @@ Use `--silent` when consuming JSON: pnpm otherwise appends lifecycle failure tex Read the reported root, path, change kind, and version requirement. A referenced type can affect several event digests; inspect every affected root. Until the history covers the new schemas, verification fails. A stale generated inventory also fails verification; the recording command refreshes it. If `changes` is empty after reordering fields or union alternatives, run `pnpm run gen-persistence-catalog` and repeat the check. An unchanged digest needs no new acknowledgement even when copied declarations or source locations produce a catalog diff. +To review a PR independently of its acknowledgement history, save the base and head inventories as local JSON files and run: + +```sh +pnpm --silent run persistence-review --before .artifacts/base.schema.json --after docs/persistence-schema.json +``` + +Record the commits supplying those files with the report. Add `--json` for structured output. This read-only comparison groups shared changes with their affected roots and uses actual literal `kind`/`form` values instead of union positions. Ambiguous alternatives remain separate additions and removals. Its compatibility section copies every root's authoritative classifier result; the structural explanation does not replace acknowledgement checks. Current catalog labels and declaration names are descriptive metadata; structural anchors and fingerprints identify types. + ## 1. Record the change diff --git a/docs/cookbook/reviewing-persistence-type-changes.zh.md b/docs/cookbook/reviewing-persistence-type-changes.zh.md index f196101388..9abd1630a1 100644 --- a/docs/cookbook/reviewing-persistence-type-changes.zh.md +++ b/docs/cookbook/reviewing-persistence-type-changes.zh.md @@ -33,6 +33,14 @@ pnpm --silent run verify-persistence-changes --json 阅读报告中的根、路径、变更种类和版本要求。被引用类型可能影响多个事件摘要;检查每个受影响的根。在历史覆盖新 schema 之前,验证会失败。陈旧生成清单也会导致验证失败;记录命令会刷新它。若重排字段或联合类型分支后 `changes` 为空,运行 `pnpm run gen-persistence-catalog` 并重新检查。即使复制的声明或源码位置产生目录 diff,未变的摘要也无需新增确认记录。 +要独立于确认历史评审 PR,先将 base 和 head 的目录保存为本地 JSON 文件,再运行: + +```sh +pnpm --silent run persistence-review --before .artifacts/base.schema.json --after docs/persistence-schema.json +``` + +在报告旁记录这些文件对应的 commit。添加 `--json` 可获取结构化输出。此只读比较将共享变更与受影响的根类型归组,使用实际字面量 `kind`/`form` 值代替联合类型位置。无法唯一匹配的候选项保留为独立的新增与删除。兼容性部分复制每个根类型的权威分类结果;结构说明不替代确认检查。当前目录标签和声明名称是描述元数据;结构锚点和指纹标识类型。 + ## 1. 记录变更 diff --git a/docs/persistence-catalog.i18n.yaml b/docs/persistence-catalog.i18n.yaml index a358d3106c..f735c9b997 100644 --- a/docs/persistence-catalog.i18n.yaml +++ b/docs/persistence-catalog.i18n.yaml @@ -2,5 +2,5 @@ # 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 docs/persistence-catalog.md -persistence-catalog.md: 7938e1e9dad5c728603dcda78997afa8487d5e93 -persistence-catalog.zh.md: 04952406fe691ce8409abc4b313305a7d92f19bd +persistence-catalog.md: ba70d5713012d09708882fe6dbd1fa9356099327 +persistence-catalog.zh.md: aa6cc3fe44753dff0408e5271f1e068e2de92ad1 diff --git a/docs/persistence-catalog.md b/docs/persistence-catalog.md index 7938e1e9da..ba70d57130 100644 --- a/docs/persistence-catalog.md +++ b/docs/persistence-catalog.md @@ -17,67 +17,67 @@ The [format references](persistence-changes/historical-formats/README.md) cover | Root | Kind | SHA-256 | Resolved type | |---|---|---|---| -| `SessionHeader` | header | `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` | [`packages/core/session/src/types.ts#SessionHeader`](#persistence-type-packagescoresessionsrctypestssessionheader) | -| `JsonlHeaderLine` | header | `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` | [`packages/session/session-persistence-jsonl/src/format.ts#HeaderLine`](#persistence-type-packagessessionsession-persistence-jsonlsrcformattsheaderline) | -| `SessionEventEnvelope` | envelope | `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` | [`SessionEventEnvelope`](#persistence-type-sessioneventenvelope) | -| `event:agent-preset/selected` | event | `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` | [`event:agent-preset/selected`](#persistence-type-eventagent-presetselected) | -| `event:agent/inbox/spliced` | event | `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` | [`event:agent/inbox/spliced`](#persistence-type-eventagentinboxspliced) | -| `event:approval/asked` | event | `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` | [`event:approval/asked`](#persistence-type-eventapprovalasked) | -| `event:approval/decided` | event | `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` | [`event:approval/decided`](#persistence-type-eventapprovaldecided) | -| `event:approval/policy` | event | `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` | [`event:approval/policy`](#persistence-type-eventapprovalpolicy) | -| `event:assistant/attempt` | event | `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` | [`event:assistant/attempt`](#persistence-type-eventassistantattempt) | -| `event:assistant/message` | event | `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` | [`event:assistant/message`](#persistence-type-eventassistantmessage) | -| `event:command/done` | event | `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` | [`event:command/done`](#persistence-type-eventcommanddone) | -| `event:command/run` | event | `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` | [`event:command/run`](#persistence-type-eventcommandrun) | -| `event:compaction/end` | event | `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` | [`event:compaction/end`](#persistence-type-eventcompactionend) | -| `event:compaction/prune` | event | `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` | [`event:compaction/prune`](#persistence-type-eventcompactionprune) | -| `event:compaction/start` | event | `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` | [`event:compaction/start`](#persistence-type-eventcompactionstart) | -| `event:compaction/summary` | event | `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` | [`event:compaction/summary`](#persistence-type-eventcompactionsummary) | -| `event:deliverables/presented` | event | `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` | [`event:deliverables/presented`](#persistence-type-eventdeliverablespresented) | -| `event:feedback/message-delete` | event | `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` | [`event:feedback/message-delete`](#persistence-type-eventfeedbackmessage-delete) | -| `event:feedback/message-put` | event | `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` | [`event:feedback/message-put`](#persistence-type-eventfeedbackmessage-put) | -| `event:feedback/record` | event | `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` | [`event:feedback/record`](#persistence-type-eventfeedbackrecord) | -| `event:goal/change` | event | `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` | [`event:goal/change`](#persistence-type-eventgoalchange) | -| `event:hook/invoked` | event | `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` | [`event:hook/invoked`](#persistence-type-eventhookinvoked) | -| `event:hook/result` | event | `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` | [`event:hook/result`](#persistence-type-eventhookresult) | -| `event:image/offload` | event | `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` | [`event:image/offload`](#persistence-type-eventimageoffload) | -| `event:llm/retry` | event | `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` | [`event:llm/retry`](#persistence-type-eventllmretry) | -| `event:llm/retry-started` | event | `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` | [`event:llm/retry-started`](#persistence-type-eventllmretry-started) | -| `event:model/selection` | event | `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` | [`event:model/selection`](#persistence-type-eventmodelselection) | -| `event:permission/preset` | event | `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` | [`event:permission/preset`](#persistence-type-eventpermissionpreset) | -| `event:plan/mode` | event | `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` | [`event:plan/mode`](#persistence-type-eventplanmode) | -| `event:request/context` | event | `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` | [`event:request/context`](#persistence-type-eventrequestcontext) | -| `event:request/header` | event | `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` | [`event:request/header`](#persistence-type-eventrequestheader) | -| `event:sandbox/mode` | event | `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` | [`event:sandbox/mode`](#persistence-type-eventsandboxmode) | -| `event:schedule/change` | event | `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` | [`event:schedule/change`](#persistence-type-eventschedulechange) | -| `event:session-log-deepseek/delivery-accepted` | event | `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` | [`event:session-log-deepseek/delivery-accepted`](#persistence-type-eventsession-log-deepseekdelivery-accepted) | -| `event:session/end-seed` | event | `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` | [`event:session/end-seed`](#persistence-type-eventsessionend-seed) | -| `event:session/title` | event | `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` | [`event:session/title`](#persistence-type-eventsessiontitle) | -| `event:session/title-llm-request` | event | `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` | [`event:session/title-llm-request`](#persistence-type-eventsessiontitle-llm-request) | -| `event:step/end` | event | `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` | [`event:step/end`](#persistence-type-eventstepend) | -| `event:step/start` | event | `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` | [`event:step/start`](#persistence-type-eventstepstart) | -| `event:subagent/catalog` | event | `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` | [`event:subagent/catalog`](#persistence-type-eventsubagentcatalog) | -| `event:subagent/descriptor` | event | `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` | [`event:subagent/descriptor`](#persistence-type-eventsubagentdescriptor) | -| `event:subagent/model-selection-policy` | event | `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` | [`event:subagent/model-selection-policy`](#persistence-type-eventsubagentmodel-selection-policy) | -| `event:system/message` | event | `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` | [`event:system/message`](#persistence-type-eventsystemmessage) | -| `event:team/member` | event | `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` | [`event:team/member`](#persistence-type-eventteammember) | -| `event:team/message/delivered` | event | `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` | [`event:team/message/delivered`](#persistence-type-eventteammessagedelivered) | -| `event:team/message/queued` | event | `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` | [`event:team/message/queued`](#persistence-type-eventteammessagequeued) | -| `event:team/task` | event | `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` | [`event:team/task`](#persistence-type-eventteamtask) | -| `event:todo/write` | event | `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` | [`event:todo/write`](#persistence-type-eventtodowrite) | -| `event:tool-workflow/agent-end` | event | `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` | [`event:tool-workflow/agent-end`](#persistence-type-eventtool-workflowagent-end) | -| `event:tool-workflow/agent-start` | event | `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` | [`event:tool-workflow/agent-start`](#persistence-type-eventtool-workflowagent-start) | -| `event:tool-workflow/run-end` | event | `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` | [`event:tool-workflow/run-end`](#persistence-type-eventtool-workflowrun-end) | -| `event:tool-workflow/run-start` | event | `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` | [`event:tool-workflow/run-start`](#persistence-type-eventtool-workflowrun-start) | -| `event:tool/call` | event | `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` | [`event:tool/call`](#persistence-type-eventtoolcall) | -| `event:tool/ptc-dispatch` | event | `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` | [`event:tool/ptc-dispatch`](#persistence-type-eventtoolptc-dispatch) | -| `event:tool/ptc-dispatch-start` | event | `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` | [`event:tool/ptc-dispatch-start`](#persistence-type-eventtoolptc-dispatch-start) | -| `event:tool/result` | event | `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` | [`event:tool/result`](#persistence-type-eventtoolresult) | -| `event:turn/end` | event | `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` | [`event:turn/end`](#persistence-type-eventturnend) | -| `event:turn/start` | event | `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` | [`event:turn/start`](#persistence-type-eventturnstart) | -| `event:user/message` | event | `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` | [`event:user/message`](#persistence-type-eventusermessage) | -| `event:web/deepseek-search-llm-request` | event | `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` | [`event:web/deepseek-search-llm-request`](#persistence-type-eventwebdeepseek-search-llm-request) | -| `event:workspace/changes` | event | `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` | [`event:workspace/changes`](#persistence-type-eventworkspacechanges) | +| `SessionHeader` | header | `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` | [`SessionHeader`](#persistence-type-sha256-1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445) | +| `JsonlHeaderLine` | header | `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` | [`HeaderLine`](#persistence-type-sha256-18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f) | +| `SessionEventEnvelope` | envelope | `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` | [`union (3 variants)`](#persistence-type-sha256-5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc) | +| `event:agent-preset/selected` | event | `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` | [`{ type: "agent-preset/selected" }`](#persistence-type-sha256-a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b) | +| `event:agent/inbox/spliced` | event | `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` | [`{ type: "agent/inbox/spliced" }`](#persistence-type-sha256-646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f) | +| `event:approval/asked` | event | `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` | [`{ type: "approval/asked" }`](#persistence-type-sha256-3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1) | +| `event:approval/decided` | event | `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` | [`{ type: "approval/decided" }`](#persistence-type-sha256-bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3) | +| `event:approval/policy` | event | `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` | [`{ type: "approval/policy" }`](#persistence-type-sha256-26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78) | +| `event:assistant/attempt` | event | `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` | [`{ type: "assistant/attempt" }`](#persistence-type-sha256-c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e) | +| `event:assistant/message` | event | `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` | [`{ type: "assistant/message" }`](#persistence-type-sha256-1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d) | +| `event:command/done` | event | `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` | [`{ type: "command/done" }`](#persistence-type-sha256-15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff) | +| `event:command/run` | event | `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` | [`{ type: "command/run" }`](#persistence-type-sha256-37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006) | +| `event:compaction/end` | event | `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` | [`{ type: "compaction/end" }`](#persistence-type-sha256-b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d) | +| `event:compaction/prune` | event | `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` | [`{ type: "compaction/prune" }`](#persistence-type-sha256-7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04) | +| `event:compaction/start` | event | `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` | [`{ type: "compaction/start" }`](#persistence-type-sha256-db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965) | +| `event:compaction/summary` | event | `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` | [`{ type: "compaction/summary" }`](#persistence-type-sha256-f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59) | +| `event:deliverables/presented` | event | `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` | [`{ type: "deliverables/presented" }`](#persistence-type-sha256-13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176) | +| `event:feedback/message-delete` | event | `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` | [`{ type: "feedback/message-delete" }`](#persistence-type-sha256-3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796) | +| `event:feedback/message-put` | event | `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` | [`{ type: "feedback/message-put" }`](#persistence-type-sha256-b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf) | +| `event:feedback/record` | event | `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` | [`{ type: "feedback/record" }`](#persistence-type-sha256-b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8) | +| `event:goal/change` | event | `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` | [`{ type: "goal/change" }`](#persistence-type-sha256-763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d) | +| `event:hook/invoked` | event | `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` | [`{ type: "hook/invoked" }`](#persistence-type-sha256-8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0) | +| `event:hook/result` | event | `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` | [`{ type: "hook/result" }`](#persistence-type-sha256-e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4) | +| `event:image/offload` | event | `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` | [`{ type: "image/offload" }`](#persistence-type-sha256-b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e) | +| `event:llm/retry` | event | `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` | [`{ type: "llm/retry" }`](#persistence-type-sha256-525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336) | +| `event:llm/retry-started` | event | `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` | [`{ type: "llm/retry-started" }`](#persistence-type-sha256-48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3) | +| `event:model/selection` | event | `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` | [`{ type: "model/selection" }`](#persistence-type-sha256-35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc) | +| `event:permission/preset` | event | `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` | [`{ type: "permission/preset" }`](#persistence-type-sha256-5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b) | +| `event:plan/mode` | event | `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` | [`{ type: "plan/mode" }`](#persistence-type-sha256-a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f) | +| `event:request/context` | event | `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` | [`{ type: "request/context" }`](#persistence-type-sha256-37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf) | +| `event:request/header` | event | `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` | [`{ type: "request/header" }`](#persistence-type-sha256-8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489) | +| `event:sandbox/mode` | event | `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` | [`{ type: "sandbox/mode" }`](#persistence-type-sha256-516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415) | +| `event:schedule/change` | event | `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` | [`{ type: "schedule/change" }`](#persistence-type-sha256-2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42) | +| `event:session-log-deepseek/delivery-accepted` | event | `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` | [`{ type: "session-log-deepseek/delivery-accepted" }`](#persistence-type-sha256-d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9) | +| `event:session/end-seed` | event | `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` | [`{ type: "session/end-seed" }`](#persistence-type-sha256-5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e) | +| `event:session/title` | event | `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` | [`{ type: "session/title" }`](#persistence-type-sha256-1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5) | +| `event:session/title-llm-request` | event | `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` | [`{ type: "session/title-llm-request" }`](#persistence-type-sha256-e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d) | +| `event:step/end` | event | `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` | [`{ type: "step/end" }`](#persistence-type-sha256-e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05) | +| `event:step/start` | event | `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` | [`{ type: "step/start" }`](#persistence-type-sha256-4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986) | +| `event:subagent/catalog` | event | `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` | [`{ type: "subagent/catalog" }`](#persistence-type-sha256-ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871) | +| `event:subagent/descriptor` | event | `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` | [`{ type: "subagent/descriptor" }`](#persistence-type-sha256-b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5) | +| `event:subagent/model-selection-policy` | event | `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` | [`{ type: "subagent/model-selection-policy" }`](#persistence-type-sha256-a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc) | +| `event:system/message` | event | `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` | [`{ type: "system/message" }`](#persistence-type-sha256-69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae) | +| `event:team/member` | event | `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` | [`{ type: "team/member" }`](#persistence-type-sha256-4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc) | +| `event:team/message/delivered` | event | `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` | [`{ type: "team/message/delivered" }`](#persistence-type-sha256-48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb) | +| `event:team/message/queued` | event | `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` | [`{ type: "team/message/queued" }`](#persistence-type-sha256-443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4) | +| `event:team/task` | event | `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` | [`{ type: "team/task" }`](#persistence-type-sha256-d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a) | +| `event:todo/write` | event | `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` | [`{ type: "todo/write" }`](#persistence-type-sha256-b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26) | +| `event:tool-workflow/agent-end` | event | `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` | [`{ type: "tool-workflow/agent-end" }`](#persistence-type-sha256-babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7) | +| `event:tool-workflow/agent-start` | event | `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` | [`{ type: "tool-workflow/agent-start" }`](#persistence-type-sha256-5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627) | +| `event:tool-workflow/run-end` | event | `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` | [`{ type: "tool-workflow/run-end" }`](#persistence-type-sha256-42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f) | +| `event:tool-workflow/run-start` | event | `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` | [`{ type: "tool-workflow/run-start" }`](#persistence-type-sha256-c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058) | +| `event:tool/call` | event | `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` | [`{ type: "tool/call" }`](#persistence-type-sha256-3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48) | +| `event:tool/ptc-dispatch` | event | `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` | [`{ type: "tool/ptc-dispatch" }`](#persistence-type-sha256-b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c) | +| `event:tool/ptc-dispatch-start` | event | `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` | [`{ type: "tool/ptc-dispatch-start" }`](#persistence-type-sha256-ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93) | +| `event:tool/result` | event | `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` | [`{ type: "tool/result" }`](#persistence-type-sha256-29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2) | +| `event:turn/end` | event | `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` | [`{ type: "turn/end" }`](#persistence-type-sha256-0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce) | +| `event:turn/start` | event | `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` | [`{ type: "turn/start" }`](#persistence-type-sha256-aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8) | +| `event:user/message` | event | `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` | [`{ type: "user/message" }`](#persistence-type-sha256-314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578) | +| `event:web/deepseek-search-llm-request` | event | `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` | [`{ type: "web/deepseek-search-llm-request" }`](#persistence-type-sha256-cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331) | +| `event:workspace/changes` | event | `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` | [`{ type: "workspace/changes" }`](#persistence-type-sha256-e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72) | ## Event envelope @@ -1264,39 +1264,7 @@ Source: [`packages/deliverables/workspace-changes/src/types.ts:106`](../packages Each definition appears once. References preserve sharing and recursion; the digest beside a definition includes its complete reachable structure. Source names and locations identify its declarations but are excluded from its digest. - - -### `0` - -SHA-256: `93d38436347f67c9022aacbc4472e283d722bcab8eb73fc376aaf7b6a6b9fb35` - -`0` - - - -### `1` - -SHA-256: `f88f1b7b6bb733f685f5fb6a8744a5db9199fa53c90463ea1a33bad51153671d` - -`1` - - - -### `2` - -SHA-256: `a0f906856fc06f1c6f2083eb970e5a657a82b1a84c06c095445e5d6d161cda80` - -`2` - - - -### `4` - -SHA-256: `af6e173f7be819bcd0a5c8d77918649c10ce761d8a184ff472f2e01ce64eb2e0` - -`4` - - + ### `"aborted"` @@ -1304,7 +1272,7 @@ SHA-256: `1e0b0b66b6f0c53fc72e52289d06b4708d776f1ca9df4c86a22bff621d403cf0` `"aborted"` - + ### `"active"` @@ -1312,7 +1280,7 @@ SHA-256: `c8e6f48878cc2a2f0dc59682280d81f407943fb503f32c64bf9ff3d9393c3eff` `"active"` - + ### `"after"` @@ -1320,7 +1288,7 @@ SHA-256: `5b232a9b9bfcc0fc6794dab7865bcf203a65785c5de5aa647a51228bff628413` `"after"` - + ### `"agent-instructions"` @@ -1328,7 +1296,7 @@ SHA-256: `fbd2c74b346a1595b376139c587fadd23e4a21acc9c0abce342975b6cfc60986` `"agent-instructions"` - + ### `"agent-message"` @@ -1336,7 +1304,7 @@ SHA-256: `82470020b5bfcb1a843e2aa05602af7d37df99e82d01f015c7c589ba054fd89d` `"agent-message"` - + ### `"agent-preset/selected"` @@ -1344,7 +1312,7 @@ SHA-256: `557e148d30b79ee48645850832b30c717d7c3b64641deb5d6133b8b4e91ee0b8` `"agent-preset/selected"` - + ### `"agent/inbox/spliced"` @@ -1352,7 +1320,7 @@ SHA-256: `829a2fb3be6efd4ba36aef8ed2d381a4c6fb2a0aaf50c823a6f3f8290786b809` `"agent/inbox/spliced"` - + ### `"allowed-once"` @@ -1360,7 +1328,7 @@ SHA-256: `811229eedcec57979dbadca7dbea832a59f8580cff30cb217fca5e2da16314bd` `"allowed-once"` - + ### `"always"` @@ -1368,7 +1336,7 @@ SHA-256: `142c37d302aa22a0a57915b5255939d3ca91c1811ca13fddcf84cf76ea00758a` `"always"` - + ### `"append"` @@ -1376,7 +1344,7 @@ SHA-256: `e438a9d4fb883b3e4a8d9fc8913aa1550ed50eb384bfbf943100a5605b537498` `"append"` - + ### `"approval/asked"` @@ -1384,7 +1352,7 @@ SHA-256: `cd186c309e2bef305705e1d324139240f5e681f4f6a957d6a25b0225f65560df` `"approval/asked"` - + ### `"approval/decided"` @@ -1392,7 +1360,7 @@ SHA-256: `378f90f9f6022a0991928a1eaf7991094ea1920fe89a9248358a1da106e1a970` `"approval/decided"` - + ### `"approval/policy"` @@ -1400,7 +1368,7 @@ SHA-256: `36d6a9a871d949ea4f3edd919d81d66aa69218bebef38899d2a1282c39420a1f` `"approval/policy"` - + ### `"ask"` @@ -1408,7 +1376,7 @@ SHA-256: `9e07693fd7cd9babe0688c22c986e4d519ae1c0e40eeea13b2dc583bed2abc86` `"ask"` - + ### `"assistant"` @@ -1416,7 +1384,7 @@ SHA-256: `95c0e88fcf0bafb2087f912ad9e2369de6ae6530cc0c4c2772c96205b57f7f60` `"assistant"` - + ### `"assistant/attempt"` @@ -1424,7 +1392,7 @@ SHA-256: `e95f957154b2b1b58692af53d4131180b6dd19e2264869f876dbaa959991494e` `"assistant/attempt"` - + ### `"assistant/message"` @@ -1432,7 +1400,7 @@ SHA-256: `6ab45ac76839722df912f3ba50f1c6b41f2d614bde11f1aabfae04117ccdc80d` `"assistant/message"` - + ### `"at"` @@ -1440,7 +1408,7 @@ SHA-256: `17aae616ef020b8b9f011ec398ec935450fb06d3e2a0722c456f63aeaf5ff728` `"at"` - + ### `"block"` @@ -1448,7 +1416,7 @@ SHA-256: `1e346446e183ee76f48d7994c97ecb302bddc682abb60b8a10ea0bb26223a69c` `"block"` - + ### `"block-end"` @@ -1456,7 +1424,7 @@ SHA-256: `eefbea819caeeea91ccb02dfafc16c68dd7f961cf9c1b2be25a2084509cf5c5a` `"block-end"` - + ### `"block-start"` @@ -1464,7 +1432,7 @@ SHA-256: `cbca49bde16b656d5b8fbe4a8a507769f7b594c6287782b809c03814941bc5e3` `"block-start"` - + ### `"blocked"` @@ -1472,15 +1440,7 @@ SHA-256: `254dce209e735f9cb6f6b7aec0354712b1611759ec02af4d35a96f2081e666f6` `"blocked"` - - -### `boolean` - -SHA-256: `aa93010d0e521ad7c42273f58d5c9b8bf1dfc94edf1b805a3971b364a35c1877` - -`boolean` - - + ### `"canceled"` @@ -1488,7 +1448,7 @@ SHA-256: `d4e4d575abeb4b72d616dc65c17ac0eaa943cc135609395044c38d5afcb10e31` `"canceled"` - + ### `"cancelled"` @@ -1496,7 +1456,7 @@ SHA-256: `2142e391b9ccb60d487afcf373ce74db98d952f69e8289eddb352a7e16e996c5` `"cancelled"` - + ### `"catalog"` @@ -1504,7 +1464,7 @@ SHA-256: `aec150797b655c5f15ebb7a501454b0c208fbaccec9ace49d7de2171fc02f47d` `"catalog"` - + ### `"change"` @@ -1512,7 +1472,7 @@ SHA-256: `f789af5ab844827eb5a4f357c0afae1eeed108c6c22d8ca1a56e586b349a7c85` `"change"` - + ### `"chunk"` @@ -1520,7 +1480,7 @@ SHA-256: `14230f9b8b5797bb7e8c621fa636531cfbde2ffba1ef5f1fd058216ff21952a0` `"chunk"` - + ### `"claude-code"` @@ -1528,7 +1488,7 @@ SHA-256: `aff60ef947c18b012644852bdd0d5bfe72065e061dd563787c76c646b4a10f6b` `"claude-code"` - + ### `"clear"` @@ -1536,7 +1496,7 @@ SHA-256: `e7e154d47d5fbc5366330fb4dade1f108c6dfe4335044d21ded14b7bf1dce084` `"clear"` - + ### `"codex"` @@ -1544,7 +1504,7 @@ SHA-256: `15495614ccfa9cbdeefb0ec2abd76406435f4c6ff3dae42acae8e09ef42025c9` `"codex"` - + ### `"command/done"` @@ -1552,7 +1512,7 @@ SHA-256: `8cdd3fdd295cee53035de16a1b23411716f75e9f994fe9510cac5d7fef605c76` `"command/done"` - + ### `"command/run"` @@ -1560,7 +1520,7 @@ SHA-256: `f1996af2602e6f62b5ab179ca5c4af00d8753938b74cc6ef102de09e99e74a7e` `"command/run"` - + ### `"compaction/end"` @@ -1568,7 +1528,7 @@ SHA-256: `1986c2664009c99155e44795676c887fa67f7c55cd2d5e6b648ff763e0ab033a` `"compaction/end"` - + ### `"compaction/prune"` @@ -1576,7 +1536,7 @@ SHA-256: `10e386801903f9d424602c31d3ff837a94aef623c8b391376d8d9e253525fabe` `"compaction/prune"` - + ### `"compaction/start"` @@ -1584,7 +1544,7 @@ SHA-256: `e2d0367e5716bc188435e51718ebff8ce873190625fa93b1c5331102d98758fa` `"compaction/start"` - + ### `"compaction/summary"` @@ -1592,7 +1552,7 @@ SHA-256: `ef4f00923b9edbae15c7ef05320280bf61147ca17146cf59690359bfd5e5da45` `"compaction/summary"` - + ### `"complete"` @@ -1600,7 +1560,7 @@ SHA-256: `d9196086e41e4dd5c2ce87f5c25529c8112a1731d258cf0728747d41a9ee3241` `"complete"` - + ### `"completed"` @@ -1608,7 +1568,7 @@ SHA-256: `1ebc6f9ff3aa9e3a38f8695f49bacdab1f8b7a3832741853ca46f40af56ccd01` `"completed"` - + ### `"continuable"` @@ -1616,7 +1576,7 @@ SHA-256: `e5d3828df1ec3e2a66879de0659e0f4866d9cfffc00825ee731a66f8a0c03d98` `"continuable"` - + ### `"create"` @@ -1624,7 +1584,7 @@ SHA-256: `7624ca28c61ca0eaa4f015140f3cea6e0c16cce2f2960fab5f531203d253903e` `"create"` - + ### `"danger-full-access"` @@ -1632,7 +1592,7 @@ SHA-256: `18fce9540bb20897a66275499faee6b8296c97e9901fa1ff45a191772448ad1a` `"danger-full-access"` - + ### `"delegation"` @@ -1640,7 +1600,7 @@ SHA-256: `76632533f67879dcb346fcae640540dbc89b2472b0bce88c59f7e48fc5c0e668` `"delegation"` - + ### `"delete"` @@ -1648,7 +1608,7 @@ SHA-256: `d0fbb0ca1bbba059830826f33f801da1aced35a2504376d61e020bdfec8d50c0` `"delete"` - + ### `"deleted"` @@ -1656,7 +1616,7 @@ SHA-256: `e7e8f1318170b8284f16ab45a557afd4675c96071c0f2a456636481dab20b427` `"deleted"` - + ### `"deliverables/presented"` @@ -1664,7 +1624,7 @@ SHA-256: `1a2718b00937b236a0d0910ef5dab2f9f8b65e4bde410cc21f15fbbf29f584d3` `"deliverables/presented"` - + ### `"dispatch"` @@ -1672,7 +1632,7 @@ SHA-256: `26c879bdd130e8b8683a6ce588414fad2244783d6573ca399fa0de184a2b0bb1` `"dispatch"` - + ### `"disposed"` @@ -1680,7 +1640,7 @@ SHA-256: `b38f206d59bad891fa58c89f97a0036987b3defe7685acbd318fa55eb85f9751` `"disposed"` - + ### `"edit"` @@ -1688,7 +1648,7 @@ SHA-256: `ad22a5ca5bbaab2e1440779cd3648e85ddfc6f73b5207394eda699555cf31430` `"edit"` - + ### `"error"` @@ -1696,2380 +1656,7 @@ SHA-256: `a2be0f0cb59f0d4a06557d45847d1938aced238baa77a6da416e590b8b958553` `"error"` - - -### `event:agent-preset/selected` - -SHA-256: `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:agent-preset/selected.data`](#persistence-type-eventagent-presetselecteddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"agent-preset/selected"` | - - - -### `event:agent-preset/selected.data` - -SHA-256: `6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406` - -Sources: [`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts) - -| Property | Presence | Type | -|---|---|---| -| `agentPreset` | required | `string` | - - - -### `event:agent/inbox/spliced` - -SHA-256: `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:agent/inbox/spliced.data`](#persistence-type-eventagentinboxspliceddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"agent/inbox/spliced"` | - - - -### `event:agent/inbox/spliced.data` - -SHA-256: `a6a195c1b4a906d953d24ab5864c9f1881d545460e080a51144adfc9cb058cfe` - -Sources: [`packages/core/agent/src/types.ts:87`](../packages/core/agent/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `inserted` | required | [`event:agent/inbox/spliced.data.inserted`](#persistence-type-eventagentinboxspliceddatainserted) | -| `outcome` | optional | `"canceled"` | -| `removedCount` | optional | `number` | -| `start` | required | `number` | -| `target` | required | [`packages/core/agent/src/types.ts#InboxTarget`](#persistence-type-packagescoreagentsrctypestsinboxtarget) | - - - -### `event:agent/inbox/spliced.data.inserted` - -SHA-256: `300341f890f7b9506a1749fff4fa5239d16ea1c63ff6b15851acb03c20f3b48d` - -Array of [`packages/llm/llm/src/message.ts#UserMessage`](#persistence-type-packagesllmllmsrcmessagetsusermessage). - - - -### `event:agent/inbox/spliced.data.inserted[0].content` - -SHA-256: `bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75` - -Array of [`packages/llm/llm/src/types.ts#ContentBlock`](#persistence-type-packagesllmllmsrctypestscontentblock). - - - -### `event:agent/inbox/spliced.data.inserted[0].content[0][2].attachment.originalDimensions` - -SHA-256: `0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef` - -Sources: [`packages/attachment/attachment/src/types.ts:28`](../packages/attachment/attachment/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `height` | required | `number` | -| `width` | required | `number` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[0]` - -SHA-256: `ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05` - -Sources: [`packages/core/session/src/types.ts:189`](../packages/core/session/src/types.ts) · [`packages/interaction/commands/src/types.ts:75`](../packages/interaction/commands/src/types.ts) · [`packages/interaction/commands/src/types.ts:79`](../packages/interaction/commands/src/types.ts) · [`packages/llm/llm/src/message.ts:103`](../packages/llm/llm/src/message.ts) · [`packages/session/session-title/src/types.ts:35`](../packages/session/session-title/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"user"` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[1]` - -SHA-256: `0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8` - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[11]` - -SHA-256: `6a4f72e2e179e17b922f2a9392c0e1c8f8c707f32494372454850a3eb184a6e7` - -Sources: [`packages/api/session-controller/src/types.ts:385`](../packages/api/session-controller/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `clientTimeZone` | optional | `string` | -| `kind` | required | `"user"` | -| `rpcId` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[15].references` - -SHA-256: `df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18` - -Array of [`event:agent/inbox/spliced.data.inserted[0].source[15].references[0]`](#persistence-type-eventagentinboxspliceddatainserted0source15references0). - - - -### `event:agent/inbox/spliced.data.inserted[0].source[15].references[0]` - -SHA-256: `4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4` - -Sources: [`packages/context/session-reference/src/types.ts:18`](../packages/context/session-reference/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `capturedFormatVersion` | optional | `number` | -| `capturedThroughSeq` | required | [`event:compaction/end.data.turn`](#persistence-type-eventcompactionenddataturn) | -| `compacted` | required | `boolean` | -| `inputIndex` | required | `number` | -| `label` | required | `string` | -| `omittedBytes` | required | `number` | -| `omittedMessages` | required | `number` | -| `originalMessages` | required | `number` | -| `retainedMessages` | required | `number` | -| `sessionId` | required | `string` | -| `truncated` | required | `boolean` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[16].changes` - -SHA-256: `2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee` - -Array of [`packages/context/agent-instructions/src/render.ts#AgentInstructionChange`](#persistence-type-packagescontextagent-instructionssrcrendertsagentinstructionchange). - - - -### `event:agent/inbox/spliced.data.inserted[0].source[16].changes[0].action` - -SHA-256: `904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd` - -One of: - -- `"remove"` -- `"replace"` -- `"set"` - - - -### `event:agent/inbox/spliced.data.inserted[0].source[17].entries` - -SHA-256: `aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba` - -Array of [`event:agent/inbox/spliced.data.inserted[0].source[17].entries[0]`](#persistence-type-eventagentinboxspliceddatainserted0source17entries0). - - - -### `event:agent/inbox/spliced.data.inserted[0].source[17].entries[0]` - -SHA-256: `83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693` - -Sources: [`packages/skill/tool-skill/src/index.ts:40`](../packages/skill/tool-skill/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| `description` | required | `string` | -| `name` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[19]` - -SHA-256: `9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94` - -Sources: [`packages/webhook/webhook/src/types.ts:74`](../packages/webhook/webhook/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `deliveryId` | required | `string` | -| `form` | required | `"notice"` | -| `kind` | required | `"webhook"` | -| `provider` | required | `string` | -| `ruleId` | required | `string` | -| `source` | required | `string` | -| `summary` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[2]` - -SHA-256: `dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412` - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"instructions"` | -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[3]` - -SHA-256: `2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc` - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"catalog"` | -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[4]` - -SHA-256: `e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f` - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"snapshot"` | -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | -| `sections` | required | [`event:agent/inbox/spliced.data.inserted[0].source[4].sections`](#persistence-type-eventagentinboxspliceddatainserted0source4sections) | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[4].sections` - -SHA-256: `c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262` - -Array of [`packages/llm/llm/src/message.ts#ContextSnapshotSection`](#persistence-type-packagesllmllmsrcmessagetscontextsnapshotsection). - - - -### `event:agent/inbox/spliced.data.inserted[0].source[5]` - -SHA-256: `b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43` - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"notice"` | -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | -| `summary` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[6]` - -SHA-256: `2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c` - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"relay"` | -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[7]` - -SHA-256: `85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01` - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"recall"` | -| `kind` | required | `"plugin"` | -| `plugin` | required | `string` | - - - -### `event:approval/asked` - -SHA-256: `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:approval/asked.data`](#persistence-type-eventapprovalaskeddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"approval/asked"` | - - - -### `event:approval/asked.data` - -SHA-256: `45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448` - -Sources: [`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `callId` | optional | `string` | -| `id` | required | `string` | -| `reason` | optional | `string` | -| `toolName` | required | `string` | - - - -### `event:approval/decided` - -SHA-256: `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:approval/decided.data`](#persistence-type-eventapprovaldecideddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"approval/decided"` | - - - -### `event:approval/decided.data` - -SHA-256: `93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9` - -Sources: [`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `id` | required | `string` | -| `outcome` | required | [`packages/interaction/user-approval/src/types.ts#ApprovalOutcome`](#persistence-type-packagesinteractionuser-approvalsrctypestsapprovaloutcome) | - - - -### `event:approval/policy` - -SHA-256: `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:approval/policy.data`](#persistence-type-eventapprovalpolicydata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"approval/policy"` | - - - -### `event:approval/policy.data` - -SHA-256: `11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912` - -Sources: [`packages/interaction/user-approval/src/index.ts:33`](../packages/interaction/user-approval/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| `policy` | required | [`packages/interaction/user-approval/src/index.ts#ApprovalPolicy`](#persistence-type-packagesinteractionuser-approvalsrcindextsapprovalpolicy) | -| `source` | optional | `"delegation"` | - - - -### `event:assistant/attempt` - -SHA-256: `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:assistant/attempt.data`](#persistence-type-eventassistantattemptdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"assistant/attempt"` | - - - -### `event:assistant/attempt.data` - -SHA-256: `0c6412d3ba5e41adfaa6929c7d4093f2d52d8598c03f35844fc0d55e3070a3b1` - -Sources: [`packages/core/session/src/types.ts:342`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `step` | required | `number` | -| `stream` | required | [`event:assistant/attempt.data.stream`](#persistence-type-eventassistantattemptdatastream) | -| `turn` | required | `number` | - - - -### `event:assistant/attempt.data.stream` - -SHA-256: `26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346` - -Array of [`packages/llm/llm/src/assistant-stream.ts#AssistantStreamRecord`](#persistence-type-packagesllmllmsrcassistant-streamtsassistantstreamrecord). - - - -### `event:assistant/attempt.data.stream[0][0]` - -SHA-256: `e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33` - -Sources: [`packages/llm/llm/src/assistant-stream.ts:21`](../packages/llm/llm/src/assistant-stream.ts) - -| Property | Presence | Type | -|---|---|---| -| `dt` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `index` | required | `number` | -| `texts` | required | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `time0` | required | `number` | -| `type` | required | `"text-chunks"` | - - - -### `event:assistant/attempt.data.stream[0][0].texts` - -SHA-256: `93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2` - -Array of `string`. - - - -### `event:assistant/attempt.data.stream[0][1]` - -SHA-256: `71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd` - -Sources: [`packages/llm/llm/src/assistant-stream.ts:28`](../packages/llm/llm/src/assistant-stream.ts) - -| Property | Presence | Type | -|---|---|---| -| `dt` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `index` | required | `number` | -| `texts` | required | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `time0` | required | `number` | -| `type` | required | `"reasoning-chunks"` | - - - -### `event:assistant/attempt.data.stream[0][2]` - -SHA-256: `3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6` - -Sources: [`packages/llm/llm/src/assistant-stream.ts:35`](../packages/llm/llm/src/assistant-stream.ts) - -| Property | Presence | Type | -|---|---|---| -| `args` | required | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `dt` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `id` | required | `string` | -| `index` | required | `number` | -| `name` | optional | `string` | -| `time0` | required | `number` | -| `type` | required | `"tool-call-chunks"` | - - - -### `event:assistant/attempt.data.stream[0][3]` - -SHA-256: `c93b6f51b399607349b4bcc66b58e848a44250ffc1e2537207bd092dfff94192` - -Sources: [`packages/llm/llm/src/assistant-stream.ts:44`](../packages/llm/llm/src/assistant-stream.ts) - -| Property | Presence | Type | -|---|---|---| -| `chunk` | required | [`packages/llm/llm/src/types.ts#StreamChunk`](#persistence-type-packagesllmllmsrctypestsstreamchunk) | -| `time` | required | `number` | -| `type` | required | `"chunk"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[0]` - -SHA-256: `647cb2e3aeb58e27d1d4d60011f208bb66dce257e8654193c533b47c4c22c253` - -Sources: [`packages/llm/llm/src/types.ts:427`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `blockType` | required | [`packages/llm/llm/src/types.ts#ContentBlockType`](#persistence-type-packagesllmllmsrctypestscontentblocktype) | -| `index` | required | `number` | -| `type` | required | `"block-start"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[1]` - -SHA-256: `95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65` - -Sources: [`packages/llm/llm/src/types.ts:428`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `index` | required | `number` | -| `text` | required | `string` | -| `type` | required | `"text-delta"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[2]` - -SHA-256: `2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095` - -Sources: [`packages/llm/llm/src/types.ts:429`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `index` | required | `number` | -| `text` | required | `string` | -| `type` | required | `"reasoning-delta"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[3]` - -SHA-256: `88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a` - -Sources: [`packages/llm/llm/src/types.ts:430`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `argumentsDelta` | required | `string` | -| `id` | required | `string` | -| `index` | required | `number` | -| `name` | optional | `string` | -| `type` | required | `"tool-call-delta"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[4]` - -SHA-256: `90c811b8c2668898515e69a24e82caffeb08517f9c7aa193867ff0380f3b535d` - -Sources: [`packages/llm/llm/src/types.ts:431`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `block` | required | [`packages/llm/llm/src/types.ts#ContentBlock`](#persistence-type-packagesllmllmsrctypestscontentblock) | -| `index` | required | `number` | -| `type` | required | `"block-end"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[5]` - -SHA-256: `f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515` - -Sources: [`packages/llm/llm/src/types.ts:432`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `type` | required | `"usage"` | -| `usage` | required | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6]` - -SHA-256: `a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1` - -Sources: [`packages/llm/llm/src/types.ts:433`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `reason` | required | [`packages/llm/llm/src/types.ts#FinishReason`](#persistence-type-packagesllmllmsrctypestsfinishreason) | -| `replayState` | optional | [`packages/llm/llm/src/types.ts#ReplayEnvelope`](#persistence-type-packagesllmllmsrctypestsreplayenvelope) | -| `type` | required | `"finish"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[0]` - -SHA-256: `8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0` - -Sources: [`packages/llm/llm/src/types.ts:147`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `failure` | required | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `kind` | required | `"aborted"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[1]` - -SHA-256: `693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057` - -Sources: [`packages/llm/llm/src/types.ts:148`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `failure` | required | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `kind` | required | `"error"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]` - -SHA-256: `ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7` - -Sources: [`packages/core/session/src/types.ts:213`](../packages/core/session/src/types.ts) · [`packages/llm/llm/src/types.ts:146`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"max-tokens"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[3]` - -SHA-256: `1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f` - -Sources: [`packages/llm/llm/src/types.ts:144`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"stop"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[4]` - -SHA-256: `287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a` - -Sources: [`packages/llm/llm/src/types.ts:145`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"tool-calls"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].replayState.blocks` - -SHA-256: `b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7` - -Array of `unknown` (opaque). - - - -### `event:assistant/message` - -SHA-256: `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:assistant/message.data`](#persistence-type-eventassistantmessagedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `surfaceOp` | required | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | required | `number` | -| `type` | required | `"assistant/message"` | - - - -### `event:assistant/message.data` - -SHA-256: `77b8491f946edfc8cc77ebae3ba49183759da31ba2dfa83d4c9e9e618c4b91d2` - -Sources: [`packages/core/session/src/types.ts:328`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `interrupted` | optional | `true` | -| `message` | required | [`packages/llm/llm/src/message.ts#AssistantMessage`](#persistence-type-packagesllmllmsrcmessagetsassistantmessage) | -| `step` | required | `number` | -| `stream` | required | [`event:assistant/attempt.data.stream`](#persistence-type-eventassistantattemptdatastream) | -| `turn` | required | `number` | -| `usage` | optional | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:command/done` - -SHA-256: `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:command/done.data`](#persistence-type-eventcommanddonedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"command/done"` | - - - -### `event:command/done.data` - -SHA-256: `5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51` - -Sources: [`packages/interaction/commands/src/types.ts:112`](../packages/interaction/commands/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `commandId` | required | `string` | -| `kind` | required | [`event:command/done.data.kind`](#persistence-type-eventcommanddonedatakind) | -| `sourceEventSeq` | optional | `number` | -| `text` | optional | `string` | - - - -### `event:command/done.data.kind` - -SHA-256: `1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92` - -One of: - -- `"error"` -- `"success"` - - - -### `event:command/run` - -SHA-256: `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:command/run.data`](#persistence-type-eventcommandrundata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"command/run"` | - - - -### `event:command/run.data` - -SHA-256: `a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86` - -Sources: [`packages/interaction/commands/src/types.ts:105`](../packages/interaction/commands/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `args` | optional | `string` | -| `commandId` | required | `string` | -| `name` | required | `string` | -| `source` | required | [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) | - - - -### `event:compaction/end` - -SHA-256: `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:compaction/end.data`](#persistence-type-eventcompactionenddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"compaction/end"` | - - - -### `event:compaction/end.data` - -SHA-256: `ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2` - -Sources: [`packages/compaction/compaction/src/types.ts:72`](../packages/compaction/compaction/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `compactionId` | required | `string` | -| `error` | optional | `string` | -| `sourceCommandId` | optional | `string` | -| `turn` | required | [`event:compaction/end.data.turn`](#persistence-type-eventcompactionenddataturn) | - - - -### `event:compaction/end.data.turn` - -SHA-256: `3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f` - -Sources: [`packages/core/session/src/types.ts:64`](../packages/core/session/src/types.ts) - -One of: - -- `null` -- `number` - - - -### `event:compaction/prune` - -SHA-256: `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:compaction/prune.data`](#persistence-type-eventcompactionprunedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"compaction/prune"` | - - - -### `event:compaction/prune.data` - -SHA-256: `5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438` - -Sources: [`packages/compaction/compaction/src/types.ts:82`](../packages/compaction/compaction/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `shadowedRange` | required | [`event:compaction/prune.data.shadowedRange`](#persistence-type-eventcompactionprunedatashadowedrange) | -| `shadowedSeqs` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `shadowedTokenCount` | required | `number` | - - - -### `event:compaction/prune.data.shadowedRange` - -SHA-256: `9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2` - -Sources: [`packages/compaction/compaction/src/types.ts:38`](../packages/compaction/compaction/src/types.ts) · [`packages/compaction/compaction/src/types.ts:84`](../packages/compaction/compaction/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `end` | required | `number` | -| `start` | required | `number` | - - - -### `event:compaction/start` - -SHA-256: `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:compaction/start.data`](#persistence-type-eventcompactionstartdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"compaction/start"` | - - - -### `event:compaction/start.data` - -SHA-256: `3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f` - -Sources: [`packages/compaction/compaction/src/types.ts:24`](../packages/compaction/compaction/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `compactionId` | required | `string` | -| `sourceCommandId` | optional | `string` | -| `turn` | required | [`event:compaction/end.data.turn`](#persistence-type-eventcompactionenddataturn) | - - - -### `event:compaction/summary` - -SHA-256: `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:compaction/summary.data`](#persistence-type-eventcompactionsummarydata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"compaction/summary"` | - - - -### `event:compaction/summary.data` - -SHA-256: `feb329074f0206ecc06d8a1aa0a0b3e2f47fd27524ba020fbc849ba63e938896` - -One of: - -- [`event:compaction/summary.data[0]`](#persistence-type-eventcompactionsummarydata0) -- [`event:compaction/summary.data[1]`](#persistence-type-eventcompactionsummarydata1) - - - -### `event:compaction/summary.data[0]` - -SHA-256: `9ff2ad8dddb836f75e8f6197fff2371323dfc396c3c6fb667e6e0b42fda79a5c` - -| Property | Presence | Type | -|---|---|---| -| `compactionId` | required | `string` | -| `llmStreamCall` | required | `true` | -| `maxTokens` | optional | `number` | -| `model` | required | `string` | -| `provider` | required | `string` | -| `rawOutput` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `shadowedRange` | required | [`event:compaction/prune.data.shadowedRange`](#persistence-type-eventcompactionprunedatashadowedrange) | -| `shadowedSeqs` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `shadowedTokenCount` | required | `number` | -| `sourceCommandId` | optional | `string` | -| `summary` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `usage` | optional | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:compaction/summary.data[1]` - -SHA-256: `3aa261c8516b5c955ed12080e6257a56cbe513f6c9f0ac9274c12e96c196ebca` - -| Property | Presence | Type | -|---|---|---| -| `compactionId` | required | `string` | -| `maxTokens` | optional | `number` | -| `model` | required | `string` | -| `provider` | required | `string` | -| `rawOutput` | optional | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `shadowedRange` | required | [`event:compaction/prune.data.shadowedRange`](#persistence-type-eventcompactionprunedatashadowedrange) | -| `shadowedSeqs` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `shadowedTokenCount` | required | `number` | -| `sourceCommandId` | optional | `string` | -| `summary` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `usage` | optional | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:deliverables/presented` - -SHA-256: `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:deliverables/presented.data`](#persistence-type-eventdeliverablespresenteddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"deliverables/presented"` | - - - -### `event:deliverables/presented.data` - -SHA-256: `1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c` - -Sources: [`packages/deliverables/tool-present/src/types.ts:15`](../packages/deliverables/tool-present/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `callId` | required | `string` | -| `files` | required | [`event:deliverables/presented.data.files`](#persistence-type-eventdeliverablespresenteddatafiles) | -| `turn` | required | `number` | - - - -### `event:deliverables/presented.data.files` - -SHA-256: `1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345` - -Array of [`packages/deliverables/tool-present/src/types.ts#PresentedFile`](#persistence-type-packagesdeliverablestool-presentsrctypestspresentedfile). - - - -### `event:feedback/message-delete` - -SHA-256: `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackDelete`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackdelete) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"feedback/message-delete"` | - - - -### `event:feedback/message-put` - -SHA-256: `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackPut`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackput) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"feedback/message-put"` | - - - -### `event:feedback/message-put.data.item.category` - -SHA-256: `3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd` - -One of: - -- `"instruction-following"` -- `"other"` -- `"product-interaction"` -- `"resource-cost"` -- `"security-privacy-permission"` -- `"service-stability"` -- `"task-result"` - - - -### `event:feedback/record` - -SHA-256: `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/feedback/command-feedback/src/types.ts#FeedbackRecord`](#persistence-type-packagesfeedbackcommand-feedbacksrctypestsfeedbackrecord) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"feedback/record"` | - - - -### `event:goal/change` - -SHA-256: `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/goal/goal/src/domain.ts#GoalChangeMeta`](#persistence-type-packagesgoalgoalsrcdomaintsgoalchangemeta) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"goal/change"` | - - - -### `event:goal/change.data[0].operation` - -SHA-256: `62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379` - -One of: - -- `"block"` -- `"complete"` -- `"create"` -- `"edit"` -- `"pause"` -- `"resume"` - - - -### `event:hook/invoked` - -SHA-256: `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:hook/invoked.data`](#persistence-type-eventhookinvokeddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"hook/invoked"` | - - - -### `event:hook/invoked.data` - -SHA-256: `119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25` - -Sources: [`packages/hooks/hook-protocol/src/types.ts:19`](../packages/hooks/hook-protocol/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `dialect` | required | [`packages/hooks/hook-protocol/src/types.ts#HookDialect`](#persistence-type-packageshookshook-protocolsrctypestshookdialect) | -| `handlerId` | required | `string` | -| `matcher` | optional | `string` | -| `point` | required | `string` | -| `turn` | required | `number` | - - - -### `event:hook/result` - -SHA-256: `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:hook/result.data`](#persistence-type-eventhookresultdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"hook/result"` | - - - -### `event:hook/result.data` - -SHA-256: `8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141` - -Sources: [`packages/hooks/hook-protocol/src/types.ts:31`](../packages/hooks/hook-protocol/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `decision` | required | `string` | -| `durationMs` | required | `number` | -| `exitCode` | optional | `number` | -| `handlerId` | required | `string` | -| `point` | required | `string` | -| `stderrSummary` | optional | `string` | -| `turn` | required | `number` | - - - -### `event:image/offload` - -SHA-256: `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:image/offload.data`](#persistence-type-eventimageoffloaddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"image/offload"` | - - - -### `event:image/offload.data` - -SHA-256: `477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028` - -Sources: [`packages/compaction/compaction-image-offload/src/projection.ts:25`](../packages/compaction/compaction-image-offload/src/projection.ts) - -| Property | Presence | Type | -|---|---|---| -| `targets` | required | [`event:image/offload.data.targets`](#persistence-type-eventimageoffloaddatatargets) | - - - -### `event:image/offload.data.targets` - -SHA-256: `9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb` - -Array of [`packages/compaction/compaction-image-offload/src/projection.ts#ImageOffloadTarget`](#persistence-type-packagescompactioncompaction-image-offloadsrcprojectiontsimageoffloadtarget). - - - -### `event:llm/retry` - -SHA-256: `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/llm/llm-retry/src/types.ts#LlmRetryEventData`](#persistence-type-packagesllmllm-retrysrctypestsllmretryeventdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"llm/retry"` | - - - -### `event:llm/retry-started` - -SHA-256: `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/llm/llm-retry/src/types.ts#LlmRetryStartedEventData`](#persistence-type-packagesllmllm-retrysrctypestsllmretrystartedeventdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"llm/retry-started"` | - - - -### `event:llm/retry.data[0]` - -SHA-256: `cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced` - -Sources: [`packages/llm/llm-retry/src/types.ts:17`](../packages/llm/llm-retry/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `delayMs` | required | `number` | -| `failure` | required | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `maxRetries` | required | `number` | -| `mode` | required | `"normal"` | -| `policyKey` | required | `string` | -| `provider` | required | `string` | -| `retry` | required | `number` | -| `retryId` | required | `string` | -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `event:llm/retry.data[1]` - -SHA-256: `374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b` - -Sources: [`packages/llm/llm-retry/src/types.ts:30`](../packages/llm/llm-retry/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `delayMs` | required | `number` | -| `failure` | required | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `mode` | required | `"always"` | -| `policyKey` | required | `string` | -| `provider` | required | `string` | -| `retry` | required | `number` | -| `retryId` | required | `string` | -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `event:model/selection` - -SHA-256: `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/api/session-controller/src/types.ts#ModelSelection`](#persistence-type-packagesapisession-controllersrctypestsmodelselection) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"model/selection"` | - - - -### `event:permission/preset` - -SHA-256: `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:permission/preset.data`](#persistence-type-eventpermissionpresetdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"permission/preset"` | - - - -### `event:permission/preset.data` - -SHA-256: `8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad` - -Sources: [`packages/interaction/permission-presets/src/index.ts:57`](../packages/interaction/permission-presets/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| `preset` | required | `string` | - - - -### `event:plan/mode` - -SHA-256: `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:plan/mode.data`](#persistence-type-eventplanmodedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"plan/mode"` | - - - -### `event:plan/mode.data` - -SHA-256: `20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5` - -Sources: [`packages/plan/plan-mode/src/index.ts:47`](../packages/plan/plan-mode/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| `active` | required | `boolean` | - - - -### `event:request/context` - -SHA-256: `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/core/session/src/types.ts#RequestContext`](#persistence-type-packagescoresessionsrctypestsrequestcontext) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"request/context"` | - - - -### `event:request/header` - -SHA-256: `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:request/header.data`](#persistence-type-eventrequestheaderdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"request/header"` | - - - -### `event:request/header.data` - -SHA-256: `2f0aefb72ab453c4bf21a6687f436775d359dc6f8f10410fd4c0615b20bd9d76` - -Sources: [`packages/core/session/src/types.ts:377`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `header` | required | [`packages/core/session/src/types.ts#EpochHeader`](#persistence-type-packagescoresessionsrctypestsepochheader) | -| `reason` | required | [`packages/core/session/src/types.ts#RequestHeaderReason`](#persistence-type-packagescoresessionsrctypestsrequestheaderreason) | -| `startsSeries` | optional | `true` | - - - -### `event:request/header.data.header.tools` - -SHA-256: `6d63f25a28b70801937a46b1058be5f52d4efbaf3516141470463ae469b59c23` - -Array of [`packages/llm/llm/src/types.ts#ToolSchema`](#persistence-type-packagesllmllmsrctypeststoolschema). - - - -### `event:request/header.data.header.tools[0].parameters` - -SHA-256: `0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f` - -| Property | Presence | Type | -|---|---|---| -| [`string`] | index signature | `unknown` (opaque) | - - - -### `event:sandbox/mode` - -SHA-256: `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:sandbox/mode.data`](#persistence-type-eventsandboxmodedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"sandbox/mode"` | - - - -### `event:sandbox/mode.data` - -SHA-256: `9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e` - -Sources: [`packages/sandbox/sandbox-policy/src/session-mode.ts:33`](../packages/sandbox/sandbox-policy/src/session-mode.ts) - -| Property | Presence | Type | -|---|---|---| -| `mode` | required | [`packages/sandbox/sandbox/src/index.ts#SandboxMode`](#persistence-type-packagessandboxsandboxsrcindextssandboxmode) | -| `source` | optional | `"delegation"` | - - - -### `event:schedule/change` - -SHA-256: `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/schedule/schedule/src/types.ts#ScheduleChange`](#persistence-type-packagesscheduleschedulesrctypestsschedulechange) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"schedule/change"` | - - - -### `event:session-log-deepseek/delivery-accepted` - -SHA-256: `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:session-log-deepseek/delivery-accepted.data`](#persistence-type-eventsession-log-deepseekdelivery-accepteddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"session-log-deepseek/delivery-accepted"` | - - - -### `event:session-log-deepseek/delivery-accepted.data` - -SHA-256: `8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52` - -Sources: [`packages/session/session-log-deepseek/src/types.ts:81`](../packages/session/session-log-deepseek/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `sessionFormatVersion` | optional | `number` | -| `sessionId` | required | `string` | -| `throughSeq` | required | `number` | - - - -### `event:session/end-seed` - -SHA-256: `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:session/end-seed.data`](#persistence-type-eventsessionend-seeddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"session/end-seed"` | - - - -### `event:session/end-seed.data` - -SHA-256: `17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3` - -Sources: [`packages/core/session/src/types.ts:414`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `inherited` | optional | `true` | - - - -### `event:session/title` - -SHA-256: `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/session/session-title/src/types.ts#SessionTitleEventData`](#persistence-type-packagessessionsession-titlesrctypestssessiontitleeventdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"session/title"` | - - - -### `event:session/title-llm-request` - -SHA-256: `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/session/session-title-llm/src/index.ts#SessionTitleLlmRequestEventData`](#persistence-type-packagessessionsession-title-llmsrcindextssessiontitlellmrequesteventdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"session/title-llm-request"` | - - - -### `event:session/title-llm-request.data.messages` - -SHA-256: `478738df7e7d2b103b09fb937817a9302c81076809f2b341169e00a9419c5665` - -Array of [`packages/llm/llm/src/message.ts#Message`](#persistence-type-packagesllmllmsrcmessagetsmessage). - - - -### `event:session/title-llm-request.data.messages[0].role` - -SHA-256: `acd36e1717d2b4ef9e98a8e6fac17ca1203f3f448e5bca51677f129a8f4999e2` - -One of: - -- `"assistant"` -- `"system"` -- `"user"` - - - -### `event:session/title.data.source[0]` - -SHA-256: `1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597` - -Sources: [`packages/session/session-title/src/types.ts:29`](../packages/session/session-title/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"fallback"` | - - - -### `event:session/title.data.source[1]` - -SHA-256: `b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812` - -Sources: [`packages/session/session-title/src/types.ts:30`](../packages/session/session-title/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"provider"` | -| `model` | optional | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | -| `provider` | required | `string` | - - - -### `event:step/end` - -SHA-256: `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:step/end.data`](#persistence-type-eventstependdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"step/end"` | - - - -### `event:step/end.data` - -SHA-256: `ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545` - -Sources: [`packages/core/session/src/types.ts:294`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:296`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `event:step/start` - -SHA-256: `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:step/end.data`](#persistence-type-eventstependdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"step/start"` | - - - -### `event:subagent/catalog` - -SHA-256: `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/subagent/subagent/src/catalog.ts#SubagentCatalogEvent`](#persistence-type-packagessubagentsubagentsrccatalogtssubagentcatalogevent) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"subagent/catalog"` | - - - -### `event:subagent/catalog.data[0]` - -SHA-256: `5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694` - -| Property | Presence | Type | -|---|---|---| -| `childCreatedAt` | required | `number` | -| `childId` | required | `string` | -| `label` | optional | `string` | -| `mode` | required | `"one-shot"` | -| `version` | required | `0` | - - - -### `event:subagent/catalog.data[1]` - -SHA-256: `0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd` - -| Property | Presence | Type | -|---|---|---| -| `childCreatedAt` | required | `number` | -| `childId` | required | `string` | -| `label` | required | `string` | -| `mode` | required | `"continuable"` | -| `version` | required | `0` | - - - -### `event:subagent/descriptor` - -SHA-256: `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/subagent/subagent/src/descriptor.ts#SubagentDescriptorData`](#persistence-type-packagessubagentsubagentsrcdescriptortssubagentdescriptordata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"subagent/descriptor"` | - - - -### `event:subagent/model-selection-policy` - -SHA-256: `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:subagent/model-selection-policy.data`](#persistence-type-eventsubagentmodel-selection-policydata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"subagent/model-selection-policy"` | - - - -### `event:subagent/model-selection-policy.data` - -SHA-256: `0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f` - -Sources: [`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../packages/subagent/tool-subagent/src/model-selection-state.ts) - -| Property | Presence | Type | -|---|---|---| -| `allowedModels` | required | [`event:subagent/model-selection-policy.data.allowedModels`](#persistence-type-eventsubagentmodel-selection-policydataallowedmodels) | - - - -### `event:subagent/model-selection-policy.data.allowedModels` - -SHA-256: `ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec` - -Array of [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity). - - - -### `event:system/message` - -SHA-256: `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:system/message.data`](#persistence-type-eventsystemmessagedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `sourceEventSeqs` | optional | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | required | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | required | `number` | -| `type` | required | `"system/message"` | - - - -### `event:system/message.data` - -SHA-256: `2074f40221b76c75fd314246db558965dc3477dfb440bcc952b1eedc9778e366` - -Sources: [`packages/core/session/src/types.ts:317`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `message` | required | [`packages/llm/llm/src/message.ts#SystemMessage`](#persistence-type-packagesllmllmsrcmessagetssystemmessage) | -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `event:system/message.data.message.source` - -SHA-256: `23cf7e0cf3fec1283b60fa15713506169bc9c079a08e124d1cb9733baca80b40` - -One of: - -- [`event:agent/inbox/spliced.data.inserted[0].source[4]`](#persistence-type-eventagentinboxspliceddatainserted0source4) -- [`event:agent/inbox/spliced.data.inserted[0].source[5]`](#persistence-type-eventagentinboxspliceddatainserted0source5) -- [`event:agent/inbox/spliced.data.inserted[0].source[3]`](#persistence-type-eventagentinboxspliceddatainserted0source3) -- [`event:agent/inbox/spliced.data.inserted[0].source[2]`](#persistence-type-eventagentinboxspliceddatainserted0source2) -- [`event:agent/inbox/spliced.data.inserted[0].source[7]`](#persistence-type-eventagentinboxspliceddatainserted0source7) -- [`event:agent/inbox/spliced.data.inserted[0].source[6]`](#persistence-type-eventagentinboxspliceddatainserted0source6) -- [`event:agent/inbox/spliced.data.inserted[0].source[1]`](#persistence-type-eventagentinboxspliceddatainserted0source1) - - - -### `event:team/member` - -SHA-256: `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:team/member.data`](#persistence-type-eventteammemberdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"team/member"` | - - - -### `event:team/member.data` - -SHA-256: `b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1` - -Sources: [`packages/experimental/agent-team/src/types.ts:221`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `member` | required | [`packages/experimental/agent-team/src/types.ts#TeamMemberSnapshot`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammembersnapshot) | -| `teamId` | required | `string` | -| `version` | required | `2` | - - - -### `event:team/member.data.member.context` - -SHA-256: `50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48` - -One of: - -- `"fork"` -- `"fresh"` - - - -### `event:team/message/delivered` - -SHA-256: `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:team/message/delivered.data`](#persistence-type-eventteammessagedelivereddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"team/message/delivered"` | - - - -### `event:team/message/delivered.data` - -SHA-256: `0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1` - -Sources: [`packages/experimental/agent-team/src/types.ts:227`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `messageId` | required | `string` | -| `targetId` | required | `string` | -| `teamId` | required | `string` | -| `version` | required | `2` | - - - -### `event:team/message/queued` - -SHA-256: `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:team/message/queued.data`](#persistence-type-eventteammessagequeueddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"team/message/queued"` | - - - -### `event:team/message/queued.data` - -SHA-256: `0c3f4d2248d9bc9700e2d7253fa71aa9935f5c39af6f11de5727f08cccaf8383` - -Sources: [`packages/experimental/agent-team/src/types.ts:225`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `message` | required | [`packages/experimental/agent-team/src/types.ts#TeamMessageSnapshot`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammessagesnapshot) | -| `teamId` | required | `string` | -| `version` | required | `2` | - - - -### `event:team/task` - -SHA-256: `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:team/task.data`](#persistence-type-eventteamtaskdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"team/task"` | - - - -### `event:team/task.data` - -SHA-256: `a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c` - -Sources: [`packages/experimental/agent-team/src/types.ts:223`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `task` | required | [`packages/experimental/agent-team/src/types.ts#TeamTaskSnapshot`](#persistence-type-packagesexperimentalagent-teamsrctypeststeamtasksnapshot) | -| `teamId` | required | `string` | -| `version` | required | `2` | - - - -### `event:todo/write` - -SHA-256: `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:todo/write.data`](#persistence-type-eventtodowritedata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"todo/write"` | - - - -### `event:todo/write.data` - -SHA-256: `79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99` - -Sources: [`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `todos` | required | [`event:todo/write.data.todos`](#persistence-type-eventtodowritedatatodos) | - - - -### `event:todo/write.data.todos` - -SHA-256: `4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea` - -Array of [`packages/todo/tool-todo/src/types.ts#TodoItem`](#persistence-type-packagestodotool-todosrctypeststodoitem). - - - -### `event:todo/write.data.todos[0].status` - -SHA-256: `fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4` - -One of: - -- `"completed"` -- `"in_progress"` -- `"pending"` - - - -### `event:tool-workflow/agent-end` - -SHA-256: `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentEndData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowagentenddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool-workflow/agent-end"` | - - - -### `event:tool-workflow/agent-start` - -SHA-256: `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentStartData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowagentstartdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool-workflow/agent-start"` | - - - -### `event:tool-workflow/run-end` - -SHA-256: `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunEndData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowrunenddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool-workflow/run-end"` | - - - -### `event:tool-workflow/run-start` - -SHA-256: `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunStartData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowrunstartdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool-workflow/run-start"` | - - - -### `event:tool/call` - -SHA-256: `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:tool/call.data`](#persistence-type-eventtoolcalldata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool/call"` | - - - -### `event:tool/call.data` - -SHA-256: `e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1` - -Sources: [`packages/core/session/src/types.ts:348`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `arguments` | required | `string` | -| `callId` | required | `string` | -| `name` | required | `string` | -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `event:tool/ptc-dispatch` - -SHA-256: `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/core/tools/src/types.ts#PtcDispatchEventData`](#persistence-type-packagescoretoolssrctypestsptcdispatcheventdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool/ptc-dispatch"` | - - - -### `event:tool/ptc-dispatch-start` - -SHA-256: `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/core/tools/src/types.ts#PtcDispatchStartEventData`](#persistence-type-packagescoretoolssrctypestsptcdispatchstarteventdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"tool/ptc-dispatch-start"` | - - - -### `event:tool/ptc-dispatch.data.error` - -SHA-256: `a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735` - -Sources: [`packages/core/session/src/types.ts:370`](../packages/core/session/src/types.ts) · [`packages/core/tools/src/types.ts:24`](../packages/core/tools/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `code` | required | `string` | -| `name` | required | `string` | -| `reason` | optional | `string` | - - - -### `event:tool/result` - -SHA-256: `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:tool/result.data`](#persistence-type-eventtoolresultdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `sourceEventSeqs` | optional | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | required | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | required | `number` | -| `type` | required | `"tool/result"` | - - - -### `event:tool/result.data` - -SHA-256: `356aad27134a0e31af67c994ff8b9e4b91acfb6c4917b3bc1f7a62bbf82794d5` - -Sources: [`packages/core/session/src/types.ts:362`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `error` | optional | [`event:tool/ptc-dispatch.data.error`](#persistence-type-eventtoolptc-dispatchdataerror) | -| `message` | required | [`packages/llm/llm/src/message.ts#ToolResultMessage`](#persistence-type-packagesllmllmsrcmessagetstoolresultmessage) | -| `meta` | optional | [`event:tool/result.data.meta`](#persistence-type-eventtoolresultdatameta) | -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `event:tool/result.data.message.content` - -SHA-256: `8d6a011f3ef7096a4a922ef420458419ff6b20e1eaeece5d331db7585d2f08d6` - -| Position | Presence | Type | -|---|---|---| -| 0 | required | [`packages/llm/llm/src/types.ts#ToolResultBlock`](#persistence-type-packagesllmllmsrctypeststoolresultblock) | - - - -### `event:tool/result.data.meta` - -SHA-256: `c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6` - -Sources: [`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) - -One of: - -- [`event:tool/result.data.meta[5]`](#persistence-type-eventtoolresultdatameta5) -- [`event:tool/result.data.meta[5][0][6]`](#persistence-type-eventtoolresultdatameta506) -- `string` -- `boolean` -- `null` -- `number` - - - -### `event:tool/result.data.meta[5]` - -SHA-256: `72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227` - -Array of [`event:tool/result.data.meta`](#persistence-type-eventtoolresultdatameta). - - - -### `event:tool/result.data.meta[5][0][6]` - -SHA-256: `529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05` - -Sources: [`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| [`string`] | index signature | [`event:tool/result.data.meta`](#persistence-type-eventtoolresultdatameta) | - - - -### `event:turn/end` - -SHA-256: `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:turn/end.data`](#persistence-type-eventturnenddata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"turn/end"` | - - - -### `event:turn/end.data` - -SHA-256: `e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654` - -Sources: [`packages/core/session/src/types.ts:292`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `reason` | required | [`packages/core/session/src/types.ts#TurnEndReason`](#persistence-type-packagescoresessionsrctypeststurnendreason) | -| `turn` | required | `number` | - - - -### `event:turn/end.data.reason[0]` - -SHA-256: `b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0` - -Sources: [`packages/core/session/src/types.ts:201`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"completed"` | - - - -### `event:turn/end.data.reason[1]` - -SHA-256: `0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3` - -Sources: [`packages/core/session/src/types.ts:203`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"aborted"` | -| `reason` | required | [`packages/core/session/src/types.ts#TurnEndCancelCause`](#persistence-type-packagescoresessionsrctypeststurnendcancelcause) | - - - -### `event:turn/end.data.reason[1].reason[1]` - -SHA-256: `6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800` - -Sources: [`packages/core/session/src/types.ts:190`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"parent"` | - - - -### `event:turn/end.data.reason[1].reason[2]` - -SHA-256: `6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d` - -Sources: [`packages/core/session/src/types.ts:191`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"hook"` | -| `reason` | required | `string` | - - - -### `event:turn/end.data.reason[1].reason[3]` - -SHA-256: `4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db` - -Sources: [`packages/core/session/src/types.ts:192`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"disposed"` | - - - -### `event:turn/end.data.reason[1].reason[4]` - -SHA-256: `eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c` - -Sources: [`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"legacy"` | - - - -### `event:turn/end.data.reason[2]` - -SHA-256: `023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4` - -Sources: [`packages/core/session/src/types.ts:205`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"blocked"` | - - - -### `event:turn/end.data.reason[3]` - -SHA-256: `79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985` - -Sources: [`packages/core/session/src/types.ts:211`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `error` | required | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `kind` | required | `"error"` | - - - -### `event:turn/end.data.reason[5]` - -SHA-256: `56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23` - -Sources: [`packages/core/session/src/types.ts:220`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"interrupted"` | - - - -### `event:turn/end.data.reason[6]` - -SHA-256: `ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7` - -Sources: [`packages/core/session/src/types.ts:227`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"forked"` | - - - -### `event:turn/start` - -SHA-256: `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:turn/start.data`](#persistence-type-eventturnstartdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"turn/start"` | - - - -### `event:turn/start.data` - -SHA-256: `f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d` - -Sources: [`packages/core/session/src/types.ts:283`](../packages/core/session/src/types.ts) · [`packages/deliverables/workspace-changes/src/types.ts:106`](../packages/deliverables/workspace-changes/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `turn` | required | `number` | - - - -### `event:user/message` - -SHA-256: `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/llm/llm/src/message.ts#UserMessage`](#persistence-type-packagesllmllmsrcmessagetsusermessage) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `sourceEventSeqs` | optional | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | required | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | required | `number` | -| `type` | required | `"user/message"` | - - - -### `event:web/deepseek-search-llm-request` - -SHA-256: `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`packages/web/web-search-deepseek/src/provider.ts#DeepSeekSearchLlmRequest`](#persistence-type-packageswebweb-search-deepseeksrcprovidertsdeepseeksearchllmrequest) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"web/deepseek-search-llm-request"` | - - - -### `event:web/deepseek-search-llm-request.data.body` - -SHA-256: `930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731` - -Sources: [`packages/web/web-search-deepseek/src/provider.ts:61`](../packages/web/web-search-deepseek/src/provider.ts) - -| Property | Presence | Type | -|---|---|---| -| `max_tokens` | required | `number` | -| `messages` | required | [`event:web/deepseek-search-llm-request.data.body.messages`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages) | -| `model` | required | `string` | -| `tools` | required | [`event:web/deepseek-search-llm-request.data.body.tools`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodytools) | - - - -### `event:web/deepseek-search-llm-request.data.body.messages` - -SHA-256: `b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f` - -| Position | Presence | Type | -|---|---|---| -| 0 | required | [`event:web/deepseek-search-llm-request.data.body.messages[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0) | - - - -### `event:web/deepseek-search-llm-request.data.body.messages[0]` - -SHA-256: `9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5` - -Sources: [`packages/web/web-search-deepseek/src/provider.ts:64`](../packages/web/web-search-deepseek/src/provider.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:web/deepseek-search-llm-request.data.body.messages[0].content`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0content) | -| `role` | required | `"user"` | - - - -### `event:web/deepseek-search-llm-request.data.body.messages[0].content` - -SHA-256: `8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9` - -| Position | Presence | Type | -|---|---|---| -| 0 | required | [`event:web/deepseek-search-llm-request.data.body.messages[0].content[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0content0) | - - - -### `event:web/deepseek-search-llm-request.data.body.messages[0].content[0]` - -SHA-256: `4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c` - -Sources: [`packages/llm/llm/src/types.ts:61`](../packages/llm/llm/src/types.ts) · [`packages/web/web-search-deepseek/src/provider.ts:66`](../packages/web/web-search-deepseek/src/provider.ts) - -| Property | Presence | Type | -|---|---|---| -| `text` | required | `string` | -| `type` | required | `"text"` | - - - -### `event:web/deepseek-search-llm-request.data.body.tools` - -SHA-256: `4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8` - -| Position | Presence | Type | -|---|---|---| -| 0 | required | [`event:web/deepseek-search-llm-request.data.body.tools[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodytools0) | - - - -### `event:web/deepseek-search-llm-request.data.body.tools[0]` - -SHA-256: `2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3` - -Sources: [`packages/web/web-search-deepseek/src/provider.ts:71`](../packages/web/web-search-deepseek/src/provider.ts) - -| Property | Presence | Type | -|---|---|---| -| `max_uses` | required | `number` | -| `name` | required | `"web_search"` | -| `type` | required | `"web_search_20250305"` | - - - -### `event:workspace/changes` - -SHA-256: `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` - -| Property | Presence | Type | -|---|---|---| -| `data` | required | [`event:turn/start.data`](#persistence-type-eventturnstartdata) | -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `"workspace/changes"` | - - + ### `"every"` @@ -4077,7 +1664,7 @@ SHA-256: `e42b0f40b5d0b628c6e1c44a8fb9eda0780037a81959e1b93d2dfb47b46b0e87` `"every"` - + ### `"failed"` @@ -4085,7 +1672,7 @@ SHA-256: `b57a2889408de36e4516807194c73bdecd51a92f633ccd05db81bf049200f420` `"failed"` - + ### `"fallback"` @@ -4093,15 +1680,7 @@ SHA-256: `d6e654b88b584fcdf290a56802b1730bc7b9847ae86baa4265ab7769eb48990c` `"fallback"` - - -### `false` - -SHA-256: `0c4205180f75b9ee1e0d878bd9a9851628b5dc18448486389d9c5fdc3f1ccda3` - -`false` - - + ### `"feedback/message-delete"` @@ -4109,7 +1688,7 @@ SHA-256: `44818000e56acb97afdb5045ce235eb55e3fb1ccabc9fc7d0750bb38f36a7f8e` `"feedback/message-delete"` - + ### `"feedback/message-put"` @@ -4117,7 +1696,7 @@ SHA-256: `6cda0d6d3b4336d83998fe580628426df81c2afbab5d768b8813b56d569120e8` `"feedback/message-put"` - + ### `"feedback/record"` @@ -4125,7 +1704,7 @@ SHA-256: `c99e20441bf15341e9db54385e558e5c03d21dff2eb1ac08ccbf47c2d8747954` `"feedback/record"` - + ### `"file"` @@ -4133,7 +1712,7 @@ SHA-256: `277b61f9c6f8170425fa6ffe06cfa14376757a896a4749cb82a687d7364c4fc9` `"file"` - + ### `"finish"` @@ -4141,7 +1720,7 @@ SHA-256: `bd499eac047efe091a4df7382eadd06d25cf0cb31fee3981e8b24d85762841cd` `"finish"` - + ### `"fork"` @@ -4149,7 +1728,7 @@ SHA-256: `2da725e554cd89301d829ed9dc45a572c3cd1b93b5e91d0d71f007976d8a0863` `"fork"` - + ### `"forked"` @@ -4157,7 +1736,7 @@ SHA-256: `b2245a906e13aa94f2d3cc6cf7b04cfa0267f7b7f4d468de1b00b1a314e54626` `"forked"` - + ### `"fresh"` @@ -4165,7 +1744,7 @@ SHA-256: `dd2780e7e07684332f7a9ab047237798d260e7eaffb1321cb38eca695d184c3d` `"fresh"` - + ### `"goal"` @@ -4173,7 +1752,7 @@ SHA-256: `b815d7b91cdd9fc6ccc7dcba05cfc5ce1d55fab5fc0c0801803cd3630cedb602` `"goal"` - + ### `"goal/change"` @@ -4181,7 +1760,7 @@ SHA-256: `237c004c73b6b288246816e0d7fde16e09c63a47aa3b1227383d7afe58666163` `"goal/change"` - + ### `"hook"` @@ -4189,7 +1768,7 @@ SHA-256: `dbdafceb9a900183cccc80596498d386f3bf7bddead2b8cfde68453aa4739edc` `"hook"` - + ### `"hook/invoked"` @@ -4197,7 +1776,7 @@ SHA-256: `b9305f0ea75ccd6a6061c27fde19f2ab85534f9f3c1a717b573b077ebae0f611` `"hook/invoked"` - + ### `"hook/result"` @@ -4205,7 +1784,7 @@ SHA-256: `a3a259a1aa5401af786ce08c4a8419681d3000d73467991b5fc563389bc4ebd2` `"hook/result"` - + ### `"image"` @@ -4213,7 +1792,7 @@ SHA-256: `fb8b6a2e53cb9cf44c551176de0fb77d1ddc60037b99a891ff8a860b6d5c29a0` `"image"` - + ### `"image/gif"` @@ -4221,7 +1800,7 @@ SHA-256: `de30b1fa12c75f81df6aa4096e1595296d2d04e2be14a7c29849cf8028b79048` `"image/gif"` - + ### `"image/jpeg"` @@ -4229,7 +1808,7 @@ SHA-256: `3f74ba74acd10644c1ed6947a411d8088bd2cfac74f61bb8540f96d68e31f004` `"image/jpeg"` - + ### `"image/offload"` @@ -4237,7 +1816,7 @@ SHA-256: `9acbe713f3f641921dd3333b240aa72e176d795327c24e8d9db9b68b16771b49` `"image/offload"` - + ### `"image/png"` @@ -4245,7 +1824,7 @@ SHA-256: `58f94390b982f8a5ac1f4f235ba612557f4a1dc4a995d8b1cec63ce7639decb0` `"image/png"` - + ### `"image/webp"` @@ -4253,7 +1832,11 @@ SHA-256: `ebb768d85ec87fb68e42fc14fd7d8535b5ac11791b14d04c6770180f0a719bf8` `"image/webp"` - + + + + + ### `"in-history"` @@ -4263,7 +1846,7 @@ Sources: [`packages/llm/llm/src/types.ts:383`](../packages/llm/llm/src/types.ts) `"in-history"` - + ### `"in_progress"` @@ -4271,7 +1854,7 @@ SHA-256: `94c56aeb1564ad735eb773d88636b40761d063efa1610f1308004d32923f5378` `"in_progress"` - + ### `"initial"` @@ -4279,7 +1862,7 @@ SHA-256: `e7ce49f12953583fad217bf80fb9f1463acff2c3e9471a823782661675fb124c` `"initial"` - + ### `"instruction-following"` @@ -4287,7 +1870,7 @@ SHA-256: `e4cac694f8b6e1d52e48c699464f1c4c26111ef87e558f7931040d00fdc8d486` `"instruction-following"` - + ### `"instructions"` @@ -4295,7 +1878,7 @@ SHA-256: `fee1caf8ab6a65c1bc981f5a1730164490f22a2a89ffa3d0b76f1f432c44c8b5` `"instructions"` - + ### `"interrupted"` @@ -4303,7 +1886,7 @@ SHA-256: `69d238a6e9b08d67f601b1825962963d8d3523cb69ebf6208c697dc5d058c199` `"interrupted"` - + ### `"legacy"` @@ -4311,7 +1894,7 @@ SHA-256: `ad3b56aa2fc1ad4250e7399295d34a8eae592e1907e85852e2291b2e498a30bc` `"legacy"` - + ### `"llm/retry"` @@ -4319,7 +1902,7 @@ SHA-256: `611cae9a3539733aa0c42f66035a7d90f19dcbbdfb5d9e3b628b13705253942d` `"llm/retry"` - + ### `"llm/retry-started"` @@ -4327,7 +1910,7 @@ SHA-256: `4ae007ed190a72c92138b22d059b83208079c7551ca13fb59ae8cf5e23693964` `"llm/retry-started"` - + ### `"max-tokens"` @@ -4335,7 +1918,7 @@ SHA-256: `68141cbe3994a5ffcd064c07c75996538437fd9dbf77ce8a2927e89ec577fabe` `"max-tokens"` - + ### `"model"` @@ -4343,7 +1926,7 @@ SHA-256: `2765e9119edf5816ac1ab4c95c5ee32c90403f3742962eff11544f7752d59d2e` `"model"` - + ### `"model/selection"` @@ -4351,7 +1934,7 @@ SHA-256: `1d5f04a03ea75fc8eeece544129eba0f49f0c82046e9c404461920390135c7b2` `"model/selection"` - + ### `"negative"` @@ -4359,7 +1942,7 @@ SHA-256: `b1f62380f6746fedd629e71065e3583cef83334875b499ac9665c2eb87acfbf5` `"negative"` - + ### `"never"` @@ -4367,7 +1950,7 @@ SHA-256: `1571525adc95a24e5d25b5a6440df401cd7cdd881b745178e85f5a333435cd1b` `"never"` - + ### `"next-step"` @@ -4375,7 +1958,7 @@ SHA-256: `3e2ece4967cfebe95f450a93f45523dff99d6749f6269f2f60f84dfecfcf3693` `"next-step"` - + ### `"next-turn"` @@ -4383,7 +1966,7 @@ SHA-256: `62ecb62dc0fe1b5e70217f8a80c39256a40ee3a1917be14e5ca899d20c35f7fd` `"next-turn"` - + ### `"normal"` @@ -4391,7 +1974,7 @@ SHA-256: `3bc287e765d58dc3a22672a0495a6cfd561220dd38fbaecef80aa95b96caed79` `"normal"` - + ### `"notice"` @@ -4399,25 +1982,7 @@ SHA-256: `e8de0f457fed5b9ff94dc4950b59ef75fd8ba8af665cc7899485924a62653367` `"notice"` - - -### `null` - -SHA-256: `938f7c7357bc403ea3b281a9dd016939df7a0880fc8db12612585be574d0d615` - -`null` - - - -### `number` - -SHA-256: `0657d3ca5ac4e7bf79b00bcf860b1c7159d01a9da137497221ec2f1776e365f7` - -Sources: [`packages/core/session/src/types.ts:31`](../packages/core/session/src/types.ts) - -`number` - - + ### `"one-shot"` @@ -4425,7 +1990,7 @@ SHA-256: `d28765f87d6b6ab408e0b2f3e7e297791b004b806d8e302c49903ebae815feb2` `"one-shot"` - + ### `"other"` @@ -4433,83 +1998,753 @@ SHA-256: `9d80129e13edfb6feb03ed327e6085c6ef60b97ad074244b2f5fd4667424a6a4` `"other"` - + -### `packages/api/session-controller/src/types.ts#ModelSelection` +### `"parent"` -SHA-256: `f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b` +SHA-256: `e6411b09c1d982f789bf741ca74e2bea69df56029847f86a6148e722039ee732` -Sources: [`packages/api/session-controller/src/types.ts:86`](../packages/api/session-controller/src/types.ts) +`"parent"` + + + +### `"pause"` + +SHA-256: `1d8798b1a5e8c545ee4dcd2b4e75c0b4c9ffd985e4744c6d1a1aab992f859721` + +`"pause"` + + + +### `"paused"` + +SHA-256: `c43b119ce579b3e9983a0d3adc4ba402ebb9ba773d89738a2dab01ecf5813943` + +`"paused"` + + + +### `"pending"` + +SHA-256: `234142ee4f996f38cc9fa3b8b3e3de29b03c9aefe5ebf6c224eddd564505aa85` + +`"pending"` + + + +### `"permission/preset"` + +SHA-256: `ae63d9d1080ed8945031594d93f8d96651d7101b848719cc3e1475875cd3d649` + +`"permission/preset"` + + + +### `"plan/mode"` + +SHA-256: `f634871d1e18b1eb199497ac8ab72d3964f48d03fbf611dc7521a1970cf429d9` + +`"plan/mode"` + + + +### `"plugin"` + +SHA-256: `e654d28d1e6c471147310d2fba396d00969cfe6ed9022626d3f2c2312e0b1cbb` + +`"plugin"` + + + +### `"positive"` + +SHA-256: `df5d9709b7db2a72510dc52052a23f0c38f39730af1504bab8bccabc14fae528` + +`"positive"` + + + +### `"product-interaction"` + +SHA-256: `0341d4c3dfcd53253cdc1e789d9130d3cd848b6f8b0706bf92f313a68b39ff23` + +`"product-interaction"` + + + +### `"provider"` + +SHA-256: `e31572180d6b28b73f073ad30ae19d5d82982d3daf984723984e23da1e7c459a` + +`"provider"` + + + +### `"provisioning"` + +SHA-256: `871bfd6f7bb91061246768d3377f3fd58d6b8ea7c31f44c714ae7ab215650d62` + +`"provisioning"` + + + +### `"read-only"` + +SHA-256: `12a0cfa619ac4a5fc6c3e8e359c8dae15769edc61497a575935c78d5842f8e42` + +`"read-only"` + + + +### `"reasoning"` + +SHA-256: `3c2535ca0a2062f172f15344f8040755002b5ac506cf94fc4ebaa822b15feb8c` + +`"reasoning"` + + + +### `"reasoning-chunks"` + +SHA-256: `688e853dc149f0d30b31765c12ec7e3be74169bdf1a4c6463a10b945d50cc1b8` + +`"reasoning-chunks"` + + + +### `"reasoning-delta"` + +SHA-256: `6f091fe32ab24407236090ca9d710bbaf59bb57466e9f3b8f1f6e4862bc863c6` + +`"reasoning-delta"` + + + +### `"recall"` + +SHA-256: `383cf73ae4748e5beb281ae74857ba1ffb92ae01075b9fbf51af78b666007a8f` + +`"recall"` + + + +### `"rejected"` + +SHA-256: `fab35c4520883c0d69e42d079c9f543fc5ac7a2d15b537b5572fcd99059c7018` + +`"rejected"` + + + +### `"relay"` + +SHA-256: `16d0507cb94b4cfc84a87446b1ba7652d6ec1d65ee1684789e747e30d542800e` + +`"relay"` + + + +### `"remove"` + +SHA-256: `7382c4fc95fe8c5db65ca4d9da572b115d0dbb818b7f32c22ab040318ffbb4bc` + +`"remove"` + + + +### `"replace"` + +SHA-256: `f6cb462f808309e315fea634f1ed86268b8346bbcee6774d9097ca6eed7ac1f8` + +`"replace"` + + + +### `"request/context"` + +SHA-256: `70b082fe78991edf13cf66e1b4d06cd2dcff9cacfd76f8cfb996bfb61939e7b2` + +`"request/context"` + + + +### `"request/header"` + +SHA-256: `3e0eff5946255ff05d88a10839c60305135801f97794ea48d409f8503303317e` + +`"request/header"` + + + +### `"resource-cost"` + +SHA-256: `5bd310104cfe448e530beb11422d2f791e2e32e8e95fdc528a15f9ca693dae75` + +`"resource-cost"` + + + +### `"resume"` + +SHA-256: `34d1ab5c5df378186d6054b1a1beea9a41e41965d6f336f0bc0025c441a82e66` + +`"resume"` + + + +### `"sandbox/mode"` + +SHA-256: `ca085dba2c877feceebf3c62f9d39c6c2a4d2314d97b94b3927a780fe8fe2bb2` + +`"sandbox/mode"` + + + +### `"schedule/change"` + +SHA-256: `0e7b2a97f54f1afdb8cdfad1635abe9145327db539bfb69b4045c19d8c17755d` + +`"schedule/change"` + + + +### `"security-privacy-permission"` + +SHA-256: `07eccc9ea2f9b5439d76cc77d5e062936677d43f07a23da749819b0a22ee36b7` + +`"security-privacy-permission"` + + + +### `"series"` + +SHA-256: `4f507598cf476214aa7646ce7841a7064a9dcb05d0a1eaaefaf79c2b738f160f` + +`"series"` + + + +### `"service-stability"` + +SHA-256: `7180844e1066230c5e891f1b9ccd942423b0fe48aac6ded7eef2a285b288a732` + +`"service-stability"` + + + +### `"session"` + +SHA-256: `e41bdebe246abe17154de7e7a1d81035437eee8d20e7f1edff0d91e2598ad828` + +`"session"` + + + +### `"session-log-deepseek/delivery-accepted"` + +SHA-256: `47e5d84f1a93450a78c7f3954b43990d0f629af7c034a56313e5deb63e772c1b` + +`"session-log-deepseek/delivery-accepted"` + + + +### `"session-reference"` + +SHA-256: `7f13860ee89a2d35ce09f958e85a04566cd59cb1de1d73a9619a9b631961dc71` + +`"session-reference"` + + + +### `"session/end-seed"` + +SHA-256: `1c2686c0682e7bc51d61117b2652bd4a80707e331aa276d6ef915ae32534a330` + +`"session/end-seed"` + + + +### `"session/title"` + +SHA-256: `7a651f3b672c52fb615f22c0ce9cb3cc5b22aad92e6bbeefb0808fd7b9233a50` + +`"session/title"` + + + +### `"session/title-llm-request"` + +SHA-256: `587bb11da730e06aa52b62c087d217d6f8f22459b25f31cb9e1e1baf17944e5e` + +`"session/title-llm-request"` + + + +### `"set"` + +SHA-256: `b765ee31033cea463863faf3fc6a0a1b85c47c6a2f13fe1ce833abe56105114b` + +`"set"` + + + +### `"skill-catalog"` + +SHA-256: `6ebcc2dbec9f2dabca9f668ae6d39e877899b180740570f453409db339221df3` + +`"skill-catalog"` + + + +### `"skill-invocation"` + +SHA-256: `1922cd79a70806c17758185a6ef0458bc1fb3900363906733421c16414da2509` + +`"skill-invocation"` + + + +### `"snapshot"` + +SHA-256: `6f9e00383836275e46c0a9915767f9bb561be5fc30aae490174908a93e99a912` + +`"snapshot"` + + + +### `"step/end"` + +SHA-256: `c219efbdfd53b836786202ab4532913d555798f0a8615a4e9629736e3799fb70` + +`"step/end"` + + + +### `"step/start"` + +SHA-256: `2c64d4bc7264fd3f8bed47e96ab8a593bce05a1e4e1c436dcd244a3b7e0c2a9d` + +`"step/start"` + + + +### `"stop"` + +SHA-256: `57f3f606ff8b6c84d9c443faace9d1dd10cca0354f37a4f515ef075f7c351b90` + +`"stop"` + + + +### `"subagent"` + +SHA-256: `aacda84a69739238aa782eea902d3073017d9d74b9808de2bf5a83c9738cbdc6` + +`"subagent"` + + + +### `"subagent-settled"` + +SHA-256: `bf16d2e98a7f13894ded2cffe5ce857bf473954a0e3c0ed9bc7739e2e1c7b78a` + +`"subagent-settled"` + + + +### `"subagent/catalog"` + +SHA-256: `44c8c77aa9aa100b0d74d2deee85474b29faa6eee0ac0f662f7abe9931ddd7f2` + +`"subagent/catalog"` + + + +### `"subagent/descriptor"` + +SHA-256: `5ebce1317eacd2c148456627a09668e927ee15c204f0643f5ea76b46b54a2647` + +`"subagent/descriptor"` + + + +### `"subagent/model-selection-policy"` + +SHA-256: `0a8a062bc9c3c0d97fd97742262f2ea53dd32297f834e81114870d38ac3dc6da` + +`"subagent/model-selection-policy"` + + + +### `"success"` + +SHA-256: `511801b0a6470d98566e8385d3dffddb2b67f79fcf73ed6056f46c3cc0a245a7` + +`"success"` + + + +### `"system"` + +SHA-256: `8af841fc9b265ade3441caf9fe40dd24db24226befba48150e6d0eeccc1389c3` + +`"system"` + + + +### `"system/message"` + +SHA-256: `1c5a58f4599bd4a9711712551ffe2442a5e5fcd0758bafe630cc4ead850bdaa7` + +`"system/message"` + + + +### `"task-result"` + +SHA-256: `f05fb85e715af4ab4de0b6ba111166dd0435bd8bb74a0fa0f32b9d174113fc7c` + +`"task-result"` + + + +### `"team-message"` + +SHA-256: `2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c` + +`"team-message"` + + + +### `"team/member"` + +SHA-256: `18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0` + +`"team/member"` + + + +### `"team/message/delivered"` + +SHA-256: `a8a2b9011fc067862df7ce40748868467e5778283d7ac193c13f77684a914c57` + +`"team/message/delivered"` + + + +### `"team/message/queued"` + +SHA-256: `4e011753f8263f436efaabfbb3b4db53a98fc55342c5ded2daf7208b217be159` + +`"team/message/queued"` + + + +### `"team/task"` + +SHA-256: `b57ae1b37e52bee0a21cbdace168dc6a15582bcda8c306dad962c5dcc8a8e28b` + +`"team/task"` + + + +### `"text"` + +SHA-256: `4e44c9118152f6829634bfd508e47669ab0497caffa380c94b4be91f9390d35d` + +`"text"` + + + +### `"text-chunks"` + +SHA-256: `f9cfc89e8fe085b4fcc9cd32b74b6f103608c54d7d8cd97b47c01de34f252ba3` + +`"text-chunks"` + + + +### `"text-delta"` + +SHA-256: `5abab3a27fd2736660ecddd94b28d6bbf114986dd894880153bd1be3ccacb563` + +`"text-delta"` + + + +### `"todo/write"` + +SHA-256: `af0750d32d97d47b12b7361a587db41894b17e04c9a805fe212f0114aa2248c7` + +`"todo/write"` + + + +### `"tool"` + +SHA-256: `a13d8f379222ece8a02a86efe4c8334af4f108ecb3034b38c0a42bb3046e6847` + +`"tool"` + + + +### `"tool-call"` + +SHA-256: `1f0133217eeeffd8d387baf1ec8ed9856e719bcd999dc08e48624cba96d75fd7` + +`"tool-call"` + + + +### `"tool-call-chunks"` + +SHA-256: `616f93a5047de668e1c30d57b1786abd76beeb4123599637ec1dc5290320ede5` + +`"tool-call-chunks"` + + + +### `"tool-call-delta"` + +SHA-256: `9b4fd974c124c83743efe030ba4e1250e087505f3f74588716a521fb8d453267` + +`"tool-call-delta"` + + + +### `"tool-calls"` + +SHA-256: `6c1cccb433ddc153facb380c7dda956237ba5c31f8a532a69142dc277890cc9b` + +`"tool-calls"` + + + +### `"tool-result"` + +SHA-256: `e5244812c495a80c2e78ba2c2690dca5f6b58ea8d3fe5531ff94a6f9ac5e5d66` + +`"tool-result"` + + + +### `"tool-workflow/agent-end"` + +SHA-256: `5d17f27a1ef9f7026c0232714adf7573961536d75f3303ca97973975f5af170e` + +`"tool-workflow/agent-end"` + + + +### `"tool-workflow/agent-start"` + +SHA-256: `ad92f473a03ae72599ff26c86e897c25e16269519ad2a87340f0bea946517af8` + +`"tool-workflow/agent-start"` + + + +### `"tool-workflow/run-end"` + +SHA-256: `fe792a6cd430494503837e21e79f91677704ccdd9e870c679aabd7d43ed47ddd` + +`"tool-workflow/run-end"` + + + +### `"tool-workflow/run-start"` + +SHA-256: `cdca80b8dad24d4e7b1d5a288a8475ba8d8d46be385bd2da85f122ee836f1670` + +`"tool-workflow/run-start"` + + + +### `"tool/call"` + +SHA-256: `c589e938cc0e4989df8b82abef6339de621f0dc4fe62c230d145b94996af7f92` + +`"tool/call"` + + + +### `"tool/ptc-dispatch"` + +SHA-256: `fb5e0517050d2c6d40e5b8145db1f7c5ca7044d5d50fada6ff80e0b22c6ca973` + +`"tool/ptc-dispatch"` + + + +### `"tool/ptc-dispatch-start"` + +SHA-256: `2aed07493b1c65b6d00de5586da1e743cf501684b9ad43a1765fb4007d4ea456` + +`"tool/ptc-dispatch-start"` + + + +### `"tool/result"` + +SHA-256: `570e85022434613394418ad33e77e9f1f7a05699b33d0b62eae0677a638c3833` + +`"tool/result"` + + + +### `"turn/end"` + +SHA-256: `4312134fc6f9cad507c31390bd3d147535492dd77621ec517c5e85f853d53a03` + +`"turn/end"` + + + +### `"turn/start"` + +SHA-256: `0af3ecfb8c60d416fc40a7cc4fb2c4851a8e46608b2b38ab9e510670c971aa1f` + +`"turn/start"` + + + +### `"unavailable"` + +SHA-256: `2c4c21f19f426a58f2dac914e34313aa43f8408972de857a486d1f086d5adb6c` + +`"unavailable"` + + + +### `"usage"` + +SHA-256: `0bdaf9cb63594be4ef034b68901fffe792fe09d6d5f6bac42d7f56f6e7834fb9` + +`"usage"` + + + +### `"user"` + +SHA-256: `68f44f59e91c41395076cb77265981a601680ec8a381bbbeb6ab754ffdc94573` + +`"user"` + + + +### `"user/message"` + +SHA-256: `de25352d2dc4196309bd84b5bac6319f6d5c898ea0e82bb5ae66c5738d0d426f` + +`"user/message"` + + + +### `"web/deepseek-search-llm-request"` + +SHA-256: `6f611bed14b2106542480c4a230b4a83baf76dc0d8ac0cd13319a7cb8dae7675` + +`"web/deepseek-search-llm-request"` + + + +### `"web_search"` + +SHA-256: `935c8d486292b13c87b57ca280eb8c58b5b2f5239be86fcd4334c33fdeb87682` + +`"web_search"` + + + +### `"web_search_20250305"` + +SHA-256: `0116b1f89c05221d56b0ba35c83d302bf4857bc7277d247e9bbaf74b27d2c66e` + +`"web_search_20250305"` + + + +### `"webhook"` + +SHA-256: `db6c5246911d47a7969f6b4cb47c7d0dbbde75c402710b22ace3672fa97bebe0` + +`"webhook"` + + + +### `"workspace-write"` + +SHA-256: `a3edd1efd1fef21b72c55e213c8a8b24196b091abde2b89db52be0b2aaae3cfa` + +`"workspace-write"` + + + +### `"workspace/changes"` + +SHA-256: `8e8155594e07812356b67d732196dda894b0f9c91a5969d51612cf490b0a016d` + +`"workspace/changes"` + + + +### `0` + +SHA-256: `93d38436347f67c9022aacbc4472e283d722bcab8eb73fc376aaf7b6a6b9fb35` + +`0` + + + +### `1` + +SHA-256: `f88f1b7b6bb733f685f5fb6a8744a5db9199fa53c90463ea1a33bad51153671d` + +`1` + + + +### `2` + +SHA-256: `a0f906856fc06f1c6f2083eb970e5a657a82b1a84c06c095445e5d6d161cda80` + +`2` + + + +### `4` + +SHA-256: `af6e173f7be819bcd0a5c8d77918649c10ce761d8a184ff472f2e01ce64eb2e0` + +`4` + + + + + + + +### `AfterScheduleRecord` + +SHA-256: `27e337d3d6b402b221e50c247a3f518a70d0c474cc60beee15fac3e9c5cbfcbe` + +Sources: [`packages/schedule/schedule/src/types.ts:13`](../packages/schedule/schedule/src/types.ts) | Property | Presence | Type | |---|---|---| -| `model` | required | `string` | -| `provider` | required | `string` | -| `reasoningEffort` | optional | `string` | +| `afterSeconds` | required | `number` | +| `id` | required | `string` | +| `kind` | required | `"after"` | +| `prompt` | required | `string` | +| `scheduledAt` | required | `string` | - + -### `packages/attachment/attachment/src/types.ts#FileAttachmentRef` - -SHA-256: `f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6` - -Sources: [`packages/attachment/attachment/src/types.ts:39`](../packages/attachment/attachment/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `attachmentId` | required | `string` | -| `bytes` | required | `number` | -| `name` | required | `string` | - - - -### `packages/attachment/attachment/src/types.ts#ImageAttachmentRef` - -SHA-256: `b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35` - -Sources: [`packages/attachment/attachment/src/types.ts:11`](../packages/attachment/attachment/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `attachmentId` | required | `string` | -| `bytes` | required | `number` | -| `height` | required | `number` | -| `mediaType` | required | [`packages/attachment/attachment/src/types.ts#ImageMediaType`](#persistence-type-packagesattachmentattachmentsrctypestsimagemediatype) | -| `name` | optional | `string` | -| `originalDimensions` | optional | [`event:agent/inbox/spliced.data.inserted[0].content[0][2].attachment.originalDimensions`](#persistence-type-eventagentinboxspliceddatainserted0content02attachmentoriginaldimensions) | -| `width` | required | `number` | - - - -### `packages/attachment/attachment/src/types.ts#ImageMediaType` - -SHA-256: `2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716` - -Sources: [`packages/attachment/attachment/src/types.ts:8`](../packages/attachment/attachment/src/types.ts) - -One of: - -- `"image/gif"` -- `"image/jpeg"` -- `"image/png"` -- `"image/webp"` - - - -### `packages/compaction/compaction-image-offload/src/projection.ts#ImageOffloadTarget` - -SHA-256: `1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f` - -Sources: [`packages/compaction/compaction-image-offload/src/projection.ts:9`](../packages/compaction/compaction-image-offload/src/projection.ts) - -| Property | Presence | Type | -|---|---|---| -| `imageIndexes` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `seq` | required | `number` | + -### `packages/context/agent-instructions/src/render.ts#AgentInstructionChange` +### `AgentInstructionChange` SHA-256: `83da72c6857601c75da11212ef847f57d457b9c99f0a82246dcdff3e26700239` @@ -4517,14 +2752,26 @@ Sources: [`packages/context/agent-instructions/src/render.ts:47`](../packages/co | Property | Presence | Type | |---|---|---| -| `action` | required | [`event:agent/inbox/spliced.data.inserted[0].source[16].changes[0].action`](#persistence-type-eventagentinboxspliceddatainserted0source16changes0action) | +| `action` | required | [`union (3 variants)`](#persistence-type-sha256-904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd) | | `digest` | optional | `string` | | `path` | required | `string` | | `scope` | required | `string` | + + +### `AgentInstructionChange[]` + +SHA-256: `2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee` + +Array of [`AgentInstructionChange`](#persistence-type-sha256-83da72c6857601c75da11212ef847f57d457b9c99f0a82246dcdff3e26700239). + + + + + -### `packages/context/agent-instructions/src/state.ts#AgentInstructionSource` +### `AgentInstructionSource` SHA-256: `6f22a9d02b9a1f1157f3b0e7bdccd7e7b12b085c4efdb709dfc74a465cd4e590` @@ -4534,527 +2781,35 @@ Sources: [`packages/context/agent-instructions/src/state.ts:37`](../packages/con |---|---|---| | `baseline` | optional | `true` | | `baselineIdentity` | optional | `string` | -| `changes` | required | [`event:agent/inbox/spliced.data.inserted[0].source[16].changes`](#persistence-type-eventagentinboxspliceddatainserted0source16changes) | +| `changes` | required | [`AgentInstructionChange[]`](#persistence-type-sha256-2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee) | | `form` | required | `"instructions"` | | `kind` | required | `"agent-instructions"` | - + -### `packages/context/session-reference/src/types.ts#SessionReferenceSource` + -SHA-256: `f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f` + -Sources: [`packages/context/session-reference/src/types.ts:13`](../packages/context/session-reference/src/types.ts) +### `AgentMessageSource` + +SHA-256: `4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86` + +Sources: [`packages/subagent/subagent/src/continuation-messages.ts:15`](../packages/subagent/subagent/src/continuation-messages.ts) | Property | Presence | Type | |---|---|---| -| `form` | required | `"recall"` | -| `kind` | required | `"session-reference"` | -| `references` | required | [`event:agent/inbox/spliced.data.inserted[0].source[15].references`](#persistence-type-eventagentinboxspliceddatainserted0source15references) | -| `version` | required | `1` | +| `form` | required | `"relay"` | +| `kind` | required | `"agent-message"` | +| `senderSessionId` | required | `string` | - + -### `packages/core/agent/src/types.ts#InboxTarget` - -SHA-256: `96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c` - -Sources: [`packages/core/agent/src/types.ts:30`](../packages/core/agent/src/types.ts) - -One of: - -- `"next-step"` -- `"next-turn"` - - - -### `packages/core/session/src/types.ts#EpochHeader` - -SHA-256: `c55a891c7aac496de6ee64c91c1fb65728c977314013033e42c863428aada854` - -Sources: [`packages/core/session/src/types.ts:239`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `adapterDefaults` | optional | [`packages/llm/llm/src/call-config.ts#LlmCallConfigAdapterDefaults`](#persistence-type-packagesllmllmsrccall-configtsllmcallconfigadapterdefaults) | -| `config` | required | [`packages/llm/llm/src/call-config.ts#LlmCallConfig`](#persistence-type-packagesllmllmsrccall-configtsllmcallconfig) | -| `tools` | optional | [`event:request/header.data.header.tools`](#persistence-type-eventrequestheaderdataheadertools) | - - - -### `packages/core/session/src/types.ts#RequestContext` - -SHA-256: `b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081` - -Sources: [`packages/core/session/src/types.ts:249`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `contextWindow` | optional | `number` | -| `model` | required | `string` | -| `provider` | required | `string` | -| `systemPromptUpdate` | optional | `"in-history"` | - - - -### `packages/core/session/src/types.ts#RequestHeaderReason` - -SHA-256: `530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6` - -Sources: [`packages/core/session/src/types.ts:268`](../packages/core/session/src/types.ts) - -One of: - -- `"change"` -- `"initial"` -- `"resume"` -- `"series"` - - - -### `packages/core/session/src/types.ts#SessionHeader` - -SHA-256: `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` - -Sources: [`packages/core/session/src/types.ts:93`](../packages/core/session/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `agentPreset` | optional | `string` | -| `createdAt` | required | `number` | -| `cwd` | optional | `string` | -| `delegationDepth` | optional | `number` | -| `id` | required | `string` | -| `isSeeded` | required | `boolean` | -| `origin` | optional | `"subagent"` | -| `parentSession` | optional | `string` | -| `version` | required | `4` | - - - -### `packages/core/session/src/types.ts#SurfaceOp` - -SHA-256: `335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5` - -Sources: [`packages/core/session/src/types.ts:448`](../packages/core/session/src/types.ts) - -One of: - -- `"append"` -- [`SessionEventEnvelope[6].surfaceOp[1]`](#persistence-type-sessioneventenvelope6surfaceop1) - - - -### `packages/core/session/src/types.ts#TurnEndCancelCause` - -SHA-256: `1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0` - -Sources: [`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) - -One of: - -- [`event:turn/end.data.reason[1].reason[2]`](#persistence-type-eventturnenddatareason1reason2) -- [`event:turn/end.data.reason[1].reason[3]`](#persistence-type-eventturnenddatareason1reason3) -- [`event:turn/end.data.reason[1].reason[4]`](#persistence-type-eventturnenddatareason1reason4) -- [`event:turn/end.data.reason[1].reason[1]`](#persistence-type-eventturnenddatareason1reason1) -- [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) - - - -### `packages/core/session/src/types.ts#TurnEndReason` - -SHA-256: `f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402` - -Sources: [`packages/core/session/src/types.ts:231`](../packages/core/session/src/types.ts) - -One of: - -- [`event:turn/end.data.reason[0]`](#persistence-type-eventturnenddatareason0) -- [`event:turn/end.data.reason[6]`](#persistence-type-eventturnenddatareason6) -- [`event:turn/end.data.reason[5]`](#persistence-type-eventturnenddatareason5) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]`](#persistence-type-eventassistantattemptdatastream03chunk6reason2) -- [`event:turn/end.data.reason[3]`](#persistence-type-eventturnenddatareason3) -- [`event:turn/end.data.reason[1]`](#persistence-type-eventturnenddatareason1) -- [`event:turn/end.data.reason[2]`](#persistence-type-eventturnenddatareason2) - - - -### `packages/core/tools/src/index.ts#ToolRestriction` - -SHA-256: `3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f` - -Sources: [`packages/core/tools/src/index.ts:682`](../packages/core/tools/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| `allow` | optional | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `deny` | optional | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | - - - -### `packages/core/tools/src/types.ts#PtcDispatchEventData` - -SHA-256: `8d2e5a3c4230e6ea6c0b5151f02241d0db02cd2551f2df1b6b9700cddcc0dca3` - -Sources: [`packages/core/tools/src/types.ts:20`](../packages/core/tools/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `arguments` | required | `unknown` (opaque) | -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `error` | optional | [`event:tool/ptc-dispatch.data.error`](#persistence-type-eventtoolptc-dispatchdataerror) | -| `isError` | required | `boolean` | -| `name` | required | `string` | -| `parentCallId` | required | `string` | -| `rootCallId` | required | `string` | -| `subCallId` | required | `string` | - - - -### `packages/core/tools/src/types.ts#PtcDispatchStartEventData` - -SHA-256: `2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f` - -Sources: [`packages/core/tools/src/types.ts:11`](../packages/core/tools/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `arguments` | required | `unknown` (opaque) | -| `name` | required | `string` | -| `parentCallId` | required | `string` | -| `rootCallId` | required | `string` | -| `subCallId` | required | `string` | - - - -### `packages/deliverables/tool-present/src/types.ts#PresentedFile` - -SHA-256: `b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97` - -Sources: [`packages/deliverables/tool-present/src/types.ts:5`](../packages/deliverables/tool-present/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `description` | optional | `string` | -| `path` | required | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamMemberPhase` - -SHA-256: `dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd` - -Sources: [`packages/experimental/agent-team/src/types.ts:44`](../packages/experimental/agent-team/src/types.ts) - -One of: - -- `"active"` -- `"failed"` -- `"provisioning"` - - - -### `packages/experimental/agent-team/src/types.ts#TeamMemberSnapshot` - -SHA-256: `6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25` - -Sources: [`packages/experimental/agent-team/src/types.ts:47`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `context` | required | [`event:team/member.data.member.context`](#persistence-type-eventteammemberdatamembercontext) | -| `description` | required | `string` | -| `error` | optional | `string` | -| `id` | required | `string` | -| `name` | required | `string` | -| `phase` | required | [`packages/experimental/agent-team/src/types.ts#TeamMemberPhase`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammemberphase) | -| `provider` | required | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamMessageSnapshot` - -SHA-256: `5b694f394d5e11609887a3ccfa82844935d49806c37e336b30be2186d649ab94` - -Sources: [`packages/experimental/agent-team/src/types.ts:106`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `id` | required | `string` | -| `senderId` | required | `string` | -| `senderName` | required | `string` | -| `targetId` | required | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamMessageSource` - -SHA-256: `2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0` - -Sources: [`packages/experimental/agent-team/src/types.ts:115`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `kind` | required | `"team-message"` | -| `messageId` | required | `string` | -| `senderId` | required | `string` | -| `senderName` | required | `string` | -| `teamId` | required | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamTaskSnapshot` - -SHA-256: `51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357` - -Sources: [`packages/experimental/agent-team/src/types.ts:74`](../packages/experimental/agent-team/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `blockedBy` | required | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `description` | required | `string` | -| `id` | required | `string` | -| `ownerId` | optional | `string` | -| `revision` | required | `number` | -| `status` | required | [`packages/experimental/agent-team/src/types.ts#TeamTaskStatus`](#persistence-type-packagesexperimentalagent-teamsrctypeststeamtaskstatus) | -| `subject` | required | `string` | -| `writeScopes` | required | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | - - - -### `packages/experimental/agent-team/src/types.ts#TeamTaskStatus` - -SHA-256: `b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943` - -Sources: [`packages/experimental/agent-team/src/types.ts:71`](../packages/experimental/agent-team/src/types.ts) - -One of: - -- `"completed"` -- `"deleted"` -- `"in_progress"` -- `"pending"` - - - -### `packages/feedback/command-feedback/src/types.ts#FeedbackRecord` - -SHA-256: `7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344` - -Sources: [`packages/feedback/command-feedback/src/types.ts:27`](../packages/feedback/command-feedback/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `category` | optional | [`event:feedback/message-put.data.item.category`](#persistence-type-eventfeedbackmessage-putdataitemcategory) | -| `text` | optional | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackDelete` - -SHA-256: `7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06` - -Sources: [`packages/feedback/message-feedback/src/types.ts:46`](../packages/feedback/message-feedback/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `messageId` | required | `string` | -| `sessionId` | required | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackItem` - -SHA-256: `3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182` - -Sources: [`packages/feedback/message-feedback/src/types.ts:20`](../packages/feedback/message-feedback/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `category` | optional | [`event:feedback/message-put.data.item.category`](#persistence-type-eventfeedbackmessage-putdataitemcategory) | -| `createdAt` | required | `number` | -| `messageId` | required | `string` | -| `note` | optional | `string` | -| `rating` | required | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackRating`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackrating) | -| `updatedAt` | required | `number` | -| `version` | required | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackPut` - -SHA-256: `aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626` - -Sources: [`packages/feedback/message-feedback/src/types.ts:38`](../packages/feedback/message-feedback/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `item` | required | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackItem`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackitem) | -| `sessionId` | required | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackRating` - -SHA-256: `390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2` - -Sources: [`packages/feedback/message-feedback/src/types.ts:17`](../packages/feedback/message-feedback/src/types.ts) - -One of: - -- `"negative"` -- `"positive"` - - - -### `packages/goal/goal/src/domain.ts#GoalChangeMeta` - -SHA-256: `7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438` - -Sources: [`packages/goal/goal/src/domain.ts:44`](../packages/goal/goal/src/domain.ts) - -One of: - -- [`packages/goal/goal/src/domain.ts#GoalClearChangeMeta`](#persistence-type-packagesgoalgoalsrcdomaintsgoalclearchangemeta) -- [`packages/goal/goal/src/domain.ts#GoalSnapshotChangeMeta`](#persistence-type-packagesgoalgoalsrcdomaintsgoalsnapshotchangemeta) - - - -### `packages/goal/goal/src/domain.ts#GoalClearChangeMeta` - -SHA-256: `cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f` - -Sources: [`packages/goal/goal/src/domain.ts:35`](../packages/goal/goal/src/domain.ts) - -| Property | Presence | Type | -|---|---|---| -| `cleared` | required | [`packages/goal/goal/src/types.ts#GoalRef`](#persistence-type-packagesgoalgoalsrctypestsgoalref) | -| `clearedAt` | required | `number` | -| `kind` | required | `"goal/change"` | -| `operation` | required | `"clear"` | -| `version` | required | `1` | - - - -### `packages/goal/goal/src/domain.ts#GoalMessageSource` - -SHA-256: `7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc` - -Sources: [`packages/goal/goal/src/domain.ts:47`](../packages/goal/goal/src/domain.ts) - -| Property | Presence | Type | -|---|---|---| -| `goalId` | required | `string` | -| `kind` | required | `"goal"` | -| `revision` | required | `number` | -| `round` | required | `number` | - - - -### `packages/goal/goal/src/domain.ts#GoalSnapshotChangeMeta` - -SHA-256: `1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4` - -Sources: [`packages/goal/goal/src/domain.ts:24`](../packages/goal/goal/src/domain.ts) - -| Property | Presence | Type | -|---|---|---| -| `createdAt` | required | `number` | -| `goal` | required | [`packages/goal/goal/src/types.ts#GoalSnapshot`](#persistence-type-packagesgoalgoalsrctypestsgoalsnapshot) | -| `kind` | required | `"goal/change"` | -| `operation` | required | [`event:goal/change.data[0].operation`](#persistence-type-eventgoalchangedata0operation) | -| `roundsStarted` | required | `number` | -| `updatedAt` | required | `number` | -| `version` | required | `1` | - - - -### `packages/goal/goal/src/types.ts#GoalBlockReason` - -SHA-256: `84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c` - -Sources: [`packages/goal/goal/src/types.ts:52`](../packages/goal/goal/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `code` | required | `string` | -| `message` | required | `string` | - - - -### `packages/goal/goal/src/types.ts#GoalPhase` - -SHA-256: `b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172` - -Sources: [`packages/goal/goal/src/types.ts:45`](../packages/goal/goal/src/types.ts) - -One of: - -- `"active"` -- `"blocked"` -- `"complete"` -- `"paused"` - - - -### `packages/goal/goal/src/types.ts#GoalRef` - -SHA-256: `0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f` - -Sources: [`packages/goal/goal/src/types.ts:20`](../packages/goal/goal/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `id` | required | `string` | -| `revision` | required | `number` | - - - -### `packages/goal/goal/src/types.ts#GoalSnapshot` - -SHA-256: `6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25` - -Sources: [`packages/goal/goal/src/types.ts:60`](../packages/goal/goal/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `blockedReason` | optional | [`packages/goal/goal/src/types.ts#GoalBlockReason`](#persistence-type-packagesgoalgoalsrctypestsgoalblockreason) | -| `id` | required | `string` | -| `maxGoalRounds` | required | `number` | -| `objective` | required | `string` | -| `phase` | required | [`packages/goal/goal/src/types.ts#GoalPhase`](#persistence-type-packagesgoalgoalsrctypestsgoalphase) | -| `revision` | required | `number` | - - - -### `packages/hooks/hook-protocol/src/types.ts#HookDialect` - -SHA-256: `a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb` - -Sources: [`packages/hooks/hook-protocol/src/types.ts:48`](../packages/hooks/hook-protocol/src/types.ts) - -One of: - -- `"claude-code"` -- `"codex"` - - - -### `packages/interaction/user-approval/src/index.ts#ApprovalPolicy` - -SHA-256: `05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf` - -Sources: [`packages/interaction/user-approval/src/index.ts:60`](../packages/interaction/user-approval/src/index.ts) - -One of: - -- `"ask"` -- `"never"` + -### `packages/interaction/user-approval/src/types.ts#ApprovalOutcome` +### `ApprovalOutcome` SHA-256: `930c1cd289def119d443e19dd90008916bf035f0a4d23e07241e7f050f2b89b7` @@ -5067,82 +2822,30 @@ One of: - `"rejected"` - `"unavailable"` - + -### `packages/llm/llm-retry/src/types.ts#LlmRetryEventData` + -SHA-256: `c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1` + -Sources: [`packages/llm/llm-retry/src/types.ts:16`](../packages/llm/llm-retry/src/types.ts) +### `ApprovalPolicy` + +SHA-256: `05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf` + +Sources: [`packages/interaction/user-approval/src/index.ts:60`](../packages/interaction/user-approval/src/index.ts) One of: -- [`event:llm/retry.data[0]`](#persistence-type-eventllmretrydata0) -- [`event:llm/retry.data[1]`](#persistence-type-eventllmretrydata1) +- `"ask"` +- `"never"` - + -### `packages/llm/llm-retry/src/types.ts#LlmRetryStartedEventData` - -SHA-256: `6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20` - -Sources: [`packages/llm/llm-retry/src/types.ts:43`](../packages/llm/llm-retry/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `retry` | required | `number` | -| `retryId` | required | `string` | -| `step` | required | `number` | -| `turn` | required | `number` | - - - -### `packages/llm/llm/src/assistant-stream.ts#AssistantStreamRecord` - -SHA-256: `86cf1e44038cb8b11659863dd0efafe682e41b9c782265c1d50e0a687debfc60` - -Sources: [`packages/llm/llm/src/assistant-stream.ts:20`](../packages/llm/llm/src/assistant-stream.ts) - -One of: - -- [`event:assistant/attempt.data.stream[0][2]`](#persistence-type-eventassistantattemptdatastream02) -- [`event:assistant/attempt.data.stream[0][3]`](#persistence-type-eventassistantattemptdatastream03) -- [`event:assistant/attempt.data.stream[0][1]`](#persistence-type-eventassistantattemptdatastream01) -- [`event:assistant/attempt.data.stream[0][0]`](#persistence-type-eventassistantattemptdatastream00) - - - -### `packages/llm/llm/src/call-config.ts#LlmCallConfig` - -SHA-256: `67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0` - -Sources: [`packages/llm/llm/src/call-config.ts:23`](../packages/llm/llm/src/call-config.ts) - -| Property | Presence | Type | -|---|---|---| -| `maxTokens` | optional | `number` | -| `model` | required | `string` | -| `provider` | required | `string` | -| `reasoningEffort` | optional | `string` | -| `stop` | optional | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `temperature` | optional | `number` | - - - -### `packages/llm/llm/src/call-config.ts#LlmCallConfigAdapterDefaults` - -SHA-256: `326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693` - -Sources: [`packages/llm/llm/src/call-config.ts:36`](../packages/llm/llm/src/call-config.ts) - -| Property | Presence | Type | -|---|---|---| -| `maxTokens` | optional | `true` | -| `reasoningEffort` | optional | `true` | + -### `packages/llm/llm/src/message.ts#AssistantMessage` +### `AssistantMessage` SHA-256: `e50b0a3ed8e6c80b672e4f855c91984f03b5c3fdd5d475bf171171f391a86c83` @@ -5150,146 +2853,80 @@ Sources: [`packages/llm/llm/src/message.ts:148`](../packages/llm/llm/src/message | Property | Presence | Type | |---|---|---| -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | | `id` | required | `string` | | `role` | required | `"assistant"` | -| `source` | required | [`packages/llm/llm/src/message.ts#ModelMessageSource`](#persistence-type-packagesllmllmsrcmessagetsmodelmessagesource) | +| `source` | required | [`ModelMessageSource`](#persistence-type-sha256-719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91) | - + -### `packages/llm/llm/src/message.ts#ContextSnapshotSection` + -SHA-256: `86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219` + -Sources: [`packages/llm/llm/src/message.ts:65`](../packages/llm/llm/src/message.ts) +### `AssistantStreamRecord` -| Property | Presence | Type | -|---|---|---| -| `name` | required | `string` | -| `text` | required | `string` | +SHA-256: `86cf1e44038cb8b11659863dd0efafe682e41b9c782265c1d50e0a687debfc60` - - -### `packages/llm/llm/src/message.ts#Message` - -SHA-256: `23c7cce57d20589897f4e2bd5898affc6fc611b87cd0cc8b95be1cfdd8b3a7eb` - -Sources: [`packages/llm/llm/src/message.ts:131`](../packages/llm/llm/src/message.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `id` | required | `string` | -| `role` | required | [`event:session/title-llm-request.data.messages[0].role`](#persistence-type-eventsessiontitle-llm-requestdatamessages0role) | -| `source` | required | [`packages/llm/llm/src/message.ts#MessageSource`](#persistence-type-packagesllmllmsrcmessagetsmessagesource) | - - - -### `packages/llm/llm/src/message.ts#MessageSource` - -SHA-256: `4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283` - -Sources: [`packages/llm/llm/src/message.ts:128`](../packages/llm/llm/src/message.ts) +Sources: [`packages/llm/llm/src/assistant-stream.ts:20`](../packages/llm/llm/src/assistant-stream.ts) One of: -- [`packages/context/agent-instructions/src/state.ts#AgentInstructionSource`](#persistence-type-packagescontextagent-instructionssrcstatetsagentinstructionsource) -- [`packages/llm/llm/src/message.ts#ToolMessageSource`](#persistence-type-packagesllmllmsrcmessagetstoolmessagesource) -- [`event:agent/inbox/spliced.data.inserted[0].source[11]`](#persistence-type-eventagentinboxspliceddatainserted0source11) -- [`event:agent/inbox/spliced.data.inserted[0].source[19]`](#persistence-type-eventagentinboxspliceddatainserted0source19) -- [`packages/skill/tool-skill/src/index.ts#SkillCatalogSource`](#persistence-type-packagesskilltool-skillsrcindextsskillcatalogsource) -- [`packages/skill/skill/src/index.ts#SkillInvocationSource`](#persistence-type-packagesskillskillsrcindextsskillinvocationsource) -- [`event:agent/inbox/spliced.data.inserted[0].source[4]`](#persistence-type-eventagentinboxspliceddatainserted0source4) -- [`event:agent/inbox/spliced.data.inserted[0].source[5]`](#persistence-type-eventagentinboxspliceddatainserted0source5) -- [`event:agent/inbox/spliced.data.inserted[0].source[6]`](#persistence-type-eventagentinboxspliceddatainserted0source6) -- [`event:agent/inbox/spliced.data.inserted[0].source[3]`](#persistence-type-eventagentinboxspliceddatainserted0source3) -- [`event:agent/inbox/spliced.data.inserted[0].source[2]`](#persistence-type-eventagentinboxspliceddatainserted0source2) -- [`event:agent/inbox/spliced.data.inserted[0].source[7]`](#persistence-type-eventagentinboxspliceddatainserted0source7) -- [`packages/context/session-reference/src/types.ts#SessionReferenceSource`](#persistence-type-packagescontextsession-referencesrctypestssessionreferencesource) -- [`packages/subagent/subagent/src/continuation-messages.ts#SubagentSettledMessageSource`](#persistence-type-packagessubagentsubagentsrccontinuation-messagestssubagentsettledmessagesource) -- [`packages/subagent/subagent/src/continuation-messages.ts#AgentMessageSource`](#persistence-type-packagessubagentsubagentsrccontinuation-messagestsagentmessagesource) -- [`packages/goal/goal/src/domain.ts#GoalMessageSource`](#persistence-type-packagesgoalgoalsrcdomaintsgoalmessagesource) -- [`packages/experimental/agent-team/src/types.ts#TeamMessageSource`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammessagesource) -- [`packages/llm/llm/src/message.ts#ModelMessageSource`](#persistence-type-packagesllmllmsrcmessagetsmodelmessagesource) -- [`event:agent/inbox/spliced.data.inserted[0].source[1]`](#persistence-type-eventagentinboxspliceddatainserted0source1) -- [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) +- [`{ type: "tool-call-chunks" }`](#persistence-type-sha256-3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6) +- [`{ type: "chunk" }`](#persistence-type-sha256-c93b6f51b399607349b4bcc66b58e848a44250ffc1e2537207bd092dfff94192) +- [`{ type: "reasoning-chunks" }`](#persistence-type-sha256-71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd) +- [`{ type: "text-chunks" }`](#persistence-type-sha256-e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33) - + -### `packages/llm/llm/src/message.ts#ModelMessageSource` +### `AssistantStreamRecord[]` -SHA-256: `719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91` +SHA-256: `26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346` -Sources: [`packages/llm/llm/src/message.ts:24`](../packages/llm/llm/src/message.ts) +Array of [`AssistantStreamRecord`](#persistence-type-sha256-86cf1e44038cb8b11659863dd0efafe682e41b9c782265c1d50e0a687debfc60). + + + + + + + +### `AtScheduleRecord` + +SHA-256: `658d895d187b26d83f3b53109a3bf77bbfba9f6f9a6d4bc4ee4315b4eb36239e` + +Sources: [`packages/schedule/schedule/src/types.ts:27`](../packages/schedule/schedule/src/types.ts) | Property | Presence | Type | |---|---|---| -| `kind` | required | `"model"` | -| `model` | required | `string` | -| `provider` | required | `string` | -| `replayState` | optional | `unknown` (opaque) | - - - -### `packages/llm/llm/src/message.ts#SystemMessage` - -SHA-256: `302b01ddddcbb3b16cfa3fba2a5d99f5082a55fbd9dc5c83a179a228b8a6a0ca` - -Sources: [`packages/llm/llm/src/message.ts:158`](../packages/llm/llm/src/message.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | | `id` | required | `string` | -| `role` | required | `"system"` | -| `source` | required | [`event:system/message.data.message.source`](#persistence-type-eventsystemmessagedatamessagesource) | +| `kind` | required | `"at"` | +| `prompt` | required | `string` | +| `scheduledAt` | required | `string` | - + -### `packages/llm/llm/src/message.ts#ToolMessageSource` + -SHA-256: `d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab` + -Sources: [`packages/llm/llm/src/message.ts:29`](../packages/llm/llm/src/message.ts) +### `CommandSource` + +SHA-256: `ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05` + +Sources: [`packages/core/session/src/types.ts:189`](../packages/core/session/src/types.ts) · [`packages/interaction/commands/src/types.ts:75`](../packages/interaction/commands/src/types.ts) · [`packages/interaction/commands/src/types.ts:79`](../packages/interaction/commands/src/types.ts) · [`packages/llm/llm/src/message.ts:103`](../packages/llm/llm/src/message.ts) · [`packages/session/session-title/src/types.ts:35`](../packages/session/session-title/src/types.ts) | Property | Presence | Type | |---|---|---| -| `callId` | required | `string` | -| `kind` | required | `"tool"` | +| `kind` | required | `"user"` | - + -### `packages/llm/llm/src/message.ts#ToolResultMessage` - -SHA-256: `1b573e2d5c094fa87e2a8bf409ddd4ac5ba92a123085e168de44b9ccdbd5244c` - -Sources: [`packages/llm/llm/src/message.ts:164`](../packages/llm/llm/src/message.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:tool/result.data.message.content`](#persistence-type-eventtoolresultdatamessagecontent) | -| `id` | required | `string` | -| `role` | required | `"user"` | -| `source` | required | [`packages/llm/llm/src/message.ts#ToolMessageSource`](#persistence-type-packagesllmllmsrcmessagetstoolmessagesource) | - - - -### `packages/llm/llm/src/message.ts#UserMessage` - -SHA-256: `4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7` - -Sources: [`packages/llm/llm/src/message.ts:143`](../packages/llm/llm/src/message.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `id` | required | `string` | -| `role` | required | `"user"` | -| `source` | required | [`packages/llm/llm/src/message.ts#MessageSource`](#persistence-type-packagesllmllmsrcmessagetsmessagesource) | + -### `packages/llm/llm/src/types.ts#ContentBlock` +### `ContentBlock` SHA-256: `c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56` @@ -5297,16 +2934,20 @@ Sources: [`packages/llm/llm/src/types.ts:137`](../packages/llm/llm/src/types.ts) One of: -- [`packages/llm/llm/src/types.ts#ReasoningBlock`](#persistence-type-packagesllmllmsrctypestsreasoningblock) -- [`event:web/deepseek-search-llm-request.data.body.messages[0].content[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0content0) -- [`packages/llm/llm/src/types.ts#ToolCallBlock`](#persistence-type-packagesllmllmsrctypeststoolcallblock) -- [`packages/llm/llm/src/types.ts#ImageBlock`](#persistence-type-packagesllmllmsrctypestsimageblock) -- [`packages/llm/llm/src/types.ts#FileBlock`](#persistence-type-packagesllmllmsrctypestsfileblock) -- [`packages/llm/llm/src/types.ts#ToolResultBlock`](#persistence-type-packagesllmllmsrctypeststoolresultblock) +- [`ReasoningBlock`](#persistence-type-sha256-814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e) +- [`TextBlock`](#persistence-type-sha256-4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c) +- [`ToolCallBlock`](#persistence-type-sha256-c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea) +- [`ImageBlock`](#persistence-type-sha256-12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7) +- [`FileBlock`](#persistence-type-sha256-f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef) +- [`ToolResultBlock`](#persistence-type-sha256-d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127) + + + + -### `packages/llm/llm/src/types.ts#ContentBlockType` +### `ContentBlockType` SHA-256: `757013fff5879d73d5753d8d1120faab56110e88ac3932485ab7e034d9e9ce61` @@ -5321,219 +2962,106 @@ One of: - `"tool-call"` - `"tool-result"` - + -### `packages/llm/llm/src/types.ts#FileBlock` +### `ContentBlock[]` -SHA-256: `f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef` +SHA-256: `bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75` -Sources: [`packages/llm/llm/src/types.ts:97`](../packages/llm/llm/src/types.ts) +Array of [`ContentBlock`](#persistence-type-sha256-c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56). -| Property | Presence | Type | -|---|---|---| -| `attachment` | required | [`packages/attachment/attachment/src/types.ts#FileAttachmentRef`](#persistence-type-packagesattachmentattachmentsrctypestsfileattachmentref) | -| `type` | required | `"file"` | + - + -### `packages/llm/llm/src/types.ts#FinishReason` + -SHA-256: `5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80` +### `ContextSnapshotSection` -Sources: [`packages/llm/llm/src/types.ts:152`](../packages/llm/llm/src/types.ts) +SHA-256: `86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219` -One of: - -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[3]`](#persistence-type-eventassistantattemptdatastream03chunk6reason3) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[4]`](#persistence-type-eventassistantattemptdatastream03chunk6reason4) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[0]`](#persistence-type-eventassistantattemptdatastream03chunk6reason0) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[1]`](#persistence-type-eventassistantattemptdatastream03chunk6reason1) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]`](#persistence-type-eventassistantattemptdatastream03chunk6reason2) - - - -### `packages/llm/llm/src/types.ts#ImageBlock` - -SHA-256: `12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7` - -Sources: [`packages/llm/llm/src/types.ts:78`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `attachment` | required | [`packages/attachment/attachment/src/types.ts#ImageAttachmentRef`](#persistence-type-packagesattachmentattachmentsrctypestsimageattachmentref) | -| `offloaded` | optional | `true` | -| `type` | required | `"image"` | - - - -### `packages/llm/llm/src/types.ts#LlmFailure` - -SHA-256: `5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca` - -Sources: [`packages/llm/llm/src/types.ts:40`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `code` | required | `string` | -| `message` | required | `string` | -| `offloadImages` | optional | `number` | -| `providerRetryAfterMs` | optional | `number` | -| `requestId` | optional | `string` | -| `status` | optional | `number` | - - - -### `packages/llm/llm/src/types.ts#ReasoningBlock` - -SHA-256: `814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e` - -Sources: [`packages/llm/llm/src/types.ts:67`](../packages/llm/llm/src/types.ts) +Sources: [`packages/llm/llm/src/message.ts:65`](../packages/llm/llm/src/message.ts) | Property | Presence | Type | |---|---|---| +| `name` | required | `string` | | `text` | required | `string` | -| `type` | required | `"reasoning"` | - + -### `packages/llm/llm/src/types.ts#ReplayEnvelope` +### `ContextSnapshotSection[]` -SHA-256: `0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555` +SHA-256: `c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262` -Sources: [`packages/llm/llm/src/types.ts:404`](../packages/llm/llm/src/types.ts) +Array of [`ContextSnapshotSection`](#persistence-type-sha256-86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219). + + + + + + + +### `ContinuableSubagentDescriptorData` + +SHA-256: `6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f` + +Sources: [`packages/subagent/subagent/src/descriptor.ts:72`](../packages/subagent/subagent/src/descriptor.ts) | Property | Presence | Type | |---|---|---| -| `blocks` | optional | [`event:assistant/attempt.data.stream[0][3].chunk[6].replayState.blocks`](#persistence-type-eventassistantattemptdatastream03chunk6replaystateblocks) | -| `response` | required | `unknown` (opaque) | +| `agentModel` | optional | `string` | +| `agentProvider` | optional | `string` | +| `agentReasoningEffort` | optional | `string` | +| `label` | required | `string` | +| `mode` | required | `"continuable"` | +| `persona` | optional | `string` | +| `provider` | required | `string` | +| `toolFilter` | optional | [`ToolRestriction`](#persistence-type-sha256-3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f) | +| `version` | required | `number` | - + -### `packages/llm/llm/src/types.ts#StreamChunk` + -SHA-256: `071d92b9dac661fcc826c678cf64d188f26fb93aab79c627b11a03acdd34dfca` + -Sources: [`packages/llm/llm/src/types.ts:426`](../packages/llm/llm/src/types.ts) +### `DeepSeekSearchLlmRequest` -One of: +SHA-256: `2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9` -- [`event:assistant/attempt.data.stream[0][3].chunk[3]`](#persistence-type-eventassistantattemptdatastream03chunk3) -- [`event:assistant/attempt.data.stream[0][3].chunk[4]`](#persistence-type-eventassistantattemptdatastream03chunk4) -- [`event:assistant/attempt.data.stream[0][3].chunk[0]`](#persistence-type-eventassistantattemptdatastream03chunk0) -- [`event:assistant/attempt.data.stream[0][3].chunk[2]`](#persistence-type-eventassistantattemptdatastream03chunk2) -- [`event:assistant/attempt.data.stream[0][3].chunk[1]`](#persistence-type-eventassistantattemptdatastream03chunk1) -- [`event:assistant/attempt.data.stream[0][3].chunk[6]`](#persistence-type-eventassistantattemptdatastream03chunk6) -- [`event:assistant/attempt.data.stream[0][3].chunk[5]`](#persistence-type-eventassistantattemptdatastream03chunk5) - - - -### `packages/llm/llm/src/types.ts#TokenUsage` - -SHA-256: `fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394` - -Sources: [`packages/llm/llm/src/types.ts:162`](../packages/llm/llm/src/types.ts) +Sources: [`packages/web/web-search-deepseek/src/provider.ts:55`](../packages/web/web-search-deepseek/src/provider.ts) | Property | Presence | Type | |---|---|---| -| `cacheReadTokens` | optional | `number` | -| `cacheWriteTokens` | optional | `number` | -| `inputTokens` | required | `number` | -| `outputTokens` | required | `number` | -| `reasoningTokens` | optional | `number` | -| `totalTokens` | optional | `number` | +| `apiVersion` | required | `string` | +| `body` | required | [`{ max_tokens, messages, model, tools }`](#persistence-type-sha256-930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731) | +| `endpoint` | required | `string` | - + -### `packages/llm/llm/src/types.ts#ToolCallBlock` + -SHA-256: `c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea` + -Sources: [`packages/llm/llm/src/types.ts:104`](../packages/llm/llm/src/types.ts) +### `EpochHeader` + +SHA-256: `c55a891c7aac496de6ee64c91c1fb65728c977314013033e42c863428aada854` + +Sources: [`packages/core/session/src/types.ts:239`](../packages/core/session/src/types.ts) | Property | Presence | Type | |---|---|---| -| `arguments` | required | `string` | -| `id` | required | `string` | -| `name` | required | `string` | -| `type` | required | `"tool-call"` | +| `adapterDefaults` | optional | [`LlmCallConfigAdapterDefaults`](#persistence-type-sha256-326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693) | +| `config` | required | [`LlmCallConfig`](#persistence-type-sha256-67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0) | +| `tools` | optional | [`ToolSchema[]`](#persistence-type-sha256-6d63f25a28b70801937a46b1058be5f52d4efbaf3516141470463ae469b59c23) | - + -### `packages/llm/llm/src/types.ts#ToolResultBlock` - -SHA-256: `d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127` - -Sources: [`packages/llm/llm/src/types.ts:114`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `content` | required | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `isError` | optional | `boolean` | -| `toolCallId` | required | `string` | -| `type` | required | `"tool-result"` | - - - -### `packages/llm/llm/src/types.ts#ToolSchema` - -SHA-256: `7f5f2a8618c2ece530a18b1358b890fb57fb8c35705e47b66bff2296f8c6e889` - -Sources: [`packages/llm/llm/src/types.ts:447`](../packages/llm/llm/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `description` | required | `string` | -| `name` | required | `string` | -| `parameters` | required | [`event:request/header.data.header.tools[0].parameters`](#persistence-type-eventrequestheaderdataheadertools0parameters) | - - - -### `packages/sandbox/sandbox/src/index.ts#SandboxMode` - -SHA-256: `fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd` - -Sources: [`packages/sandbox/sandbox/src/index.ts:29`](../packages/sandbox/sandbox/src/index.ts) - -One of: - -- `"danger-full-access"` -- `"read-only"` -- `"workspace-write"` - - - -### `packages/schedule/schedule/src/types.ts#AfterScheduleRecord` - -SHA-256: `27e337d3d6b402b221e50c247a3f518a70d0c474cc60beee15fac3e9c5cbfcbe` - -Sources: [`packages/schedule/schedule/src/types.ts:13`](../packages/schedule/schedule/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `afterSeconds` | required | `number` | -| `id` | required | `string` | -| `kind` | required | `"after"` | -| `prompt` | required | `string` | -| `scheduledAt` | required | `string` | - - - -### `packages/schedule/schedule/src/types.ts#AtScheduleRecord` - -SHA-256: `658d895d187b26d83f3b53109a3bf77bbfba9f6f9a6d4bc4ee4315b4eb36239e` - -Sources: [`packages/schedule/schedule/src/types.ts:27`](../packages/schedule/schedule/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `id` | required | `string` | -| `kind` | required | `"at"` | -| `prompt` | required | `string` | -| `scheduledAt` | required | `string` | + -### `packages/schedule/schedule/src/types.ts#EveryScheduleDispatchChange` +### `EveryScheduleDispatchChange` SHA-256: `e6063d0451dc02026fd9b54ad3f77c7b1b6392ad3e872a7737ac84e13ca72344` @@ -5546,9 +3074,13 @@ Sources: [`packages/schedule/schedule/src/types.ts:93`](../packages/schedule/sch | `operation` | required | `"dispatch"` | | `version` | required | `1` | + + + + -### `packages/schedule/schedule/src/types.ts#EveryScheduleRecord` +### `EveryScheduleRecord` SHA-256: `66ece68282d8c06330fb83329a24ae54c386d5ccfab296bbf18369da8beb7d14` @@ -5562,80 +3094,239 @@ Sources: [`packages/schedule/schedule/src/types.ts:39`](../packages/schedule/sch | `prompt` | required | `string` | | `scheduledAt` | required | `string` | - + -### `packages/schedule/schedule/src/types.ts#OneShotScheduleDispatchChange` + -SHA-256: `8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af` + -Sources: [`packages/schedule/schedule/src/types.ts:86`](../packages/schedule/schedule/src/types.ts) +### `FeedbackRecord` + +SHA-256: `7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344` + +Sources: [`packages/feedback/command-feedback/src/types.ts:27`](../packages/feedback/command-feedback/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `category` | optional | [`union (7 variants)`](#persistence-type-sha256-3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd) | +| `text` | optional | `string` | + + + + + + + +### `FileAttachmentRef` + +SHA-256: `f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6` + +Sources: [`packages/attachment/attachment/src/types.ts:39`](../packages/attachment/attachment/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `attachmentId` | required | `string` | +| `bytes` | required | `number` | +| `name` | required | `string` | + + + + + + + +### `FileBlock` + +SHA-256: `f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef` + +Sources: [`packages/llm/llm/src/types.ts:97`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `attachment` | required | [`FileAttachmentRef`](#persistence-type-sha256-f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6) | +| `type` | required | `"file"` | + + + + + + + +### `FinishReason` + +SHA-256: `5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80` + +Sources: [`packages/llm/llm/src/types.ts:152`](../packages/llm/llm/src/types.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `aborted` | not declared | `failure`: [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | [`{ failure, kind: "aborted" }`](#persistence-type-sha256-8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0) | +| `error` | not declared | `failure`: [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | [`{ failure, kind: "error" }`](#persistence-type-sha256-693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057) | +| `max-tokens` | not declared | none | [`{ kind: "max-tokens" }`](#persistence-type-sha256-ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7) | +| `stop` | not declared | none | [`{ kind: "stop" }`](#persistence-type-sha256-1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f) | +| `tool-calls` | not declared | none | [`{ kind: "tool-calls" }`](#persistence-type-sha256-287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a) | + + + + + + + +### `GoalBlockReason` + +SHA-256: `84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c` + +Sources: [`packages/goal/goal/src/types.ts:52`](../packages/goal/goal/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `code` | required | `string` | +| `message` | required | `string` | + + + + + + + +### `GoalChangeMeta` + +SHA-256: `7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438` + +Sources: [`packages/goal/goal/src/domain.ts:44`](../packages/goal/goal/src/domain.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `goal/change` | not declared | `createdAt`: `number`; `goal`: [`GoalSnapshot`](#persistence-type-sha256-6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25); `operation`: [`union (6 variants)`](#persistence-type-sha256-62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379); `roundsStarted`: `number`; `updatedAt`: `number`; `version`: `1` | [`GoalSnapshotChangeMeta`](#persistence-type-sha256-1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4) | +| `goal/change` | not declared | `cleared`: [`GoalRef`](#persistence-type-sha256-0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f); `clearedAt`: `number`; `operation`: `"clear"`; `version`: `1` | [`GoalClearChangeMeta`](#persistence-type-sha256-cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f) | + + + + + + + +### `GoalClearChangeMeta` + +SHA-256: `cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f` + +Sources: [`packages/goal/goal/src/domain.ts:35`](../packages/goal/goal/src/domain.ts) + +| Property | Presence | Type | +|---|---|---| +| `cleared` | required | [`GoalRef`](#persistence-type-sha256-0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f) | +| `clearedAt` | required | `number` | +| `kind` | required | `"goal/change"` | +| `operation` | required | `"clear"` | +| `version` | required | `1` | + + + + + + + +### `GoalMessageSource` + +SHA-256: `7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc` + +Sources: [`packages/goal/goal/src/domain.ts:47`](../packages/goal/goal/src/domain.ts) + +| Property | Presence | Type | +|---|---|---| +| `goalId` | required | `string` | +| `kind` | required | `"goal"` | +| `revision` | required | `number` | +| `round` | required | `number` | + + + + + + + +### `GoalPhase` + +SHA-256: `b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172` + +Sources: [`packages/goal/goal/src/types.ts:45`](../packages/goal/goal/src/types.ts) + +One of: + +- `"active"` +- `"blocked"` +- `"complete"` +- `"paused"` + + + + + + + +### `GoalRef` + +SHA-256: `0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f` + +Sources: [`packages/goal/goal/src/types.ts:20`](../packages/goal/goal/src/types.ts) | Property | Presence | Type | |---|---|---| | `id` | required | `string` | -| `operation` | required | `"dispatch"` | -| `version` | required | `1` | +| `revision` | required | `number` | - + -### `packages/schedule/schedule/src/types.ts#ScheduleChange` + -SHA-256: `e1d0e52dcd1855ffb803efc18f8f7b776c48d1c25757e8a75c0281fa298c02e1` + -Sources: [`packages/schedule/schedule/src/types.ts:105`](../packages/schedule/schedule/src/types.ts) +### `GoalSnapshot` -One of: +SHA-256: `6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25` -- [`packages/schedule/schedule/src/types.ts#EveryScheduleDispatchChange`](#persistence-type-packagesscheduleschedulesrctypestseveryscheduledispatchchange) -- [`packages/schedule/schedule/src/types.ts#ScheduleDeleteChange`](#persistence-type-packagesscheduleschedulesrctypestsscheduledeletechange) -- [`packages/schedule/schedule/src/types.ts#OneShotScheduleDispatchChange`](#persistence-type-packagesscheduleschedulesrctypestsoneshotscheduledispatchchange) -- [`packages/schedule/schedule/src/types.ts#ScheduleCreateChange`](#persistence-type-packagesscheduleschedulesrctypestsschedulecreatechange) - - - -### `packages/schedule/schedule/src/types.ts#ScheduleCreateChange` - -SHA-256: `ca6425edd20afe34d0cedc6ad1abad1ad7b32e2fbc4c1d24db53939e80bf887f` - -Sources: [`packages/schedule/schedule/src/types.ts:72`](../packages/schedule/schedule/src/types.ts) - -| Property | Presence | Type | -|---|---|---| -| `operation` | required | `"create"` | -| `schedule` | required | [`packages/schedule/schedule/src/types.ts#ScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestsschedulerecord) | -| `version` | required | `1` | - - - -### `packages/schedule/schedule/src/types.ts#ScheduleDeleteChange` - -SHA-256: `18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0` - -Sources: [`packages/schedule/schedule/src/types.ts:79`](../packages/schedule/schedule/src/types.ts) +Sources: [`packages/goal/goal/src/types.ts:60`](../packages/goal/goal/src/types.ts) | Property | Presence | Type | |---|---|---| +| `blockedReason` | optional | [`GoalBlockReason`](#persistence-type-sha256-84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c) | | `id` | required | `string` | -| `operation` | required | `"delete"` | +| `maxGoalRounds` | required | `number` | +| `objective` | required | `string` | +| `phase` | required | [`GoalPhase`](#persistence-type-sha256-b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172) | +| `revision` | required | `number` | + + + + + + + +### `GoalSnapshotChangeMeta` + +SHA-256: `1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4` + +Sources: [`packages/goal/goal/src/domain.ts:24`](../packages/goal/goal/src/domain.ts) + +| Property | Presence | Type | +|---|---|---| +| `createdAt` | required | `number` | +| `goal` | required | [`GoalSnapshot`](#persistence-type-sha256-6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25) | +| `kind` | required | `"goal/change"` | +| `operation` | required | [`union (6 variants)`](#persistence-type-sha256-62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379) | +| `roundsStarted` | required | `number` | +| `updatedAt` | required | `number` | | `version` | required | `1` | - + -### `packages/schedule/schedule/src/types.ts#ScheduleRecord` + -SHA-256: `d8f868c6b3e7189de6c1ffe2ea04794ea2aa31315b6347d12536e46020afac87` - -Sources: [`packages/schedule/schedule/src/types.ts:69`](../packages/schedule/schedule/src/types.ts) - -One of: - -- [`packages/schedule/schedule/src/types.ts#AfterScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestsafterschedulerecord) -- [`packages/schedule/schedule/src/types.ts#EveryScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestseveryschedulerecord) -- [`packages/schedule/schedule/src/types.ts#AtScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestsatschedulerecord) + -### `packages/session/session-persistence-jsonl/src/format.ts#HeaderLine` +### `HeaderLine` SHA-256: `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` @@ -5654,158 +3345,445 @@ Sources: [`packages/session/session-persistence-jsonl/src/format.ts:82`](../pack | `type` | required | `"session"` | | `version` | required | `number` | - + -### `packages/session/session-title-llm/src/index.ts#SessionTitleLlmRequestEventData` + -SHA-256: `9fe0e77a7816b7fdb4b953ec0e2f0cd7bbd22c5de5c3567e612d1b20eb0992e6` + -Sources: [`packages/session/session-title-llm/src/index.ts:27`](../packages/session/session-title-llm/src/index.ts) +### `HookDialect` + +SHA-256: `a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb` + +Sources: [`packages/hooks/hook-protocol/src/types.ts:48`](../packages/hooks/hook-protocol/src/types.ts) + +One of: + +- `"claude-code"` +- `"codex"` + + + + + + + +### `ImageAttachmentRef` + +SHA-256: `b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35` + +Sources: [`packages/attachment/attachment/src/types.ts:11`](../packages/attachment/attachment/src/types.ts) | Property | Presence | Type | |---|---|---| -| `maxTokens` | required | `number` | -| `messageSeqs` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `messages` | required | [`event:session/title-llm-request.data.messages`](#persistence-type-eventsessiontitle-llm-requestdatamessages) | -| `route` | required | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | -| `system` | required | `string` | -| `titleProvider` | required | `string` | +| `attachmentId` | required | `string` | +| `bytes` | required | `number` | +| `height` | required | `number` | +| `mediaType` | required | [`ImageMediaType`](#persistence-type-sha256-2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716) | +| `name` | optional | `string` | +| `originalDimensions` | optional | [`{ height, width }`](#persistence-type-sha256-0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef) | +| `width` | required | `number` | - + -### `packages/session/session-title/src/types.ts#SessionTitleEventData` + -SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4` + -Sources: [`packages/session/session-title/src/types.ts:41`](../packages/session/session-title/src/types.ts) +### `ImageBlock` + +SHA-256: `12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7` + +Sources: [`packages/llm/llm/src/types.ts:78`](../packages/llm/llm/src/types.ts) | Property | Presence | Type | |---|---|---| -| `messageSeqs` | required | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `source` | required | [`packages/session/session-title/src/types.ts#SessionTitleSource`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlesource) | -| `title` | required | `string` | +| `attachment` | required | [`ImageAttachmentRef`](#persistence-type-sha256-b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35) | +| `offloaded` | optional | `true` | +| `type` | required | `"image"` | - + -### `packages/session/session-title/src/types.ts#SessionTitleModelIdentity` + -SHA-256: `07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235` + -Sources: [`packages/session/session-title/src/types.ts:20`](../packages/session/session-title/src/types.ts) · [`packages/subagent/tool-subagent/src/model-selection.ts:9`](../packages/subagent/tool-subagent/src/model-selection.ts) +### `ImageMediaType` + +SHA-256: `2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716` + +Sources: [`packages/attachment/attachment/src/types.ts:8`](../packages/attachment/attachment/src/types.ts) + +One of: + +- `"image/gif"` +- `"image/jpeg"` +- `"image/png"` +- `"image/webp"` + + + + + + + +### `ImageOffloadTarget` + +SHA-256: `1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f` + +Sources: [`packages/compaction/compaction-image-offload/src/projection.ts:9`](../packages/compaction/compaction-image-offload/src/projection.ts) + +| Property | Presence | Type | +|---|---|---| +| `imageIndexes` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `seq` | required | `number` | + + + +### `ImageOffloadTarget[]` + +SHA-256: `9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb` + +Array of [`ImageOffloadTarget`](#persistence-type-sha256-1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f). + + + + + + + +### `InboxTarget` + +SHA-256: `96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c` + +Sources: [`packages/core/agent/src/types.ts:30`](../packages/core/agent/src/types.ts) + +One of: + +- `"next-step"` +- `"next-turn"` + + + + + + + +### `JsonValue` + +SHA-256: `c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6` + +Sources: [`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) + +One of: + +- [`JsonValue[]`](#persistence-type-sha256-72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227) +- [`{}`](#persistence-type-sha256-529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05) +- `string` +- `boolean` +- `null` +- `number` + + + +### `JsonValue[]` + +SHA-256: `72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227` + +Array of [`JsonValue`](#persistence-type-sha256-c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6). + + + + + + + +### `LlmCallConfig` + +SHA-256: `67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0` + +Sources: [`packages/llm/llm/src/call-config.ts:23`](../packages/llm/llm/src/call-config.ts) + +| Property | Presence | Type | +|---|---|---| +| `maxTokens` | optional | `number` | +| `model` | required | `string` | +| `provider` | required | `string` | +| `reasoningEffort` | optional | `string` | +| `stop` | optional | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `temperature` | optional | `number` | + + + + + + + +### `LlmCallConfigAdapterDefaults` + +SHA-256: `326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693` + +Sources: [`packages/llm/llm/src/call-config.ts:36`](../packages/llm/llm/src/call-config.ts) + +| Property | Presence | Type | +|---|---|---| +| `maxTokens` | optional | `true` | +| `reasoningEffort` | optional | `true` | + + + + + + + +### `LlmFailure` + +SHA-256: `5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca` + +Sources: [`packages/llm/llm/src/types.ts:40`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `code` | required | `string` | +| `message` | required | `string` | +| `offloadImages` | optional | `number` | +| `providerRetryAfterMs` | optional | `number` | +| `requestId` | optional | `string` | +| `status` | optional | `number` | + + + + + + + +### `LlmRetryEventData` + +SHA-256: `c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1` + +Sources: [`packages/llm/llm-retry/src/types.ts:16`](../packages/llm/llm-retry/src/types.ts) + +One of: + +- [`{ delayMs, failure, maxRetries, mode, … }`](#persistence-type-sha256-cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced) +- [`{ delayMs, failure, mode, policyKey, … }`](#persistence-type-sha256-374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b) + + + + + + + +### `LlmRetryStartedEventData` + +SHA-256: `6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20` + +Sources: [`packages/llm/llm-retry/src/types.ts:43`](../packages/llm/llm-retry/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `retry` | required | `number` | +| `retryId` | required | `string` | +| `step` | required | `number` | +| `turn` | required | `number` | + + + + + + + +### `Message` + +SHA-256: `23c7cce57d20589897f4e2bd5898affc6fc611b87cd0cc8b95be1cfdd8b3a7eb` + +Sources: [`packages/llm/llm/src/message.ts:131`](../packages/llm/llm/src/message.ts) + +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | required | `string` | +| `role` | required | [`union (3 variants)`](#persistence-type-sha256-acd36e1717d2b4ef9e98a8e6fac17ca1203f3f448e5bca51677f129a8f4999e2) | +| `source` | required | [`MessageSource`](#persistence-type-sha256-4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283) | + + + + + + + +### `MessageFeedbackDelete` + +SHA-256: `7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06` + +Sources: [`packages/feedback/message-feedback/src/types.ts:46`](../packages/feedback/message-feedback/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `messageId` | required | `string` | +| `sessionId` | required | `string` | + + + + + + + +### `MessageFeedbackItem` + +SHA-256: `3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182` + +Sources: [`packages/feedback/message-feedback/src/types.ts:20`](../packages/feedback/message-feedback/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `category` | optional | [`union (7 variants)`](#persistence-type-sha256-3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd) | +| `createdAt` | required | `number` | +| `messageId` | required | `string` | +| `note` | optional | `string` | +| `rating` | required | [`MessageFeedbackRating`](#persistence-type-sha256-390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2) | +| `updatedAt` | required | `number` | +| `version` | required | `string` | + + + + + + + +### `MessageFeedbackPut` + +SHA-256: `aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626` + +Sources: [`packages/feedback/message-feedback/src/types.ts:38`](../packages/feedback/message-feedback/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `item` | required | [`MessageFeedbackItem`](#persistence-type-sha256-3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182) | +| `sessionId` | required | `string` | + + + + + + + +### `MessageFeedbackRating` + +SHA-256: `390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2` + +Sources: [`packages/feedback/message-feedback/src/types.ts:17`](../packages/feedback/message-feedback/src/types.ts) + +One of: + +- `"negative"` +- `"positive"` + + + + + + + +### `MessageSource` + +SHA-256: `4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283` + +Sources: [`packages/llm/llm/src/message.ts:128`](../packages/llm/llm/src/message.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `agent-instructions` | `"instructions"` | `changes`: [`AgentInstructionChange[]`](#persistence-type-sha256-2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee) | [`AgentInstructionSource`](#persistence-type-sha256-6f22a9d02b9a1f1157f3b0e7bdccd7e7b12b085c4efdb709dfc74a465cd4e590) | +| `agent-message` | `"relay"` | `senderSessionId`: `string` | [`AgentMessageSource`](#persistence-type-sha256-4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86) | +| `goal` | not declared | `goalId`: `string`; `revision`: `number`; `round`: `number` | [`GoalMessageSource`](#persistence-type-sha256-7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc) | +| `model` | not declared | `model`: `string`; `provider`: `string` | [`ModelMessageSource`](#persistence-type-sha256-719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91) | +| `plugin` | `"catalog"` | `plugin`: `string` | [`{ kind: "plugin", form: "catalog" }`](#persistence-type-sha256-2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc) | +| `plugin` | `"instructions"` | `plugin`: `string` | [`{ kind: "plugin", form: "instructions" }`](#persistence-type-sha256-dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412) | +| `plugin` | `"notice"` | `plugin`: `string`; `summary`: `string` | [`{ kind: "plugin", form: "notice" }`](#persistence-type-sha256-b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43) | +| `plugin` | `"recall"` | `plugin`: `string` | [`{ kind: "plugin", form: "recall" }`](#persistence-type-sha256-85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01) | +| `plugin` | `"relay"` | `plugin`: `string` | [`{ kind: "plugin", form: "relay" }`](#persistence-type-sha256-2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c) | +| `plugin` | `"snapshot"` | `plugin`: `string`; `sections`: [`ContextSnapshotSection[]`](#persistence-type-sha256-c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262) | [`{ kind: "plugin", form: "snapshot" }`](#persistence-type-sha256-e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f) | +| `plugin` | not declared | `plugin`: `string` | [`{ kind: "plugin" }`](#persistence-type-sha256-0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8) | +| `session-reference` | `"recall"` | `references`: [`{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]`](#persistence-type-sha256-df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18); `version`: `1` | [`SessionReferenceSource`](#persistence-type-sha256-f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f) | +| `skill-catalog` | `"catalog"` | `entries`: [`{ description, name }[]`](#persistence-type-sha256-aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba) | [`SkillCatalogSource`](#persistence-type-sha256-fc2ae6962f9f8801c2b1e414668e1e17cbb7544c4f39381198977a38bd10c093) | +| `skill-invocation` | `"instructions"` | `name`: `string` | [`SkillInvocationSource`](#persistence-type-sha256-672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db) | +| `subagent-settled` | `"notice"` | `senderSessionId`: `string`; `summary`: `string` | [`SubagentSettledMessageSource`](#persistence-type-sha256-4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a) | +| `team-message` | not declared | `messageId`: `string`; `senderId`: `string`; `senderName`: `string`; `teamId`: `string` | [`TeamMessageSource`](#persistence-type-sha256-2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0) | +| `tool` | not declared | `callId`: `string` | [`ToolMessageSource`](#persistence-type-sha256-d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab) | +| `user` | not declared | `rpcId`: `string` | [`{ kind: "user" }`](#persistence-type-sha256-6a4f72e2e179e17b922f2a9392c0e1c8f8c707f32494372454850a3eb184a6e7) | +| `user` | not declared | none | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | +| `webhook` | `"notice"` | `deliveryId`: `string`; `provider`: `string`; `ruleId`: `string`; `source`: `string`; `summary`: `string` | [`{ kind: "webhook", form: "notice" }`](#persistence-type-sha256-9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94) | + + + +### `Message[]` + +SHA-256: `478738df7e7d2b103b09fb937817a9302c81076809f2b341169e00a9419c5665` + +Array of [`Message`](#persistence-type-sha256-23c7cce57d20589897f4e2bd5898affc6fc611b87cd0cc8b95be1cfdd8b3a7eb). + + + + + + + +### `ModelMessageSource` + +SHA-256: `719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91` + +Sources: [`packages/llm/llm/src/message.ts:24`](../packages/llm/llm/src/message.ts) + +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"model"` | +| `model` | required | `string` | +| `provider` | required | `string` | +| `replayState` | optional | `unknown` (opaque) | + + + + + + + +### `ModelSelection` + +SHA-256: `f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b` + +Sources: [`packages/api/session-controller/src/types.ts:86`](../packages/api/session-controller/src/types.ts) | Property | Presence | Type | |---|---|---| | `model` | required | `string` | | `provider` | required | `string` | +| `reasoningEffort` | optional | `string` | - + -### `packages/session/session-title/src/types.ts#SessionTitleSource` + -SHA-256: `30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f` + -Sources: [`packages/session/session-title/src/types.ts:28`](../packages/session/session-title/src/types.ts) +### `OneShotScheduleDispatchChange` -One of: +SHA-256: `8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af` -- [`event:session/title.data.source[1]`](#persistence-type-eventsessiontitledatasource1) -- [`event:session/title.data.source[0]`](#persistence-type-eventsessiontitledatasource0) -- [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) - - - -### `packages/skill/skill/src/index.ts#SkillInvocationSource` - -SHA-256: `672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db` - -Sources: [`packages/skill/skill/src/index.ts:146`](../packages/skill/skill/src/index.ts) +Sources: [`packages/schedule/schedule/src/types.ts:86`](../packages/schedule/schedule/src/types.ts) | Property | Presence | Type | |---|---|---| -| `form` | required | `"instructions"` | -| `kind` | required | `"skill-invocation"` | -| `name` | required | `string` | +| `id` | required | `string` | +| `operation` | required | `"dispatch"` | +| `version` | required | `1` | - + -### `packages/skill/tool-skill/src/index.ts#SkillCatalogSource` - -SHA-256: `fc2ae6962f9f8801c2b1e414668e1e17cbb7544c4f39381198977a38bd10c093` - -Sources: [`packages/skill/tool-skill/src/index.ts:34`](../packages/skill/tool-skill/src/index.ts) - -| Property | Presence | Type | -|---|---|---| -| `entries` | required | [`event:agent/inbox/spliced.data.inserted[0].source[17].entries`](#persistence-type-eventagentinboxspliceddatainserted0source17entries) | -| `form` | required | `"catalog"` | -| `kind` | required | `"skill-catalog"` | -| `update` | optional | `true` | - - - -### `packages/subagent/subagent/src/catalog.ts#SubagentCatalogEvent` - -SHA-256: `3ac1196f59d5e9e0e9345122c8c403b102478b526404a2e591a38f613483321e` - -Sources: [`packages/subagent/subagent/src/catalog.ts:24`](../packages/subagent/subagent/src/catalog.ts) - -One of: - -- [`event:subagent/catalog.data[1]`](#persistence-type-eventsubagentcatalogdata1) -- [`event:subagent/catalog.data[0]`](#persistence-type-eventsubagentcatalogdata0) - - - -### `packages/subagent/subagent/src/continuation-messages.ts#AgentMessageSource` - -SHA-256: `4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86` - -Sources: [`packages/subagent/subagent/src/continuation-messages.ts:15`](../packages/subagent/subagent/src/continuation-messages.ts) - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"relay"` | -| `kind` | required | `"agent-message"` | -| `senderSessionId` | required | `string` | - - - -### `packages/subagent/subagent/src/continuation-messages.ts#SubagentSettledMessageSource` - -SHA-256: `4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a` - -Sources: [`packages/subagent/subagent/src/continuation-messages.ts:30`](../packages/subagent/subagent/src/continuation-messages.ts) - -| Property | Presence | Type | -|---|---|---| -| `form` | required | `"notice"` | -| `kind` | required | `"subagent-settled"` | -| `senderSessionId` | required | `string` | -| `summary` | required | `string` | - - - -### `packages/subagent/subagent/src/descriptor.ts#ContinuableSubagentDescriptorData` - -SHA-256: `6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f` - -Sources: [`packages/subagent/subagent/src/descriptor.ts:72`](../packages/subagent/subagent/src/descriptor.ts) - -| Property | Presence | Type | -|---|---|---| -| `agentModel` | optional | `string` | -| `agentProvider` | optional | `string` | -| `agentReasoningEffort` | optional | `string` | -| `label` | required | `string` | -| `mode` | required | `"continuable"` | -| `persona` | optional | `string` | -| `provider` | required | `string` | -| `toolFilter` | optional | [`packages/core/tools/src/index.ts#ToolRestriction`](#persistence-type-packagescoretoolssrcindextstoolrestriction) | -| `version` | required | `number` | + -### `packages/subagent/subagent/src/descriptor.ts#OneShotSubagentDescriptorData` +### `OneShotSubagentDescriptorData` SHA-256: `5f758f3de5f00c18968a7c6d347083aac5c9ae13f6a79c78f6611b23c4973564` @@ -5818,9 +3796,466 @@ Sources: [`packages/subagent/subagent/src/descriptor.ts:61`](../packages/subagen | `provider` | required | `string` | | `version` | required | `number` | + + + + + + +### `OptionalSessionSeq` + +SHA-256: `3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f` + +Sources: [`packages/core/session/src/types.ts:64`](../packages/core/session/src/types.ts) + +One of: + +- `null` +- `number` + + + + + + + +### `PresentedFile` + +SHA-256: `b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97` + +Sources: [`packages/deliverables/tool-present/src/types.ts:5`](../packages/deliverables/tool-present/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `description` | optional | `string` | +| `path` | required | `string` | + + + +### `PresentedFile[]` + +SHA-256: `1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345` + +Array of [`PresentedFile`](#persistence-type-sha256-b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97). + + + + + + + +### `PtcDispatchEventData` + +SHA-256: `8d2e5a3c4230e6ea6c0b5151f02241d0db02cd2551f2df1b6b9700cddcc0dca3` + +Sources: [`packages/core/tools/src/types.ts:20`](../packages/core/tools/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `arguments` | required | `unknown` (opaque) | +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `error` | optional | [`{ code, name, reason? }`](#persistence-type-sha256-a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735) | +| `isError` | required | `boolean` | +| `name` | required | `string` | +| `parentCallId` | required | `string` | +| `rootCallId` | required | `string` | +| `subCallId` | required | `string` | + + + + + + + +### `PtcDispatchStartEventData` + +SHA-256: `2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f` + +Sources: [`packages/core/tools/src/types.ts:11`](../packages/core/tools/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `arguments` | required | `unknown` (opaque) | +| `name` | required | `string` | +| `parentCallId` | required | `string` | +| `rootCallId` | required | `string` | +| `subCallId` | required | `string` | + + + + + + + +### `ReasoningBlock` + +SHA-256: `814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e` + +Sources: [`packages/llm/llm/src/types.ts:67`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `text` | required | `string` | +| `type` | required | `"reasoning"` | + + + + + + + +### `ReplayEnvelope` + +SHA-256: `0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555` + +Sources: [`packages/llm/llm/src/types.ts:404`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `blocks` | optional | [`unknown[]`](#persistence-type-sha256-b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7) | +| `response` | required | `unknown` (opaque) | + + + + + + + +### `RequestContext` + +SHA-256: `b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081` + +Sources: [`packages/core/session/src/types.ts:249`](../packages/core/session/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `contextWindow` | optional | `number` | +| `model` | required | `string` | +| `provider` | required | `string` | +| `systemPromptUpdate` | optional | `"in-history"` | + + + + + + + +### `RequestHeaderReason` + +SHA-256: `530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6` + +Sources: [`packages/core/session/src/types.ts:268`](../packages/core/session/src/types.ts) + +One of: + +- `"change"` +- `"initial"` +- `"resume"` +- `"series"` + + + + + + + +### `SandboxMode` + +SHA-256: `fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd` + +Sources: [`packages/sandbox/sandbox/src/index.ts:29`](../packages/sandbox/sandbox/src/index.ts) + +One of: + +- `"danger-full-access"` +- `"read-only"` +- `"workspace-write"` + + + + + + + +### `ScheduleChange` + +SHA-256: `e1d0e52dcd1855ffb803efc18f8f7b776c48d1c25757e8a75c0281fa298c02e1` + +Sources: [`packages/schedule/schedule/src/types.ts:105`](../packages/schedule/schedule/src/types.ts) + +One of: + +- [`EveryScheduleDispatchChange`](#persistence-type-sha256-e6063d0451dc02026fd9b54ad3f77c7b1b6392ad3e872a7737ac84e13ca72344) +- [`ScheduleDeleteChange`](#persistence-type-sha256-18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0) +- [`OneShotScheduleDispatchChange`](#persistence-type-sha256-8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af) +- [`ScheduleCreateChange`](#persistence-type-sha256-ca6425edd20afe34d0cedc6ad1abad1ad7b32e2fbc4c1d24db53939e80bf887f) + + + + + + + +### `ScheduleCreateChange` + +SHA-256: `ca6425edd20afe34d0cedc6ad1abad1ad7b32e2fbc4c1d24db53939e80bf887f` + +Sources: [`packages/schedule/schedule/src/types.ts:72`](../packages/schedule/schedule/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `operation` | required | `"create"` | +| `schedule` | required | [`ScheduleRecord`](#persistence-type-sha256-d8f868c6b3e7189de6c1ffe2ea04794ea2aa31315b6347d12536e46020afac87) | +| `version` | required | `1` | + + + + + + + +### `ScheduleDeleteChange` + +SHA-256: `18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0` + +Sources: [`packages/schedule/schedule/src/types.ts:79`](../packages/schedule/schedule/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `id` | required | `string` | +| `operation` | required | `"delete"` | +| `version` | required | `1` | + + + + + + + +### `ScheduleRecord` + +SHA-256: `d8f868c6b3e7189de6c1ffe2ea04794ea2aa31315b6347d12536e46020afac87` + +Sources: [`packages/schedule/schedule/src/types.ts:69`](../packages/schedule/schedule/src/types.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `after` | not declared | `afterSeconds`: `number`; `id`: `string`; `prompt`: `string`; `scheduledAt`: `string` | [`AfterScheduleRecord`](#persistence-type-sha256-27e337d3d6b402b221e50c247a3f518a70d0c474cc60beee15fac3e9c5cbfcbe) | +| `at` | not declared | `id`: `string`; `prompt`: `string`; `scheduledAt`: `string` | [`AtScheduleRecord`](#persistence-type-sha256-658d895d187b26d83f3b53109a3bf77bbfba9f6f9a6d4bc4ee4315b4eb36239e) | +| `every` | not declared | `everySeconds`: `number`; `id`: `string`; `prompt`: `string`; `scheduledAt`: `string` | [`EveryScheduleRecord`](#persistence-type-sha256-66ece68282d8c06330fb83329a24ae54c386d5ccfab296bbf18369da8beb7d14) | + + + + + + + +### `SessionHeader` + +SHA-256: `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` + +Sources: [`packages/core/session/src/types.ts:93`](../packages/core/session/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `agentPreset` | optional | `string` | +| `createdAt` | required | `number` | +| `cwd` | optional | `string` | +| `delegationDepth` | optional | `number` | +| `id` | required | `string` | +| `isSeeded` | required | `boolean` | +| `origin` | optional | `"subagent"` | +| `parentSession` | optional | `string` | +| `version` | required | `4` | + + + + + + + +### `SessionReferenceSource` + +SHA-256: `f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f` + +Sources: [`packages/context/session-reference/src/types.ts:13`](../packages/context/session-reference/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"recall"` | +| `kind` | required | `"session-reference"` | +| `references` | required | [`{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]`](#persistence-type-sha256-df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18) | +| `version` | required | `1` | + + + + + + + +### `SessionTitleEventData` + +SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4` + +Sources: [`packages/session/session-title/src/types.ts:41`](../packages/session/session-title/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `messageSeqs` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `source` | required | [`SessionTitleSource`](#persistence-type-sha256-30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f) | +| `title` | required | `string` | + + + + + + + +### `SessionTitleLlmRequestEventData` + +SHA-256: `9fe0e77a7816b7fdb4b953ec0e2f0cd7bbd22c5de5c3567e612d1b20eb0992e6` + +Sources: [`packages/session/session-title-llm/src/index.ts:27`](../packages/session/session-title-llm/src/index.ts) + +| Property | Presence | Type | +|---|---|---| +| `maxTokens` | required | `number` | +| `messageSeqs` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `messages` | required | [`Message[]`](#persistence-type-sha256-478738df7e7d2b103b09fb937817a9302c81076809f2b341169e00a9419c5665) | +| `route` | required | [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) | +| `system` | required | `string` | +| `titleProvider` | required | `string` | + + + + + + + + + + + +### `SessionTitleModelIdentity` + +SHA-256: `07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235` + +Sources: [`packages/session/session-title/src/types.ts:20`](../packages/session/session-title/src/types.ts) · [`packages/subagent/tool-subagent/src/model-selection.ts:9`](../packages/subagent/tool-subagent/src/model-selection.ts) + +| Property | Presence | Type | +|---|---|---| +| `model` | required | `string` | +| `provider` | required | `string` | + + + +### `SessionTitleModelIdentity[]` + +SHA-256: `ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec` + +Array of [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235). + + + + + + + +### `SessionTitleSource` + +SHA-256: `30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f` + +Sources: [`packages/session/session-title/src/types.ts:28`](../packages/session/session-title/src/types.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `fallback` | not declared | none | [`{ kind: "fallback" }`](#persistence-type-sha256-1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597) | +| `provider` | not declared | `provider`: `string` | [`{ kind: "provider" }`](#persistence-type-sha256-b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812) | +| `user` | not declared | none | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | + + + + + + + +### `SkillCatalogSource` + +SHA-256: `fc2ae6962f9f8801c2b1e414668e1e17cbb7544c4f39381198977a38bd10c093` + +Sources: [`packages/skill/tool-skill/src/index.ts:34`](../packages/skill/tool-skill/src/index.ts) + +| Property | Presence | Type | +|---|---|---| +| `entries` | required | [`{ description, name }[]`](#persistence-type-sha256-aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba) | +| `form` | required | `"catalog"` | +| `kind` | required | `"skill-catalog"` | +| `update` | optional | `true` | + + + + + + + +### `SkillInvocationSource` + +SHA-256: `672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db` + +Sources: [`packages/skill/skill/src/index.ts:146`](../packages/skill/skill/src/index.ts) + +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"instructions"` | +| `kind` | required | `"skill-invocation"` | +| `name` | required | `string` | + + + + + + + +### `StreamChunk` + +SHA-256: `071d92b9dac661fcc826c678cf64d188f26fb93aab79c627b11a03acdd34dfca` + +Sources: [`packages/llm/llm/src/types.ts:426`](../packages/llm/llm/src/types.ts) + +One of: + +- [`{ type: "tool-call-delta" }`](#persistence-type-sha256-88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a) +- [`{ type: "block-end" }`](#persistence-type-sha256-90c811b8c2668898515e69a24e82caffeb08517f9c7aa193867ff0380f3b535d) +- [`{ type: "block-start" }`](#persistence-type-sha256-647cb2e3aeb58e27d1d4d60011f208bb66dce257e8654193c533b47c4c22c253) +- [`{ type: "reasoning-delta" }`](#persistence-type-sha256-2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095) +- [`{ type: "text-delta" }`](#persistence-type-sha256-95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65) +- [`{ type: "finish" }`](#persistence-type-sha256-a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1) +- [`{ type: "usage" }`](#persistence-type-sha256-f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515) + + + + + + + +### `SubagentCatalogEvent` + +SHA-256: `3ac1196f59d5e9e0e9345122c8c403b102478b526404a2e591a38f613483321e` + +Sources: [`packages/subagent/subagent/src/catalog.ts:24`](../packages/subagent/subagent/src/catalog.ts) + +One of: + +- [`{ childCreatedAt, childId, label, mode, … }`](#persistence-type-sha256-0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd) +- [`{ childCreatedAt, childId, label?, mode, … }`](#persistence-type-sha256-5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694) + + + -### `packages/subagent/subagent/src/descriptor.ts#SubagentDescriptorData` + + +### `SubagentDescriptorData` SHA-256: `86d1d0e9cfebb240421187e3dc37fb71cc38a1501885cf32f8f9adef7b0a2bde` @@ -5828,12 +4263,210 @@ Sources: [`packages/subagent/subagent/src/descriptor.ts:89`](../packages/subagen One of: -- [`packages/subagent/subagent/src/descriptor.ts#ContinuableSubagentDescriptorData`](#persistence-type-packagessubagentsubagentsrcdescriptortscontinuablesubagentdescriptordata) -- [`packages/subagent/subagent/src/descriptor.ts#OneShotSubagentDescriptorData`](#persistence-type-packagessubagentsubagentsrcdescriptortsoneshotsubagentdescriptordata) +- [`ContinuableSubagentDescriptorData`](#persistence-type-sha256-6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f) +- [`OneShotSubagentDescriptorData`](#persistence-type-sha256-5f758f3de5f00c18968a7c6d347083aac5c9ae13f6a79c78f6611b23c4973564) + + + + + + + +### `SubagentSettledMessageSource` + +SHA-256: `4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a` + +Sources: [`packages/subagent/subagent/src/continuation-messages.ts:30`](../packages/subagent/subagent/src/continuation-messages.ts) + +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"notice"` | +| `kind` | required | `"subagent-settled"` | +| `senderSessionId` | required | `string` | +| `summary` | required | `string` | + + + + + + + +### `SurfaceOp` + +SHA-256: `335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5` + +Sources: [`packages/core/session/src/types.ts:448`](../packages/core/session/src/types.ts) + +One of: + +- `"append"` +- [`{ endSeq, op, startSeq }`](#persistence-type-sha256-bcf0caf62d964b2fcf5404bd5c909cfa9a21c3f3c96e6b7e36d9e33565223825) + + + + + + + +### `SystemMessage` + +SHA-256: `302b01ddddcbb3b16cfa3fba2a5d99f5082a55fbd9dc5c83a179a228b8a6a0ca` + +Sources: [`packages/llm/llm/src/message.ts:158`](../packages/llm/llm/src/message.ts) + +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | required | `string` | +| `role` | required | `"system"` | +| `source` | required | [`union (7 variants)`](#persistence-type-sha256-23cf7e0cf3fec1283b60fa15713506169bc9c079a08e124d1cb9733baca80b40) | + + + + + + + +### `TeamMemberPhase` + +SHA-256: `dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd` + +Sources: [`packages/experimental/agent-team/src/types.ts:44`](../packages/experimental/agent-team/src/types.ts) + +One of: + +- `"active"` +- `"failed"` +- `"provisioning"` + + + + + + + +### `TeamMemberSnapshot` + +SHA-256: `6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25` + +Sources: [`packages/experimental/agent-team/src/types.ts:47`](../packages/experimental/agent-team/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `context` | required | [`union (2 variants)`](#persistence-type-sha256-50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48) | +| `description` | required | `string` | +| `error` | optional | `string` | +| `id` | required | `string` | +| `name` | required | `string` | +| `phase` | required | [`TeamMemberPhase`](#persistence-type-sha256-dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd) | +| `provider` | required | `string` | + + + + + + + +### `TeamMessageSnapshot` + +SHA-256: `5b694f394d5e11609887a3ccfa82844935d49806c37e336b30be2186d649ab94` + +Sources: [`packages/experimental/agent-team/src/types.ts:106`](../packages/experimental/agent-team/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | required | `string` | +| `senderId` | required | `string` | +| `senderName` | required | `string` | +| `targetId` | required | `string` | + + + + + + + +### `TeamMessageSource` + +SHA-256: `2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0` + +Sources: [`packages/experimental/agent-team/src/types.ts:115`](../packages/experimental/agent-team/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"team-message"` | +| `messageId` | required | `string` | +| `senderId` | required | `string` | +| `senderName` | required | `string` | +| `teamId` | required | `string` | + + + + + + + +### `TeamTaskSnapshot` + +SHA-256: `51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357` + +Sources: [`packages/experimental/agent-team/src/types.ts:74`](../packages/experimental/agent-team/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `blockedBy` | required | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `description` | required | `string` | +| `id` | required | `string` | +| `ownerId` | optional | `string` | +| `revision` | required | `number` | +| `status` | required | [`TeamTaskStatus`](#persistence-type-sha256-b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943) | +| `subject` | required | `string` | +| `writeScopes` | required | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | + + + + + + + +### `TeamTaskStatus` + +SHA-256: `b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943` + +Sources: [`packages/experimental/agent-team/src/types.ts:71`](../packages/experimental/agent-team/src/types.ts) + +One of: + +- `"completed"` +- `"deleted"` +- `"in_progress"` +- `"pending"` + + + + + + + +### `TextBlock` + +SHA-256: `4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c` + +Sources: [`packages/llm/llm/src/types.ts:61`](../packages/llm/llm/src/types.ts) · [`packages/web/web-search-deepseek/src/provider.ts:66`](../packages/web/web-search-deepseek/src/provider.ts) + +| Property | Presence | Type | +|---|---|---| +| `text` | required | `string` | +| `type` | required | `"text"` | + + -### `packages/todo/tool-todo/src/types.ts#TodoItem` + + +### `TodoItem` SHA-256: `a99f76fd149051c363f960bfeeb5b9509587ecaf7591a42797e4bfe810d8987a` @@ -5842,25 +4475,161 @@ Sources: [`packages/todo/tool-todo/src/types.ts:21`](../packages/todo/tool-todo/ | Property | Presence | Type | |---|---|---| | `content` | required | `string` | -| `status` | required | [`event:todo/write.data.todos[0].status`](#persistence-type-eventtodowritedatatodos0status) | +| `status` | required | [`union (3 variants)`](#persistence-type-sha256-fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4) | - + -### `packages/web/web-search-deepseek/src/provider.ts#DeepSeekSearchLlmRequest` +### `TodoItem[]` -SHA-256: `2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9` +SHA-256: `4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea` -Sources: [`packages/web/web-search-deepseek/src/provider.ts:55`](../packages/web/web-search-deepseek/src/provider.ts) +Array of [`TodoItem`](#persistence-type-sha256-a99f76fd149051c363f960bfeeb5b9509587ecaf7591a42797e4bfe810d8987a). + + + + + + + +### `TokenUsage` + +SHA-256: `fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394` + +Sources: [`packages/llm/llm/src/types.ts:162`](../packages/llm/llm/src/types.ts) | Property | Presence | Type | |---|---|---| -| `apiVersion` | required | `string` | -| `body` | required | [`event:web/deepseek-search-llm-request.data.body`](#persistence-type-eventwebdeepseek-search-llm-requestdatabody) | -| `endpoint` | required | `string` | +| `cacheReadTokens` | optional | `number` | +| `cacheWriteTokens` | optional | `number` | +| `inputTokens` | required | `number` | +| `outputTokens` | required | `number` | +| `reasoningTokens` | optional | `number` | +| `totalTokens` | optional | `number` | + + + + + + + +### `ToolCallBlock` + +SHA-256: `c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea` + +Sources: [`packages/llm/llm/src/types.ts:104`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `arguments` | required | `string` | +| `id` | required | `string` | +| `name` | required | `string` | +| `type` | required | `"tool-call"` | + + + + + + + +### `ToolMessageSource` + +SHA-256: `d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab` + +Sources: [`packages/llm/llm/src/message.ts:29`](../packages/llm/llm/src/message.ts) + +| Property | Presence | Type | +|---|---|---| +| `callId` | required | `string` | +| `kind` | required | `"tool"` | + + + + + + + +### `ToolRestriction` + +SHA-256: `3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f` + +Sources: [`packages/core/tools/src/index.ts:682`](../packages/core/tools/src/index.ts) + +| Property | Presence | Type | +|---|---|---| +| `allow` | optional | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `deny` | optional | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | + + + + + + + +### `ToolResultBlock` + +SHA-256: `d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127` + +Sources: [`packages/llm/llm/src/types.ts:114`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `isError` | optional | `boolean` | +| `toolCallId` | required | `string` | +| `type` | required | `"tool-result"` | + + + + + + + +### `ToolResultMessage` + +SHA-256: `1b573e2d5c094fa87e2a8bf409ddd4ac5ba92a123085e168de44b9ccdbd5244c` + +Sources: [`packages/llm/llm/src/message.ts:164`](../packages/llm/llm/src/message.ts) + +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`tuple (1 positions)`](#persistence-type-sha256-8d6a011f3ef7096a4a922ef420458419ff6b20e1eaeece5d331db7585d2f08d6) | +| `id` | required | `string` | +| `role` | required | `"user"` | +| `source` | required | [`ToolMessageSource`](#persistence-type-sha256-d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab) | + + + + + + + +### `ToolSchema` + +SHA-256: `7f5f2a8618c2ece530a18b1358b890fb57fb8c35705e47b66bff2296f8c6e889` + +Sources: [`packages/llm/llm/src/types.ts:447`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `description` | required | `string` | +| `name` | required | `string` | +| `parameters` | required | [`{}`](#persistence-type-sha256-0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f) | + + + +### `ToolSchema[]` + +SHA-256: `6d63f25a28b70801937a46b1058be5f52d4efbaf3516141470463ae469b59c23` + +Array of [`ToolSchema`](#persistence-type-sha256-7f5f2a8618c2ece530a18b1358b890fb57fb8c35705e47b66bff2296f8c6e889). + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentEndData` + + +### `ToolWorkflowAgentEndData` SHA-256: `c0ea97bc89dfc46fa94eab956f5c3ee6af2f964aa7db6327cb18b451f207bef7` @@ -5868,13 +4637,17 @@ Sources: [`packages/workflow/tool-workflow/src/types.ts:29`](../packages/workflo | Property | Presence | Type | |---|---|---| -| `outcome` | required | [`packages/workflow/workflow/src/types.ts#WorkflowAgentOutcome`](#persistence-type-packagesworkflowworkflowsrctypestsworkflowagentoutcome) | +| `outcome` | required | [`WorkflowAgentOutcome`](#persistence-type-sha256-c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896) | | `runId` | required | `string` | | `seq` | required | `number` | + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentStartData` + + +### `ToolWorkflowAgentStartData` SHA-256: `9a410ddf56792b2b7cd4a224a2e54dc4dee30a8e8e6b1c2b9a1d19992b217adc` @@ -5888,9 +4661,13 @@ Sources: [`packages/workflow/tool-workflow/src/types.ts:20`](../packages/workflo | `runId` | required | `string` | | `seq` | required | `number` | + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunEndData` + + +### `ToolWorkflowRunEndData` SHA-256: `7f9365bae9fcb73e1e34061a1acfe0422c1a5fd351848cace9bebbe806f28462` @@ -5899,11 +4676,15 @@ Sources: [`packages/workflow/tool-workflow/src/types.ts:36`](../packages/workflo | Property | Presence | Type | |---|---|---| | `runId` | required | `string` | -| `stopReason` | required | [`packages/workflow/workflow/src/types.ts#WorkflowStopReason`](#persistence-type-packagesworkflowworkflowsrctypestsworkflowstopreason) | +| `stopReason` | required | [`WorkflowStopReason`](#persistence-type-sha256-8465ece5e9d9007c038b357015d849c15262cb0bc25abc59e47692d87ee01a15) | + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunStartData` + + +### `ToolWorkflowRunStartData` SHA-256: `a6da9ad5d42ae83a6833a8288b076688e8e0801633ea36cbdd8a30a6d9f3160c` @@ -5914,9 +4695,82 @@ Sources: [`packages/workflow/tool-workflow/src/types.ts:14`](../packages/workflo | `name` | required | `string` | | `runId` | required | `string` | + + + + + + +### `TurnEndCancelCause` + +SHA-256: `1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0` + +Sources: [`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `disposed` | not declared | none | [`{ kind: "disposed" }`](#persistence-type-sha256-4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db) | +| `hook` | not declared | `reason`: `string` | [`{ kind: "hook" }`](#persistence-type-sha256-6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d) | +| `legacy` | not declared | none | [`{ kind: "legacy" }`](#persistence-type-sha256-eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c) | +| `parent` | not declared | none | [`{ kind: "parent" }`](#persistence-type-sha256-6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800) | +| `user` | not declared | none | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | + + + + + + + +### `TurnEndReason` + +SHA-256: `f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402` + +Sources: [`packages/core/session/src/types.ts:231`](../packages/core/session/src/types.ts) + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `aborted` | not declared | `reason`: [`TurnEndCancelCause`](#persistence-type-sha256-1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0) | [`{ kind: "aborted", reason }`](#persistence-type-sha256-0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3) | +| `blocked` | not declared | none | [`{ kind: "blocked" }`](#persistence-type-sha256-023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4) | +| `completed` | not declared | none | [`{ kind: "completed" }`](#persistence-type-sha256-b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0) | +| `error` | not declared | `error`: [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | [`{ error, kind: "error" }`](#persistence-type-sha256-79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985) | +| `forked` | not declared | none | [`{ kind: "forked" }`](#persistence-type-sha256-ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7) | +| `interrupted` | not declared | none | [`{ kind: "interrupted" }`](#persistence-type-sha256-56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23) | +| `max-tokens` | not declared | none | [`{ kind: "max-tokens" }`](#persistence-type-sha256-ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7) | + + + + + + + +### `UserMessage` + +SHA-256: `4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7` + +Sources: [`packages/llm/llm/src/message.ts:143`](../packages/llm/llm/src/message.ts) + +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | required | `string` | +| `role` | required | `"user"` | +| `source` | required | [`MessageSource`](#persistence-type-sha256-4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283) | + + + +### `UserMessage[]` + +SHA-256: `300341f890f7b9506a1749fff4fa5239d16ea1c63ff6b15851acb03c20f3b48d` + +Array of [`UserMessage`](#persistence-type-sha256-4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7). + + + -### `packages/workflow/workflow/src/types.ts#WorkflowAgentOutcome` + + +### `WorkflowAgentOutcome` SHA-256: `c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896` @@ -5928,9 +4782,13 @@ One of: - `"completed"` - `"failed"` + + -### `packages/workflow/workflow/src/types.ts#WorkflowStopReason` + + +### `WorkflowStopReason` SHA-256: `8465ece5e9d9007c038b357015d849c15262cb0bc25abc59e47692d87ee01a15` @@ -5942,335 +4800,719 @@ One of: - `"completed"` - `"error"` - + -### `"parent"` +### `boolean` -SHA-256: `e6411b09c1d982f789bf741ca74e2bea69df56029847f86a6148e722039ee732` +SHA-256: `aa93010d0e521ad7c42273f58d5c9b8bf1dfc94edf1b805a3971b364a35c1877` -`"parent"` +`boolean` - + -### `"pause"` +### `false` -SHA-256: `1d8798b1a5e8c545ee4dcd2b4e75c0b4c9ffd985e4744c6d1a1aab992f859721` +SHA-256: `0c4205180f75b9ee1e0d878bd9a9851628b5dc18448486389d9c5fdc3f1ccda3` -`"pause"` +`false` - + -### `"paused"` +### `null` -SHA-256: `c43b119ce579b3e9983a0d3adc4ba402ebb9ba773d89738a2dab01ecf5813943` +SHA-256: `938f7c7357bc403ea3b281a9dd016939df7a0880fc8db12612585be574d0d615` -`"paused"` +`null` - + -### `"pending"` + -SHA-256: `234142ee4f996f38cc9fa3b8b3e3de29b03c9aefe5ebf6c224eddd564505aa85` + -`"pending"` +### `number` - +SHA-256: `0657d3ca5ac4e7bf79b00bcf860b1c7159d01a9da137497221ec2f1776e365f7` -### `"permission/preset"` +Sources: [`packages/core/session/src/types.ts:31`](../packages/core/session/src/types.ts) -SHA-256: `ae63d9d1080ed8945031594d93f8d96651d7101b848719cc3e1475875cd3d649` +`number` -`"permission/preset"` + - - -### `"plan/mode"` - -SHA-256: `f634871d1e18b1eb199497ac8ab72d3964f48d03fbf611dc7521a1970cf429d9` - -`"plan/mode"` - - - -### `"plugin"` - -SHA-256: `e654d28d1e6c471147310d2fba396d00969cfe6ed9022626d3f2c2312e0b1cbb` - -`"plugin"` - - - -### `"positive"` - -SHA-256: `df5d9709b7db2a72510dc52052a23f0c38f39730af1504bab8bccabc14fae528` - -`"positive"` - - - -### `"product-interaction"` - -SHA-256: `0341d4c3dfcd53253cdc1e789d9130d3cd848b6f8b0706bf92f313a68b39ff23` - -`"product-interaction"` - - - -### `"provider"` - -SHA-256: `e31572180d6b28b73f073ad30ae19d5d82982d3daf984723984e23da1e7c459a` - -`"provider"` - - - -### `"provisioning"` - -SHA-256: `871bfd6f7bb91061246768d3377f3fd58d6b8ea7c31f44c714ae7ab215650d62` - -`"provisioning"` - - - -### `"read-only"` - -SHA-256: `12a0cfa619ac4a5fc6c3e8e359c8dae15769edc61497a575935c78d5842f8e42` - -`"read-only"` - - - -### `"reasoning"` - -SHA-256: `3c2535ca0a2062f172f15344f8040755002b5ac506cf94fc4ebaa822b15feb8c` - -`"reasoning"` - - - -### `"reasoning-chunks"` - -SHA-256: `688e853dc149f0d30b31765c12ec7e3be74169bdf1a4c6463a10b945d50cc1b8` - -`"reasoning-chunks"` - - - -### `"reasoning-delta"` - -SHA-256: `6f091fe32ab24407236090ca9d710bbaf59bb57466e9f3b8f1f6e4862bc863c6` - -`"reasoning-delta"` - - - -### `"recall"` - -SHA-256: `383cf73ae4748e5beb281ae74857ba1ffb92ae01075b9fbf51af78b666007a8f` - -`"recall"` - - - -### `"rejected"` - -SHA-256: `fab35c4520883c0d69e42d079c9f543fc5ac7a2d15b537b5572fcd99059c7018` - -`"rejected"` - - - -### `"relay"` - -SHA-256: `16d0507cb94b4cfc84a87446b1ba7652d6ec1d65ee1684789e747e30d542800e` - -`"relay"` - - - -### `"remove"` - -SHA-256: `7382c4fc95fe8c5db65ca4d9da572b115d0dbb818b7f32c22ab040318ffbb4bc` - -`"remove"` - - - -### `"replace"` - -SHA-256: `f6cb462f808309e315fea634f1ed86268b8346bbcee6774d9097ca6eed7ac1f8` - -`"replace"` - - - -### `"request/context"` - -SHA-256: `70b082fe78991edf13cf66e1b4d06cd2dcff9cacfd76f8cfb996bfb61939e7b2` - -`"request/context"` - - - -### `"request/header"` - -SHA-256: `3e0eff5946255ff05d88a10839c60305135801f97794ea48d409f8503303317e` - -`"request/header"` - - - -### `"resource-cost"` - -SHA-256: `5bd310104cfe448e530beb11422d2f791e2e32e8e95fdc528a15f9ca693dae75` - -`"resource-cost"` - - - -### `"resume"` - -SHA-256: `34d1ab5c5df378186d6054b1a1beea9a41e41965d6f336f0bc0025c441a82e66` - -`"resume"` - - - -### `"sandbox/mode"` - -SHA-256: `ca085dba2c877feceebf3c62f9d39c6c2a4d2314d97b94b3927a780fe8fe2bb2` - -`"sandbox/mode"` - - - -### `"schedule/change"` - -SHA-256: `0e7b2a97f54f1afdb8cdfad1635abe9145327db539bfb69b4045c19d8c17755d` - -`"schedule/change"` - - - -### `"security-privacy-permission"` - -SHA-256: `07eccc9ea2f9b5439d76cc77d5e062936677d43f07a23da749819b0a22ee36b7` - -`"security-privacy-permission"` - - - -### `"series"` - -SHA-256: `4f507598cf476214aa7646ce7841a7064a9dcb05d0a1eaaefaf79c2b738f160f` - -`"series"` - - - -### `"service-stability"` - -SHA-256: `7180844e1066230c5e891f1b9ccd942423b0fe48aac6ded7eef2a285b288a732` - -`"service-stability"` - - - -### `"session"` - -SHA-256: `e41bdebe246abe17154de7e7a1d81035437eee8d20e7f1edff0d91e2598ad828` - -`"session"` - - - -### `"session-log-deepseek/delivery-accepted"` - -SHA-256: `47e5d84f1a93450a78c7f3954b43990d0f629af7c034a56313e5deb63e772c1b` - -`"session-log-deepseek/delivery-accepted"` - - - -### `"session-reference"` - -SHA-256: `7f13860ee89a2d35ce09f958e85a04566cd59cb1de1d73a9619a9b631961dc71` - -`"session-reference"` - - - -### `"session/end-seed"` - -SHA-256: `1c2686c0682e7bc51d61117b2652bd4a80707e331aa276d6ef915ae32534a330` - -`"session/end-seed"` - - - -### `SessionEventEnvelope` - -SHA-256: `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` - -One of: - -- [`SessionEventEnvelope[39]`](#persistence-type-sessioneventenvelope39) -- [`SessionEventEnvelope[6]`](#persistence-type-sessioneventenvelope6) -- [`SessionEventEnvelope[0]`](#persistence-type-sessioneventenvelope0) - - - -### `SessionEventEnvelope[0]` - -SHA-256: `e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f` - -| Property | Presence | Type | -|---|---|---| -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `time` | required | `number` | -| `type` | required | `string` | - - - -### `SessionEventEnvelope[39]` - -SHA-256: `998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0` - -| Property | Presence | Type | -|---|---|---| -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `sourceEventSeqs` | optional | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | required | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | required | `number` | -| `type` | required | `string` | - - - -### `SessionEventEnvelope[39].sourceEventSeqs` +### `number[]` SHA-256: `5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78` Array of `number`. - + -### `SessionEventEnvelope[6]` + -SHA-256: `7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +### `string` + +SHA-256: `4cd48f3e5108bd6ebedf7301c3638839b8b2b9db8dbd493974177fbdeb91a01b` + +Sources: [`packages/api/session-controller/src/types.ts:380`](../packages/api/session-controller/src/types.ts) · [`packages/attachment/attachment/src/brand.ts:6`](../packages/attachment/attachment/src/brand.ts) · [`packages/compaction/compaction/src/brand.ts:4`](../packages/compaction/compaction/src/brand.ts) · [`packages/core/session/src/types.ts:19`](../packages/core/session/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:20`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:32`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:8`](../packages/experimental/agent-team/src/types.ts) · [`packages/feedback/message-feedback/src/types.ts:14`](../packages/feedback/message-feedback/src/types.ts) · [`packages/goal/goal/src/types.ts:17`](../packages/goal/goal/src/types.ts) · [`packages/interaction/commands/src/brand.ts:31`](../packages/interaction/commands/src/brand.ts) · [`packages/interaction/user-approval/src/types.ts:17`](../packages/interaction/user-approval/src/types.ts) · [`packages/llm/llm-retry/src/brand.ts:4`](../packages/llm/llm-retry/src/brand.ts) · [`packages/llm/llm/src/brand.ts:16`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:31`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:43`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:67`](../packages/llm/llm/src/brand.ts) · [`packages/schedule/schedule/src/types.ts:10`](../packages/schedule/schedule/src/types.ts) · [`packages/session/session-title/src/index.ts:42`](../packages/session/session-title/src/index.ts) · [`packages/session/session-title/src/types.ts:17`](../packages/session/session-title/src/types.ts) · [`packages/webhook/webhook/src/brand.ts:12`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:6`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:9`](../packages/webhook/webhook/src/brand.ts) · [`packages/workflow/workflow/src/types.ts:13`](../packages/workflow/workflow/src/types.ts) + +`string` + + + +### `string[]` + +SHA-256: `93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2` + +Array of `string`. + + + +### `true` + +SHA-256: `dacf3d5f3e4ff619c1320e64a48dec5e7ecd7870bece65fbd449a0e63adfa521` + +`true` + + + +### `tuple (1 positions)` + +SHA-256: `4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8` + +| Position | Presence | Type | +|---|---|---| +| 0 | required | [`{ type: "web_search_20250305" }`](#persistence-type-sha256-2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3) | + + + +### `tuple (1 positions)` + +SHA-256: `8d6a011f3ef7096a4a922ef420458419ff6b20e1eaeece5d331db7585d2f08d6` + +| Position | Presence | Type | +|---|---|---| +| 0 | required | [`ToolResultBlock`](#persistence-type-sha256-d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127) | + + + +### `tuple (1 positions)` + +SHA-256: `8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9` + +| Position | Presence | Type | +|---|---|---| +| 0 | required | [`TextBlock`](#persistence-type-sha256-4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c) | + + + +### `tuple (1 positions)` + +SHA-256: `b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f` + +| Position | Presence | Type | +|---|---|---| +| 0 | required | [`{ role: "user" }`](#persistence-type-sha256-9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5) | + + + +### `union (2 variants)` + +SHA-256: `1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92` + +One of: + +- `"error"` +- `"success"` + + + +### `union (2 variants)` + +SHA-256: `50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48` + +One of: + +- `"fork"` +- `"fresh"` + + + +### `union (2 variants)` + +SHA-256: `feb329074f0206ecc06d8a1aa0a0b3e2f47fd27524ba020fbc849ba63e938896` + +One of: + +- [`{ compactionId, llmStreamCall, maxTokens?, model, … }`](#persistence-type-sha256-9ff2ad8dddb836f75e8f6197fff2371323dfc396c3c6fb667e6e0b42fda79a5c) +- [`{ compactionId, maxTokens?, model, provider, … }`](#persistence-type-sha256-3aa261c8516b5c955ed12080e6257a56cbe513f6c9f0ac9274c12e96c196ebca) + + + + + +### `union (3 variants)` + +SHA-256: `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` + +One of: + +- [`{ ignorable?, seq, sourceEventSeqs?, surfaceOp, … }`](#persistence-type-sha256-998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0) +- [`{ ignorable?, seq, surfaceOp, time, … }`](#persistence-type-sha256-7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb) +- [`{ ignorable?, seq, time, type }`](#persistence-type-sha256-e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f) + + + +### `union (3 variants)` + +SHA-256: `904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd` + +One of: + +- `"remove"` +- `"replace"` +- `"set"` + + + +### `union (3 variants)` + +SHA-256: `acd36e1717d2b4ef9e98a8e6fac17ca1203f3f448e5bca51677f129a8f4999e2` + +One of: + +- `"assistant"` +- `"system"` +- `"user"` + + + +### `union (3 variants)` + +SHA-256: `fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4` + +One of: + +- `"completed"` +- `"in_progress"` +- `"pending"` + + + +### `union (6 variants)` + +SHA-256: `62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379` + +One of: + +- `"block"` +- `"complete"` +- `"create"` +- `"edit"` +- `"pause"` +- `"resume"` + + + +### `union (7 variants)` + +SHA-256: `23cf7e0cf3fec1283b60fa15713506169bc9c079a08e124d1cb9733baca80b40` + +| kind | Form property | Other required fields | Full definition | +|---|---|---|---| +| `plugin` | `"catalog"` | `plugin`: `string` | [`{ kind: "plugin", form: "catalog" }`](#persistence-type-sha256-2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc) | +| `plugin` | `"instructions"` | `plugin`: `string` | [`{ kind: "plugin", form: "instructions" }`](#persistence-type-sha256-dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412) | +| `plugin` | `"notice"` | `plugin`: `string`; `summary`: `string` | [`{ kind: "plugin", form: "notice" }`](#persistence-type-sha256-b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43) | +| `plugin` | `"recall"` | `plugin`: `string` | [`{ kind: "plugin", form: "recall" }`](#persistence-type-sha256-85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01) | +| `plugin` | `"relay"` | `plugin`: `string` | [`{ kind: "plugin", form: "relay" }`](#persistence-type-sha256-2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c) | +| `plugin` | `"snapshot"` | `plugin`: `string`; `sections`: [`ContextSnapshotSection[]`](#persistence-type-sha256-c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262) | [`{ kind: "plugin", form: "snapshot" }`](#persistence-type-sha256-e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f) | +| `plugin` | not declared | `plugin`: `string` | [`{ kind: "plugin" }`](#persistence-type-sha256-0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8) | + + + +### `union (7 variants)` + +SHA-256: `3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd` + +One of: + +- `"instruction-following"` +- `"other"` +- `"product-interaction"` +- `"resource-cost"` +- `"security-privacy-permission"` +- `"service-stability"` +- `"task-result"` + + + +### `unknown` + +SHA-256: `bbc5696e3f13c758237b316e3cf08cda0b9fd51ffe672539883457769faa185d` + +`unknown`: the declaration does not expose the stored value's internal fields. + + + +### `unknown[]` + +SHA-256: `b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7` + +Array of `unknown` (opaque). + + + +### `{ active }` + +SHA-256: `20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5` + +Sources: [`packages/plan/plan-mode/src/index.ts:47`](../packages/plan/plan-mode/src/index.ts) | Property | Presence | Type | |---|---|---| -| `ignorable` | optional | `true` | -| `seq` | required | `number` | -| `surfaceOp` | required | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | required | `number` | -| `type` | required | `string` | +| `active` | required | `boolean` | - + -### `SessionEventEnvelope[6].surfaceOp[1]` +### `{ agentPreset }` + +SHA-256: `6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406` + +Sources: [`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts) + +| Property | Presence | Type | +|---|---|---| +| `agentPreset` | required | `string` | + + + +### `{ allowedModels }` + +SHA-256: `0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f` + +Sources: [`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../packages/subagent/tool-subagent/src/model-selection-state.ts) + +| Property | Presence | Type | +|---|---|---| +| `allowedModels` | required | [`SessionTitleModelIdentity[]`](#persistence-type-sha256-ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec) | + + + +### `{ args?, commandId, name, source }` + +SHA-256: `a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86` + +Sources: [`packages/interaction/commands/src/types.ts:105`](../packages/interaction/commands/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `args` | optional | `string` | +| `commandId` | required | `string` | +| `name` | required | `string` | +| `source` | required | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | + + + +### `{ arguments, callId, name, step, … }` + +SHA-256: `e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1` + +Sources: [`packages/core/session/src/types.ts:348`](../packages/core/session/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `arguments` | required | `string` | +| `callId` | required | `string` | +| `name` | required | `string` | +| `step` | required | `number` | +| `turn` | required | `number` | + + + +### `{ callId, files, turn }` + +SHA-256: `1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c` + +Sources: [`packages/deliverables/tool-present/src/types.ts:15`](../packages/deliverables/tool-present/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `callId` | required | `string` | +| `files` | required | [`PresentedFile[]`](#persistence-type-sha256-1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345) | +| `turn` | required | `number` | + + + +### `{ callId?, id, reason?, toolName }` + +SHA-256: `45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448` + +Sources: [`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `callId` | optional | `string` | +| `id` | required | `string` | +| `reason` | optional | `string` | +| `toolName` | required | `string` | + + + +### `{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }` + +SHA-256: `4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4` + +Sources: [`packages/context/session-reference/src/types.ts:18`](../packages/context/session-reference/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `capturedFormatVersion` | optional | `number` | +| `capturedThroughSeq` | required | [`OptionalSessionSeq`](#persistence-type-sha256-3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f) | +| `compacted` | required | `boolean` | +| `inputIndex` | required | `number` | +| `label` | required | `string` | +| `omittedBytes` | required | `number` | +| `omittedMessages` | required | `number` | +| `originalMessages` | required | `number` | +| `retainedMessages` | required | `number` | +| `sessionId` | required | `string` | +| `truncated` | required | `boolean` | + + + +### `{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]` + +SHA-256: `df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18` + +Array of [`{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }`](#persistence-type-sha256-4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4). + + + +### `{ childCreatedAt, childId, label, mode, … }` + +SHA-256: `0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd` + +| Property | Presence | Type | +|---|---|---| +| `childCreatedAt` | required | `number` | +| `childId` | required | `string` | +| `label` | required | `string` | +| `mode` | required | `"continuable"` | +| `version` | required | `0` | + + + +### `{ childCreatedAt, childId, label?, mode, … }` + +SHA-256: `5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694` + +| Property | Presence | Type | +|---|---|---| +| `childCreatedAt` | required | `number` | +| `childId` | required | `string` | +| `label` | optional | `string` | +| `mode` | required | `"one-shot"` | +| `version` | required | `0` | + + + +### `{ code, name, reason? }` + +SHA-256: `a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735` + +Sources: [`packages/core/session/src/types.ts:370`](../packages/core/session/src/types.ts) · [`packages/core/tools/src/types.ts:24`](../packages/core/tools/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `code` | required | `string` | +| `name` | required | `string` | +| `reason` | optional | `string` | + + + +### `{ commandId, kind, sourceEventSeq?, text? }` + +SHA-256: `5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51` + +Sources: [`packages/interaction/commands/src/types.ts:112`](../packages/interaction/commands/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `commandId` | required | `string` | +| `kind` | required | [`union (2 variants)`](#persistence-type-sha256-1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92) | +| `sourceEventSeq` | optional | `number` | +| `text` | optional | `string` | + + + +### `{ compactionId, error?, sourceCommandId?, turn }` + +SHA-256: `ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2` + +Sources: [`packages/compaction/compaction/src/types.ts:72`](../packages/compaction/compaction/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `compactionId` | required | `string` | +| `error` | optional | `string` | +| `sourceCommandId` | optional | `string` | +| `turn` | required | [`OptionalSessionSeq`](#persistence-type-sha256-3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f) | + + + +### `{ compactionId, llmStreamCall, maxTokens?, model, … }` + +SHA-256: `9ff2ad8dddb836f75e8f6197fff2371323dfc396c3c6fb667e6e0b42fda79a5c` + +| Property | Presence | Type | +|---|---|---| +| `compactionId` | required | `string` | +| `llmStreamCall` | required | `true` | +| `maxTokens` | optional | `number` | +| `model` | required | `string` | +| `provider` | required | `string` | +| `rawOutput` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `shadowedRange` | required | [`{ end, start }`](#persistence-type-sha256-9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2) | +| `shadowedSeqs` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `shadowedTokenCount` | required | `number` | +| `sourceCommandId` | optional | `string` | +| `summary` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `usage` | optional | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | + + + +### `{ compactionId, maxTokens?, model, provider, … }` + +SHA-256: `3aa261c8516b5c955ed12080e6257a56cbe513f6c9f0ac9274c12e96c196ebca` + +| Property | Presence | Type | +|---|---|---| +| `compactionId` | required | `string` | +| `maxTokens` | optional | `number` | +| `model` | required | `string` | +| `provider` | required | `string` | +| `rawOutput` | optional | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `shadowedRange` | required | [`{ end, start }`](#persistence-type-sha256-9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2) | +| `shadowedSeqs` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `shadowedTokenCount` | required | `number` | +| `sourceCommandId` | optional | `string` | +| `summary` | required | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `usage` | optional | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | + + + +### `{ compactionId, sourceCommandId?, turn }` + +SHA-256: `3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f` + +Sources: [`packages/compaction/compaction/src/types.ts:24`](../packages/compaction/compaction/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `compactionId` | required | `string` | +| `sourceCommandId` | optional | `string` | +| `turn` | required | [`OptionalSessionSeq`](#persistence-type-sha256-3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f) | + + + +### `{ decision, durationMs, exitCode?, handlerId, … }` + +SHA-256: `8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141` + +Sources: [`packages/hooks/hook-protocol/src/types.ts:31`](../packages/hooks/hook-protocol/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `decision` | required | `string` | +| `durationMs` | required | `number` | +| `exitCode` | optional | `number` | +| `handlerId` | required | `string` | +| `point` | required | `string` | +| `stderrSummary` | optional | `string` | +| `turn` | required | `number` | + + + +### `{ delayMs, failure, maxRetries, mode, … }` + +SHA-256: `cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced` + +Sources: [`packages/llm/llm-retry/src/types.ts:17`](../packages/llm/llm-retry/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `delayMs` | required | `number` | +| `failure` | required | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `maxRetries` | required | `number` | +| `mode` | required | `"normal"` | +| `policyKey` | required | `string` | +| `provider` | required | `string` | +| `retry` | required | `number` | +| `retryId` | required | `string` | +| `step` | required | `number` | +| `turn` | required | `number` | + + + +### `{ delayMs, failure, mode, policyKey, … }` + +SHA-256: `374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b` + +Sources: [`packages/llm/llm-retry/src/types.ts:30`](../packages/llm/llm-retry/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `delayMs` | required | `number` | +| `failure` | required | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `mode` | required | `"always"` | +| `policyKey` | required | `string` | +| `provider` | required | `string` | +| `retry` | required | `number` | +| `retryId` | required | `string` | +| `step` | required | `number` | +| `turn` | required | `number` | + + + +### `{ description, name }` + +SHA-256: `83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693` + +Sources: [`packages/skill/tool-skill/src/index.ts:40`](../packages/skill/tool-skill/src/index.ts) + +| Property | Presence | Type | +|---|---|---| +| `description` | required | `string` | +| `name` | required | `string` | + + + +### `{ description, name }[]` + +SHA-256: `aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba` + +Array of [`{ description, name }`](#persistence-type-sha256-83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693). + + + +### `{ dialect, handlerId, matcher?, point, … }` + +SHA-256: `119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25` + +Sources: [`packages/hooks/hook-protocol/src/types.ts:19`](../packages/hooks/hook-protocol/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `dialect` | required | [`HookDialect`](#persistence-type-sha256-a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb) | +| `handlerId` | required | `string` | +| `matcher` | optional | `string` | +| `point` | required | `string` | +| `turn` | required | `number` | + + + +### `{ end, start }` + +SHA-256: `9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2` + +Sources: [`packages/compaction/compaction/src/types.ts:38`](../packages/compaction/compaction/src/types.ts) · [`packages/compaction/compaction/src/types.ts:84`](../packages/compaction/compaction/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `end` | required | `number` | +| `start` | required | `number` | + + + +### `{ endSeq, op, startSeq }` SHA-256: `bcf0caf62d964b2fcf5404bd5c909cfa9a21c3f3c96e6b7e36d9e33565223825` @@ -6282,452 +5524,1848 @@ Sources: [`packages/core/session/src/types.ts:450`](../packages/core/session/src | `op` | required | `"replace"` | | `startSeq` | required | `number` | - + -### `"session/title"` +### `{ error, kind: "error" }` -SHA-256: `7a651f3b672c52fb615f22c0ce9cb3cc5b22aad92e6bbeefb0808fd7b9233a50` +SHA-256: `79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985` -`"session/title"` +Sources: [`packages/core/session/src/types.ts:211`](../packages/core/session/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `error` | required | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `kind` | required | `"error"` | -### `"session/title-llm-request"` + -SHA-256: `587bb11da730e06aa52b62c087d217d6f8f22459b25f31cb9e1e1baf17944e5e` +### `{ error?, message, meta?, step, … }` -`"session/title-llm-request"` +SHA-256: `356aad27134a0e31af67c994ff8b9e4b91acfb6c4917b3bc1f7a62bbf82794d5` - +Sources: [`packages/core/session/src/types.ts:362`](../packages/core/session/src/types.ts) -### `"set"` +| Property | Presence | Type | +|---|---|---| +| `error` | optional | [`{ code, name, reason? }`](#persistence-type-sha256-a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735) | +| `message` | required | [`ToolResultMessage`](#persistence-type-sha256-1b573e2d5c094fa87e2a8bf409ddd4ac5ba92a123085e168de44b9ccdbd5244c) | +| `meta` | optional | [`JsonValue`](#persistence-type-sha256-c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6) | +| `step` | required | `number` | +| `turn` | required | `number` | -SHA-256: `b765ee31033cea463863faf3fc6a0a1b85c47c6a2f13fe1ce833abe56105114b` + -`"set"` +### `{ failure, kind: "aborted" }` - +SHA-256: `8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0` -### `"skill-catalog"` +Sources: [`packages/llm/llm/src/types.ts:147`](../packages/llm/llm/src/types.ts) -SHA-256: `6ebcc2dbec9f2dabca9f668ae6d39e877899b180740570f453409db339221df3` +| Property | Presence | Type | +|---|---|---| +| `failure` | required | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `kind` | required | `"aborted"` | -`"skill-catalog"` + - +### `{ failure, kind: "error" }` -### `"skill-invocation"` +SHA-256: `693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057` -SHA-256: `1922cd79a70806c17758185a6ef0458bc1fb3900363906733421c16414da2509` +Sources: [`packages/llm/llm/src/types.ts:148`](../packages/llm/llm/src/types.ts) -`"skill-invocation"` +| Property | Presence | Type | +|---|---|---| +| `failure` | required | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `kind` | required | `"error"` | - + -### `"snapshot"` +### `{ header, reason, startsSeries? }` -SHA-256: `6f9e00383836275e46c0a9915767f9bb561be5fc30aae490174908a93e99a912` +SHA-256: `2f0aefb72ab453c4bf21a6687f436775d359dc6f8f10410fd4c0615b20bd9d76` -`"snapshot"` +Sources: [`packages/core/session/src/types.ts:377`](../packages/core/session/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `header` | required | [`EpochHeader`](#persistence-type-sha256-c55a891c7aac496de6ee64c91c1fb65728c977314013033e42c863428aada854) | +| `reason` | required | [`RequestHeaderReason`](#persistence-type-sha256-530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6) | +| `startsSeries` | optional | `true` | -### `"step/end"` + -SHA-256: `c219efbdfd53b836786202ab4532913d555798f0a8615a4e9629736e3799fb70` +### `{ height, width }` -`"step/end"` +SHA-256: `0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef` - +Sources: [`packages/attachment/attachment/src/types.ts:28`](../packages/attachment/attachment/src/types.ts) -### `"step/start"` +| Property | Presence | Type | +|---|---|---| +| `height` | required | `number` | +| `width` | required | `number` | -SHA-256: `2c64d4bc7264fd3f8bed47e96ab8a593bce05a1e4e1c436dcd244a3b7e0c2a9d` + -`"step/start"` +### `{ id, outcome }` - +SHA-256: `93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9` -### `"stop"` +Sources: [`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts) -SHA-256: `57f3f606ff8b6c84d9c443faace9d1dd10cca0354f37a4f515ef075f7c351b90` +| Property | Presence | Type | +|---|---|---| +| `id` | required | `string` | +| `outcome` | required | [`ApprovalOutcome`](#persistence-type-sha256-930c1cd289def119d443e19dd90008916bf035f0a4d23e07241e7f050f2b89b7) | -`"stop"` + - +### `{ ignorable?, seq, sourceEventSeqs?, surfaceOp, … }` -### `string` +SHA-256: `998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0` -SHA-256: `4cd48f3e5108bd6ebedf7301c3638839b8b2b9db8dbd493974177fbdeb91a01b` +| Property | Presence | Type | +|---|---|---| +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `sourceEventSeqs` | optional | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | required | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | required | `number` | +| `type` | required | `string` | -Sources: [`packages/api/session-controller/src/types.ts:380`](../packages/api/session-controller/src/types.ts) · [`packages/attachment/attachment/src/brand.ts:6`](../packages/attachment/attachment/src/brand.ts) · [`packages/compaction/compaction/src/brand.ts:4`](../packages/compaction/compaction/src/brand.ts) · [`packages/core/session/src/types.ts:19`](../packages/core/session/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:20`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:32`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:8`](../packages/experimental/agent-team/src/types.ts) · [`packages/feedback/message-feedback/src/types.ts:14`](../packages/feedback/message-feedback/src/types.ts) · [`packages/goal/goal/src/types.ts:17`](../packages/goal/goal/src/types.ts) · [`packages/interaction/commands/src/brand.ts:31`](../packages/interaction/commands/src/brand.ts) · [`packages/interaction/user-approval/src/types.ts:17`](../packages/interaction/user-approval/src/types.ts) · [`packages/llm/llm-retry/src/brand.ts:4`](../packages/llm/llm-retry/src/brand.ts) · [`packages/llm/llm/src/brand.ts:16`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:31`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:43`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:67`](../packages/llm/llm/src/brand.ts) · [`packages/schedule/schedule/src/types.ts:10`](../packages/schedule/schedule/src/types.ts) · [`packages/session/session-title/src/index.ts:42`](../packages/session/session-title/src/index.ts) · [`packages/session/session-title/src/types.ts:17`](../packages/session/session-title/src/types.ts) · [`packages/webhook/webhook/src/brand.ts:12`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:6`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:9`](../packages/webhook/webhook/src/brand.ts) · [`packages/workflow/workflow/src/types.ts:13`](../packages/workflow/workflow/src/types.ts) + -`string` +### `{ ignorable?, seq, surfaceOp, time, … }` - +SHA-256: `7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb` -### `"subagent"` +| Property | Presence | Type | +|---|---|---| +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `surfaceOp` | required | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | required | `number` | +| `type` | required | `string` | -SHA-256: `aacda84a69739238aa782eea902d3073017d9d74b9808de2bf5a83c9738cbdc6` + -`"subagent"` +### `{ ignorable?, seq, time, type }` - +SHA-256: `e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f` -### `"subagent-settled"` +| Property | Presence | Type | +|---|---|---| +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `string` | -SHA-256: `bf16d2e98a7f13894ded2cffe5ce857bf473954a0e3c0ed9bc7739e2e1c7b78a` + -`"subagent-settled"` +### `{ inherited? }` - +SHA-256: `17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3` -### `"subagent/catalog"` +Sources: [`packages/core/session/src/types.ts:414`](../packages/core/session/src/types.ts) -SHA-256: `44c8c77aa9aa100b0d74d2deee85474b29faa6eee0ac0f662f7abe9931ddd7f2` +| Property | Presence | Type | +|---|---|---| +| `inherited` | optional | `true` | -`"subagent/catalog"` + - +### `{ inserted, outcome?, removedCount?, start, … }` -### `"subagent/descriptor"` +SHA-256: `a6a195c1b4a906d953d24ab5864c9f1881d545460e080a51144adfc9cb058cfe` -SHA-256: `5ebce1317eacd2c148456627a09668e927ee15c204f0643f5ea76b46b54a2647` +Sources: [`packages/core/agent/src/types.ts:87`](../packages/core/agent/src/types.ts) -`"subagent/descriptor"` +| Property | Presence | Type | +|---|---|---| +| `inserted` | required | [`UserMessage[]`](#persistence-type-sha256-300341f890f7b9506a1749fff4fa5239d16ea1c63ff6b15851acb03c20f3b48d) | +| `outcome` | optional | `"canceled"` | +| `removedCount` | optional | `number` | +| `start` | required | `number` | +| `target` | required | [`InboxTarget`](#persistence-type-sha256-96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c) | - + -### `"subagent/model-selection-policy"` +### `{ interrupted?, message, step, stream, … }` -SHA-256: `0a8a062bc9c3c0d97fd97742262f2ea53dd32297f834e81114870d38ac3dc6da` +SHA-256: `77b8491f946edfc8cc77ebae3ba49183759da31ba2dfa83d4c9e9e618c4b91d2` -`"subagent/model-selection-policy"` +Sources: [`packages/core/session/src/types.ts:328`](../packages/core/session/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `interrupted` | optional | `true` | +| `message` | required | [`AssistantMessage`](#persistence-type-sha256-e50b0a3ed8e6c80b672e4f855c91984f03b5c3fdd5d475bf171171f391a86c83) | +| `step` | required | `number` | +| `stream` | required | [`AssistantStreamRecord[]`](#persistence-type-sha256-26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346) | +| `turn` | required | `number` | +| `usage` | optional | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | -### `"success"` + -SHA-256: `511801b0a6470d98566e8385d3dffddb2b67f79fcf73ed6056f46c3cc0a245a7` +### `{ kind: "aborted", reason }` -`"success"` +SHA-256: `0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3` - +Sources: [`packages/core/session/src/types.ts:203`](../packages/core/session/src/types.ts) -### `"system"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"aborted"` | +| `reason` | required | [`TurnEndCancelCause`](#persistence-type-sha256-1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0) | -SHA-256: `8af841fc9b265ade3441caf9fe40dd24db24226befba48150e6d0eeccc1389c3` + -`"system"` +### `{ kind: "blocked" }` - +SHA-256: `023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4` -### `"system/message"` +Sources: [`packages/core/session/src/types.ts:205`](../packages/core/session/src/types.ts) -SHA-256: `1c5a58f4599bd4a9711712551ffe2442a5e5fcd0758bafe630cc4ead850bdaa7` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"blocked"` | -`"system/message"` + - +### `{ kind: "completed" }` -### `"task-result"` +SHA-256: `b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0` -SHA-256: `f05fb85e715af4ab4de0b6ba111166dd0435bd8bb74a0fa0f32b9d174113fc7c` +Sources: [`packages/core/session/src/types.ts:201`](../packages/core/session/src/types.ts) -`"task-result"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"completed"` | - + -### `"team-message"` +### `{ kind: "disposed" }` -SHA-256: `2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c` +SHA-256: `4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db` -`"team-message"` +Sources: [`packages/core/session/src/types.ts:192`](../packages/core/session/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"disposed"` | -### `"team/member"` + -SHA-256: `18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0` +### `{ kind: "fallback" }` -`"team/member"` +SHA-256: `1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597` - +Sources: [`packages/session/session-title/src/types.ts:29`](../packages/session/session-title/src/types.ts) -### `"team/message/delivered"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"fallback"` | -SHA-256: `a8a2b9011fc067862df7ce40748868467e5778283d7ac193c13f77684a914c57` + -`"team/message/delivered"` +### `{ kind: "forked" }` - +SHA-256: `ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7` -### `"team/message/queued"` +Sources: [`packages/core/session/src/types.ts:227`](../packages/core/session/src/types.ts) -SHA-256: `4e011753f8263f436efaabfbb3b4db53a98fc55342c5ded2daf7208b217be159` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"forked"` | -`"team/message/queued"` + - +### `{ kind: "hook" }` -### `"team/task"` +SHA-256: `6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d` -SHA-256: `b57ae1b37e52bee0a21cbdace168dc6a15582bcda8c306dad962c5dcc8a8e28b` +Sources: [`packages/core/session/src/types.ts:191`](../packages/core/session/src/types.ts) -`"team/task"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"hook"` | +| `reason` | required | `string` | - + -### `"text"` +### `{ kind: "interrupted" }` -SHA-256: `4e44c9118152f6829634bfd508e47669ab0497caffa380c94b4be91f9390d35d` +SHA-256: `56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23` -`"text"` +Sources: [`packages/core/session/src/types.ts:220`](../packages/core/session/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"interrupted"` | -### `"text-chunks"` + -SHA-256: `f9cfc89e8fe085b4fcc9cd32b74b6f103608c54d7d8cd97b47c01de34f252ba3` +### `{ kind: "legacy" }` -`"text-chunks"` +SHA-256: `eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c` - +Sources: [`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) -### `"text-delta"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"legacy"` | -SHA-256: `5abab3a27fd2736660ecddd94b28d6bbf114986dd894880153bd1be3ccacb563` + -`"text-delta"` +### `{ kind: "max-tokens" }` - +SHA-256: `ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7` -### `"todo/write"` +Sources: [`packages/core/session/src/types.ts:213`](../packages/core/session/src/types.ts) · [`packages/llm/llm/src/types.ts:146`](../packages/llm/llm/src/types.ts) -SHA-256: `af0750d32d97d47b12b7361a587db41894b17e04c9a805fe212f0114aa2248c7` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"max-tokens"` | -`"todo/write"` + - +### `{ kind: "parent" }` -### `"tool"` +SHA-256: `6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800` -SHA-256: `a13d8f379222ece8a02a86efe4c8334af4f108ecb3034b38c0a42bb3046e6847` +Sources: [`packages/core/session/src/types.ts:190`](../packages/core/session/src/types.ts) -`"tool"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"parent"` | - + -### `"tool-call"` +### `{ kind: "plugin" }` -SHA-256: `1f0133217eeeffd8d387baf1ec8ed9856e719bcd999dc08e48624cba96d75fd7` +SHA-256: `0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8` -`"tool-call"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | - + -### `"tool-call-chunks"` +### `{ kind: "plugin", form: "catalog" }` -SHA-256: `616f93a5047de668e1c30d57b1786abd76beeb4123599637ec1dc5290320ede5` +SHA-256: `2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc` -`"tool-call-chunks"` +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"catalog"` | +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | - + -### `"tool-call-delta"` +### `{ kind: "plugin", form: "instructions" }` -SHA-256: `9b4fd974c124c83743efe030ba4e1250e087505f3f74588716a521fb8d453267` +SHA-256: `dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412` -`"tool-call-delta"` +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"instructions"` | +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | - + -### `"tool-calls"` +### `{ kind: "plugin", form: "notice" }` -SHA-256: `6c1cccb433ddc153facb380c7dda956237ba5c31f8a532a69142dc277890cc9b` +SHA-256: `b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43` -`"tool-calls"` +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"notice"` | +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | +| `summary` | required | `string` | - + -### `"tool-result"` +### `{ kind: "plugin", form: "recall" }` -SHA-256: `e5244812c495a80c2e78ba2c2690dca5f6b58ea8d3fe5531ff94a6f9ac5e5d66` +SHA-256: `85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01` -`"tool-result"` +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"recall"` | +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | - + -### `"tool-workflow/agent-end"` +### `{ kind: "plugin", form: "relay" }` -SHA-256: `5d17f27a1ef9f7026c0232714adf7573961536d75f3303ca97973975f5af170e` +SHA-256: `2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c` -`"tool-workflow/agent-end"` +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"relay"` | +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | - + -### `"tool-workflow/agent-start"` +### `{ kind: "plugin", form: "snapshot" }` -SHA-256: `ad92f473a03ae72599ff26c86e897c25e16269519ad2a87340f0bea946517af8` +SHA-256: `e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f` -`"tool-workflow/agent-start"` +| Property | Presence | Type | +|---|---|---| +| `form` | required | `"snapshot"` | +| `kind` | required | `"plugin"` | +| `plugin` | required | `string` | +| `sections` | required | [`ContextSnapshotSection[]`](#persistence-type-sha256-c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262) | - + -### `"tool-workflow/run-end"` +### `{ kind: "provider" }` -SHA-256: `fe792a6cd430494503837e21e79f91677704ccdd9e870c679aabd7d43ed47ddd` +SHA-256: `b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812` -`"tool-workflow/run-end"` +Sources: [`packages/session/session-title/src/types.ts:30`](../packages/session/session-title/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"provider"` | +| `model` | optional | [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) | +| `provider` | required | `string` | -### `"tool-workflow/run-start"` + -SHA-256: `cdca80b8dad24d4e7b1d5a288a8475ba8d8d46be385bd2da85f122ee836f1670` +### `{ kind: "stop" }` -`"tool-workflow/run-start"` +SHA-256: `1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f` - +Sources: [`packages/llm/llm/src/types.ts:144`](../packages/llm/llm/src/types.ts) -### `"tool/call"` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"stop"` | -SHA-256: `c589e938cc0e4989df8b82abef6339de621f0dc4fe62c230d145b94996af7f92` + -`"tool/call"` +### `{ kind: "tool-calls" }` - +SHA-256: `287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a` -### `"tool/ptc-dispatch"` +Sources: [`packages/llm/llm/src/types.ts:145`](../packages/llm/llm/src/types.ts) -SHA-256: `fb5e0517050d2c6d40e5b8145db1f7c5ca7044d5d50fada6ff80e0b22c6ca973` +| Property | Presence | Type | +|---|---|---| +| `kind` | required | `"tool-calls"` | -`"tool/ptc-dispatch"` + - +### `{ kind: "user" }` -### `"tool/ptc-dispatch-start"` +SHA-256: `6a4f72e2e179e17b922f2a9392c0e1c8f8c707f32494372454850a3eb184a6e7` -SHA-256: `2aed07493b1c65b6d00de5586da1e743cf501684b9ad43a1765fb4007d4ea456` +Sources: [`packages/api/session-controller/src/types.ts:385`](../packages/api/session-controller/src/types.ts) -`"tool/ptc-dispatch-start"` +| Property | Presence | Type | +|---|---|---| +| `clientTimeZone` | optional | `string` | +| `kind` | required | `"user"` | +| `rpcId` | required | `string` | - + -### `"tool/result"` +### `{ kind: "webhook", form: "notice" }` -SHA-256: `570e85022434613394418ad33e77e9f1f7a05699b33d0b62eae0677a638c3833` +SHA-256: `9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94` -`"tool/result"` +Sources: [`packages/webhook/webhook/src/types.ts:74`](../packages/webhook/webhook/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `deliveryId` | required | `string` | +| `form` | required | `"notice"` | +| `kind` | required | `"webhook"` | +| `provider` | required | `string` | +| `ruleId` | required | `string` | +| `source` | required | `string` | +| `summary` | required | `string` | -### `true` + -SHA-256: `dacf3d5f3e4ff619c1320e64a48dec5e7ecd7870bece65fbd449a0e63adfa521` +### `{ max_tokens, messages, model, tools }` -`true` +SHA-256: `930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731` - +Sources: [`packages/web/web-search-deepseek/src/provider.ts:61`](../packages/web/web-search-deepseek/src/provider.ts) -### `"turn/end"` +| Property | Presence | Type | +|---|---|---| +| `max_tokens` | required | `number` | +| `messages` | required | [`tuple (1 positions)`](#persistence-type-sha256-b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f) | +| `model` | required | `string` | +| `tools` | required | [`tuple (1 positions)`](#persistence-type-sha256-4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8) | -SHA-256: `4312134fc6f9cad507c31390bd3d147535492dd77621ec517c5e85f853d53a03` + -`"turn/end"` +### `{ member, teamId, version }` - +SHA-256: `b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1` -### `"turn/start"` +Sources: [`packages/experimental/agent-team/src/types.ts:221`](../packages/experimental/agent-team/src/types.ts) -SHA-256: `0af3ecfb8c60d416fc40a7cc4fb2c4851a8e46608b2b38ab9e510670c971aa1f` +| Property | Presence | Type | +|---|---|---| +| `member` | required | [`TeamMemberSnapshot`](#persistence-type-sha256-6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25) | +| `teamId` | required | `string` | +| `version` | required | `2` | -`"turn/start"` + - +### `{ message, step, turn }` -### `"unavailable"` +SHA-256: `2074f40221b76c75fd314246db558965dc3477dfb440bcc952b1eedc9778e366` -SHA-256: `2c4c21f19f426a58f2dac914e34313aa43f8408972de857a486d1f086d5adb6c` +Sources: [`packages/core/session/src/types.ts:317`](../packages/core/session/src/types.ts) -`"unavailable"` +| Property | Presence | Type | +|---|---|---| +| `message` | required | [`SystemMessage`](#persistence-type-sha256-302b01ddddcbb3b16cfa3fba2a5d99f5082a55fbd9dc5c83a179a228b8a6a0ca) | +| `step` | required | `number` | +| `turn` | required | `number` | - + -### `unknown` +### `{ message, teamId, version }` -SHA-256: `bbc5696e3f13c758237b316e3cf08cda0b9fd51ffe672539883457769faa185d` +SHA-256: `0c3f4d2248d9bc9700e2d7253fa71aa9935f5c39af6f11de5727f08cccaf8383` -`unknown`: the declaration does not expose the stored value's internal fields. +Sources: [`packages/experimental/agent-team/src/types.ts:225`](../packages/experimental/agent-team/src/types.ts) - +| Property | Presence | Type | +|---|---|---| +| `message` | required | [`TeamMessageSnapshot`](#persistence-type-sha256-5b694f394d5e11609887a3ccfa82844935d49806c37e336b30be2186d649ab94) | +| `teamId` | required | `string` | +| `version` | required | `2` | -### `"usage"` + -SHA-256: `0bdaf9cb63594be4ef034b68901fffe792fe09d6d5f6bac42d7f56f6e7834fb9` +### `{ messageId, targetId, teamId, version }` -`"usage"` +SHA-256: `0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1` - +Sources: [`packages/experimental/agent-team/src/types.ts:227`](../packages/experimental/agent-team/src/types.ts) -### `"user"` +| Property | Presence | Type | +|---|---|---| +| `messageId` | required | `string` | +| `targetId` | required | `string` | +| `teamId` | required | `string` | +| `version` | required | `2` | -SHA-256: `68f44f59e91c41395076cb77265981a601680ec8a381bbbeb6ab754ffdc94573` + -`"user"` +### `{ mode, source? }` - +SHA-256: `9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e` -### `"user/message"` +Sources: [`packages/sandbox/sandbox-policy/src/session-mode.ts:33`](../packages/sandbox/sandbox-policy/src/session-mode.ts) -SHA-256: `de25352d2dc4196309bd84b5bac6319f6d5c898ea0e82bb5ae66c5738d0d426f` +| Property | Presence | Type | +|---|---|---| +| `mode` | required | [`SandboxMode`](#persistence-type-sha256-fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd) | +| `source` | optional | `"delegation"` | -`"user/message"` + - +### `{ policy, source? }` -### `"web_search"` +SHA-256: `11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912` -SHA-256: `935c8d486292b13c87b57ca280eb8c58b5b2f5239be86fcd4334c33fdeb87682` +Sources: [`packages/interaction/user-approval/src/index.ts:33`](../packages/interaction/user-approval/src/index.ts) -`"web_search"` +| Property | Presence | Type | +|---|---|---| +| `policy` | required | [`ApprovalPolicy`](#persistence-type-sha256-05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf) | +| `source` | optional | `"delegation"` | - + -### `"web_search_20250305"` +### `{ preset }` -SHA-256: `0116b1f89c05221d56b0ba35c83d302bf4857bc7277d247e9bbaf74b27d2c66e` +SHA-256: `8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad` -`"web_search_20250305"` +Sources: [`packages/interaction/permission-presets/src/index.ts:57`](../packages/interaction/permission-presets/src/index.ts) - +| Property | Presence | Type | +|---|---|---| +| `preset` | required | `string` | -### `"web/deepseek-search-llm-request"` + -SHA-256: `6f611bed14b2106542480c4a230b4a83baf76dc0d8ac0cd13319a7cb8dae7675` +### `{ reason, turn }` -`"web/deepseek-search-llm-request"` +SHA-256: `e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654` - +Sources: [`packages/core/session/src/types.ts:292`](../packages/core/session/src/types.ts) -### `"webhook"` +| Property | Presence | Type | +|---|---|---| +| `reason` | required | [`TurnEndReason`](#persistence-type-sha256-f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402) | +| `turn` | required | `number` | -SHA-256: `db6c5246911d47a7969f6b4cb47c7d0dbbde75c402710b22ace3672fa97bebe0` + -`"webhook"` +### `{ role: "user" }` - +SHA-256: `9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5` -### `"workspace-write"` +Sources: [`packages/web/web-search-deepseek/src/provider.ts:64`](../packages/web/web-search-deepseek/src/provider.ts) -SHA-256: `a3edd1efd1fef21b72c55e213c8a8b24196b091abde2b89db52be0b2aaae3cfa` +| Property | Presence | Type | +|---|---|---| +| `content` | required | [`tuple (1 positions)`](#persistence-type-sha256-8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9) | +| `role` | required | `"user"` | -`"workspace-write"` + - +### `{ sessionFormatVersion?, sessionId, throughSeq }` -### `"workspace/changes"` +SHA-256: `8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52` -SHA-256: `8e8155594e07812356b67d732196dda894b0f9c91a5969d51612cf490b0a016d` +Sources: [`packages/session/session-log-deepseek/src/types.ts:81`](../packages/session/session-log-deepseek/src/types.ts) -`"workspace/changes"` +| Property | Presence | Type | +|---|---|---| +| `sessionFormatVersion` | optional | `number` | +| `sessionId` | required | `string` | +| `throughSeq` | required | `number` | + + + +### `{ shadowedRange, shadowedSeqs, shadowedTokenCount }` + +SHA-256: `5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438` + +Sources: [`packages/compaction/compaction/src/types.ts:82`](../packages/compaction/compaction/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `shadowedRange` | required | [`{ end, start }`](#persistence-type-sha256-9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2) | +| `shadowedSeqs` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `shadowedTokenCount` | required | `number` | + + + +### `{ step, stream, turn }` + +SHA-256: `0c6412d3ba5e41adfaa6929c7d4093f2d52d8598c03f35844fc0d55e3070a3b1` + +Sources: [`packages/core/session/src/types.ts:342`](../packages/core/session/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `step` | required | `number` | +| `stream` | required | [`AssistantStreamRecord[]`](#persistence-type-sha256-26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346) | +| `turn` | required | `number` | + + + +### `{ step, turn }` + +SHA-256: `ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545` + +Sources: [`packages/core/session/src/types.ts:294`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:296`](../packages/core/session/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `step` | required | `number` | +| `turn` | required | `number` | + + + +### `{ targets }` + +SHA-256: `477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028` + +Sources: [`packages/compaction/compaction-image-offload/src/projection.ts:25`](../packages/compaction/compaction-image-offload/src/projection.ts) + +| Property | Presence | Type | +|---|---|---| +| `targets` | required | [`ImageOffloadTarget[]`](#persistence-type-sha256-9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb) | + + + +### `{ task, teamId, version }` + +SHA-256: `a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c` + +Sources: [`packages/experimental/agent-team/src/types.ts:223`](../packages/experimental/agent-team/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `task` | required | [`TeamTaskSnapshot`](#persistence-type-sha256-51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357) | +| `teamId` | required | `string` | +| `version` | required | `2` | + + + +### `{ todos }` + +SHA-256: `79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99` + +Sources: [`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `todos` | required | [`TodoItem[]`](#persistence-type-sha256-4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea) | + + + +### `{ turn }` + +SHA-256: `f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d` + +Sources: [`packages/core/session/src/types.ts:283`](../packages/core/session/src/types.ts) · [`packages/deliverables/workspace-changes/src/types.ts:106`](../packages/deliverables/workspace-changes/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `turn` | required | `number` | + + + + + +### `{ type: "agent-preset/selected" }` + +SHA-256: `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ agentPreset }`](#persistence-type-sha256-6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"agent-preset/selected"` | + + + + + +### `{ type: "agent/inbox/spliced" }` + +SHA-256: `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ inserted, outcome?, removedCount?, start, … }`](#persistence-type-sha256-a6a195c1b4a906d953d24ab5864c9f1881d545460e080a51144adfc9cb058cfe) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"agent/inbox/spliced"` | + + + + + +### `{ type: "approval/asked" }` + +SHA-256: `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ callId?, id, reason?, toolName }`](#persistence-type-sha256-45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"approval/asked"` | + + + + + +### `{ type: "approval/decided" }` + +SHA-256: `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ id, outcome }`](#persistence-type-sha256-93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"approval/decided"` | + + + + + +### `{ type: "approval/policy" }` + +SHA-256: `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ policy, source? }`](#persistence-type-sha256-11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"approval/policy"` | + + + + + +### `{ type: "assistant/attempt" }` + +SHA-256: `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ step, stream, turn }`](#persistence-type-sha256-0c6412d3ba5e41adfaa6929c7d4093f2d52d8598c03f35844fc0d55e3070a3b1) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"assistant/attempt"` | + + + + + +### `{ type: "assistant/message" }` + +SHA-256: `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ interrupted?, message, step, stream, … }`](#persistence-type-sha256-77b8491f946edfc8cc77ebae3ba49183759da31ba2dfa83d4c9e9e618c4b91d2) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `surfaceOp` | required | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | required | `number` | +| `type` | required | `"assistant/message"` | + + + +### `{ type: "block-end" }` + +SHA-256: `90c811b8c2668898515e69a24e82caffeb08517f9c7aa193867ff0380f3b535d` + +Sources: [`packages/llm/llm/src/types.ts:431`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `block` | required | [`ContentBlock`](#persistence-type-sha256-c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56) | +| `index` | required | `number` | +| `type` | required | `"block-end"` | + + + +### `{ type: "block-start" }` + +SHA-256: `647cb2e3aeb58e27d1d4d60011f208bb66dce257e8654193c533b47c4c22c253` + +Sources: [`packages/llm/llm/src/types.ts:427`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `blockType` | required | [`ContentBlockType`](#persistence-type-sha256-757013fff5879d73d5753d8d1120faab56110e88ac3932485ab7e034d9e9ce61) | +| `index` | required | `number` | +| `type` | required | `"block-start"` | + + + +### `{ type: "chunk" }` + +SHA-256: `c93b6f51b399607349b4bcc66b58e848a44250ffc1e2537207bd092dfff94192` + +Sources: [`packages/llm/llm/src/assistant-stream.ts:44`](../packages/llm/llm/src/assistant-stream.ts) + +| Property | Presence | Type | +|---|---|---| +| `chunk` | required | [`StreamChunk`](#persistence-type-sha256-071d92b9dac661fcc826c678cf64d188f26fb93aab79c627b11a03acdd34dfca) | +| `time` | required | `number` | +| `type` | required | `"chunk"` | + + + + + +### `{ type: "command/done" }` + +SHA-256: `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ commandId, kind, sourceEventSeq?, text? }`](#persistence-type-sha256-5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"command/done"` | + + + + + +### `{ type: "command/run" }` + +SHA-256: `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ args?, commandId, name, source }`](#persistence-type-sha256-a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"command/run"` | + + + + + +### `{ type: "compaction/end" }` + +SHA-256: `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ compactionId, error?, sourceCommandId?, turn }`](#persistence-type-sha256-ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"compaction/end"` | + + + + + +### `{ type: "compaction/prune" }` + +SHA-256: `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ shadowedRange, shadowedSeqs, shadowedTokenCount }`](#persistence-type-sha256-5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"compaction/prune"` | + + + + + +### `{ type: "compaction/start" }` + +SHA-256: `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ compactionId, sourceCommandId?, turn }`](#persistence-type-sha256-3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"compaction/start"` | + + + + + +### `{ type: "compaction/summary" }` + +SHA-256: `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`union (2 variants)`](#persistence-type-sha256-feb329074f0206ecc06d8a1aa0a0b3e2f47fd27524ba020fbc849ba63e938896) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"compaction/summary"` | + + + + + +### `{ type: "deliverables/presented" }` + +SHA-256: `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ callId, files, turn }`](#persistence-type-sha256-1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"deliverables/presented"` | + + + + + +### `{ type: "feedback/message-delete" }` + +SHA-256: `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`MessageFeedbackDelete`](#persistence-type-sha256-7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"feedback/message-delete"` | + + + + + +### `{ type: "feedback/message-put" }` + +SHA-256: `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`MessageFeedbackPut`](#persistence-type-sha256-aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"feedback/message-put"` | + + + + + +### `{ type: "feedback/record" }` + +SHA-256: `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`FeedbackRecord`](#persistence-type-sha256-7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"feedback/record"` | + + + +### `{ type: "finish" }` + +SHA-256: `a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1` + +Sources: [`packages/llm/llm/src/types.ts:433`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `reason` | required | [`FinishReason`](#persistence-type-sha256-5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80) | +| `replayState` | optional | [`ReplayEnvelope`](#persistence-type-sha256-0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555) | +| `type` | required | `"finish"` | + + + + + +### `{ type: "goal/change" }` + +SHA-256: `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`GoalChangeMeta`](#persistence-type-sha256-7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"goal/change"` | + + + + + +### `{ type: "hook/invoked" }` + +SHA-256: `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ dialect, handlerId, matcher?, point, … }`](#persistence-type-sha256-119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"hook/invoked"` | + + + + + +### `{ type: "hook/result" }` + +SHA-256: `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ decision, durationMs, exitCode?, handlerId, … }`](#persistence-type-sha256-8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"hook/result"` | + + + + + +### `{ type: "image/offload" }` + +SHA-256: `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ targets }`](#persistence-type-sha256-477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"image/offload"` | + + + + + +### `{ type: "llm/retry" }` + +SHA-256: `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`LlmRetryEventData`](#persistence-type-sha256-c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"llm/retry"` | + + + + + +### `{ type: "llm/retry-started" }` + +SHA-256: `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`LlmRetryStartedEventData`](#persistence-type-sha256-6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"llm/retry-started"` | + + + + + +### `{ type: "model/selection" }` + +SHA-256: `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`ModelSelection`](#persistence-type-sha256-f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"model/selection"` | + + + + + +### `{ type: "permission/preset" }` + +SHA-256: `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ preset }`](#persistence-type-sha256-8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"permission/preset"` | + + + + + +### `{ type: "plan/mode" }` + +SHA-256: `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ active }`](#persistence-type-sha256-20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"plan/mode"` | + + + +### `{ type: "reasoning-chunks" }` + +SHA-256: `71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd` + +Sources: [`packages/llm/llm/src/assistant-stream.ts:28`](../packages/llm/llm/src/assistant-stream.ts) + +| Property | Presence | Type | +|---|---|---| +| `dt` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `index` | required | `number` | +| `texts` | required | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `time0` | required | `number` | +| `type` | required | `"reasoning-chunks"` | + + + +### `{ type: "reasoning-delta" }` + +SHA-256: `2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095` + +Sources: [`packages/llm/llm/src/types.ts:429`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `index` | required | `number` | +| `text` | required | `string` | +| `type` | required | `"reasoning-delta"` | + + + + + +### `{ type: "request/context" }` + +SHA-256: `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`RequestContext`](#persistence-type-sha256-b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"request/context"` | + + + + + +### `{ type: "request/header" }` + +SHA-256: `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ header, reason, startsSeries? }`](#persistence-type-sha256-2f0aefb72ab453c4bf21a6687f436775d359dc6f8f10410fd4c0615b20bd9d76) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"request/header"` | + + + + + +### `{ type: "sandbox/mode" }` + +SHA-256: `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ mode, source? }`](#persistence-type-sha256-9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"sandbox/mode"` | + + + + + +### `{ type: "schedule/change" }` + +SHA-256: `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`ScheduleChange`](#persistence-type-sha256-e1d0e52dcd1855ffb803efc18f8f7b776c48d1c25757e8a75c0281fa298c02e1) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"schedule/change"` | + + + + + +### `{ type: "session-log-deepseek/delivery-accepted" }` + +SHA-256: `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ sessionFormatVersion?, sessionId, throughSeq }`](#persistence-type-sha256-8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"session-log-deepseek/delivery-accepted"` | + + + + + +### `{ type: "session/end-seed" }` + +SHA-256: `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ inherited? }`](#persistence-type-sha256-17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"session/end-seed"` | + + + + + +### `{ type: "session/title" }` + +SHA-256: `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`SessionTitleEventData`](#persistence-type-sha256-b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"session/title"` | + + + + + +### `{ type: "session/title-llm-request" }` + +SHA-256: `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`SessionTitleLlmRequestEventData`](#persistence-type-sha256-9fe0e77a7816b7fdb4b953ec0e2f0cd7bbd22c5de5c3567e612d1b20eb0992e6) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"session/title-llm-request"` | + + + + + +### `{ type: "step/end" }` + +SHA-256: `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ step, turn }`](#persistence-type-sha256-ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"step/end"` | + + + + + +### `{ type: "step/start" }` + +SHA-256: `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ step, turn }`](#persistence-type-sha256-ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"step/start"` | + + + + + +### `{ type: "subagent/catalog" }` + +SHA-256: `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`SubagentCatalogEvent`](#persistence-type-sha256-3ac1196f59d5e9e0e9345122c8c403b102478b526404a2e591a38f613483321e) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"subagent/catalog"` | + + + + + +### `{ type: "subagent/descriptor" }` + +SHA-256: `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`SubagentDescriptorData`](#persistence-type-sha256-86d1d0e9cfebb240421187e3dc37fb71cc38a1501885cf32f8f9adef7b0a2bde) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"subagent/descriptor"` | + + + + + +### `{ type: "subagent/model-selection-policy" }` + +SHA-256: `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ allowedModels }`](#persistence-type-sha256-0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"subagent/model-selection-policy"` | + + + + + +### `{ type: "system/message" }` + +SHA-256: `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ message, step, turn }`](#persistence-type-sha256-2074f40221b76c75fd314246db558965dc3477dfb440bcc952b1eedc9778e366) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `sourceEventSeqs` | optional | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | required | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | required | `number` | +| `type` | required | `"system/message"` | + + + + + +### `{ type: "team/member" }` + +SHA-256: `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ member, teamId, version }`](#persistence-type-sha256-b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"team/member"` | + + + + + +### `{ type: "team/message/delivered" }` + +SHA-256: `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ messageId, targetId, teamId, version }`](#persistence-type-sha256-0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"team/message/delivered"` | + + + + + +### `{ type: "team/message/queued" }` + +SHA-256: `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ message, teamId, version }`](#persistence-type-sha256-0c3f4d2248d9bc9700e2d7253fa71aa9935f5c39af6f11de5727f08cccaf8383) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"team/message/queued"` | + + + + + +### `{ type: "team/task" }` + +SHA-256: `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ task, teamId, version }`](#persistence-type-sha256-a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"team/task"` | + + + +### `{ type: "text-chunks" }` + +SHA-256: `e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33` + +Sources: [`packages/llm/llm/src/assistant-stream.ts:21`](../packages/llm/llm/src/assistant-stream.ts) + +| Property | Presence | Type | +|---|---|---| +| `dt` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `index` | required | `number` | +| `texts` | required | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `time0` | required | `number` | +| `type` | required | `"text-chunks"` | + + + +### `{ type: "text-delta" }` + +SHA-256: `95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65` + +Sources: [`packages/llm/llm/src/types.ts:428`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `index` | required | `number` | +| `text` | required | `string` | +| `type` | required | `"text-delta"` | + + + + + +### `{ type: "todo/write" }` + +SHA-256: `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ todos }`](#persistence-type-sha256-79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"todo/write"` | + + + +### `{ type: "tool-call-chunks" }` + +SHA-256: `3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6` + +Sources: [`packages/llm/llm/src/assistant-stream.ts:35`](../packages/llm/llm/src/assistant-stream.ts) + +| Property | Presence | Type | +|---|---|---| +| `args` | required | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `dt` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `id` | required | `string` | +| `index` | required | `number` | +| `name` | optional | `string` | +| `time0` | required | `number` | +| `type` | required | `"tool-call-chunks"` | + + + +### `{ type: "tool-call-delta" }` + +SHA-256: `88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a` + +Sources: [`packages/llm/llm/src/types.ts:430`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `argumentsDelta` | required | `string` | +| `id` | required | `string` | +| `index` | required | `number` | +| `name` | optional | `string` | +| `type` | required | `"tool-call-delta"` | + + + + + +### `{ type: "tool-workflow/agent-end" }` + +SHA-256: `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`ToolWorkflowAgentEndData`](#persistence-type-sha256-c0ea97bc89dfc46fa94eab956f5c3ee6af2f964aa7db6327cb18b451f207bef7) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool-workflow/agent-end"` | + + + + + +### `{ type: "tool-workflow/agent-start" }` + +SHA-256: `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`ToolWorkflowAgentStartData`](#persistence-type-sha256-9a410ddf56792b2b7cd4a224a2e54dc4dee30a8e8e6b1c2b9a1d19992b217adc) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool-workflow/agent-start"` | + + + + + +### `{ type: "tool-workflow/run-end" }` + +SHA-256: `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`ToolWorkflowRunEndData`](#persistence-type-sha256-7f9365bae9fcb73e1e34061a1acfe0422c1a5fd351848cace9bebbe806f28462) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool-workflow/run-end"` | + + + + + +### `{ type: "tool-workflow/run-start" }` + +SHA-256: `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`ToolWorkflowRunStartData`](#persistence-type-sha256-a6da9ad5d42ae83a6833a8288b076688e8e0801633ea36cbdd8a30a6d9f3160c) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool-workflow/run-start"` | + + + + + +### `{ type: "tool/call" }` + +SHA-256: `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ arguments, callId, name, step, … }`](#persistence-type-sha256-e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool/call"` | + + + + + +### `{ type: "tool/ptc-dispatch" }` + +SHA-256: `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`PtcDispatchEventData`](#persistence-type-sha256-8d2e5a3c4230e6ea6c0b5151f02241d0db02cd2551f2df1b6b9700cddcc0dca3) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool/ptc-dispatch"` | + + + + + +### `{ type: "tool/ptc-dispatch-start" }` + +SHA-256: `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`PtcDispatchStartEventData`](#persistence-type-sha256-2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"tool/ptc-dispatch-start"` | + + + + + +### `{ type: "tool/result" }` + +SHA-256: `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ error?, message, meta?, step, … }`](#persistence-type-sha256-356aad27134a0e31af67c994ff8b9e4b91acfb6c4917b3bc1f7a62bbf82794d5) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `sourceEventSeqs` | optional | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | required | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | required | `number` | +| `type` | required | `"tool/result"` | + + + + + +### `{ type: "turn/end" }` + +SHA-256: `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ reason, turn }`](#persistence-type-sha256-e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"turn/end"` | + + + + + +### `{ type: "turn/start" }` + +SHA-256: `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ turn }`](#persistence-type-sha256-f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"turn/start"` | + + + +### `{ type: "usage" }` + +SHA-256: `f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515` + +Sources: [`packages/llm/llm/src/types.ts:432`](../packages/llm/llm/src/types.ts) + +| Property | Presence | Type | +|---|---|---| +| `type` | required | `"usage"` | +| `usage` | required | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | + + + + + +### `{ type: "user/message" }` + +SHA-256: `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`UserMessage`](#persistence-type-sha256-4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `sourceEventSeqs` | optional | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | required | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | required | `number` | +| `type` | required | `"user/message"` | + + + + + +### `{ type: "web/deepseek-search-llm-request" }` + +SHA-256: `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`DeepSeekSearchLlmRequest`](#persistence-type-sha256-2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"web/deepseek-search-llm-request"` | + + + +### `{ type: "web_search_20250305" }` + +SHA-256: `2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3` + +Sources: [`packages/web/web-search-deepseek/src/provider.ts:71`](../packages/web/web-search-deepseek/src/provider.ts) + +| Property | Presence | Type | +|---|---|---| +| `max_uses` | required | `number` | +| `name` | required | `"web_search"` | +| `type` | required | `"web_search_20250305"` | + + + + + +### `{ type: "workspace/changes" }` + +SHA-256: `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` + +| Property | Presence | Type | +|---|---|---| +| `data` | required | [`{ turn }`](#persistence-type-sha256-f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d) | +| `ignorable` | optional | `true` | +| `seq` | required | `number` | +| `time` | required | `number` | +| `type` | required | `"workspace/changes"` | + + + +### `{}` + +SHA-256: `0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f` + +| Property | Presence | Type | +|---|---|---| +| [`string`] | index signature | `unknown` (opaque) | + + + +### `{}` + +SHA-256: `529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05` + +Sources: [`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) + +| Property | Presence | Type | +|---|---|---| +| [`string`] | index signature | [`JsonValue`](#persistence-type-sha256-c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6) | diff --git a/docs/persistence-catalog.zh.md b/docs/persistence-catalog.zh.md index 04952406fe..aa6cc3fe44 100644 --- a/docs/persistence-catalog.zh.md +++ b/docs/persistence-catalog.zh.md @@ -19,67 +19,67 @@ | 根类型 | 类别 | SHA-256 | 已解析类型 | |---|---|---|---| -| `SessionHeader` | header | `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` | [`packages/core/session/src/types.ts#SessionHeader`](#persistence-type-packagescoresessionsrctypestssessionheader) | -| `JsonlHeaderLine` | header | `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` | [`packages/session/session-persistence-jsonl/src/format.ts#HeaderLine`](#persistence-type-packagessessionsession-persistence-jsonlsrcformattsheaderline) | -| `SessionEventEnvelope` | envelope | `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` | [`SessionEventEnvelope`](#persistence-type-sessioneventenvelope) | -| `event:agent-preset/selected` | event | `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` | [`event:agent-preset/selected`](#persistence-type-eventagent-presetselected) | -| `event:agent/inbox/spliced` | event | `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` | [`event:agent/inbox/spliced`](#persistence-type-eventagentinboxspliced) | -| `event:approval/asked` | event | `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` | [`event:approval/asked`](#persistence-type-eventapprovalasked) | -| `event:approval/decided` | event | `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` | [`event:approval/decided`](#persistence-type-eventapprovaldecided) | -| `event:approval/policy` | event | `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` | [`event:approval/policy`](#persistence-type-eventapprovalpolicy) | -| `event:assistant/attempt` | event | `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` | [`event:assistant/attempt`](#persistence-type-eventassistantattempt) | -| `event:assistant/message` | event | `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` | [`event:assistant/message`](#persistence-type-eventassistantmessage) | -| `event:command/done` | event | `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` | [`event:command/done`](#persistence-type-eventcommanddone) | -| `event:command/run` | event | `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` | [`event:command/run`](#persistence-type-eventcommandrun) | -| `event:compaction/end` | event | `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` | [`event:compaction/end`](#persistence-type-eventcompactionend) | -| `event:compaction/prune` | event | `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` | [`event:compaction/prune`](#persistence-type-eventcompactionprune) | -| `event:compaction/start` | event | `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` | [`event:compaction/start`](#persistence-type-eventcompactionstart) | -| `event:compaction/summary` | event | `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` | [`event:compaction/summary`](#persistence-type-eventcompactionsummary) | -| `event:deliverables/presented` | event | `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` | [`event:deliverables/presented`](#persistence-type-eventdeliverablespresented) | -| `event:feedback/message-delete` | event | `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` | [`event:feedback/message-delete`](#persistence-type-eventfeedbackmessage-delete) | -| `event:feedback/message-put` | event | `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` | [`event:feedback/message-put`](#persistence-type-eventfeedbackmessage-put) | -| `event:feedback/record` | event | `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` | [`event:feedback/record`](#persistence-type-eventfeedbackrecord) | -| `event:goal/change` | event | `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` | [`event:goal/change`](#persistence-type-eventgoalchange) | -| `event:hook/invoked` | event | `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` | [`event:hook/invoked`](#persistence-type-eventhookinvoked) | -| `event:hook/result` | event | `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` | [`event:hook/result`](#persistence-type-eventhookresult) | -| `event:image/offload` | event | `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` | [`event:image/offload`](#persistence-type-eventimageoffload) | -| `event:llm/retry` | event | `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` | [`event:llm/retry`](#persistence-type-eventllmretry) | -| `event:llm/retry-started` | event | `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` | [`event:llm/retry-started`](#persistence-type-eventllmretry-started) | -| `event:model/selection` | event | `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` | [`event:model/selection`](#persistence-type-eventmodelselection) | -| `event:permission/preset` | event | `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` | [`event:permission/preset`](#persistence-type-eventpermissionpreset) | -| `event:plan/mode` | event | `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` | [`event:plan/mode`](#persistence-type-eventplanmode) | -| `event:request/context` | event | `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` | [`event:request/context`](#persistence-type-eventrequestcontext) | -| `event:request/header` | event | `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` | [`event:request/header`](#persistence-type-eventrequestheader) | -| `event:sandbox/mode` | event | `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` | [`event:sandbox/mode`](#persistence-type-eventsandboxmode) | -| `event:schedule/change` | event | `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` | [`event:schedule/change`](#persistence-type-eventschedulechange) | -| `event:session-log-deepseek/delivery-accepted` | event | `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` | [`event:session-log-deepseek/delivery-accepted`](#persistence-type-eventsession-log-deepseekdelivery-accepted) | -| `event:session/end-seed` | event | `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` | [`event:session/end-seed`](#persistence-type-eventsessionend-seed) | -| `event:session/title` | event | `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` | [`event:session/title`](#persistence-type-eventsessiontitle) | -| `event:session/title-llm-request` | event | `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` | [`event:session/title-llm-request`](#persistence-type-eventsessiontitle-llm-request) | -| `event:step/end` | event | `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` | [`event:step/end`](#persistence-type-eventstepend) | -| `event:step/start` | event | `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` | [`event:step/start`](#persistence-type-eventstepstart) | -| `event:subagent/catalog` | event | `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` | [`event:subagent/catalog`](#persistence-type-eventsubagentcatalog) | -| `event:subagent/descriptor` | event | `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` | [`event:subagent/descriptor`](#persistence-type-eventsubagentdescriptor) | -| `event:subagent/model-selection-policy` | event | `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` | [`event:subagent/model-selection-policy`](#persistence-type-eventsubagentmodel-selection-policy) | -| `event:system/message` | event | `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` | [`event:system/message`](#persistence-type-eventsystemmessage) | -| `event:team/member` | event | `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` | [`event:team/member`](#persistence-type-eventteammember) | -| `event:team/message/delivered` | event | `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` | [`event:team/message/delivered`](#persistence-type-eventteammessagedelivered) | -| `event:team/message/queued` | event | `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` | [`event:team/message/queued`](#persistence-type-eventteammessagequeued) | -| `event:team/task` | event | `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` | [`event:team/task`](#persistence-type-eventteamtask) | -| `event:todo/write` | event | `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` | [`event:todo/write`](#persistence-type-eventtodowrite) | -| `event:tool-workflow/agent-end` | event | `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` | [`event:tool-workflow/agent-end`](#persistence-type-eventtool-workflowagent-end) | -| `event:tool-workflow/agent-start` | event | `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` | [`event:tool-workflow/agent-start`](#persistence-type-eventtool-workflowagent-start) | -| `event:tool-workflow/run-end` | event | `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` | [`event:tool-workflow/run-end`](#persistence-type-eventtool-workflowrun-end) | -| `event:tool-workflow/run-start` | event | `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` | [`event:tool-workflow/run-start`](#persistence-type-eventtool-workflowrun-start) | -| `event:tool/call` | event | `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` | [`event:tool/call`](#persistence-type-eventtoolcall) | -| `event:tool/ptc-dispatch` | event | `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` | [`event:tool/ptc-dispatch`](#persistence-type-eventtoolptc-dispatch) | -| `event:tool/ptc-dispatch-start` | event | `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` | [`event:tool/ptc-dispatch-start`](#persistence-type-eventtoolptc-dispatch-start) | -| `event:tool/result` | event | `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` | [`event:tool/result`](#persistence-type-eventtoolresult) | -| `event:turn/end` | event | `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` | [`event:turn/end`](#persistence-type-eventturnend) | -| `event:turn/start` | event | `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` | [`event:turn/start`](#persistence-type-eventturnstart) | -| `event:user/message` | event | `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` | [`event:user/message`](#persistence-type-eventusermessage) | -| `event:web/deepseek-search-llm-request` | event | `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` | [`event:web/deepseek-search-llm-request`](#persistence-type-eventwebdeepseek-search-llm-request) | -| `event:workspace/changes` | event | `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` | [`event:workspace/changes`](#persistence-type-eventworkspacechanges) | +| `SessionHeader` | header | `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` | [`SessionHeader`](#persistence-type-sha256-1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445) | +| `JsonlHeaderLine` | header | `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` | [`HeaderLine`](#persistence-type-sha256-18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f) | +| `SessionEventEnvelope` | envelope | `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` | [`union (3 variants)`](#persistence-type-sha256-5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc) | +| `event:agent-preset/selected` | event | `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` | [`{ type: "agent-preset/selected" }`](#persistence-type-sha256-a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b) | +| `event:agent/inbox/spliced` | event | `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` | [`{ type: "agent/inbox/spliced" }`](#persistence-type-sha256-646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f) | +| `event:approval/asked` | event | `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` | [`{ type: "approval/asked" }`](#persistence-type-sha256-3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1) | +| `event:approval/decided` | event | `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` | [`{ type: "approval/decided" }`](#persistence-type-sha256-bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3) | +| `event:approval/policy` | event | `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` | [`{ type: "approval/policy" }`](#persistence-type-sha256-26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78) | +| `event:assistant/attempt` | event | `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` | [`{ type: "assistant/attempt" }`](#persistence-type-sha256-c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e) | +| `event:assistant/message` | event | `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` | [`{ type: "assistant/message" }`](#persistence-type-sha256-1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d) | +| `event:command/done` | event | `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` | [`{ type: "command/done" }`](#persistence-type-sha256-15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff) | +| `event:command/run` | event | `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` | [`{ type: "command/run" }`](#persistence-type-sha256-37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006) | +| `event:compaction/end` | event | `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` | [`{ type: "compaction/end" }`](#persistence-type-sha256-b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d) | +| `event:compaction/prune` | event | `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` | [`{ type: "compaction/prune" }`](#persistence-type-sha256-7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04) | +| `event:compaction/start` | event | `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` | [`{ type: "compaction/start" }`](#persistence-type-sha256-db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965) | +| `event:compaction/summary` | event | `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` | [`{ type: "compaction/summary" }`](#persistence-type-sha256-f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59) | +| `event:deliverables/presented` | event | `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` | [`{ type: "deliverables/presented" }`](#persistence-type-sha256-13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176) | +| `event:feedback/message-delete` | event | `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` | [`{ type: "feedback/message-delete" }`](#persistence-type-sha256-3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796) | +| `event:feedback/message-put` | event | `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` | [`{ type: "feedback/message-put" }`](#persistence-type-sha256-b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf) | +| `event:feedback/record` | event | `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` | [`{ type: "feedback/record" }`](#persistence-type-sha256-b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8) | +| `event:goal/change` | event | `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` | [`{ type: "goal/change" }`](#persistence-type-sha256-763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d) | +| `event:hook/invoked` | event | `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` | [`{ type: "hook/invoked" }`](#persistence-type-sha256-8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0) | +| `event:hook/result` | event | `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` | [`{ type: "hook/result" }`](#persistence-type-sha256-e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4) | +| `event:image/offload` | event | `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` | [`{ type: "image/offload" }`](#persistence-type-sha256-b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e) | +| `event:llm/retry` | event | `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` | [`{ type: "llm/retry" }`](#persistence-type-sha256-525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336) | +| `event:llm/retry-started` | event | `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` | [`{ type: "llm/retry-started" }`](#persistence-type-sha256-48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3) | +| `event:model/selection` | event | `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` | [`{ type: "model/selection" }`](#persistence-type-sha256-35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc) | +| `event:permission/preset` | event | `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` | [`{ type: "permission/preset" }`](#persistence-type-sha256-5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b) | +| `event:plan/mode` | event | `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` | [`{ type: "plan/mode" }`](#persistence-type-sha256-a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f) | +| `event:request/context` | event | `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` | [`{ type: "request/context" }`](#persistence-type-sha256-37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf) | +| `event:request/header` | event | `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` | [`{ type: "request/header" }`](#persistence-type-sha256-8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489) | +| `event:sandbox/mode` | event | `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` | [`{ type: "sandbox/mode" }`](#persistence-type-sha256-516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415) | +| `event:schedule/change` | event | `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` | [`{ type: "schedule/change" }`](#persistence-type-sha256-2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42) | +| `event:session-log-deepseek/delivery-accepted` | event | `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` | [`{ type: "session-log-deepseek/delivery-accepted" }`](#persistence-type-sha256-d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9) | +| `event:session/end-seed` | event | `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` | [`{ type: "session/end-seed" }`](#persistence-type-sha256-5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e) | +| `event:session/title` | event | `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` | [`{ type: "session/title" }`](#persistence-type-sha256-1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5) | +| `event:session/title-llm-request` | event | `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` | [`{ type: "session/title-llm-request" }`](#persistence-type-sha256-e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d) | +| `event:step/end` | event | `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` | [`{ type: "step/end" }`](#persistence-type-sha256-e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05) | +| `event:step/start` | event | `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` | [`{ type: "step/start" }`](#persistence-type-sha256-4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986) | +| `event:subagent/catalog` | event | `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` | [`{ type: "subagent/catalog" }`](#persistence-type-sha256-ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871) | +| `event:subagent/descriptor` | event | `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` | [`{ type: "subagent/descriptor" }`](#persistence-type-sha256-b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5) | +| `event:subagent/model-selection-policy` | event | `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` | [`{ type: "subagent/model-selection-policy" }`](#persistence-type-sha256-a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc) | +| `event:system/message` | event | `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` | [`{ type: "system/message" }`](#persistence-type-sha256-69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae) | +| `event:team/member` | event | `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` | [`{ type: "team/member" }`](#persistence-type-sha256-4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc) | +| `event:team/message/delivered` | event | `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` | [`{ type: "team/message/delivered" }`](#persistence-type-sha256-48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb) | +| `event:team/message/queued` | event | `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` | [`{ type: "team/message/queued" }`](#persistence-type-sha256-443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4) | +| `event:team/task` | event | `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` | [`{ type: "team/task" }`](#persistence-type-sha256-d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a) | +| `event:todo/write` | event | `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` | [`{ type: "todo/write" }`](#persistence-type-sha256-b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26) | +| `event:tool-workflow/agent-end` | event | `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` | [`{ type: "tool-workflow/agent-end" }`](#persistence-type-sha256-babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7) | +| `event:tool-workflow/agent-start` | event | `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` | [`{ type: "tool-workflow/agent-start" }`](#persistence-type-sha256-5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627) | +| `event:tool-workflow/run-end` | event | `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` | [`{ type: "tool-workflow/run-end" }`](#persistence-type-sha256-42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f) | +| `event:tool-workflow/run-start` | event | `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` | [`{ type: "tool-workflow/run-start" }`](#persistence-type-sha256-c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058) | +| `event:tool/call` | event | `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` | [`{ type: "tool/call" }`](#persistence-type-sha256-3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48) | +| `event:tool/ptc-dispatch` | event | `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` | [`{ type: "tool/ptc-dispatch" }`](#persistence-type-sha256-b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c) | +| `event:tool/ptc-dispatch-start` | event | `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` | [`{ type: "tool/ptc-dispatch-start" }`](#persistence-type-sha256-ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93) | +| `event:tool/result` | event | `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` | [`{ type: "tool/result" }`](#persistence-type-sha256-29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2) | +| `event:turn/end` | event | `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` | [`{ type: "turn/end" }`](#persistence-type-sha256-0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce) | +| `event:turn/start` | event | `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` | [`{ type: "turn/start" }`](#persistence-type-sha256-aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8) | +| `event:user/message` | event | `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` | [`{ type: "user/message" }`](#persistence-type-sha256-314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578) | +| `event:web/deepseek-search-llm-request` | event | `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` | [`{ type: "web/deepseek-search-llm-request" }`](#persistence-type-sha256-cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331) | +| `event:workspace/changes` | event | `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` | [`{ type: "workspace/changes" }`](#persistence-type-sha256-e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72) | ## 事件信封 @@ -1266,39 +1266,7 @@ export type SessionEvent = { 每个类型定义仅列出一次。引用保留共享和递归关系;定义旁的摘要涵盖其完整可达结构。源码名称和位置标识声明来源,但不参与摘要计算。 - - -### `0` - -SHA-256: `93d38436347f67c9022aacbc4472e283d722bcab8eb73fc376aaf7b6a6b9fb35` - -`0` - - - -### `1` - -SHA-256: `f88f1b7b6bb733f685f5fb6a8744a5db9199fa53c90463ea1a33bad51153671d` - -`1` - - - -### `2` - -SHA-256: `a0f906856fc06f1c6f2083eb970e5a657a82b1a84c06c095445e5d6d161cda80` - -`2` - - - -### `4` - -SHA-256: `af6e173f7be819bcd0a5c8d77918649c10ce761d8a184ff472f2e01ce64eb2e0` - -`4` - - + ### `"aborted"` @@ -1306,7 +1274,7 @@ SHA-256: `1e0b0b66b6f0c53fc72e52289d06b4708d776f1ca9df4c86a22bff621d403cf0` `"aborted"` - + ### `"active"` @@ -1314,7 +1282,7 @@ SHA-256: `c8e6f48878cc2a2f0dc59682280d81f407943fb503f32c64bf9ff3d9393c3eff` `"active"` - + ### `"after"` @@ -1322,7 +1290,7 @@ SHA-256: `5b232a9b9bfcc0fc6794dab7865bcf203a65785c5de5aa647a51228bff628413` `"after"` - + ### `"agent-instructions"` @@ -1330,7 +1298,7 @@ SHA-256: `fbd2c74b346a1595b376139c587fadd23e4a21acc9c0abce342975b6cfc60986` `"agent-instructions"` - + ### `"agent-message"` @@ -1338,7 +1306,7 @@ SHA-256: `82470020b5bfcb1a843e2aa05602af7d37df99e82d01f015c7c589ba054fd89d` `"agent-message"` - + ### `"agent-preset/selected"` @@ -1346,7 +1314,7 @@ SHA-256: `557e148d30b79ee48645850832b30c717d7c3b64641deb5d6133b8b4e91ee0b8` `"agent-preset/selected"` - + ### `"agent/inbox/spliced"` @@ -1354,7 +1322,7 @@ SHA-256: `829a2fb3be6efd4ba36aef8ed2d381a4c6fb2a0aaf50c823a6f3f8290786b809` `"agent/inbox/spliced"` - + ### `"allowed-once"` @@ -1362,7 +1330,7 @@ SHA-256: `811229eedcec57979dbadca7dbea832a59f8580cff30cb217fca5e2da16314bd` `"allowed-once"` - + ### `"always"` @@ -1370,7 +1338,7 @@ SHA-256: `142c37d302aa22a0a57915b5255939d3ca91c1811ca13fddcf84cf76ea00758a` `"always"` - + ### `"append"` @@ -1378,7 +1346,7 @@ SHA-256: `e438a9d4fb883b3e4a8d9fc8913aa1550ed50eb384bfbf943100a5605b537498` `"append"` - + ### `"approval/asked"` @@ -1386,7 +1354,7 @@ SHA-256: `cd186c309e2bef305705e1d324139240f5e681f4f6a957d6a25b0225f65560df` `"approval/asked"` - + ### `"approval/decided"` @@ -1394,7 +1362,7 @@ SHA-256: `378f90f9f6022a0991928a1eaf7991094ea1920fe89a9248358a1da106e1a970` `"approval/decided"` - + ### `"approval/policy"` @@ -1402,7 +1370,7 @@ SHA-256: `36d6a9a871d949ea4f3edd919d81d66aa69218bebef38899d2a1282c39420a1f` `"approval/policy"` - + ### `"ask"` @@ -1410,7 +1378,7 @@ SHA-256: `9e07693fd7cd9babe0688c22c986e4d519ae1c0e40eeea13b2dc583bed2abc86` `"ask"` - + ### `"assistant"` @@ -1418,7 +1386,7 @@ SHA-256: `95c0e88fcf0bafb2087f912ad9e2369de6ae6530cc0c4c2772c96205b57f7f60` `"assistant"` - + ### `"assistant/attempt"` @@ -1426,7 +1394,7 @@ SHA-256: `e95f957154b2b1b58692af53d4131180b6dd19e2264869f876dbaa959991494e` `"assistant/attempt"` - + ### `"assistant/message"` @@ -1434,7 +1402,7 @@ SHA-256: `6ab45ac76839722df912f3ba50f1c6b41f2d614bde11f1aabfae04117ccdc80d` `"assistant/message"` - + ### `"at"` @@ -1442,7 +1410,7 @@ SHA-256: `17aae616ef020b8b9f011ec398ec935450fb06d3e2a0722c456f63aeaf5ff728` `"at"` - + ### `"block"` @@ -1450,7 +1418,7 @@ SHA-256: `1e346446e183ee76f48d7994c97ecb302bddc682abb60b8a10ea0bb26223a69c` `"block"` - + ### `"block-end"` @@ -1458,7 +1426,7 @@ SHA-256: `eefbea819caeeea91ccb02dfafc16c68dd7f961cf9c1b2be25a2084509cf5c5a` `"block-end"` - + ### `"block-start"` @@ -1466,7 +1434,7 @@ SHA-256: `cbca49bde16b656d5b8fbe4a8a507769f7b594c6287782b809c03814941bc5e3` `"block-start"` - + ### `"blocked"` @@ -1474,15 +1442,7 @@ SHA-256: `254dce209e735f9cb6f6b7aec0354712b1611759ec02af4d35a96f2081e666f6` `"blocked"` - - -### `boolean` - -SHA-256: `aa93010d0e521ad7c42273f58d5c9b8bf1dfc94edf1b805a3971b364a35c1877` - -`boolean` - - + ### `"canceled"` @@ -1490,7 +1450,7 @@ SHA-256: `d4e4d575abeb4b72d616dc65c17ac0eaa943cc135609395044c38d5afcb10e31` `"canceled"` - + ### `"cancelled"` @@ -1498,7 +1458,7 @@ SHA-256: `2142e391b9ccb60d487afcf373ce74db98d952f69e8289eddb352a7e16e996c5` `"cancelled"` - + ### `"catalog"` @@ -1506,7 +1466,7 @@ SHA-256: `aec150797b655c5f15ebb7a501454b0c208fbaccec9ace49d7de2171fc02f47d` `"catalog"` - + ### `"change"` @@ -1514,7 +1474,7 @@ SHA-256: `f789af5ab844827eb5a4f357c0afae1eeed108c6c22d8ca1a56e586b349a7c85` `"change"` - + ### `"chunk"` @@ -1522,7 +1482,7 @@ SHA-256: `14230f9b8b5797bb7e8c621fa636531cfbde2ffba1ef5f1fd058216ff21952a0` `"chunk"` - + ### `"claude-code"` @@ -1530,7 +1490,7 @@ SHA-256: `aff60ef947c18b012644852bdd0d5bfe72065e061dd563787c76c646b4a10f6b` `"claude-code"` - + ### `"clear"` @@ -1538,7 +1498,7 @@ SHA-256: `e7e154d47d5fbc5366330fb4dade1f108c6dfe4335044d21ded14b7bf1dce084` `"clear"` - + ### `"codex"` @@ -1546,7 +1506,7 @@ SHA-256: `15495614ccfa9cbdeefb0ec2abd76406435f4c6ff3dae42acae8e09ef42025c9` `"codex"` - + ### `"command/done"` @@ -1554,7 +1514,7 @@ SHA-256: `8cdd3fdd295cee53035de16a1b23411716f75e9f994fe9510cac5d7fef605c76` `"command/done"` - + ### `"command/run"` @@ -1562,7 +1522,7 @@ SHA-256: `f1996af2602e6f62b5ab179ca5c4af00d8753938b74cc6ef102de09e99e74a7e` `"command/run"` - + ### `"compaction/end"` @@ -1570,7 +1530,7 @@ SHA-256: `1986c2664009c99155e44795676c887fa67f7c55cd2d5e6b648ff763e0ab033a` `"compaction/end"` - + ### `"compaction/prune"` @@ -1578,7 +1538,7 @@ SHA-256: `10e386801903f9d424602c31d3ff837a94aef623c8b391376d8d9e253525fabe` `"compaction/prune"` - + ### `"compaction/start"` @@ -1586,7 +1546,7 @@ SHA-256: `e2d0367e5716bc188435e51718ebff8ce873190625fa93b1c5331102d98758fa` `"compaction/start"` - + ### `"compaction/summary"` @@ -1594,7 +1554,7 @@ SHA-256: `ef4f00923b9edbae15c7ef05320280bf61147ca17146cf59690359bfd5e5da45` `"compaction/summary"` - + ### `"complete"` @@ -1602,7 +1562,7 @@ SHA-256: `d9196086e41e4dd5c2ce87f5c25529c8112a1731d258cf0728747d41a9ee3241` `"complete"` - + ### `"completed"` @@ -1610,7 +1570,7 @@ SHA-256: `1ebc6f9ff3aa9e3a38f8695f49bacdab1f8b7a3832741853ca46f40af56ccd01` `"completed"` - + ### `"continuable"` @@ -1618,7 +1578,7 @@ SHA-256: `e5d3828df1ec3e2a66879de0659e0f4866d9cfffc00825ee731a66f8a0c03d98` `"continuable"` - + ### `"create"` @@ -1626,7 +1586,7 @@ SHA-256: `7624ca28c61ca0eaa4f015140f3cea6e0c16cce2f2960fab5f531203d253903e` `"create"` - + ### `"danger-full-access"` @@ -1634,7 +1594,7 @@ SHA-256: `18fce9540bb20897a66275499faee6b8296c97e9901fa1ff45a191772448ad1a` `"danger-full-access"` - + ### `"delegation"` @@ -1642,7 +1602,7 @@ SHA-256: `76632533f67879dcb346fcae640540dbc89b2472b0bce88c59f7e48fc5c0e668` `"delegation"` - + ### `"delete"` @@ -1650,7 +1610,7 @@ SHA-256: `d0fbb0ca1bbba059830826f33f801da1aced35a2504376d61e020bdfec8d50c0` `"delete"` - + ### `"deleted"` @@ -1658,7 +1618,7 @@ SHA-256: `e7e8f1318170b8284f16ab45a557afd4675c96071c0f2a456636481dab20b427` `"deleted"` - + ### `"deliverables/presented"` @@ -1666,7 +1626,7 @@ SHA-256: `1a2718b00937b236a0d0910ef5dab2f9f8b65e4bde410cc21f15fbbf29f584d3` `"deliverables/presented"` - + ### `"dispatch"` @@ -1674,7 +1634,7 @@ SHA-256: `26c879bdd130e8b8683a6ce588414fad2244783d6573ca399fa0de184a2b0bb1` `"dispatch"` - + ### `"disposed"` @@ -1682,7 +1642,7 @@ SHA-256: `b38f206d59bad891fa58c89f97a0036987b3defe7685acbd318fa55eb85f9751` `"disposed"` - + ### `"edit"` @@ -1690,7 +1650,7 @@ SHA-256: `ad22a5ca5bbaab2e1440779cd3648e85ddfc6f73b5207394eda699555cf31430` `"edit"` - + ### `"error"` @@ -1698,2380 +1658,7 @@ SHA-256: `a2be0f0cb59f0d4a06557d45847d1938aced238baa77a6da416e590b8b958553` `"error"` - - -### `event:agent-preset/selected` - -SHA-256: `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:agent-preset/selected.data`](#persistence-type-eventagent-presetselecteddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"agent-preset/selected"` | - - - -### `event:agent-preset/selected.data` - -SHA-256: `6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406` - -来源:[`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `agentPreset` | 必需 | `string` | - - - -### `event:agent/inbox/spliced` - -SHA-256: `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:agent/inbox/spliced.data`](#persistence-type-eventagentinboxspliceddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"agent/inbox/spliced"` | - - - -### `event:agent/inbox/spliced.data` - -SHA-256: `a6a195c1b4a906d953d24ab5864c9f1881d545460e080a51144adfc9cb058cfe` - -来源:[`packages/core/agent/src/types.ts:87`](../packages/core/agent/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `inserted` | 必需 | [`event:agent/inbox/spliced.data.inserted`](#persistence-type-eventagentinboxspliceddatainserted) | -| `outcome` | 可选 | `"canceled"` | -| `removedCount` | 可选 | `number` | -| `start` | 必需 | `number` | -| `target` | 必需 | [`packages/core/agent/src/types.ts#InboxTarget`](#persistence-type-packagescoreagentsrctypestsinboxtarget) | - - - -### `event:agent/inbox/spliced.data.inserted` - -SHA-256: `300341f890f7b9506a1749fff4fa5239d16ea1c63ff6b15851acb03c20f3b48d` - -[`packages/llm/llm/src/message.ts#UserMessage`](#persistence-type-packagesllmllmsrcmessagetsusermessage) 的数组。 - - - -### `event:agent/inbox/spliced.data.inserted[0].content` - -SHA-256: `bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75` - -[`packages/llm/llm/src/types.ts#ContentBlock`](#persistence-type-packagesllmllmsrctypestscontentblock) 的数组。 - - - -### `event:agent/inbox/spliced.data.inserted[0].content[0][2].attachment.originalDimensions` - -SHA-256: `0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef` - -来源:[`packages/attachment/attachment/src/types.ts:28`](../packages/attachment/attachment/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `height` | 必需 | `number` | -| `width` | 必需 | `number` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[0]` - -SHA-256: `ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05` - -来源:[`packages/core/session/src/types.ts:189`](../packages/core/session/src/types.ts) · [`packages/interaction/commands/src/types.ts:75`](../packages/interaction/commands/src/types.ts) · [`packages/interaction/commands/src/types.ts:79`](../packages/interaction/commands/src/types.ts) · [`packages/llm/llm/src/message.ts:103`](../packages/llm/llm/src/message.ts) · [`packages/session/session-title/src/types.ts:35`](../packages/session/session-title/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"user"` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[1]` - -SHA-256: `0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[11]` - -SHA-256: `6a4f72e2e179e17b922f2a9392c0e1c8f8c707f32494372454850a3eb184a6e7` - -来源:[`packages/api/session-controller/src/types.ts:385`](../packages/api/session-controller/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `clientTimeZone` | 可选 | `string` | -| `kind` | 必需 | `"user"` | -| `rpcId` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[15].references` - -SHA-256: `df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18` - -[`event:agent/inbox/spliced.data.inserted[0].source[15].references[0]`](#persistence-type-eventagentinboxspliceddatainserted0source15references0) 的数组。 - - - -### `event:agent/inbox/spliced.data.inserted[0].source[15].references[0]` - -SHA-256: `4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4` - -来源:[`packages/context/session-reference/src/types.ts:18`](../packages/context/session-reference/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `capturedFormatVersion` | 可选 | `number` | -| `capturedThroughSeq` | 必需 | [`event:compaction/end.data.turn`](#persistence-type-eventcompactionenddataturn) | -| `compacted` | 必需 | `boolean` | -| `inputIndex` | 必需 | `number` | -| `label` | 必需 | `string` | -| `omittedBytes` | 必需 | `number` | -| `omittedMessages` | 必需 | `number` | -| `originalMessages` | 必需 | `number` | -| `retainedMessages` | 必需 | `number` | -| `sessionId` | 必需 | `string` | -| `truncated` | 必需 | `boolean` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[16].changes` - -SHA-256: `2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee` - -[`packages/context/agent-instructions/src/render.ts#AgentInstructionChange`](#persistence-type-packagescontextagent-instructionssrcrendertsagentinstructionchange) 的数组。 - - - -### `event:agent/inbox/spliced.data.inserted[0].source[16].changes[0].action` - -SHA-256: `904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd` - -以下类型之一: - -- `"remove"` -- `"replace"` -- `"set"` - - - -### `event:agent/inbox/spliced.data.inserted[0].source[17].entries` - -SHA-256: `aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba` - -[`event:agent/inbox/spliced.data.inserted[0].source[17].entries[0]`](#persistence-type-eventagentinboxspliceddatainserted0source17entries0) 的数组。 - - - -### `event:agent/inbox/spliced.data.inserted[0].source[17].entries[0]` - -SHA-256: `83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693` - -来源:[`packages/skill/tool-skill/src/index.ts:40`](../packages/skill/tool-skill/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `description` | 必需 | `string` | -| `name` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[19]` - -SHA-256: `9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94` - -来源:[`packages/webhook/webhook/src/types.ts:74`](../packages/webhook/webhook/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `deliveryId` | 必需 | `string` | -| `form` | 必需 | `"notice"` | -| `kind` | 必需 | `"webhook"` | -| `provider` | 必需 | `string` | -| `ruleId` | 必需 | `string` | -| `source` | 必需 | `string` | -| `summary` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[2]` - -SHA-256: `dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"instructions"` | -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[3]` - -SHA-256: `2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"catalog"` | -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[4]` - -SHA-256: `e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"snapshot"` | -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | -| `sections` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].source[4].sections`](#persistence-type-eventagentinboxspliceddatainserted0source4sections) | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[4].sections` - -SHA-256: `c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262` - -[`packages/llm/llm/src/message.ts#ContextSnapshotSection`](#persistence-type-packagesllmllmsrcmessagetscontextsnapshotsection) 的数组。 - - - -### `event:agent/inbox/spliced.data.inserted[0].source[5]` - -SHA-256: `b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"notice"` | -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | -| `summary` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[6]` - -SHA-256: `2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"relay"` | -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | - - - -### `event:agent/inbox/spliced.data.inserted[0].source[7]` - -SHA-256: `85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"recall"` | -| `kind` | 必需 | `"plugin"` | -| `plugin` | 必需 | `string` | - - - -### `event:approval/asked` - -SHA-256: `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:approval/asked.data`](#persistence-type-eventapprovalaskeddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"approval/asked"` | - - - -### `event:approval/asked.data` - -SHA-256: `45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448` - -来源:[`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `callId` | 可选 | `string` | -| `id` | 必需 | `string` | -| `reason` | 可选 | `string` | -| `toolName` | 必需 | `string` | - - - -### `event:approval/decided` - -SHA-256: `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:approval/decided.data`](#persistence-type-eventapprovaldecideddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"approval/decided"` | - - - -### `event:approval/decided.data` - -SHA-256: `93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9` - -来源:[`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `id` | 必需 | `string` | -| `outcome` | 必需 | [`packages/interaction/user-approval/src/types.ts#ApprovalOutcome`](#persistence-type-packagesinteractionuser-approvalsrctypestsapprovaloutcome) | - - - -### `event:approval/policy` - -SHA-256: `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:approval/policy.data`](#persistence-type-eventapprovalpolicydata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"approval/policy"` | - - - -### `event:approval/policy.data` - -SHA-256: `11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912` - -来源:[`packages/interaction/user-approval/src/index.ts:33`](../packages/interaction/user-approval/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `policy` | 必需 | [`packages/interaction/user-approval/src/index.ts#ApprovalPolicy`](#persistence-type-packagesinteractionuser-approvalsrcindextsapprovalpolicy) | -| `source` | 可选 | `"delegation"` | - - - -### `event:assistant/attempt` - -SHA-256: `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:assistant/attempt.data`](#persistence-type-eventassistantattemptdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"assistant/attempt"` | - - - -### `event:assistant/attempt.data` - -SHA-256: `0c6412d3ba5e41adfaa6929c7d4093f2d52d8598c03f35844fc0d55e3070a3b1` - -来源:[`packages/core/session/src/types.ts:342`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `step` | 必需 | `number` | -| `stream` | 必需 | [`event:assistant/attempt.data.stream`](#persistence-type-eventassistantattemptdatastream) | -| `turn` | 必需 | `number` | - - - -### `event:assistant/attempt.data.stream` - -SHA-256: `26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346` - -[`packages/llm/llm/src/assistant-stream.ts#AssistantStreamRecord`](#persistence-type-packagesllmllmsrcassistant-streamtsassistantstreamrecord) 的数组。 - - - -### `event:assistant/attempt.data.stream[0][0]` - -SHA-256: `e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33` - -来源:[`packages/llm/llm/src/assistant-stream.ts:21`](../packages/llm/llm/src/assistant-stream.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `dt` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `index` | 必需 | `number` | -| `texts` | 必需 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `time0` | 必需 | `number` | -| `type` | 必需 | `"text-chunks"` | - - - -### `event:assistant/attempt.data.stream[0][0].texts` - -SHA-256: `93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2` - -`string` 的数组。 - - - -### `event:assistant/attempt.data.stream[0][1]` - -SHA-256: `71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd` - -来源:[`packages/llm/llm/src/assistant-stream.ts:28`](../packages/llm/llm/src/assistant-stream.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `dt` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `index` | 必需 | `number` | -| `texts` | 必需 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `time0` | 必需 | `number` | -| `type` | 必需 | `"reasoning-chunks"` | - - - -### `event:assistant/attempt.data.stream[0][2]` - -SHA-256: `3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6` - -来源:[`packages/llm/llm/src/assistant-stream.ts:35`](../packages/llm/llm/src/assistant-stream.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `args` | 必需 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `dt` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `id` | 必需 | `string` | -| `index` | 必需 | `number` | -| `name` | 可选 | `string` | -| `time0` | 必需 | `number` | -| `type` | 必需 | `"tool-call-chunks"` | - - - -### `event:assistant/attempt.data.stream[0][3]` - -SHA-256: `c93b6f51b399607349b4bcc66b58e848a44250ffc1e2537207bd092dfff94192` - -来源:[`packages/llm/llm/src/assistant-stream.ts:44`](../packages/llm/llm/src/assistant-stream.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `chunk` | 必需 | [`packages/llm/llm/src/types.ts#StreamChunk`](#persistence-type-packagesllmllmsrctypestsstreamchunk) | -| `time` | 必需 | `number` | -| `type` | 必需 | `"chunk"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[0]` - -SHA-256: `647cb2e3aeb58e27d1d4d60011f208bb66dce257e8654193c533b47c4c22c253` - -来源:[`packages/llm/llm/src/types.ts:427`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `blockType` | 必需 | [`packages/llm/llm/src/types.ts#ContentBlockType`](#persistence-type-packagesllmllmsrctypestscontentblocktype) | -| `index` | 必需 | `number` | -| `type` | 必需 | `"block-start"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[1]` - -SHA-256: `95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65` - -来源:[`packages/llm/llm/src/types.ts:428`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `index` | 必需 | `number` | -| `text` | 必需 | `string` | -| `type` | 必需 | `"text-delta"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[2]` - -SHA-256: `2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095` - -来源:[`packages/llm/llm/src/types.ts:429`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `index` | 必需 | `number` | -| `text` | 必需 | `string` | -| `type` | 必需 | `"reasoning-delta"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[3]` - -SHA-256: `88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a` - -来源:[`packages/llm/llm/src/types.ts:430`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `argumentsDelta` | 必需 | `string` | -| `id` | 必需 | `string` | -| `index` | 必需 | `number` | -| `name` | 可选 | `string` | -| `type` | 必需 | `"tool-call-delta"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[4]` - -SHA-256: `90c811b8c2668898515e69a24e82caffeb08517f9c7aa193867ff0380f3b535d` - -来源:[`packages/llm/llm/src/types.ts:431`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `block` | 必需 | [`packages/llm/llm/src/types.ts#ContentBlock`](#persistence-type-packagesllmllmsrctypestscontentblock) | -| `index` | 必需 | `number` | -| `type` | 必需 | `"block-end"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[5]` - -SHA-256: `f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515` - -来源:[`packages/llm/llm/src/types.ts:432`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `type` | 必需 | `"usage"` | -| `usage` | 必需 | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6]` - -SHA-256: `a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1` - -来源:[`packages/llm/llm/src/types.ts:433`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `reason` | 必需 | [`packages/llm/llm/src/types.ts#FinishReason`](#persistence-type-packagesllmllmsrctypestsfinishreason) | -| `replayState` | 可选 | [`packages/llm/llm/src/types.ts#ReplayEnvelope`](#persistence-type-packagesllmllmsrctypestsreplayenvelope) | -| `type` | 必需 | `"finish"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[0]` - -SHA-256: `8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0` - -来源:[`packages/llm/llm/src/types.ts:147`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `failure` | 必需 | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `kind` | 必需 | `"aborted"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[1]` - -SHA-256: `693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057` - -来源:[`packages/llm/llm/src/types.ts:148`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `failure` | 必需 | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `kind` | 必需 | `"error"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]` - -SHA-256: `ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7` - -来源:[`packages/core/session/src/types.ts:213`](../packages/core/session/src/types.ts) · [`packages/llm/llm/src/types.ts:146`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"max-tokens"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[3]` - -SHA-256: `1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f` - -来源:[`packages/llm/llm/src/types.ts:144`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"stop"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].reason[4]` - -SHA-256: `287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a` - -来源:[`packages/llm/llm/src/types.ts:145`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"tool-calls"` | - - - -### `event:assistant/attempt.data.stream[0][3].chunk[6].replayState.blocks` - -SHA-256: `b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7` - -`unknown`(不透明) 的数组。 - - - -### `event:assistant/message` - -SHA-256: `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:assistant/message.data`](#persistence-type-eventassistantmessagedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `surfaceOp` | 必需 | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | 必需 | `number` | -| `type` | 必需 | `"assistant/message"` | - - - -### `event:assistant/message.data` - -SHA-256: `77b8491f946edfc8cc77ebae3ba49183759da31ba2dfa83d4c9e9e618c4b91d2` - -来源:[`packages/core/session/src/types.ts:328`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `interrupted` | 可选 | `true` | -| `message` | 必需 | [`packages/llm/llm/src/message.ts#AssistantMessage`](#persistence-type-packagesllmllmsrcmessagetsassistantmessage) | -| `step` | 必需 | `number` | -| `stream` | 必需 | [`event:assistant/attempt.data.stream`](#persistence-type-eventassistantattemptdatastream) | -| `turn` | 必需 | `number` | -| `usage` | 可选 | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:command/done` - -SHA-256: `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:command/done.data`](#persistence-type-eventcommanddonedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"command/done"` | - - - -### `event:command/done.data` - -SHA-256: `5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51` - -来源:[`packages/interaction/commands/src/types.ts:112`](../packages/interaction/commands/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `commandId` | 必需 | `string` | -| `kind` | 必需 | [`event:command/done.data.kind`](#persistence-type-eventcommanddonedatakind) | -| `sourceEventSeq` | 可选 | `number` | -| `text` | 可选 | `string` | - - - -### `event:command/done.data.kind` - -SHA-256: `1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92` - -以下类型之一: - -- `"error"` -- `"success"` - - - -### `event:command/run` - -SHA-256: `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:command/run.data`](#persistence-type-eventcommandrundata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"command/run"` | - - - -### `event:command/run.data` - -SHA-256: `a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86` - -来源:[`packages/interaction/commands/src/types.ts:105`](../packages/interaction/commands/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `args` | 可选 | `string` | -| `commandId` | 必需 | `string` | -| `name` | 必需 | `string` | -| `source` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) | - - - -### `event:compaction/end` - -SHA-256: `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:compaction/end.data`](#persistence-type-eventcompactionenddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"compaction/end"` | - - - -### `event:compaction/end.data` - -SHA-256: `ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2` - -来源:[`packages/compaction/compaction/src/types.ts:72`](../packages/compaction/compaction/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `compactionId` | 必需 | `string` | -| `error` | 可选 | `string` | -| `sourceCommandId` | 可选 | `string` | -| `turn` | 必需 | [`event:compaction/end.data.turn`](#persistence-type-eventcompactionenddataturn) | - - - -### `event:compaction/end.data.turn` - -SHA-256: `3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f` - -来源:[`packages/core/session/src/types.ts:64`](../packages/core/session/src/types.ts) - -以下类型之一: - -- `null` -- `number` - - - -### `event:compaction/prune` - -SHA-256: `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:compaction/prune.data`](#persistence-type-eventcompactionprunedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"compaction/prune"` | - - - -### `event:compaction/prune.data` - -SHA-256: `5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438` - -来源:[`packages/compaction/compaction/src/types.ts:82`](../packages/compaction/compaction/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `shadowedRange` | 必需 | [`event:compaction/prune.data.shadowedRange`](#persistence-type-eventcompactionprunedatashadowedrange) | -| `shadowedSeqs` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `shadowedTokenCount` | 必需 | `number` | - - - -### `event:compaction/prune.data.shadowedRange` - -SHA-256: `9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2` - -来源:[`packages/compaction/compaction/src/types.ts:38`](../packages/compaction/compaction/src/types.ts) · [`packages/compaction/compaction/src/types.ts:84`](../packages/compaction/compaction/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `end` | 必需 | `number` | -| `start` | 必需 | `number` | - - - -### `event:compaction/start` - -SHA-256: `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:compaction/start.data`](#persistence-type-eventcompactionstartdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"compaction/start"` | - - - -### `event:compaction/start.data` - -SHA-256: `3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f` - -来源:[`packages/compaction/compaction/src/types.ts:24`](../packages/compaction/compaction/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `compactionId` | 必需 | `string` | -| `sourceCommandId` | 可选 | `string` | -| `turn` | 必需 | [`event:compaction/end.data.turn`](#persistence-type-eventcompactionenddataturn) | - - - -### `event:compaction/summary` - -SHA-256: `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:compaction/summary.data`](#persistence-type-eventcompactionsummarydata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"compaction/summary"` | - - - -### `event:compaction/summary.data` - -SHA-256: `feb329074f0206ecc06d8a1aa0a0b3e2f47fd27524ba020fbc849ba63e938896` - -以下类型之一: - -- [`event:compaction/summary.data[0]`](#persistence-type-eventcompactionsummarydata0) -- [`event:compaction/summary.data[1]`](#persistence-type-eventcompactionsummarydata1) - - - -### `event:compaction/summary.data[0]` - -SHA-256: `9ff2ad8dddb836f75e8f6197fff2371323dfc396c3c6fb667e6e0b42fda79a5c` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `compactionId` | 必需 | `string` | -| `llmStreamCall` | 必需 | `true` | -| `maxTokens` | 可选 | `number` | -| `model` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `rawOutput` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `shadowedRange` | 必需 | [`event:compaction/prune.data.shadowedRange`](#persistence-type-eventcompactionprunedatashadowedrange) | -| `shadowedSeqs` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `shadowedTokenCount` | 必需 | `number` | -| `sourceCommandId` | 可选 | `string` | -| `summary` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `usage` | 可选 | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:compaction/summary.data[1]` - -SHA-256: `3aa261c8516b5c955ed12080e6257a56cbe513f6c9f0ac9274c12e96c196ebca` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `compactionId` | 必需 | `string` | -| `maxTokens` | 可选 | `number` | -| `model` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `rawOutput` | 可选 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `shadowedRange` | 必需 | [`event:compaction/prune.data.shadowedRange`](#persistence-type-eventcompactionprunedatashadowedrange) | -| `shadowedSeqs` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `shadowedTokenCount` | 必需 | `number` | -| `sourceCommandId` | 可选 | `string` | -| `summary` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `usage` | 可选 | [`packages/llm/llm/src/types.ts#TokenUsage`](#persistence-type-packagesllmllmsrctypeststokenusage) | - - - -### `event:deliverables/presented` - -SHA-256: `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:deliverables/presented.data`](#persistence-type-eventdeliverablespresenteddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"deliverables/presented"` | - - - -### `event:deliverables/presented.data` - -SHA-256: `1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c` - -来源:[`packages/deliverables/tool-present/src/types.ts:15`](../packages/deliverables/tool-present/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `callId` | 必需 | `string` | -| `files` | 必需 | [`event:deliverables/presented.data.files`](#persistence-type-eventdeliverablespresenteddatafiles) | -| `turn` | 必需 | `number` | - - - -### `event:deliverables/presented.data.files` - -SHA-256: `1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345` - -[`packages/deliverables/tool-present/src/types.ts#PresentedFile`](#persistence-type-packagesdeliverablestool-presentsrctypestspresentedfile) 的数组。 - - - -### `event:feedback/message-delete` - -SHA-256: `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackDelete`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackdelete) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"feedback/message-delete"` | - - - -### `event:feedback/message-put` - -SHA-256: `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackPut`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackput) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"feedback/message-put"` | - - - -### `event:feedback/message-put.data.item.category` - -SHA-256: `3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd` - -以下类型之一: - -- `"instruction-following"` -- `"other"` -- `"product-interaction"` -- `"resource-cost"` -- `"security-privacy-permission"` -- `"service-stability"` -- `"task-result"` - - - -### `event:feedback/record` - -SHA-256: `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/feedback/command-feedback/src/types.ts#FeedbackRecord`](#persistence-type-packagesfeedbackcommand-feedbacksrctypestsfeedbackrecord) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"feedback/record"` | - - - -### `event:goal/change` - -SHA-256: `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/goal/goal/src/domain.ts#GoalChangeMeta`](#persistence-type-packagesgoalgoalsrcdomaintsgoalchangemeta) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"goal/change"` | - - - -### `event:goal/change.data[0].operation` - -SHA-256: `62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379` - -以下类型之一: - -- `"block"` -- `"complete"` -- `"create"` -- `"edit"` -- `"pause"` -- `"resume"` - - - -### `event:hook/invoked` - -SHA-256: `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:hook/invoked.data`](#persistence-type-eventhookinvokeddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"hook/invoked"` | - - - -### `event:hook/invoked.data` - -SHA-256: `119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25` - -来源:[`packages/hooks/hook-protocol/src/types.ts:19`](../packages/hooks/hook-protocol/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `dialect` | 必需 | [`packages/hooks/hook-protocol/src/types.ts#HookDialect`](#persistence-type-packageshookshook-protocolsrctypestshookdialect) | -| `handlerId` | 必需 | `string` | -| `matcher` | 可选 | `string` | -| `point` | 必需 | `string` | -| `turn` | 必需 | `number` | - - - -### `event:hook/result` - -SHA-256: `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:hook/result.data`](#persistence-type-eventhookresultdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"hook/result"` | - - - -### `event:hook/result.data` - -SHA-256: `8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141` - -来源:[`packages/hooks/hook-protocol/src/types.ts:31`](../packages/hooks/hook-protocol/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `decision` | 必需 | `string` | -| `durationMs` | 必需 | `number` | -| `exitCode` | 可选 | `number` | -| `handlerId` | 必需 | `string` | -| `point` | 必需 | `string` | -| `stderrSummary` | 可选 | `string` | -| `turn` | 必需 | `number` | - - - -### `event:image/offload` - -SHA-256: `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:image/offload.data`](#persistence-type-eventimageoffloaddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"image/offload"` | - - - -### `event:image/offload.data` - -SHA-256: `477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028` - -来源:[`packages/compaction/compaction-image-offload/src/projection.ts:25`](../packages/compaction/compaction-image-offload/src/projection.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `targets` | 必需 | [`event:image/offload.data.targets`](#persistence-type-eventimageoffloaddatatargets) | - - - -### `event:image/offload.data.targets` - -SHA-256: `9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb` - -[`packages/compaction/compaction-image-offload/src/projection.ts#ImageOffloadTarget`](#persistence-type-packagescompactioncompaction-image-offloadsrcprojectiontsimageoffloadtarget) 的数组。 - - - -### `event:llm/retry` - -SHA-256: `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/llm/llm-retry/src/types.ts#LlmRetryEventData`](#persistence-type-packagesllmllm-retrysrctypestsllmretryeventdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"llm/retry"` | - - - -### `event:llm/retry-started` - -SHA-256: `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/llm/llm-retry/src/types.ts#LlmRetryStartedEventData`](#persistence-type-packagesllmllm-retrysrctypestsllmretrystartedeventdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"llm/retry-started"` | - - - -### `event:llm/retry.data[0]` - -SHA-256: `cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced` - -来源:[`packages/llm/llm-retry/src/types.ts:17`](../packages/llm/llm-retry/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `delayMs` | 必需 | `number` | -| `failure` | 必需 | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `maxRetries` | 必需 | `number` | -| `mode` | 必需 | `"normal"` | -| `policyKey` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `retry` | 必需 | `number` | -| `retryId` | 必需 | `string` | -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `event:llm/retry.data[1]` - -SHA-256: `374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b` - -来源:[`packages/llm/llm-retry/src/types.ts:30`](../packages/llm/llm-retry/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `delayMs` | 必需 | `number` | -| `failure` | 必需 | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `mode` | 必需 | `"always"` | -| `policyKey` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `retry` | 必需 | `number` | -| `retryId` | 必需 | `string` | -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `event:model/selection` - -SHA-256: `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/api/session-controller/src/types.ts#ModelSelection`](#persistence-type-packagesapisession-controllersrctypestsmodelselection) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"model/selection"` | - - - -### `event:permission/preset` - -SHA-256: `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:permission/preset.data`](#persistence-type-eventpermissionpresetdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"permission/preset"` | - - - -### `event:permission/preset.data` - -SHA-256: `8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad` - -来源:[`packages/interaction/permission-presets/src/index.ts:57`](../packages/interaction/permission-presets/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `preset` | 必需 | `string` | - - - -### `event:plan/mode` - -SHA-256: `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:plan/mode.data`](#persistence-type-eventplanmodedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"plan/mode"` | - - - -### `event:plan/mode.data` - -SHA-256: `20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5` - -来源:[`packages/plan/plan-mode/src/index.ts:47`](../packages/plan/plan-mode/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `active` | 必需 | `boolean` | - - - -### `event:request/context` - -SHA-256: `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/core/session/src/types.ts#RequestContext`](#persistence-type-packagescoresessionsrctypestsrequestcontext) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"request/context"` | - - - -### `event:request/header` - -SHA-256: `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:request/header.data`](#persistence-type-eventrequestheaderdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"request/header"` | - - - -### `event:request/header.data` - -SHA-256: `2f0aefb72ab453c4bf21a6687f436775d359dc6f8f10410fd4c0615b20bd9d76` - -来源:[`packages/core/session/src/types.ts:377`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `header` | 必需 | [`packages/core/session/src/types.ts#EpochHeader`](#persistence-type-packagescoresessionsrctypestsepochheader) | -| `reason` | 必需 | [`packages/core/session/src/types.ts#RequestHeaderReason`](#persistence-type-packagescoresessionsrctypestsrequestheaderreason) | -| `startsSeries` | 可选 | `true` | - - - -### `event:request/header.data.header.tools` - -SHA-256: `6d63f25a28b70801937a46b1058be5f52d4efbaf3516141470463ae469b59c23` - -[`packages/llm/llm/src/types.ts#ToolSchema`](#persistence-type-packagesllmllmsrctypeststoolschema) 的数组。 - - - -### `event:request/header.data.header.tools[0].parameters` - -SHA-256: `0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| [`string`] | 索引签名 | `unknown`(不透明) | - - - -### `event:sandbox/mode` - -SHA-256: `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:sandbox/mode.data`](#persistence-type-eventsandboxmodedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"sandbox/mode"` | - - - -### `event:sandbox/mode.data` - -SHA-256: `9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e` - -来源:[`packages/sandbox/sandbox-policy/src/session-mode.ts:33`](../packages/sandbox/sandbox-policy/src/session-mode.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `mode` | 必需 | [`packages/sandbox/sandbox/src/index.ts#SandboxMode`](#persistence-type-packagessandboxsandboxsrcindextssandboxmode) | -| `source` | 可选 | `"delegation"` | - - - -### `event:schedule/change` - -SHA-256: `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/schedule/schedule/src/types.ts#ScheduleChange`](#persistence-type-packagesscheduleschedulesrctypestsschedulechange) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"schedule/change"` | - - - -### `event:session-log-deepseek/delivery-accepted` - -SHA-256: `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:session-log-deepseek/delivery-accepted.data`](#persistence-type-eventsession-log-deepseekdelivery-accepteddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"session-log-deepseek/delivery-accepted"` | - - - -### `event:session-log-deepseek/delivery-accepted.data` - -SHA-256: `8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52` - -来源:[`packages/session/session-log-deepseek/src/types.ts:81`](../packages/session/session-log-deepseek/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `sessionFormatVersion` | 可选 | `number` | -| `sessionId` | 必需 | `string` | -| `throughSeq` | 必需 | `number` | - - - -### `event:session/end-seed` - -SHA-256: `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:session/end-seed.data`](#persistence-type-eventsessionend-seeddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"session/end-seed"` | - - - -### `event:session/end-seed.data` - -SHA-256: `17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3` - -来源:[`packages/core/session/src/types.ts:414`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `inherited` | 可选 | `true` | - - - -### `event:session/title` - -SHA-256: `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/session/session-title/src/types.ts#SessionTitleEventData`](#persistence-type-packagessessionsession-titlesrctypestssessiontitleeventdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"session/title"` | - - - -### `event:session/title-llm-request` - -SHA-256: `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/session/session-title-llm/src/index.ts#SessionTitleLlmRequestEventData`](#persistence-type-packagessessionsession-title-llmsrcindextssessiontitlellmrequesteventdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"session/title-llm-request"` | - - - -### `event:session/title-llm-request.data.messages` - -SHA-256: `478738df7e7d2b103b09fb937817a9302c81076809f2b341169e00a9419c5665` - -[`packages/llm/llm/src/message.ts#Message`](#persistence-type-packagesllmllmsrcmessagetsmessage) 的数组。 - - - -### `event:session/title-llm-request.data.messages[0].role` - -SHA-256: `acd36e1717d2b4ef9e98a8e6fac17ca1203f3f448e5bca51677f129a8f4999e2` - -以下类型之一: - -- `"assistant"` -- `"system"` -- `"user"` - - - -### `event:session/title.data.source[0]` - -SHA-256: `1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597` - -来源:[`packages/session/session-title/src/types.ts:29`](../packages/session/session-title/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"fallback"` | - - - -### `event:session/title.data.source[1]` - -SHA-256: `b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812` - -来源:[`packages/session/session-title/src/types.ts:30`](../packages/session/session-title/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"provider"` | -| `model` | 可选 | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | -| `provider` | 必需 | `string` | - - - -### `event:step/end` - -SHA-256: `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:step/end.data`](#persistence-type-eventstependdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"step/end"` | - - - -### `event:step/end.data` - -SHA-256: `ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545` - -来源:[`packages/core/session/src/types.ts:294`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:296`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `event:step/start` - -SHA-256: `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:step/end.data`](#persistence-type-eventstependdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"step/start"` | - - - -### `event:subagent/catalog` - -SHA-256: `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/subagent/subagent/src/catalog.ts#SubagentCatalogEvent`](#persistence-type-packagessubagentsubagentsrccatalogtssubagentcatalogevent) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"subagent/catalog"` | - - - -### `event:subagent/catalog.data[0]` - -SHA-256: `5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `childCreatedAt` | 必需 | `number` | -| `childId` | 必需 | `string` | -| `label` | 可选 | `string` | -| `mode` | 必需 | `"one-shot"` | -| `version` | 必需 | `0` | - - - -### `event:subagent/catalog.data[1]` - -SHA-256: `0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `childCreatedAt` | 必需 | `number` | -| `childId` | 必需 | `string` | -| `label` | 必需 | `string` | -| `mode` | 必需 | `"continuable"` | -| `version` | 必需 | `0` | - - - -### `event:subagent/descriptor` - -SHA-256: `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/subagent/subagent/src/descriptor.ts#SubagentDescriptorData`](#persistence-type-packagessubagentsubagentsrcdescriptortssubagentdescriptordata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"subagent/descriptor"` | - - - -### `event:subagent/model-selection-policy` - -SHA-256: `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:subagent/model-selection-policy.data`](#persistence-type-eventsubagentmodel-selection-policydata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"subagent/model-selection-policy"` | - - - -### `event:subagent/model-selection-policy.data` - -SHA-256: `0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f` - -来源:[`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../packages/subagent/tool-subagent/src/model-selection-state.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `allowedModels` | 必需 | [`event:subagent/model-selection-policy.data.allowedModels`](#persistence-type-eventsubagentmodel-selection-policydataallowedmodels) | - - - -### `event:subagent/model-selection-policy.data.allowedModels` - -SHA-256: `ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec` - -[`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) 的数组。 - - - -### `event:system/message` - -SHA-256: `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:system/message.data`](#persistence-type-eventsystemmessagedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `sourceEventSeqs` | 可选 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | 必需 | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | 必需 | `number` | -| `type` | 必需 | `"system/message"` | - - - -### `event:system/message.data` - -SHA-256: `2074f40221b76c75fd314246db558965dc3477dfb440bcc952b1eedc9778e366` - -来源:[`packages/core/session/src/types.ts:317`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `message` | 必需 | [`packages/llm/llm/src/message.ts#SystemMessage`](#persistence-type-packagesllmllmsrcmessagetssystemmessage) | -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `event:system/message.data.message.source` - -SHA-256: `23cf7e0cf3fec1283b60fa15713506169bc9c079a08e124d1cb9733baca80b40` - -以下类型之一: - -- [`event:agent/inbox/spliced.data.inserted[0].source[4]`](#persistence-type-eventagentinboxspliceddatainserted0source4) -- [`event:agent/inbox/spliced.data.inserted[0].source[5]`](#persistence-type-eventagentinboxspliceddatainserted0source5) -- [`event:agent/inbox/spliced.data.inserted[0].source[3]`](#persistence-type-eventagentinboxspliceddatainserted0source3) -- [`event:agent/inbox/spliced.data.inserted[0].source[2]`](#persistence-type-eventagentinboxspliceddatainserted0source2) -- [`event:agent/inbox/spliced.data.inserted[0].source[7]`](#persistence-type-eventagentinboxspliceddatainserted0source7) -- [`event:agent/inbox/spliced.data.inserted[0].source[6]`](#persistence-type-eventagentinboxspliceddatainserted0source6) -- [`event:agent/inbox/spliced.data.inserted[0].source[1]`](#persistence-type-eventagentinboxspliceddatainserted0source1) - - - -### `event:team/member` - -SHA-256: `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:team/member.data`](#persistence-type-eventteammemberdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"team/member"` | - - - -### `event:team/member.data` - -SHA-256: `b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1` - -来源:[`packages/experimental/agent-team/src/types.ts:221`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `member` | 必需 | [`packages/experimental/agent-team/src/types.ts#TeamMemberSnapshot`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammembersnapshot) | -| `teamId` | 必需 | `string` | -| `version` | 必需 | `2` | - - - -### `event:team/member.data.member.context` - -SHA-256: `50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48` - -以下类型之一: - -- `"fork"` -- `"fresh"` - - - -### `event:team/message/delivered` - -SHA-256: `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:team/message/delivered.data`](#persistence-type-eventteammessagedelivereddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"team/message/delivered"` | - - - -### `event:team/message/delivered.data` - -SHA-256: `0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1` - -来源:[`packages/experimental/agent-team/src/types.ts:227`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `messageId` | 必需 | `string` | -| `targetId` | 必需 | `string` | -| `teamId` | 必需 | `string` | -| `version` | 必需 | `2` | - - - -### `event:team/message/queued` - -SHA-256: `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:team/message/queued.data`](#persistence-type-eventteammessagequeueddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"team/message/queued"` | - - - -### `event:team/message/queued.data` - -SHA-256: `0c3f4d2248d9bc9700e2d7253fa71aa9935f5c39af6f11de5727f08cccaf8383` - -来源:[`packages/experimental/agent-team/src/types.ts:225`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `message` | 必需 | [`packages/experimental/agent-team/src/types.ts#TeamMessageSnapshot`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammessagesnapshot) | -| `teamId` | 必需 | `string` | -| `version` | 必需 | `2` | - - - -### `event:team/task` - -SHA-256: `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:team/task.data`](#persistence-type-eventteamtaskdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"team/task"` | - - - -### `event:team/task.data` - -SHA-256: `a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c` - -来源:[`packages/experimental/agent-team/src/types.ts:223`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `task` | 必需 | [`packages/experimental/agent-team/src/types.ts#TeamTaskSnapshot`](#persistence-type-packagesexperimentalagent-teamsrctypeststeamtasksnapshot) | -| `teamId` | 必需 | `string` | -| `version` | 必需 | `2` | - - - -### `event:todo/write` - -SHA-256: `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:todo/write.data`](#persistence-type-eventtodowritedata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"todo/write"` | - - - -### `event:todo/write.data` - -SHA-256: `79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99` - -来源:[`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `todos` | 必需 | [`event:todo/write.data.todos`](#persistence-type-eventtodowritedatatodos) | - - - -### `event:todo/write.data.todos` - -SHA-256: `4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea` - -[`packages/todo/tool-todo/src/types.ts#TodoItem`](#persistence-type-packagestodotool-todosrctypeststodoitem) 的数组。 - - - -### `event:todo/write.data.todos[0].status` - -SHA-256: `fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4` - -以下类型之一: - -- `"completed"` -- `"in_progress"` -- `"pending"` - - - -### `event:tool-workflow/agent-end` - -SHA-256: `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentEndData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowagentenddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool-workflow/agent-end"` | - - - -### `event:tool-workflow/agent-start` - -SHA-256: `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentStartData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowagentstartdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool-workflow/agent-start"` | - - - -### `event:tool-workflow/run-end` - -SHA-256: `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunEndData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowrunenddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool-workflow/run-end"` | - - - -### `event:tool-workflow/run-start` - -SHA-256: `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunStartData`](#persistence-type-packagesworkflowtool-workflowsrctypeststoolworkflowrunstartdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool-workflow/run-start"` | - - - -### `event:tool/call` - -SHA-256: `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:tool/call.data`](#persistence-type-eventtoolcalldata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool/call"` | - - - -### `event:tool/call.data` - -SHA-256: `e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1` - -来源:[`packages/core/session/src/types.ts:348`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `arguments` | 必需 | `string` | -| `callId` | 必需 | `string` | -| `name` | 必需 | `string` | -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `event:tool/ptc-dispatch` - -SHA-256: `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/core/tools/src/types.ts#PtcDispatchEventData`](#persistence-type-packagescoretoolssrctypestsptcdispatcheventdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool/ptc-dispatch"` | - - - -### `event:tool/ptc-dispatch-start` - -SHA-256: `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/core/tools/src/types.ts#PtcDispatchStartEventData`](#persistence-type-packagescoretoolssrctypestsptcdispatchstarteventdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool/ptc-dispatch-start"` | - - - -### `event:tool/ptc-dispatch.data.error` - -SHA-256: `a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735` - -来源:[`packages/core/session/src/types.ts:370`](../packages/core/session/src/types.ts) · [`packages/core/tools/src/types.ts:24`](../packages/core/tools/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `code` | 必需 | `string` | -| `name` | 必需 | `string` | -| `reason` | 可选 | `string` | - - - -### `event:tool/result` - -SHA-256: `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:tool/result.data`](#persistence-type-eventtoolresultdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `sourceEventSeqs` | 可选 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | 必需 | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | 必需 | `number` | -| `type` | 必需 | `"tool/result"` | - - - -### `event:tool/result.data` - -SHA-256: `356aad27134a0e31af67c994ff8b9e4b91acfb6c4917b3bc1f7a62bbf82794d5` - -来源:[`packages/core/session/src/types.ts:362`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `error` | 可选 | [`event:tool/ptc-dispatch.data.error`](#persistence-type-eventtoolptc-dispatchdataerror) | -| `message` | 必需 | [`packages/llm/llm/src/message.ts#ToolResultMessage`](#persistence-type-packagesllmllmsrcmessagetstoolresultmessage) | -| `meta` | 可选 | [`event:tool/result.data.meta`](#persistence-type-eventtoolresultdatameta) | -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `event:tool/result.data.message.content` - -SHA-256: `8d6a011f3ef7096a4a922ef420458419ff6b20e1eaeece5d331db7585d2f08d6` - -| 位置 | 存在性 | 类型 | -|---|---|---| -| 0 | 必需 | [`packages/llm/llm/src/types.ts#ToolResultBlock`](#persistence-type-packagesllmllmsrctypeststoolresultblock) | - - - -### `event:tool/result.data.meta` - -SHA-256: `c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6` - -来源:[`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) - -以下类型之一: - -- [`event:tool/result.data.meta[5]`](#persistence-type-eventtoolresultdatameta5) -- [`event:tool/result.data.meta[5][0][6]`](#persistence-type-eventtoolresultdatameta506) -- `string` -- `boolean` -- `null` -- `number` - - - -### `event:tool/result.data.meta[5]` - -SHA-256: `72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227` - -[`event:tool/result.data.meta`](#persistence-type-eventtoolresultdatameta) 的数组。 - - - -### `event:tool/result.data.meta[5][0][6]` - -SHA-256: `529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05` - -来源:[`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| [`string`] | 索引签名 | [`event:tool/result.data.meta`](#persistence-type-eventtoolresultdatameta) | - - - -### `event:turn/end` - -SHA-256: `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:turn/end.data`](#persistence-type-eventturnenddata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"turn/end"` | - - - -### `event:turn/end.data` - -SHA-256: `e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654` - -来源:[`packages/core/session/src/types.ts:292`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `reason` | 必需 | [`packages/core/session/src/types.ts#TurnEndReason`](#persistence-type-packagescoresessionsrctypeststurnendreason) | -| `turn` | 必需 | `number` | - - - -### `event:turn/end.data.reason[0]` - -SHA-256: `b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0` - -来源:[`packages/core/session/src/types.ts:201`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"completed"` | - - - -### `event:turn/end.data.reason[1]` - -SHA-256: `0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3` - -来源:[`packages/core/session/src/types.ts:203`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"aborted"` | -| `reason` | 必需 | [`packages/core/session/src/types.ts#TurnEndCancelCause`](#persistence-type-packagescoresessionsrctypeststurnendcancelcause) | - - - -### `event:turn/end.data.reason[1].reason[1]` - -SHA-256: `6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800` - -来源:[`packages/core/session/src/types.ts:190`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"parent"` | - - - -### `event:turn/end.data.reason[1].reason[2]` - -SHA-256: `6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d` - -来源:[`packages/core/session/src/types.ts:191`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"hook"` | -| `reason` | 必需 | `string` | - - - -### `event:turn/end.data.reason[1].reason[3]` - -SHA-256: `4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db` - -来源:[`packages/core/session/src/types.ts:192`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"disposed"` | - - - -### `event:turn/end.data.reason[1].reason[4]` - -SHA-256: `eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c` - -来源:[`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"legacy"` | - - - -### `event:turn/end.data.reason[2]` - -SHA-256: `023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4` - -来源:[`packages/core/session/src/types.ts:205`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"blocked"` | - - - -### `event:turn/end.data.reason[3]` - -SHA-256: `79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985` - -来源:[`packages/core/session/src/types.ts:211`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `error` | 必需 | [`packages/llm/llm/src/types.ts#LlmFailure`](#persistence-type-packagesllmllmsrctypestsllmfailure) | -| `kind` | 必需 | `"error"` | - - - -### `event:turn/end.data.reason[5]` - -SHA-256: `56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23` - -来源:[`packages/core/session/src/types.ts:220`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"interrupted"` | - - - -### `event:turn/end.data.reason[6]` - -SHA-256: `ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7` - -来源:[`packages/core/session/src/types.ts:227`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"forked"` | - - - -### `event:turn/start` - -SHA-256: `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:turn/start.data`](#persistence-type-eventturnstartdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"turn/start"` | - - - -### `event:turn/start.data` - -SHA-256: `f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d` - -来源:[`packages/core/session/src/types.ts:283`](../packages/core/session/src/types.ts) · [`packages/deliverables/workspace-changes/src/types.ts:106`](../packages/deliverables/workspace-changes/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `turn` | 必需 | `number` | - - - -### `event:user/message` - -SHA-256: `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/llm/llm/src/message.ts#UserMessage`](#persistence-type-packagesllmllmsrcmessagetsusermessage) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `sourceEventSeqs` | 可选 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | 必需 | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | 必需 | `number` | -| `type` | 必需 | `"user/message"` | - - - -### `event:web/deepseek-search-llm-request` - -SHA-256: `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`packages/web/web-search-deepseek/src/provider.ts#DeepSeekSearchLlmRequest`](#persistence-type-packageswebweb-search-deepseeksrcprovidertsdeepseeksearchllmrequest) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"web/deepseek-search-llm-request"` | - - - -### `event:web/deepseek-search-llm-request.data.body` - -SHA-256: `930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731` - -来源:[`packages/web/web-search-deepseek/src/provider.ts:61`](../packages/web/web-search-deepseek/src/provider.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `max_tokens` | 必需 | `number` | -| `messages` | 必需 | [`event:web/deepseek-search-llm-request.data.body.messages`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages) | -| `model` | 必需 | `string` | -| `tools` | 必需 | [`event:web/deepseek-search-llm-request.data.body.tools`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodytools) | - - - -### `event:web/deepseek-search-llm-request.data.body.messages` - -SHA-256: `b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f` - -| 位置 | 存在性 | 类型 | -|---|---|---| -| 0 | 必需 | [`event:web/deepseek-search-llm-request.data.body.messages[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0) | - - - -### `event:web/deepseek-search-llm-request.data.body.messages[0]` - -SHA-256: `9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5` - -来源:[`packages/web/web-search-deepseek/src/provider.ts:64`](../packages/web/web-search-deepseek/src/provider.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:web/deepseek-search-llm-request.data.body.messages[0].content`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0content) | -| `role` | 必需 | `"user"` | - - - -### `event:web/deepseek-search-llm-request.data.body.messages[0].content` - -SHA-256: `8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9` - -| 位置 | 存在性 | 类型 | -|---|---|---| -| 0 | 必需 | [`event:web/deepseek-search-llm-request.data.body.messages[0].content[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0content0) | - - - -### `event:web/deepseek-search-llm-request.data.body.messages[0].content[0]` - -SHA-256: `4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c` - -来源:[`packages/llm/llm/src/types.ts:61`](../packages/llm/llm/src/types.ts) · [`packages/web/web-search-deepseek/src/provider.ts:66`](../packages/web/web-search-deepseek/src/provider.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `text` | 必需 | `string` | -| `type` | 必需 | `"text"` | - - - -### `event:web/deepseek-search-llm-request.data.body.tools` - -SHA-256: `4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8` - -| 位置 | 存在性 | 类型 | -|---|---|---| -| 0 | 必需 | [`event:web/deepseek-search-llm-request.data.body.tools[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodytools0) | - - - -### `event:web/deepseek-search-llm-request.data.body.tools[0]` - -SHA-256: `2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3` - -来源:[`packages/web/web-search-deepseek/src/provider.ts:71`](../packages/web/web-search-deepseek/src/provider.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `max_uses` | 必需 | `number` | -| `name` | 必需 | `"web_search"` | -| `type` | 必需 | `"web_search_20250305"` | - - - -### `event:workspace/changes` - -SHA-256: `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `data` | 必需 | [`event:turn/start.data`](#persistence-type-eventturnstartdata) | -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `"workspace/changes"` | - - + ### `"every"` @@ -4079,7 +1666,7 @@ SHA-256: `e42b0f40b5d0b628c6e1c44a8fb9eda0780037a81959e1b93d2dfb47b46b0e87` `"every"` - + ### `"failed"` @@ -4087,7 +1674,7 @@ SHA-256: `b57a2889408de36e4516807194c73bdecd51a92f633ccd05db81bf049200f420` `"failed"` - + ### `"fallback"` @@ -4095,15 +1682,7 @@ SHA-256: `d6e654b88b584fcdf290a56802b1730bc7b9847ae86baa4265ab7769eb48990c` `"fallback"` - - -### `false` - -SHA-256: `0c4205180f75b9ee1e0d878bd9a9851628b5dc18448486389d9c5fdc3f1ccda3` - -`false` - - + ### `"feedback/message-delete"` @@ -4111,7 +1690,7 @@ SHA-256: `44818000e56acb97afdb5045ce235eb55e3fb1ccabc9fc7d0750bb38f36a7f8e` `"feedback/message-delete"` - + ### `"feedback/message-put"` @@ -4119,7 +1698,7 @@ SHA-256: `6cda0d6d3b4336d83998fe580628426df81c2afbab5d768b8813b56d569120e8` `"feedback/message-put"` - + ### `"feedback/record"` @@ -4127,7 +1706,7 @@ SHA-256: `c99e20441bf15341e9db54385e558e5c03d21dff2eb1ac08ccbf47c2d8747954` `"feedback/record"` - + ### `"file"` @@ -4135,7 +1714,7 @@ SHA-256: `277b61f9c6f8170425fa6ffe06cfa14376757a896a4749cb82a687d7364c4fc9` `"file"` - + ### `"finish"` @@ -4143,7 +1722,7 @@ SHA-256: `bd499eac047efe091a4df7382eadd06d25cf0cb31fee3981e8b24d85762841cd` `"finish"` - + ### `"fork"` @@ -4151,7 +1730,7 @@ SHA-256: `2da725e554cd89301d829ed9dc45a572c3cd1b93b5e91d0d71f007976d8a0863` `"fork"` - + ### `"forked"` @@ -4159,7 +1738,7 @@ SHA-256: `b2245a906e13aa94f2d3cc6cf7b04cfa0267f7b7f4d468de1b00b1a314e54626` `"forked"` - + ### `"fresh"` @@ -4167,7 +1746,7 @@ SHA-256: `dd2780e7e07684332f7a9ab047237798d260e7eaffb1321cb38eca695d184c3d` `"fresh"` - + ### `"goal"` @@ -4175,7 +1754,7 @@ SHA-256: `b815d7b91cdd9fc6ccc7dcba05cfc5ce1d55fab5fc0c0801803cd3630cedb602` `"goal"` - + ### `"goal/change"` @@ -4183,7 +1762,7 @@ SHA-256: `237c004c73b6b288246816e0d7fde16e09c63a47aa3b1227383d7afe58666163` `"goal/change"` - + ### `"hook"` @@ -4191,7 +1770,7 @@ SHA-256: `dbdafceb9a900183cccc80596498d386f3bf7bddead2b8cfde68453aa4739edc` `"hook"` - + ### `"hook/invoked"` @@ -4199,7 +1778,7 @@ SHA-256: `b9305f0ea75ccd6a6061c27fde19f2ab85534f9f3c1a717b573b077ebae0f611` `"hook/invoked"` - + ### `"hook/result"` @@ -4207,7 +1786,7 @@ SHA-256: `a3a259a1aa5401af786ce08c4a8419681d3000d73467991b5fc563389bc4ebd2` `"hook/result"` - + ### `"image"` @@ -4215,7 +1794,7 @@ SHA-256: `fb8b6a2e53cb9cf44c551176de0fb77d1ddc60037b99a891ff8a860b6d5c29a0` `"image"` - + ### `"image/gif"` @@ -4223,7 +1802,7 @@ SHA-256: `de30b1fa12c75f81df6aa4096e1595296d2d04e2be14a7c29849cf8028b79048` `"image/gif"` - + ### `"image/jpeg"` @@ -4231,7 +1810,7 @@ SHA-256: `3f74ba74acd10644c1ed6947a411d8088bd2cfac74f61bb8540f96d68e31f004` `"image/jpeg"` - + ### `"image/offload"` @@ -4239,7 +1818,7 @@ SHA-256: `9acbe713f3f641921dd3333b240aa72e176d795327c24e8d9db9b68b16771b49` `"image/offload"` - + ### `"image/png"` @@ -4247,7 +1826,7 @@ SHA-256: `58f94390b982f8a5ac1f4f235ba612557f4a1dc4a995d8b1cec63ce7639decb0` `"image/png"` - + ### `"image/webp"` @@ -4255,7 +1834,11 @@ SHA-256: `ebb768d85ec87fb68e42fc14fd7d8535b5ac11791b14d04c6770180f0a719bf8` `"image/webp"` - + + + + + ### `"in-history"` @@ -4265,7 +1848,7 @@ SHA-256: `f311671e07bc7fa645a0b6597de9966b97147956565296ba76a36543801b66c5` `"in-history"` - + ### `"in_progress"` @@ -4273,7 +1856,7 @@ SHA-256: `94c56aeb1564ad735eb773d88636b40761d063efa1610f1308004d32923f5378` `"in_progress"` - + ### `"initial"` @@ -4281,7 +1864,7 @@ SHA-256: `e7ce49f12953583fad217bf80fb9f1463acff2c3e9471a823782661675fb124c` `"initial"` - + ### `"instruction-following"` @@ -4289,7 +1872,7 @@ SHA-256: `e4cac694f8b6e1d52e48c699464f1c4c26111ef87e558f7931040d00fdc8d486` `"instruction-following"` - + ### `"instructions"` @@ -4297,7 +1880,7 @@ SHA-256: `fee1caf8ab6a65c1bc981f5a1730164490f22a2a89ffa3d0b76f1f432c44c8b5` `"instructions"` - + ### `"interrupted"` @@ -4305,7 +1888,7 @@ SHA-256: `69d238a6e9b08d67f601b1825962963d8d3523cb69ebf6208c697dc5d058c199` `"interrupted"` - + ### `"legacy"` @@ -4313,7 +1896,7 @@ SHA-256: `ad3b56aa2fc1ad4250e7399295d34a8eae592e1907e85852e2291b2e498a30bc` `"legacy"` - + ### `"llm/retry"` @@ -4321,7 +1904,7 @@ SHA-256: `611cae9a3539733aa0c42f66035a7d90f19dcbbdfb5d9e3b628b13705253942d` `"llm/retry"` - + ### `"llm/retry-started"` @@ -4329,7 +1912,7 @@ SHA-256: `4ae007ed190a72c92138b22d059b83208079c7551ca13fb59ae8cf5e23693964` `"llm/retry-started"` - + ### `"max-tokens"` @@ -4337,7 +1920,7 @@ SHA-256: `68141cbe3994a5ffcd064c07c75996538437fd9dbf77ce8a2927e89ec577fabe` `"max-tokens"` - + ### `"model"` @@ -4345,7 +1928,7 @@ SHA-256: `2765e9119edf5816ac1ab4c95c5ee32c90403f3742962eff11544f7752d59d2e` `"model"` - + ### `"model/selection"` @@ -4353,7 +1936,7 @@ SHA-256: `1d5f04a03ea75fc8eeece544129eba0f49f0c82046e9c404461920390135c7b2` `"model/selection"` - + ### `"negative"` @@ -4361,7 +1944,7 @@ SHA-256: `b1f62380f6746fedd629e71065e3583cef83334875b499ac9665c2eb87acfbf5` `"negative"` - + ### `"never"` @@ -4369,7 +1952,7 @@ SHA-256: `1571525adc95a24e5d25b5a6440df401cd7cdd881b745178e85f5a333435cd1b` `"never"` - + ### `"next-step"` @@ -4377,7 +1960,7 @@ SHA-256: `3e2ece4967cfebe95f450a93f45523dff99d6749f6269f2f60f84dfecfcf3693` `"next-step"` - + ### `"next-turn"` @@ -4385,7 +1968,7 @@ SHA-256: `62ecb62dc0fe1b5e70217f8a80c39256a40ee3a1917be14e5ca899d20c35f7fd` `"next-turn"` - + ### `"normal"` @@ -4393,7 +1976,7 @@ SHA-256: `3bc287e765d58dc3a22672a0495a6cfd561220dd38fbaecef80aa95b96caed79` `"normal"` - + ### `"notice"` @@ -4401,25 +1984,7 @@ SHA-256: `e8de0f457fed5b9ff94dc4950b59ef75fd8ba8af665cc7899485924a62653367` `"notice"` - - -### `null` - -SHA-256: `938f7c7357bc403ea3b281a9dd016939df7a0880fc8db12612585be574d0d615` - -`null` - - - -### `number` - -SHA-256: `0657d3ca5ac4e7bf79b00bcf860b1c7159d01a9da137497221ec2f1776e365f7` - -来源:[`packages/core/session/src/types.ts:31`](../packages/core/session/src/types.ts) - -`number` - - + ### `"one-shot"` @@ -4427,7 +1992,7 @@ SHA-256: `d28765f87d6b6ab408e0b2f3e7e297791b004b806d8e302c49903ebae815feb2` `"one-shot"` - + ### `"other"` @@ -4435,83 +2000,753 @@ SHA-256: `9d80129e13edfb6feb03ed327e6085c6ef60b97ad074244b2f5fd4667424a6a4` `"other"` - + -### `packages/api/session-controller/src/types.ts#ModelSelection` +### `"parent"` -SHA-256: `f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b` +SHA-256: `e6411b09c1d982f789bf741ca74e2bea69df56029847f86a6148e722039ee732` -来源:[`packages/api/session-controller/src/types.ts:86`](../packages/api/session-controller/src/types.ts) +`"parent"` + + + +### `"pause"` + +SHA-256: `1d8798b1a5e8c545ee4dcd2b4e75c0b4c9ffd985e4744c6d1a1aab992f859721` + +`"pause"` + + + +### `"paused"` + +SHA-256: `c43b119ce579b3e9983a0d3adc4ba402ebb9ba773d89738a2dab01ecf5813943` + +`"paused"` + + + +### `"pending"` + +SHA-256: `234142ee4f996f38cc9fa3b8b3e3de29b03c9aefe5ebf6c224eddd564505aa85` + +`"pending"` + + + +### `"permission/preset"` + +SHA-256: `ae63d9d1080ed8945031594d93f8d96651d7101b848719cc3e1475875cd3d649` + +`"permission/preset"` + + + +### `"plan/mode"` + +SHA-256: `f634871d1e18b1eb199497ac8ab72d3964f48d03fbf611dc7521a1970cf429d9` + +`"plan/mode"` + + + +### `"plugin"` + +SHA-256: `e654d28d1e6c471147310d2fba396d00969cfe6ed9022626d3f2c2312e0b1cbb` + +`"plugin"` + + + +### `"positive"` + +SHA-256: `df5d9709b7db2a72510dc52052a23f0c38f39730af1504bab8bccabc14fae528` + +`"positive"` + + + +### `"product-interaction"` + +SHA-256: `0341d4c3dfcd53253cdc1e789d9130d3cd848b6f8b0706bf92f313a68b39ff23` + +`"product-interaction"` + + + +### `"provider"` + +SHA-256: `e31572180d6b28b73f073ad30ae19d5d82982d3daf984723984e23da1e7c459a` + +`"provider"` + + + +### `"provisioning"` + +SHA-256: `871bfd6f7bb91061246768d3377f3fd58d6b8ea7c31f44c714ae7ab215650d62` + +`"provisioning"` + + + +### `"read-only"` + +SHA-256: `12a0cfa619ac4a5fc6c3e8e359c8dae15769edc61497a575935c78d5842f8e42` + +`"read-only"` + + + +### `"reasoning"` + +SHA-256: `3c2535ca0a2062f172f15344f8040755002b5ac506cf94fc4ebaa822b15feb8c` + +`"reasoning"` + + + +### `"reasoning-chunks"` + +SHA-256: `688e853dc149f0d30b31765c12ec7e3be74169bdf1a4c6463a10b945d50cc1b8` + +`"reasoning-chunks"` + + + +### `"reasoning-delta"` + +SHA-256: `6f091fe32ab24407236090ca9d710bbaf59bb57466e9f3b8f1f6e4862bc863c6` + +`"reasoning-delta"` + + + +### `"recall"` + +SHA-256: `383cf73ae4748e5beb281ae74857ba1ffb92ae01075b9fbf51af78b666007a8f` + +`"recall"` + + + +### `"rejected"` + +SHA-256: `fab35c4520883c0d69e42d079c9f543fc5ac7a2d15b537b5572fcd99059c7018` + +`"rejected"` + + + +### `"relay"` + +SHA-256: `16d0507cb94b4cfc84a87446b1ba7652d6ec1d65ee1684789e747e30d542800e` + +`"relay"` + + + +### `"remove"` + +SHA-256: `7382c4fc95fe8c5db65ca4d9da572b115d0dbb818b7f32c22ab040318ffbb4bc` + +`"remove"` + + + +### `"replace"` + +SHA-256: `f6cb462f808309e315fea634f1ed86268b8346bbcee6774d9097ca6eed7ac1f8` + +`"replace"` + + + +### `"request/context"` + +SHA-256: `70b082fe78991edf13cf66e1b4d06cd2dcff9cacfd76f8cfb996bfb61939e7b2` + +`"request/context"` + + + +### `"request/header"` + +SHA-256: `3e0eff5946255ff05d88a10839c60305135801f97794ea48d409f8503303317e` + +`"request/header"` + + + +### `"resource-cost"` + +SHA-256: `5bd310104cfe448e530beb11422d2f791e2e32e8e95fdc528a15f9ca693dae75` + +`"resource-cost"` + + + +### `"resume"` + +SHA-256: `34d1ab5c5df378186d6054b1a1beea9a41e41965d6f336f0bc0025c441a82e66` + +`"resume"` + + + +### `"sandbox/mode"` + +SHA-256: `ca085dba2c877feceebf3c62f9d39c6c2a4d2314d97b94b3927a780fe8fe2bb2` + +`"sandbox/mode"` + + + +### `"schedule/change"` + +SHA-256: `0e7b2a97f54f1afdb8cdfad1635abe9145327db539bfb69b4045c19d8c17755d` + +`"schedule/change"` + + + +### `"security-privacy-permission"` + +SHA-256: `07eccc9ea2f9b5439d76cc77d5e062936677d43f07a23da749819b0a22ee36b7` + +`"security-privacy-permission"` + + + +### `"series"` + +SHA-256: `4f507598cf476214aa7646ce7841a7064a9dcb05d0a1eaaefaf79c2b738f160f` + +`"series"` + + + +### `"service-stability"` + +SHA-256: `7180844e1066230c5e891f1b9ccd942423b0fe48aac6ded7eef2a285b288a732` + +`"service-stability"` + + + +### `"session"` + +SHA-256: `e41bdebe246abe17154de7e7a1d81035437eee8d20e7f1edff0d91e2598ad828` + +`"session"` + + + +### `"session-log-deepseek/delivery-accepted"` + +SHA-256: `47e5d84f1a93450a78c7f3954b43990d0f629af7c034a56313e5deb63e772c1b` + +`"session-log-deepseek/delivery-accepted"` + + + +### `"session-reference"` + +SHA-256: `7f13860ee89a2d35ce09f958e85a04566cd59cb1de1d73a9619a9b631961dc71` + +`"session-reference"` + + + +### `"session/end-seed"` + +SHA-256: `1c2686c0682e7bc51d61117b2652bd4a80707e331aa276d6ef915ae32534a330` + +`"session/end-seed"` + + + +### `"session/title"` + +SHA-256: `7a651f3b672c52fb615f22c0ce9cb3cc5b22aad92e6bbeefb0808fd7b9233a50` + +`"session/title"` + + + +### `"session/title-llm-request"` + +SHA-256: `587bb11da730e06aa52b62c087d217d6f8f22459b25f31cb9e1e1baf17944e5e` + +`"session/title-llm-request"` + + + +### `"set"` + +SHA-256: `b765ee31033cea463863faf3fc6a0a1b85c47c6a2f13fe1ce833abe56105114b` + +`"set"` + + + +### `"skill-catalog"` + +SHA-256: `6ebcc2dbec9f2dabca9f668ae6d39e877899b180740570f453409db339221df3` + +`"skill-catalog"` + + + +### `"skill-invocation"` + +SHA-256: `1922cd79a70806c17758185a6ef0458bc1fb3900363906733421c16414da2509` + +`"skill-invocation"` + + + +### `"snapshot"` + +SHA-256: `6f9e00383836275e46c0a9915767f9bb561be5fc30aae490174908a93e99a912` + +`"snapshot"` + + + +### `"step/end"` + +SHA-256: `c219efbdfd53b836786202ab4532913d555798f0a8615a4e9629736e3799fb70` + +`"step/end"` + + + +### `"step/start"` + +SHA-256: `2c64d4bc7264fd3f8bed47e96ab8a593bce05a1e4e1c436dcd244a3b7e0c2a9d` + +`"step/start"` + + + +### `"stop"` + +SHA-256: `57f3f606ff8b6c84d9c443faace9d1dd10cca0354f37a4f515ef075f7c351b90` + +`"stop"` + + + +### `"subagent"` + +SHA-256: `aacda84a69739238aa782eea902d3073017d9d74b9808de2bf5a83c9738cbdc6` + +`"subagent"` + + + +### `"subagent-settled"` + +SHA-256: `bf16d2e98a7f13894ded2cffe5ce857bf473954a0e3c0ed9bc7739e2e1c7b78a` + +`"subagent-settled"` + + + +### `"subagent/catalog"` + +SHA-256: `44c8c77aa9aa100b0d74d2deee85474b29faa6eee0ac0f662f7abe9931ddd7f2` + +`"subagent/catalog"` + + + +### `"subagent/descriptor"` + +SHA-256: `5ebce1317eacd2c148456627a09668e927ee15c204f0643f5ea76b46b54a2647` + +`"subagent/descriptor"` + + + +### `"subagent/model-selection-policy"` + +SHA-256: `0a8a062bc9c3c0d97fd97742262f2ea53dd32297f834e81114870d38ac3dc6da` + +`"subagent/model-selection-policy"` + + + +### `"success"` + +SHA-256: `511801b0a6470d98566e8385d3dffddb2b67f79fcf73ed6056f46c3cc0a245a7` + +`"success"` + + + +### `"system"` + +SHA-256: `8af841fc9b265ade3441caf9fe40dd24db24226befba48150e6d0eeccc1389c3` + +`"system"` + + + +### `"system/message"` + +SHA-256: `1c5a58f4599bd4a9711712551ffe2442a5e5fcd0758bafe630cc4ead850bdaa7` + +`"system/message"` + + + +### `"task-result"` + +SHA-256: `f05fb85e715af4ab4de0b6ba111166dd0435bd8bb74a0fa0f32b9d174113fc7c` + +`"task-result"` + + + +### `"team-message"` + +SHA-256: `2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c` + +`"team-message"` + + + +### `"team/member"` + +SHA-256: `18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0` + +`"team/member"` + + + +### `"team/message/delivered"` + +SHA-256: `a8a2b9011fc067862df7ce40748868467e5778283d7ac193c13f77684a914c57` + +`"team/message/delivered"` + + + +### `"team/message/queued"` + +SHA-256: `4e011753f8263f436efaabfbb3b4db53a98fc55342c5ded2daf7208b217be159` + +`"team/message/queued"` + + + +### `"team/task"` + +SHA-256: `b57ae1b37e52bee0a21cbdace168dc6a15582bcda8c306dad962c5dcc8a8e28b` + +`"team/task"` + + + +### `"text"` + +SHA-256: `4e44c9118152f6829634bfd508e47669ab0497caffa380c94b4be91f9390d35d` + +`"text"` + + + +### `"text-chunks"` + +SHA-256: `f9cfc89e8fe085b4fcc9cd32b74b6f103608c54d7d8cd97b47c01de34f252ba3` + +`"text-chunks"` + + + +### `"text-delta"` + +SHA-256: `5abab3a27fd2736660ecddd94b28d6bbf114986dd894880153bd1be3ccacb563` + +`"text-delta"` + + + +### `"todo/write"` + +SHA-256: `af0750d32d97d47b12b7361a587db41894b17e04c9a805fe212f0114aa2248c7` + +`"todo/write"` + + + +### `"tool"` + +SHA-256: `a13d8f379222ece8a02a86efe4c8334af4f108ecb3034b38c0a42bb3046e6847` + +`"tool"` + + + +### `"tool-call"` + +SHA-256: `1f0133217eeeffd8d387baf1ec8ed9856e719bcd999dc08e48624cba96d75fd7` + +`"tool-call"` + + + +### `"tool-call-chunks"` + +SHA-256: `616f93a5047de668e1c30d57b1786abd76beeb4123599637ec1dc5290320ede5` + +`"tool-call-chunks"` + + + +### `"tool-call-delta"` + +SHA-256: `9b4fd974c124c83743efe030ba4e1250e087505f3f74588716a521fb8d453267` + +`"tool-call-delta"` + + + +### `"tool-calls"` + +SHA-256: `6c1cccb433ddc153facb380c7dda956237ba5c31f8a532a69142dc277890cc9b` + +`"tool-calls"` + + + +### `"tool-result"` + +SHA-256: `e5244812c495a80c2e78ba2c2690dca5f6b58ea8d3fe5531ff94a6f9ac5e5d66` + +`"tool-result"` + + + +### `"tool-workflow/agent-end"` + +SHA-256: `5d17f27a1ef9f7026c0232714adf7573961536d75f3303ca97973975f5af170e` + +`"tool-workflow/agent-end"` + + + +### `"tool-workflow/agent-start"` + +SHA-256: `ad92f473a03ae72599ff26c86e897c25e16269519ad2a87340f0bea946517af8` + +`"tool-workflow/agent-start"` + + + +### `"tool-workflow/run-end"` + +SHA-256: `fe792a6cd430494503837e21e79f91677704ccdd9e870c679aabd7d43ed47ddd` + +`"tool-workflow/run-end"` + + + +### `"tool-workflow/run-start"` + +SHA-256: `cdca80b8dad24d4e7b1d5a288a8475ba8d8d46be385bd2da85f122ee836f1670` + +`"tool-workflow/run-start"` + + + +### `"tool/call"` + +SHA-256: `c589e938cc0e4989df8b82abef6339de621f0dc4fe62c230d145b94996af7f92` + +`"tool/call"` + + + +### `"tool/ptc-dispatch"` + +SHA-256: `fb5e0517050d2c6d40e5b8145db1f7c5ca7044d5d50fada6ff80e0b22c6ca973` + +`"tool/ptc-dispatch"` + + + +### `"tool/ptc-dispatch-start"` + +SHA-256: `2aed07493b1c65b6d00de5586da1e743cf501684b9ad43a1765fb4007d4ea456` + +`"tool/ptc-dispatch-start"` + + + +### `"tool/result"` + +SHA-256: `570e85022434613394418ad33e77e9f1f7a05699b33d0b62eae0677a638c3833` + +`"tool/result"` + + + +### `"turn/end"` + +SHA-256: `4312134fc6f9cad507c31390bd3d147535492dd77621ec517c5e85f853d53a03` + +`"turn/end"` + + + +### `"turn/start"` + +SHA-256: `0af3ecfb8c60d416fc40a7cc4fb2c4851a8e46608b2b38ab9e510670c971aa1f` + +`"turn/start"` + + + +### `"unavailable"` + +SHA-256: `2c4c21f19f426a58f2dac914e34313aa43f8408972de857a486d1f086d5adb6c` + +`"unavailable"` + + + +### `"usage"` + +SHA-256: `0bdaf9cb63594be4ef034b68901fffe792fe09d6d5f6bac42d7f56f6e7834fb9` + +`"usage"` + + + +### `"user"` + +SHA-256: `68f44f59e91c41395076cb77265981a601680ec8a381bbbeb6ab754ffdc94573` + +`"user"` + + + +### `"user/message"` + +SHA-256: `de25352d2dc4196309bd84b5bac6319f6d5c898ea0e82bb5ae66c5738d0d426f` + +`"user/message"` + + + +### `"web/deepseek-search-llm-request"` + +SHA-256: `6f611bed14b2106542480c4a230b4a83baf76dc0d8ac0cd13319a7cb8dae7675` + +`"web/deepseek-search-llm-request"` + + + +### `"web_search"` + +SHA-256: `935c8d486292b13c87b57ca280eb8c58b5b2f5239be86fcd4334c33fdeb87682` + +`"web_search"` + + + +### `"web_search_20250305"` + +SHA-256: `0116b1f89c05221d56b0ba35c83d302bf4857bc7277d247e9bbaf74b27d2c66e` + +`"web_search_20250305"` + + + +### `"webhook"` + +SHA-256: `db6c5246911d47a7969f6b4cb47c7d0dbbde75c402710b22ace3672fa97bebe0` + +`"webhook"` + + + +### `"workspace-write"` + +SHA-256: `a3edd1efd1fef21b72c55e213c8a8b24196b091abde2b89db52be0b2aaae3cfa` + +`"workspace-write"` + + + +### `"workspace/changes"` + +SHA-256: `8e8155594e07812356b67d732196dda894b0f9c91a5969d51612cf490b0a016d` + +`"workspace/changes"` + + + +### `0` + +SHA-256: `93d38436347f67c9022aacbc4472e283d722bcab8eb73fc376aaf7b6a6b9fb35` + +`0` + + + +### `1` + +SHA-256: `f88f1b7b6bb733f685f5fb6a8744a5db9199fa53c90463ea1a33bad51153671d` + +`1` + + + +### `2` + +SHA-256: `a0f906856fc06f1c6f2083eb970e5a657a82b1a84c06c095445e5d6d161cda80` + +`2` + + + +### `4` + +SHA-256: `af6e173f7be819bcd0a5c8d77918649c10ce761d8a184ff472f2e01ce64eb2e0` + +`4` + + + + + + + +### `AfterScheduleRecord` + +SHA-256: `27e337d3d6b402b221e50c247a3f518a70d0c474cc60beee15fac3e9c5cbfcbe` + +来源:[`packages/schedule/schedule/src/types.ts:13`](../packages/schedule/schedule/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `model` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `reasoningEffort` | 可选 | `string` | +| `afterSeconds` | 必需 | `number` | +| `id` | 必需 | `string` | +| `kind` | 必需 | `"after"` | +| `prompt` | 必需 | `string` | +| `scheduledAt` | 必需 | `string` | - + -### `packages/attachment/attachment/src/types.ts#FileAttachmentRef` - -SHA-256: `f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6` - -来源:[`packages/attachment/attachment/src/types.ts:39`](../packages/attachment/attachment/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `attachmentId` | 必需 | `string` | -| `bytes` | 必需 | `number` | -| `name` | 必需 | `string` | - - - -### `packages/attachment/attachment/src/types.ts#ImageAttachmentRef` - -SHA-256: `b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35` - -来源:[`packages/attachment/attachment/src/types.ts:11`](../packages/attachment/attachment/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `attachmentId` | 必需 | `string` | -| `bytes` | 必需 | `number` | -| `height` | 必需 | `number` | -| `mediaType` | 必需 | [`packages/attachment/attachment/src/types.ts#ImageMediaType`](#persistence-type-packagesattachmentattachmentsrctypestsimagemediatype) | -| `name` | 可选 | `string` | -| `originalDimensions` | 可选 | [`event:agent/inbox/spliced.data.inserted[0].content[0][2].attachment.originalDimensions`](#persistence-type-eventagentinboxspliceddatainserted0content02attachmentoriginaldimensions) | -| `width` | 必需 | `number` | - - - -### `packages/attachment/attachment/src/types.ts#ImageMediaType` - -SHA-256: `2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716` - -来源:[`packages/attachment/attachment/src/types.ts:8`](../packages/attachment/attachment/src/types.ts) - -以下类型之一: - -- `"image/gif"` -- `"image/jpeg"` -- `"image/png"` -- `"image/webp"` - - - -### `packages/compaction/compaction-image-offload/src/projection.ts#ImageOffloadTarget` - -SHA-256: `1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f` - -来源:[`packages/compaction/compaction-image-offload/src/projection.ts:9`](../packages/compaction/compaction-image-offload/src/projection.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `imageIndexes` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `seq` | 必需 | `number` | + -### `packages/context/agent-instructions/src/render.ts#AgentInstructionChange` +### `AgentInstructionChange` SHA-256: `83da72c6857601c75da11212ef847f57d457b9c99f0a82246dcdff3e26700239` @@ -4519,14 +2754,26 @@ SHA-256: `83da72c6857601c75da11212ef847f57d457b9c99f0a82246dcdff3e26700239` | 属性 | 存在性 | 类型 | |---|---|---| -| `action` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].source[16].changes[0].action`](#persistence-type-eventagentinboxspliceddatainserted0source16changes0action) | +| `action` | 必需 | [`union (3 variants)`](#persistence-type-sha256-904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd) | | `digest` | 可选 | `string` | | `path` | 必需 | `string` | | `scope` | 必需 | `string` | + + +### `AgentInstructionChange[]` + +SHA-256: `2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee` + +[`AgentInstructionChange`](#persistence-type-sha256-83da72c6857601c75da11212ef847f57d457b9c99f0a82246dcdff3e26700239) 的数组。 + + + + + -### `packages/context/agent-instructions/src/state.ts#AgentInstructionSource` +### `AgentInstructionSource` SHA-256: `6f22a9d02b9a1f1157f3b0e7bdccd7e7b12b085c4efdb709dfc74a465cd4e590` @@ -4536,527 +2783,35 @@ SHA-256: `6f22a9d02b9a1f1157f3b0e7bdccd7e7b12b085c4efdb709dfc74a465cd4e590` |---|---|---| | `baseline` | 可选 | `true` | | `baselineIdentity` | 可选 | `string` | -| `changes` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].source[16].changes`](#persistence-type-eventagentinboxspliceddatainserted0source16changes) | +| `changes` | 必需 | [`AgentInstructionChange[]`](#persistence-type-sha256-2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee) | | `form` | 必需 | `"instructions"` | | `kind` | 必需 | `"agent-instructions"` | - + -### `packages/context/session-reference/src/types.ts#SessionReferenceSource` + -SHA-256: `f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f` + -来源:[`packages/context/session-reference/src/types.ts:13`](../packages/context/session-reference/src/types.ts) +### `AgentMessageSource` + +SHA-256: `4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86` + +来源:[`packages/subagent/subagent/src/continuation-messages.ts:15`](../packages/subagent/subagent/src/continuation-messages.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `form` | 必需 | `"recall"` | -| `kind` | 必需 | `"session-reference"` | -| `references` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].source[15].references`](#persistence-type-eventagentinboxspliceddatainserted0source15references) | -| `version` | 必需 | `1` | +| `form` | 必需 | `"relay"` | +| `kind` | 必需 | `"agent-message"` | +| `senderSessionId` | 必需 | `string` | - + -### `packages/core/agent/src/types.ts#InboxTarget` - -SHA-256: `96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c` - -来源:[`packages/core/agent/src/types.ts:30`](../packages/core/agent/src/types.ts) - -以下类型之一: - -- `"next-step"` -- `"next-turn"` - - - -### `packages/core/session/src/types.ts#EpochHeader` - -SHA-256: `c55a891c7aac496de6ee64c91c1fb65728c977314013033e42c863428aada854` - -来源:[`packages/core/session/src/types.ts:239`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `adapterDefaults` | 可选 | [`packages/llm/llm/src/call-config.ts#LlmCallConfigAdapterDefaults`](#persistence-type-packagesllmllmsrccall-configtsllmcallconfigadapterdefaults) | -| `config` | 必需 | [`packages/llm/llm/src/call-config.ts#LlmCallConfig`](#persistence-type-packagesllmllmsrccall-configtsllmcallconfig) | -| `tools` | 可选 | [`event:request/header.data.header.tools`](#persistence-type-eventrequestheaderdataheadertools) | - - - -### `packages/core/session/src/types.ts#RequestContext` - -SHA-256: `b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081` - -来源:[`packages/core/session/src/types.ts:249`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `contextWindow` | 可选 | `number` | -| `model` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `systemPromptUpdate` | 可选 | `"in-history"` | - - - -### `packages/core/session/src/types.ts#RequestHeaderReason` - -SHA-256: `530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6` - -来源:[`packages/core/session/src/types.ts:268`](../packages/core/session/src/types.ts) - -以下类型之一: - -- `"change"` -- `"initial"` -- `"resume"` -- `"series"` - - - -### `packages/core/session/src/types.ts#SessionHeader` - -SHA-256: `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` - -来源:[`packages/core/session/src/types.ts:93`](../packages/core/session/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `agentPreset` | 可选 | `string` | -| `createdAt` | 必需 | `number` | -| `cwd` | 可选 | `string` | -| `delegationDepth` | 可选 | `number` | -| `id` | 必需 | `string` | -| `isSeeded` | 必需 | `boolean` | -| `origin` | 可选 | `"subagent"` | -| `parentSession` | 可选 | `string` | -| `version` | 必需 | `4` | - - - -### `packages/core/session/src/types.ts#SurfaceOp` - -SHA-256: `335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5` - -来源:[`packages/core/session/src/types.ts:448`](../packages/core/session/src/types.ts) - -以下类型之一: - -- `"append"` -- [`SessionEventEnvelope[6].surfaceOp[1]`](#persistence-type-sessioneventenvelope6surfaceop1) - - - -### `packages/core/session/src/types.ts#TurnEndCancelCause` - -SHA-256: `1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0` - -来源:[`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) - -以下类型之一: - -- [`event:turn/end.data.reason[1].reason[2]`](#persistence-type-eventturnenddatareason1reason2) -- [`event:turn/end.data.reason[1].reason[3]`](#persistence-type-eventturnenddatareason1reason3) -- [`event:turn/end.data.reason[1].reason[4]`](#persistence-type-eventturnenddatareason1reason4) -- [`event:turn/end.data.reason[1].reason[1]`](#persistence-type-eventturnenddatareason1reason1) -- [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) - - - -### `packages/core/session/src/types.ts#TurnEndReason` - -SHA-256: `f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402` - -来源:[`packages/core/session/src/types.ts:231`](../packages/core/session/src/types.ts) - -以下类型之一: - -- [`event:turn/end.data.reason[0]`](#persistence-type-eventturnenddatareason0) -- [`event:turn/end.data.reason[6]`](#persistence-type-eventturnenddatareason6) -- [`event:turn/end.data.reason[5]`](#persistence-type-eventturnenddatareason5) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]`](#persistence-type-eventassistantattemptdatastream03chunk6reason2) -- [`event:turn/end.data.reason[3]`](#persistence-type-eventturnenddatareason3) -- [`event:turn/end.data.reason[1]`](#persistence-type-eventturnenddatareason1) -- [`event:turn/end.data.reason[2]`](#persistence-type-eventturnenddatareason2) - - - -### `packages/core/tools/src/index.ts#ToolRestriction` - -SHA-256: `3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f` - -来源:[`packages/core/tools/src/index.ts:682`](../packages/core/tools/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `allow` | 可选 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `deny` | 可选 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | - - - -### `packages/core/tools/src/types.ts#PtcDispatchEventData` - -SHA-256: `8d2e5a3c4230e6ea6c0b5151f02241d0db02cd2551f2df1b6b9700cddcc0dca3` - -来源:[`packages/core/tools/src/types.ts:20`](../packages/core/tools/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `arguments` | 必需 | `unknown`(不透明) | -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `error` | 可选 | [`event:tool/ptc-dispatch.data.error`](#persistence-type-eventtoolptc-dispatchdataerror) | -| `isError` | 必需 | `boolean` | -| `name` | 必需 | `string` | -| `parentCallId` | 必需 | `string` | -| `rootCallId` | 必需 | `string` | -| `subCallId` | 必需 | `string` | - - - -### `packages/core/tools/src/types.ts#PtcDispatchStartEventData` - -SHA-256: `2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f` - -来源:[`packages/core/tools/src/types.ts:11`](../packages/core/tools/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `arguments` | 必需 | `unknown`(不透明) | -| `name` | 必需 | `string` | -| `parentCallId` | 必需 | `string` | -| `rootCallId` | 必需 | `string` | -| `subCallId` | 必需 | `string` | - - - -### `packages/deliverables/tool-present/src/types.ts#PresentedFile` - -SHA-256: `b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97` - -来源:[`packages/deliverables/tool-present/src/types.ts:5`](../packages/deliverables/tool-present/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `description` | 可选 | `string` | -| `path` | 必需 | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamMemberPhase` - -SHA-256: `dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd` - -来源:[`packages/experimental/agent-team/src/types.ts:44`](../packages/experimental/agent-team/src/types.ts) - -以下类型之一: - -- `"active"` -- `"failed"` -- `"provisioning"` - - - -### `packages/experimental/agent-team/src/types.ts#TeamMemberSnapshot` - -SHA-256: `6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25` - -来源:[`packages/experimental/agent-team/src/types.ts:47`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `context` | 必需 | [`event:team/member.data.member.context`](#persistence-type-eventteammemberdatamembercontext) | -| `description` | 必需 | `string` | -| `error` | 可选 | `string` | -| `id` | 必需 | `string` | -| `name` | 必需 | `string` | -| `phase` | 必需 | [`packages/experimental/agent-team/src/types.ts#TeamMemberPhase`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammemberphase) | -| `provider` | 必需 | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamMessageSnapshot` - -SHA-256: `5b694f394d5e11609887a3ccfa82844935d49806c37e336b30be2186d649ab94` - -来源:[`packages/experimental/agent-team/src/types.ts:106`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `id` | 必需 | `string` | -| `senderId` | 必需 | `string` | -| `senderName` | 必需 | `string` | -| `targetId` | 必需 | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamMessageSource` - -SHA-256: `2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0` - -来源:[`packages/experimental/agent-team/src/types.ts:115`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `kind` | 必需 | `"team-message"` | -| `messageId` | 必需 | `string` | -| `senderId` | 必需 | `string` | -| `senderName` | 必需 | `string` | -| `teamId` | 必需 | `string` | - - - -### `packages/experimental/agent-team/src/types.ts#TeamTaskSnapshot` - -SHA-256: `51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357` - -来源:[`packages/experimental/agent-team/src/types.ts:74`](../packages/experimental/agent-team/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `blockedBy` | 必需 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `description` | 必需 | `string` | -| `id` | 必需 | `string` | -| `ownerId` | 可选 | `string` | -| `revision` | 必需 | `number` | -| `status` | 必需 | [`packages/experimental/agent-team/src/types.ts#TeamTaskStatus`](#persistence-type-packagesexperimentalagent-teamsrctypeststeamtaskstatus) | -| `subject` | 必需 | `string` | -| `writeScopes` | 必需 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | - - - -### `packages/experimental/agent-team/src/types.ts#TeamTaskStatus` - -SHA-256: `b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943` - -来源:[`packages/experimental/agent-team/src/types.ts:71`](../packages/experimental/agent-team/src/types.ts) - -以下类型之一: - -- `"completed"` -- `"deleted"` -- `"in_progress"` -- `"pending"` - - - -### `packages/feedback/command-feedback/src/types.ts#FeedbackRecord` - -SHA-256: `7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344` - -来源:[`packages/feedback/command-feedback/src/types.ts:27`](../packages/feedback/command-feedback/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `category` | 可选 | [`event:feedback/message-put.data.item.category`](#persistence-type-eventfeedbackmessage-putdataitemcategory) | -| `text` | 可选 | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackDelete` - -SHA-256: `7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06` - -来源:[`packages/feedback/message-feedback/src/types.ts:46`](../packages/feedback/message-feedback/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `messageId` | 必需 | `string` | -| `sessionId` | 必需 | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackItem` - -SHA-256: `3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182` - -来源:[`packages/feedback/message-feedback/src/types.ts:20`](../packages/feedback/message-feedback/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `category` | 可选 | [`event:feedback/message-put.data.item.category`](#persistence-type-eventfeedbackmessage-putdataitemcategory) | -| `createdAt` | 必需 | `number` | -| `messageId` | 必需 | `string` | -| `note` | 可选 | `string` | -| `rating` | 必需 | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackRating`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackrating) | -| `updatedAt` | 必需 | `number` | -| `version` | 必需 | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackPut` - -SHA-256: `aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626` - -来源:[`packages/feedback/message-feedback/src/types.ts:38`](../packages/feedback/message-feedback/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `item` | 必需 | [`packages/feedback/message-feedback/src/types.ts#MessageFeedbackItem`](#persistence-type-packagesfeedbackmessage-feedbacksrctypestsmessagefeedbackitem) | -| `sessionId` | 必需 | `string` | - - - -### `packages/feedback/message-feedback/src/types.ts#MessageFeedbackRating` - -SHA-256: `390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2` - -来源:[`packages/feedback/message-feedback/src/types.ts:17`](../packages/feedback/message-feedback/src/types.ts) - -以下类型之一: - -- `"negative"` -- `"positive"` - - - -### `packages/goal/goal/src/domain.ts#GoalChangeMeta` - -SHA-256: `7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438` - -来源:[`packages/goal/goal/src/domain.ts:44`](../packages/goal/goal/src/domain.ts) - -以下类型之一: - -- [`packages/goal/goal/src/domain.ts#GoalClearChangeMeta`](#persistence-type-packagesgoalgoalsrcdomaintsgoalclearchangemeta) -- [`packages/goal/goal/src/domain.ts#GoalSnapshotChangeMeta`](#persistence-type-packagesgoalgoalsrcdomaintsgoalsnapshotchangemeta) - - - -### `packages/goal/goal/src/domain.ts#GoalClearChangeMeta` - -SHA-256: `cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f` - -来源:[`packages/goal/goal/src/domain.ts:35`](../packages/goal/goal/src/domain.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `cleared` | 必需 | [`packages/goal/goal/src/types.ts#GoalRef`](#persistence-type-packagesgoalgoalsrctypestsgoalref) | -| `clearedAt` | 必需 | `number` | -| `kind` | 必需 | `"goal/change"` | -| `operation` | 必需 | `"clear"` | -| `version` | 必需 | `1` | - - - -### `packages/goal/goal/src/domain.ts#GoalMessageSource` - -SHA-256: `7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc` - -来源:[`packages/goal/goal/src/domain.ts:47`](../packages/goal/goal/src/domain.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `goalId` | 必需 | `string` | -| `kind` | 必需 | `"goal"` | -| `revision` | 必需 | `number` | -| `round` | 必需 | `number` | - - - -### `packages/goal/goal/src/domain.ts#GoalSnapshotChangeMeta` - -SHA-256: `1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4` - -来源:[`packages/goal/goal/src/domain.ts:24`](../packages/goal/goal/src/domain.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `createdAt` | 必需 | `number` | -| `goal` | 必需 | [`packages/goal/goal/src/types.ts#GoalSnapshot`](#persistence-type-packagesgoalgoalsrctypestsgoalsnapshot) | -| `kind` | 必需 | `"goal/change"` | -| `operation` | 必需 | [`event:goal/change.data[0].operation`](#persistence-type-eventgoalchangedata0operation) | -| `roundsStarted` | 必需 | `number` | -| `updatedAt` | 必需 | `number` | -| `version` | 必需 | `1` | - - - -### `packages/goal/goal/src/types.ts#GoalBlockReason` - -SHA-256: `84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c` - -来源:[`packages/goal/goal/src/types.ts:52`](../packages/goal/goal/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `code` | 必需 | `string` | -| `message` | 必需 | `string` | - - - -### `packages/goal/goal/src/types.ts#GoalPhase` - -SHA-256: `b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172` - -来源:[`packages/goal/goal/src/types.ts:45`](../packages/goal/goal/src/types.ts) - -以下类型之一: - -- `"active"` -- `"blocked"` -- `"complete"` -- `"paused"` - - - -### `packages/goal/goal/src/types.ts#GoalRef` - -SHA-256: `0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f` - -来源:[`packages/goal/goal/src/types.ts:20`](../packages/goal/goal/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `id` | 必需 | `string` | -| `revision` | 必需 | `number` | - - - -### `packages/goal/goal/src/types.ts#GoalSnapshot` - -SHA-256: `6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25` - -来源:[`packages/goal/goal/src/types.ts:60`](../packages/goal/goal/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `blockedReason` | 可选 | [`packages/goal/goal/src/types.ts#GoalBlockReason`](#persistence-type-packagesgoalgoalsrctypestsgoalblockreason) | -| `id` | 必需 | `string` | -| `maxGoalRounds` | 必需 | `number` | -| `objective` | 必需 | `string` | -| `phase` | 必需 | [`packages/goal/goal/src/types.ts#GoalPhase`](#persistence-type-packagesgoalgoalsrctypestsgoalphase) | -| `revision` | 必需 | `number` | - - - -### `packages/hooks/hook-protocol/src/types.ts#HookDialect` - -SHA-256: `a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb` - -来源:[`packages/hooks/hook-protocol/src/types.ts:48`](../packages/hooks/hook-protocol/src/types.ts) - -以下类型之一: - -- `"claude-code"` -- `"codex"` - - - -### `packages/interaction/user-approval/src/index.ts#ApprovalPolicy` - -SHA-256: `05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf` - -来源:[`packages/interaction/user-approval/src/index.ts:60`](../packages/interaction/user-approval/src/index.ts) - -以下类型之一: - -- `"ask"` -- `"never"` + -### `packages/interaction/user-approval/src/types.ts#ApprovalOutcome` +### `ApprovalOutcome` SHA-256: `930c1cd289def119d443e19dd90008916bf035f0a4d23e07241e7f050f2b89b7` @@ -5069,82 +2824,30 @@ SHA-256: `930c1cd289def119d443e19dd90008916bf035f0a4d23e07241e7f050f2b89b7` - `"rejected"` - `"unavailable"` - + -### `packages/llm/llm-retry/src/types.ts#LlmRetryEventData` + -SHA-256: `c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1` + -来源:[`packages/llm/llm-retry/src/types.ts:16`](../packages/llm/llm-retry/src/types.ts) +### `ApprovalPolicy` + +SHA-256: `05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf` + +来源:[`packages/interaction/user-approval/src/index.ts:60`](../packages/interaction/user-approval/src/index.ts) 以下类型之一: -- [`event:llm/retry.data[0]`](#persistence-type-eventllmretrydata0) -- [`event:llm/retry.data[1]`](#persistence-type-eventllmretrydata1) +- `"ask"` +- `"never"` - + -### `packages/llm/llm-retry/src/types.ts#LlmRetryStartedEventData` - -SHA-256: `6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20` - -来源:[`packages/llm/llm-retry/src/types.ts:43`](../packages/llm/llm-retry/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `retry` | 必需 | `number` | -| `retryId` | 必需 | `string` | -| `step` | 必需 | `number` | -| `turn` | 必需 | `number` | - - - -### `packages/llm/llm/src/assistant-stream.ts#AssistantStreamRecord` - -SHA-256: `86cf1e44038cb8b11659863dd0efafe682e41b9c782265c1d50e0a687debfc60` - -来源:[`packages/llm/llm/src/assistant-stream.ts:20`](../packages/llm/llm/src/assistant-stream.ts) - -以下类型之一: - -- [`event:assistant/attempt.data.stream[0][2]`](#persistence-type-eventassistantattemptdatastream02) -- [`event:assistant/attempt.data.stream[0][3]`](#persistence-type-eventassistantattemptdatastream03) -- [`event:assistant/attempt.data.stream[0][1]`](#persistence-type-eventassistantattemptdatastream01) -- [`event:assistant/attempt.data.stream[0][0]`](#persistence-type-eventassistantattemptdatastream00) - - - -### `packages/llm/llm/src/call-config.ts#LlmCallConfig` - -SHA-256: `67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0` - -来源:[`packages/llm/llm/src/call-config.ts:23`](../packages/llm/llm/src/call-config.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `maxTokens` | 可选 | `number` | -| `model` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `reasoningEffort` | 可选 | `string` | -| `stop` | 可选 | [`event:assistant/attempt.data.stream[0][0].texts`](#persistence-type-eventassistantattemptdatastream00texts) | -| `temperature` | 可选 | `number` | - - - -### `packages/llm/llm/src/call-config.ts#LlmCallConfigAdapterDefaults` - -SHA-256: `326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693` - -来源:[`packages/llm/llm/src/call-config.ts:36`](../packages/llm/llm/src/call-config.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `maxTokens` | 可选 | `true` | -| `reasoningEffort` | 可选 | `true` | + -### `packages/llm/llm/src/message.ts#AssistantMessage` +### `AssistantMessage` SHA-256: `e50b0a3ed8e6c80b672e4f855c91984f03b5c3fdd5d475bf171171f391a86c83` @@ -5152,146 +2855,80 @@ SHA-256: `e50b0a3ed8e6c80b672e4f855c91984f03b5c3fdd5d475bf171171f391a86c83` | 属性 | 存在性 | 类型 | |---|---|---| -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | | `id` | 必需 | `string` | | `role` | 必需 | `"assistant"` | -| `source` | 必需 | [`packages/llm/llm/src/message.ts#ModelMessageSource`](#persistence-type-packagesllmllmsrcmessagetsmodelmessagesource) | +| `source` | 必需 | [`ModelMessageSource`](#persistence-type-sha256-719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91) | - + -### `packages/llm/llm/src/message.ts#ContextSnapshotSection` + -SHA-256: `86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219` + -来源:[`packages/llm/llm/src/message.ts:65`](../packages/llm/llm/src/message.ts) +### `AssistantStreamRecord` -| 属性 | 存在性 | 类型 | -|---|---|---| -| `name` | 必需 | `string` | -| `text` | 必需 | `string` | +SHA-256: `86cf1e44038cb8b11659863dd0efafe682e41b9c782265c1d50e0a687debfc60` - - -### `packages/llm/llm/src/message.ts#Message` - -SHA-256: `23c7cce57d20589897f4e2bd5898affc6fc611b87cd0cc8b95be1cfdd8b3a7eb` - -来源:[`packages/llm/llm/src/message.ts:131`](../packages/llm/llm/src/message.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `id` | 必需 | `string` | -| `role` | 必需 | [`event:session/title-llm-request.data.messages[0].role`](#persistence-type-eventsessiontitle-llm-requestdatamessages0role) | -| `source` | 必需 | [`packages/llm/llm/src/message.ts#MessageSource`](#persistence-type-packagesllmllmsrcmessagetsmessagesource) | - - - -### `packages/llm/llm/src/message.ts#MessageSource` - -SHA-256: `4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283` - -来源:[`packages/llm/llm/src/message.ts:128`](../packages/llm/llm/src/message.ts) +来源:[`packages/llm/llm/src/assistant-stream.ts:20`](../packages/llm/llm/src/assistant-stream.ts) 以下类型之一: -- [`packages/context/agent-instructions/src/state.ts#AgentInstructionSource`](#persistence-type-packagescontextagent-instructionssrcstatetsagentinstructionsource) -- [`packages/llm/llm/src/message.ts#ToolMessageSource`](#persistence-type-packagesllmllmsrcmessagetstoolmessagesource) -- [`event:agent/inbox/spliced.data.inserted[0].source[11]`](#persistence-type-eventagentinboxspliceddatainserted0source11) -- [`event:agent/inbox/spliced.data.inserted[0].source[19]`](#persistence-type-eventagentinboxspliceddatainserted0source19) -- [`packages/skill/tool-skill/src/index.ts#SkillCatalogSource`](#persistence-type-packagesskilltool-skillsrcindextsskillcatalogsource) -- [`packages/skill/skill/src/index.ts#SkillInvocationSource`](#persistence-type-packagesskillskillsrcindextsskillinvocationsource) -- [`event:agent/inbox/spliced.data.inserted[0].source[4]`](#persistence-type-eventagentinboxspliceddatainserted0source4) -- [`event:agent/inbox/spliced.data.inserted[0].source[5]`](#persistence-type-eventagentinboxspliceddatainserted0source5) -- [`event:agent/inbox/spliced.data.inserted[0].source[6]`](#persistence-type-eventagentinboxspliceddatainserted0source6) -- [`event:agent/inbox/spliced.data.inserted[0].source[3]`](#persistence-type-eventagentinboxspliceddatainserted0source3) -- [`event:agent/inbox/spliced.data.inserted[0].source[2]`](#persistence-type-eventagentinboxspliceddatainserted0source2) -- [`event:agent/inbox/spliced.data.inserted[0].source[7]`](#persistence-type-eventagentinboxspliceddatainserted0source7) -- [`packages/context/session-reference/src/types.ts#SessionReferenceSource`](#persistence-type-packagescontextsession-referencesrctypestssessionreferencesource) -- [`packages/subagent/subagent/src/continuation-messages.ts#SubagentSettledMessageSource`](#persistence-type-packagessubagentsubagentsrccontinuation-messagestssubagentsettledmessagesource) -- [`packages/subagent/subagent/src/continuation-messages.ts#AgentMessageSource`](#persistence-type-packagessubagentsubagentsrccontinuation-messagestsagentmessagesource) -- [`packages/goal/goal/src/domain.ts#GoalMessageSource`](#persistence-type-packagesgoalgoalsrcdomaintsgoalmessagesource) -- [`packages/experimental/agent-team/src/types.ts#TeamMessageSource`](#persistence-type-packagesexperimentalagent-teamsrctypeststeammessagesource) -- [`packages/llm/llm/src/message.ts#ModelMessageSource`](#persistence-type-packagesllmllmsrcmessagetsmodelmessagesource) -- [`event:agent/inbox/spliced.data.inserted[0].source[1]`](#persistence-type-eventagentinboxspliceddatainserted0source1) -- [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) +- [`{ type: "tool-call-chunks" }`](#persistence-type-sha256-3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6) +- [`{ type: "chunk" }`](#persistence-type-sha256-c93b6f51b399607349b4bcc66b58e848a44250ffc1e2537207bd092dfff94192) +- [`{ type: "reasoning-chunks" }`](#persistence-type-sha256-71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd) +- [`{ type: "text-chunks" }`](#persistence-type-sha256-e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33) - + -### `packages/llm/llm/src/message.ts#ModelMessageSource` +### `AssistantStreamRecord[]` -SHA-256: `719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91` +SHA-256: `26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346` -来源:[`packages/llm/llm/src/message.ts:24`](../packages/llm/llm/src/message.ts) +[`AssistantStreamRecord`](#persistence-type-sha256-86cf1e44038cb8b11659863dd0efafe682e41b9c782265c1d50e0a687debfc60) 的数组。 + + + + + + + +### `AtScheduleRecord` + +SHA-256: `658d895d187b26d83f3b53109a3bf77bbfba9f6f9a6d4bc4ee4315b4eb36239e` + +来源:[`packages/schedule/schedule/src/types.ts:27`](../packages/schedule/schedule/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `kind` | 必需 | `"model"` | -| `model` | 必需 | `string` | -| `provider` | 必需 | `string` | -| `replayState` | 可选 | `unknown`(不透明) | - - - -### `packages/llm/llm/src/message.ts#SystemMessage` - -SHA-256: `302b01ddddcbb3b16cfa3fba2a5d99f5082a55fbd9dc5c83a179a228b8a6a0ca` - -来源:[`packages/llm/llm/src/message.ts:158`](../packages/llm/llm/src/message.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | | `id` | 必需 | `string` | -| `role` | 必需 | `"system"` | -| `source` | 必需 | [`event:system/message.data.message.source`](#persistence-type-eventsystemmessagedatamessagesource) | +| `kind` | 必需 | `"at"` | +| `prompt` | 必需 | `string` | +| `scheduledAt` | 必需 | `string` | - + -### `packages/llm/llm/src/message.ts#ToolMessageSource` + -SHA-256: `d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab` + -来源:[`packages/llm/llm/src/message.ts:29`](../packages/llm/llm/src/message.ts) +### `CommandSource` + +SHA-256: `ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05` + +来源:[`packages/core/session/src/types.ts:189`](../packages/core/session/src/types.ts) · [`packages/interaction/commands/src/types.ts:75`](../packages/interaction/commands/src/types.ts) · [`packages/interaction/commands/src/types.ts:79`](../packages/interaction/commands/src/types.ts) · [`packages/llm/llm/src/message.ts:103`](../packages/llm/llm/src/message.ts) · [`packages/session/session-title/src/types.ts:35`](../packages/session/session-title/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `callId` | 必需 | `string` | -| `kind` | 必需 | `"tool"` | +| `kind` | 必需 | `"user"` | - + -### `packages/llm/llm/src/message.ts#ToolResultMessage` - -SHA-256: `1b573e2d5c094fa87e2a8bf409ddd4ac5ba92a123085e168de44b9ccdbd5244c` - -来源:[`packages/llm/llm/src/message.ts:164`](../packages/llm/llm/src/message.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:tool/result.data.message.content`](#persistence-type-eventtoolresultdatamessagecontent) | -| `id` | 必需 | `string` | -| `role` | 必需 | `"user"` | -| `source` | 必需 | [`packages/llm/llm/src/message.ts#ToolMessageSource`](#persistence-type-packagesllmllmsrcmessagetstoolmessagesource) | - - - -### `packages/llm/llm/src/message.ts#UserMessage` - -SHA-256: `4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7` - -来源:[`packages/llm/llm/src/message.ts:143`](../packages/llm/llm/src/message.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `id` | 必需 | `string` | -| `role` | 必需 | `"user"` | -| `source` | 必需 | [`packages/llm/llm/src/message.ts#MessageSource`](#persistence-type-packagesllmllmsrcmessagetsmessagesource) | + -### `packages/llm/llm/src/types.ts#ContentBlock` +### `ContentBlock` SHA-256: `c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56` @@ -5299,16 +2936,20 @@ SHA-256: `c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56` 以下类型之一: -- [`packages/llm/llm/src/types.ts#ReasoningBlock`](#persistence-type-packagesllmllmsrctypestsreasoningblock) -- [`event:web/deepseek-search-llm-request.data.body.messages[0].content[0]`](#persistence-type-eventwebdeepseek-search-llm-requestdatabodymessages0content0) -- [`packages/llm/llm/src/types.ts#ToolCallBlock`](#persistence-type-packagesllmllmsrctypeststoolcallblock) -- [`packages/llm/llm/src/types.ts#ImageBlock`](#persistence-type-packagesllmllmsrctypestsimageblock) -- [`packages/llm/llm/src/types.ts#FileBlock`](#persistence-type-packagesllmllmsrctypestsfileblock) -- [`packages/llm/llm/src/types.ts#ToolResultBlock`](#persistence-type-packagesllmllmsrctypeststoolresultblock) +- [`ReasoningBlock`](#persistence-type-sha256-814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e) +- [`TextBlock`](#persistence-type-sha256-4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c) +- [`ToolCallBlock`](#persistence-type-sha256-c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea) +- [`ImageBlock`](#persistence-type-sha256-12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7) +- [`FileBlock`](#persistence-type-sha256-f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef) +- [`ToolResultBlock`](#persistence-type-sha256-d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127) + + + + -### `packages/llm/llm/src/types.ts#ContentBlockType` +### `ContentBlockType` SHA-256: `757013fff5879d73d5753d8d1120faab56110e88ac3932485ab7e034d9e9ce61` @@ -5323,219 +2964,106 @@ SHA-256: `757013fff5879d73d5753d8d1120faab56110e88ac3932485ab7e034d9e9ce61` - `"tool-call"` - `"tool-result"` - + -### `packages/llm/llm/src/types.ts#FileBlock` +### `ContentBlock[]` -SHA-256: `f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef` +SHA-256: `bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75` -来源:[`packages/llm/llm/src/types.ts:97`](../packages/llm/llm/src/types.ts) +[`ContentBlock`](#persistence-type-sha256-c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56) 的数组。 -| 属性 | 存在性 | 类型 | -|---|---|---| -| `attachment` | 必需 | [`packages/attachment/attachment/src/types.ts#FileAttachmentRef`](#persistence-type-packagesattachmentattachmentsrctypestsfileattachmentref) | -| `type` | 必需 | `"file"` | + - + -### `packages/llm/llm/src/types.ts#FinishReason` + -SHA-256: `5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80` +### `ContextSnapshotSection` -来源:[`packages/llm/llm/src/types.ts:152`](../packages/llm/llm/src/types.ts) +SHA-256: `86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219` -以下类型之一: - -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[3]`](#persistence-type-eventassistantattemptdatastream03chunk6reason3) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[4]`](#persistence-type-eventassistantattemptdatastream03chunk6reason4) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[0]`](#persistence-type-eventassistantattemptdatastream03chunk6reason0) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[1]`](#persistence-type-eventassistantattemptdatastream03chunk6reason1) -- [`event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]`](#persistence-type-eventassistantattemptdatastream03chunk6reason2) - - - -### `packages/llm/llm/src/types.ts#ImageBlock` - -SHA-256: `12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7` - -来源:[`packages/llm/llm/src/types.ts:78`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `attachment` | 必需 | [`packages/attachment/attachment/src/types.ts#ImageAttachmentRef`](#persistence-type-packagesattachmentattachmentsrctypestsimageattachmentref) | -| `offloaded` | 可选 | `true` | -| `type` | 必需 | `"image"` | - - - -### `packages/llm/llm/src/types.ts#LlmFailure` - -SHA-256: `5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca` - -来源:[`packages/llm/llm/src/types.ts:40`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `code` | 必需 | `string` | -| `message` | 必需 | `string` | -| `offloadImages` | 可选 | `number` | -| `providerRetryAfterMs` | 可选 | `number` | -| `requestId` | 可选 | `string` | -| `status` | 可选 | `number` | - - - -### `packages/llm/llm/src/types.ts#ReasoningBlock` - -SHA-256: `814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e` - -来源:[`packages/llm/llm/src/types.ts:67`](../packages/llm/llm/src/types.ts) +来源:[`packages/llm/llm/src/message.ts:65`](../packages/llm/llm/src/message.ts) | 属性 | 存在性 | 类型 | |---|---|---| +| `name` | 必需 | `string` | | `text` | 必需 | `string` | -| `type` | 必需 | `"reasoning"` | - + -### `packages/llm/llm/src/types.ts#ReplayEnvelope` +### `ContextSnapshotSection[]` -SHA-256: `0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555` +SHA-256: `c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262` -来源:[`packages/llm/llm/src/types.ts:404`](../packages/llm/llm/src/types.ts) +[`ContextSnapshotSection`](#persistence-type-sha256-86e1e384495ee09ac2d60c9db3610f1f1fddac2d248f6f1d6000e78054680219) 的数组。 + + + + + + + +### `ContinuableSubagentDescriptorData` + +SHA-256: `6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f` + +来源:[`packages/subagent/subagent/src/descriptor.ts:72`](../packages/subagent/subagent/src/descriptor.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `blocks` | 可选 | [`event:assistant/attempt.data.stream[0][3].chunk[6].replayState.blocks`](#persistence-type-eventassistantattemptdatastream03chunk6replaystateblocks) | -| `response` | 必需 | `unknown`(不透明) | +| `agentModel` | 可选 | `string` | +| `agentProvider` | 可选 | `string` | +| `agentReasoningEffort` | 可选 | `string` | +| `label` | 必需 | `string` | +| `mode` | 必需 | `"continuable"` | +| `persona` | 可选 | `string` | +| `provider` | 必需 | `string` | +| `toolFilter` | 可选 | [`ToolRestriction`](#persistence-type-sha256-3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f) | +| `version` | 必需 | `number` | - + -### `packages/llm/llm/src/types.ts#StreamChunk` + -SHA-256: `071d92b9dac661fcc826c678cf64d188f26fb93aab79c627b11a03acdd34dfca` + -来源:[`packages/llm/llm/src/types.ts:426`](../packages/llm/llm/src/types.ts) +### `DeepSeekSearchLlmRequest` -以下类型之一: +SHA-256: `2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9` -- [`event:assistant/attempt.data.stream[0][3].chunk[3]`](#persistence-type-eventassistantattemptdatastream03chunk3) -- [`event:assistant/attempt.data.stream[0][3].chunk[4]`](#persistence-type-eventassistantattemptdatastream03chunk4) -- [`event:assistant/attempt.data.stream[0][3].chunk[0]`](#persistence-type-eventassistantattemptdatastream03chunk0) -- [`event:assistant/attempt.data.stream[0][3].chunk[2]`](#persistence-type-eventassistantattemptdatastream03chunk2) -- [`event:assistant/attempt.data.stream[0][3].chunk[1]`](#persistence-type-eventassistantattemptdatastream03chunk1) -- [`event:assistant/attempt.data.stream[0][3].chunk[6]`](#persistence-type-eventassistantattemptdatastream03chunk6) -- [`event:assistant/attempt.data.stream[0][3].chunk[5]`](#persistence-type-eventassistantattemptdatastream03chunk5) - - - -### `packages/llm/llm/src/types.ts#TokenUsage` - -SHA-256: `fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394` - -来源:[`packages/llm/llm/src/types.ts:162`](../packages/llm/llm/src/types.ts) +来源:[`packages/web/web-search-deepseek/src/provider.ts:55`](../packages/web/web-search-deepseek/src/provider.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `cacheReadTokens` | 可选 | `number` | -| `cacheWriteTokens` | 可选 | `number` | -| `inputTokens` | 必需 | `number` | -| `outputTokens` | 必需 | `number` | -| `reasoningTokens` | 可选 | `number` | -| `totalTokens` | 可选 | `number` | +| `apiVersion` | 必需 | `string` | +| `body` | 必需 | [`{ max_tokens, messages, model, tools }`](#persistence-type-sha256-930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731) | +| `endpoint` | 必需 | `string` | - + -### `packages/llm/llm/src/types.ts#ToolCallBlock` + -SHA-256: `c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea` + -来源:[`packages/llm/llm/src/types.ts:104`](../packages/llm/llm/src/types.ts) +### `EpochHeader` + +SHA-256: `c55a891c7aac496de6ee64c91c1fb65728c977314013033e42c863428aada854` + +来源:[`packages/core/session/src/types.ts:239`](../packages/core/session/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `arguments` | 必需 | `string` | -| `id` | 必需 | `string` | -| `name` | 必需 | `string` | -| `type` | 必需 | `"tool-call"` | +| `adapterDefaults` | 可选 | [`LlmCallConfigAdapterDefaults`](#persistence-type-sha256-326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693) | +| `config` | 必需 | [`LlmCallConfig`](#persistence-type-sha256-67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0) | +| `tools` | 可选 | [`ToolSchema[]`](#persistence-type-sha256-6d63f25a28b70801937a46b1058be5f52d4efbaf3516141470463ae469b59c23) | - + -### `packages/llm/llm/src/types.ts#ToolResultBlock` - -SHA-256: `d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127` - -来源:[`packages/llm/llm/src/types.ts:114`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `content` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].content`](#persistence-type-eventagentinboxspliceddatainserted0content) | -| `isError` | 可选 | `boolean` | -| `toolCallId` | 必需 | `string` | -| `type` | 必需 | `"tool-result"` | - - - -### `packages/llm/llm/src/types.ts#ToolSchema` - -SHA-256: `7f5f2a8618c2ece530a18b1358b890fb57fb8c35705e47b66bff2296f8c6e889` - -来源:[`packages/llm/llm/src/types.ts:447`](../packages/llm/llm/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `description` | 必需 | `string` | -| `name` | 必需 | `string` | -| `parameters` | 必需 | [`event:request/header.data.header.tools[0].parameters`](#persistence-type-eventrequestheaderdataheadertools0parameters) | - - - -### `packages/sandbox/sandbox/src/index.ts#SandboxMode` - -SHA-256: `fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd` - -来源:[`packages/sandbox/sandbox/src/index.ts:29`](../packages/sandbox/sandbox/src/index.ts) - -以下类型之一: - -- `"danger-full-access"` -- `"read-only"` -- `"workspace-write"` - - - -### `packages/schedule/schedule/src/types.ts#AfterScheduleRecord` - -SHA-256: `27e337d3d6b402b221e50c247a3f518a70d0c474cc60beee15fac3e9c5cbfcbe` - -来源:[`packages/schedule/schedule/src/types.ts:13`](../packages/schedule/schedule/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `afterSeconds` | 必需 | `number` | -| `id` | 必需 | `string` | -| `kind` | 必需 | `"after"` | -| `prompt` | 必需 | `string` | -| `scheduledAt` | 必需 | `string` | - - - -### `packages/schedule/schedule/src/types.ts#AtScheduleRecord` - -SHA-256: `658d895d187b26d83f3b53109a3bf77bbfba9f6f9a6d4bc4ee4315b4eb36239e` - -来源:[`packages/schedule/schedule/src/types.ts:27`](../packages/schedule/schedule/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `id` | 必需 | `string` | -| `kind` | 必需 | `"at"` | -| `prompt` | 必需 | `string` | -| `scheduledAt` | 必需 | `string` | + -### `packages/schedule/schedule/src/types.ts#EveryScheduleDispatchChange` +### `EveryScheduleDispatchChange` SHA-256: `e6063d0451dc02026fd9b54ad3f77c7b1b6392ad3e872a7737ac84e13ca72344` @@ -5548,9 +3076,13 @@ SHA-256: `e6063d0451dc02026fd9b54ad3f77c7b1b6392ad3e872a7737ac84e13ca72344` | `operation` | 必需 | `"dispatch"` | | `version` | 必需 | `1` | + + + + -### `packages/schedule/schedule/src/types.ts#EveryScheduleRecord` +### `EveryScheduleRecord` SHA-256: `66ece68282d8c06330fb83329a24ae54c386d5ccfab296bbf18369da8beb7d14` @@ -5564,80 +3096,239 @@ SHA-256: `66ece68282d8c06330fb83329a24ae54c386d5ccfab296bbf18369da8beb7d14` | `prompt` | 必需 | `string` | | `scheduledAt` | 必需 | `string` | - + -### `packages/schedule/schedule/src/types.ts#OneShotScheduleDispatchChange` + -SHA-256: `8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af` + -来源:[`packages/schedule/schedule/src/types.ts:86`](../packages/schedule/schedule/src/types.ts) +### `FeedbackRecord` + +SHA-256: `7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344` + +来源:[`packages/feedback/command-feedback/src/types.ts:27`](../packages/feedback/command-feedback/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `category` | 可选 | [`union (7 variants)`](#persistence-type-sha256-3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd) | +| `text` | 可选 | `string` | + + + + + + + +### `FileAttachmentRef` + +SHA-256: `f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6` + +来源:[`packages/attachment/attachment/src/types.ts:39`](../packages/attachment/attachment/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `attachmentId` | 必需 | `string` | +| `bytes` | 必需 | `number` | +| `name` | 必需 | `string` | + + + + + + + +### `FileBlock` + +SHA-256: `f2da0f27c1e6add59982c37b15e4a4912c5b33466859cce3b13d503600e24aef` + +来源:[`packages/llm/llm/src/types.ts:97`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `attachment` | 必需 | [`FileAttachmentRef`](#persistence-type-sha256-f19bee84bf3d20904553cdcd57465232bc1c2a194f54c4d195292ba0487223a6) | +| `type` | 必需 | `"file"` | + + + + + + + +### `FinishReason` + +SHA-256: `5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80` + +来源:[`packages/llm/llm/src/types.ts:152`](../packages/llm/llm/src/types.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `aborted` | 未声明 | `failure`: [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | [`{ failure, kind: "aborted" }`](#persistence-type-sha256-8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0) | +| `error` | 未声明 | `failure`: [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | [`{ failure, kind: "error" }`](#persistence-type-sha256-693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057) | +| `max-tokens` | 未声明 | 无 | [`{ kind: "max-tokens" }`](#persistence-type-sha256-ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7) | +| `stop` | 未声明 | 无 | [`{ kind: "stop" }`](#persistence-type-sha256-1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f) | +| `tool-calls` | 未声明 | 无 | [`{ kind: "tool-calls" }`](#persistence-type-sha256-287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a) | + + + + + + + +### `GoalBlockReason` + +SHA-256: `84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c` + +来源:[`packages/goal/goal/src/types.ts:52`](../packages/goal/goal/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `code` | 必需 | `string` | +| `message` | 必需 | `string` | + + + + + + + +### `GoalChangeMeta` + +SHA-256: `7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438` + +来源:[`packages/goal/goal/src/domain.ts:44`](../packages/goal/goal/src/domain.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `goal/change` | 未声明 | `createdAt`: `number`; `goal`: [`GoalSnapshot`](#persistence-type-sha256-6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25); `operation`: [`union (6 variants)`](#persistence-type-sha256-62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379); `roundsStarted`: `number`; `updatedAt`: `number`; `version`: `1` | [`GoalSnapshotChangeMeta`](#persistence-type-sha256-1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4) | +| `goal/change` | 未声明 | `cleared`: [`GoalRef`](#persistence-type-sha256-0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f); `clearedAt`: `number`; `operation`: `"clear"`; `version`: `1` | [`GoalClearChangeMeta`](#persistence-type-sha256-cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f) | + + + + + + + +### `GoalClearChangeMeta` + +SHA-256: `cffcdc19881ab61ec0a9ce18743996f7ac44ac8889f34dfac36ae745574aa22f` + +来源:[`packages/goal/goal/src/domain.ts:35`](../packages/goal/goal/src/domain.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `cleared` | 必需 | [`GoalRef`](#persistence-type-sha256-0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f) | +| `clearedAt` | 必需 | `number` | +| `kind` | 必需 | `"goal/change"` | +| `operation` | 必需 | `"clear"` | +| `version` | 必需 | `1` | + + + + + + + +### `GoalMessageSource` + +SHA-256: `7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc` + +来源:[`packages/goal/goal/src/domain.ts:47`](../packages/goal/goal/src/domain.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `goalId` | 必需 | `string` | +| `kind` | 必需 | `"goal"` | +| `revision` | 必需 | `number` | +| `round` | 必需 | `number` | + + + + + + + +### `GoalPhase` + +SHA-256: `b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172` + +来源:[`packages/goal/goal/src/types.ts:45`](../packages/goal/goal/src/types.ts) + +以下类型之一: + +- `"active"` +- `"blocked"` +- `"complete"` +- `"paused"` + + + + + + + +### `GoalRef` + +SHA-256: `0b6d718c693fdf7f06dcccb0bcbbabe78cc63514eafc62d6b2a3899735279d6f` + +来源:[`packages/goal/goal/src/types.ts:20`](../packages/goal/goal/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| | `id` | 必需 | `string` | -| `operation` | 必需 | `"dispatch"` | -| `version` | 必需 | `1` | +| `revision` | 必需 | `number` | - + -### `packages/schedule/schedule/src/types.ts#ScheduleChange` + -SHA-256: `e1d0e52dcd1855ffb803efc18f8f7b776c48d1c25757e8a75c0281fa298c02e1` + -来源:[`packages/schedule/schedule/src/types.ts:105`](../packages/schedule/schedule/src/types.ts) +### `GoalSnapshot` -以下类型之一: +SHA-256: `6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25` -- [`packages/schedule/schedule/src/types.ts#EveryScheduleDispatchChange`](#persistence-type-packagesscheduleschedulesrctypestseveryscheduledispatchchange) -- [`packages/schedule/schedule/src/types.ts#ScheduleDeleteChange`](#persistence-type-packagesscheduleschedulesrctypestsscheduledeletechange) -- [`packages/schedule/schedule/src/types.ts#OneShotScheduleDispatchChange`](#persistence-type-packagesscheduleschedulesrctypestsoneshotscheduledispatchchange) -- [`packages/schedule/schedule/src/types.ts#ScheduleCreateChange`](#persistence-type-packagesscheduleschedulesrctypestsschedulecreatechange) - - - -### `packages/schedule/schedule/src/types.ts#ScheduleCreateChange` - -SHA-256: `ca6425edd20afe34d0cedc6ad1abad1ad7b32e2fbc4c1d24db53939e80bf887f` - -来源:[`packages/schedule/schedule/src/types.ts:72`](../packages/schedule/schedule/src/types.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `operation` | 必需 | `"create"` | -| `schedule` | 必需 | [`packages/schedule/schedule/src/types.ts#ScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestsschedulerecord) | -| `version` | 必需 | `1` | - - - -### `packages/schedule/schedule/src/types.ts#ScheduleDeleteChange` - -SHA-256: `18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0` - -来源:[`packages/schedule/schedule/src/types.ts:79`](../packages/schedule/schedule/src/types.ts) +来源:[`packages/goal/goal/src/types.ts:60`](../packages/goal/goal/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| +| `blockedReason` | 可选 | [`GoalBlockReason`](#persistence-type-sha256-84ac8c1a66ffc697262e181f42e851259eae14038c113ca329fb4700ccdb1f7c) | | `id` | 必需 | `string` | -| `operation` | 必需 | `"delete"` | +| `maxGoalRounds` | 必需 | `number` | +| `objective` | 必需 | `string` | +| `phase` | 必需 | [`GoalPhase`](#persistence-type-sha256-b8327af7ee5767952d1300cb4f03b7fc04197ae5ba275e13981c689ff7506172) | +| `revision` | 必需 | `number` | + + + + + + + +### `GoalSnapshotChangeMeta` + +SHA-256: `1df34a6c086866ffdc2dd9e8e5c581c3751a010cdf6b8538a7327f7a3237f0b4` + +来源:[`packages/goal/goal/src/domain.ts:24`](../packages/goal/goal/src/domain.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `createdAt` | 必需 | `number` | +| `goal` | 必需 | [`GoalSnapshot`](#persistence-type-sha256-6bbe793f6a93dc8d50a4d4d3fbb6f8ed15650bcb7e151d28669628f7b7c3fc25) | +| `kind` | 必需 | `"goal/change"` | +| `operation` | 必需 | [`union (6 variants)`](#persistence-type-sha256-62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379) | +| `roundsStarted` | 必需 | `number` | +| `updatedAt` | 必需 | `number` | | `version` | 必需 | `1` | - + -### `packages/schedule/schedule/src/types.ts#ScheduleRecord` + -SHA-256: `d8f868c6b3e7189de6c1ffe2ea04794ea2aa31315b6347d12536e46020afac87` - -来源:[`packages/schedule/schedule/src/types.ts:69`](../packages/schedule/schedule/src/types.ts) - -以下类型之一: - -- [`packages/schedule/schedule/src/types.ts#AfterScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestsafterschedulerecord) -- [`packages/schedule/schedule/src/types.ts#EveryScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestseveryschedulerecord) -- [`packages/schedule/schedule/src/types.ts#AtScheduleRecord`](#persistence-type-packagesscheduleschedulesrctypestsatschedulerecord) + -### `packages/session/session-persistence-jsonl/src/format.ts#HeaderLine` +### `HeaderLine` SHA-256: `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` @@ -5656,158 +3347,445 @@ SHA-256: `18ee62b8900a4c3d046700f05d7a4d49d6cab2a660a020c87481d1603dd8bd4f` | `type` | 必需 | `"session"` | | `version` | 必需 | `number` | - + -### `packages/session/session-title-llm/src/index.ts#SessionTitleLlmRequestEventData` + -SHA-256: `9fe0e77a7816b7fdb4b953ec0e2f0cd7bbd22c5de5c3567e612d1b20eb0992e6` + -来源:[`packages/session/session-title-llm/src/index.ts:27`](../packages/session/session-title-llm/src/index.ts) +### `HookDialect` + +SHA-256: `a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb` + +来源:[`packages/hooks/hook-protocol/src/types.ts:48`](../packages/hooks/hook-protocol/src/types.ts) + +以下类型之一: + +- `"claude-code"` +- `"codex"` + + + + + + + +### `ImageAttachmentRef` + +SHA-256: `b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35` + +来源:[`packages/attachment/attachment/src/types.ts:11`](../packages/attachment/attachment/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `maxTokens` | 必需 | `number` | -| `messageSeqs` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `messages` | 必需 | [`event:session/title-llm-request.data.messages`](#persistence-type-eventsessiontitle-llm-requestdatamessages) | -| `route` | 必需 | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | -| `system` | 必需 | `string` | -| `titleProvider` | 必需 | `string` | +| `attachmentId` | 必需 | `string` | +| `bytes` | 必需 | `number` | +| `height` | 必需 | `number` | +| `mediaType` | 必需 | [`ImageMediaType`](#persistence-type-sha256-2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716) | +| `name` | 可选 | `string` | +| `originalDimensions` | 可选 | [`{ height, width }`](#persistence-type-sha256-0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef) | +| `width` | 必需 | `number` | - + -### `packages/session/session-title/src/types.ts#SessionTitleEventData` + -SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4` + -来源:[`packages/session/session-title/src/types.ts:41`](../packages/session/session-title/src/types.ts) +### `ImageBlock` + +SHA-256: `12d5808fac1996b9b3c2afa806e03022252ba2d7b88f835862ae1896591f60c7` + +来源:[`packages/llm/llm/src/types.ts:78`](../packages/llm/llm/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `messageSeqs` | 必需 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `source` | 必需 | [`packages/session/session-title/src/types.ts#SessionTitleSource`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlesource) | -| `title` | 必需 | `string` | +| `attachment` | 必需 | [`ImageAttachmentRef`](#persistence-type-sha256-b0b0eb1b16490f6bee135b2377e8f8c39227974c799ad7d49ff418af23ecbc35) | +| `offloaded` | 可选 | `true` | +| `type` | 必需 | `"image"` | - + -### `packages/session/session-title/src/types.ts#SessionTitleModelIdentity` + -SHA-256: `07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235` + -来源:[`packages/session/session-title/src/types.ts:20`](../packages/session/session-title/src/types.ts) · [`packages/subagent/tool-subagent/src/model-selection.ts:9`](../packages/subagent/tool-subagent/src/model-selection.ts) +### `ImageMediaType` + +SHA-256: `2f1e6a7ebace43d727ae138ddcd352eb3813960009e5805b8c5ac84300c97716` + +来源:[`packages/attachment/attachment/src/types.ts:8`](../packages/attachment/attachment/src/types.ts) + +以下类型之一: + +- `"image/gif"` +- `"image/jpeg"` +- `"image/png"` +- `"image/webp"` + + + + + + + +### `ImageOffloadTarget` + +SHA-256: `1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f` + +来源:[`packages/compaction/compaction-image-offload/src/projection.ts:9`](../packages/compaction/compaction-image-offload/src/projection.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `imageIndexes` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `seq` | 必需 | `number` | + + + +### `ImageOffloadTarget[]` + +SHA-256: `9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb` + +[`ImageOffloadTarget`](#persistence-type-sha256-1cde1bedde79c5e8a56aee9c05c8e0a579cf5bc611deb85b93fa331a16ca978f) 的数组。 + + + + + + + +### `InboxTarget` + +SHA-256: `96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c` + +来源:[`packages/core/agent/src/types.ts:30`](../packages/core/agent/src/types.ts) + +以下类型之一: + +- `"next-step"` +- `"next-turn"` + + + + + + + +### `JsonValue` + +SHA-256: `c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6` + +来源:[`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) + +以下类型之一: + +- [`JsonValue[]`](#persistence-type-sha256-72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227) +- [`{}`](#persistence-type-sha256-529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05) +- `string` +- `boolean` +- `null` +- `number` + + + +### `JsonValue[]` + +SHA-256: `72ec79127a9c0d0241b1106a74cc2b24c81ce467170f1c3c93f7b71a9496d227` + +[`JsonValue`](#persistence-type-sha256-c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6) 的数组。 + + + + + + + +### `LlmCallConfig` + +SHA-256: `67d5f73ceae82f5265258142ad6cf172de2c1fef93ba551b7f0454e0a93bffe0` + +来源:[`packages/llm/llm/src/call-config.ts:23`](../packages/llm/llm/src/call-config.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `maxTokens` | 可选 | `number` | +| `model` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `reasoningEffort` | 可选 | `string` | +| `stop` | 可选 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `temperature` | 可选 | `number` | + + + + + + + +### `LlmCallConfigAdapterDefaults` + +SHA-256: `326a9bfda27dda5882fb3cbe6e715df41dae2298fdae3d66437457268a665693` + +来源:[`packages/llm/llm/src/call-config.ts:36`](../packages/llm/llm/src/call-config.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `maxTokens` | 可选 | `true` | +| `reasoningEffort` | 可选 | `true` | + + + + + + + +### `LlmFailure` + +SHA-256: `5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca` + +来源:[`packages/llm/llm/src/types.ts:40`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `code` | 必需 | `string` | +| `message` | 必需 | `string` | +| `offloadImages` | 可选 | `number` | +| `providerRetryAfterMs` | 可选 | `number` | +| `requestId` | 可选 | `string` | +| `status` | 可选 | `number` | + + + + + + + +### `LlmRetryEventData` + +SHA-256: `c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1` + +来源:[`packages/llm/llm-retry/src/types.ts:16`](../packages/llm/llm-retry/src/types.ts) + +以下类型之一: + +- [`{ delayMs, failure, maxRetries, mode, … }`](#persistence-type-sha256-cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced) +- [`{ delayMs, failure, mode, policyKey, … }`](#persistence-type-sha256-374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b) + + + + + + + +### `LlmRetryStartedEventData` + +SHA-256: `6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20` + +来源:[`packages/llm/llm-retry/src/types.ts:43`](../packages/llm/llm-retry/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `retry` | 必需 | `number` | +| `retryId` | 必需 | `string` | +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | + + + + + + + +### `Message` + +SHA-256: `23c7cce57d20589897f4e2bd5898affc6fc611b87cd0cc8b95be1cfdd8b3a7eb` + +来源:[`packages/llm/llm/src/message.ts:131`](../packages/llm/llm/src/message.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | 必需 | `string` | +| `role` | 必需 | [`union (3 variants)`](#persistence-type-sha256-acd36e1717d2b4ef9e98a8e6fac17ca1203f3f448e5bca51677f129a8f4999e2) | +| `source` | 必需 | [`MessageSource`](#persistence-type-sha256-4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283) | + + + + + + + +### `MessageFeedbackDelete` + +SHA-256: `7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06` + +来源:[`packages/feedback/message-feedback/src/types.ts:46`](../packages/feedback/message-feedback/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `messageId` | 必需 | `string` | +| `sessionId` | 必需 | `string` | + + + + + + + +### `MessageFeedbackItem` + +SHA-256: `3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182` + +来源:[`packages/feedback/message-feedback/src/types.ts:20`](../packages/feedback/message-feedback/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `category` | 可选 | [`union (7 variants)`](#persistence-type-sha256-3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd) | +| `createdAt` | 必需 | `number` | +| `messageId` | 必需 | `string` | +| `note` | 可选 | `string` | +| `rating` | 必需 | [`MessageFeedbackRating`](#persistence-type-sha256-390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2) | +| `updatedAt` | 必需 | `number` | +| `version` | 必需 | `string` | + + + + + + + +### `MessageFeedbackPut` + +SHA-256: `aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626` + +来源:[`packages/feedback/message-feedback/src/types.ts:38`](../packages/feedback/message-feedback/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `item` | 必需 | [`MessageFeedbackItem`](#persistence-type-sha256-3d7d07060a7be77984feb651ea2bf1925d3e0477911d9d3ed86330d1e8ca6182) | +| `sessionId` | 必需 | `string` | + + + + + + + +### `MessageFeedbackRating` + +SHA-256: `390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2` + +来源:[`packages/feedback/message-feedback/src/types.ts:17`](../packages/feedback/message-feedback/src/types.ts) + +以下类型之一: + +- `"negative"` +- `"positive"` + + + + + + + +### `MessageSource` + +SHA-256: `4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283` + +来源:[`packages/llm/llm/src/message.ts:128`](../packages/llm/llm/src/message.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `agent-instructions` | `"instructions"` | `changes`: [`AgentInstructionChange[]`](#persistence-type-sha256-2ab12a0e345658f9342816d773fe610f049982bcad82631f43b9205abe43e5ee) | [`AgentInstructionSource`](#persistence-type-sha256-6f22a9d02b9a1f1157f3b0e7bdccd7e7b12b085c4efdb709dfc74a465cd4e590) | +| `agent-message` | `"relay"` | `senderSessionId`: `string` | [`AgentMessageSource`](#persistence-type-sha256-4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86) | +| `goal` | 未声明 | `goalId`: `string`; `revision`: `number`; `round`: `number` | [`GoalMessageSource`](#persistence-type-sha256-7f959241c24128b4983b559984811861dc59774b85905c8fa57c6cb0148a3dbc) | +| `model` | 未声明 | `model`: `string`; `provider`: `string` | [`ModelMessageSource`](#persistence-type-sha256-719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91) | +| `plugin` | `"catalog"` | `plugin`: `string` | [`{ kind: "plugin", form: "catalog" }`](#persistence-type-sha256-2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc) | +| `plugin` | `"instructions"` | `plugin`: `string` | [`{ kind: "plugin", form: "instructions" }`](#persistence-type-sha256-dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412) | +| `plugin` | `"notice"` | `plugin`: `string`; `summary`: `string` | [`{ kind: "plugin", form: "notice" }`](#persistence-type-sha256-b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43) | +| `plugin` | `"recall"` | `plugin`: `string` | [`{ kind: "plugin", form: "recall" }`](#persistence-type-sha256-85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01) | +| `plugin` | `"relay"` | `plugin`: `string` | [`{ kind: "plugin", form: "relay" }`](#persistence-type-sha256-2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c) | +| `plugin` | `"snapshot"` | `plugin`: `string`; `sections`: [`ContextSnapshotSection[]`](#persistence-type-sha256-c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262) | [`{ kind: "plugin", form: "snapshot" }`](#persistence-type-sha256-e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f) | +| `plugin` | 未声明 | `plugin`: `string` | [`{ kind: "plugin" }`](#persistence-type-sha256-0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8) | +| `session-reference` | `"recall"` | `references`: [`{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]`](#persistence-type-sha256-df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18); `version`: `1` | [`SessionReferenceSource`](#persistence-type-sha256-f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f) | +| `skill-catalog` | `"catalog"` | `entries`: [`{ description, name }[]`](#persistence-type-sha256-aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba) | [`SkillCatalogSource`](#persistence-type-sha256-fc2ae6962f9f8801c2b1e414668e1e17cbb7544c4f39381198977a38bd10c093) | +| `skill-invocation` | `"instructions"` | `name`: `string` | [`SkillInvocationSource`](#persistence-type-sha256-672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db) | +| `subagent-settled` | `"notice"` | `senderSessionId`: `string`; `summary`: `string` | [`SubagentSettledMessageSource`](#persistence-type-sha256-4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a) | +| `team-message` | 未声明 | `messageId`: `string`; `senderId`: `string`; `senderName`: `string`; `teamId`: `string` | [`TeamMessageSource`](#persistence-type-sha256-2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0) | +| `tool` | 未声明 | `callId`: `string` | [`ToolMessageSource`](#persistence-type-sha256-d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab) | +| `user` | 未声明 | `rpcId`: `string` | [`{ kind: "user" }`](#persistence-type-sha256-6a4f72e2e179e17b922f2a9392c0e1c8f8c707f32494372454850a3eb184a6e7) | +| `user` | 未声明 | 无 | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | +| `webhook` | `"notice"` | `deliveryId`: `string`; `provider`: `string`; `ruleId`: `string`; `source`: `string`; `summary`: `string` | [`{ kind: "webhook", form: "notice" }`](#persistence-type-sha256-9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94) | + + + +### `Message[]` + +SHA-256: `478738df7e7d2b103b09fb937817a9302c81076809f2b341169e00a9419c5665` + +[`Message`](#persistence-type-sha256-23c7cce57d20589897f4e2bd5898affc6fc611b87cd0cc8b95be1cfdd8b3a7eb) 的数组。 + + + + + + + +### `ModelMessageSource` + +SHA-256: `719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91` + +来源:[`packages/llm/llm/src/message.ts:24`](../packages/llm/llm/src/message.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"model"` | +| `model` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `replayState` | 可选 | `unknown`(不透明) | + + + + + + + +### `ModelSelection` + +SHA-256: `f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b` + +来源:[`packages/api/session-controller/src/types.ts:86`](../packages/api/session-controller/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| | `model` | 必需 | `string` | | `provider` | 必需 | `string` | +| `reasoningEffort` | 可选 | `string` | - + -### `packages/session/session-title/src/types.ts#SessionTitleSource` + -SHA-256: `30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f` + -来源:[`packages/session/session-title/src/types.ts:28`](../packages/session/session-title/src/types.ts) +### `OneShotScheduleDispatchChange` -以下类型之一: +SHA-256: `8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af` -- [`event:session/title.data.source[1]`](#persistence-type-eventsessiontitledatasource1) -- [`event:session/title.data.source[0]`](#persistence-type-eventsessiontitledatasource0) -- [`event:agent/inbox/spliced.data.inserted[0].source[0]`](#persistence-type-eventagentinboxspliceddatainserted0source0) - - - -### `packages/skill/skill/src/index.ts#SkillInvocationSource` - -SHA-256: `672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db` - -来源:[`packages/skill/skill/src/index.ts:146`](../packages/skill/skill/src/index.ts) +来源:[`packages/schedule/schedule/src/types.ts:86`](../packages/schedule/schedule/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `form` | 必需 | `"instructions"` | -| `kind` | 必需 | `"skill-invocation"` | -| `name` | 必需 | `string` | +| `id` | 必需 | `string` | +| `operation` | 必需 | `"dispatch"` | +| `version` | 必需 | `1` | - + -### `packages/skill/tool-skill/src/index.ts#SkillCatalogSource` - -SHA-256: `fc2ae6962f9f8801c2b1e414668e1e17cbb7544c4f39381198977a38bd10c093` - -来源:[`packages/skill/tool-skill/src/index.ts:34`](../packages/skill/tool-skill/src/index.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `entries` | 必需 | [`event:agent/inbox/spliced.data.inserted[0].source[17].entries`](#persistence-type-eventagentinboxspliceddatainserted0source17entries) | -| `form` | 必需 | `"catalog"` | -| `kind` | 必需 | `"skill-catalog"` | -| `update` | 可选 | `true` | - - - -### `packages/subagent/subagent/src/catalog.ts#SubagentCatalogEvent` - -SHA-256: `3ac1196f59d5e9e0e9345122c8c403b102478b526404a2e591a38f613483321e` - -来源:[`packages/subagent/subagent/src/catalog.ts:24`](../packages/subagent/subagent/src/catalog.ts) - -以下类型之一: - -- [`event:subagent/catalog.data[1]`](#persistence-type-eventsubagentcatalogdata1) -- [`event:subagent/catalog.data[0]`](#persistence-type-eventsubagentcatalogdata0) - - - -### `packages/subagent/subagent/src/continuation-messages.ts#AgentMessageSource` - -SHA-256: `4a9bef9f27a942520cc2279ca7dd3082556e4bff543f66b5c0333e1bbed1cd86` - -来源:[`packages/subagent/subagent/src/continuation-messages.ts:15`](../packages/subagent/subagent/src/continuation-messages.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"relay"` | -| `kind` | 必需 | `"agent-message"` | -| `senderSessionId` | 必需 | `string` | - - - -### `packages/subagent/subagent/src/continuation-messages.ts#SubagentSettledMessageSource` - -SHA-256: `4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a` - -来源:[`packages/subagent/subagent/src/continuation-messages.ts:30`](../packages/subagent/subagent/src/continuation-messages.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `form` | 必需 | `"notice"` | -| `kind` | 必需 | `"subagent-settled"` | -| `senderSessionId` | 必需 | `string` | -| `summary` | 必需 | `string` | - - - -### `packages/subagent/subagent/src/descriptor.ts#ContinuableSubagentDescriptorData` - -SHA-256: `6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f` - -来源:[`packages/subagent/subagent/src/descriptor.ts:72`](../packages/subagent/subagent/src/descriptor.ts) - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `agentModel` | 可选 | `string` | -| `agentProvider` | 可选 | `string` | -| `agentReasoningEffort` | 可选 | `string` | -| `label` | 必需 | `string` | -| `mode` | 必需 | `"continuable"` | -| `persona` | 可选 | `string` | -| `provider` | 必需 | `string` | -| `toolFilter` | 可选 | [`packages/core/tools/src/index.ts#ToolRestriction`](#persistence-type-packagescoretoolssrcindextstoolrestriction) | -| `version` | 必需 | `number` | + -### `packages/subagent/subagent/src/descriptor.ts#OneShotSubagentDescriptorData` +### `OneShotSubagentDescriptorData` SHA-256: `5f758f3de5f00c18968a7c6d347083aac5c9ae13f6a79c78f6611b23c4973564` @@ -5820,9 +3798,466 @@ SHA-256: `5f758f3de5f00c18968a7c6d347083aac5c9ae13f6a79c78f6611b23c4973564` | `provider` | 必需 | `string` | | `version` | 必需 | `number` | + + + + + + +### `OptionalSessionSeq` + +SHA-256: `3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f` + +来源:[`packages/core/session/src/types.ts:64`](../packages/core/session/src/types.ts) + +以下类型之一: + +- `null` +- `number` + + + + + + + +### `PresentedFile` + +SHA-256: `b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97` + +来源:[`packages/deliverables/tool-present/src/types.ts:5`](../packages/deliverables/tool-present/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `description` | 可选 | `string` | +| `path` | 必需 | `string` | + + + +### `PresentedFile[]` + +SHA-256: `1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345` + +[`PresentedFile`](#persistence-type-sha256-b8fc636a2121df9d8423c242e03c9d23b7ab7c6fdce00e45746932c60b730f97) 的数组。 + + + + + + + +### `PtcDispatchEventData` + +SHA-256: `8d2e5a3c4230e6ea6c0b5151f02241d0db02cd2551f2df1b6b9700cddcc0dca3` + +来源:[`packages/core/tools/src/types.ts:20`](../packages/core/tools/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `arguments` | 必需 | `unknown`(不透明) | +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `error` | 可选 | [`{ code, name, reason? }`](#persistence-type-sha256-a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735) | +| `isError` | 必需 | `boolean` | +| `name` | 必需 | `string` | +| `parentCallId` | 必需 | `string` | +| `rootCallId` | 必需 | `string` | +| `subCallId` | 必需 | `string` | + + + + + + + +### `PtcDispatchStartEventData` + +SHA-256: `2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f` + +来源:[`packages/core/tools/src/types.ts:11`](../packages/core/tools/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `arguments` | 必需 | `unknown`(不透明) | +| `name` | 必需 | `string` | +| `parentCallId` | 必需 | `string` | +| `rootCallId` | 必需 | `string` | +| `subCallId` | 必需 | `string` | + + + + + + + +### `ReasoningBlock` + +SHA-256: `814d9434e1ddf9078612b3b34322f26e9363b469213335007f7e9ba7fee9464e` + +来源:[`packages/llm/llm/src/types.ts:67`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `text` | 必需 | `string` | +| `type` | 必需 | `"reasoning"` | + + + + + + + +### `ReplayEnvelope` + +SHA-256: `0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555` + +来源:[`packages/llm/llm/src/types.ts:404`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `blocks` | 可选 | [`unknown[]`](#persistence-type-sha256-b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7) | +| `response` | 必需 | `unknown`(不透明) | + + + + + + + +### `RequestContext` + +SHA-256: `b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081` + +来源:[`packages/core/session/src/types.ts:249`](../packages/core/session/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `contextWindow` | 可选 | `number` | +| `model` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `systemPromptUpdate` | 可选 | `"in-history"` | + + + + + + + +### `RequestHeaderReason` + +SHA-256: `530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6` + +来源:[`packages/core/session/src/types.ts:268`](../packages/core/session/src/types.ts) + +以下类型之一: + +- `"change"` +- `"initial"` +- `"resume"` +- `"series"` + + + + + + + +### `SandboxMode` + +SHA-256: `fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd` + +来源:[`packages/sandbox/sandbox/src/index.ts:29`](../packages/sandbox/sandbox/src/index.ts) + +以下类型之一: + +- `"danger-full-access"` +- `"read-only"` +- `"workspace-write"` + + + + + + + +### `ScheduleChange` + +SHA-256: `e1d0e52dcd1855ffb803efc18f8f7b776c48d1c25757e8a75c0281fa298c02e1` + +来源:[`packages/schedule/schedule/src/types.ts:105`](../packages/schedule/schedule/src/types.ts) + +以下类型之一: + +- [`EveryScheduleDispatchChange`](#persistence-type-sha256-e6063d0451dc02026fd9b54ad3f77c7b1b6392ad3e872a7737ac84e13ca72344) +- [`ScheduleDeleteChange`](#persistence-type-sha256-18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0) +- [`OneShotScheduleDispatchChange`](#persistence-type-sha256-8e8e91646a5cae3fc78f7532a0013ff2088ae47077642c2edd507a508209b8af) +- [`ScheduleCreateChange`](#persistence-type-sha256-ca6425edd20afe34d0cedc6ad1abad1ad7b32e2fbc4c1d24db53939e80bf887f) + + + + + + + +### `ScheduleCreateChange` + +SHA-256: `ca6425edd20afe34d0cedc6ad1abad1ad7b32e2fbc4c1d24db53939e80bf887f` + +来源:[`packages/schedule/schedule/src/types.ts:72`](../packages/schedule/schedule/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `operation` | 必需 | `"create"` | +| `schedule` | 必需 | [`ScheduleRecord`](#persistence-type-sha256-d8f868c6b3e7189de6c1ffe2ea04794ea2aa31315b6347d12536e46020afac87) | +| `version` | 必需 | `1` | + + + + + + + +### `ScheduleDeleteChange` + +SHA-256: `18dc21f12bbac8ade8377e6fbb54179e20c3d955d73fba3244c57fb6bf001df0` + +来源:[`packages/schedule/schedule/src/types.ts:79`](../packages/schedule/schedule/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `id` | 必需 | `string` | +| `operation` | 必需 | `"delete"` | +| `version` | 必需 | `1` | + + + + + + + +### `ScheduleRecord` + +SHA-256: `d8f868c6b3e7189de6c1ffe2ea04794ea2aa31315b6347d12536e46020afac87` + +来源:[`packages/schedule/schedule/src/types.ts:69`](../packages/schedule/schedule/src/types.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `after` | 未声明 | `afterSeconds`: `number`; `id`: `string`; `prompt`: `string`; `scheduledAt`: `string` | [`AfterScheduleRecord`](#persistence-type-sha256-27e337d3d6b402b221e50c247a3f518a70d0c474cc60beee15fac3e9c5cbfcbe) | +| `at` | 未声明 | `id`: `string`; `prompt`: `string`; `scheduledAt`: `string` | [`AtScheduleRecord`](#persistence-type-sha256-658d895d187b26d83f3b53109a3bf77bbfba9f6f9a6d4bc4ee4315b4eb36239e) | +| `every` | 未声明 | `everySeconds`: `number`; `id`: `string`; `prompt`: `string`; `scheduledAt`: `string` | [`EveryScheduleRecord`](#persistence-type-sha256-66ece68282d8c06330fb83329a24ae54c386d5ccfab296bbf18369da8beb7d14) | + + + + + + + +### `SessionHeader` + +SHA-256: `1a3440e3577382704d42a6263aa463504eb74c566734a55e9503a63efcd02445` + +来源:[`packages/core/session/src/types.ts:93`](../packages/core/session/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `agentPreset` | 可选 | `string` | +| `createdAt` | 必需 | `number` | +| `cwd` | 可选 | `string` | +| `delegationDepth` | 可选 | `number` | +| `id` | 必需 | `string` | +| `isSeeded` | 必需 | `boolean` | +| `origin` | 可选 | `"subagent"` | +| `parentSession` | 可选 | `string` | +| `version` | 必需 | `4` | + + + + + + + +### `SessionReferenceSource` + +SHA-256: `f56c5b59ca0161310c338d31dd16cf14287ccd602ff4181058df178c1c286d7f` + +来源:[`packages/context/session-reference/src/types.ts:13`](../packages/context/session-reference/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"recall"` | +| `kind` | 必需 | `"session-reference"` | +| `references` | 必需 | [`{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]`](#persistence-type-sha256-df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18) | +| `version` | 必需 | `1` | + + + + + + + +### `SessionTitleEventData` + +SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4` + +来源:[`packages/session/session-title/src/types.ts:41`](../packages/session/session-title/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `messageSeqs` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `source` | 必需 | [`SessionTitleSource`](#persistence-type-sha256-30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f) | +| `title` | 必需 | `string` | + + + + + + + +### `SessionTitleLlmRequestEventData` + +SHA-256: `9fe0e77a7816b7fdb4b953ec0e2f0cd7bbd22c5de5c3567e612d1b20eb0992e6` + +来源:[`packages/session/session-title-llm/src/index.ts:27`](../packages/session/session-title-llm/src/index.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `maxTokens` | 必需 | `number` | +| `messageSeqs` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `messages` | 必需 | [`Message[]`](#persistence-type-sha256-478738df7e7d2b103b09fb937817a9302c81076809f2b341169e00a9419c5665) | +| `route` | 必需 | [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) | +| `system` | 必需 | `string` | +| `titleProvider` | 必需 | `string` | + + + + + + + + + + + +### `SessionTitleModelIdentity` + +SHA-256: `07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235` + +来源:[`packages/session/session-title/src/types.ts:20`](../packages/session/session-title/src/types.ts) · [`packages/subagent/tool-subagent/src/model-selection.ts:9`](../packages/subagent/tool-subagent/src/model-selection.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `model` | 必需 | `string` | +| `provider` | 必需 | `string` | + + + +### `SessionTitleModelIdentity[]` + +SHA-256: `ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec` + +[`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) 的数组。 + + + + + + + +### `SessionTitleSource` + +SHA-256: `30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f` + +来源:[`packages/session/session-title/src/types.ts:28`](../packages/session/session-title/src/types.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `fallback` | 未声明 | 无 | [`{ kind: "fallback" }`](#persistence-type-sha256-1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597) | +| `provider` | 未声明 | `provider`: `string` | [`{ kind: "provider" }`](#persistence-type-sha256-b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812) | +| `user` | 未声明 | 无 | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | + + + + + + + +### `SkillCatalogSource` + +SHA-256: `fc2ae6962f9f8801c2b1e414668e1e17cbb7544c4f39381198977a38bd10c093` + +来源:[`packages/skill/tool-skill/src/index.ts:34`](../packages/skill/tool-skill/src/index.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `entries` | 必需 | [`{ description, name }[]`](#persistence-type-sha256-aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba) | +| `form` | 必需 | `"catalog"` | +| `kind` | 必需 | `"skill-catalog"` | +| `update` | 可选 | `true` | + + + + + + + +### `SkillInvocationSource` + +SHA-256: `672c4aa2a9b736e3d6e5da6346d2e2ed5e3573f2d0baafa18e7407c9f3fee3db` + +来源:[`packages/skill/skill/src/index.ts:146`](../packages/skill/skill/src/index.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"instructions"` | +| `kind` | 必需 | `"skill-invocation"` | +| `name` | 必需 | `string` | + + + + + + + +### `StreamChunk` + +SHA-256: `071d92b9dac661fcc826c678cf64d188f26fb93aab79c627b11a03acdd34dfca` + +来源:[`packages/llm/llm/src/types.ts:426`](../packages/llm/llm/src/types.ts) + +以下类型之一: + +- [`{ type: "tool-call-delta" }`](#persistence-type-sha256-88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a) +- [`{ type: "block-end" }`](#persistence-type-sha256-90c811b8c2668898515e69a24e82caffeb08517f9c7aa193867ff0380f3b535d) +- [`{ type: "block-start" }`](#persistence-type-sha256-647cb2e3aeb58e27d1d4d60011f208bb66dce257e8654193c533b47c4c22c253) +- [`{ type: "reasoning-delta" }`](#persistence-type-sha256-2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095) +- [`{ type: "text-delta" }`](#persistence-type-sha256-95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65) +- [`{ type: "finish" }`](#persistence-type-sha256-a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1) +- [`{ type: "usage" }`](#persistence-type-sha256-f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515) + + + + + + + +### `SubagentCatalogEvent` + +SHA-256: `3ac1196f59d5e9e0e9345122c8c403b102478b526404a2e591a38f613483321e` + +来源:[`packages/subagent/subagent/src/catalog.ts:24`](../packages/subagent/subagent/src/catalog.ts) + +以下类型之一: + +- [`{ childCreatedAt, childId, label, mode, … }`](#persistence-type-sha256-0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd) +- [`{ childCreatedAt, childId, label?, mode, … }`](#persistence-type-sha256-5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694) + + + -### `packages/subagent/subagent/src/descriptor.ts#SubagentDescriptorData` + + +### `SubagentDescriptorData` SHA-256: `86d1d0e9cfebb240421187e3dc37fb71cc38a1501885cf32f8f9adef7b0a2bde` @@ -5830,12 +4265,210 @@ SHA-256: `86d1d0e9cfebb240421187e3dc37fb71cc38a1501885cf32f8f9adef7b0a2bde` 以下类型之一: -- [`packages/subagent/subagent/src/descriptor.ts#ContinuableSubagentDescriptorData`](#persistence-type-packagessubagentsubagentsrcdescriptortscontinuablesubagentdescriptordata) -- [`packages/subagent/subagent/src/descriptor.ts#OneShotSubagentDescriptorData`](#persistence-type-packagessubagentsubagentsrcdescriptortsoneshotsubagentdescriptordata) +- [`ContinuableSubagentDescriptorData`](#persistence-type-sha256-6487b10ba7542f3c447b1e41a1c6a590b7bfafe0b9b66b49f34028da85bb970f) +- [`OneShotSubagentDescriptorData`](#persistence-type-sha256-5f758f3de5f00c18968a7c6d347083aac5c9ae13f6a79c78f6611b23c4973564) + + + + + + + +### `SubagentSettledMessageSource` + +SHA-256: `4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a` + +来源:[`packages/subagent/subagent/src/continuation-messages.ts:30`](../packages/subagent/subagent/src/continuation-messages.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"notice"` | +| `kind` | 必需 | `"subagent-settled"` | +| `senderSessionId` | 必需 | `string` | +| `summary` | 必需 | `string` | + + + + + + + +### `SurfaceOp` + +SHA-256: `335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5` + +来源:[`packages/core/session/src/types.ts:448`](../packages/core/session/src/types.ts) + +以下类型之一: + +- `"append"` +- [`{ endSeq, op, startSeq }`](#persistence-type-sha256-bcf0caf62d964b2fcf5404bd5c909cfa9a21c3f3c96e6b7e36d9e33565223825) + + + + + + + +### `SystemMessage` + +SHA-256: `302b01ddddcbb3b16cfa3fba2a5d99f5082a55fbd9dc5c83a179a228b8a6a0ca` + +来源:[`packages/llm/llm/src/message.ts:158`](../packages/llm/llm/src/message.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | 必需 | `string` | +| `role` | 必需 | `"system"` | +| `source` | 必需 | [`union (7 variants)`](#persistence-type-sha256-23cf7e0cf3fec1283b60fa15713506169bc9c079a08e124d1cb9733baca80b40) | + + + + + + + +### `TeamMemberPhase` + +SHA-256: `dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd` + +来源:[`packages/experimental/agent-team/src/types.ts:44`](../packages/experimental/agent-team/src/types.ts) + +以下类型之一: + +- `"active"` +- `"failed"` +- `"provisioning"` + + + + + + + +### `TeamMemberSnapshot` + +SHA-256: `6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25` + +来源:[`packages/experimental/agent-team/src/types.ts:47`](../packages/experimental/agent-team/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `context` | 必需 | [`union (2 variants)`](#persistence-type-sha256-50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48) | +| `description` | 必需 | `string` | +| `error` | 可选 | `string` | +| `id` | 必需 | `string` | +| `name` | 必需 | `string` | +| `phase` | 必需 | [`TeamMemberPhase`](#persistence-type-sha256-dfce5db4aa42b7ebe0bb79eca92553587287e18c06b9eba85cbfb9d332e26acd) | +| `provider` | 必需 | `string` | + + + + + + + +### `TeamMessageSnapshot` + +SHA-256: `5b694f394d5e11609887a3ccfa82844935d49806c37e336b30be2186d649ab94` + +来源:[`packages/experimental/agent-team/src/types.ts:106`](../packages/experimental/agent-team/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | 必需 | `string` | +| `senderId` | 必需 | `string` | +| `senderName` | 必需 | `string` | +| `targetId` | 必需 | `string` | + + + + + + + +### `TeamMessageSource` + +SHA-256: `2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0` + +来源:[`packages/experimental/agent-team/src/types.ts:115`](../packages/experimental/agent-team/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"team-message"` | +| `messageId` | 必需 | `string` | +| `senderId` | 必需 | `string` | +| `senderName` | 必需 | `string` | +| `teamId` | 必需 | `string` | + + + + + + + +### `TeamTaskSnapshot` + +SHA-256: `51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357` + +来源:[`packages/experimental/agent-team/src/types.ts:74`](../packages/experimental/agent-team/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `blockedBy` | 必需 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `description` | 必需 | `string` | +| `id` | 必需 | `string` | +| `ownerId` | 可选 | `string` | +| `revision` | 必需 | `number` | +| `status` | 必需 | [`TeamTaskStatus`](#persistence-type-sha256-b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943) | +| `subject` | 必需 | `string` | +| `writeScopes` | 必需 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | + + + + + + + +### `TeamTaskStatus` + +SHA-256: `b2d2a01e51341a3bfec809198952c8c830a7899f4cb6ecd3c1dc0b5d9a2af943` + +来源:[`packages/experimental/agent-team/src/types.ts:71`](../packages/experimental/agent-team/src/types.ts) + +以下类型之一: + +- `"completed"` +- `"deleted"` +- `"in_progress"` +- `"pending"` + + + + + + + +### `TextBlock` + +SHA-256: `4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c` + +来源:[`packages/llm/llm/src/types.ts:61`](../packages/llm/llm/src/types.ts) · [`packages/web/web-search-deepseek/src/provider.ts:66`](../packages/web/web-search-deepseek/src/provider.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `text` | 必需 | `string` | +| `type` | 必需 | `"text"` | + + -### `packages/todo/tool-todo/src/types.ts#TodoItem` + + +### `TodoItem` SHA-256: `a99f76fd149051c363f960bfeeb5b9509587ecaf7591a42797e4bfe810d8987a` @@ -5844,25 +4477,161 @@ SHA-256: `a99f76fd149051c363f960bfeeb5b9509587ecaf7591a42797e4bfe810d8987a` | 属性 | 存在性 | 类型 | |---|---|---| | `content` | 必需 | `string` | -| `status` | 必需 | [`event:todo/write.data.todos[0].status`](#persistence-type-eventtodowritedatatodos0status) | +| `status` | 必需 | [`union (3 variants)`](#persistence-type-sha256-fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4) | - + -### `packages/web/web-search-deepseek/src/provider.ts#DeepSeekSearchLlmRequest` +### `TodoItem[]` -SHA-256: `2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9` +SHA-256: `4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea` -来源:[`packages/web/web-search-deepseek/src/provider.ts:55`](../packages/web/web-search-deepseek/src/provider.ts) +[`TodoItem`](#persistence-type-sha256-a99f76fd149051c363f960bfeeb5b9509587ecaf7591a42797e4bfe810d8987a) 的数组。 + + + + + + + +### `TokenUsage` + +SHA-256: `fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394` + +来源:[`packages/llm/llm/src/types.ts:162`](../packages/llm/llm/src/types.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `apiVersion` | 必需 | `string` | -| `body` | 必需 | [`event:web/deepseek-search-llm-request.data.body`](#persistence-type-eventwebdeepseek-search-llm-requestdatabody) | -| `endpoint` | 必需 | `string` | +| `cacheReadTokens` | 可选 | `number` | +| `cacheWriteTokens` | 可选 | `number` | +| `inputTokens` | 必需 | `number` | +| `outputTokens` | 必需 | `number` | +| `reasoningTokens` | 可选 | `number` | +| `totalTokens` | 可选 | `number` | + + + + + + + +### `ToolCallBlock` + +SHA-256: `c1f0f17b6493b85db6453bb30e01b208d703731b25bc1e68e5d4fc72eea9cdea` + +来源:[`packages/llm/llm/src/types.ts:104`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `arguments` | 必需 | `string` | +| `id` | 必需 | `string` | +| `name` | 必需 | `string` | +| `type` | 必需 | `"tool-call"` | + + + + + + + +### `ToolMessageSource` + +SHA-256: `d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab` + +来源:[`packages/llm/llm/src/message.ts:29`](../packages/llm/llm/src/message.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `callId` | 必需 | `string` | +| `kind` | 必需 | `"tool"` | + + + + + + + +### `ToolRestriction` + +SHA-256: `3cfc3a56502da1f8c6153c2c56657bab4b749056968634dd0991d325ec1c919f` + +来源:[`packages/core/tools/src/index.ts:682`](../packages/core/tools/src/index.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `allow` | 可选 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `deny` | 可选 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | + + + + + + + +### `ToolResultBlock` + +SHA-256: `d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127` + +来源:[`packages/llm/llm/src/types.ts:114`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `isError` | 可选 | `boolean` | +| `toolCallId` | 必需 | `string` | +| `type` | 必需 | `"tool-result"` | + + + + + + + +### `ToolResultMessage` + +SHA-256: `1b573e2d5c094fa87e2a8bf409ddd4ac5ba92a123085e168de44b9ccdbd5244c` + +来源:[`packages/llm/llm/src/message.ts:164`](../packages/llm/llm/src/message.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`tuple (1 positions)`](#persistence-type-sha256-8d6a011f3ef7096a4a922ef420458419ff6b20e1eaeece5d331db7585d2f08d6) | +| `id` | 必需 | `string` | +| `role` | 必需 | `"user"` | +| `source` | 必需 | [`ToolMessageSource`](#persistence-type-sha256-d9c462b9f62fdd3efc76a44b9524dc8781f6b91cd9c7e584b17d971defafebab) | + + + + + + + +### `ToolSchema` + +SHA-256: `7f5f2a8618c2ece530a18b1358b890fb57fb8c35705e47b66bff2296f8c6e889` + +来源:[`packages/llm/llm/src/types.ts:447`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `description` | 必需 | `string` | +| `name` | 必需 | `string` | +| `parameters` | 必需 | [`{}`](#persistence-type-sha256-0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f) | + + + +### `ToolSchema[]` + +SHA-256: `6d63f25a28b70801937a46b1058be5f52d4efbaf3516141470463ae469b59c23` + +[`ToolSchema`](#persistence-type-sha256-7f5f2a8618c2ece530a18b1358b890fb57fb8c35705e47b66bff2296f8c6e889) 的数组。 + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentEndData` + + +### `ToolWorkflowAgentEndData` SHA-256: `c0ea97bc89dfc46fa94eab956f5c3ee6af2f964aa7db6327cb18b451f207bef7` @@ -5870,13 +4639,17 @@ SHA-256: `c0ea97bc89dfc46fa94eab956f5c3ee6af2f964aa7db6327cb18b451f207bef7` | 属性 | 存在性 | 类型 | |---|---|---| -| `outcome` | 必需 | [`packages/workflow/workflow/src/types.ts#WorkflowAgentOutcome`](#persistence-type-packagesworkflowworkflowsrctypestsworkflowagentoutcome) | +| `outcome` | 必需 | [`WorkflowAgentOutcome`](#persistence-type-sha256-c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896) | | `runId` | 必需 | `string` | | `seq` | 必需 | `number` | + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowAgentStartData` + + +### `ToolWorkflowAgentStartData` SHA-256: `9a410ddf56792b2b7cd4a224a2e54dc4dee30a8e8e6b1c2b9a1d19992b217adc` @@ -5890,9 +4663,13 @@ SHA-256: `9a410ddf56792b2b7cd4a224a2e54dc4dee30a8e8e6b1c2b9a1d19992b217adc` | `runId` | 必需 | `string` | | `seq` | 必需 | `number` | + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunEndData` + + +### `ToolWorkflowRunEndData` SHA-256: `7f9365bae9fcb73e1e34061a1acfe0422c1a5fd351848cace9bebbe806f28462` @@ -5901,11 +4678,15 @@ SHA-256: `7f9365bae9fcb73e1e34061a1acfe0422c1a5fd351848cace9bebbe806f28462` | 属性 | 存在性 | 类型 | |---|---|---| | `runId` | 必需 | `string` | -| `stopReason` | 必需 | [`packages/workflow/workflow/src/types.ts#WorkflowStopReason`](#persistence-type-packagesworkflowworkflowsrctypestsworkflowstopreason) | +| `stopReason` | 必需 | [`WorkflowStopReason`](#persistence-type-sha256-8465ece5e9d9007c038b357015d849c15262cb0bc25abc59e47692d87ee01a15) | + + -### `packages/workflow/tool-workflow/src/types.ts#ToolWorkflowRunStartData` + + +### `ToolWorkflowRunStartData` SHA-256: `a6da9ad5d42ae83a6833a8288b076688e8e0801633ea36cbdd8a30a6d9f3160c` @@ -5916,9 +4697,82 @@ SHA-256: `a6da9ad5d42ae83a6833a8288b076688e8e0801633ea36cbdd8a30a6d9f3160c` | `name` | 必需 | `string` | | `runId` | 必需 | `string` | + + + + + + +### `TurnEndCancelCause` + +SHA-256: `1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0` + +来源:[`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `disposed` | 未声明 | 无 | [`{ kind: "disposed" }`](#persistence-type-sha256-4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db) | +| `hook` | 未声明 | `reason`: `string` | [`{ kind: "hook" }`](#persistence-type-sha256-6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d) | +| `legacy` | 未声明 | 无 | [`{ kind: "legacy" }`](#persistence-type-sha256-eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c) | +| `parent` | 未声明 | 无 | [`{ kind: "parent" }`](#persistence-type-sha256-6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800) | +| `user` | 未声明 | 无 | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | + + + + + + + +### `TurnEndReason` + +SHA-256: `f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402` + +来源:[`packages/core/session/src/types.ts:231`](../packages/core/session/src/types.ts) + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `aborted` | 未声明 | `reason`: [`TurnEndCancelCause`](#persistence-type-sha256-1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0) | [`{ kind: "aborted", reason }`](#persistence-type-sha256-0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3) | +| `blocked` | 未声明 | 无 | [`{ kind: "blocked" }`](#persistence-type-sha256-023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4) | +| `completed` | 未声明 | 无 | [`{ kind: "completed" }`](#persistence-type-sha256-b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0) | +| `error` | 未声明 | `error`: [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | [`{ error, kind: "error" }`](#persistence-type-sha256-79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985) | +| `forked` | 未声明 | 无 | [`{ kind: "forked" }`](#persistence-type-sha256-ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7) | +| `interrupted` | 未声明 | 无 | [`{ kind: "interrupted" }`](#persistence-type-sha256-56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23) | +| `max-tokens` | 未声明 | 无 | [`{ kind: "max-tokens" }`](#persistence-type-sha256-ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7) | + + + + + + + +### `UserMessage` + +SHA-256: `4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7` + +来源:[`packages/llm/llm/src/message.ts:143`](../packages/llm/llm/src/message.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `id` | 必需 | `string` | +| `role` | 必需 | `"user"` | +| `source` | 必需 | [`MessageSource`](#persistence-type-sha256-4c965666d5b42116945bc356087cd5e1fd549e6dece560785ed60511059a8283) | + + + +### `UserMessage[]` + +SHA-256: `300341f890f7b9506a1749fff4fa5239d16ea1c63ff6b15851acb03c20f3b48d` + +[`UserMessage`](#persistence-type-sha256-4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7) 的数组。 + + + -### `packages/workflow/workflow/src/types.ts#WorkflowAgentOutcome` + + +### `WorkflowAgentOutcome` SHA-256: `c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896` @@ -5930,9 +4784,13 @@ SHA-256: `c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896` - `"completed"` - `"failed"` + + -### `packages/workflow/workflow/src/types.ts#WorkflowStopReason` + + +### `WorkflowStopReason` SHA-256: `8465ece5e9d9007c038b357015d849c15262cb0bc25abc59e47692d87ee01a15` @@ -5944,335 +4802,719 @@ SHA-256: `8465ece5e9d9007c038b357015d849c15262cb0bc25abc59e47692d87ee01a15` - `"completed"` - `"error"` - + -### `"parent"` +### `boolean` -SHA-256: `e6411b09c1d982f789bf741ca74e2bea69df56029847f86a6148e722039ee732` +SHA-256: `aa93010d0e521ad7c42273f58d5c9b8bf1dfc94edf1b805a3971b364a35c1877` -`"parent"` +`boolean` - + -### `"pause"` +### `false` -SHA-256: `1d8798b1a5e8c545ee4dcd2b4e75c0b4c9ffd985e4744c6d1a1aab992f859721` +SHA-256: `0c4205180f75b9ee1e0d878bd9a9851628b5dc18448486389d9c5fdc3f1ccda3` -`"pause"` +`false` - + -### `"paused"` +### `null` -SHA-256: `c43b119ce579b3e9983a0d3adc4ba402ebb9ba773d89738a2dab01ecf5813943` +SHA-256: `938f7c7357bc403ea3b281a9dd016939df7a0880fc8db12612585be574d0d615` -`"paused"` +`null` - + -### `"pending"` + -SHA-256: `234142ee4f996f38cc9fa3b8b3e3de29b03c9aefe5ebf6c224eddd564505aa85` + -`"pending"` +### `number` - +SHA-256: `0657d3ca5ac4e7bf79b00bcf860b1c7159d01a9da137497221ec2f1776e365f7` -### `"permission/preset"` +来源:[`packages/core/session/src/types.ts:31`](../packages/core/session/src/types.ts) -SHA-256: `ae63d9d1080ed8945031594d93f8d96651d7101b848719cc3e1475875cd3d649` +`number` -`"permission/preset"` + - - -### `"plan/mode"` - -SHA-256: `f634871d1e18b1eb199497ac8ab72d3964f48d03fbf611dc7521a1970cf429d9` - -`"plan/mode"` - - - -### `"plugin"` - -SHA-256: `e654d28d1e6c471147310d2fba396d00969cfe6ed9022626d3f2c2312e0b1cbb` - -`"plugin"` - - - -### `"positive"` - -SHA-256: `df5d9709b7db2a72510dc52052a23f0c38f39730af1504bab8bccabc14fae528` - -`"positive"` - - - -### `"product-interaction"` - -SHA-256: `0341d4c3dfcd53253cdc1e789d9130d3cd848b6f8b0706bf92f313a68b39ff23` - -`"product-interaction"` - - - -### `"provider"` - -SHA-256: `e31572180d6b28b73f073ad30ae19d5d82982d3daf984723984e23da1e7c459a` - -`"provider"` - - - -### `"provisioning"` - -SHA-256: `871bfd6f7bb91061246768d3377f3fd58d6b8ea7c31f44c714ae7ab215650d62` - -`"provisioning"` - - - -### `"read-only"` - -SHA-256: `12a0cfa619ac4a5fc6c3e8e359c8dae15769edc61497a575935c78d5842f8e42` - -`"read-only"` - - - -### `"reasoning"` - -SHA-256: `3c2535ca0a2062f172f15344f8040755002b5ac506cf94fc4ebaa822b15feb8c` - -`"reasoning"` - - - -### `"reasoning-chunks"` - -SHA-256: `688e853dc149f0d30b31765c12ec7e3be74169bdf1a4c6463a10b945d50cc1b8` - -`"reasoning-chunks"` - - - -### `"reasoning-delta"` - -SHA-256: `6f091fe32ab24407236090ca9d710bbaf59bb57466e9f3b8f1f6e4862bc863c6` - -`"reasoning-delta"` - - - -### `"recall"` - -SHA-256: `383cf73ae4748e5beb281ae74857ba1ffb92ae01075b9fbf51af78b666007a8f` - -`"recall"` - - - -### `"rejected"` - -SHA-256: `fab35c4520883c0d69e42d079c9f543fc5ac7a2d15b537b5572fcd99059c7018` - -`"rejected"` - - - -### `"relay"` - -SHA-256: `16d0507cb94b4cfc84a87446b1ba7652d6ec1d65ee1684789e747e30d542800e` - -`"relay"` - - - -### `"remove"` - -SHA-256: `7382c4fc95fe8c5db65ca4d9da572b115d0dbb818b7f32c22ab040318ffbb4bc` - -`"remove"` - - - -### `"replace"` - -SHA-256: `f6cb462f808309e315fea634f1ed86268b8346bbcee6774d9097ca6eed7ac1f8` - -`"replace"` - - - -### `"request/context"` - -SHA-256: `70b082fe78991edf13cf66e1b4d06cd2dcff9cacfd76f8cfb996bfb61939e7b2` - -`"request/context"` - - - -### `"request/header"` - -SHA-256: `3e0eff5946255ff05d88a10839c60305135801f97794ea48d409f8503303317e` - -`"request/header"` - - - -### `"resource-cost"` - -SHA-256: `5bd310104cfe448e530beb11422d2f791e2e32e8e95fdc528a15f9ca693dae75` - -`"resource-cost"` - - - -### `"resume"` - -SHA-256: `34d1ab5c5df378186d6054b1a1beea9a41e41965d6f336f0bc0025c441a82e66` - -`"resume"` - - - -### `"sandbox/mode"` - -SHA-256: `ca085dba2c877feceebf3c62f9d39c6c2a4d2314d97b94b3927a780fe8fe2bb2` - -`"sandbox/mode"` - - - -### `"schedule/change"` - -SHA-256: `0e7b2a97f54f1afdb8cdfad1635abe9145327db539bfb69b4045c19d8c17755d` - -`"schedule/change"` - - - -### `"security-privacy-permission"` - -SHA-256: `07eccc9ea2f9b5439d76cc77d5e062936677d43f07a23da749819b0a22ee36b7` - -`"security-privacy-permission"` - - - -### `"series"` - -SHA-256: `4f507598cf476214aa7646ce7841a7064a9dcb05d0a1eaaefaf79c2b738f160f` - -`"series"` - - - -### `"service-stability"` - -SHA-256: `7180844e1066230c5e891f1b9ccd942423b0fe48aac6ded7eef2a285b288a732` - -`"service-stability"` - - - -### `"session"` - -SHA-256: `e41bdebe246abe17154de7e7a1d81035437eee8d20e7f1edff0d91e2598ad828` - -`"session"` - - - -### `"session-log-deepseek/delivery-accepted"` - -SHA-256: `47e5d84f1a93450a78c7f3954b43990d0f629af7c034a56313e5deb63e772c1b` - -`"session-log-deepseek/delivery-accepted"` - - - -### `"session-reference"` - -SHA-256: `7f13860ee89a2d35ce09f958e85a04566cd59cb1de1d73a9619a9b631961dc71` - -`"session-reference"` - - - -### `"session/end-seed"` - -SHA-256: `1c2686c0682e7bc51d61117b2652bd4a80707e331aa276d6ef915ae32534a330` - -`"session/end-seed"` - - - -### `SessionEventEnvelope` - -SHA-256: `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` - -以下类型之一: - -- [`SessionEventEnvelope[39]`](#persistence-type-sessioneventenvelope39) -- [`SessionEventEnvelope[6]`](#persistence-type-sessioneventenvelope6) -- [`SessionEventEnvelope[0]`](#persistence-type-sessioneventenvelope0) - - - -### `SessionEventEnvelope[0]` - -SHA-256: `e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `time` | 必需 | `number` | -| `type` | 必需 | `string` | - - - -### `SessionEventEnvelope[39]` - -SHA-256: `998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0` - -| 属性 | 存在性 | 类型 | -|---|---|---| -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `sourceEventSeqs` | 可选 | [`SessionEventEnvelope[39].sourceEventSeqs`](#persistence-type-sessioneventenvelope39sourceeventseqs) | -| `surfaceOp` | 必需 | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | 必需 | `number` | -| `type` | 必需 | `string` | - - - -### `SessionEventEnvelope[39].sourceEventSeqs` +### `number[]` SHA-256: `5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78` `number` 的数组。 - + -### `SessionEventEnvelope[6]` + -SHA-256: `7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +### `string` + +SHA-256: `4cd48f3e5108bd6ebedf7301c3638839b8b2b9db8dbd493974177fbdeb91a01b` + +来源:[`packages/api/session-controller/src/types.ts:380`](../packages/api/session-controller/src/types.ts) · [`packages/attachment/attachment/src/brand.ts:6`](../packages/attachment/attachment/src/brand.ts) · [`packages/compaction/compaction/src/brand.ts:4`](../packages/compaction/compaction/src/brand.ts) · [`packages/core/session/src/types.ts:19`](../packages/core/session/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:20`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:32`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:8`](../packages/experimental/agent-team/src/types.ts) · [`packages/feedback/message-feedback/src/types.ts:14`](../packages/feedback/message-feedback/src/types.ts) · [`packages/goal/goal/src/types.ts:17`](../packages/goal/goal/src/types.ts) · [`packages/interaction/commands/src/brand.ts:31`](../packages/interaction/commands/src/brand.ts) · [`packages/interaction/user-approval/src/types.ts:17`](../packages/interaction/user-approval/src/types.ts) · [`packages/llm/llm-retry/src/brand.ts:4`](../packages/llm/llm-retry/src/brand.ts) · [`packages/llm/llm/src/brand.ts:16`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:31`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:43`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:67`](../packages/llm/llm/src/brand.ts) · [`packages/schedule/schedule/src/types.ts:10`](../packages/schedule/schedule/src/types.ts) · [`packages/session/session-title/src/index.ts:42`](../packages/session/session-title/src/index.ts) · [`packages/session/session-title/src/types.ts:17`](../packages/session/session-title/src/types.ts) · [`packages/webhook/webhook/src/brand.ts:12`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:6`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:9`](../packages/webhook/webhook/src/brand.ts) · [`packages/workflow/workflow/src/types.ts:13`](../packages/workflow/workflow/src/types.ts) + +`string` + + + +### `string[]` + +SHA-256: `93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2` + +`string` 的数组。 + + + +### `true` + +SHA-256: `dacf3d5f3e4ff619c1320e64a48dec5e7ecd7870bece65fbd449a0e63adfa521` + +`true` + + + +### `tuple (1 positions)` + +SHA-256: `4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8` + +| 位置 | 存在性 | 类型 | +|---|---|---| +| 0 | 必需 | [`{ type: "web_search_20250305" }`](#persistence-type-sha256-2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3) | + + + +### `tuple (1 positions)` + +SHA-256: `8d6a011f3ef7096a4a922ef420458419ff6b20e1eaeece5d331db7585d2f08d6` + +| 位置 | 存在性 | 类型 | +|---|---|---| +| 0 | 必需 | [`ToolResultBlock`](#persistence-type-sha256-d61574d68558c5a184429e70b04da393dd5460bf5cc3ddef814546e659bd5127) | + + + +### `tuple (1 positions)` + +SHA-256: `8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9` + +| 位置 | 存在性 | 类型 | +|---|---|---| +| 0 | 必需 | [`TextBlock`](#persistence-type-sha256-4e887768586528565381dadbddee6cef555874148089f4579e0b4b1ad096fc9c) | + + + +### `tuple (1 positions)` + +SHA-256: `b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f` + +| 位置 | 存在性 | 类型 | +|---|---|---| +| 0 | 必需 | [`{ role: "user" }`](#persistence-type-sha256-9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5) | + + + +### `union (2 variants)` + +SHA-256: `1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92` + +以下类型之一: + +- `"error"` +- `"success"` + + + +### `union (2 variants)` + +SHA-256: `50cf02d875f8a1f1411f4a6fbcffab9120ccef5f74a47331fbf29480e5f68f48` + +以下类型之一: + +- `"fork"` +- `"fresh"` + + + +### `union (2 variants)` + +SHA-256: `feb329074f0206ecc06d8a1aa0a0b3e2f47fd27524ba020fbc849ba63e938896` + +以下类型之一: + +- [`{ compactionId, llmStreamCall, maxTokens?, model, … }`](#persistence-type-sha256-9ff2ad8dddb836f75e8f6197fff2371323dfc396c3c6fb667e6e0b42fda79a5c) +- [`{ compactionId, maxTokens?, model, provider, … }`](#persistence-type-sha256-3aa261c8516b5c955ed12080e6257a56cbe513f6c9f0ac9274c12e96c196ebca) + + + + + +### `union (3 variants)` + +SHA-256: `5776e5553ff2dfe3f5bc202dbb1e7c9f93e35a531aebb7764c23b2b6153b2ccc` + +以下类型之一: + +- [`{ ignorable?, seq, sourceEventSeqs?, surfaceOp, … }`](#persistence-type-sha256-998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0) +- [`{ ignorable?, seq, surfaceOp, time, … }`](#persistence-type-sha256-7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb) +- [`{ ignorable?, seq, time, type }`](#persistence-type-sha256-e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f) + + + +### `union (3 variants)` + +SHA-256: `904bf499d98be4a3a5f836fcac533b6c4899569b018071e6604e1d32657d00fd` + +以下类型之一: + +- `"remove"` +- `"replace"` +- `"set"` + + + +### `union (3 variants)` + +SHA-256: `acd36e1717d2b4ef9e98a8e6fac17ca1203f3f448e5bca51677f129a8f4999e2` + +以下类型之一: + +- `"assistant"` +- `"system"` +- `"user"` + + + +### `union (3 variants)` + +SHA-256: `fd0d91a1f9dd2efb8959bdf5e07f8f0a98b1cdfa38ce8d4732ebde0b44c3abd4` + +以下类型之一: + +- `"completed"` +- `"in_progress"` +- `"pending"` + + + +### `union (6 variants)` + +SHA-256: `62e6a429ff3f390a46ac39fb468692032f42936ca0db19b53454184189401379` + +以下类型之一: + +- `"block"` +- `"complete"` +- `"create"` +- `"edit"` +- `"pause"` +- `"resume"` + + + +### `union (7 variants)` + +SHA-256: `23cf7e0cf3fec1283b60fa15713506169bc9c079a08e124d1cb9733baca80b40` + +| kind | form 属性 | 其他必需字段 | 完整定义 | +|---|---|---|---| +| `plugin` | `"catalog"` | `plugin`: `string` | [`{ kind: "plugin", form: "catalog" }`](#persistence-type-sha256-2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc) | +| `plugin` | `"instructions"` | `plugin`: `string` | [`{ kind: "plugin", form: "instructions" }`](#persistence-type-sha256-dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412) | +| `plugin` | `"notice"` | `plugin`: `string`; `summary`: `string` | [`{ kind: "plugin", form: "notice" }`](#persistence-type-sha256-b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43) | +| `plugin` | `"recall"` | `plugin`: `string` | [`{ kind: "plugin", form: "recall" }`](#persistence-type-sha256-85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01) | +| `plugin` | `"relay"` | `plugin`: `string` | [`{ kind: "plugin", form: "relay" }`](#persistence-type-sha256-2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c) | +| `plugin` | `"snapshot"` | `plugin`: `string`; `sections`: [`ContextSnapshotSection[]`](#persistence-type-sha256-c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262) | [`{ kind: "plugin", form: "snapshot" }`](#persistence-type-sha256-e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f) | +| `plugin` | 未声明 | `plugin`: `string` | [`{ kind: "plugin" }`](#persistence-type-sha256-0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8) | + + + +### `union (7 variants)` + +SHA-256: `3305a4bb6b6c29b482ba91d59c60b47e8f98282d3dacc8c29e4a4c2712209bdd` + +以下类型之一: + +- `"instruction-following"` +- `"other"` +- `"product-interaction"` +- `"resource-cost"` +- `"security-privacy-permission"` +- `"service-stability"` +- `"task-result"` + + + +### `unknown` + +SHA-256: `bbc5696e3f13c758237b316e3cf08cda0b9fd51ffe672539883457769faa185d` + +`unknown`:此声明未暴露存储值的内部字段。 + + + +### `unknown[]` + +SHA-256: `b1664fa89f8eab49a14e7e3168d8bc4da4aa9fd76332f6c4a053d839e5276ae7` + +`unknown`(不透明) 的数组。 + + + +### `{ active }` + +SHA-256: `20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5` + +来源:[`packages/plan/plan-mode/src/index.ts:47`](../packages/plan/plan-mode/src/index.ts) | 属性 | 存在性 | 类型 | |---|---|---| -| `ignorable` | 可选 | `true` | -| `seq` | 必需 | `number` | -| `surfaceOp` | 必需 | [`packages/core/session/src/types.ts#SurfaceOp`](#persistence-type-packagescoresessionsrctypestssurfaceop) | -| `time` | 必需 | `number` | -| `type` | 必需 | `string` | +| `active` | 必需 | `boolean` | - + -### `SessionEventEnvelope[6].surfaceOp[1]` +### `{ agentPreset }` + +SHA-256: `6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406` + +来源:[`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `agentPreset` | 必需 | `string` | + + + +### `{ allowedModels }` + +SHA-256: `0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f` + +来源:[`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../packages/subagent/tool-subagent/src/model-selection-state.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `allowedModels` | 必需 | [`SessionTitleModelIdentity[]`](#persistence-type-sha256-ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec) | + + + +### `{ args?, commandId, name, source }` + +SHA-256: `a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86` + +来源:[`packages/interaction/commands/src/types.ts:105`](../packages/interaction/commands/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `args` | 可选 | `string` | +| `commandId` | 必需 | `string` | +| `name` | 必需 | `string` | +| `source` | 必需 | [`CommandSource`](#persistence-type-sha256-ada310bf0bdb8fed51f3b56ea63f6ea6b18bbd587f04fccb63a14ab0b2a24e05) | + + + +### `{ arguments, callId, name, step, … }` + +SHA-256: `e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1` + +来源:[`packages/core/session/src/types.ts:348`](../packages/core/session/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `arguments` | 必需 | `string` | +| `callId` | 必需 | `string` | +| `name` | 必需 | `string` | +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | + + + +### `{ callId, files, turn }` + +SHA-256: `1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c` + +来源:[`packages/deliverables/tool-present/src/types.ts:15`](../packages/deliverables/tool-present/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `callId` | 必需 | `string` | +| `files` | 必需 | [`PresentedFile[]`](#persistence-type-sha256-1d9cb3caa96100b18b1911fa3ff8c751ef6992971a03c5f4d9aefc1a0004a345) | +| `turn` | 必需 | `number` | + + + +### `{ callId?, id, reason?, toolName }` + +SHA-256: `45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448` + +来源:[`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `callId` | 可选 | `string` | +| `id` | 必需 | `string` | +| `reason` | 可选 | `string` | +| `toolName` | 必需 | `string` | + + + +### `{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }` + +SHA-256: `4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4` + +来源:[`packages/context/session-reference/src/types.ts:18`](../packages/context/session-reference/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `capturedFormatVersion` | 可选 | `number` | +| `capturedThroughSeq` | 必需 | [`OptionalSessionSeq`](#persistence-type-sha256-3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f) | +| `compacted` | 必需 | `boolean` | +| `inputIndex` | 必需 | `number` | +| `label` | 必需 | `string` | +| `omittedBytes` | 必需 | `number` | +| `omittedMessages` | 必需 | `number` | +| `originalMessages` | 必需 | `number` | +| `retainedMessages` | 必需 | `number` | +| `sessionId` | 必需 | `string` | +| `truncated` | 必需 | `boolean` | + + + +### `{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }[]` + +SHA-256: `df843efd87c78cf8de98f8e0d0216956cd568d0d0e56a22c853663e274aa1a18` + +[`{ capturedFormatVersion?, capturedThroughSeq, compacted, inputIndex, … }`](#persistence-type-sha256-4f91f187baeabef5c7950c4780d31bbe39f3345dff591a6cf26ac7e135ac1cf4) 的数组。 + + + +### `{ childCreatedAt, childId, label, mode, … }` + +SHA-256: `0e10d7c096b47e61defe372a5fc8bd37d835199410eac44367f95c45082498bd` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `childCreatedAt` | 必需 | `number` | +| `childId` | 必需 | `string` | +| `label` | 必需 | `string` | +| `mode` | 必需 | `"continuable"` | +| `version` | 必需 | `0` | + + + +### `{ childCreatedAt, childId, label?, mode, … }` + +SHA-256: `5d542ac7bdf13310c46e1a884dec9fb18ad8c6e153cff207e639cd7bf9d7e694` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `childCreatedAt` | 必需 | `number` | +| `childId` | 必需 | `string` | +| `label` | 可选 | `string` | +| `mode` | 必需 | `"one-shot"` | +| `version` | 必需 | `0` | + + + +### `{ code, name, reason? }` + +SHA-256: `a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735` + +来源:[`packages/core/session/src/types.ts:370`](../packages/core/session/src/types.ts) · [`packages/core/tools/src/types.ts:24`](../packages/core/tools/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `code` | 必需 | `string` | +| `name` | 必需 | `string` | +| `reason` | 可选 | `string` | + + + +### `{ commandId, kind, sourceEventSeq?, text? }` + +SHA-256: `5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51` + +来源:[`packages/interaction/commands/src/types.ts:112`](../packages/interaction/commands/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `commandId` | 必需 | `string` | +| `kind` | 必需 | [`union (2 variants)`](#persistence-type-sha256-1ab2ef1296f157ba96998f179bb5daa9d21a82480da2901127aeab2730797c92) | +| `sourceEventSeq` | 可选 | `number` | +| `text` | 可选 | `string` | + + + +### `{ compactionId, error?, sourceCommandId?, turn }` + +SHA-256: `ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2` + +来源:[`packages/compaction/compaction/src/types.ts:72`](../packages/compaction/compaction/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `compactionId` | 必需 | `string` | +| `error` | 可选 | `string` | +| `sourceCommandId` | 可选 | `string` | +| `turn` | 必需 | [`OptionalSessionSeq`](#persistence-type-sha256-3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f) | + + + +### `{ compactionId, llmStreamCall, maxTokens?, model, … }` + +SHA-256: `9ff2ad8dddb836f75e8f6197fff2371323dfc396c3c6fb667e6e0b42fda79a5c` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `compactionId` | 必需 | `string` | +| `llmStreamCall` | 必需 | `true` | +| `maxTokens` | 可选 | `number` | +| `model` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `rawOutput` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `shadowedRange` | 必需 | [`{ end, start }`](#persistence-type-sha256-9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2) | +| `shadowedSeqs` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `shadowedTokenCount` | 必需 | `number` | +| `sourceCommandId` | 可选 | `string` | +| `summary` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `usage` | 可选 | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | + + + +### `{ compactionId, maxTokens?, model, provider, … }` + +SHA-256: `3aa261c8516b5c955ed12080e6257a56cbe513f6c9f0ac9274c12e96c196ebca` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `compactionId` | 必需 | `string` | +| `maxTokens` | 可选 | `number` | +| `model` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `rawOutput` | 可选 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `shadowedRange` | 必需 | [`{ end, start }`](#persistence-type-sha256-9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2) | +| `shadowedSeqs` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `shadowedTokenCount` | 必需 | `number` | +| `sourceCommandId` | 可选 | `string` | +| `summary` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-bb72d86bc9ef0b3908bfa57ef98ccccae24d67d945c9f6869ca3cb8577889e75) | +| `usage` | 可选 | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | + + + +### `{ compactionId, sourceCommandId?, turn }` + +SHA-256: `3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f` + +来源:[`packages/compaction/compaction/src/types.ts:24`](../packages/compaction/compaction/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `compactionId` | 必需 | `string` | +| `sourceCommandId` | 可选 | `string` | +| `turn` | 必需 | [`OptionalSessionSeq`](#persistence-type-sha256-3bd652ebfa8726b3ce3937a4f1bd2759e02f86b3a08a20f9e41a8513656fbc5f) | + + + +### `{ decision, durationMs, exitCode?, handlerId, … }` + +SHA-256: `8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141` + +来源:[`packages/hooks/hook-protocol/src/types.ts:31`](../packages/hooks/hook-protocol/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `decision` | 必需 | `string` | +| `durationMs` | 必需 | `number` | +| `exitCode` | 可选 | `number` | +| `handlerId` | 必需 | `string` | +| `point` | 必需 | `string` | +| `stderrSummary` | 可选 | `string` | +| `turn` | 必需 | `number` | + + + +### `{ delayMs, failure, maxRetries, mode, … }` + +SHA-256: `cdee10e87dbed8440d8b6935888624884878efc7af95402e94171b29f173dced` + +来源:[`packages/llm/llm-retry/src/types.ts:17`](../packages/llm/llm-retry/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `delayMs` | 必需 | `number` | +| `failure` | 必需 | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `maxRetries` | 必需 | `number` | +| `mode` | 必需 | `"normal"` | +| `policyKey` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `retry` | 必需 | `number` | +| `retryId` | 必需 | `string` | +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | + + + +### `{ delayMs, failure, mode, policyKey, … }` + +SHA-256: `374fdd68aee5ff844e378c0cbdd961d247a0f22e4ade0bb03d800cd2a46a2b8b` + +来源:[`packages/llm/llm-retry/src/types.ts:30`](../packages/llm/llm-retry/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `delayMs` | 必需 | `number` | +| `failure` | 必需 | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `mode` | 必需 | `"always"` | +| `policyKey` | 必需 | `string` | +| `provider` | 必需 | `string` | +| `retry` | 必需 | `number` | +| `retryId` | 必需 | `string` | +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | + + + +### `{ description, name }` + +SHA-256: `83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693` + +来源:[`packages/skill/tool-skill/src/index.ts:40`](../packages/skill/tool-skill/src/index.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `description` | 必需 | `string` | +| `name` | 必需 | `string` | + + + +### `{ description, name }[]` + +SHA-256: `aba175fb20ffc71112c55efe70458ff5d7dbfb83501892b4ba8d077f0ea5d7ba` + +[`{ description, name }`](#persistence-type-sha256-83079c8a3f733ac3fa603eefa0fbb4737ca4d8b69e7e2e7298b60f9ac4098693) 的数组。 + + + +### `{ dialect, handlerId, matcher?, point, … }` + +SHA-256: `119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25` + +来源:[`packages/hooks/hook-protocol/src/types.ts:19`](../packages/hooks/hook-protocol/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `dialect` | 必需 | [`HookDialect`](#persistence-type-sha256-a6b41f5bede8094d7bf635be5d69b1bd7a25e006ca9cf9415bceb9322f1a7feb) | +| `handlerId` | 必需 | `string` | +| `matcher` | 可选 | `string` | +| `point` | 必需 | `string` | +| `turn` | 必需 | `number` | + + + +### `{ end, start }` + +SHA-256: `9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2` + +来源:[`packages/compaction/compaction/src/types.ts:38`](../packages/compaction/compaction/src/types.ts) · [`packages/compaction/compaction/src/types.ts:84`](../packages/compaction/compaction/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `end` | 必需 | `number` | +| `start` | 必需 | `number` | + + + +### `{ endSeq, op, startSeq }` SHA-256: `bcf0caf62d964b2fcf5404bd5c909cfa9a21c3f3c96e6b7e36d9e33565223825` @@ -6284,452 +5526,1848 @@ SHA-256: `bcf0caf62d964b2fcf5404bd5c909cfa9a21c3f3c96e6b7e36d9e33565223825` | `op` | 必需 | `"replace"` | | `startSeq` | 必需 | `number` | - + -### `"session/title"` +### `{ error, kind: "error" }` -SHA-256: `7a651f3b672c52fb615f22c0ce9cb3cc5b22aad92e6bbeefb0808fd7b9233a50` +SHA-256: `79650cfa10aa3c52440328d85e8a25f0ffadc8d7efd784e3c0819d8bb74a1985` -`"session/title"` +来源:[`packages/core/session/src/types.ts:211`](../packages/core/session/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `error` | 必需 | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `kind` | 必需 | `"error"` | -### `"session/title-llm-request"` + -SHA-256: `587bb11da730e06aa52b62c087d217d6f8f22459b25f31cb9e1e1baf17944e5e` +### `{ error?, message, meta?, step, … }` -`"session/title-llm-request"` +SHA-256: `356aad27134a0e31af67c994ff8b9e4b91acfb6c4917b3bc1f7a62bbf82794d5` - +来源:[`packages/core/session/src/types.ts:362`](../packages/core/session/src/types.ts) -### `"set"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `error` | 可选 | [`{ code, name, reason? }`](#persistence-type-sha256-a81059ca06999da1e712414520c2c65e491d052fcf9640fae20aa38f0a5dc735) | +| `message` | 必需 | [`ToolResultMessage`](#persistence-type-sha256-1b573e2d5c094fa87e2a8bf409ddd4ac5ba92a123085e168de44b9ccdbd5244c) | +| `meta` | 可选 | [`JsonValue`](#persistence-type-sha256-c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6) | +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | -SHA-256: `b765ee31033cea463863faf3fc6a0a1b85c47c6a2f13fe1ce833abe56105114b` + -`"set"` +### `{ failure, kind: "aborted" }` - +SHA-256: `8e31bb958e9b015e6f8407eaade32217068159e816f3cc99c3ad76eb889732e0` -### `"skill-catalog"` +来源:[`packages/llm/llm/src/types.ts:147`](../packages/llm/llm/src/types.ts) -SHA-256: `6ebcc2dbec9f2dabca9f668ae6d39e877899b180740570f453409db339221df3` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `failure` | 必需 | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `kind` | 必需 | `"aborted"` | -`"skill-catalog"` + - +### `{ failure, kind: "error" }` -### `"skill-invocation"` +SHA-256: `693f4952fb5565da96c06bace8924b098ac2fbc915fde0ff8019701183abc057` -SHA-256: `1922cd79a70806c17758185a6ef0458bc1fb3900363906733421c16414da2509` +来源:[`packages/llm/llm/src/types.ts:148`](../packages/llm/llm/src/types.ts) -`"skill-invocation"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `failure` | 必需 | [`LlmFailure`](#persistence-type-sha256-5f2117d1856a5ab43c28371faa978ebfaa48f8c7d734ea3fc94842210df83dca) | +| `kind` | 必需 | `"error"` | - + -### `"snapshot"` +### `{ header, reason, startsSeries? }` -SHA-256: `6f9e00383836275e46c0a9915767f9bb561be5fc30aae490174908a93e99a912` +SHA-256: `2f0aefb72ab453c4bf21a6687f436775d359dc6f8f10410fd4c0615b20bd9d76` -`"snapshot"` +来源:[`packages/core/session/src/types.ts:377`](../packages/core/session/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `header` | 必需 | [`EpochHeader`](#persistence-type-sha256-c55a891c7aac496de6ee64c91c1fb65728c977314013033e42c863428aada854) | +| `reason` | 必需 | [`RequestHeaderReason`](#persistence-type-sha256-530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6) | +| `startsSeries` | 可选 | `true` | -### `"step/end"` + -SHA-256: `c219efbdfd53b836786202ab4532913d555798f0a8615a4e9629736e3799fb70` +### `{ height, width }` -`"step/end"` +SHA-256: `0f46153645c297846a3fad3911636659ca4717a5e7d71c9f50bffacd312115ef` - +来源:[`packages/attachment/attachment/src/types.ts:28`](../packages/attachment/attachment/src/types.ts) -### `"step/start"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `height` | 必需 | `number` | +| `width` | 必需 | `number` | -SHA-256: `2c64d4bc7264fd3f8bed47e96ab8a593bce05a1e4e1c436dcd244a3b7e0c2a9d` + -`"step/start"` +### `{ id, outcome }` - +SHA-256: `93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9` -### `"stop"` +来源:[`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts) -SHA-256: `57f3f606ff8b6c84d9c443faace9d1dd10cca0354f37a4f515ef075f7c351b90` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `id` | 必需 | `string` | +| `outcome` | 必需 | [`ApprovalOutcome`](#persistence-type-sha256-930c1cd289def119d443e19dd90008916bf035f0a4d23e07241e7f050f2b89b7) | -`"stop"` + - +### `{ ignorable?, seq, sourceEventSeqs?, surfaceOp, … }` -### `string` +SHA-256: `998f22585a5d73ec005365e203f07fc3b3a029e82323fdda3fd7f13b0a9639d0` -SHA-256: `4cd48f3e5108bd6ebedf7301c3638839b8b2b9db8dbd493974177fbdeb91a01b` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `sourceEventSeqs` | 可选 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | 必需 | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | 必需 | `number` | +| `type` | 必需 | `string` | -来源:[`packages/api/session-controller/src/types.ts:380`](../packages/api/session-controller/src/types.ts) · [`packages/attachment/attachment/src/brand.ts:6`](../packages/attachment/attachment/src/brand.ts) · [`packages/compaction/compaction/src/brand.ts:4`](../packages/compaction/compaction/src/brand.ts) · [`packages/core/session/src/types.ts:19`](../packages/core/session/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:20`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:32`](../packages/experimental/agent-team/src/types.ts) · [`packages/experimental/agent-team/src/types.ts:8`](../packages/experimental/agent-team/src/types.ts) · [`packages/feedback/message-feedback/src/types.ts:14`](../packages/feedback/message-feedback/src/types.ts) · [`packages/goal/goal/src/types.ts:17`](../packages/goal/goal/src/types.ts) · [`packages/interaction/commands/src/brand.ts:31`](../packages/interaction/commands/src/brand.ts) · [`packages/interaction/user-approval/src/types.ts:17`](../packages/interaction/user-approval/src/types.ts) · [`packages/llm/llm-retry/src/brand.ts:4`](../packages/llm/llm-retry/src/brand.ts) · [`packages/llm/llm/src/brand.ts:16`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:31`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:43`](../packages/llm/llm/src/brand.ts) · [`packages/llm/llm/src/brand.ts:67`](../packages/llm/llm/src/brand.ts) · [`packages/schedule/schedule/src/types.ts:10`](../packages/schedule/schedule/src/types.ts) · [`packages/session/session-title/src/index.ts:42`](../packages/session/session-title/src/index.ts) · [`packages/session/session-title/src/types.ts:17`](../packages/session/session-title/src/types.ts) · [`packages/webhook/webhook/src/brand.ts:12`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:6`](../packages/webhook/webhook/src/brand.ts) · [`packages/webhook/webhook/src/brand.ts:9`](../packages/webhook/webhook/src/brand.ts) · [`packages/workflow/workflow/src/types.ts:13`](../packages/workflow/workflow/src/types.ts) + -`string` +### `{ ignorable?, seq, surfaceOp, time, … }` - +SHA-256: `7af85bf70d4eafce63e739adae38ea85501e68df3a0e22f97f3a0be90fd9e4cb` -### `"subagent"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `surfaceOp` | 必需 | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | 必需 | `number` | +| `type` | 必需 | `string` | -SHA-256: `aacda84a69739238aa782eea902d3073017d9d74b9808de2bf5a83c9738cbdc6` + -`"subagent"` +### `{ ignorable?, seq, time, type }` - +SHA-256: `e3e77b26f0148755a505f5b8ea843a3be117827d4703bb5754d9dc8ddbef521f` -### `"subagent-settled"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `string` | -SHA-256: `bf16d2e98a7f13894ded2cffe5ce857bf473954a0e3c0ed9bc7739e2e1c7b78a` + -`"subagent-settled"` +### `{ inherited? }` - +SHA-256: `17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3` -### `"subagent/catalog"` +来源:[`packages/core/session/src/types.ts:414`](../packages/core/session/src/types.ts) -SHA-256: `44c8c77aa9aa100b0d74d2deee85474b29faa6eee0ac0f662f7abe9931ddd7f2` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `inherited` | 可选 | `true` | -`"subagent/catalog"` + - +### `{ inserted, outcome?, removedCount?, start, … }` -### `"subagent/descriptor"` +SHA-256: `a6a195c1b4a906d953d24ab5864c9f1881d545460e080a51144adfc9cb058cfe` -SHA-256: `5ebce1317eacd2c148456627a09668e927ee15c204f0643f5ea76b46b54a2647` +来源:[`packages/core/agent/src/types.ts:87`](../packages/core/agent/src/types.ts) -`"subagent/descriptor"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `inserted` | 必需 | [`UserMessage[]`](#persistence-type-sha256-300341f890f7b9506a1749fff4fa5239d16ea1c63ff6b15851acb03c20f3b48d) | +| `outcome` | 可选 | `"canceled"` | +| `removedCount` | 可选 | `number` | +| `start` | 必需 | `number` | +| `target` | 必需 | [`InboxTarget`](#persistence-type-sha256-96f4a9c81fc0f940ef71528a8cc66731ae4cf1f40d79680c5fe3c39f96d7723c) | - + -### `"subagent/model-selection-policy"` +### `{ interrupted?, message, step, stream, … }` -SHA-256: `0a8a062bc9c3c0d97fd97742262f2ea53dd32297f834e81114870d38ac3dc6da` +SHA-256: `77b8491f946edfc8cc77ebae3ba49183759da31ba2dfa83d4c9e9e618c4b91d2` -`"subagent/model-selection-policy"` +来源:[`packages/core/session/src/types.ts:328`](../packages/core/session/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `interrupted` | 可选 | `true` | +| `message` | 必需 | [`AssistantMessage`](#persistence-type-sha256-e50b0a3ed8e6c80b672e4f855c91984f03b5c3fdd5d475bf171171f391a86c83) | +| `step` | 必需 | `number` | +| `stream` | 必需 | [`AssistantStreamRecord[]`](#persistence-type-sha256-26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346) | +| `turn` | 必需 | `number` | +| `usage` | 可选 | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | -### `"success"` + -SHA-256: `511801b0a6470d98566e8385d3dffddb2b67f79fcf73ed6056f46c3cc0a245a7` +### `{ kind: "aborted", reason }` -`"success"` +SHA-256: `0a30c3be336cdd4f8f34e66543a3d46d611c43986edd9b3ce6cbb9b721d3b5d3` - +来源:[`packages/core/session/src/types.ts:203`](../packages/core/session/src/types.ts) -### `"system"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"aborted"` | +| `reason` | 必需 | [`TurnEndCancelCause`](#persistence-type-sha256-1f8c126cfab3df812cd115cfc23e3256f0fa2383400f4ce91ecad313577e59b0) | -SHA-256: `8af841fc9b265ade3441caf9fe40dd24db24226befba48150e6d0eeccc1389c3` + -`"system"` +### `{ kind: "blocked" }` - +SHA-256: `023a355b2be0d688fb6e4df8388dadb942761d46cfe96d0f499aae9631a159d4` -### `"system/message"` +来源:[`packages/core/session/src/types.ts:205`](../packages/core/session/src/types.ts) -SHA-256: `1c5a58f4599bd4a9711712551ffe2442a5e5fcd0758bafe630cc4ead850bdaa7` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"blocked"` | -`"system/message"` + - +### `{ kind: "completed" }` -### `"task-result"` +SHA-256: `b6ef9c6210be8350cd465f485cf520031fffa6bf3809c61a1e713e834c5982d0` -SHA-256: `f05fb85e715af4ab4de0b6ba111166dd0435bd8bb74a0fa0f32b9d174113fc7c` +来源:[`packages/core/session/src/types.ts:201`](../packages/core/session/src/types.ts) -`"task-result"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"completed"` | - + -### `"team-message"` +### `{ kind: "disposed" }` -SHA-256: `2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c` +SHA-256: `4bb451330ff699f36b45539ceb0eb2606ead72084e2c5bb637c36cc80e2252db` -`"team-message"` +来源:[`packages/core/session/src/types.ts:192`](../packages/core/session/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"disposed"` | -### `"team/member"` + -SHA-256: `18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0` +### `{ kind: "fallback" }` -`"team/member"` +SHA-256: `1b5649238876e28811e80f10ec67a00c197ad3babd4ecc61a22b09064b88c597` - +来源:[`packages/session/session-title/src/types.ts:29`](../packages/session/session-title/src/types.ts) -### `"team/message/delivered"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"fallback"` | -SHA-256: `a8a2b9011fc067862df7ce40748868467e5778283d7ac193c13f77684a914c57` + -`"team/message/delivered"` +### `{ kind: "forked" }` - +SHA-256: `ec8b5ff7c77ca6893ac7ba5a0c5b2aefeb52f12c64450b7359660c2a7e8a53d7` -### `"team/message/queued"` +来源:[`packages/core/session/src/types.ts:227`](../packages/core/session/src/types.ts) -SHA-256: `4e011753f8263f436efaabfbb3b4db53a98fc55342c5ded2daf7208b217be159` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"forked"` | -`"team/message/queued"` + - +### `{ kind: "hook" }` -### `"team/task"` +SHA-256: `6c5a37d42ebdb12db4410699259335f1e149e3a0260425684c00b153afc8990d` -SHA-256: `b57ae1b37e52bee0a21cbdace168dc6a15582bcda8c306dad962c5dcc8a8e28b` +来源:[`packages/core/session/src/types.ts:191`](../packages/core/session/src/types.ts) -`"team/task"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"hook"` | +| `reason` | 必需 | `string` | - + -### `"text"` +### `{ kind: "interrupted" }` -SHA-256: `4e44c9118152f6829634bfd508e47669ab0497caffa380c94b4be91f9390d35d` +SHA-256: `56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23` -`"text"` +来源:[`packages/core/session/src/types.ts:220`](../packages/core/session/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"interrupted"` | -### `"text-chunks"` + -SHA-256: `f9cfc89e8fe085b4fcc9cd32b74b6f103608c54d7d8cd97b47c01de34f252ba3` +### `{ kind: "legacy" }` -`"text-chunks"` +SHA-256: `eaa71be0fbf0f702df8ea6c11d0aa2f9782263d45a10d0fb14eda662f4bfe04c` - +来源:[`packages/core/session/src/types.ts:195`](../packages/core/session/src/types.ts) -### `"text-delta"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"legacy"` | -SHA-256: `5abab3a27fd2736660ecddd94b28d6bbf114986dd894880153bd1be3ccacb563` + -`"text-delta"` +### `{ kind: "max-tokens" }` - +SHA-256: `ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7` -### `"todo/write"` +来源:[`packages/core/session/src/types.ts:213`](../packages/core/session/src/types.ts) · [`packages/llm/llm/src/types.ts:146`](../packages/llm/llm/src/types.ts) -SHA-256: `af0750d32d97d47b12b7361a587db41894b17e04c9a805fe212f0114aa2248c7` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"max-tokens"` | -`"todo/write"` + - +### `{ kind: "parent" }` -### `"tool"` +SHA-256: `6c03546143cdf6ae88f1745ac98c5139efa1588d1415249bbc5f3104d32ab800` -SHA-256: `a13d8f379222ece8a02a86efe4c8334af4f108ecb3034b38c0a42bb3046e6847` +来源:[`packages/core/session/src/types.ts:190`](../packages/core/session/src/types.ts) -`"tool"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"parent"` | - + -### `"tool-call"` +### `{ kind: "plugin" }` -SHA-256: `1f0133217eeeffd8d387baf1ec8ed9856e719bcd999dc08e48624cba96d75fd7` +SHA-256: `0ddab4577db37a3e0d9e3a91761735c8ef6f5629d526ab8ecaeeea19c097c8f8` -`"tool-call"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | - + -### `"tool-call-chunks"` +### `{ kind: "plugin", form: "catalog" }` -SHA-256: `616f93a5047de668e1c30d57b1786abd76beeb4123599637ec1dc5290320ede5` +SHA-256: `2f90a7b3646fea3e677bd7b4000aa96f3b8964f107b614e204e11ad4051c24fc` -`"tool-call-chunks"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"catalog"` | +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | - + -### `"tool-call-delta"` +### `{ kind: "plugin", form: "instructions" }` -SHA-256: `9b4fd974c124c83743efe030ba4e1250e087505f3f74588716a521fb8d453267` +SHA-256: `dda6e111a8ccfc12f6e742e977a1a4e3549e8c03732a5ff6c8d7c3d4bcb7a412` -`"tool-call-delta"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"instructions"` | +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | - + -### `"tool-calls"` +### `{ kind: "plugin", form: "notice" }` -SHA-256: `6c1cccb433ddc153facb380c7dda956237ba5c31f8a532a69142dc277890cc9b` +SHA-256: `b4d298d90c798fa4d1f5b030ce3ce8031c4c41beafdb05323bec8b2a06903b43` -`"tool-calls"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"notice"` | +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | +| `summary` | 必需 | `string` | - + -### `"tool-result"` +### `{ kind: "plugin", form: "recall" }` -SHA-256: `e5244812c495a80c2e78ba2c2690dca5f6b58ea8d3fe5531ff94a6f9ac5e5d66` +SHA-256: `85e1bd563d6c80c1f377f99f91103fec4e315148a7330f3b3dae7c2d04e33b01` -`"tool-result"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"recall"` | +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | - + -### `"tool-workflow/agent-end"` +### `{ kind: "plugin", form: "relay" }` -SHA-256: `5d17f27a1ef9f7026c0232714adf7573961536d75f3303ca97973975f5af170e` +SHA-256: `2ce7ef3b3daebf95815c7ae454a751d3e67ca7a22e2e0734fe2942df393bb66c` -`"tool-workflow/agent-end"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"relay"` | +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | - + -### `"tool-workflow/agent-start"` +### `{ kind: "plugin", form: "snapshot" }` -SHA-256: `ad92f473a03ae72599ff26c86e897c25e16269519ad2a87340f0bea946517af8` +SHA-256: `e8d26e6993445743e6c4342c31b284c7d8f5574369abdd6021183af1a6b3538f` -`"tool-workflow/agent-start"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `form` | 必需 | `"snapshot"` | +| `kind` | 必需 | `"plugin"` | +| `plugin` | 必需 | `string` | +| `sections` | 必需 | [`ContextSnapshotSection[]`](#persistence-type-sha256-c748fb42c80a120038a8c587af80ec39924803c401364db11c8974d5bf6d0262) | - + -### `"tool-workflow/run-end"` +### `{ kind: "provider" }` -SHA-256: `fe792a6cd430494503837e21e79f91677704ccdd9e870c679aabd7d43ed47ddd` +SHA-256: `b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812` -`"tool-workflow/run-end"` +来源:[`packages/session/session-title/src/types.ts:30`](../packages/session/session-title/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"provider"` | +| `model` | 可选 | [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) | +| `provider` | 必需 | `string` | -### `"tool-workflow/run-start"` + -SHA-256: `cdca80b8dad24d4e7b1d5a288a8475ba8d8d46be385bd2da85f122ee836f1670` +### `{ kind: "stop" }` -`"tool-workflow/run-start"` +SHA-256: `1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f` - +来源:[`packages/llm/llm/src/types.ts:144`](../packages/llm/llm/src/types.ts) -### `"tool/call"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"stop"` | -SHA-256: `c589e938cc0e4989df8b82abef6339de621f0dc4fe62c230d145b94996af7f92` + -`"tool/call"` +### `{ kind: "tool-calls" }` - +SHA-256: `287211846beea1eccb5f9acee00d20388a38fcb2e95858fa2332d6f58529379a` -### `"tool/ptc-dispatch"` +来源:[`packages/llm/llm/src/types.ts:145`](../packages/llm/llm/src/types.ts) -SHA-256: `fb5e0517050d2c6d40e5b8145db1f7c5ca7044d5d50fada6ff80e0b22c6ca973` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `kind` | 必需 | `"tool-calls"` | -`"tool/ptc-dispatch"` + - +### `{ kind: "user" }` -### `"tool/ptc-dispatch-start"` +SHA-256: `6a4f72e2e179e17b922f2a9392c0e1c8f8c707f32494372454850a3eb184a6e7` -SHA-256: `2aed07493b1c65b6d00de5586da1e743cf501684b9ad43a1765fb4007d4ea456` +来源:[`packages/api/session-controller/src/types.ts:385`](../packages/api/session-controller/src/types.ts) -`"tool/ptc-dispatch-start"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `clientTimeZone` | 可选 | `string` | +| `kind` | 必需 | `"user"` | +| `rpcId` | 必需 | `string` | - + -### `"tool/result"` +### `{ kind: "webhook", form: "notice" }` -SHA-256: `570e85022434613394418ad33e77e9f1f7a05699b33d0b62eae0677a638c3833` +SHA-256: `9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94` -`"tool/result"` +来源:[`packages/webhook/webhook/src/types.ts:74`](../packages/webhook/webhook/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `deliveryId` | 必需 | `string` | +| `form` | 必需 | `"notice"` | +| `kind` | 必需 | `"webhook"` | +| `provider` | 必需 | `string` | +| `ruleId` | 必需 | `string` | +| `source` | 必需 | `string` | +| `summary` | 必需 | `string` | -### `true` + -SHA-256: `dacf3d5f3e4ff619c1320e64a48dec5e7ecd7870bece65fbd449a0e63adfa521` +### `{ max_tokens, messages, model, tools }` -`true` +SHA-256: `930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731` - +来源:[`packages/web/web-search-deepseek/src/provider.ts:61`](../packages/web/web-search-deepseek/src/provider.ts) -### `"turn/end"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `max_tokens` | 必需 | `number` | +| `messages` | 必需 | [`tuple (1 positions)`](#persistence-type-sha256-b993441f8ce7d27b80e619e113e232ae8e62d3d5a8340f6bfe12d8c4c018e62f) | +| `model` | 必需 | `string` | +| `tools` | 必需 | [`tuple (1 positions)`](#persistence-type-sha256-4aed17ec726b5397c29f6cb4bcd7905dc1a12bb6140f1657f073cd24380f2af8) | -SHA-256: `4312134fc6f9cad507c31390bd3d147535492dd77621ec517c5e85f853d53a03` + -`"turn/end"` +### `{ member, teamId, version }` - +SHA-256: `b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1` -### `"turn/start"` +来源:[`packages/experimental/agent-team/src/types.ts:221`](../packages/experimental/agent-team/src/types.ts) -SHA-256: `0af3ecfb8c60d416fc40a7cc4fb2c4851a8e46608b2b38ab9e510670c971aa1f` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `member` | 必需 | [`TeamMemberSnapshot`](#persistence-type-sha256-6598cd6da253948d6b207c6374a45335804c79b576866d6215649c2d1bc85e25) | +| `teamId` | 必需 | `string` | +| `version` | 必需 | `2` | -`"turn/start"` + - +### `{ message, step, turn }` -### `"unavailable"` +SHA-256: `2074f40221b76c75fd314246db558965dc3477dfb440bcc952b1eedc9778e366` -SHA-256: `2c4c21f19f426a58f2dac914e34313aa43f8408972de857a486d1f086d5adb6c` +来源:[`packages/core/session/src/types.ts:317`](../packages/core/session/src/types.ts) -`"unavailable"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `message` | 必需 | [`SystemMessage`](#persistence-type-sha256-302b01ddddcbb3b16cfa3fba2a5d99f5082a55fbd9dc5c83a179a228b8a6a0ca) | +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | - + -### `unknown` +### `{ message, teamId, version }` -SHA-256: `bbc5696e3f13c758237b316e3cf08cda0b9fd51ffe672539883457769faa185d` +SHA-256: `0c3f4d2248d9bc9700e2d7253fa71aa9935f5c39af6f11de5727f08cccaf8383` -`unknown`:此声明未暴露存储值的内部字段。 +来源:[`packages/experimental/agent-team/src/types.ts:225`](../packages/experimental/agent-team/src/types.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `message` | 必需 | [`TeamMessageSnapshot`](#persistence-type-sha256-5b694f394d5e11609887a3ccfa82844935d49806c37e336b30be2186d649ab94) | +| `teamId` | 必需 | `string` | +| `version` | 必需 | `2` | -### `"usage"` + -SHA-256: `0bdaf9cb63594be4ef034b68901fffe792fe09d6d5f6bac42d7f56f6e7834fb9` +### `{ messageId, targetId, teamId, version }` -`"usage"` +SHA-256: `0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1` - +来源:[`packages/experimental/agent-team/src/types.ts:227`](../packages/experimental/agent-team/src/types.ts) -### `"user"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `messageId` | 必需 | `string` | +| `targetId` | 必需 | `string` | +| `teamId` | 必需 | `string` | +| `version` | 必需 | `2` | -SHA-256: `68f44f59e91c41395076cb77265981a601680ec8a381bbbeb6ab754ffdc94573` + -`"user"` +### `{ mode, source? }` - +SHA-256: `9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e` -### `"user/message"` +来源:[`packages/sandbox/sandbox-policy/src/session-mode.ts:33`](../packages/sandbox/sandbox-policy/src/session-mode.ts) -SHA-256: `de25352d2dc4196309bd84b5bac6319f6d5c898ea0e82bb5ae66c5738d0d426f` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `mode` | 必需 | [`SandboxMode`](#persistence-type-sha256-fab2bb09bc5e3b9db0685e8f5500b029af1a2b33e70bc703c1d5d0f596fbc1fd) | +| `source` | 可选 | `"delegation"` | -`"user/message"` + - +### `{ policy, source? }` -### `"web_search"` +SHA-256: `11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912` -SHA-256: `935c8d486292b13c87b57ca280eb8c58b5b2f5239be86fcd4334c33fdeb87682` +来源:[`packages/interaction/user-approval/src/index.ts:33`](../packages/interaction/user-approval/src/index.ts) -`"web_search"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `policy` | 必需 | [`ApprovalPolicy`](#persistence-type-sha256-05d2ae1e0c7f8770f83f9a09047afb39a335d8ac986df3193659aa1e581472cf) | +| `source` | 可选 | `"delegation"` | - + -### `"web_search_20250305"` +### `{ preset }` -SHA-256: `0116b1f89c05221d56b0ba35c83d302bf4857bc7277d247e9bbaf74b27d2c66e` +SHA-256: `8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad` -`"web_search_20250305"` +来源:[`packages/interaction/permission-presets/src/index.ts:57`](../packages/interaction/permission-presets/src/index.ts) - +| 属性 | 存在性 | 类型 | +|---|---|---| +| `preset` | 必需 | `string` | -### `"web/deepseek-search-llm-request"` + -SHA-256: `6f611bed14b2106542480c4a230b4a83baf76dc0d8ac0cd13319a7cb8dae7675` +### `{ reason, turn }` -`"web/deepseek-search-llm-request"` +SHA-256: `e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654` - +来源:[`packages/core/session/src/types.ts:292`](../packages/core/session/src/types.ts) -### `"webhook"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `reason` | 必需 | [`TurnEndReason`](#persistence-type-sha256-f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402) | +| `turn` | 必需 | `number` | -SHA-256: `db6c5246911d47a7969f6b4cb47c7d0dbbde75c402710b22ace3672fa97bebe0` + -`"webhook"` +### `{ role: "user" }` - +SHA-256: `9a2a9029f8d7ede05336980d8342737557f487b913bfd28853d0ab5214600ab5` -### `"workspace-write"` +来源:[`packages/web/web-search-deepseek/src/provider.ts:64`](../packages/web/web-search-deepseek/src/provider.ts) -SHA-256: `a3edd1efd1fef21b72c55e213c8a8b24196b091abde2b89db52be0b2aaae3cfa` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `content` | 必需 | [`tuple (1 positions)`](#persistence-type-sha256-8f6d609794bf5afc01d7ccf3e03811d32f4b8047f58a2c9a98db0154c2ad7cb9) | +| `role` | 必需 | `"user"` | -`"workspace-write"` + - +### `{ sessionFormatVersion?, sessionId, throughSeq }` -### `"workspace/changes"` +SHA-256: `8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52` -SHA-256: `8e8155594e07812356b67d732196dda894b0f9c91a5969d51612cf490b0a016d` +来源:[`packages/session/session-log-deepseek/src/types.ts:81`](../packages/session/session-log-deepseek/src/types.ts) -`"workspace/changes"` +| 属性 | 存在性 | 类型 | +|---|---|---| +| `sessionFormatVersion` | 可选 | `number` | +| `sessionId` | 必需 | `string` | +| `throughSeq` | 必需 | `number` | + + + +### `{ shadowedRange, shadowedSeqs, shadowedTokenCount }` + +SHA-256: `5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438` + +来源:[`packages/compaction/compaction/src/types.ts:82`](../packages/compaction/compaction/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `shadowedRange` | 必需 | [`{ end, start }`](#persistence-type-sha256-9e41386b3a0c9572b0d63078492ebb3997da7d3a830d44e0259418bd02f4bcb2) | +| `shadowedSeqs` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `shadowedTokenCount` | 必需 | `number` | + + + +### `{ step, stream, turn }` + +SHA-256: `0c6412d3ba5e41adfaa6929c7d4093f2d52d8598c03f35844fc0d55e3070a3b1` + +来源:[`packages/core/session/src/types.ts:342`](../packages/core/session/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `step` | 必需 | `number` | +| `stream` | 必需 | [`AssistantStreamRecord[]`](#persistence-type-sha256-26f3bb7529cfce1e3a0f1ededa365d8b426758ca0feeb0beabeee805f8bb8346) | +| `turn` | 必需 | `number` | + + + +### `{ step, turn }` + +SHA-256: `ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545` + +来源:[`packages/core/session/src/types.ts:294`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:296`](../packages/core/session/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `step` | 必需 | `number` | +| `turn` | 必需 | `number` | + + + +### `{ targets }` + +SHA-256: `477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028` + +来源:[`packages/compaction/compaction-image-offload/src/projection.ts:25`](../packages/compaction/compaction-image-offload/src/projection.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `targets` | 必需 | [`ImageOffloadTarget[]`](#persistence-type-sha256-9e2c06d8653585b33d72d5c1a80da79c8a24a88c284409bca15cc0f0ead5ebfb) | + + + +### `{ task, teamId, version }` + +SHA-256: `a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c` + +来源:[`packages/experimental/agent-team/src/types.ts:223`](../packages/experimental/agent-team/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `task` | 必需 | [`TeamTaskSnapshot`](#persistence-type-sha256-51edec100659da3a9bd9c3f6ba1180f5e64ec9a1585e5057080df45c180bd357) | +| `teamId` | 必需 | `string` | +| `version` | 必需 | `2` | + + + +### `{ todos }` + +SHA-256: `79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99` + +来源:[`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `todos` | 必需 | [`TodoItem[]`](#persistence-type-sha256-4b7ddaf3710b88ff9b8df66304f5f97bf03688fd19730eedc2e9535203c820ea) | + + + +### `{ turn }` + +SHA-256: `f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d` + +来源:[`packages/core/session/src/types.ts:283`](../packages/core/session/src/types.ts) · [`packages/deliverables/workspace-changes/src/types.ts:106`](../packages/deliverables/workspace-changes/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `turn` | 必需 | `number` | + + + + + +### `{ type: "agent-preset/selected" }` + +SHA-256: `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ agentPreset }`](#persistence-type-sha256-6e52dd55a1d48954ed5464ec46fe34d9eb65f709baabc9561e7a279910b0c406) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"agent-preset/selected"` | + + + + + +### `{ type: "agent/inbox/spliced" }` + +SHA-256: `646c2f1d243d3a78c5bc9305786fb340f5209c48a97e65f2a186cc5195491f3f` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ inserted, outcome?, removedCount?, start, … }`](#persistence-type-sha256-a6a195c1b4a906d953d24ab5864c9f1881d545460e080a51144adfc9cb058cfe) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"agent/inbox/spliced"` | + + + + + +### `{ type: "approval/asked" }` + +SHA-256: `3bfeb47b58606f4661904bc723da612782214c463d01e6d61cd6d6193d7374e1` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ callId?, id, reason?, toolName }`](#persistence-type-sha256-45f2a07ea94573123b6ae14db787a40062dec3834f36d8be92c523d40ba28448) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"approval/asked"` | + + + + + +### `{ type: "approval/decided" }` + +SHA-256: `bb1ab3d08f49a9f3b265f844cd78d5c49813062a7b34b54904b426f85d0ff6e3` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ id, outcome }`](#persistence-type-sha256-93cbbc5a7fd0b1aa1ff1b9a6bb5ec52b073f48e5a5200365c45c0cd54059e1b9) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"approval/decided"` | + + + + + +### `{ type: "approval/policy" }` + +SHA-256: `26718e15e7e395bce9642dba5bbe09b3b1a4ce2213d20d566cd9207d7fc5fb78` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ policy, source? }`](#persistence-type-sha256-11f70b595aa76897fc4e25a352bfa718c659f44b799e5aa14e84e5a38fe72912) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"approval/policy"` | + + + + + +### `{ type: "assistant/attempt" }` + +SHA-256: `c80c89da83c46db7a454f034c10f969e03cfb574859c7316e5bff683f5a14b0e` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ step, stream, turn }`](#persistence-type-sha256-0c6412d3ba5e41adfaa6929c7d4093f2d52d8598c03f35844fc0d55e3070a3b1) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"assistant/attempt"` | + + + + + +### `{ type: "assistant/message" }` + +SHA-256: `1169b301aaabcd992657b93ec93750c43175dda81ada5cac086f14f2eaaeed6d` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ interrupted?, message, step, stream, … }`](#persistence-type-sha256-77b8491f946edfc8cc77ebae3ba49183759da31ba2dfa83d4c9e9e618c4b91d2) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `surfaceOp` | 必需 | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | 必需 | `number` | +| `type` | 必需 | `"assistant/message"` | + + + +### `{ type: "block-end" }` + +SHA-256: `90c811b8c2668898515e69a24e82caffeb08517f9c7aa193867ff0380f3b535d` + +来源:[`packages/llm/llm/src/types.ts:431`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `block` | 必需 | [`ContentBlock`](#persistence-type-sha256-c7b24be059d34d08929593049a1a81eaa3855166aacfe9d7603c0bc8bb728d56) | +| `index` | 必需 | `number` | +| `type` | 必需 | `"block-end"` | + + + +### `{ type: "block-start" }` + +SHA-256: `647cb2e3aeb58e27d1d4d60011f208bb66dce257e8654193c533b47c4c22c253` + +来源:[`packages/llm/llm/src/types.ts:427`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `blockType` | 必需 | [`ContentBlockType`](#persistence-type-sha256-757013fff5879d73d5753d8d1120faab56110e88ac3932485ab7e034d9e9ce61) | +| `index` | 必需 | `number` | +| `type` | 必需 | `"block-start"` | + + + +### `{ type: "chunk" }` + +SHA-256: `c93b6f51b399607349b4bcc66b58e848a44250ffc1e2537207bd092dfff94192` + +来源:[`packages/llm/llm/src/assistant-stream.ts:44`](../packages/llm/llm/src/assistant-stream.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `chunk` | 必需 | [`StreamChunk`](#persistence-type-sha256-071d92b9dac661fcc826c678cf64d188f26fb93aab79c627b11a03acdd34dfca) | +| `time` | 必需 | `number` | +| `type` | 必需 | `"chunk"` | + + + + + +### `{ type: "command/done" }` + +SHA-256: `15196447222782e773eb943c92b18316ce96b9af0f0cfddb6e57ba8274ecc5ff` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ commandId, kind, sourceEventSeq?, text? }`](#persistence-type-sha256-5b6fb1f226ff56402db08a6aae82af76100b14056271875f69ec526a1ae05d51) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"command/done"` | + + + + + +### `{ type: "command/run" }` + +SHA-256: `37184378c6439257d105c4e2022d80fc9c3a3f7c7f6ac661b00bc9f18d871006` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ args?, commandId, name, source }`](#persistence-type-sha256-a853902cfab417b8f08aa51ad6855fea46f34ed4588a74e47403035111d0fb86) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"command/run"` | + + + + + +### `{ type: "compaction/end" }` + +SHA-256: `b0127044ab31a702bddfd785d345f5abd7a70876746e895ce443afa3e60ddf2d` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ compactionId, error?, sourceCommandId?, turn }`](#persistence-type-sha256-ca59530d1a4f3e191b4032bc4a20eded0d827db8b5a7efb27b3af9e9b456c6f2) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"compaction/end"` | + + + + + +### `{ type: "compaction/prune" }` + +SHA-256: `7f7fd5a6b0064f597534b29ff62ef26e786dffccf5e14f654a7d4fcea2c35f04` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ shadowedRange, shadowedSeqs, shadowedTokenCount }`](#persistence-type-sha256-5dd766ccd1702a1142ad8b4bd44f2242f8e8a6752669ad3de0a5d224329b1438) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"compaction/prune"` | + + + + + +### `{ type: "compaction/start" }` + +SHA-256: `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ compactionId, sourceCommandId?, turn }`](#persistence-type-sha256-3e4e7683b0192c9f0e6a75c59076108f017892cdb302a98032c2632fd79c356f) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"compaction/start"` | + + + + + +### `{ type: "compaction/summary" }` + +SHA-256: `f6f3f30109e9008fccf7da2a3268a63da8646b59dd7cf7b75bcd9cf08ac08a59` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`union (2 variants)`](#persistence-type-sha256-feb329074f0206ecc06d8a1aa0a0b3e2f47fd27524ba020fbc849ba63e938896) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"compaction/summary"` | + + + + + +### `{ type: "deliverables/presented" }` + +SHA-256: `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ callId, files, turn }`](#persistence-type-sha256-1528539c63db8b23506f0209a99ce77d8ad138adfbfcee3d4769b7382d93756c) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"deliverables/presented"` | + + + + + +### `{ type: "feedback/message-delete" }` + +SHA-256: `3ee93b06f3a125850337602bcdf155d2538c43a5c944ec55b1b3c365152d6796` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`MessageFeedbackDelete`](#persistence-type-sha256-7c6129b6961cf4b2a030f36c78d2b0a5be38617651a9b81322e054ee512bee06) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"feedback/message-delete"` | + + + + + +### `{ type: "feedback/message-put" }` + +SHA-256: `b5086d249e8502e9ead1d39156bb8d559bde7951cac0f14ce150345b4e42a2bf` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`MessageFeedbackPut`](#persistence-type-sha256-aa7bc2817014ca6c45719b1c193c5c131be718a0921f34345098ff250f444626) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"feedback/message-put"` | + + + + + +### `{ type: "feedback/record" }` + +SHA-256: `b54940ff095c17e874c5be03815f4c2145a256cf3a1d34dae4ab2f7769dfffe8` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`FeedbackRecord`](#persistence-type-sha256-7d54a5a5e629e2e7783bfac72683bcc5e969e9f43426b9289826aaf294ff6344) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"feedback/record"` | + + + +### `{ type: "finish" }` + +SHA-256: `a2b49331716ba0a7078b026d145306a70eae64b7313c3e6204bd931e75ec3bb1` + +来源:[`packages/llm/llm/src/types.ts:433`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `reason` | 必需 | [`FinishReason`](#persistence-type-sha256-5808e36c95355f0e745201b5db1b6bcec4ebf5adb75d3e82d7d59cc89635ab80) | +| `replayState` | 可选 | [`ReplayEnvelope`](#persistence-type-sha256-0acd94fe8794574c9ae72c7855ee16d29c546096d4af760d16d1225385764555) | +| `type` | 必需 | `"finish"` | + + + + + +### `{ type: "goal/change" }` + +SHA-256: `763c8a20af487263a0080548274f7437ef4a86e0ba8769127d1ced10a72c664d` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`GoalChangeMeta`](#persistence-type-sha256-7d226b9fd95b4ba213d4237c22e930a91c3c769c95ca7f92977b9d625ba13438) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"goal/change"` | + + + + + +### `{ type: "hook/invoked" }` + +SHA-256: `8a6e1ec9e8db346b0e02f027db73c07a94f067a26d40c1aef1abd09c47ce7ba0` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ dialect, handlerId, matcher?, point, … }`](#persistence-type-sha256-119abe2b9c0b2f46ecb31d82b9acba4d4b30e049f655e2475e8b4ae12d5a9e25) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"hook/invoked"` | + + + + + +### `{ type: "hook/result" }` + +SHA-256: `e75916628f3f10c2d50658bd143052a46285fbf1a9a700ba54947614603d26b4` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ decision, durationMs, exitCode?, handlerId, … }`](#persistence-type-sha256-8ad45ad053b4d89f8865c17cc9ff3b8748e86045f3f0fb816269a34af2619141) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"hook/result"` | + + + + + +### `{ type: "image/offload" }` + +SHA-256: `b222069eea2d768065161c1147b1f2c78c1b54328c84b3586ae5c8f91b8ed35e` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ targets }`](#persistence-type-sha256-477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"image/offload"` | + + + + + +### `{ type: "llm/retry" }` + +SHA-256: `525254db03b1d1e6b74cf55aced52817568331ac1f96c0818728910b6692e336` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`LlmRetryEventData`](#persistence-type-sha256-c170da8ab7c37635b10867b2571811d9e317ac3ec394e8ff8efe53f902fc41c1) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"llm/retry"` | + + + + + +### `{ type: "llm/retry-started" }` + +SHA-256: `48e5c9861f16ac07e78cb7b5ae9dabdf7bb85c58baed5a51b4ad275050ea58e3` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`LlmRetryStartedEventData`](#persistence-type-sha256-6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"llm/retry-started"` | + + + + + +### `{ type: "model/selection" }` + +SHA-256: `35203ba7ad5ef6f97d556b85df20ae98f04f09c65748cecdf8eefdb8b6405ffc` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`ModelSelection`](#persistence-type-sha256-f09e5e7acf5ff5ccd193ff2eeec015fa2ff7c29d98bc465f8c3302058d47e29b) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"model/selection"` | + + + + + +### `{ type: "permission/preset" }` + +SHA-256: `5c45bf4c544a7211dcd8ba6ba7e5f1bc39b49e7a9df9d5cbdc8e87c22771b37b` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ preset }`](#persistence-type-sha256-8a9c990773f798eac10ca8878e6bcc531ee080bc589cac956730e462cc6a09ad) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"permission/preset"` | + + + + + +### `{ type: "plan/mode" }` + +SHA-256: `a7cf43ce7c2a4c038feed1885cd7a00d5c6ee2d90a7e0d56b46f78a3e1ca327f` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ active }`](#persistence-type-sha256-20a57544bbf204dacd1ae6beb2ab29444365c3c869f2afdf489dcdcbc3d9c8c5) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"plan/mode"` | + + + +### `{ type: "reasoning-chunks" }` + +SHA-256: `71bb3254ec8f1e491ce63b762a7b5f18709de23aa4e8abcc8b886f4b6ce051dd` + +来源:[`packages/llm/llm/src/assistant-stream.ts:28`](../packages/llm/llm/src/assistant-stream.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `dt` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `index` | 必需 | `number` | +| `texts` | 必需 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `time0` | 必需 | `number` | +| `type` | 必需 | `"reasoning-chunks"` | + + + +### `{ type: "reasoning-delta" }` + +SHA-256: `2abb711460e6238d851c30f3e4bdd87a2aa1887ee70575b3d3b7b25610673095` + +来源:[`packages/llm/llm/src/types.ts:429`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `index` | 必需 | `number` | +| `text` | 必需 | `string` | +| `type` | 必需 | `"reasoning-delta"` | + + + + + +### `{ type: "request/context" }` + +SHA-256: `37cbc9cf06d494cfe5c67f078af1605eacb8e4c2c853e9e26455b73de0ee7ccf` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`RequestContext`](#persistence-type-sha256-b158f3ff6923714807c0d73882f0b05dc87f8fa85c9e90814852d48bbc866081) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"request/context"` | + + + + + +### `{ type: "request/header" }` + +SHA-256: `8ea13bcd983eab596dbfd41c5c2b62a0b318b71cd2a987a6fd752c6ced7e4489` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ header, reason, startsSeries? }`](#persistence-type-sha256-2f0aefb72ab453c4bf21a6687f436775d359dc6f8f10410fd4c0615b20bd9d76) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"request/header"` | + + + + + +### `{ type: "sandbox/mode" }` + +SHA-256: `516da4cdd6d2f1e5ce488e648578ca51f40e458f707b803e5b24de870e799415` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ mode, source? }`](#persistence-type-sha256-9890113e97dd3541787bfe6704f2b223d3a890b5325ca0acae2b0398909b413e) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"sandbox/mode"` | + + + + + +### `{ type: "schedule/change" }` + +SHA-256: `2a7f86849ae54b3398ee49661a757c4fcb59a6192b7036ee2ff514617e13fb42` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`ScheduleChange`](#persistence-type-sha256-e1d0e52dcd1855ffb803efc18f8f7b776c48d1c25757e8a75c0281fa298c02e1) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"schedule/change"` | + + + + + +### `{ type: "session-log-deepseek/delivery-accepted" }` + +SHA-256: `d63b8b8ffad9c02fd80c43a17df4f240c1fe8118ecca9de34f9d5871838ab5b9` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ sessionFormatVersion?, sessionId, throughSeq }`](#persistence-type-sha256-8bb8c3751a6ce64b61aba1ec7ae798c00a5803c4d868a0430873216c6569ed52) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"session-log-deepseek/delivery-accepted"` | + + + + + +### `{ type: "session/end-seed" }` + +SHA-256: `5e6db6e24948d4a853c71cb9fabd252ad051ce93d4672c1266cf837c1c17b84e` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ inherited? }`](#persistence-type-sha256-17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"session/end-seed"` | + + + + + +### `{ type: "session/title" }` + +SHA-256: `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`SessionTitleEventData`](#persistence-type-sha256-b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"session/title"` | + + + + + +### `{ type: "session/title-llm-request" }` + +SHA-256: `e0b5bf44c27bbfc6ab144239e3e4169c4d21146645e0e3121bbb359c3bc8591d` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`SessionTitleLlmRequestEventData`](#persistence-type-sha256-9fe0e77a7816b7fdb4b953ec0e2f0cd7bbd22c5de5c3567e612d1b20eb0992e6) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"session/title-llm-request"` | + + + + + +### `{ type: "step/end" }` + +SHA-256: `e0a787e6ec76c7c94fecbc501b489164ab0293db05bc947914077ad01e674f05` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ step, turn }`](#persistence-type-sha256-ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"step/end"` | + + + + + +### `{ type: "step/start" }` + +SHA-256: `4513e088d43e6c68425be30451b9f961cc264fe7318ca62681c41d4d78615986` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ step, turn }`](#persistence-type-sha256-ef11a3b7fa2033ae4279545ff8a8a2ee4e301b9b73e5b91654c48e6d08283545) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"step/start"` | + + + + + +### `{ type: "subagent/catalog" }` + +SHA-256: `ae1f7110feeec697b8cab42b68f7709aa7b3279764099dfb53c25890d2e5c871` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`SubagentCatalogEvent`](#persistence-type-sha256-3ac1196f59d5e9e0e9345122c8c403b102478b526404a2e591a38f613483321e) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"subagent/catalog"` | + + + + + +### `{ type: "subagent/descriptor" }` + +SHA-256: `b79ada42962cad0190a9d465805260567621fa3a4abd757eb31e6016b52d5ab5` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`SubagentDescriptorData`](#persistence-type-sha256-86d1d0e9cfebb240421187e3dc37fb71cc38a1501885cf32f8f9adef7b0a2bde) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"subagent/descriptor"` | + + + + + +### `{ type: "subagent/model-selection-policy" }` + +SHA-256: `a6567ccb2e530606b775371eb4fa31468d72084339968e8b0440a516a23b39dc` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ allowedModels }`](#persistence-type-sha256-0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"subagent/model-selection-policy"` | + + + + + +### `{ type: "system/message" }` + +SHA-256: `69becfb6b2d3fd5da91518089454cae8ef33f1835637ec44dde35dd077fd4bae` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ message, step, turn }`](#persistence-type-sha256-2074f40221b76c75fd314246db558965dc3477dfb440bcc952b1eedc9778e366) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `sourceEventSeqs` | 可选 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | 必需 | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | 必需 | `number` | +| `type` | 必需 | `"system/message"` | + + + + + +### `{ type: "team/member" }` + +SHA-256: `4fb59762612c3e3ac3a3bd4f84c9c148d3c3893bd422ba2b201cc039fabd49bc` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ member, teamId, version }`](#persistence-type-sha256-b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"team/member"` | + + + + + +### `{ type: "team/message/delivered" }` + +SHA-256: `48f9c19417a1abbedfa59f4667bba36b93ac2db407adf5e84cb3ba0de30942cb` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ messageId, targetId, teamId, version }`](#persistence-type-sha256-0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"team/message/delivered"` | + + + + + +### `{ type: "team/message/queued" }` + +SHA-256: `443371ec07a03a82a0e93d93abca3e70b03bca55ba5b01d507030fcb66e8fbb4` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ message, teamId, version }`](#persistence-type-sha256-0c3f4d2248d9bc9700e2d7253fa71aa9935f5c39af6f11de5727f08cccaf8383) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"team/message/queued"` | + + + + + +### `{ type: "team/task" }` + +SHA-256: `d595ec73b32b016a6055333c67a5d646032b22e672da1d4a09c5b1ae398a093a` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ task, teamId, version }`](#persistence-type-sha256-a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"team/task"` | + + + +### `{ type: "text-chunks" }` + +SHA-256: `e72269f931559e901e5e8fe1cfcbd0669fb795f43cc038ff39fba62f60403c33` + +来源:[`packages/llm/llm/src/assistant-stream.ts:21`](../packages/llm/llm/src/assistant-stream.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `dt` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `index` | 必需 | `number` | +| `texts` | 必需 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `time0` | 必需 | `number` | +| `type` | 必需 | `"text-chunks"` | + + + +### `{ type: "text-delta" }` + +SHA-256: `95080295115fbd83544520ba247b68a03790131f6a2eac323d388758cb542f65` + +来源:[`packages/llm/llm/src/types.ts:428`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `index` | 必需 | `number` | +| `text` | 必需 | `string` | +| `type` | 必需 | `"text-delta"` | + + + + + +### `{ type: "todo/write" }` + +SHA-256: `b978cff734e62143eb56c9125423ec275405eda969802d42aaf73ecb987d3b26` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ todos }`](#persistence-type-sha256-79ddc907312f97cf9553d4841e8b3fc937097bd8d97900a790efad3c05255e99) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"todo/write"` | + + + +### `{ type: "tool-call-chunks" }` + +SHA-256: `3860b4757d512a2869be833acb0faf834335b1b056bf3f83df5474dce95f8fa6` + +来源:[`packages/llm/llm/src/assistant-stream.ts:35`](../packages/llm/llm/src/assistant-stream.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `args` | 必需 | [`string[]`](#persistence-type-sha256-93c33d9687613293f8c95d46c4d922fe9ceae83b84c384beff5c3315abe005f2) | +| `dt` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `id` | 必需 | `string` | +| `index` | 必需 | `number` | +| `name` | 可选 | `string` | +| `time0` | 必需 | `number` | +| `type` | 必需 | `"tool-call-chunks"` | + + + +### `{ type: "tool-call-delta" }` + +SHA-256: `88a610b831be6d92612a464be5c7d0b88ec24d97bd299837bf74bf7672183c9a` + +来源:[`packages/llm/llm/src/types.ts:430`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `argumentsDelta` | 必需 | `string` | +| `id` | 必需 | `string` | +| `index` | 必需 | `number` | +| `name` | 可选 | `string` | +| `type` | 必需 | `"tool-call-delta"` | + + + + + +### `{ type: "tool-workflow/agent-end" }` + +SHA-256: `babf9ee4d1af62bf6c3a8103737f7a5e4e78ce179be835ce05a38803e15884b7` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`ToolWorkflowAgentEndData`](#persistence-type-sha256-c0ea97bc89dfc46fa94eab956f5c3ee6af2f964aa7db6327cb18b451f207bef7) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool-workflow/agent-end"` | + + + + + +### `{ type: "tool-workflow/agent-start" }` + +SHA-256: `5f26a6c20b37632f8f57729d171c671def4683d994ac6257a8dffcd855101627` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`ToolWorkflowAgentStartData`](#persistence-type-sha256-9a410ddf56792b2b7cd4a224a2e54dc4dee30a8e8e6b1c2b9a1d19992b217adc) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool-workflow/agent-start"` | + + + + + +### `{ type: "tool-workflow/run-end" }` + +SHA-256: `42e0916e0dda5f6d1e7bb05d8514717147c036a79c9f36085683469516c1fd3f` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`ToolWorkflowRunEndData`](#persistence-type-sha256-7f9365bae9fcb73e1e34061a1acfe0422c1a5fd351848cace9bebbe806f28462) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool-workflow/run-end"` | + + + + + +### `{ type: "tool-workflow/run-start" }` + +SHA-256: `c1f9e0405de6d18cabb9ee70782a027f9bbdc57e5abec9dcccdd56119e2e9058` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`ToolWorkflowRunStartData`](#persistence-type-sha256-a6da9ad5d42ae83a6833a8288b076688e8e0801633ea36cbdd8a30a6d9f3160c) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool-workflow/run-start"` | + + + + + +### `{ type: "tool/call" }` + +SHA-256: `3b1be838223869fe0a08210db85bf773796ed3f2373ac16555dff227cade0c48` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ arguments, callId, name, step, … }`](#persistence-type-sha256-e4c18e294232c3ba6c9f1999f168263cc55956147cfe4121720899be8e52edd1) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool/call"` | + + + + + +### `{ type: "tool/ptc-dispatch" }` + +SHA-256: `b33142af8176323ffbb20762541be81c1d51b60a60887803836e0b146e5bef0c` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`PtcDispatchEventData`](#persistence-type-sha256-8d2e5a3c4230e6ea6c0b5151f02241d0db02cd2551f2df1b6b9700cddcc0dca3) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool/ptc-dispatch"` | + + + + + +### `{ type: "tool/ptc-dispatch-start" }` + +SHA-256: `ec38b5949af8eacaf00df002f4acbe344f934f8a061e9cdc65a52a48e5f6dd93` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`PtcDispatchStartEventData`](#persistence-type-sha256-2fe5026daf14bd4ff2b7bfb7cf9791c302d9cbba06802178b6dfec00b892698f) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool/ptc-dispatch-start"` | + + + + + +### `{ type: "tool/result" }` + +SHA-256: `29af48b840d0cd9e48b6f50bf3b354f8f6340607c5b99220a48e74f60beac9e2` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ error?, message, meta?, step, … }`](#persistence-type-sha256-356aad27134a0e31af67c994ff8b9e4b91acfb6c4917b3bc1f7a62bbf82794d5) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `sourceEventSeqs` | 可选 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | 必需 | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | 必需 | `number` | +| `type` | 必需 | `"tool/result"` | + + + + + +### `{ type: "turn/end" }` + +SHA-256: `0f8512903d94f57a4748fa1a2092e64342856796684e6b8343db685b192745ce` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ reason, turn }`](#persistence-type-sha256-e481c46af3813e0010558e93f578b2986acd658404cec2d1679e3ac2a6c48654) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"turn/end"` | + + + + + +### `{ type: "turn/start" }` + +SHA-256: `aa0957eca50aeb28bcd2e6930b95809926edacb550c8c340ba526ba6b861b3d8` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ turn }`](#persistence-type-sha256-f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"turn/start"` | + + + +### `{ type: "usage" }` + +SHA-256: `f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515` + +来源:[`packages/llm/llm/src/types.ts:432`](../packages/llm/llm/src/types.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `type` | 必需 | `"usage"` | +| `usage` | 必需 | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) | + + + + + +### `{ type: "user/message" }` + +SHA-256: `314765bdff29c7862fb6ce820f1773563ba3094a680d163ea21180a2591b8578` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`UserMessage`](#persistence-type-sha256-4de5e7644130ed715ef6b5a4d86a87b30dca4096d1a6683c66acf6f7809379c7) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `sourceEventSeqs` | 可选 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) | +| `surfaceOp` | 必需 | [`SurfaceOp`](#persistence-type-sha256-335e242de1fcc17b6ca920fc420d71bec2d76e53e37955c00948b65ab77f05c5) | +| `time` | 必需 | `number` | +| `type` | 必需 | `"user/message"` | + + + + + +### `{ type: "web/deepseek-search-llm-request" }` + +SHA-256: `cf6e3aaf1e2de6480aa0157730a41b9a492108a55304100b0f7e112711dd4331` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`DeepSeekSearchLlmRequest`](#persistence-type-sha256-2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"web/deepseek-search-llm-request"` | + + + +### `{ type: "web_search_20250305" }` + +SHA-256: `2d11ca7b0d4493e244b74eba093227866b33249841e59a1e9bf56afed38604c3` + +来源:[`packages/web/web-search-deepseek/src/provider.ts:71`](../packages/web/web-search-deepseek/src/provider.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `max_uses` | 必需 | `number` | +| `name` | 必需 | `"web_search"` | +| `type` | 必需 | `"web_search_20250305"` | + + + + + +### `{ type: "workspace/changes" }` + +SHA-256: `e308ccf867a5398e316e0af8cb6ce238a8d33a63b9b384c8250a686786285f72` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| `data` | 必需 | [`{ turn }`](#persistence-type-sha256-f90eb4ab2d3897bc20c521a038e3119d581f791ec974b1a0004f63a8ab9e232d) | +| `ignorable` | 可选 | `true` | +| `seq` | 必需 | `number` | +| `time` | 必需 | `number` | +| `type` | 必需 | `"workspace/changes"` | + + + +### `{}` + +SHA-256: `0aa62ab51b36c0e64b134bd03ba8725d758744180a1a447da49beaad194f219f` + +| 属性 | 存在性 | 类型 | +|---|---|---| +| [`string`] | 索引签名 | `unknown`(不透明) | + + + +### `{}` + +SHA-256: `529e0ccd0e34079ab4ff21ed87f810cee0388246263bf22e8aba5986b56fae05` + +来源:[`packages/util/values/src/index.ts:4`](../packages/util/values/src/index.ts) + +| 属性 | 存在性 | 类型 | +|---|---|---| +| [`string`] | 索引签名 | [`JsonValue`](#persistence-type-sha256-c592ce75aab73fcab19c1d7845684c72cf402b78d2e1f2833a58ecf9f3598ed6) | diff --git a/docs/persistence-changes/README.i18n.yaml b/docs/persistence-changes/README.i18n.yaml index 27f2099f31..49fba696f5 100644 --- a/docs/persistence-changes/README.i18n.yaml +++ b/docs/persistence-changes/README.i18n.yaml @@ -2,5 +2,5 @@ # 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 docs/persistence-changes/README.md -README.md: 7eb46efe69e139c294ad76e1b584e2d7384151b5 -README.zh.md: d91cfff9e5010bfff92b905ce0f075e7e419eb52 +README.md: b4d8fdf4cc264e2d9f63188e461ecaa5599547dc +README.zh.md: 0ab14a9ccb315f57359eaf897d8366d39c96e458 diff --git a/docs/persistence-changes/README.md b/docs/persistence-changes/README.md index 7eb46efe69..b4d8fdf4cc 100644 --- a/docs/persistence-changes/README.md +++ b/docs/persistence-changes/README.md @@ -49,9 +49,12 @@ Every detected structural change requires an acknowledgement. Record creation an | Add an optional event-body property, including its complete subtree | `same-version` | | Make a required event-body property optional | `same-version` | | Add an ordinary event type | `same-version` | +| Add an explicitly qualified attribution kind to a user/developer source slot whose before and after schemas carry the same supported policy | `same-version` | | Make an optional property required, add a required property, change an existing type, or remove/rename a property or event | `version-bump` | | Change the Session header or event envelope | `version-bump` | +The extractor accepts an explicit `@persistenceSource` binding for a core-owned source property on a literal user or developer role; it does not infer a binding from an unannotated type. A producer qualifies its `MessageSourceMap` entry with `@persistenceAttribution`. Qualification promises that an unknown kind and its JSON metadata survive reading without the producer, and that the kind imposes no validation, replay, or authority requirement. A producer may inspect its own kind to resume duplicate suppression; other readers must preserve and derive the recorded messages without that projection. The recorded schema retains the binding, policy version, literal `kind` discriminator, preservation promise, and qualified kind set. Inventory format 2 stores those promises; extraction without a bound policy retains format 1. Session format versions are independent. Both compared snapshots must carry compatible policy state. Existing kind groups still receive ordinary structural comparison; removals, unmarked additions, policy changes, and unrelated breaking changes remain strict. Multiple context-form alternatives with the same wire kind form one group. + A same-version explanation states why old records can omit the addition and why older readers can ignore it without changing replay. For required-to-optional changes, it explains how readers handle an absent value. The checker validates the type classification; reviewers assess the explanation. A version-bump record includes the increasing header version in the same transition and follows the [Session-format procedure](../cookbook/adding-a-session-format-version.md). @@ -61,7 +64,7 @@ One baseline records the complete initial inventory. Later records use their pre Accepted records describe historical transitions; preserve their machine declarations and schema snapshots when adding a successor. An unaccepted terminal record can be refreshed explicitly; the command rejects baselines and records with dependants. The tree cannot establish review acceptance. Verification proves consistency within the tree, not that history was never rewritten. No Git ref, remote service, or released checkout supplies the baseline. -Digests describe declared persistence types, not runtime validation or behavior. Comments, source locations, alias names, and harmless declaration reordering do not affect them. Object fields, union alternatives, intersection operands, and index signatures can be reordered when their resolved types stay the same; tuple positions and numeric enum values remain significant. Catalog text and source locations may still change, so regenerate stale artifacts without adding an acknowledgement for an unchanged digest. Opaque types such as `unknown` expose no hidden structure to compare. Behavior-only changes and structures hidden inside opaque values are outside this mechanism's scope. The [decision](../../.agents/notes/implemented/process/2026-09-11-persistence-type-history.md) records these trade-offs. +Digests describe declared persistence types, not runtime validation or behavior. Ordinary comments, source locations, alias names, and harmless declaration reordering do not affect them. Compatibility annotations are recorded policy data and do affect digests. Unannotated version-1 snapshots retain their original normalization, fingerprints, and strict classification; policy-bearing graphs use a separate fingerprint domain. Object fields, union alternatives, intersection operands, and index signatures can be reordered when their resolved types stay the same; tuple positions and numeric enum values remain significant. Catalog text and source locations may still change, so regenerate stale artifacts without adding an acknowledgement for an unchanged digest. Opaque types such as `unknown` expose no hidden structure to compare. Behavior-only changes and structures hidden inside opaque values are outside this mechanism's scope. The [decision](../../.agents/notes/implemented/process/2026-09-11-persistence-type-history.md) records these trade-offs. ## Dev Note diff --git a/docs/persistence-changes/README.zh.md b/docs/persistence-changes/README.zh.md index d91cfff9e5..0ab14a9ccb 100644 --- a/docs/persistence-changes/README.zh.md +++ b/docs/persistence-changes/README.zh.md @@ -49,9 +49,12 @@ description: "审阅和维护已记录的会话持久化类型变更、对应 sc | 添加可选事件体属性,包括其完整子树 | `same-version` | | 将必选事件体属性改为可选 | `same-version` | | 添加普通事件类型 | `same-version` | +| 在前后 schema 均带有相同受支持策略的 user/developer 消息源字段中,添加显式声明为归属信息的 kind | `same-version` | | 将可选属性改为必选、添加必选属性、更改已有类型,或删除/重命名属性或事件 | `version-bump` | | 更改会话头或事件封装 | `version-bump` | +提取器接受核心拥有的 source 属性上针对 user 或 developer 字面量角色的显式 `@persistenceSource` 绑定,不会从未标记类型中推断绑定。生产者用 `@persistenceAttribution` 标记其 `MessageSourceMap` 成员。该标记承诺:读取器无需生产者即可保留未知 kind 及其 JSON 元数据,且该 kind 不引入校验、回放或权限要求。生产者可以检查自身 kind 来恢复去重状态;其他读取器必须无需该投影也能保留并派生已记录的消息。记录的 schema 保存绑定、策略版本、字面量 `kind` 判别字段、保留承诺及符合条件的 kind 集合。Inventory format 2 保存这些承诺;没有绑定策略的提取仍使用 format 1。Session 格式版本独立于此。比较双方的快照必须带有兼容的策略状态。已有 kind 分组仍进行常规结构比较;删除、未标记的添加、策略更改及无关破坏性变更继续采用严格规则。同一 wire kind 的多个上下文形式分支归为一组。 + 同版本说明须解释旧记录为何可以缺少新增内容,以及旧读取器为何可以忽略它而不改变回放。对于必选改可选的变更,说明须解释读取器如何处理缺失值。检查器验证类型分类;审阅者判断说明是否成立。升版本记录在同一转换中包含递增的头部版本,并遵循[会话格式流程](../cookbook/adding-a-session-format-version.zh.md)。 @@ -61,7 +64,7 @@ description: "审阅和维护已记录的会话持久化类型变更、对应 sc 已接受记录描述历史转换;添加后继时须保留其机器声明和 schema 快照。尚未接受的末端记录可以显式刷新;命令拒绝基线及被依赖的记录。目录本身无法证明审阅接受状态。验证证明目录内的一致性,不证明历史从未被改写。基线不依赖 Git 引用、远端服务或已发布版本的检出目录。 -摘要描述声明的持久化类型,不描述运行时验证或行为。注释、源码位置、别名名称和无语义变化的声明重排不影响摘要。对象字段、联合类型分支、交叉类型操作数和索引签名可以在解析类型不变时重排;元组位置和数字枚举值仍然影响摘要。目录文本和源码位置仍可能变化,因此应重新生成陈旧产物,无需为未变的摘要添加确认记录。`unknown` 等不透明类型不提供可比较的内部结构。纯行为变更以及不透明值中隐藏的结构不在本机制范围内。[决策记录](../../.agents/notes/implemented/process/2026-09-11-persistence-type-history.zh.md)说明这些取舍。 +摘要描述声明的持久化类型,不描述运行时验证或行为。普通注释、源码位置、别名名称和无语义变化的声明重排不影响摘要。兼容性标记是记录的策略数据,会影响摘要。不带标记的版本 1 快照保留原有规范化、指纹和严格分类;包含策略的图使用独立的指纹域。对象字段、联合类型分支、交叉类型操作数和索引签名可以在解析类型不变时重排;元组位置和数字枚举值仍然影响摘要。目录文本和源码位置仍可能变化,因此应重新生成陈旧产物,无需为未变的摘要添加确认记录。`unknown` 等不透明类型不提供可比较的内部结构。纯行为变更以及不透明值中隐藏的结构不在本机制范围内。[决策记录](../../.agents/notes/implemented/process/2026-09-11-persistence-type-history.zh.md)说明这些取舍。 ## 开发备注 diff --git a/docs/persistence-schema.json b/docs/persistence-schema.json index a93732a6c4..dd34ff78c7 100644 --- a/docs/persistence-schema.json +++ b/docs/persistence-schema.json @@ -13863,9 +13863,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[2]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:205" ] @@ -14789,9 +14787,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[1]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:203" ] @@ -14835,9 +14831,7 @@ } ] }, - "names": [ - "event:request/header.data.header.tools[0].parameters" - ], + "names": [], "sources": [] }, { @@ -14971,9 +14965,7 @@ } ] }, - "names": [ - "event:team/message/delivered.data" - ], + "names": [], "sources": [ "packages/experimental/agent-team/src/types.ts:227" ] @@ -15334,9 +15326,7 @@ } ] }, - "names": [ - "event:team/message/queued.data" - ], + "names": [], "sources": [ "packages/experimental/agent-team/src/types.ts:225" ] @@ -16217,9 +16207,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:342" ] @@ -16266,9 +16254,7 @@ } ] }, - "names": [ - "event:subagent/model-selection-policy.data" - ], + "names": [], "sources": [ "packages/subagent/tool-subagent/src/model-selection-state.ts:17" ] @@ -16304,10 +16290,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[1]", - "event:system/message.data.message.source[0]" - ], + "names": [], "sources": [] }, { @@ -16364,9 +16347,7 @@ } ] }, - "names": [ - "event:subagent/catalog.data[1]" - ], + "names": [], "sources": [] }, { @@ -16410,9 +16391,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].content[0][2].attachment.originalDimensions" - ], + "names": [], "sources": [ "packages/attachment/attachment/src/types.ts:28" ] @@ -16740,9 +16719,7 @@ } ] }, - "names": [ - "event:turn/end" - ], + "names": [], "sources": [] }, { @@ -17772,9 +17749,7 @@ } ] }, - "names": [ - "event:assistant/message" - ], + "names": [], "sources": [] }, { @@ -17838,9 +17813,7 @@ } ] }, - "names": [ - "event:hook/invoked.data" - ], + "names": [], "sources": [ "packages/hooks/hook-protocol/src/types.ts:19" ] @@ -17887,9 +17860,7 @@ } ] }, - "names": [ - "event:approval/policy.data" - ], + "names": [], "sources": [ "packages/interaction/user-approval/src/index.ts:33" ] @@ -18136,9 +18107,7 @@ } ] }, - "names": [ - "event:deliverables/presented" - ], + "names": [], "sources": [] }, { @@ -18264,9 +18233,7 @@ } ] }, - "names": [ - "event:command/done" - ], + "names": [], "sources": [] }, { @@ -18325,9 +18292,7 @@ } ] }, - "names": [ - "event:deliverables/presented.data" - ], + "names": [], "sources": [ "packages/deliverables/tool-present/src/types.ts:15" ] @@ -18410,9 +18375,7 @@ } ] }, - "names": [ - "event:session/end-seed.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:414" ] @@ -18731,9 +18694,7 @@ } ] }, - "names": [ - "event:command/done.data.kind" - ], + "names": [], "sources": [] }, { @@ -18758,9 +18719,7 @@ } ] }, - "names": [ - "event:session/title.data.source[0]" - ], + "names": [], "sources": [ "packages/session/session-title/src/types.ts:29" ] @@ -19276,9 +19235,7 @@ } ] }, - "names": [ - "event:session/title" - ], + "names": [], "sources": [] }, { @@ -19383,9 +19340,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6].reason[3]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:144" ] @@ -19435,9 +19390,7 @@ } ] }, - "names": [ - "event:deliverables/presented.data.files" - ], + "names": [], "sources": [] }, { @@ -20332,9 +20285,7 @@ } ] }, - "names": [ - "event:system/message.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:317" ] @@ -20361,9 +20312,7 @@ } ] }, - "names": [ - "event:plan/mode.data" - ], + "names": [], "sources": [ "packages/plan/plan-mode/src/index.ts:47" ] @@ -21771,9 +21720,7 @@ } ] }, - "names": [ - "event:system/message.data.message.source" - ], + "names": [], "sources": [] }, { @@ -22043,9 +21990,7 @@ } ] }, - "names": [ - "event:approval/policy" - ], + "names": [], "sources": [] }, { @@ -22903,10 +22848,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream", - "event:assistant/message.data.stream" - ], + "names": [], "sources": [] }, { @@ -23016,9 +22958,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6].reason[4]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:145" ] @@ -23535,9 +23475,7 @@ } ] }, - "names": [ - "event:tool/result" - ], + "names": [], "sources": [] }, { @@ -23816,9 +23754,7 @@ } ] }, - "names": [ - "event:schedule/change" - ], + "names": [], "sources": [] }, { @@ -23882,9 +23818,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[16].changes" - ], + "names": [], "sources": [] }, { @@ -23927,9 +23861,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[2]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:429" ] @@ -24016,10 +23948,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[6]", - "event:system/message.data.message.source[5]" - ], + "names": [], "sources": [] }, { @@ -24062,9 +23991,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request.data.body.tools[0]" - ], + "names": [], "sources": [ "packages/web/web-search-deepseek/src/provider.ts:71" ] @@ -24278,9 +24205,7 @@ } ] }, - "names": [ - "event:request/header.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:377" ] @@ -24364,10 +24289,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[3]", - "event:system/message.data.message.source[2]" - ], + "names": [], "sources": [] }, { @@ -25489,9 +25411,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted" - ], + "names": [], "sources": [] }, { @@ -27269,9 +27189,7 @@ } ] }, - "names": [ - "event:user/message" - ], + "names": [], "sources": [] }, { @@ -27355,10 +27273,7 @@ } ] }, - "names": [ - "event:feedback/message-put.data.item.category", - "event:feedback/record.data.category" - ], + "names": [], "sources": [] }, { @@ -27504,9 +27419,7 @@ } ] }, - "names": [ - "event:model/selection" - ], + "names": [], "sources": [] }, { @@ -27936,9 +27849,7 @@ } ] }, - "names": [ - "event:tool/result.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:362" ] @@ -28052,9 +27963,7 @@ } ] }, - "names": [ - "event:command/run" - ], + "names": [], "sources": [] }, { @@ -28163,9 +28072,7 @@ } ] }, - "names": [ - "event:llm/retry.data[1]" - ], + "names": [], "sources": [ "packages/llm/llm-retry/src/types.ts:30" ] @@ -28268,9 +28175,7 @@ } ] }, - "names": [ - "event:request/context" - ], + "names": [], "sources": [] }, { @@ -28355,9 +28260,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][2]" - ], + "names": [], "sources": [ "packages/llm/llm/src/assistant-stream.ts:35" ] @@ -28794,9 +28697,7 @@ } ] }, - "names": [ - "event:compaction/summary.data[1]" - ], + "names": [], "sources": [] }, { @@ -28987,9 +28888,7 @@ } ] }, - "names": [ - "event:tool/call" - ], + "names": [], "sources": [] }, { @@ -29029,8 +28928,6 @@ ] }, "names": [ - "event:compaction/end.data.turn", - "event:compaction/start.data.turn", "packages/core/session/src/types.ts#OptionalSessionSeq" ], "sources": [ @@ -29117,9 +29014,7 @@ } ] }, - "names": [ - "event:approval/asked" - ], + "names": [], "sources": [] }, { @@ -29367,9 +29262,7 @@ } ] }, - "names": [ - "event:compaction/start.data" - ], + "names": [], "sources": [ "packages/compaction/compaction/src/types.ts:24" ] @@ -29444,9 +29337,7 @@ } ] }, - "names": [ - "event:feedback/message-delete" - ], + "names": [], "sources": [] }, { @@ -29553,9 +29444,7 @@ } ] }, - "names": [ - "event:tool-workflow/run-end" - ], + "names": [], "sources": [] }, { @@ -29949,9 +29838,7 @@ } ] }, - "names": [ - "event:team/message/queued" - ], + "names": [], "sources": [] }, { @@ -30048,9 +29935,7 @@ } ] }, - "names": [ - "event:step/start" - ], + "names": [], "sources": [] }, { @@ -30090,9 +29975,7 @@ } ] }, - "names": [ - "event:approval/asked.data" - ], + "names": [], "sources": [ "packages/interaction/user-approval/src/types.ts:44" ] @@ -30143,9 +30026,7 @@ } ] }, - "names": [ - "event:image/offload.data" - ], + "names": [], "sources": [ "packages/compaction/compaction-image-offload/src/projection.ts:25" ] @@ -31232,9 +31113,7 @@ } ] }, - "names": [ - "event:session/title-llm-request.data.messages" - ], + "names": [], "sources": [] }, { @@ -31331,9 +31210,7 @@ } ] }, - "names": [ - "event:llm/retry-started" - ], + "names": [], "sources": [] }, { @@ -31420,9 +31297,7 @@ } ] }, - "names": [ - "event:team/message/delivered" - ], + "names": [], "sources": [] }, { @@ -31536,9 +31411,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request.data.body.tools" - ], + "names": [], "sources": [] }, { @@ -31592,9 +31465,7 @@ } ] }, - "names": [ - "event:todo/write.data.todos" - ], + "names": [], "sources": [] }, { @@ -31619,9 +31490,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[1].reason[3]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:192" ] @@ -33597,7 +33466,6 @@ ] }, "names": [ - "event:web/deepseek-search-llm-request.data.body.messages[0].content[0]", "packages/llm/llm/src/types.ts#TextBlock" ], "sources": [ @@ -33762,9 +33630,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[15].references[0]" - ], + "names": [], "sources": [ "packages/context/session-reference/src/types.ts:18" ] @@ -33924,9 +33790,7 @@ } ] }, - "names": [ - "event:team/member" - ], + "names": [], "sources": [] }, { @@ -33951,9 +33815,7 @@ } ] }, - "names": [ - "event:team/member.data.member.context" - ], + "names": [], "sources": [] }, { @@ -34060,9 +33922,7 @@ } ] }, - "names": [ - "event:sandbox/mode" - ], + "names": [], "sources": [] }, { @@ -34374,9 +34234,7 @@ } ] }, - "names": [ - "event:llm/retry" - ], + "names": [], "sources": [] }, { @@ -34427,10 +34285,7 @@ } ] }, - "names": [ - "event:tool/result.data.meta[5][0][6]", - "event:tool/result.data.meta[6]" - ], + "names": [], "sources": [ "packages/util/values/src/index.ts:4" ] @@ -34510,9 +34365,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[5]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:220" ] @@ -34691,9 +34544,7 @@ } ] }, - "names": [ - "SessionEventEnvelope" - ], + "names": [], "sources": [] }, { @@ -35299,9 +35150,7 @@ } ] }, - "names": [ - "event:command/done.data" - ], + "names": [], "sources": [ "packages/interaction/commands/src/types.ts:112" ] @@ -35385,9 +35234,7 @@ } ] }, - "names": [ - "event:permission/preset" - ], + "names": [], "sources": [] }, { @@ -35405,23 +35252,7 @@ } ] }, - "names": [ - "SessionEventEnvelope[39].sourceEventSeqs", - "SessionEventEnvelope[52].sourceEventSeqs", - "SessionEventEnvelope[55].sourceEventSeqs", - "event:assistant/attempt.data.stream[0][0].dt", - "event:assistant/attempt.data.stream[0][1].dt", - "event:assistant/attempt.data.stream[0][2].dt", - "event:compaction/prune.data.shadowedSeqs", - "event:compaction/summary.data[0].shadowedSeqs", - "event:compaction/summary.data[1].shadowedSeqs", - "event:image/offload.data.targets[0].imageIndexes", - "event:session/title-llm-request.data.messageSeqs", - "event:session/title.data.messageSeqs", - "event:system/message.sourceEventSeqs", - "event:tool/result.sourceEventSeqs", - "event:user/message.sourceEventSeqs" - ], + "names": [], "sources": [] }, { @@ -35492,9 +35323,7 @@ } ] }, - "names": [ - "event:subagent/catalog.data[0]" - ], + "names": [], "sources": [] }, { @@ -35549,9 +35378,7 @@ } ] }, - "names": [ - "event:compaction/prune.data" - ], + "names": [], "sources": [ "packages/compaction/compaction/src/types.ts:82" ] @@ -35617,9 +35444,7 @@ } ] }, - "names": [ - "event:session/end-seed" - ], + "names": [], "sources": [] }, { @@ -35779,9 +35604,7 @@ } ] }, - "names": [ - "event:tool-workflow/agent-start" - ], + "names": [], "sources": [] }, { @@ -35906,9 +35729,7 @@ } ] }, - "names": [ - "event:goal/change.data[0].operation" - ], + "names": [], "sources": [] }, { @@ -37076,9 +36897,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced" - ], + "names": [], "sources": [] }, { @@ -37152,9 +36971,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[0]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:427" ] @@ -37677,9 +37494,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6].reason[1]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:148" ] @@ -38318,9 +38133,7 @@ } ] }, - "names": [ - "event:system/message" - ], + "names": [], "sources": [] }, { @@ -38373,9 +38186,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[11]" - ], + "names": [], "sources": [ "packages/api/session-controller/src/types.ts:385" ] @@ -38515,9 +38326,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[1].reason[1]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:190" ] @@ -38567,9 +38376,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[1].reason[2]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:191" ] @@ -38638,9 +38445,7 @@ } ] }, - "names": [ - "event:request/header.data.header.tools" - ], + "names": [], "sources": [] }, { @@ -38665,9 +38470,7 @@ } ] }, - "names": [ - "event:agent-preset/selected.data" - ], + "names": [], "sources": [ "packages/preset/agent-presets/src/session.ts:28" ] @@ -39025,9 +38828,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][1]" - ], + "names": [], "sources": [ "packages/llm/llm/src/assistant-stream.ts:28" ] @@ -39080,10 +38881,7 @@ } ] }, - "names": [ - "event:tool/result.data.meta[5]", - "event:tool/result.data.meta[5][0][5]" - ], + "names": [], "sources": [] }, { @@ -39428,9 +39226,7 @@ } ] }, - "names": [ - "event:goal/change" - ], + "names": [], "sources": [] }, { @@ -40384,9 +40180,7 @@ } ] }, - "names": [ - "event:assistant/message.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:328" ] @@ -40462,9 +40256,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[3]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:211" ] @@ -40531,9 +40323,7 @@ } ] }, - "names": [ - "event:todo/write.data" - ], + "names": [], "sources": [ "packages/todo/tool-todo/src/types.ts:31" ] @@ -40638,9 +40428,7 @@ } ] }, - "names": [ - "SessionEventEnvelope[6]" - ], + "names": [], "sources": [] }, { @@ -41146,9 +40934,7 @@ } ] }, - "names": [ - "event:compaction/prune" - ], + "names": [], "sources": [] }, { @@ -41364,9 +41150,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[17].entries[0]" - ], + "names": [], "sources": [ "packages/skill/tool-skill/src/index.ts:40" ] @@ -41543,10 +41327,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[7]", - "event:system/message.data.message.source[6]" - ], + "names": [], "sources": [] }, { @@ -42625,9 +42406,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[3]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:430" ] @@ -42732,9 +42511,7 @@ } ] }, - "names": [ - "event:hook/invoked" - ], + "names": [], "sources": [] }, { @@ -42759,9 +42536,7 @@ } ] }, - "names": [ - "event:permission/preset.data" - ], + "names": [], "sources": [ "packages/interaction/permission-presets/src/index.ts:57" ] @@ -42822,9 +42597,7 @@ } ] }, - "names": [ - "event:hook/result.data" - ], + "names": [], "sources": [ "packages/hooks/hook-protocol/src/types.ts:31" ] @@ -42879,9 +42652,7 @@ } ] }, - "names": [ - "event:session-log-deepseek/delivery-accepted.data" - ], + "names": [], "sources": [ "packages/session/session-log-deepseek/src/types.ts:81" ] @@ -43560,9 +43331,7 @@ } ] }, - "names": [ - "event:tool/result.data.message.content" - ], + "names": [], "sources": [] }, { @@ -43636,9 +43405,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6].reason[0]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:147" ] @@ -43920,9 +43687,7 @@ } ] }, - "names": [ - "event:request/header" - ], + "names": [], "sources": [] }, { @@ -43966,9 +43731,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request.data.body.messages[0].content" - ], + "names": [], "sources": [] }, { @@ -43998,9 +43761,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[16].changes[0].action" - ], + "names": [], "sources": [] }, { @@ -44314,9 +44075,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[4]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:431" ] @@ -44461,9 +44220,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request.data.body" - ], + "names": [], "sources": [ "packages/web/web-search-deepseek/src/provider.ts:61" ] @@ -44550,16 +44307,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][0].texts", - "event:assistant/attempt.data.stream[0][1].texts", - "event:assistant/attempt.data.stream[0][2].args", - "event:request/header.data.header.config.stop", - "event:subagent/descriptor.data[1].toolFilter.allow", - "event:subagent/descriptor.data[1].toolFilter.deny", - "event:team/task.data.task.blockedBy", - "event:team/task.data.task.writeScopes" - ], + "names": [], "sources": [] }, { @@ -44614,9 +44362,7 @@ } ] }, - "names": [ - "event:approval/decided.data" - ], + "names": [], "sources": [ "packages/interaction/user-approval/src/types.ts:55" ] @@ -44689,9 +44435,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[1]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:428" ] @@ -44786,9 +44530,7 @@ } ] }, - "names": [ - "event:sandbox/mode.data" - ], + "names": [], "sources": [ "packages/sandbox/sandbox-policy/src/session-mode.ts:33" ] @@ -44888,11 +44630,7 @@ } ] }, - "names": [ - "SessionEventEnvelope[39]", - "SessionEventEnvelope[52]", - "SessionEventEnvelope[55]" - ], + "names": [], "sources": [] }, { @@ -44956,9 +44694,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request.data.body.messages[0]" - ], + "names": [], "sources": [ "packages/web/web-search-deepseek/src/provider.ts:64" ] @@ -45107,9 +44843,7 @@ } ] }, - "names": [ - "event:image/offload.data.targets" - ], + "names": [], "sources": [] }, { @@ -45139,11 +44873,7 @@ } ] }, - "names": [ - "event:compaction/prune.data.shadowedRange", - "event:compaction/summary.data[0].shadowedRange", - "event:compaction/summary.data[1].shadowedRange" - ], + "names": [], "sources": [ "packages/compaction/compaction/src/types.ts:38", "packages/compaction/compaction/src/types.ts:84" @@ -45209,9 +44939,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[19]" - ], + "names": [], "sources": [ "packages/webhook/webhook/src/types.ts:74" ] @@ -46769,9 +46497,7 @@ } ] }, - "names": [ - "event:compaction/summary.data[0]" - ], + "names": [], "sources": [] }, { @@ -46853,9 +46579,7 @@ } ] }, - "names": [ - "event:agent-preset/selected" - ], + "names": [], "sources": [] }, { @@ -47067,9 +46791,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:433" ] @@ -47231,9 +46953,7 @@ } ] }, - "names": [ - "event:team/task.data" - ], + "names": [], "sources": [ "packages/experimental/agent-team/src/types.ts:223" ] @@ -47323,9 +47043,7 @@ } ] }, - "names": [ - "event:subagent/model-selection-policy" - ], + "names": [], "sources": [] }, { @@ -48444,9 +48162,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data" - ], + "names": [], "sources": [ "packages/core/agent/src/types.ts:87" ] @@ -48579,9 +48295,7 @@ } ] }, - "names": [ - "event:plan/mode" - ], + "names": [], "sources": [] }, { @@ -48616,10 +48330,7 @@ } ] }, - "names": [ - "event:tool/ptc-dispatch.data.error", - "event:tool/result.data.error" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:370", "packages/core/tools/src/types.ts:24" @@ -48677,9 +48388,7 @@ } ] }, - "names": [ - "event:command/run.data" - ], + "names": [], "sources": [ "packages/interaction/commands/src/types.ts:105" ] @@ -48813,9 +48522,7 @@ } ] }, - "names": [ - "event:turn/start" - ], + "names": [], "sources": [] }, { @@ -49002,10 +48709,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6].reason[2]", - "event:turn/end.data.reason[4]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:213", "packages/llm/llm/src/types.ts:146" @@ -49042,9 +48746,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[17].entries" - ], + "names": [], "sources": [] }, { @@ -49074,9 +48776,7 @@ } ] }, - "names": [ - "event:session/title-llm-request.data.messages[0].role" - ], + "names": [], "sources": [] }, { @@ -49144,9 +48844,6 @@ ] }, "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[0]", - "event:session/title.data.source[2]", - "event:turn/end.data.reason[1].reason[0]", "packages/interaction/commands/src/types.ts#CommandSource" ], "sources": [ @@ -49292,9 +48989,7 @@ } ] }, - "names": [ - "event:subagent/catalog" - ], + "names": [], "sources": [] }, { @@ -49458,9 +49153,7 @@ } ] }, - "names": [ - "event:compaction/end" - ], + "names": [], "sources": [] }, { @@ -49634,9 +49327,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[6].replayState.blocks" - ], + "names": [], "sources": [] }, { @@ -49751,9 +49442,7 @@ } ] }, - "names": [ - "event:team/member.data" - ], + "names": [], "sources": [ "packages/experimental/agent-team/src/types.ts:221" ] @@ -49857,9 +49546,7 @@ } ] }, - "names": [ - "event:image/offload" - ], + "names": [], "sources": [] }, { @@ -50307,9 +49994,7 @@ } ] }, - "names": [ - "event:tool/ptc-dispatch" - ], + "names": [], "sources": [] }, { @@ -50371,10 +50056,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[5]", - "event:system/message.data.message.source[4]" - ], + "names": [], "sources": [] }, { @@ -50543,9 +50225,7 @@ } ] }, - "names": [ - "event:feedback/message-put" - ], + "names": [], "sources": [] }, { @@ -50658,9 +50338,7 @@ } ] }, - "names": [ - "event:feedback/record" - ], + "names": [], "sources": [] }, { @@ -50839,9 +50517,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[0]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:201" ] @@ -51026,9 +50702,7 @@ } ] }, - "names": [ - "event:subagent/descriptor" - ], + "names": [], "sources": [] }, { @@ -51097,9 +50771,7 @@ } ] }, - "names": [ - "event:session/title.data.source[1]" - ], + "names": [], "sources": [ "packages/session/session-title/src/types.ts:30" ] @@ -51296,9 +50968,7 @@ } ] }, - "names": [ - "event:todo/write" - ], + "names": [], "sources": [] }, { @@ -51372,9 +51042,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request.data.body.messages" - ], + "names": [], "sources": [] }, { @@ -51408,9 +51076,7 @@ } ] }, - "names": [ - "event:subagent/model-selection-policy.data.allowedModels" - ], + "names": [], "sources": [] }, { @@ -51508,9 +51174,7 @@ } ] }, - "names": [ - "event:tool-workflow/agent-end" - ], + "names": [], "sources": [] }, { @@ -51608,9 +51272,7 @@ } ] }, - "names": [ - "event:approval/decided" - ], + "names": [], "sources": [] }, { @@ -51899,19 +51561,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].content", - "event:agent/inbox/spliced.data.inserted[0].content[0][5].content", - "event:assistant/message.data.message.content", - "event:compaction/summary.data[0].rawOutput", - "event:compaction/summary.data[0].summary", - "event:compaction/summary.data[1].rawOutput", - "event:compaction/summary.data[1].summary", - "event:session/title-llm-request.data.messages[0].content", - "event:system/message.data.message.content", - "event:team/message/queued.data.message.content", - "event:tool/ptc-dispatch.data.content" - ], + "names": [], "sources": [] }, { @@ -51925,14 +51575,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[8].replayState", - "event:assistant/attempt.data.stream[0][3].chunk[6].replayState.blocks[0]", - "event:assistant/attempt.data.stream[0][3].chunk[6].replayState.response", - "event:request/header.data.header.tools[0].parameters.[value]", - "event:tool/ptc-dispatch-start.data.arguments", - "event:tool/ptc-dispatch.data.arguments" - ], + "names": [], "sources": [] }, { @@ -51971,9 +51614,7 @@ } ] }, - "names": [ - "SessionEventEnvelope[6].surfaceOp[1]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:450" ] @@ -52367,9 +52008,7 @@ } ] }, - "names": [ - "event:tool-workflow/run-start" - ], + "names": [], "sources": [] }, { @@ -52639,7 +52278,6 @@ ] }, "names": [ - "event:tool/result.data.meta", "packages/util/values/src/index.ts#JsonValue" ], "sources": [ @@ -52677,9 +52315,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[4].sections" - ], + "names": [], "sources": [] }, { @@ -53872,9 +53508,7 @@ } ] }, - "names": [ - "event:assistant/attempt" - ], + "names": [], "sources": [] }, { @@ -54596,9 +54230,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3]" - ], + "names": [], "sources": [ "packages/llm/llm/src/assistant-stream.ts:44" ] @@ -54683,9 +54315,7 @@ } ] }, - "names": [ - "event:compaction/end.data" - ], + "names": [], "sources": [ "packages/compaction/compaction/src/types.ts:72" ] @@ -55002,9 +54632,7 @@ } ] }, - "names": [ - "event:llm/retry.data[0]" - ], + "names": [], "sources": [ "packages/llm/llm-retry/src/types.ts:17" ] @@ -55209,9 +54837,7 @@ } ] }, - "names": [ - "event:web/deepseek-search-llm-request" - ], + "names": [], "sources": [] }, { @@ -55491,9 +55117,7 @@ } ] }, - "names": [ - "event:team/task" - ], + "names": [], "sources": [] }, { @@ -55864,9 +55488,7 @@ } ] }, - "names": [ - "event:session-log-deepseek/delivery-accepted" - ], + "names": [], "sources": [] }, { @@ -56179,9 +55801,7 @@ } ] }, - "names": [ - "event:compaction/start" - ], + "names": [], "sources": [] }, { @@ -56252,10 +55872,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[2]", - "event:system/message.data.message.source[1]" - ], + "names": [], "sources": [] }, { @@ -56395,9 +56012,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[15].references" - ], + "names": [], "sources": [] }, { @@ -56500,9 +56115,7 @@ } ] }, - "names": [ - "event:step/end" - ], + "names": [], "sources": [] }, { @@ -57678,9 +57291,7 @@ } ] }, - "names": [ - "event:session/title-llm-request" - ], + "names": [], "sources": [] }, { @@ -58002,9 +57613,7 @@ } ] }, - "names": [ - "event:workspace/changes" - ], + "names": [], "sources": [] }, { @@ -58066,62 +57675,7 @@ } ] }, - "names": [ - "SessionEventEnvelope[0]", - "SessionEventEnvelope[10]", - "SessionEventEnvelope[11]", - "SessionEventEnvelope[12]", - "SessionEventEnvelope[13]", - "SessionEventEnvelope[14]", - "SessionEventEnvelope[15]", - "SessionEventEnvelope[16]", - "SessionEventEnvelope[17]", - "SessionEventEnvelope[18]", - "SessionEventEnvelope[19]", - "SessionEventEnvelope[1]", - "SessionEventEnvelope[20]", - "SessionEventEnvelope[21]", - "SessionEventEnvelope[22]", - "SessionEventEnvelope[23]", - "SessionEventEnvelope[24]", - "SessionEventEnvelope[25]", - "SessionEventEnvelope[26]", - "SessionEventEnvelope[27]", - "SessionEventEnvelope[28]", - "SessionEventEnvelope[29]", - "SessionEventEnvelope[2]", - "SessionEventEnvelope[30]", - "SessionEventEnvelope[31]", - "SessionEventEnvelope[32]", - "SessionEventEnvelope[33]", - "SessionEventEnvelope[34]", - "SessionEventEnvelope[35]", - "SessionEventEnvelope[36]", - "SessionEventEnvelope[37]", - "SessionEventEnvelope[38]", - "SessionEventEnvelope[3]", - "SessionEventEnvelope[40]", - "SessionEventEnvelope[41]", - "SessionEventEnvelope[42]", - "SessionEventEnvelope[43]", - "SessionEventEnvelope[44]", - "SessionEventEnvelope[45]", - "SessionEventEnvelope[46]", - "SessionEventEnvelope[47]", - "SessionEventEnvelope[48]", - "SessionEventEnvelope[49]", - "SessionEventEnvelope[4]", - "SessionEventEnvelope[50]", - "SessionEventEnvelope[51]", - "SessionEventEnvelope[53]", - "SessionEventEnvelope[54]", - "SessionEventEnvelope[56]", - "SessionEventEnvelope[57]", - "SessionEventEnvelope[5]", - "SessionEventEnvelope[7]", - "SessionEventEnvelope[8]", - "SessionEventEnvelope[9]" - ], + "names": [], "sources": [] }, { @@ -58450,9 +58004,7 @@ } ] }, - "names": [ - "event:turn/end.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:292" ] @@ -58503,9 +58055,7 @@ } ] }, - "names": [ - "event:tool/call.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:348" ] @@ -59047,9 +58597,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][0]" - ], + "names": [], "sources": [ "packages/llm/llm/src/assistant-stream.ts:21" ] @@ -59149,9 +58697,7 @@ } ] }, - "names": [ - "event:hook/result" - ], + "names": [], "sources": [] }, { @@ -59261,10 +58807,7 @@ } ] }, - "names": [ - "event:agent/inbox/spliced.data.inserted[0].source[4]", - "event:system/message.data.message.source[3]" - ], + "names": [], "sources": [] }, { @@ -59317,9 +58860,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[1].reason[4]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:195" ] @@ -59427,9 +58968,7 @@ } ] }, - "names": [ - "event:tool/ptc-dispatch-start" - ], + "names": [], "sources": [] }, { @@ -59454,9 +58993,7 @@ } ] }, - "names": [ - "event:turn/end.data.reason[6]" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:227" ] @@ -59502,10 +59039,7 @@ } ] }, - "names": [ - "event:step/end.data", - "event:step/start.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:294", "packages/core/session/src/types.ts:296" @@ -59977,9 +59511,7 @@ } ] }, - "names": [ - "event:assistant/attempt.data.stream[0][3].chunk[5]" - ], + "names": [], "sources": [ "packages/llm/llm/src/types.ts:432" ] @@ -60744,9 +60276,7 @@ } ] }, - "names": [ - "event:compaction/summary" - ], + "names": [], "sources": [] }, { @@ -60799,10 +60329,7 @@ } ] }, - "names": [ - "event:turn/start.data", - "event:workspace/changes.data" - ], + "names": [], "sources": [ "packages/core/session/src/types.ts:283", "packages/deliverables/workspace-changes/src/types.ts:106" @@ -61015,9 +60542,7 @@ } ] }, - "names": [ - "event:todo/write.data.todos[0].status" - ], + "names": [], "sources": [] }, { @@ -61510,9 +61035,7 @@ } ] }, - "names": [ - "event:compaction/summary.data" - ], + "names": [], "sources": [] }, { diff --git a/package.json b/package.json index ee34bc050a..f108195187 100644 --- a/package.json +++ b/package.json @@ -165,6 +165,7 @@ "gen-persistence-catalog": "tsx scripts/gen-persistence-catalog.ts", "verify-persistence-catalog": "tsx scripts/gen-persistence-catalog.ts --check", "persistence-changes": "tsx scripts/persistence-changes.ts", + "persistence-review": "tsx scripts/persistence-review.ts", "verify-persistence-changes": "tsx scripts/persistence-changes.ts --check", "verify-persistence-releases": "tsx scripts/persistence-releases.ts", "verify-persistence-formats": "tsx scripts/persistence-formats.ts", diff --git a/scripts/gen-persistence-catalog.ts b/scripts/gen-persistence-catalog.ts index adf891d895..d7a18e8e3d 100644 --- a/scripts/gen-persistence-catalog.ts +++ b/scripts/gen-persistence-catalog.ts @@ -102,7 +102,7 @@ export function render( '', text.envelopeIntro, '', - ...(schema ? [renderPersistenceSchemaIndex(schema, locale)] : []), + ...(schema ? [renderPersistenceSchemaIndex(schema, locale, undefined, 2, 'current')] : []), `## ${text.envelope}`, '', '```' + FENCE, @@ -121,7 +121,7 @@ export function render( lines.push(...renderEvent(e, locale)) } } - if (schema) lines.push(renderPersistenceSchemaDefinitions(schema, locale)) + if (schema) lines.push(renderPersistenceSchemaDefinitions(schema, locale, undefined, 2, 'current')) return lines.join('\n') } diff --git a/scripts/persistence-catalog-text.ts b/scripts/persistence-catalog-text.ts index a49a129ea7..3b2ee2dd84 100644 --- a/scripts/persistence-catalog-text.ts +++ b/scripts/persistence-catalog-text.ts @@ -19,6 +19,9 @@ const english = { optional: 'optional', required: 'required', rest: 'rest', index: 'index signature', emptyObject: 'Object with no declared properties.', arrayPrefix: 'Array of ', arraySuffix: '.', oneOf: 'One of:', opaque: ' (opaque)', opaqueExplanation: ": the declaration does not expose the stored value's internal fields.", + sourceCompatibility: 'Source compatibility: ', attributionAdditions: 'Attribution-only additions: ', + sourceColumns: '| kind | Form property | Other required fields | Full definition |', + notDeclared: 'not declared', none: 'none', } const chinese: Record = { @@ -37,6 +40,9 @@ const chinese: Record = { optional: '可选', required: '必需', rest: '剩余项', index: '索引签名', emptyObject: '无已声明属性的对象。', arrayPrefix: '', arraySuffix: ' 的数组。', oneOf: '以下类型之一:', opaque: '(不透明)', opaqueExplanation: ':此声明未暴露存储值的内部字段。', + sourceCompatibility: '消息源兼容策略:', attributionAdditions: '仅表示归属的新增 kind:', + sourceColumns: '| kind | form 属性 | 其他必需字段 | 完整定义 |', + notDeclared: '未声明', none: '无', } /** Complete translated prose; adding an English key requires its Chinese counterpart. */ diff --git a/scripts/persistence-changes.spec.ts b/scripts/persistence-changes.spec.ts index 38fba92e0f..8d5a6af4fd 100644 --- a/scripts/persistence-changes.spec.ts +++ b/scripts/persistence-changes.spec.ts @@ -6,7 +6,7 @@ import { tmpdir } from 'node:os' import { join, resolve } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' import { canonicalizeSchema, schemaDigest } from './persistence-schema-model.ts' -import type { PersistenceRoot, PersistenceSchemaInventory, SchemaNode, SchemaProperty } from './persistence-schema-model.ts' +import type { PersistenceRoot, PersistenceSchemaInventory, SchemaNode, SchemaProperty, SourceCompatibility } from './persistence-schema-model.ts' import { extractPersistenceSchema } from './persistence-schema.ts' import { persistenceCatalogArtifacts } from './gen-persistence-catalog.ts' import { @@ -371,7 +371,7 @@ describe('persistence history verification', () => { const tampered = structuredClone(schema) Object.assign(tampered.roots[0]!, { digest: '0'.repeat(64) }) expect(() => parsePersistenceSnapshot(tampered)).toThrow('digest mismatch') - expect(() => parsePersistenceSnapshot({ ...schema, formatVersion: 2 })).toThrow('normalization version') + expect(() => parsePersistenceSnapshot({ ...schema, formatVersion: 3 })).toThrow('normalization version') const next = entry(NEXT_ID, onlyEvent(inventory({ value: 'string', 'label?': 'string' })), BASE_ID) expect(() => validatePersistenceHistory([entry(BASE_ID, schema, null, true), { ...next, snapshot: inventory() }])).toThrow('snapshot roots') }) @@ -609,3 +609,144 @@ describe('persistence changes current-tree commands', () => { }) }) }) + +interface SourceAlternative { + readonly kind: string + readonly value?: 'string' | 'number' + readonly extra?: 'required' | 'optional' +} + +function attributedRoot( + alternatives: readonly SourceAlternative[], + options: { policy?: SourceCompatibility | null; role?: 'user' | 'developer'; extra?: boolean } = {}, +): PersistenceRoot { + const role = options.role ?? 'user' + const policy: SourceCompatibility | undefined = options.policy === null ? undefined : options.policy ?? { + version: 1, policy: 'session-source-attribution', binding: `session.${role}-message.source`, + discriminator: 'kind', unknownKinds: 'preserve', attributionKinds: [], + } + const nodes: SchemaNode[] = [ + { kind: 'object', indices: [], properties: [{ name: 'type', type: 2, optional: false }, { name: 'data', type: 1, optional: false }] }, + { kind: 'object', indices: [], properties: [ + { name: 'role', type: 4, optional: false }, { name: 'source', type: 3, optional: false, ...(policy === undefined ? {} : { compatibility: policy }) }, + ...(options.extra ? [{ name: 'unrelated', type: 5, optional: false }] : []), + ] }, + { kind: 'literal', value: 'example/source' }, + { kind: 'primitive', type: 'never' }, + { kind: 'literal', value: role }, + { kind: 'primitive', type: 'string' }, + { kind: 'primitive', type: 'number' }, + ] + const types = alternatives.map((alternative) => { + const index = nodes.length + nodes.push({ kind: 'object', indices: [], properties: [ + { name: 'kind', type: index + 1, optional: false }, + ...(alternative.value === undefined ? [] : [{ name: 'value', type: alternative.value === 'string' ? 5 : 6, optional: false }]), + ...(alternative.extra === undefined ? [] : [{ name: 'extra', type: 5, optional: alternative.extra === 'optional' }]), + ] }, { kind: 'literal', value: alternative.kind }) + return index + }) + nodes[3] = { kind: 'union', types } + const schema = canonicalizeSchema(nodes, 0) + return { key: 'event:example/source', kind: 'event', event: 'example/source', surface: false, schema, digest: schemaDigest(schema) } +} + +function attributionPolicy(kinds: readonly string[], role: 'user' | 'developer' = 'user'): SourceCompatibility { + return { version: 1, policy: 'session-source-attribution', binding: `session.${role}-message.source`, + discriminator: 'kind', unknownKinds: 'preserve', attributionKinds: kinds } +} + +const EXISTING_SOURCE: SourceAlternative = { kind: 'semantic', value: 'string' } +const NEW_SOURCE: SourceAlternative = { kind: 'new-attribution', value: 'number' } + +describe('recorded source compatibility policy', () => { + it.each(['user', 'developer'] as const)('accepts a qualified new %s source and records its changed digest', (role) => { + const before = attributedRoot([EXISTING_SOURCE], { role }) + const after = attributedRoot([EXISTING_SOURCE, NEW_SOURCE], { role, policy: attributionPolicy([NEW_SOURCE.kind], role) }) + expect(after.digest).not.toBe(before.digest) + expect(classifyPersistenceChange(before, after)).toEqual([expect.objectContaining({ kind: 'attribution-kind-added', requiresVersionBump: false })]) + const snapshot: PersistenceSchemaInventory = { formatVersion: 2, roots: [after], types: [] } + expect(parsePersistenceSnapshot(JSON.parse(JSON.stringify(snapshot)))).toEqual(snapshot) + }) + + it('allows ordinary optional fields in an existing group alongside a qualified addition', () => { + const before = attributedRoot([EXISTING_SOURCE]) + const after = attributedRoot([{ ...EXISTING_SOURCE, extra: 'optional' }, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }) + const changes = classifyPersistenceChange(before, after) + expect(changes.map(change => change.kind).sort()).toEqual(['attribution-kind-added', 'optional-property-added']) + expect(changes.every(change => !change.requiresVersionBump)).toBe(true) + }) + + it.each([ + ['unmarked addition', [EXISTING_SOURCE, NEW_SOURCE], { policy: attributionPolicy([]) }], + ['required existing field', [{ ...EXISTING_SOURCE, extra: 'required' }, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }], + ['changed existing field', [{ ...EXISTING_SOURCE, value: 'number' }, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }], + ['removed existing kind', [NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }], + ['renamed existing kind', [{ ...EXISTING_SOURCE, kind: 'renamed' }, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }], + ['unrelated required payload', [EXISTING_SOURCE, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]), extra: true }], + ['removed promise', [EXISTING_SOURCE, NEW_SOURCE], { policy: null }], + ] as const)('keeps %s breaking despite qualified additions', (_name, sources, options) => { + const changes = classifyPersistenceChange(attributedRoot([EXISTING_SOURCE]), attributedRoot(sources, options)) + expect(changes.some(change => change.requiresVersionBump)).toBe(true) + }) + + it('keeps variants within an existing wire-kind group strict', () => { + const before = attributedRoot([EXISTING_SOURCE]) + const after = attributedRoot([EXISTING_SOURCE, { ...EXISTING_SOURCE, value: 'number' }, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }) + expect(classifyPersistenceChange(before, after)).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: 'union-variants-changed', requiresVersionBump: true }), + expect.objectContaining({ kind: 'attribution-kind-added', requiresVersionBump: false }), + ])) + }) + + it('treats qualification changes for an existing kind as policy changes', () => { + const before = attributedRoot([EXISTING_SOURCE]) + const after = attributedRoot([EXISTING_SOURCE], { policy: attributionPolicy([EXISTING_SOURCE.kind]) }) + expect(classifyPersistenceChange(before, after)).toEqual([expect.objectContaining({ kind: 'source-policy-changed', requiresVersionBump: true })]) + }) + + it('keeps legacy source transitions strict and never infers promises from the successor', () => { + const before = attributedRoot([EXISTING_SOURCE], { policy: null }) + const after = attributedRoot([EXISTING_SOURCE, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) }) + expect(classifyPersistenceChange(before, after).some(change => change.requiresVersionBump)).toBe(true) + const legacyAfter = attributedRoot([EXISTING_SOURCE, NEW_SOURCE], { policy: null }) + const snapshots = [before, legacyAfter].map(root => ({ formatVersion: 1 as const, roots: [root], types: [] })) + expect(() => validatePersistenceHistory([ + entry(BASE_ID, snapshots[0]!, null, true), entry(NEXT_ID, snapshots[1]!, BASE_ID), + ])).toThrow('requires a format version bump') + }) + + it('validates policy-bearing history without source names or type records', () => { + const before: PersistenceSchemaInventory = { formatVersion: 2, types: [], + roots: [...inventory().roots.filter(root => root.kind !== 'event'), attributedRoot([EXISTING_SOURCE])], + } + const after: PersistenceSchemaInventory = { formatVersion: 2, types: [], + roots: [attributedRoot([EXISTING_SOURCE, NEW_SOURCE], { policy: attributionPolicy([NEW_SOURCE.kind]) })], + } + expect(validatePersistenceHistory([entry(BASE_ID, before, null, true), entry(NEXT_ID, after, BASE_ID)]).tips.get('event:example/source')?.root).toEqual(after.roots[0]) + }) + + it.each(['auto-review', 'compact-basic', 'code-mode'])('rejects saved qualification of historical kind %s', (kind) => { + const root = attributedRoot([EXISTING_SOURCE, { kind }], { policy: attributionPolicy([kind]) }) + const snapshot: PersistenceSchemaInventory = { formatVersion: 2, roots: [root], types: [] } + expect(() => parsePersistenceSnapshot(snapshot)).toThrow('invalid source compatibility') + }) + + it('rejects old-format policy fields, policy tampering, unsupported promises and invalid bindings', () => { + const root = attributedRoot([EXISTING_SOURCE]) + const snapshot: PersistenceSchemaInventory = { formatVersion: 2, roots: [root], types: [] } + expect(() => parsePersistenceSnapshot({ ...snapshot, formatVersion: 1 })).toThrow('unknown field compatibility') + for (const patch of [{ version: 2 }, { policy: 'arbitrary' }, { discriminator: 'type' }, { unknownKinds: 'discard' }]) { + const tampered = JSON.parse(JSON.stringify(snapshot)) as PersistenceSchemaInventory + const property = tampered.roots[0]!.schema.nodes.flatMap(node => node.kind === 'object' ? node.properties : []).find(property => property.compatibility !== undefined)! + Object.assign(property.compatibility!, patch) + expect(() => parsePersistenceSnapshot(tampered)).toThrow('unsupported source compatibility') + } + const wrongRole = attributedRoot([EXISTING_SOURCE], { policy: attributionPolicy([], 'developer') }) + expect(() => parsePersistenceSnapshot({ ...snapshot, roots: [wrongRole] })).toThrow('invalid source compatibility') + const changedQualification = attributedRoot([EXISTING_SOURCE], { policy: attributionPolicy([EXISTING_SOURCE.kind]) }) + expect(() => parsePersistenceSnapshot({ ...snapshot, roots: [{ ...changedQualification, digest: root.digest }] })).toThrow('digest mismatch') + const unknownKind = attributedRoot([EXISTING_SOURCE], { policy: attributionPolicy(['absent']) }) + expect(() => parsePersistenceSnapshot({ ...snapshot, roots: [unknownKind] })).toThrow('invalid source compatibility') + }) +}) diff --git a/scripts/persistence-changes.ts b/scripts/persistence-changes.ts index 1889e2cecf..d246a45d30 100644 --- a/scripts/persistence-changes.ts +++ b/scripts/persistence-changes.ts @@ -5,6 +5,7 @@ import { basename, join, resolve } from 'node:path' import { parseArgs } from 'node:util' import { JSON_SCHEMA, load } from 'js-yaml' import { canonicalizeSchema, schemaDigest } from './persistence-schema-model.ts' +import { matchingSourceCompatibility, sourceKindGroups, validSourceCompatibility } from './persistence-source-policy.ts' import type { CanonicalSchema, PersistenceRoot, PersistenceSchemaInventory, SchemaNode, SchemaTupleElement } from './persistence-schema-model.ts' import { extractPersistenceSchema } from './persistence-schema.ts' import { persistenceCatalogArtifacts } from './gen-persistence-catalog.ts' @@ -65,6 +66,8 @@ const CHANGE_DESCRIPTIONS = { 'tuple-length-changed': 'tuple length changed', 'tuple-element-cardinality-changed': 'tuple element cardinality changed', 'union-variants-changed': 'union variants changed', + 'source-policy-changed': 'source compatibility policy changed', + 'attribution-kind-added': 'attribution-only source kind added', } as const /** Stable structural classification independent of diagnostic prose. */ @@ -169,7 +172,7 @@ function reference(value: unknown, count: number, label: string): number { return value as number } -function parseSchema(value: unknown, label: string): CanonicalSchema { +function parseSchema(value: unknown, label: string, formatVersion: 1 | 2): CanonicalSchema { const input = record(value, label) keys(input, ['root', 'nodes'], label) if (input.root !== 0) throw new Error(`${label}.root must be zero`) @@ -211,7 +214,17 @@ function parseSchema(value: unknown, label: string): CanonicalSchema { const names = new Set() for (const rawProperty of array(node.properties, label)) { const property = record(rawProperty, label) - keys(property, ['name', 'type', 'optional'], label) + keys(property, ['name', 'type', 'optional'], label, formatVersion === 2 ? ['compatibility'] : []) + if (property.compatibility !== undefined) { + const policy = record(property.compatibility, `${label} source compatibility`) + keys(policy, ['version', 'policy', 'binding', 'discriminator', 'unknownKinds', 'attributionKinds'], label) + if (policy.version !== 1 || policy.policy !== 'session-source-attribution' + || !['session.user-message.source', 'session.developer-message.source'].includes(String(policy.binding)) + || policy.discriminator !== 'kind' || policy.unknownKinds !== 'preserve') { + throw new Error(`${label}: unsupported source compatibility policy`) + } + for (const kind of array(policy.attributionKinds, label)) textValue(kind, label) + } if (typeof property.name !== 'string') throw new Error(`${label}: property name must be a string`) const name = property.name if (names.has(name)) throw new Error(`${label}: duplicate property ${name}`) @@ -237,6 +250,14 @@ function parseSchema(value: unknown, label: string): CanonicalSchema { } } const schema = input as unknown as CanonicalSchema + for (const node of schema.nodes) { + if (node.kind !== 'object') continue + for (const property of node.properties) { + if (property.compatibility !== undefined && !validSourceCompatibility(schema.nodes, node, property)) { + throw new Error(`${label}: invalid source compatibility binding or attribution kinds`) + } + } + } const canonical = canonicalizeSchema(schema.nodes, schema.root) if (JSON.stringify(canonical) !== JSON.stringify(schema)) throw new Error(`${label}: schema is not canonical`) return schema @@ -261,7 +282,7 @@ export function parseHistoricalPersistenceSnapshot(value: unknown): PersistenceS function parseSnapshot(value: unknown, historical: boolean): PersistenceSchemaInventory { const input = record(value, 'schema inventory') keys(input, ['formatVersion', 'roots', 'types'], 'schema inventory') - if (input.formatVersion !== 1) throw new Error('unsupported persistence schema normalization version') + if (input.formatVersion !== 1 && input.formatVersion !== 2) throw new Error('unsupported persistence schema normalization version') const names = new Set() for (const rawRoot of array(input.roots, 'schema roots')) { const root = record(rawRoot, 'schema root') @@ -275,14 +296,14 @@ function parseSnapshot(value: unknown, historical: boolean): PersistenceSchemaIn } else if ((root.kind !== 'header' || !['SessionHeader', 'JsonlHeaderLine'].includes(key)) && (root.kind !== 'envelope' || key !== 'SessionEventEnvelope')) throw new Error(`invalid schema root ${key}`) if (root.kind !== 'event' && (root.event !== undefined || root.surface !== undefined)) throw new Error(`${key}: non-event metadata`) - const schema = parseSchema(root.schema, key) + const schema = parseSchema(root.schema, key, input.formatVersion) if (root.kind === 'event') validateEventMetadata(schema, String(root.event), root.surface === true, historical) if (digest(root.digest, `${key} digest`) !== schemaDigest(schema)) throw new Error(`${key}: schema digest mismatch`) } for (const rawType of array(input.types, 'schema types')) { const type = record(rawType, 'schema type') keys(type, ['digest', 'schema', 'names', 'sources'], 'schema type') - const schema = parseSchema(type.schema, 'shared schema') + const schema = parseSchema(type.schema, 'shared schema', input.formatVersion) if (digest(type.digest, 'shared digest') !== schemaDigest(schema)) throw new Error('shared schema digest mismatch') for (const name of array(type.names, 'type names')) textValue(name, 'type name') for (const source of array(type.sources, 'type sources')) { @@ -339,7 +360,7 @@ function matchUnionVariants(candidates: readonly (readonly number[])[]): number[ return matches } -/** Classify structural differences; only optional payload properties and ordinary event additions are additive. +/** Classify structural differences using the reader promises saved with each schema. * @param before - predecessor root, or absence for an addition. * @param after - successor root, or absence for deletion. * @returns concrete changes and their format-bump requirement. @@ -392,7 +413,30 @@ export function classifyPersistenceChange(before: PersistenceRoot | null, after: const child = `${path}.${name}` if (next === undefined) { add(child, 'property-removed'); continue } if (property.optional !== next.optional) add(child, next.optional ? 'property-made-optional' : 'property-made-required', scope !== 'body' || !next.optional) - descend(property.type, next.type, child, scope === 'body' || scope === 'event' && name === 'data' ? 'body' : 'strict') + const childScope = scope === 'body' || scope === 'event' && name === 'data' ? 'body' : 'strict' + if (property.compatibility !== undefined || next.compatibility !== undefined) { + const oldGroups = sourceKindGroups(oldRoot.schema.nodes, property.type) + const newGroups = sourceKindGroups(newRoot.schema.nodes, next.type) + if (childScope === 'body' && property.compatibility !== undefined && next.compatibility !== undefined + && oldGroups !== undefined && newGroups !== undefined + && validSourceCompatibility(oldRoot.schema.nodes, oldNode, property) + && validSourceCompatibility(newRoot.schema.nodes, newNode, next) + && matchingSourceCompatibility(property.compatibility, next.compatibility, oldGroups.keys())) { + for (const [kind, oldTypes] of oldGroups) { + const newTypes = newGroups.get(kind) + if (newTypes === undefined) add(`${child}[kind=${JSON.stringify(kind)}]`, 'union-variants-changed') + else differences.push(...compareAlternatives(oldTypes, newTypes, `${child}[kind=${JSON.stringify(kind)}]`, childScope, active)) + } + for (const kind of newGroups.keys()) { + if (!oldGroups.has(kind)) add(`${child}[kind=${JSON.stringify(kind)}]`, + next.compatibility.attributionKinds.includes(kind) ? 'attribution-kind-added' : 'union-variants-changed', + !next.compatibility.attributionKinds.includes(kind)) + } + continue + } + if (JSON.stringify(property.compatibility) !== JSON.stringify(next.compatibility)) add(child, 'source-policy-changed') + } + descend(property.type, next.type, child, childScope) } for (const [name, property] of newProps) { if (!oldProps.has(name)) add(`${path}.${name}`, property.optional ? 'optional-property-added' : 'required-property-added', scope !== 'body' || !property.optional) @@ -419,20 +463,25 @@ export function classifyPersistenceChange(before: PersistenceRoot | null, after: return differences } if (oldNode.kind === 'union' && newNode.kind === 'union') { - if (oldNode.types.length !== newNode.types.length) return [describe(path, 'union-variants-changed')] - const candidates = oldNode.types.map(oldType => newNode.types.map(newType => compare(oldType, newType, path, scope, active))) - const matching = matchUnionVariants(candidates.map(row => row.flatMap((candidate, index) => - candidate.every(change => !change.requiresVersionBump) ? [index] : []))) - if (matching !== undefined) return matching.flatMap((next, previous) => candidates[previous]?.[next] ?? []) - const oldTypes = new Map(oldNode.types.map(index => [fingerprint(oldRoot.schema, index, 0), index])) - const newTypes = new Map(newNode.types.map(index => [fingerprint(newRoot.schema, index, 1), index])) - const removed = [...oldTypes].filter(([hash]) => !newTypes.has(hash)).map(([, index]) => index) - const added = [...newTypes].filter(([hash]) => !oldTypes.has(hash)).map(([, index]) => index) - if (removed.length === 1 && added.length === 1) return compare(removed[0] as number, added[0] as number, path, scope, active) - return [describe(path, 'union-variants-changed')] + return compareAlternatives(oldNode.types, newNode.types, path, scope, active) } return [describe(path, 'type-changed')] } + function compareAlternatives( + oldTypes: readonly number[], newTypes: readonly number[], path: string, scope: Scope, active: ReadonlySet, + ): PersistenceTypeChange[] { + if (oldTypes.length !== newTypes.length) return [describe(path, 'union-variants-changed')] + const candidates = oldTypes.map(oldType => newTypes.map(newType => compare(oldType, newType, path, scope, active))) + const matching = matchUnionVariants(candidates.map(row => row.flatMap((candidate, index) => + candidate.every(change => !change.requiresVersionBump) ? [index] : []))) + if (matching !== undefined) return matching.flatMap((next, previous) => candidates[previous]?.[next] ?? []) + const oldByHash = new Map(oldTypes.map(index => [fingerprint(oldRoot.schema, index, 0), index])) + const newByHash = new Map(newTypes.map(index => [fingerprint(newRoot.schema, index, 1), index])) + const removed = [...oldByHash].filter(([hash]) => !newByHash.has(hash)).map(([, index]) => index) + const added = [...newByHash].filter(([hash]) => !oldByHash.has(hash)).map(([, index]) => index) + if (removed.length === 1 && added.length === 1) return compare(removed[0] as number, added[0] as number, path, scope, active) + return [describe(path, 'union-variants-changed')] + } changes.push(...compare(0, 0, key, before.kind === 'event' ? 'event' : 'strict', new Set())) if (changes.length === 0) changes.push(describe(key, 'type-changed')) return [...new Map(changes.map(change => [JSON.stringify([change.path, change.kind, change.requiresVersionBump]), change])).values()] @@ -743,7 +792,7 @@ function executeCommand( root: key, previous: history?.tips.get(key)?.id ?? null, after: roots.find(root => root.key === key)?.digest ?? null, decision, })) } - const snapshot: PersistenceSchemaInventory = { formatVersion: 1, roots, types: [] } + const snapshot: PersistenceSchemaInventory = { formatVersion: current.formatVersion, roots, types: [] } validatePersistenceHistory([...prior, { record: change, snapshot }]) const document = (chinese: boolean): string => { const supplied = chinese ? prose?.zh : prose?.en diff --git a/scripts/persistence-releases.spec.ts b/scripts/persistence-releases.spec.ts index 79ad27920f..23fd96d80a 100644 --- a/scripts/persistence-releases.spec.ts +++ b/scripts/persistence-releases.spec.ts @@ -367,7 +367,7 @@ describe('release facts', () => { const data = fixture() const snapshotPath = join(data.directory, TAGS[2] + '.schema.json') const snapshot = readFileSync(snapshotPath, 'utf8') - writeFileSync(snapshotPath, snapshot.replace('"formatVersion":1', '"formatVersion":2')) + writeFileSync(snapshotPath, snapshot.replace('"formatVersion":1', '"formatVersion":3')) const corrupt = directoryBytes(data.directory) expect(() => runPersistenceReleases(['--write'], data.root)).toThrow('normalization version') expect(directoryBytes(data.directory)).toEqual(corrupt) diff --git a/scripts/persistence-review.spec.ts b/scripts/persistence-review.spec.ts new file mode 100644 index 0000000000..90e99d2cf3 --- /dev/null +++ b/scripts/persistence-review.spec.ts @@ -0,0 +1,135 @@ +/** Semantic review regressions independent of traversal ordinals and display names. */ + +import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { describe, expect, it } from 'vitest' +import { classifyPersistenceChange } from './persistence-changes.ts' +import { canonicalizeSchema, schemaDigest, type PersistenceSchemaInventory, type SchemaNode, type SchemaProperty } from './persistence-schema-model.ts' +import { renderPersistenceReview, reviewPersistenceSchemas, runPersistenceReview } from './persistence-review.ts' + +function fixture(options: { + extraKind?: boolean + changed?: boolean + ambiguous?: boolean + reorder?: boolean + tuple?: boolean + recursive?: boolean +} = {}): PersistenceSchemaInventory { + const nodes: SchemaNode[] = [] + const add = (node: SchemaNode): number => nodes.push(node) - 1 + const literal = (value: string): number => add({ kind: 'literal', value }) + const text = add({ kind: 'primitive', type: 'string' }) + const number = add({ kind: 'primitive', type: 'number' }) + const object = (properties: SchemaProperty[]): number => add({ kind: 'object', properties, indices: [] }) + const property = (name: string, type: number, optional = false): SchemaProperty => ({ name, type, optional }) + const snapshot = object([property('kind', literal('hooks-codex')), property('form', literal('snapshot')), property('sections', add({ kind: 'array', element: text }))]) + const notice = object([property('kind', literal('hooks-codex')), property('form', literal('notice')), property('summary', text)]) + const changing = object([property('kind', literal('changing')), property('value', options.changed ? number : text)]) + const variants = [snapshot, notice, changing] + if (options.ambiguous) variants.push(object([property('kind', literal('changing')), property('extra', text)])) + if (options.extraKind) variants.unshift(object([property('kind', literal('tool-registry'))])) + if (options.reorder) variants.reverse() + const source = add({ kind: 'union', types: variants }) + const payloadProperties = [property('source', source)] + if (options.tuple) payloadProperties.push(property('tuple', add({ kind: 'tuple', elements: (options.changed ? [number, text] : [text, number]).map(type => ({ type, optional: false, rest: false })) }))) + if (options.recursive) payloadProperties.push(property('next', nodes.length, true)) + const payload = object(payloadProperties) + const roots = ['agent/inbox/spliced', 'user/message'].map((event) => { + const data = event === 'agent/inbox/spliced' ? object([property('inserted', add({ kind: 'array', element: payload }))]) : payload + const index = object([property('type', literal(event)), property('data', data)]) + const schema = canonicalizeSchema(nodes, index) + return { key: `event:${event}`, event, kind: 'event' as const, surface: false, digest: schemaDigest(schema), schema } + }) + const types = [...new Map(nodes.map((_, index) => { + const schema = canonicalizeSchema(nodes, index) + const digest = schemaDigest(schema) + const ordinal = index === snapshot ? options.extraKind ? 107 : 106 : index === notice ? options.extraKind ? 108 : 107 : undefined + return [digest, { digest, schema, names: ordinal === undefined ? [] : [`event:agent/inbox/spliced.data.inserted[0].source[${String(ordinal)}]`], sources: [] }] + })).values()] + return { formatVersion: 1, roots, types } +} + +describe('persistence review', () => { + it('reports a new kind once across containing roots and never renames unchanged ordinal 107 alternatives', () => { + const before = fixture() + const after = fixture({ extraKind: true }) + const saved = JSON.stringify([before, after]) + const old107 = before.types.find(type => type.names.some(name => name.endsWith('[107]'))) + const new107 = after.types.find(type => type.names.some(name => name.endsWith('[107]'))) + expect(old107?.digest).not.toBe(new107?.digest) + expect(after.types.find(type => type.digest === old107?.digest)?.names[0]).toMatch(/\[108\]$/u) + const report = reviewPersistenceSchemas(before, after) + expect(report.evidence).toHaveLength(1) + expect(report.evidence[0]).toMatchObject({ kind: 'kind-added', before: null, locations: [ + { root: 'event:agent/inbox/spliced', path: 'event:agent/inbox/spliced.data.inserted[].source[kind="tool-registry"]' }, + { root: 'event:user/message', path: 'event:user/message.data.source[kind="tool-registry"]' }, + ] }) + const markdown = renderPersistenceReview(report) + expect(markdown).not.toContain('hooks-codex') + expect(markdown).not.toMatch(/source\[\d+\]/u) + for (const root of report.roots) expect(root.changes).toEqual(classifyPersistenceChange( + before.roots.find(item => item.key === root.root)!, after.roots.find(item => item.key === root.root)!, + )) + expect(JSON.stringify([before, after])).toBe(saved) + expect(reviewPersistenceSchemas(before, { + ...fixture({ extraKind: true, reorder: true }), roots: [...after.roots].reverse(), types: [...after.types].reverse(), + })).toEqual(report) + }) + + it('shows existing kind changes alongside additions without weakening their compatibility result', () => { + const report = reviewPersistenceSchemas(fixture(), fixture({ extraKind: true, changed: true })) + expect(report.evidence.map(item => item.kind).sort()).toEqual(['kind-added', 'type-changed']) + expect(report.evidence.find(item => item.kind === 'type-changed')?.locations[0]?.path).toBe('event:agent/inbox/spliced.data.inserted[].source[kind="changing"].value') + expect(report.roots.every(root => root.changes.some(change => change.requiresVersionBump))).toBe(true) + }) + + it('keeps ambiguous kind matches as additions and removals even when another arm is unchanged', () => { + const report = reviewPersistenceSchemas(fixture({ ambiguous: true }), fixture({ ambiguous: true, changed: true })) + expect(report.evidence.map(item => item.kind).sort()).toEqual(['variant-added', 'variant-removed']) + expect(report.evidence.every(item => item.locations.every(location => !location.path.endsWith('.value')))).toBe(true) + }) + + it('retains numeric tuple positions and stops recursion without losing sibling evidence', () => { + const report = reviewPersistenceSchemas( + fixture({ tuple: true, recursive: true }), fixture({ changed: true, tuple: true, recursive: true }), + ) + const paths = report.evidence.flatMap(item => item.locations.map(location => location.path)) + expect(paths).toContain('event:user/message.data.tuple[0]') + expect(paths).toContain('event:user/message.data.tuple[1]') + expect(paths.every(path => path.length < 200)).toBe(true) + }) + + it('separates new roots from structural definitions and preserves classifier diagnostics', () => { + const before = fixture() + const after = { ...before, roots: before.roots.slice(1) } + const report = reviewPersistenceSchemas(before, after) + expect(report.roots).toHaveLength(1) + expect(report.roots[0]?.changes).toEqual(classifyPersistenceChange(before.roots[0]!, null)) + expect(report.evidence).toEqual([]) + expect(renderPersistenceReview(report)).toContain('Root removed: `event:agent/inbox/spliced`') + }) + + it('reads explicit files without writes and rejects invalid inventories and arguments', () => { + const directory = mkdtempSync(join(tmpdir(), 'persistence-review-')) + try { + const before = join(directory, 'before.json') + const after = join(directory, 'after.json') + const oldText = JSON.stringify(fixture()) + const newText = JSON.stringify(fixture({ extraKind: true })) + writeFileSync(before, oldText) + writeFileSync(after, newText) + const args = ['--before', before, '--after', after] + expect(JSON.parse(runPersistenceReview([...args, '--json']))).toEqual(reviewPersistenceSchemas(fixture(), fixture({ extraKind: true }))) + expect(runPersistenceReview(args)).toContain('# Persistence schema review') + expect(readFileSync(before, 'utf8')).toBe(oldText) + expect(readFileSync(after, 'utf8')).toBe(newText) + expect(() => runPersistenceReview(['--before', before])).toThrow(/--after/u) + expect(() => runPersistenceReview([...args, '--write'])).toThrow() + writeFileSync(after, '{"formatVersion":99}') + expect(() => runPersistenceReview(args)).toThrow() + } finally { + rmSync(directory, { recursive: true, force: true }) + } + }) +}) diff --git a/scripts/persistence-review.ts b/scripts/persistence-review.ts new file mode 100644 index 0000000000..bd469f7d30 --- /dev/null +++ b/scripts/persistence-review.ts @@ -0,0 +1,230 @@ +/** Read-only structural explanations alongside the authoritative persistence classification. */ + +import { readFileSync } from 'node:fs' +import { resolve } from 'node:path' +import { parseArgs } from 'node:util' +import { classifyPersistenceChange, parsePersistenceSnapshot, type PersistenceTypeChange } from './persistence-changes.ts' +import { canonicalizeSchema, schemaDigest, type CanonicalSchema, type PersistenceSchemaInventory, type SchemaNode } from './persistence-schema-model.ts' +import { sourceKindGroups } from './persistence-source-policy.ts' + +/** One structural observation, shared across its containing roots. */ +export interface PersistenceReviewEvidence { + readonly kind: string + readonly field?: string + readonly before: string | null + readonly after: string | null + readonly locations: readonly { readonly root: string; readonly path: string }[] +} + +/** Human explanations cannot override the unchanged classifier results carried per root. */ +export interface PersistenceReview { + readonly schemaVersion: 1 + readonly roots: readonly { + readonly root: string + readonly before: string | null + readonly after: string | null + readonly changes: readonly PersistenceTypeChange[] + }[] + readonly evidence: readonly PersistenceReviewEvidence[] + readonly unchangedTypes: number +} + +function compareText(left: string, right: string): number { + return left < right ? -1 : left > right ? 1 : 0 +} + +function selector(schema: CanonicalSchema, index: number): string | undefined { + const node = schema.nodes[index] + if (node?.kind !== 'object') return undefined + const parts = ['kind', 'type', 'role', 'form'].flatMap((name) => { + const property = node.properties.find(property => property.name === name && !property.optional) + const value = property === undefined ? undefined : schema.nodes[property.type] + return value?.kind === 'literal' && typeof value.value === 'string' ? [`[${name}=${JSON.stringify(value.value)}]`] : [] + }) + return parts.length === 0 ? undefined : parts.join('') +} + +function propertyPath(path: string, name: string): string { + return /^[A-Za-z_$][\w$]*$/u.test(name) ? `${path}.${name}` : `${path}[${JSON.stringify(name)}]` +} + +/** + * Compare explicit inventories without editing records or changing compatibility decisions. + * @param before - parsed inventory from the chosen base. + * @param after - parsed inventory from the chosen head. + * @returns deduplicated structural evidence and exact classifier output for every changed root. + */ +export function reviewPersistenceSchemas(before: PersistenceSchemaInventory, after: PersistenceSchemaInventory): PersistenceReview { + const oldRoots = new Map(before.roots.map(root => [root.key, root])) + const newRoots = new Map(after.roots.map(root => [root.key, root])) + const evidence = new Map & { locations: Map }>() + const roots = [...new Set([...oldRoots.keys(), ...newRoots.keys()])].sort().flatMap((root) => { + const oldRoot = oldRoots.get(root) ?? null + const newRoot = newRoots.get(root) ?? null + const changes = classifyPersistenceChange(oldRoot, newRoot) + if (changes.length === 0) return [] + if (oldRoot !== null && newRoot !== null) explain(oldRoot.schema, newRoot.schema, root) + return [{ root, before: oldRoot?.digest ?? null, after: newRoot?.digest ?? null, changes }] + }) + + function explain(oldSchema: CanonicalSchema, newSchema: CanonicalSchema, root: string): void { + const oldHashes = new Map() + const newHashes = new Map() + const digest = (side: 'before' | 'after', index: number): string => { + const cache = side === 'before' ? oldHashes : newHashes + let hash = cache.get(index) + if (hash === undefined) { + hash = schemaDigest(canonicalizeSchema((side === 'before' ? oldSchema : newSchema).nodes, index)) + cache.set(index, hash) + } + return hash + } + const emit = (kind: string, left: number | null, right: number | null, path: string, field?: string): void => { + const change = { kind, ...(field === undefined ? {} : { field }), before: left === null ? null : digest('before', left), after: right === null ? null : digest('after', right) } + const key = JSON.stringify(change) + const item = evidence.get(key) ?? { ...change, locations: new Map() } + item.locations.set(JSON.stringify([root, path]), { root, path }) + evidence.set(key, item) + } + const walk = (left: number, right: number, path: string, ancestors: ReadonlySet): void => { + if (digest('before', left) === digest('after', right)) return + const pair = `${left}:${right}` + if (ancestors.has(pair)) return + const active = new Set(ancestors).add(pair) + const oldNode = oldSchema.nodes[left] as SchemaNode + const newNode = newSchema.nodes[right] as SchemaNode + if (oldNode.kind === 'object' && newNode.kind === 'object') { + const oldProperties = new Map(oldNode.properties.map(property => [property.name, property])) + const newProperties = new Map(newNode.properties.map(property => [property.name, property])) + for (const name of [...new Set([...oldProperties.keys(), ...newProperties.keys()])].sort()) { + const previous = oldProperties.get(name) + const next = newProperties.get(name) + const child = propertyPath(path, name) + if (previous === undefined || next === undefined) { + emit(previous === undefined ? 'property-added' : 'property-removed', left, right, child, name) + continue + } + if (previous.optional !== next.optional) emit(next.optional ? 'property-made-optional' : 'property-made-required', left, right, child, name) + if (JSON.stringify(previous.compatibility) !== JSON.stringify(next.compatibility)) emit('source-policy-changed', left, right, child, name) + walk(previous.type, next.type, child, active) + } + const oldIndices = new Map(oldNode.indices.map(index => [digest('before', index.key), index])) + const newIndices = new Map(newNode.indices.map(index => [digest('after', index.key), index])) + if (oldIndices.size !== newIndices.size || [...oldIndices.keys()].some(key => !newIndices.has(key))) emit('index-signature-changed', left, right, path) + for (const [key, index] of oldIndices) { + const next = newIndices.get(key) + if (next !== undefined) walk(index.value, next.value, `${path}[*]`, active) + } + } else if (oldNode.kind === 'array' && newNode.kind === 'array') { + walk(oldNode.element, newNode.element, `${path}[]`, active) + } else if (oldNode.kind === 'tuple' && newNode.kind === 'tuple') { + if (oldNode.elements.length !== newNode.elements.length) emit('tuple-length-changed', left, right, path) + for (const [position, previous] of oldNode.elements.entries()) { + const next = newNode.elements[position] + if (next === undefined) continue + const child = `${path}[${String(position)}]` + if (previous.optional !== next.optional || previous.rest !== next.rest) emit('tuple-element-cardinality-changed', left, right, child) + walk(previous.type, next.type, child, active) + } + } else if (oldNode.kind === 'union' && newNode.kind === 'union') { + const oldByHash = new Map(oldNode.types.map(index => [digest('before', index), index])) + const newByHash = new Map(newNode.types.map(index => [digest('after', index), index])) + const removed = [...oldByHash].filter(([hash]) => !newByHash.has(hash)).map(([, index]) => index) + const added = [...newByHash].filter(([hash]) => !oldByHash.has(hash)).map(([, index]) => index) + // Uniqueness includes unchanged arms: a shared discriminator cannot identify a changed sibling. + const unique = (schema: CanonicalSchema, indices: readonly number[]): Map => { + const candidates = new Map() + for (const index of indices) { + const key = selector(schema, index) + if (key !== undefined) candidates.set(key, [...candidates.get(key) ?? [], index]) + } + return new Map([...candidates].flatMap(([key, values]) => values.length === 1 ? [[key, values[0] as number]] : [])) + } + const oldSelectors = unique(oldSchema, oldNode.types) + const newSelectors = unique(newSchema, newNode.types) + const matchedOld = new Set() + const matchedNew = new Set() + for (const [key, previous] of oldSelectors) { + const next = newSelectors.get(key) + if (next === undefined || !removed.includes(previous) || !added.includes(next)) continue + walk(previous, next, path + key, active) + matchedOld.add(previous) + matchedNew.add(next) + } + const oldKinds = sourceKindGroups(oldSchema.nodes, left) + const newKinds = sourceKindGroups(newSchema.nodes, right) + for (const [side, indices, matched, schema] of [ + ['before', removed, matchedOld, oldSchema], ['after', added, matchedNew, newSchema], + ] as const) { + for (const index of indices) { + if (matched.has(index)) continue + const ownKinds = side === 'before' ? oldKinds : newKinds + const otherKinds = side === 'before' ? newKinds : oldKinds + const kind = [...ownKinds ?? []].find(([, members]) => members.includes(index))?.[0] + const wholeKind = kind !== undefined && otherKinds !== undefined && !otherKinds.has(kind) + const suffix = selector(schema, index) ?? '' + emit(`${wholeKind ? 'kind' : 'variant'}-${side === 'before' ? 'removed' : 'added'}`, + side === 'before' ? index : null, side === 'after' ? index : null, path + suffix) + } + } + } else emit('type-changed', left, right, path) + } + walk(0, 0, root, new Set()) + } + + const oldTypes = new Set(before.types.map(type => type.digest)) + return { schemaVersion: 1, roots, unchangedTypes: after.types.filter(type => oldTypes.has(type.digest)).length, + evidence: [...evidence].sort(([a], [b]) => compareText(a, b)).map(([, item]) => ({ ...item, + locations: [...item.locations.values()].sort((a, b) => compareText(a.root, b.root) || compareText(a.path, b.path)), + })) } +} + +function code(value: string): string { + return '`' + value.replaceAll('`', '\\`').replaceAll('|', '\\|') + '`' +} + +/** + * Render concise evidence separately from every authoritative root diagnostic. + * @param report - result of the explicit inventory comparison. + * @returns Markdown with full fingerprints in expandable evidence. + */ +export function renderPersistenceReview(report: PersistenceReview): string { + const lines = ['# Persistence schema review', '', `${String(report.roots.length)} changed roots; ${String(report.unchangedTypes)} unchanged type fingerprints.`, '', + '## Structural evidence', '', 'Display paths use literal discriminators. Ambiguous alternatives remain separate additions and removals; this explanation does not decide compatibility.', ''] + for (const root of report.roots) { + if (root.before === null || root.after === null) lines.push(`- Root ${root.before === null ? 'added' : 'removed'}: ${code(root.root)}.`) + } + for (const item of report.evidence) { + lines.push('', `
${item.kind}${item.field === undefined ? '' : `: ${item.field.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>')}`}`, '', + `Before: ${item.before === null ? 'absent' : code(item.before)}; after: ${item.after === null ? 'absent' : code(item.after)}.`, '', + ...item.locations.map(location => `- ${code(location.path)}`), '', '
') + } + lines.push('', '## Authoritative compatibility results', '') + for (const root of report.roots) { + lines.push(`### ${code(root.root)}`, '', `Decision: **${root.changes.some(change => change.requiresVersionBump) ? 'version-bump' : 'same-version'}**.`, '', + ...root.changes.map(change => `- ${code(change.path)}: ${change.description} (${code(change.kind)}; requiresVersionBump: ${String(change.requiresVersionBump)}).`), '') + } + return lines.join('\n').trimEnd() + '\n' +} + +/** + * Read two explicit inventory files and return Markdown or JSON without mutating either. + * @param args - --before and --after paths, and optional --json. + * @returns structural evidence and exact compatibility results. + */ +export function runPersistenceReview(args: readonly string[]): string { + const { values } = parseArgs({ args: [...args], options: { before: { type: 'string' }, after: { type: 'string' }, json: { type: 'boolean' } }, strict: true, allowPositionals: false }) + if (values.before === undefined || values.after === undefined) throw new Error('persistence review: --before and --after inventory paths are required') + const read = (path: string): PersistenceSchemaInventory => parsePersistenceSnapshot(JSON.parse(readFileSync(path, 'utf8'))) + const report = reviewPersistenceSchemas(read(values.before), read(values.after)) + return values.json ? JSON.stringify(report, null, 2) + '\n' : renderPersistenceReview(report) +} + +if (process.argv[1] !== undefined && resolve(process.argv[1]) === import.meta.filename) { + try { + process.stdout.write(runPersistenceReview(process.argv.slice(2))) + } catch (error: unknown) { + console.error(error instanceof Error ? error.message : String(error)) + process.exitCode = 1 + } +} diff --git a/scripts/persistence-schema-model.spec.ts b/scripts/persistence-schema-model.spec.ts index 2750650543..fb452b5bfa 100644 --- a/scripts/persistence-schema-model.spec.ts +++ b/scripts/persistence-schema-model.spec.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import { canonicalizeSchema, isArbitraryJsonSchema, schemaDigest, type SchemaNode } from './persistence-schema-model.ts' +import { canonicalizeSchema, isArbitraryJsonSchema, schemaDigest, type SchemaNode, type SourceCompatibility } from './persistence-schema-model.ts' const string: SchemaNode = { kind: 'primitive', type: 'string' } const number: SchemaNode = { kind: 'primitive', type: 'number' } @@ -87,3 +87,23 @@ describe('canonical persisted type graphs', () => { expect(() => canonicalizeSchema([{ kind: 'union', types: [0] }], 0)).toThrow('union cycle') }) }) + + +describe('policy-aware graph normalization', () => { + it('normalizes recorded policy fields and kind order without changing unrelated graph digests', () => { + const policy: SourceCompatibility = { version: 1, policy: 'session-source-attribution', binding: 'session.user-message.source', + discriminator: 'kind', unknownKinds: 'preserve', attributionKinds: ['b', 'a'] } + const object = (compatibility: SourceCompatibility): SchemaNode => ({ kind: 'object', indices: [], properties: [ + { name: 'source', type: 1, optional: false, compatibility }, + ] }) + const reordered = { attributionKinds: ['a', 'b', 'a'], unknownKinds: policy.unknownKinds, discriminator: policy.discriminator, + binding: policy.binding, policy: policy.policy, version: policy.version } + const left = canonicalizeSchema([object(policy), string], 0) + const right = canonicalizeSchema([object(reordered), string], 0) + expect(left).toEqual(right) + expect(schemaDigest(left)).toBe(schemaDigest(right)) + const unannotated = canonicalizeSchema([{ kind: 'object', indices: [], properties: [{ name: 'source', type: 1, optional: false }] }, string], 0) + expect(schemaDigest(left)).not.toBe(schemaDigest(unannotated)) + expect(schemaDigest(canonicalizeSchema(left.nodes, 1))).toBe(schemaDigest(canonicalizeSchema([string], 0))) + }) +}) diff --git a/scripts/persistence-schema-model.ts b/scripts/persistence-schema-model.ts index f12213b9f1..a37573cc2d 100644 --- a/scripts/persistence-schema-model.ts +++ b/scripts/persistence-schema-model.ts @@ -5,11 +5,22 @@ import { createHash } from 'node:crypto' +/** Recorded reader promise for explicitly attributed source additions. */ +export interface SourceCompatibility { + readonly version: 1 + readonly policy: 'session-source-attribution' + readonly binding: 'session.user-message.source' | 'session.developer-message.source' + readonly discriminator: 'kind' + readonly unknownKinds: 'preserve' + readonly attributionKinds: readonly string[] +} + /** One JSON property, with absence represented independently of its value type. */ export interface SchemaProperty { readonly name: string readonly type: number readonly optional: boolean + readonly compatibility?: SourceCompatibility } /** One positional tuple element. */ @@ -55,7 +66,7 @@ export interface PersistenceType { /** Complete current-source persistence inventory; version pins normalization too. */ export interface PersistenceSchemaInventory { - readonly formatVersion: 1 + readonly formatVersion: 1 | 2 readonly roots: readonly PersistenceRoot[] readonly types: readonly PersistenceType[] } @@ -85,7 +96,13 @@ function mapNode(node: SchemaNode, ref: (id: number) => number): SchemaNode { case 'object': return { kind: 'object', properties: [...node.properties].sort((left, right) => compare(left.name, right.name)) - .map(property => ({ name: property.name, type: ref(property.type), optional: property.optional })), + .map(property => ({ name: property.name, type: ref(property.type), optional: property.optional, + ...(property.compatibility === undefined ? {} : { compatibility: { + version: property.compatibility.version, policy: property.compatibility.policy, binding: property.compatibility.binding, + discriminator: property.compatibility.discriminator, unknownKinds: property.compatibility.unknownKinds, + attributionKinds: [...new Set(property.compatibility.attributionKinds)].sort(compare), + } }), + })), indices: node.indices.map(index => ({ key: ref(index.key), value: ref(index.value) })) .sort((left, right) => left.key - right.key || left.value - right.value), } @@ -215,7 +232,17 @@ function normalizeUnions(input: readonly SchemaNode[]): SchemaNode[] { * @returns lowercase hexadecimal digest. */ export function schemaDigest(schema: CanonicalSchema): string { - return createHash('sha256').update('dsh-persistence-schema-v1\n').update(JSON.stringify(schema)).digest('hex') + const version = schemaHasCompatibility(schema) ? 2 : 1 + return createHash('sha256').update(`dsh-persistence-schema-v${String(version)}\n`).update(JSON.stringify(schema)).digest('hex') +} + +/** + * Identify graphs that require the policy-aware fingerprint domain. + * @param schema - resolved persisted type. + * @returns whether any reachable property records compatibility metadata. + */ +export function schemaHasCompatibility(schema: CanonicalSchema): boolean { + return schema.nodes.some(node => node.kind === 'object' && node.properties.some(property => property.compatibility !== undefined)) } /** diff --git a/scripts/persistence-schema.spec.ts b/scripts/persistence-schema.spec.ts index 1ebdced397..f6517faa3e 100644 --- a/scripts/persistence-schema.spec.ts +++ b/scripts/persistence-schema.spec.ts @@ -4,6 +4,7 @@ import { dirname, join, resolve } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' import { collectLogEvents } from './gen-persistence-catalog.ts' import { extractPersistenceSchema } from './persistence-schema.ts' +import { classifyPersistenceChange, parsePersistenceSnapshot } from './persistence-changes.ts' import { canonicalizeSchema, isArbitraryJsonSchema, schemaDigest, type PersistenceSchemaInventory } from './persistence-schema-model.ts' const roots: string[] = [] @@ -55,6 +56,16 @@ function event(inventory: PersistenceSchemaInventory, name = 'test/record'): str } describe('persistent source type extraction', () => { + it('keeps authored names and anonymous declaration locations without synthesized traversal names', () => { + const root = fixture('interface Section { text: string }\nexport interface Payload { inserted: { source: { kind: "hooks-codex"; sections: Section[] } }[] }') + const inventory = extractPersistenceSchema(root) + expect(inventory.types.flatMap(type => type.names).every(name => name.includes('#'))).toBe(true) + expect(inventory.types.some(type => type.names.includes('packages/domain/payload/src/types.ts#Section'))).toBe(true) + expect(inventory.types.some(type => type.names.length === 0 && type.sources.includes('packages/domain/payload/src/types.ts:2'))).toBe(true) + expect(inventory.types.some(type => type.schema.nodes[0]?.kind === 'array' && type.names.length === 0)).toBe(true) + expect(parsePersistenceSnapshot(inventory)).toEqual(inventory) + }) + it('ignores alias names, files, documentation, readonly, brands and property order', () => { const left = fixture('declare const brand: unique symbol; type Id = string & {readonly [brand]: "Id"}; export interface Payload { readonly id: Id; value?: number }') const right = fixture('type Renamed = string; /** Different documentation. */ export type Payload = {value?: number; id: Renamed}') @@ -322,3 +333,165 @@ interface SessionEventMap { } }) }) + +function sourceFixture(producers: string, role: 'user' | 'developer' = 'user'): string { + const root = fixture(`export type Payload = import('../../../llm/llm/src/message.js').${role === 'user' ? 'UserMessage' : 'DeveloperMessage'}`) + put(root, 'packages/llm/llm/src/message.ts', ` +export interface MessageSourceMap { + semantic: {kind: 'semantic'; value: string} + ${producers} +} +export type MessageSource = MessageSourceMap[keyof MessageSourceMap] +export interface MessageBase { + /** @persistenceSource user developer */ + source: MessageSource +} +export interface UserMessage extends MessageBase { + role: 'user' +} +export interface DeveloperMessage extends MessageBase { + role: 'developer' +} +`) + return root +} + +const ATTRIBUTION = '/** @persistenceAttribution */' + +describe('source compatibility authoring', () => { + it.each(['user', 'developer'] as const)('records the %s binding and qualifies complete wire-kind groups', (role) => { + const before = extractPersistenceSchema(sourceFixture('', role)) + const after = extractPersistenceSchema(sourceFixture(`${ATTRIBUTION} unrelatedMapKey: {kind: 'attribution'} & ({form?: never} | {form: 'notice'; summary: string})`, role)) + expect(after.formatVersion).toBe(2) + const root = after.roots.find(root => root.kind === 'event')! + const property = root.schema.nodes.flatMap(node => node.kind === 'object' ? node.properties : []).find(property => property.compatibility !== undefined)! + expect(property.compatibility).toEqual({ version: 1, policy: 'session-source-attribution', binding: `session.${role}-message.source`, + discriminator: 'kind', unknownKinds: 'preserve', attributionKinds: ['attribution'] }) + expect(classifyPersistenceChange(before.roots.find(root => root.kind === 'event')!, root)) + .toEqual([expect.objectContaining({ kind: 'attribution-kind-added', requiresVersionBump: false })]) + expect(parsePersistenceSnapshot({ ...after, types: [] })).toEqual({ ...after, types: [] }) + }) + + it('binds inherited source declarations only on explicitly eligible required roles', () => { + const root = sourceFixture("system: {kind: 'system-prompt'}; model: {kind: 'model'}; tool: {kind: 'tool'}") + const core = 'packages/llm/llm/src/message.ts' + put(root, core, readFileSync(join(root, core), 'utf8') + ` +export interface SystemMessage extends MessageBase {role: 'system'; source: MessageSourceMap['system']} +export interface AssistantMessage extends MessageBase {role: 'assistant'; source: MessageSourceMap['model']} +export interface ToolMessage extends MessageBase {role: 'tool'; source: MessageSourceMap['tool']} +export interface UnlistedRole extends MessageBase {role: 'other'} +export interface OptionalRole extends MessageBase {role?: 'user'} +export interface BroadRole extends MessageBase {role: 'user' | 'developer'} +export interface OverriddenUser extends MessageBase {role: 'user'; source: MessageSource} +`) + put(root, 'packages/domain/payload/src/types.ts', ` +import type * as M from '../../../llm/llm/src/message.js' +export interface Payload { + user: M.UserMessage + developer: M.DeveloperMessage + system: M.SystemMessage + assistant: M.AssistantMessage + tool: M.ToolMessage + bare: M.MessageBase + unlisted: M.UnlistedRole + optional: M.OptionalRole + broad: M.BroadRole + override: M.OverriddenUser + unrelated: {role: 'user'; source: M.MessageSource} +} +`) + const schema = extractPersistenceSchema(root).roots.find(root => root.kind === 'event')!.schema + const payload = schema.nodes.find(node => node.kind === 'object' && node.properties.some(property => property.name === 'unrelated'))! + if (payload.kind !== 'object') throw new Error('missing payload fixture') + const bindings = Object.fromEntries(payload.properties.map((property) => { + const message = schema.nodes[property.type] + if (message?.kind !== 'object') throw new Error('missing message fixture') + return [property.name, message.properties.find(property => property.name === 'source')?.compatibility?.binding] + })) + expect(bindings).toEqual({ + user: 'session.user-message.source', developer: 'session.developer-message.source', + system: undefined, assistant: undefined, tool: undefined, bare: undefined, unlisted: undefined, + optional: undefined, broad: undefined, override: undefined, unrelated: undefined, + }) + }) + + it('keeps roles outside the annotation list strict', () => { + const root = sourceFixture('', 'developer') + const core = 'packages/llm/llm/src/message.ts' + put(root, core, readFileSync(join(root, core), 'utf8').replace('@persistenceSource user developer', '@persistenceSource user')) + const schema = extractPersistenceSchema(root) + expect(schema.formatVersion).toBe(1) + expect(schema.roots.flatMap(root => root.schema.nodes).flatMap(node => node.kind === 'object' ? node.properties : []) + .every(property => property.compatibility === undefined)).toBe(true) + }) + + it.each(['', 'user user', 'assistant', 'user developer tool'])('rejects invalid eligible role list %s', (roles) => { + const root = sourceFixture('') + const core = 'packages/llm/llm/src/message.ts' + put(root, core, readFileSync(join(root, core), 'utf8').replace('@persistenceSource user developer', `@persistenceSource ${roles}`)) + expect(() => extractPersistenceSchema(root)).toThrow('invalid @persistenceSource binding') + }) + + it('keeps qualification independent of map-key spelling, source order and union-arm order', () => { + const left = sourceFixture(`${ATTRIBUTION} left: {kind: 'attribution'} & ({form?: never} | {form: 'notice'; summary: string})`) + const right = sourceFixture(`${ATTRIBUTION} right: ({summary: string; form: 'notice'} | {form?: never}) & {kind: 'attribution'}`) + expect(extractPersistenceSchema(left).roots).toEqual(extractPersistenceSchema(right).roots) + }) + + it('finds producer-owned qualifications in independently compiled module augmentations', () => { + const root = sourceFixture('') + const before = extractPersistenceSchema(root) + put(root, 'packages/llm/llm/src/producer.ts', `import './message.js' +declare module './message.js' { + interface MessageSourceMap { + ${ATTRIBUTION} + catalogKey: {kind: 'external-producer'} + } +}`) + const after = extractPersistenceSchema(root) + expect(classifyPersistenceChange(before.roots.find(root => root.kind === 'event')!, after.roots.find(root => root.kind === 'event')!)) + .toEqual([expect.objectContaining({ kind: 'attribution-kind-added', requiresVersionBump: false })]) + }) + + it('does not qualify unmarked additions or structurally equal unbound fields', () => { + const before = sourceFixture('') + const after = sourceFixture("unmarked: {kind: 'new'}") + expect(classifyPersistenceChange(extractPersistenceSchema(before).roots.find(root => root.kind === 'event')!, + extractPersistenceSchema(after).roots.find(root => root.kind === 'event')!).some(change => change.requiresVersionBump)).toBe(true) + const left = fixture("export interface Payload { source: {kind: 'old'} }") + const right = fixture("export interface Payload { source: {kind: 'old'} | {kind: 'new'} }") + expect(classifyPersistenceChange(extractPersistenceSchema(left).roots.find(root => root.kind === 'event')!, + extractPersistenceSchema(right).roots.find(root => root.kind === 'event')!).some(change => change.requiresVersionBump)).toBe(true) + }) + + it.each([ + [`${ATTRIBUTION} broad: {kind: string}`, 'one literal wire kind'], + [`${ATTRIBUTION} optional: {kind?: 'new'}`, 'one literal wire kind'], + [`${ATTRIBUTION} ambiguous: {kind: 'a'} | {kind: 'b'}`, 'one literal wire kind'], + [`${ATTRIBUTION} duplicate: {kind: 'semantic'}`, 'conflicting attribution'], + [`${ATTRIBUTION} first: {kind: 'same'};\n${ATTRIBUTION} second: {kind: 'same'; value: number}`, 'conflicting attribution'], + ['broadUnmarked: {kind: string}', 'invalid source compatibility'], + ...['model', 'tool', 'system-prompt', 'compact-checkpoint', 'dsh-session-title-llm', 'tool-registry', 'runtime-context', 'plugin'] + .map(kind => [`${ATTRIBUTION} forbidden: {kind: '${kind}'}`, 'invalid source compatibility']), + ["/** @persistenceAttribution yes */ invalid: {kind: 'new'}", 'invalid @persistenceAttribution'], + ['/** @persistenceAttribution\n * @persistenceAttribution */ duplicateTag: {kind: \'new\'}', 'invalid @persistenceAttribution'], + ])('rejects invalid producer declaration %s', (producer, error) => { + expect(() => extractPersistenceSchema(sourceFixture(producer))).toThrow(error) + }) + + it.each(['auto-review', 'compact-basic', 'code-mode'])('rejects reintroduced historical kind %s as new attribution', (kind) => { + for (const role of ['user', 'developer'] as const) { + const root = sourceFixture(`${ATTRIBUTION} reintroduced: {kind: '${kind}'}`, role) + expect(() => extractPersistenceSchema(root)).toThrow('invalid source compatibility') + } + }) + + it('rejects attribution and binding annotations outside their declared owners', () => { + const misplaced = sourceFixture('') + put(misplaced, 'packages/domain/payload/src/types.ts', `${ATTRIBUTION} export interface Payload {kind: 'new'}`) + expect(() => extractPersistenceSchema(misplaced)).toThrow('must annotate a MessageSourceMap producer property') + const source = sourceFixture('') + put(source, 'packages/domain/payload/src/types.ts', "export interface Payload {role: 'user';\n/** @persistenceSource user */\nsource: {kind: 'new'}}") + expect(() => extractPersistenceSchema(source)).toThrow('invalid @persistenceSource binding') + }) +}) diff --git a/scripts/persistence-schema.ts b/scripts/persistence-schema.ts index 2120b0874c..7293196d7e 100644 --- a/scripts/persistence-schema.ts +++ b/scripts/persistence-schema.ts @@ -4,15 +4,19 @@ import { readFileSync } from 'node:fs' import { dirname, extname, relative, resolve, sep } from 'node:path' import ts from 'typescript' import { collectLogEvents } from './persistence-catalog-source.ts' +import { sourceCompatibilityAnnotations } from './persistence-source-annotations.ts' +import { validSourceCompatibility } from './persistence-source-policy.ts' import { canonicalizeSchema, schemaChildren, schemaDigest, + schemaHasCompatibility, type PersistenceRoot, type PersistenceSchemaInventory, type PersistenceType, type SchemaNode, type SchemaProperty, + type SourceCompatibility, } from './persistence-schema-model.ts' interface DeclarationMetadata { @@ -207,6 +211,7 @@ class SchemaExtractor { private readonly declarationMetadata = new Map() private readonly checker: ts.TypeChecker + private readonly sourcePolicies: ReadonlyMap constructor( private readonly root: string, @@ -214,6 +219,7 @@ class SchemaExtractor { private readonly declarationSources: ReadonlyMap, ) { this.checker = program.getTypeChecker() + this.sourcePolicies = sourceCompatibilityAnnotations(root, program) } convert(type: ts.Type, site: ts.Node): number { @@ -294,7 +300,11 @@ class SchemaExtractor { if (optional && (propertyType.isUnion() ? propertyType.types : [propertyType]) .every(member => (member.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Never)) !== 0)) continue const child = this.valueType(propertyType, declaration, optional) - properties.push({ name: property.getName(), type: child, optional }) + const policies = this.propertyPolicies(type, property, declaration) + if (policies.length > 1) this.fail(type, declaration, 'ambiguous source compatibility binding') + properties.push({ name: property.getName(), type: child, optional, + ...(policies[0] === undefined ? {} : { compatibility: policies[0] }), + }) } const indices = this.checker.getIndexInfosOfType(type).map(info => ({ key: this.convert(info.keyType, site), @@ -304,6 +314,19 @@ class SchemaExtractor { return { kind: 'object', properties, indices } } + private propertyPolicies(type: ts.Type, property: ts.Symbol, site: ts.Node): readonly SourceCompatibility[] { + const declared = (property.declarations ?? []).flatMap(declaration => this.sourcePolicies.get(declaration) ?? []) + if (declared.length === 0) return [] + const roleProperty = this.checker.getPropertyOfType(type, 'role') + if (roleProperty === undefined || (roleProperty.flags & ts.SymbolFlags.Optional) !== 0) return [] + const role = this.checker.getTypeOfSymbolAtLocation(roleProperty, site) + if (!(role.flags & ts.TypeFlags.StringLiteral)) return [] + const binding = (role as ts.StringLiteralType).value === 'user' ? 'session.user-message.source' + : (role as ts.StringLiteralType).value === 'developer' ? 'session.developer-message.source' + : undefined + return declared.filter(policy => policy.binding === binding) + } + private rejectClass(type: ts.Type, site: ts.Node): void { const symbol = type.getSymbol() if (symbol?.declarations?.some(declaration => ts.isClassDeclaration(declaration) || ts.isClassExpression(declaration))) { @@ -354,6 +377,14 @@ class SchemaExtractor { } inventory(inputs: readonly RootInput[]): PersistenceSchemaInventory { + for (const node of this.nodes) { + if (node.kind !== 'object') continue + for (const property of node.properties) { + if (property.compatibility !== undefined && !validSourceCompatibility(this.nodes, node, property)) { + throw new PersistenceSchemaError('persistence schema: invalid source compatibility binding or attribution kinds') + } + } + } const roots = inputs.map((input) => { const schema = canonicalizeSchema(this.nodes, input.node) return { @@ -366,22 +397,13 @@ class SchemaExtractor { } }) const found = new Set() - const paths = new Map>() - const visit = (id: number, path: string): void => { - const names = paths.get(id) ?? new Set() - names.add(path) - paths.set(id, names) + const visit = (id: number): void => { if (found.has(id)) return found.add(id) const node = this.nodes[id] as SchemaNode - if (node.kind === 'object') { - for (const property of node.properties) visit(property.type, `${path}.${property.name}`) - for (const index of node.indices) { visit(index.key, `${path}.[key]`); visit(index.value, `${path}.[value]`) } - } else { - for (const [index, child] of schemaChildren(node).entries()) visit(child, `${path}[${String(index)}]`) - } + for (const child of schemaChildren(node)) visit(child) } - for (const input of inputs) visit(input.node, input.key) + for (const input of inputs) visit(input.node) const types = new Map; sources: Set }>() for (const id of found) { const schema = canonicalizeSchema(this.nodes, id) @@ -390,14 +412,10 @@ class SchemaExtractor { const declarationMetadata = this.declarationMetadata.get(id) for (const name of declarationMetadata?.names ?? []) item.names.add(name) for (const source of declarationMetadata?.sources ?? []) item.sources.add(source) - const kind = schema.nodes[0]?.kind - if (kind !== 'primitive' && kind !== 'literal' && (declarationMetadata === undefined || declarationMetadata.names.size === 0)) { - for (const path of paths.get(id) ?? []) item.names.add(path) - } types.set(digest, item) } return { - formatVersion: 1, + formatVersion: roots.some(root => schemaHasCompatibility(root.schema)) ? 2 : 1, roots, types: [...types].sort(([left], [right]) => compare(left, right)).map(([digest, item]) => ({ digest, diff --git a/scripts/persistence-source-annotations.ts b/scripts/persistence-source-annotations.ts new file mode 100644 index 0000000000..2f22e1d4ef --- /dev/null +++ b/scripts/persistence-source-annotations.ts @@ -0,0 +1,81 @@ +/** Resolve producer opt-ins and core-owned source bindings before schema extraction. */ + +import { relative, resolve, sep } from 'node:path' +import ts from 'typescript' +import type { SourceCompatibility } from './persistence-schema-model.ts' + +const CORE_SOURCE = 'packages/llm/llm/src/message.ts' + +/** + * Resolve explicit authoring annotations without using type names in recorded history. + * @param root - repository root. + * @param program - the complete source-only persistence compiler program. + * @returns policies keyed by the original source property declaration. + */ +export function sourceCompatibilityAnnotations( + root: string, program: ts.Program, +): ReadonlyMap { + const checker = program.getTypeChecker() + const bindings = new Map() + const qualifications = new Set() + const core = program.getSourceFile(resolve(root, CORE_SOURCE)) + for (const file of program.getSourceFiles()) { + const path = relative(root, file.fileName).split(sep).join('/') + if (!path.startsWith('packages/') || path.includes('/node_modules/')) continue + const visit = (node: ts.Node): void => { + for (const tag of ts.getJSDocTags(node)) { + if (tag.tagName.text === 'persistenceSource') { + const roles = typeof tag.comment === 'string' ? tag.comment.trim().split(/\s+/u) : [] + if (!ts.isPropertySignature(node) || file !== core || node.name.getText() !== 'source' + || !ts.isInterfaceDeclaration(node.parent) || node.parent.name.text !== 'MessageBase' + || roles.length === 0 || roles.some(role => role !== 'user' && role !== 'developer') + || new Set(roles).size !== roles.length || bindings.has(node)) { + throw new Error(`persistence schema: invalid @persistenceSource binding in ${path}`) + } + bindings.set(node, roles as ('user' | 'developer')[]) + } + if (tag.tagName.text === 'persistenceAttribution') { + if (tag.comment !== undefined || qualifications.has(node)) throw new Error(`persistence schema: invalid @persistenceAttribution in ${path}`) + qualifications.add(node) + } + } + ts.forEachChild(node, visit) + } + visit(file) + } + const sourceMap = core?.statements.find((node): node is ts.InterfaceDeclaration => ts.isInterfaceDeclaration(node) && node.name.text === 'MessageSourceMap') + const byKind = new Map() + if (sourceMap !== undefined) { + for (const property of checker.getPropertiesOfType(checker.getTypeAtLocation(sourceMap))) { + const declarations = property.declarations ?? [] + const marked = declarations.filter(declaration => qualifications.has(declaration)) + for (const declaration of marked) qualifications.delete(declaration) + if (marked.length !== 0 && marked.length !== declarations.length) throw new Error(`persistence schema: conflicting attribution for ${property.name}`) + const site = property.valueDeclaration ?? declarations[0] ?? sourceMap + const type = checker.getTypeOfSymbolAtLocation(property, site) + const kinds = new Set() + for (const alternative of type.isUnion() ? type.types : [type]) { + const discriminator = alternative.getProperty('kind') + const kind = discriminator === undefined ? undefined : checker.getTypeOfSymbolAtLocation(discriminator, site) + if (discriminator === undefined || (discriminator.flags & ts.SymbolFlags.Optional) !== 0 || kind === undefined + || !(kind.flags & ts.TypeFlags.StringLiteral) || (kind as ts.StringLiteralType).value.length === 0) { + if (marked.length > 0) throw new Error(`persistence schema: attribution ${property.name} requires one literal wire kind`) + continue + } + kinds.add((kind as ts.StringLiteralType).value) + } + if (marked.length > 0 && kinds.size !== 1) throw new Error(`persistence schema: attribution ${property.name} requires one literal wire kind`) + for (const kind of kinds) { + const qualified = marked.length > 0 + if (byKind.has(kind) && (byKind.get(kind) === true || qualified)) throw new Error(`persistence schema: conflicting attribution for wire kind ${kind}`) + byKind.set(kind, qualified) + } + } + } + if (qualifications.size > 0) throw new Error('persistence schema: @persistenceAttribution must annotate a MessageSourceMap producer property') + const attributionKinds = [...byKind].filter(([, qualified]) => qualified).map(([kind]) => kind).sort() + return new Map([...bindings].map(([declaration, roles]) => [declaration, roles.map(role => ({ + version: 1, policy: 'session-source-attribution', binding: role === 'user' ? 'session.user-message.source' : 'session.developer-message.source', + discriminator: 'kind', unknownKinds: 'preserve', attributionKinds, + }))])) +} diff --git a/scripts/persistence-source-policy.ts b/scripts/persistence-source-policy.ts new file mode 100644 index 0000000000..6af2f32011 --- /dev/null +++ b/scripts/persistence-source-policy.ts @@ -0,0 +1,69 @@ +/** Literal source groups and the supported reader promise saved in schema history. */ + +import type { SchemaNode, SchemaProperty, SourceCompatibility } from './persistence-schema-model.ts' + +// Reserve role and shared-consumer identities, frozen rename targets, and request-only producer identities against reuse. +// Existing kinds outside this set also reject retroactive qualification during comparison. +const RESERVED_SOURCE_KINDS = new Set([ + 'user', 'model', 'tool', 'system-prompt', 'compact-checkpoint', 'dsh-session-title-llm', 'tool-registry', 'runtime-context', 'plugin', + 'auto-review', 'compact-basic', 'code-mode', +]) + +/** + * Group source alternatives by their required literal wire discriminator. + * @param nodes - self-contained type graph. + * @param index - source property value. + * @returns kind groups, or undefined when any alternative is not a closed source record. + */ +export function sourceKindGroups(nodes: readonly SchemaNode[], index: number): Map | undefined { + const source = nodes[index] + const alternatives = source?.kind === 'union' ? source.types : [index] + const groups = new Map() + for (const alternative of alternatives) { + const node = nodes[alternative] + if (node?.kind !== 'object') return undefined + const property = node.properties.find(property => property.name === 'kind') + const kind = property === undefined ? undefined : nodes[property.type] + if (property?.optional !== false || kind?.kind !== 'literal' || typeof kind.value !== 'string' || kind.value.length === 0) return undefined + const group = groups.get(kind.value) ?? [] + group.push(alternative) + groups.set(kind.value, group) + } + return groups +} + +/** + * Validate the supported policy and its containing message/source declaration. + * @param nodes - self-contained graph. + * @param owner - object carrying the explicitly bound source property. + * @param property - bound source property. + * @returns whether the metadata authorizes source-group comparison. + */ +export function validSourceCompatibility( + nodes: readonly SchemaNode[], owner: SchemaNode, property: SchemaProperty, +): boolean { + const policy = property.compatibility + if (policy === undefined || property.name !== 'source' || property.optional || owner.kind !== 'object') return false + const roleProperty = owner.properties.find(property => property.name === 'role') + const role = roleProperty === undefined ? undefined : nodes[roleProperty.type] + if (roleProperty?.optional !== false || role?.kind !== 'literal' + || !(role.value === 'user' && policy.binding === 'session.user-message.source' + || role.value === 'developer' && policy.binding === 'session.developer-message.source')) return false + const groups = sourceKindGroups(nodes, property.type) + return groups !== undefined && policy.attributionKinds.every(kind => groups.has(kind) && !RESERVED_SOURCE_KINDS.has(kind)) +} + +/** + * Check that both recorded promises agree and no existing kind changes qualification. + * Both inputs are validated v1 policies with fixed policy, discriminator, and preservation fields. + * @param before - predecessor promise. + * @param after - successor promise. + * @param existingKinds - predecessor wire kinds, including semantic groups. + * @returns whether the additive rule applies to this transition. + */ +export function matchingSourceCompatibility( + before: SourceCompatibility, after: SourceCompatibility, existingKinds: Iterable, +): boolean { + return before.binding === after.binding + && [...existingKinds].every(kind => before.attributionKinds.includes(kind) === after.attributionKinds.includes(kind)) +} diff --git a/scripts/render-persistence-schema.spec.ts b/scripts/render-persistence-schema.spec.ts index 7b1577e6a7..129219532b 100644 --- a/scripts/render-persistence-schema.spec.ts +++ b/scripts/render-persistence-schema.spec.ts @@ -1,8 +1,35 @@ /** Linked catalog regressions for transitive changes and shared definitions. */ import { describe, expect, it } from 'vitest' -import { canonicalizeSchema, schemaDigest, type PersistenceSchemaInventory, type PersistenceType, type SchemaNode } from './persistence-schema-model.ts' +import { canonicalizeSchema, schemaDigest, type PersistenceRoot, type PersistenceSchemaInventory, type PersistenceType, type SchemaNode } from './persistence-schema-model.ts' import { renderPersistenceSchemaDefinitions, renderPersistenceSchemaIndex } from './render-persistence-schema.ts' +import { render } from './gen-persistence-catalog.ts' +import { classifyPersistenceChange } from './persistence-changes.ts' + +function eventRoot( + event: string, + nodes: readonly SchemaNode[], + types: Map, + metadata: (index: number) => Pick, +): PersistenceRoot { + nodes.forEach((_, index) => { + const schema = canonicalizeSchema(nodes, index) + const digest = schemaDigest(schema) + if (!types.has(digest)) types.set(digest, { digest, schema, ...metadata(index) }) + }) + const schema = canonicalizeSchema(nodes, 0) + return { key: `event:${event}`, kind: 'event', event, surface: false, digest: schemaDigest(schema), schema } +} + +function recursiveFixture(sources: readonly string[] = []): PersistenceSchemaInventory { + const schema = canonicalizeSchema([{ kind: 'object', properties: [{ name: 'next', type: 0, optional: true }], indices: [] }], 0) + const digest = schemaDigest(schema) + return { + formatVersion: 1, + roots: [{ key: 'SessionHeader', kind: 'header', digest, schema }], + types: [{ digest, schema, names: ['Recursive'], sources }], + } +} function fixture(optional = true): PersistenceSchemaInventory { const types = new Map() @@ -14,13 +41,9 @@ function fixture(optional = true): PersistenceSchemaInventory { { kind: 'object', properties: [{ name: 'reason', type: 4, optional }], indices: [] }, { kind: 'primitive', type: 'string' }, ] - nodes.forEach((_, index) => { - const schema = canonicalizeSchema(nodes, index) - const digest = schemaDigest(schema) - if (!types.has(digest)) types.set(digest, { digest, schema, names: index === 3 ? ['ErrorInfo'] : [], sources: index === 3 ? ['packages/core/example/src/types.ts:8'] : [] }) - }) - const schema = canonicalizeSchema(nodes, 0) - return { key: `event:${event}`, kind: 'event' as const, event, surface: false, digest: schemaDigest(schema), schema } + return eventRoot(event, nodes, types, index => ({ + names: index === 3 ? ['ErrorInfo'] : [], sources: index === 3 ? ['packages/core/example/src/types.ts:8'] : [], + })) }) return { formatVersion: 1, roots, types: [...types.values()] } } @@ -71,13 +94,7 @@ describe('persistence schema catalog', () => { }) it('renders a recursive definition through a finite self-reference', () => { - const schema = canonicalizeSchema([{ kind: 'object', properties: [{ name: 'next', type: 0, optional: true }], indices: [] }], 0) - const digest = schemaDigest(schema) - const inventory: PersistenceSchemaInventory = { - formatVersion: 1, - roots: [{ key: 'SessionHeader', kind: 'header', digest, schema }], - types: [{ digest, schema, names: ['Recursive'], sources: [] }], - } + const inventory = recursiveFixture() expect(renderPersistenceSchemaDefinitions(inventory)).toContain('| `next` | optional | [`Recursive`](#persistence-type-recursive) |') }) @@ -94,3 +111,239 @@ describe('persistence schema catalog', () => { expect(rendered).not.toContain('### `SessionHeader.agentPreset`') }) }) + +function producerFixture(kinds: readonly string[], events: readonly string[]): PersistenceSchemaInventory { + const types = new Map() + const roots = events.map((event) => { + const nodes: SchemaNode[] = [ + { kind: 'object', properties: [{ name: 'type', type: 1, optional: false }, { name: 'data', type: 2, optional: false }], indices: [] }, + { kind: 'literal', value: event }, + { kind: 'object', properties: [{ name: 'source', type: 3, optional: false }], indices: [] }, + { kind: 'union', types: kinds.map((_, index) => 4 + index * 2) }, + ...kinds.flatMap((kind, index): SchemaNode[] => [ + { kind: 'object', properties: [{ name: 'kind', type: 5 + index * 2, optional: false }], indices: [] }, + { kind: 'literal', value: kind }, + ]), + ] + return eventRoot(event, nodes, types, index => ({ + names: index >= 4 && index % 2 === 0 ? [`event:${event}.data.source[${String((index - 4) / 2)}]`] : [], sources: [], + })) + }) + return { formatVersion: 1, roots, types: [...types.values()] } +} + +function currentDefinitions(inventory: PersistenceSchemaInventory): string { + return renderPersistenceSchemaDefinitions(inventory, 'en', undefined, 2, 'current') +} + +function assertLinkedOnce(markdown: string): void { + const anchors = [...markdown.matchAll(/<\/a>/gu)].map(match => match[1]) + expect(new Set(anchors).size).toBe(anchors.length) + for (const match of markdown.matchAll(/\]\(#(persistence-type-[^)]+)\)/gu)) { + expect(anchors, `missing target ${match[1]}`).toContain(match[1]) + } +} + +describe('current persistence schema anchors', () => { + it('names shared arrays by their declared elements independent of the first reaching root', () => { + const nodes: SchemaNode[] = [ + { kind: 'array', element: 1 }, + { kind: 'object', properties: [{ name: 'text', type: 2, optional: false }], indices: [] }, + { kind: 'primitive', type: 'string' }, + ] + const types = new Map() + const root = eventRoot('second/event', nodes, types, index => ({ names: index === 1 ? ['ContextSnapshotSection'] : [], sources: [] })) + const inventory: PersistenceSchemaInventory = { formatVersion: 1, roots: [root], types: [...types.values()] } + const rendered = currentDefinitions(inventory) + expect(rendered).toContain('### `ContextSnapshotSection[]`') + const withEarlierRoot = { ...inventory, roots: [{ ...root, key: 'event:first/event' }, root] } + expect(currentDefinitions(withEarlierRoot)).toContain('### `ContextSnapshotSection[]`') + expect(rendered).not.toContain('### `event:second/event`') + assertLinkedOnce(currentDefinitions(withEarlierRoot)) + }) + + it('shows every kind/form arm, including absent, optional, broad and colliding forms', () => { + const nodes: SchemaNode[] = [ + { kind: 'union', types: [1, 2, 3, 4, 5] }, + { kind: 'object', properties: [{ name: 'kind', type: 6, optional: false }], indices: [] }, + { kind: 'object', properties: [{ name: 'kind', type: 6, optional: false }, { name: 'form', type: 7, optional: false }, { name: 'summary', type: 8, optional: false }], indices: [] }, + { kind: 'object', properties: [{ name: 'kind', type: 6, optional: false }, { name: 'form', type: 7, optional: false }, { name: 'other', type: 8, optional: false }], indices: [] }, + { kind: 'object', properties: [{ name: 'kind', type: 6, optional: false }, { name: 'form', type: 8, optional: true }], indices: [] }, + { kind: 'object', properties: [{ name: 'kind', type: 6, optional: false }, { name: 'form', type: 9, optional: false }], indices: [{ key: 8, value: 8 }] }, + { kind: 'literal', value: 'hook|"quoted' }, + { kind: 'literal', value: 'notice' }, + { kind: 'primitive', type: 'string' }, + { kind: 'union', types: [7, 10] }, + { kind: 'literal', value: 'snapshot' }, + ] + const types = new Map() + const root = eventRoot('source/event', nodes, types, () => ({ names: [], sources: [] })) + const inventory: PersistenceSchemaInventory = { formatVersion: 1, roots: [root], types: [...types.values()] } + const rendered = currentDefinitions(inventory) + expect(rendered).toContain('| `hook\\|"quoted` | not declared | none |') + expect(rendered).toContain('| `hook\\|"quoted` | `string` (optional) | none |') + expect(rendered.match(/\| `hook\\\|"quoted` \|/gu)).toHaveLength(5) + expect(rendered).toContain('index signature') + expect(rendered).toContain('other }`') + expect(rendered).toContain('summary }`') + assertLinkedOnce(rendered) + const reordered = { ...inventory, types: [...inventory.types].reverse() } + expect(currentDefinitions(reordered)).toBe(rendered) + }) + + it('falls back to complete unions for optional or broad kind discriminators', () => { + for (const optional of [true, false]) { + const nodes: SchemaNode[] = [ + { kind: 'union', types: [1, 2] }, + { kind: 'object', properties: [{ name: 'kind', type: optional ? 3 : 4, optional }], indices: [] }, + { kind: 'object', properties: [{ name: 'kind', type: 3, optional: false }], indices: [] }, + { kind: 'literal', value: 'example' }, + { kind: 'primitive', type: 'string' }, + ] + const types = new Map() + const root = eventRoot('broad/event', nodes, types, () => ({ names: [], sources: [] })) + const rendered = currentDefinitions({ formatVersion: 1, roots: [root], types: [...types.values()] }) + expect(rendered).toContain('One of:') + expect(rendered).not.toContain('| kind | Form property |') + assertLinkedOnce(rendered) + } + }) + + it('bounds labels for anonymous recursive arrays', () => { + const schema = canonicalizeSchema([{ kind: 'array', element: 0 }], 0) + const digest = schemaDigest(schema) + const rendered = currentDefinitions({ formatVersion: 1, roots: [], types: [{ schema, digest, names: [], sources: [] }] }) + expect(rendered).toContain('### `array[]`') + assertLinkedOnce(rendered) + expect(rendered.length).toBeLessThan(1000) + }) + + it('labels empty objects without padding while preserving structural links and historical labels', () => { + const nodes: SchemaNode[] = [ + { kind: 'object', properties: [{ name: 'type', type: 1, optional: false }, { name: 'data', type: 2, optional: false }], indices: [] }, + { kind: 'literal', value: 'empty/event' }, + { kind: 'array', element: 3 }, + { kind: 'object', properties: [], indices: [] }, + ] + const types = new Map() + const root = eventRoot('empty/event', nodes, types, () => ({ names: [], sources: [] })) + const inventory: PersistenceSchemaInventory = { formatVersion: 1, roots: [root], types: [...types.values()] } + const saved = JSON.stringify(inventory) + const emptyDigest = schemaDigest(canonicalizeSchema(nodes, 3)) + const current = currentDefinitions(inventory) + expect(current).toContain('### `{}`') + expect(current).not.toContain('{ }') + expect(current).toContain('[`{}`](#persistence-type-sha256-' + emptyDigest + ')') + assertLinkedOnce(current) + const historical = renderPersistenceSchemaDefinitions(inventory) + expect(historical).toContain('### `event:empty/event.data.item`') + expect(historical).toContain('Array of [`event:empty/event.data.item`](#persistence-type-eventemptyeventdataitem).') + expect(JSON.stringify(inventory)).toBe(saved) + expect(schemaDigest(root.schema)).toBe(root.digest) + }) + + it('keeps anonymous producer references when siblings and the first owning root change', () => { + const before = producerFixture(['alpha', 'beta'], ['second/event']) + const after = producerFixture(['new', 'beta', 'alpha'], ['first/event', 'second/event']) + const alphaSchema = canonicalizeSchema([ + { kind: 'object', properties: [{ name: 'kind', type: 1, optional: false }], indices: [] }, + { kind: 'literal', value: 'alpha' }, + ], 0) + const alphaDigest = schemaDigest(alphaSchema) + const link = '[`{ kind: "alpha" }`](#persistence-type-sha256-' + alphaDigest + ')' + expect(currentDefinitions(before)).toContain(link) + expect(currentDefinitions(after)).toContain(link) + expect(currentDefinitions(after)).not.toContain('.source[') + assertLinkedOnce(currentDefinitions(after)) + const reordered = { ...after, roots: [...after.roots].reverse(), types: [...after.types].reverse() } + expect(currentDefinitions(reordered)).toBe(currentDefinitions(after)) + }) + + it('retains logical root and named aliases while structural links track changed content', () => { + const before = fixture() + const after = fixture(false) + const old = currentDefinitions(before) + const updated = currentDefinitions(after) + for (const definitions of [old, updated]) { + expect(definitions).toContain('') + expect(definitions).toContain('') + } + expect(old).not.toBe(updated) + const document = render([], [], after) + expect(document).toContain('](#persistence-type-sha256-' + after.roots[0]!.digest + ')') + assertLinkedOnce(document) + }) + + it('omits ambiguous aliases and keeps colliding labels linked to distinct definitions', () => { + const complete = fixture() + const first = complete.types[0] as PersistenceType + const second = complete.types[1] as PersistenceType + const inventory = { ...complete, types: complete.types.map(type => type === first + ? { ...type, names: ['A.B', 'sha256-' + second.digest] } + : type === second ? { ...type, names: ['AB'] } : type) } + const definitions = currentDefinitions(inventory) + expect(definitions).not.toContain('') + expect(definitions).toContain('') + expect(definitions).toContain('') + assertLinkedOnce(definitions) + }) + + it('renders recursion once and leaves inventories, digests and classifications unchanged', () => { + const inventory = recursiveFixture() + const { schema, digest } = inventory.roots[0]! + const saved = JSON.stringify(inventory) + const before = fixture() + const after = fixture(false) + const classification = classifyPersistenceChange(before.roots[0]!, after.roots[0]!) + const rendered = currentDefinitions(inventory) + expect(rendered.match(/### `Recursive`/gu)).toHaveLength(1) + expect(rendered).toContain('[`Recursive`](#persistence-type-sha256-' + digest + ')') + assertLinkedOnce(rendered) + currentDefinitions(after) + expect(JSON.stringify(inventory)).toBe(saved) + expect(schemaDigest(schema)).toBe(digest) + expect(classifyPersistenceChange(before.roots[0]!, after.roots[0]!)).toEqual(classification) + }) + + it('shows recorded source policies only in the current catalog and preserves their fields', () => { + const schema = canonicalizeSchema([ + { kind: 'object', properties: [{ name: 'source', type: 1, optional: false, compatibility: { + version: 1, policy: 'session-source-attribution', binding: 'session.user-message.source', + discriminator: 'kind', unknownKinds: 'preserve', attributionKinds: ['build-context'], + } }], indices: [] }, + { kind: 'object', properties: [{ name: 'kind', type: 2, optional: false }], indices: [] }, + { kind: 'literal', value: 'build-context' }, + ], 0) + const types = schema.nodes.map((_, index) => { + const nested = canonicalizeSchema(schema.nodes, index) + return { digest: schemaDigest(nested), schema: nested, names: [], sources: [] } + }) + const inventory: PersistenceSchemaInventory = { formatVersion: 2, roots: [], types } + const saved = JSON.stringify(inventory) + expect(currentDefinitions(inventory)).toContain('Source compatibility: `source` — `session-source-attribution` v1; `session.user-message.source`; `kind`; `preserve`.') + expect(currentDefinitions(inventory)).toContain('Attribution-only additions: `build-context`.') + expect(renderPersistenceSchemaDefinitions(inventory, 'zh', undefined, 2, 'current')).toContain('仅表示归属的新增 kind:`build-context`.') + expect(renderPersistenceSchemaDefinitions(inventory)).not.toContain('Source compatibility:') + expect(JSON.stringify(inventory)).toBe(saved) + }) + + it('keeps the captured historical Markdown byte-for-byte in both historical call forms', () => { + const inventory = recursiveFixture(['packages/core/example/src/types.ts']) + const expected = [ + '### Persistence type fingerprints', '', 'Frozen reference.', '', + '| Root | Kind | SHA-256 | Resolved type |', '|---|---|---|---|', + '| `SessionHeader` | header | `c900da63847d1d27572277817e727f3a471d08f0abaf0b61b4984c32ffc6a332` | [`Recursive`](#persistence-type-recursive) |', '', + '### Resolved persistence types', '', + 'Each definition appears once. References preserve sharing and recursion; the digest beside a definition includes its complete reachable structure. Source names and locations identify its declarations but are excluded from its digest.', '', + '', '', '#### `Recursive`', '', + 'SHA-256: `c900da63847d1d27572277817e727f3a471d08f0abaf0b61b4984c32ffc6a332`', '', + 'Sources: `packages/core/example/src/types.ts`', '', + '| Property | Presence | Type |', '|---|---|---|', + '| `next` | optional | [`Recursive`](#persistence-type-recursive) |', '', + ].join('\n') + const index = renderPersistenceSchemaIndex(inventory, 'en', ['Frozen reference.'], 3) + expect(index + '\n' + renderPersistenceSchemaDefinitions(inventory, 'en', () => undefined, 3)).toBe(expected) + expect(renderPersistenceSchemaIndex(inventory, 'en', ['Frozen reference.'], 3, 'historical') + '\n' + + renderPersistenceSchemaDefinitions(inventory, 'en', () => undefined, 3, 'historical')).toBe(expected) + }) +}) diff --git a/scripts/render-persistence-schema.ts b/scripts/render-persistence-schema.ts index 19747f73a2..571ad7162d 100644 --- a/scripts/render-persistence-schema.ts +++ b/scripts/render-persistence-schema.ts @@ -2,6 +2,7 @@ import { githubSlug } from './verify-md-links.ts' import { persistenceCatalogText, type PersistenceCatalogLocale } from './persistence-catalog-text.ts' +import { sourceKindGroups } from './persistence-source-policy.ts' import { canonicalizeSchema, schemaChildren, @@ -16,8 +17,12 @@ interface TypeDisplay { readonly type: PersistenceType readonly label: string readonly anchor: string + readonly aliases: readonly string[] } +/** Current catalogs use structural links; historical references retain their original labels and anchors. */ +export type PersistenceSchemaRendering = 'current' | 'historical' + function code(text: string): string { return '`' + text.replaceAll('`', '\\`').replaceAll('|', '\\|') + '`' } @@ -45,7 +50,7 @@ function childPath(node: SchemaNode, position: number): string { } } -function displays(inventory: PersistenceSchemaInventory): Map { +function historicalDisplays(inventory: PersistenceSchemaInventory): Map { const paths = new Map() for (const root of inventory.roots) { const seen = new Set() @@ -78,10 +83,87 @@ function displays(inventory: PersistenceSchemaInventory): Map { + const property = node.properties.find(candidate => candidate.name === name && !candidate.optional) + const value = property === undefined ? undefined : nodeAt(schema, property.type) + return value?.kind === 'literal' ? [`${name}: ${JSON.stringify(value.value)}`] : [] + }) + const fields = tags.length > 0 && !includeFields ? tags : node.properties.map((property) => { + const tag = tags.find(tag => tag.startsWith(property.name + ':')) + return tag ?? `${property.name}${property.optional ? '?' : ''}` + }) + if (fields.length === 0) return '{}' + return `{ ${fields.slice(0, 4).join(', ')}${fields.length > 4 ? ', …' : ''} }` + } + case 'array': return 'array' + case 'tuple': return `tuple (${String(node.elements.length)} positions)` + case 'union': return `union (${String(node.types.length)} variants)` + default: return assertNever(node) + } +} + +function currentDisplays(inventory: PersistenceSchemaInventory): Map { + const roots = new Map() + for (const root of inventory.roots) roots.set(root.digest, [...roots.get(root.digest) ?? [], root.key]) + const aliases = new Map>() + const namesByDigest = new Map(inventory.types.map((type) => { + const names = type.names.filter(name => !inventory.roots.some(root => name.startsWith(root.key + '.') || name.startsWith(root.key + '['))) + const logicalNames = [...new Set([...names, ...roots.get(type.digest) ?? []])].sort() + for (const name of logicalNames) { + for (const value of new Set([name, name.slice(name.lastIndexOf('#') + 1)])) { + const alias = `persistence-type-${githubSlug(value)}` + const owners = aliases.get(alias) ?? new Set() + owners.add(type.digest) + aliases.set(alias, owners) + } + } + return [type.digest, names.filter(name => !roots.get(type.digest)?.includes(name)).sort()] + })) + const types = new Map(inventory.types.map(type => [type.digest, type])) + const labelFor = (schema: CanonicalSchema, seen: ReadonlySet, includeFields = false): string => { + const digest = schemaDigest(schema) + const node = nodeAt(schema, 0) + if (node.kind === 'primitive' || node.kind === 'literal' || node.kind === 'opaque') return structuralLabel(schema) + const named = namesByDigest.get(digest)?.find(name => aliases.get(`persistence-type-${githubSlug(name.slice(name.lastIndexOf('#') + 1))}`)?.size === 1) + if (named !== undefined) return named.slice(named.lastIndexOf('#') + 1) + if (seen.has(digest) || seen.size >= 4) return structuralLabel(schema, includeFields) + if (node.kind === 'array') { + const element = canonicalizeSchema(schema.nodes, node.element) + const label = labelFor(types.get(schemaDigest(element))?.schema ?? element, new Set(seen).add(digest), includeFields) + return `${label}[]` + } + return structuralLabel(schema, includeFields) + } + const labels = inventory.types.map(type => ({ type, label: labelFor(type.schema, new Set()), anchor: `persistence-type-sha256-${type.digest}` })) + const counts = new Map() + for (const entry of labels) counts.set(entry.label, (counts.get(entry.label) ?? 0) + 1) + for (const entry of labels) { + if ((counts.get(entry.label) ?? 0) > 1) entry.label = labelFor(entry.type.schema, new Set(), true) + } + const structuralAnchors = new Set(labels.map(entry => entry.anchor)) + return new Map(labels.map(entry => [entry.type.digest, { + ...entry, + // A logical name shared by different structures has no unambiguous target. + aliases: [...aliases].filter(([alias, owners]) => owners.size === 1 && owners.has(entry.type.digest) && !structuralAnchors.has(alias)) + .map(([alias]) => alias).sort(), + }])) +} + +function displays(inventory: PersistenceSchemaInventory, rendering: PersistenceSchemaRendering): Map { + return rendering === 'current' ? currentDisplays(inventory) : historicalDisplays(inventory) +} + function reference(digest: string, entries: ReadonlyMap): string { const entry = entries.get(digest) if (!entry) throw new Error(`persistence catalog: reachable type ${digest} is absent from the inventory`) @@ -107,11 +189,12 @@ function definition( locale: PersistenceCatalogLocale, sourceLink: (source: string) => string | undefined, headingLevel: number, + rendering: PersistenceSchemaRendering, ): string[] { const text = persistenceCatalogText[locale] const schema = entry.type.schema const node = nodeAt(schema, 0) - const lines = [``, '', `${'#'.repeat(headingLevel)} ${code(entry.label)}`, '', `SHA-256: ${code(entry.type.digest)}`, ''] + const lines = [...[entry.anchor, ...entry.aliases].flatMap(anchor => [``, '']), `${'#'.repeat(headingLevel)} ${code(entry.label)}`, '', `SHA-256: ${code(entry.type.digest)}`, ''] if (entry.type.sources.length > 0) { lines.push(`${text.sources}${entry.type.sources.map((source) => { const href = sourceLink(sourcePath(source)) @@ -129,6 +212,14 @@ function definition( } for (const index of node.indices) lines.push(`| [${expression(index.key)}] | ${text.index} | ${expression(index.value)} |`) lines.push('') + if (rendering === 'current') { + for (const property of node.properties) { + const policy = property.compatibility + if (policy === undefined) continue + lines.push(`${text.sourceCompatibility}${code(property.name)} — ${code(policy.policy)} v${String(policy.version)}; ${code(policy.binding)}; ${code(policy.discriminator)}; ${code(policy.unknownKinds)}.`, '', + `${text.attributionAdditions}${policy.attributionKinds.map(code).join(', ') || code('[]')}.`, '') + } + } } break case 'array': lines.push(`${text.arrayPrefix}${expression(node.element)}${text.arraySuffix}`, ''); break @@ -140,9 +231,28 @@ function definition( }) lines.push('') break - case 'union': - lines.push(text.oneOf, '', ...node.types.map(index => `- ${expression(index)}`), '') + case 'union': { + const groups = rendering === 'current' ? sourceKindGroups(schema.nodes, 0) : undefined + if (groups !== undefined) { + lines.push(text.sourceColumns, '|---|---|---|---|') + for (const [kind, alternatives] of [...groups].sort(([a], [b]) => a.localeCompare(b))) { + const rows = alternatives.map((index) => { + const variant = nodeAt(schema, index) + if (variant.kind !== 'object') throw new Error('persistence catalog: source group must contain objects') + const form = variant.properties.find(property => property.name === 'form') + const formLabel = form === undefined ? text.notDeclared + : `${expression(form.type)}${form.optional ? ` (${text.optional})` : ''}` + const fields = variant.properties.filter(property => property.name !== 'kind' && property.name !== 'form' && !property.optional) + .map(property => `${code(property.name)}: ${expression(property.type)}`) + if (variant.indices.length > 0) fields.push(text.index) + return { index, formLabel, fields, digest: schemaDigest(canonicalizeSchema(schema.nodes, index)) } + }).sort((a, b) => a.formLabel.localeCompare(b.formLabel) || a.digest.localeCompare(b.digest)) + for (const row of rows) lines.push(`| ${code(kind)} | ${row.formLabel} | ${row.fields.join('; ') || text.none} | ${expression(row.index)} |`) + } + lines.push('') + } else lines.push(text.oneOf, '', ...node.types.map(index => `- ${expression(index)}`), '') break + } case 'primitive': lines.push(code(node.type), ''); break case 'literal': lines.push(code(JSON.stringify(node.value)), ''); break case 'opaque': lines.push(`${code(node.reason)}${text.opaqueExplanation}`, ''); break @@ -157,6 +267,7 @@ function definition( * @param locale - generated document language. * @param introduction - paragraphs before the root table; defaults to current-source links. * @param headingLevel - section depth within the containing reference. + * @param rendering - explicit current mode selects structural links; omission preserves historical output. * @returns Markdown index including the history and contributor workflow links. */ export function renderPersistenceSchemaIndex( @@ -164,8 +275,9 @@ export function renderPersistenceSchemaIndex( locale: PersistenceCatalogLocale = 'en', introduction: readonly string[] = [persistenceCatalogText[locale].fingerprintsIntro, persistenceCatalogText[locale].historyIntro], headingLevel: 2 | 3 = 2, + rendering: PersistenceSchemaRendering = 'historical', ): string { - const entries = displays(inventory) + const entries = displays(inventory, rendering) const text = persistenceCatalogText[locale] return [ `${'#'.repeat(headingLevel)} ${text.fingerprints}`, '', ...introduction.flatMap(paragraph => [paragraph, '']), @@ -180,20 +292,25 @@ export function renderPersistenceSchemaIndex( * @param locale - generated document language. * @param sourceLink - source path to URL; undefined keeps historical locations as text. * @param headingLevel - section depth; individual definitions use the next heading level. - * @returns Markdown definitions whose anchors use names or owning paths instead of hashes. + * @param rendering - explicit current mode selects structural links and unambiguous logical aliases. + * @returns linked Markdown definitions; historical mode preserves the original named and owning-path anchors. */ export function renderPersistenceSchemaDefinitions( inventory: PersistenceSchemaInventory, locale: PersistenceCatalogLocale = 'en', sourceLink: (source: string) => string | undefined = source => `../${source}`, headingLevel: 2 | 3 = 2, + rendering: PersistenceSchemaRendering = 'historical', ): string { - const entries = displays(inventory) + const entries = displays(inventory, rendering) const text = persistenceCatalogText[locale] - const sorted = [...entries.values()].sort((left, right) => left.anchor < right.anchor ? -1 : left.anchor > right.anchor ? 1 : 0) + const sorted = [...entries.values()].sort((left, right) => { + if (rendering === 'current' && left.label !== right.label) return left.label < right.label ? -1 : 1 + return left.anchor < right.anchor ? -1 : left.anchor > right.anchor ? 1 : 0 + }) return [ `${'#'.repeat(headingLevel)} ${text.definitions}`, '', text.definitionsIntro, '', - ...sorted.flatMap(entry => definition(entry, entries, locale, sourceLink, headingLevel + 1)), + ...sorted.flatMap(entry => definition(entry, entries, locale, sourceLink, headingLevel + 1, rendering)), ].join('\n') }