revert: keep existing Agent attribution for Team messages

This commit is contained in:
Dudu-0223 committed 2026-09-27 17:12:27 +08:00
1 parent 3948bffd46
commit 43dd2bdeac
31 files changed
+33712 -45959

No files matched your search

@@ -9,8 +9,8 @@
en: 83296699f94c77d3
zh: e681a426bf0a703a
/agent-note-team-messages-use-the-target-inbox/decision:
en: 2eaa9439ace9f36d
zh: 07d8da76d2dce484
en: 8d5fed34f19c7302
zh: 25417793d3797775
/agent-note-team-messages-use-the-target-inbox/alternatives-considered:
en: e847556d8e9f1071
zh: bf1abe2f0e201eac
@@ -10,7 +10,7 @@ A second Team outbox duplicates Agent inbox ownership with separate identities,
## Decision
New Team sends return the accepted inbox `MessageId` or throw. They use live Lead Steer or the host-only subagent Steer adapter, retaining the actual sender and member name through Team-owned `team-relay` source and the member name in content. Team attribution belongs to the Team source type; the delivery adapter accepts it through the existing `MessageSource` union. Acceptance follows ordinary Agent persistence; it neither confirms model processing nor adds a synchronous flush guarantee. Team does not retain unaccepted intent, retry it after restart, or deduplicate explicit resends.
New Team sends return the accepted inbox `MessageId` or throw. They use live Lead Steer or the host-only subagent Steer adapter, retaining the actual sender through the existing `agent-message` source and the member name in content. Acceptance follows ordinary Agent persistence; it neither confirms model processing nor adds a synchronous flush guarantee. Team does not retain unaccepted intent, retry it after restart, or deduplicate explicit resends.
Historical mailbox records stay decodable and projected so existing Lead logs replay, but Team never delivers or acknowledges them. The package is experimental with no stability promise, and a second dispatch path with receipt inspection, per-target ordering, and its own disposal wait costs more than the undelivered old messages it would recover. This partially supersedes the mailbox decision in [Agent Teams](../feature/2026-08-05-agent-teams.md); roster and task decisions remain there. The [package reference](../../../../packages/experimental/agent-team/README.md#understand-the-implementation) owns the resulting limitation.
@@ -10,7 +10,7 @@ Status: implemented
## 决策
新的 Team 发送返回获准 inbox 的 `MessageId` 或抛出错误。它们使用 live Lead Steer 或 host-only subagent Steer adapter,通过 Team 所属的 `team-relay` source 保留真实发送者和成员名称,并在正文中保留成员名称。Team 归属信息属于 Team source 类型;投递 adapter 通过现有 `MessageSource` 联合类型接受它。接收遵循普通 Agent 的持久化策略,既不确认模型已处理,也不增加同步 flush 保证。Team 不保留尚未接收的发送意图,不在重启后重试,也不对显式重发去重。
新的 Team 发送返回获准 inbox 的 `MessageId` 或抛出错误。它们使用 live Lead Steer 或 host-only subagent Steer adapter,通过现有 `agent-message` source 保留真实发送者,并在正文中保留成员名称。接收遵循普通 Agent 的持久化策略,既不确认模型已处理,也不增加同步 flush 保证。Team 不保留尚未接收的发送意图,不在重启后重试,也不对显式重发去重。
历史 mailbox 记录继续可解码并参与投影,使现有 Lead 日志能够回放,但 Team 不再投递或确认它们。该包是实验性的,没有稳定性承诺;另设一条带回执检查、同目标排序和独立 dispose 等待的投递路径,其代价高于它能补回的未投递旧消息。这部分取代了 [Agent Teams](../feature/2026-08-05-agent-teams.zh.md) 的 mailbox 决策;roster 和任务决策仍由原记录负责。[包参考](../../../../packages/experimental/agent-team/README.zh.md#understand-the-implementation)定义由此产生的限制。
+1 -1
View File
@@ -106,7 +106,7 @@ describe('dsh run with Agent Teams enabled', () => {
expect(eventTypes).not.toContain('team/message/queued')
expect(eventTypes).not.toContain('team/message/delivered')
const peerMessages = parsed.flatMap(log => log.filter(record => record.type === 'user/message'
&& (record.data as { source: { kind: string } }).source.kind === 'team-relay'))
&& (record.data as { source: { kind: string } }).source.kind === 'agent-message'))
expect(peerMessages).toHaveLength(2)
const taskEvents = root!.filter(record => record.type === 'team/task')
expect(taskEvents.filter((record) => {
@@ -788,14 +788,14 @@ describe('headless stream-json snapshots', () => {
if (typeof message !== 'object' || message === null || Array.isArray(message)) return false
const source = (message as JsonObject).source
return typeof source === 'object' && source !== null && !Array.isArray(source)
&& (source as JsonObject).kind === 'team-relay'
&& (source as JsonObject).kind === 'agent-message'
})
})
const steeredMessageIndex = implementerRows.findIndex((row) => {
if (row.type !== 'user/message') return false
const source = (row.data as JsonObject).source
return typeof source === 'object' && source !== null && !Array.isArray(source)
&& (source as JsonObject).kind === 'team-relay'
&& (source as JsonObject).kind === 'agent-message'
})
const openTurnStart = implementerRows.findLastIndex((row, index) => (
index < steeredMessageIndex && row.type === 'turn/start'
+1 -1
View File
@@ -827,7 +827,7 @@ export interface Config {
## `@deepseek-ai/dsh-experimental-agent-team`
- `inject`: `agents` · `sessions` · `sessionPersistence` · `sessionProjections` · `subagents`
- `source`: [`packages/experimental/agent-team/src/types.ts:162`](../packages/experimental/agent-team/src/types.ts)
- `source`: [`packages/experimental/agent-team/src/types.ts:153`](../packages/experimental/agent-team/src/types.ts)
```ts config-catalog
/** Team-service deployment limits. */
+1 -1
View File
@@ -829,7 +829,7 @@ export interface Config {
## `@deepseek-ai/dsh-experimental-agent-team`
- `inject`: `agents` · `sessions` · `sessionPersistence` · `sessionProjections` · `subagents`
- `source`: [`packages/experimental/agent-team/src/types.ts:162`](../packages/experimental/agent-team/src/types.ts)
- `source`: [`packages/experimental/agent-team/src/types.ts:153`](../packages/experimental/agent-team/src/types.ts)
```ts config-catalog
/** Team-service deployment limits. */
+70 -76
View File
@@ -9,8 +9,8 @@
en: e7c80d1de4d328b4
zh: d9f368c27fd9f998
/session-persistence-event-catalog/persistence-type-fingerprints:
en: 89c10f956f3255e0
zh: 668abe049d156e47
en: 0254fc43535dfaad
zh: 2f592cfae60e10ac
/session-persistence-event-catalog/event-envelope:
en: 7ebb1a2e0dd1f916
zh: 8946f415dda5c1b8
@@ -216,17 +216,17 @@
en: a640800a38b3c874
zh: a640800a38b3c874
/session-persistence-event-catalog/events/team/team-member-log-only:
en: 1b61ae72660c98bc
zh: 003fe48a37e0f7bb
en: a2fe5b8582ef5f46
zh: 42bfffcde3f3d886
/session-persistence-event-catalog/events/team/team-message-delivered-log-only:
en: d9a59f5719145fb7
zh: 8d831e4f6ea0dac3
en: 4a716b14e33eab18
zh: dcde26e4dc40b62e
/session-persistence-event-catalog/events/team/team-message-queued-log-only:
en: d96801713a18fa80
zh: cfe5bfc08994c00b
en: 05bf873244099da5
zh: 8a0b62912087f4aa
/session-persistence-event-catalog/events/team/team-task-log-only:
en: 3f16e581eaaf67d8
zh: 964294fec32b5d52
en: 5ffeb64225feda2a
zh: d58129e189a726fb
/session-persistence-event-catalog/events/todo:
en: 308d4bb4b6b96e35
zh: 308d4bb4b6b96e35
@@ -759,11 +759,8 @@
en: 1fa929a15e4a96ea
zh: 1fa929a15e4a96ea
/session-persistence-event-catalog/resolved-persistence-types/team-message:
en: ebf5638b515116e8
zh: ebf5638b515116e8
/session-persistence-event-catalog/resolved-persistence-types/team-relay:
en: 2381ca4055c1043e
zh: 2381ca4055c1043e
en: b2c69bdf83f09bdf
zh: b2c69bdf83f09bdf
/session-persistence-event-catalog/resolved-persistence-types/team-member:
en: 8cf0f09cbf885f71
zh: 8cf0f09cbf885f71
@@ -954,11 +951,11 @@
en: 586743dfeab78c55
zh: 26ccef4a02dd7a58
/session-persistence-event-catalog/resolved-persistence-types/deepseeksearchllmrequest:
en: b0eb3474dc8e3e5f
zh: 3bd51444c68073b3
en: b3df6dce576b01a2
zh: f9c67e338cc6e449
/session-persistence-event-catalog/resolved-persistence-types/developermessage:
en: c3bf99efbd57dcd0
zh: 8258f69a1643b141
en: 3df6e6aaeb92c0fa
zh: 29988ebcdd9e62e1
/session-persistence-event-catalog/resolved-persistence-types/epochheader:
en: d31020fa1fda6fa4
zh: 77984c4bf09443fb
@@ -1056,11 +1053,11 @@
en: 6dbe099c62f7c226
zh: 6fd788f63c038c91
/session-persistence-event-catalog/resolved-persistence-types/llmretrystartedeventdata:
en: 2559b0a407634187
zh: a113f3168423b87b
en: 7854b9694cc84c3a
zh: 319ec2e2e6ffdaec
/session-persistence-event-catalog/resolved-persistence-types/message:
en: c580203c6047c3d5
zh: 522fc25123e36702
en: 45a296c31664de87
zh: 8f235285b2f985f9
/session-persistence-event-catalog/resolved-persistence-types/messagefeedbackdelete:
en: c582953270d4ca44
zh: 966ccfe2e7660a2a
@@ -1071,14 +1068,14 @@
en: f58575a1fc96df42
zh: 9f0c6ed9033e5c9d
/session-persistence-event-catalog/resolved-persistence-types/messagefeedbackrating:
en: 63ef28c7210a20ff
zh: 14478a48bca9ae64
en: 490a91f1da1fc870
zh: 2f2b9e972e22d51f
/session-persistence-event-catalog/resolved-persistence-types/messagesource:
en: 4dbdcf9ef21b3e2b
zh: deff28371eb277ef
en: 7d0eda01d2c3076f
zh: ce3dbfc1bd7fd176
/session-persistence-event-catalog/resolved-persistence-types/message~2:
en: 0b609fe9e561f4dc
zh: 53a3420b05172691
en: 8e53b2a339808ffc
zh: d453e93e45f9e752
/session-persistence-event-catalog/resolved-persistence-types/modelmessagesource:
en: 3b677f021d7dd4d3
zh: 2a875742b22879a2
@@ -1137,11 +1134,11 @@
en: 9a54c4478ad3b620
zh: 02c4c1fd7e252770
/session-persistence-event-catalog/resolved-persistence-types/sessiontitleeventdata:
en: 51d7e3f1b996e5d0
zh: 5a955c48473db8c2
en: 415ce281c096b4c3
zh: 39c5bf9dfaa95579
/session-persistence-event-catalog/resolved-persistence-types/sessiontitlellmrequesteventdata:
en: 71c01199c777c527
zh: 3e1120ba6e6f6212
en: 0e539718e4bc8ed8
zh: 060007f55759f065
/session-persistence-event-catalog/resolved-persistence-types/sessiontitlemodelidentity:
en: 9531468264499498
zh: 9da23c0ad2776563
@@ -1248,14 +1245,14 @@
en: 544292eddeff5faa
zh: 4e36e575a5030fb2
/session-persistence-event-catalog/resolved-persistence-types/turnendreason:
en: 4391ef607f1070aa
zh: f8674649511391de
en: 083f0fef130bb976
zh: dafd261a95708bec
/session-persistence-event-catalog/resolved-persistence-types/usermessage:
en: ee0568ac146e7dde
zh: 1bebe8ecc5f96361
en: 88b294a9b0bdf0e4
zh: 0597f465b9d45b27
/session-persistence-event-catalog/resolved-persistence-types/usermessage~2:
en: 37701fa982f8d5dd
zh: c725cf60b19f229e
en: 31aaab9c9f53ed9c
zh: c5cd866b3f2b27e0
/session-persistence-event-catalog/resolved-persistence-types/workflowagentoutcome:
en: d0a3f9aab18c3de5
zh: 76ac69a835ca4e29
@@ -1425,11 +1422,11 @@
en: 51af619ed8532a43
zh: a5ad878c63d0e046
/session-persistence-event-catalog/resolved-persistence-types/header-reason-startsseries:
en: 6e33e5c0e18b6a0a
zh: e2a22c228e459bf5
en: 62ca405eba4d2757
zh: c6a8861533363ae9
/session-persistence-event-catalog/resolved-persistence-types/headerseq-message-step-turn:
en: f075afc903e3de53
zh: 871457f173ae4fe3
en: 76e7be9a80a4082c
zh: c06aaa42a8488aea
/session-persistence-event-catalog/resolved-persistence-types/height-width:
en: a5df50710083ac25
zh: aad3ccf6f6de70e4
@@ -1446,11 +1443,11 @@
en: 41f73c58a77dfa28
zh: af77f4aee3cb4a40
/session-persistence-event-catalog/resolved-persistence-types/inherited:
en: 316972892136b7f9
zh: 3a9475a1aee20afa
en: f538b60f99becc0a
zh: 0c8efa059a1e6569
/session-persistence-event-catalog/resolved-persistence-types/inserted-outcome-removedcount-start:
en: 2c23937fee151ba8
zh: e50db054ac113dfa
en: 3985827b3ead1d92
zh: c535166ccae6c8a3
/session-persistence-event-catalog/resolved-persistence-types/interrupted-message-step-stream:
en: f460572284c92755
zh: bae7561ce887b040
@@ -1665,11 +1662,8 @@
en: c99d8a67438771ff
zh: 070f6160fc419fa5
/session-persistence-event-catalog/resolved-persistence-types/kind-stop:
en: a64980e04d797552
zh: ee66b5a6aed7ffc4
/session-persistence-event-catalog/resolved-persistence-types/kind-team-relay-form-relay:
en: 8a7c120f2a2156bb
zh: b963b594e27a7fdb
en: 09ce6f3196938ccf
zh: 1b8d5540f47fd3aa
/session-persistence-event-catalog/resolved-persistence-types/kind-time-context:
en: 5733addfc8b12a47
zh: aaf60d5396e30971
@@ -1791,17 +1785,17 @@
en: afedf4a31a67eb14
zh: 98d3bc882f2b61c3
/session-persistence-event-catalog/resolved-persistence-types/member-teamid-version:
en: c5d8c3bdd23b402b
zh: 02de0bba9445fd09
en: 82b0989dad6bbfc0
zh: 0789b63f1d59b2ed
/session-persistence-event-catalog/resolved-persistence-types/message-step-turn:
en: 7cc30865737643f2
zh: 512c6c81ed10a9b6
/session-persistence-event-catalog/resolved-persistence-types/message-teamid-version:
en: 01e98cdbb65399f3
zh: 766c7a3691cddcfd
en: f778769acb264dd5
zh: eba9b81d04e9f57b
/session-persistence-event-catalog/resolved-persistence-types/messageid-targetid-teamid-version:
en: 9e04283bb1c229a8
zh: ee2fc1587d8342b3
en: 91a948ede28ebcb5
zh: 8a2b0ac6bb68a09e
/session-persistence-event-catalog/resolved-persistence-types/mode-source:
en: 3028b222670ce5ad
zh: cae4c9437e560d61
@@ -1833,8 +1827,8 @@
en: 5360af614fe753e3
zh: 96427c489cc71de6
/session-persistence-event-catalog/resolved-persistence-types/task-teamid-version:
en: bdab6f64ef7efe66
zh: b2b681924df93077
en: a2fcd46e54b14120
zh: d9a6e0e50bbff9ad
/session-persistence-event-catalog/resolved-persistence-types/todos:
en: 06e6c1837e2b5d50
zh: 37cebfe3e41294ec
@@ -1842,11 +1836,11 @@
en: a79b2ab16b9ed215
zh: 764cd1400ee8db63
/session-persistence-event-catalog/resolved-persistence-types/type-agent-preset-selected:
en: 7f83c82fb627a54a
zh: 8a42bd15c8cc671b
en: d59bb505610b862f
zh: e2637fbbb8365bdf
/session-persistence-event-catalog/resolved-persistence-types/type-agent-inbox-spliced:
en: 9619813dfbf7bc17
zh: 93110784e13f3d0b
en: 109d942de30d9227
zh: 6c6fc06634ad7945
/session-persistence-event-catalog/resolved-persistence-types/type-approval-asked:
en: 9c77f18b0dad22f0
zh: 8894cf2878fe90db
@@ -1890,11 +1884,11 @@
en: ba73fb10b7e2ffc9
zh: 8d5c97e63e5f16da
/session-persistence-event-catalog/resolved-persistence-types/type-deliverables-presented:
en: d58679c990e26669
zh: 9476184de3c72c24
en: 49de6f547778d916
zh: ce2a1af1ae934f68
/session-persistence-event-catalog/resolved-persistence-types/type-developer-message:
en: b1d12846e8b42be7
zh: ce14a0ce914da4c9
en: 686d26ced9945d4b
zh: 535b9e92eb7535fb
/session-persistence-event-catalog/resolved-persistence-types/type-feedback-message-delete:
en: 204561e2311db97e
zh: 77264396bd5e25c4
@@ -1959,11 +1953,11 @@
en: acf7e21e4d21ebff
zh: fb83a853634d204a
/session-persistence-event-catalog/resolved-persistence-types/type-session-title:
en: 8b663a9bed3d6d02
zh: 6e94250a6765ff54
en: ba2f901c9981835f
zh: ce0358c7d16b0beb
/session-persistence-event-catalog/resolved-persistence-types/type-session-title-llm-request:
en: ab5f000b3356856b
zh: 178664249c06dd65
en: 7515d391badb4d0a
zh: 9eb19def7a3ed752
/session-persistence-event-catalog/resolved-persistence-types/type-step-end:
en: 7fc233c4a569dae2
zh: bc2b3fed4a397c00
@@ -2040,11 +2034,11 @@
en: 1b045de96172be4b
zh: 8a15c6f35b576b37
/session-persistence-event-catalog/resolved-persistence-types/type-usage:
en: a52e1f433bb4d37e
zh: f4a9bc2875013f8e
en: a01e61480accb34b
zh: 6387a3cc7666aa7e
/session-persistence-event-catalog/resolved-persistence-types/type-user-message:
en: 2e0b6943f08ce6b4
zh: 8414f682acae08e0
en: 58d3e616db84f840
zh: 9aed64a03347caad
/session-persistence-event-catalog/resolved-persistence-types/type-web-deepseek-search-llm-request:
en: f109997e295af37d
zh: b2dcfd599f73b61c
+53 -77
View File
@@ -21,7 +21,7 @@ The [format references](persistence-changes/historical-formats/README.md) cover
| `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 | `069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4` | [`{ type: "agent/inbox/spliced" }`](#persistence-type-sha256-069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4) |
| `event:agent/inbox/spliced` | event | `1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c` | [`{ type: "agent/inbox/spliced" }`](#persistence-type-sha256-1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c) |
| `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) |
@@ -34,7 +34,7 @@ The [format references](persistence-changes/historical-formats/README.md) cover
| `event:compaction/start` | event | `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` | [`{ type: "compaction/start" }`](#persistence-type-sha256-db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965) |
| `event:compaction/summary` | event | `e2f9a41e0989f54ed8cee80f8db2bcf9d60a5c810dc9d45b83fa050b9dce7602` | [`{ type: "compaction/summary" }`](#persistence-type-sha256-e2f9a41e0989f54ed8cee80f8db2bcf9d60a5c810dc9d45b83fa050b9dce7602) |
| `event:deliverables/presented` | event | `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` | [`{ type: "deliverables/presented" }`](#persistence-type-sha256-13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176) |
| `event:developer/message` | event | `3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e` | [`{ type: "developer/message" }`](#persistence-type-sha256-3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e) |
| `event:developer/message` | event | `eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80` | [`{ type: "developer/message" }`](#persistence-type-sha256-eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80) |
| `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) |
@@ -54,7 +54,7 @@ The [format references](persistence-changes/historical-formats/README.md) cover
| `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 | `d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7` | [`{ type: "session/title-llm-request" }`](#persistence-type-sha256-d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7) |
| `event:session/title-llm-request` | event | `fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d` | [`{ type: "session/title-llm-request" }`](#persistence-type-sha256-fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d) |
| `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 | `3abae7324356f155cb42450c00b806d134ec93bd6439d2063b8d724162d58604` | [`{ type: "subagent/catalog" }`](#persistence-type-sha256-3abae7324356f155cb42450c00b806d134ec93bd6439d2063b8d724162d58604) |
@@ -76,7 +76,7 @@ The [format references](persistence-changes/historical-formats/README.md) cover
| `event:tool/result` | event | `7c9f44e90a0058f4cc532ae20dad0c10afa6eba22e70a6c79fc79490bad64397` | [`{ type: "tool/result" }`](#persistence-type-sha256-7c9f44e90a0058f4cc532ae20dad0c10afa6eba22e70a6c79fc79490bad64397) |
| `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 | `0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58` | [`{ type: "user/message" }`](#persistence-type-sha256-0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58) |
| `event:user/message` | event | `3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761` | [`{ type: "user/message" }`](#persistence-type-sha256-3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761) |
| `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) |
@@ -975,7 +975,7 @@ Source: [`packages/core/session/src/types.ts:330`](../packages/core/session/src/
Types: [TeamId](subsystems/agent-team.md) · [TeamMemberSnapshot](subsystems/agent-team.md)
Source: [`packages/experimental/agent-team/src/types.ts:239`](../packages/experimental/agent-team/src/types.ts)
Source: [`packages/experimental/agent-team/src/types.ts:230`](../packages/experimental/agent-team/src/types.ts)
<a id="teammessagedelivered--log-only"></a>
@@ -993,7 +993,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:239`](../packages/experi
Types: [TeamId](subsystems/agent-team.md) · [TeamMessageId](subsystems/agent-team.md)
Source: [`packages/experimental/agent-team/src/types.ts:245`](../packages/experimental/agent-team/src/types.ts)
Source: [`packages/experimental/agent-team/src/types.ts:236`](../packages/experimental/agent-team/src/types.ts)
<a id="teammessagequeued--log-only"></a>
@@ -1006,7 +1006,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:245`](../packages/experi
Types: [TeamId](subsystems/agent-team.md) · [TeamMessageSnapshot](subsystems/agent-team.md)
Source: [`packages/experimental/agent-team/src/types.ts:243`](../packages/experimental/agent-team/src/types.ts)
Source: [`packages/experimental/agent-team/src/types.ts:234`](../packages/experimental/agent-team/src/types.ts)
<a id="teamtask--log-only"></a>
@@ -1019,7 +1019,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:243`](../packages/experi
Types: [TeamId](subsystems/agent-team.md) · [TeamTaskSnapshot](subsystems/agent-team.md)
Source: [`packages/experimental/agent-team/src/types.ts:241`](../packages/experimental/agent-team/src/types.ts)
Source: [`packages/experimental/agent-team/src/types.ts:232`](../packages/experimental/agent-team/src/types.ts)
### `todo/*`
@@ -2539,14 +2539,6 @@ SHA-256: `2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c`
`"team-message"`
<a id="persistence-type-sha256-c91852e53038618e7869f3e436acdb3f319c4f31b516c71a4b816e7387e3df2f"></a>
### `"team-relay"`
SHA-256: `c91852e53038618e7869f3e436acdb3f319c4f31b516c71a4b816e7387e3df2f`
`"team-relay"`
<a id="persistence-type-sha256-18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0"></a>
### `"team/member"`
@@ -3215,7 +3207,7 @@ Sources: [`packages/web/web-search-deepseek/src/provider.ts:55`](../packages/web
| `body` | required | [`{ max_tokens, messages, model, tools }`](#persistence-type-sha256-930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731) |
| `endpoint` | required | `string` |
<a id="persistence-type-sha256-46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba"></a>
<a id="persistence-type-sha256-f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b"></a>
<a id="persistence-type-developermessage"></a>
@@ -3223,7 +3215,7 @@ Sources: [`packages/web/web-search-deepseek/src/provider.ts:55`](../packages/web
### `DeveloperMessage`
SHA-256: `46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba`
SHA-256: `f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b`
Sources: [`packages/llm/llm/src/message.ts:157`](../packages/llm/llm/src/message.ts)
@@ -3232,11 +3224,11 @@ Sources: [`packages/llm/llm/src/message.ts:157`](../packages/llm/llm/src/message
| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-b52f215a6cd691058a3413c12f161fa3b563a2f4895adb3df6f744ec4b0a6ef1) |
| `id` | required | `string` |
| `role` | required | `"developer"` |
| `source` | required | [`MessageSource`](#persistence-type-sha256-bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624) |
| `source` | required | [`MessageSource`](#persistence-type-sha256-40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945) |
Source compatibility: `source` — `session-source-attribution` v1; `session.developer-message.source`; `kind`; `preserve`.
Attribution-only additions: `team-relay`, `tmux-context`.
Attribution-only additions: `tmux-context`.
<a id="persistence-type-sha256-9a930283b91d493d6347146f2475bb107294b379415ca02162354f46a64164f7"></a>
@@ -3849,7 +3841,7 @@ Sources: [`packages/llm/llm-retry/src/types.ts:43`](../packages/llm/llm-retry/sr
| `step` | required | `number` |
| `turn` | required | `number` |
<a id="persistence-type-sha256-139bcc0c4019840db40b45e3e23dbcf44d93821ff5ebc064b8934a0a51d8b1b2"></a>
<a id="persistence-type-sha256-691c0f641cd3e8072fdacd6fa8c400253cf75a0ce9285d8ce89141bbb24f2fb6"></a>
<a id="persistence-type-message"></a>
@@ -3857,15 +3849,15 @@ Sources: [`packages/llm/llm-retry/src/types.ts:43`](../packages/llm/llm-retry/sr
### `Message`
SHA-256: `139bcc0c4019840db40b45e3e23dbcf44d93821ff5ebc064b8934a0a51d8b1b2`
SHA-256: `691c0f641cd3e8072fdacd6fa8c400253cf75a0ce9285d8ce89141bbb24f2fb6`
Sources: [`packages/llm/llm/src/message.ts:196`](../packages/llm/llm/src/message.ts)
One of:
- [`ToolResultMessage`](#persistence-type-sha256-4b259f7f8f0a44ad5e90b70a73553ced1df27012d126921d397ff403b6c86731)
- [`DeveloperMessage`](#persistence-type-sha256-46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba)
- [`UserMessage`](#persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47)
- [`DeveloperMessage`](#persistence-type-sha256-f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b)
- [`UserMessage`](#persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586)
- [`AssistantMessage`](#persistence-type-sha256-fa87537f4a9c1e25602990a8bf686b383e9e00352ec8946e16ae24ba7c1625be)
- [`SystemMessage`](#persistence-type-sha256-09f3f8dc417f278257202714132f98ba7b52957d7b558c4a04456603890eb363)
@@ -3942,7 +3934,7 @@ One of:
- `"negative"`
- `"positive"`
<a id="persistence-type-sha256-bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624"></a>
<a id="persistence-type-sha256-40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945"></a>
<a id="persistence-type-messagesource"></a>
@@ -3950,7 +3942,7 @@ One of:
### `MessageSource`
SHA-256: `bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624`
SHA-256: `40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945`
Sources: [`packages/llm/llm/src/message.ts:136`](../packages/llm/llm/src/message.ts)
@@ -4025,7 +4017,6 @@ Sources: [`packages/llm/llm/src/message.ts:136`](../packages/llm/llm/src/message
| `subagent-settled` | `"notice"` | `senderSessionId`: `string`; `summary`: `string` | [`SubagentSettledMessageSource`](#persistence-type-sha256-4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a) |
| `system-prompt` | not declared | none | [`SystemPromptMessageSource`](#persistence-type-sha256-65a8400e451e667e5b6e34df72ceb81fca8c12330330fa72083ad40279b189ad) |
| `team-message` | not declared | `messageId`: `string`; `senderId`: `string`; `senderName`: `string`; `teamId`: `string` | [`TeamMessageSource`](#persistence-type-sha256-2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0) |
| `team-relay` | `"relay"` | `senderName`: `string`; `senderSessionId`: `string` | [`{ kind: "team-relay", form: "relay" }`](#persistence-type-sha256-a005283d8ee3046e3f7dadfc1364813834802abae0551fc9bf72c352381f7bfe) |
| `time-context` | `"catalog"` | none | [`{ kind: "time-context", form: "catalog" }`](#persistence-type-sha256-85fe96bf15d5c7559eec3bae4d6cf1a76fda9f5be05a29c2830cff560cab0c0d) |
| `time-context` | `"instructions"` | none | [`{ kind: "time-context", form: "instructions" }`](#persistence-type-sha256-f6afe41e3926f422fe849debe90819fddd739f0f59e20be9c71018b9554a7f09) |
| `time-context` | `"notice"` | `summary`: `string` | [`{ kind: "time-context", form: "notice" }`](#persistence-type-sha256-ee577a0cc18664c9daee50e9455153321155604f8f1817362f8f4a4b6fb9e1ad) |
@@ -4067,13 +4058,13 @@ Sources: [`packages/llm/llm/src/message.ts:136`](../packages/llm/llm/src/message
| `user-approval` | not declared | none | [`{ kind: "user-approval" }`](#persistence-type-sha256-6292bcbedaa97feaec5b48a03bb8144b581b93309d9d6c905f26da7a6a7a0a4f) |
| `webhook` | `"notice"` | `deliveryId`: `string`; `provider`: `string`; `ruleId`: `string`; `source`: `string`; `summary`: `string` | [`{ kind: "webhook", form: "notice" }`](#persistence-type-sha256-9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94) |
<a id="persistence-type-sha256-9bc19580d3abd950c7e00aa4d1885c4de20c1a56e8a65df721ae88a11437211f"></a>
<a id="persistence-type-sha256-fc8242857caf7450d7f68a1f509dce83e237bd21571666006895124cb2246a83"></a>
### `Message[]`
SHA-256: `9bc19580d3abd950c7e00aa4d1885c4de20c1a56e8a65df721ae88a11437211f`
SHA-256: `fc8242857caf7450d7f68a1f509dce83e237bd21571666006895124cb2246a83`
Array of [`Message`](#persistence-type-sha256-139bcc0c4019840db40b45e3e23dbcf44d93821ff5ebc064b8934a0a51d8b1b2).
Array of [`Message`](#persistence-type-sha256-691c0f641cd3e8072fdacd6fa8c400253cf75a0ce9285d8ce89141bbb24f2fb6).
<a id="persistence-type-sha256-719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91"></a>
@@ -4440,7 +4431,7 @@ Sources: [`packages/session/session-title/src/types.ts:41`](../packages/session/
| `source` | required | [`SessionTitleSource`](#persistence-type-sha256-30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f) |
| `title` | required | `string` |
<a id="persistence-type-sha256-4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407"></a>
<a id="persistence-type-sha256-9bc85364d1f37d9c837db6a3bdd3d1d007d923cdc7401a3322be9f12fdc225fd"></a>
<a id="persistence-type-packagessessionsession-title-llmsrcindextssessiontitlellmrequesteventdata"></a>
@@ -4448,7 +4439,7 @@ Sources: [`packages/session/session-title/src/types.ts:41`](../packages/session/
### `SessionTitleLlmRequestEventData`
SHA-256: `4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407`
SHA-256: `9bc85364d1f37d9c837db6a3bdd3d1d007d923cdc7401a3322be9f12fdc225fd`
Sources: [`packages/session/session-title-llm/src/index.ts:34`](../packages/session/session-title-llm/src/index.ts)
@@ -4456,7 +4447,7 @@ Sources: [`packages/session/session-title-llm/src/index.ts:34`](../packages/sess
|---|---|---|
| `maxTokens` | required | `number` |
| `messageSeqs` | required | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) |
| `messages` | required | [`Message[]`](#persistence-type-sha256-9bc19580d3abd950c7e00aa4d1885c4de20c1a56e8a65df721ae88a11437211f) |
| `messages` | required | [`Message[]`](#persistence-type-sha256-fc8242857caf7450d7f68a1f509dce83e237bd21571666006895124cb2246a83) |
| `route` | required | [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) |
| `system` | required | `string` |
| `titleProvider` | required | `string` |
@@ -5110,7 +5101,7 @@ Sources: [`packages/core/session/src/types.ts:232`](../packages/core/session/src
| `interrupted` | not declared | none | [`{ kind: "interrupted" }`](#persistence-type-sha256-56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23) |
| `max-tokens` | not declared | none | [`{ kind: "max-tokens" }`](#persistence-type-sha256-ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7) |
<a id="persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47"></a>
<a id="persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586"></a>
<a id="persistence-type-packagesllmllmsrcmessagetsusermessage"></a>
@@ -5118,7 +5109,7 @@ Sources: [`packages/core/session/src/types.ts:232`](../packages/core/session/src
### `UserMessage`
SHA-256: `2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47`
SHA-256: `64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586`
Sources: [`packages/llm/llm/src/message.ts:162`](../packages/llm/llm/src/message.ts)
@@ -5127,19 +5118,19 @@ Sources: [`packages/llm/llm/src/message.ts:162`](../packages/llm/llm/src/message
| `content` | required | [`ContentBlock[]`](#persistence-type-sha256-b52f215a6cd691058a3413c12f161fa3b563a2f4895adb3df6f744ec4b0a6ef1) |
| `id` | required | `string` |
| `role` | required | `"user"` |
| `source` | required | [`MessageSource`](#persistence-type-sha256-bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624) |
| `source` | required | [`MessageSource`](#persistence-type-sha256-40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945) |
Source compatibility: `source` — `session-source-attribution` v1; `session.user-message.source`; `kind`; `preserve`.
Attribution-only additions: `team-relay`, `tmux-context`.
Attribution-only additions: `tmux-context`.
<a id="persistence-type-sha256-e2f0d22d8ab1e6f72ab1c373cc6298cb264a48c7a669e6b9e3fb583dbc15274f"></a>
<a id="persistence-type-sha256-d1f27cf1650e5f59d5d6e95ce6dfd92b31757af076a8ab6418a70b6dbdd53621"></a>
### `UserMessage[]`
SHA-256: `e2f0d22d8ab1e6f72ab1c373cc6298cb264a48c7a669e6b9e3fb583dbc15274f`
SHA-256: `d1f27cf1650e5f59d5d6e95ce6dfd92b31757af076a8ab6418a70b6dbdd53621`
Array of [`UserMessage`](#persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47).
Array of [`UserMessage`](#persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586).
<a id="persistence-type-sha256-c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896"></a>
@@ -5982,18 +5973,18 @@ Sources: [`packages/core/session/src/types.ts:390`](../packages/core/session/src
| `reason` | required | [`RequestHeaderReason`](#persistence-type-sha256-530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6) |
| `startsSeries` | optional | `true` |
<a id="persistence-type-sha256-766237c2b1b772edd4cad02080938565b64dbf317899e3268e32ff67aded0194"></a>
<a id="persistence-type-sha256-51c78ccc9023ce6642d07fb9a10cbf942ff7e313d5b304ddc77218df71da708f"></a>
### `{ headerSeq?, message, step, turn }`
SHA-256: `766237c2b1b772edd4cad02080938565b64dbf317899e3268e32ff67aded0194`
SHA-256: `51c78ccc9023ce6642d07fb9a10cbf942ff7e313d5b304ddc77218df71da708f`
Sources: [`packages/core/session/src/types.ts:311`](../packages/core/session/src/types.ts)
| Property | Presence | Type |
|---|---|---|
| `headerSeq` | optional | `number` |
| `message` | required | [`DeveloperMessage`](#persistence-type-sha256-46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba) |
| `message` | required | [`DeveloperMessage`](#persistence-type-sha256-f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b) |
| `step` | required | `number` |
| `turn` | required | `number` |
@@ -6077,17 +6068,17 @@ Sources: [`packages/core/session/src/types.ts:427`](../packages/core/session/src
|---|---|---|
| `inherited` | optional | `true` |
<a id="persistence-type-sha256-f38b6f0dd53606c1b2ba04a4bb91224c55d2000c0e8c969476d197e28a920283"></a>
<a id="persistence-type-sha256-dc4bd7ac827f4b1f9236f9a157a4b4cc171a0588064a611e43edd95f62c68130"></a>
### `{ inserted, outcome?, removedCount?, start, … }`
SHA-256: `f38b6f0dd53606c1b2ba04a4bb91224c55d2000c0e8c969476d197e28a920283`
SHA-256: `dc4bd7ac827f4b1f9236f9a157a4b4cc171a0588064a611e43edd95f62c68130`
Sources: [`packages/core/agent/src/types.ts:96`](../packages/core/agent/src/types.ts)
| Property | Presence | Type |
|---|---|---|
| `inserted` | required | [`UserMessage[]`](#persistence-type-sha256-e2f0d22d8ab1e6f72ab1c373cc6298cb264a48c7a669e6b9e3fb583dbc15274f) |
| `inserted` | required | [`UserMessage[]`](#persistence-type-sha256-d1f27cf1650e5f59d5d6e95ce6dfd92b31757af076a8ab6418a70b6dbdd53621) |
| `outcome` | optional | `"canceled"` |
| `removedCount` | optional | `number` |
| `start` | required | `number` |
@@ -6918,21 +6909,6 @@ Sources: [`packages/llm/llm/src/types.ts:157`](../packages/llm/llm/src/types.ts)
|---|---|---|
| `kind` | required | `"stop"` |
<a id="persistence-type-sha256-a005283d8ee3046e3f7dadfc1364813834802abae0551fc9bf72c352381f7bfe"></a>
### `{ kind: "team-relay", form: "relay" }`
SHA-256: `a005283d8ee3046e3f7dadfc1364813834802abae0551fc9bf72c352381f7bfe`
Sources: [`packages/experimental/agent-team/src/types.ts:151`](../packages/experimental/agent-team/src/types.ts)
| Property | Presence | Type |
|---|---|---|
| `form` | required | `"relay"` |
| `kind` | required | `"team-relay"` |
| `senderName` | required | `string` |
| `senderSessionId` | required | `string` |
<a id="persistence-type-sha256-b79641a9d25e756636dc0c706fdf3c4583ccb7d4920e009e6e86c0759cf4de4c"></a>
### `{ kind: "time-context" }`
@@ -7400,7 +7376,7 @@ Sources: [`packages/web/web-search-deepseek/src/provider.ts:61`](../packages/web
SHA-256: `b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1`
Sources: [`packages/experimental/agent-team/src/types.ts:239`](../packages/experimental/agent-team/src/types.ts)
Sources: [`packages/experimental/agent-team/src/types.ts:230`](../packages/experimental/agent-team/src/types.ts)
| Property | Presence | Type |
|---|---|---|
@@ -7428,7 +7404,7 @@ Sources: [`packages/core/session/src/types.ts:330`](../packages/core/session/src
SHA-256: `ea08ec1df0c33108fd03345b9af199cf04dea450aa045d3c683f216311403403`
Sources: [`packages/experimental/agent-team/src/types.ts:243`](../packages/experimental/agent-team/src/types.ts)
Sources: [`packages/experimental/agent-team/src/types.ts:234`](../packages/experimental/agent-team/src/types.ts)
| Property | Presence | Type |
|---|---|---|
@@ -7442,7 +7418,7 @@ Sources: [`packages/experimental/agent-team/src/types.ts:243`](../packages/exper
SHA-256: `0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1`
Sources: [`packages/experimental/agent-team/src/types.ts:245`](../packages/experimental/agent-team/src/types.ts)
Sources: [`packages/experimental/agent-team/src/types.ts:236`](../packages/experimental/agent-team/src/types.ts)
| Property | Presence | Type |
|---|---|---|
@@ -7588,7 +7564,7 @@ Sources: [`packages/compaction/compaction-image-offload/src/projection.ts:25`](.
SHA-256: `a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c`
Sources: [`packages/experimental/agent-team/src/types.ts:241`](../packages/experimental/agent-team/src/types.ts)
Sources: [`packages/experimental/agent-team/src/types.ts:232`](../packages/experimental/agent-team/src/types.ts)
| Property | Presence | Type |
|---|---|---|
@@ -7636,17 +7612,17 @@ SHA-256: `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b`
| `time` | required | `number` |
| `type` | required | `"agent-preset/selected"` |
<a id="persistence-type-sha256-069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4"></a>
<a id="persistence-type-sha256-1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c"></a>
<a id="persistence-type-eventagentinboxspliced"></a>
### `{ type: "agent/inbox/spliced" }`
SHA-256: `069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4`
SHA-256: `1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c`
| Property | Presence | Type |
|---|---|---|
| `data` | required | [`{ inserted, outcome?, removedCount?, start, … }`](#persistence-type-sha256-f38b6f0dd53606c1b2ba04a4bb91224c55d2000c0e8c969476d197e28a920283) |
| `data` | required | [`{ inserted, outcome?, removedCount?, start, … }`](#persistence-type-sha256-dc4bd7ac827f4b1f9236f9a157a4b4cc171a0588064a611e43edd95f62c68130) |
| `ignorable` | optional | `true` |
| `seq` | required | `number` |
| `time` | required | `number` |
@@ -7887,17 +7863,17 @@ SHA-256: `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176`
| `time` | required | `number` |
| `type` | required | `"deliverables/presented"` |
<a id="persistence-type-sha256-3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e"></a>
<a id="persistence-type-sha256-eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80"></a>
<a id="persistence-type-eventdevelopermessage"></a>
### `{ type: "developer/message" }`
SHA-256: `3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e`
SHA-256: `eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80`
| Property | Presence | Type |
|---|---|---|
| `data` | required | [`{ headerSeq?, message, step, turn }`](#persistence-type-sha256-766237c2b1b772edd4cad02080938565b64dbf317899e3268e32ff67aded0194) |
| `data` | required | [`{ headerSeq?, message, step, turn }`](#persistence-type-sha256-51c78ccc9023ce6642d07fb9a10cbf942ff7e313d5b304ddc77218df71da708f) |
| `ignorable` | optional | `true` |
| `seq` | required | `number` |
| `sourceEventSeqs` | optional | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) |
@@ -8253,17 +8229,17 @@ SHA-256: `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5`
| `time` | required | `number` |
| `type` | required | `"session/title"` |
<a id="persistence-type-sha256-d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7"></a>
<a id="persistence-type-sha256-fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d"></a>
<a id="persistence-type-eventsessiontitle-llm-request"></a>
### `{ type: "session/title-llm-request" }`
SHA-256: `d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7`
SHA-256: `fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d`
| Property | Presence | Type |
|---|---|---|
| `data` | required | [`SessionTitleLlmRequestEventData`](#persistence-type-sha256-4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407) |
| `data` | required | [`SessionTitleLlmRequestEventData`](#persistence-type-sha256-9bc85364d1f37d9c837db6a3bdd3d1d007d923cdc7401a3322be9f12fdc225fd) |
| `ignorable` | optional | `true` |
| `seq` | required | `number` |
| `time` | required | `number` |
@@ -8686,17 +8662,17 @@ Sources: [`packages/llm/llm/src/types.ts:458`](../packages/llm/llm/src/types.ts)
| `type` | required | `"usage"` |
| `usage` | required | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) |
<a id="persistence-type-sha256-0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58"></a>
<a id="persistence-type-sha256-3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761"></a>
<a id="persistence-type-eventusermessage"></a>
### `{ type: "user/message" }`
SHA-256: `0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58`
SHA-256: `3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761`
| Property | Presence | Type |
|---|---|---|
| `data` | required | [`UserMessage`](#persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47) |
| `data` | required | [`UserMessage`](#persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586) |
| `ignorable` | optional | `true` |
| `seq` | required | `number` |
| `sourceEventSeqs` | optional | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) |
+53 -77
View File
@@ -23,7 +23,7 @@
| `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 | `069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4` | [`{ type: "agent/inbox/spliced" }`](#persistence-type-sha256-069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4) |
| `event:agent/inbox/spliced` | event | `1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c` | [`{ type: "agent/inbox/spliced" }`](#persistence-type-sha256-1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c) |
| `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) |
@@ -36,7 +36,7 @@
| `event:compaction/start` | event | `db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965` | [`{ type: "compaction/start" }`](#persistence-type-sha256-db874d463b0fdec77e9da1c4568f37cb70bd6596781eb93800db44fb8a116965) |
| `event:compaction/summary` | event | `e2f9a41e0989f54ed8cee80f8db2bcf9d60a5c810dc9d45b83fa050b9dce7602` | [`{ type: "compaction/summary" }`](#persistence-type-sha256-e2f9a41e0989f54ed8cee80f8db2bcf9d60a5c810dc9d45b83fa050b9dce7602) |
| `event:deliverables/presented` | event | `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176` | [`{ type: "deliverables/presented" }`](#persistence-type-sha256-13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176) |
| `event:developer/message` | event | `3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e` | [`{ type: "developer/message" }`](#persistence-type-sha256-3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e) |
| `event:developer/message` | event | `eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80` | [`{ type: "developer/message" }`](#persistence-type-sha256-eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80) |
| `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) |
@@ -56,7 +56,7 @@
| `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 | `d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7` | [`{ type: "session/title-llm-request" }`](#persistence-type-sha256-d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7) |
| `event:session/title-llm-request` | event | `fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d` | [`{ type: "session/title-llm-request" }`](#persistence-type-sha256-fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d) |
| `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 | `3abae7324356f155cb42450c00b806d134ec93bd6439d2063b8d724162d58604` | [`{ type: "subagent/catalog" }`](#persistence-type-sha256-3abae7324356f155cb42450c00b806d134ec93bd6439d2063b8d724162d58604) |
@@ -78,7 +78,7 @@
| `event:tool/result` | event | `7c9f44e90a0058f4cc532ae20dad0c10afa6eba22e70a6c79fc79490bad64397` | [`{ type: "tool/result" }`](#persistence-type-sha256-7c9f44e90a0058f4cc532ae20dad0c10afa6eba22e70a6c79fc79490bad64397) |
| `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 | `0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58` | [`{ type: "user/message" }`](#persistence-type-sha256-0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58) |
| `event:user/message` | event | `3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761` | [`{ type: "user/message" }`](#persistence-type-sha256-3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761) |
| `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) |
@@ -977,7 +977,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMemberSnapshot](subsystems/agent-team.zh.md)
来源:[`packages/experimental/agent-team/src/types.ts:239`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:230`](../packages/experimental/agent-team/src/types.ts)
<a id="teammessagedelivered--log-only"></a>
@@ -995,7 +995,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMessageId](subsystems/agent-team.zh.md)
来源:[`packages/experimental/agent-team/src/types.ts:245`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:236`](../packages/experimental/agent-team/src/types.ts)
<a id="teammessagequeued--log-only"></a>
@@ -1008,7 +1008,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMessageSnapshot](subsystems/agent-team.zh.md)
来源:[`packages/experimental/agent-team/src/types.ts:243`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:234`](../packages/experimental/agent-team/src/types.ts)
<a id="teamtask--log-only"></a>
@@ -1021,7 +1021,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamTaskSnapshot](subsystems/agent-team.zh.md)
来源:[`packages/experimental/agent-team/src/types.ts:241`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:232`](../packages/experimental/agent-team/src/types.ts)
### `todo/*`
@@ -2541,14 +2541,6 @@ SHA-256: `2e4debca12f2c449f96dc6574f3fbf2fb346193443114a241d01a236362ec48c`
`"team-message"`
<a id="persistence-type-sha256-c91852e53038618e7869f3e436acdb3f319c4f31b516c71a4b816e7387e3df2f"></a>
### `"team-relay"`
SHA-256: `c91852e53038618e7869f3e436acdb3f319c4f31b516c71a4b816e7387e3df2f`
`"team-relay"`
<a id="persistence-type-sha256-18fcdd273a2f2f9d813a3be5e71df5903a963a5c88e46b90b14de6e2db890da0"></a>
### `"team/member"`
@@ -3217,7 +3209,7 @@ SHA-256: `2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9`
| `body` | 必需 | [`{ max_tokens, messages, model, tools }`](#persistence-type-sha256-930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731) |
| `endpoint` | 必需 | `string` |
<a id="persistence-type-sha256-46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba"></a>
<a id="persistence-type-sha256-f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b"></a>
<a id="persistence-type-developermessage"></a>
@@ -3225,7 +3217,7 @@ SHA-256: `2517ba143a271508d3ca35126d5aca8f7f1facf5aaddce4adf011832042fa2b9`
### `DeveloperMessage`
SHA-256: `46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba`
SHA-256: `f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b`
来源:[`packages/llm/llm/src/message.ts:157`](../packages/llm/llm/src/message.ts)
@@ -3234,11 +3226,11 @@ SHA-256: `46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba`
| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-b52f215a6cd691058a3413c12f161fa3b563a2f4895adb3df6f744ec4b0a6ef1) |
| `id` | 必需 | `string` |
| `role` | 必需 | `"developer"` |
| `source` | 必需 | [`MessageSource`](#persistence-type-sha256-bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624) |
| `source` | 必需 | [`MessageSource`](#persistence-type-sha256-40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945) |
消息源兼容策略:`source` — `session-source-attribution` v1; `session.developer-message.source`; `kind`; `preserve`.
仅表示归属的新增 kind:`team-relay`, `tmux-context`.
仅表示归属的新增 kind:`tmux-context`.
<a id="persistence-type-sha256-9a930283b91d493d6347146f2475bb107294b379415ca02162354f46a64164f7"></a>
@@ -3851,7 +3843,7 @@ SHA-256: `6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20`
| `step` | 必需 | `number` |
| `turn` | 必需 | `number` |
<a id="persistence-type-sha256-139bcc0c4019840db40b45e3e23dbcf44d93821ff5ebc064b8934a0a51d8b1b2"></a>
<a id="persistence-type-sha256-691c0f641cd3e8072fdacd6fa8c400253cf75a0ce9285d8ce89141bbb24f2fb6"></a>
<a id="persistence-type-message"></a>
@@ -3859,15 +3851,15 @@ SHA-256: `6f72ece8f317cd080c4f20a93f1bf709965f5b81ac4669528f5a023191cfcf20`
### `Message`
SHA-256: `139bcc0c4019840db40b45e3e23dbcf44d93821ff5ebc064b8934a0a51d8b1b2`
SHA-256: `691c0f641cd3e8072fdacd6fa8c400253cf75a0ce9285d8ce89141bbb24f2fb6`
来源:[`packages/llm/llm/src/message.ts:196`](../packages/llm/llm/src/message.ts)
以下类型之一:
- [`ToolResultMessage`](#persistence-type-sha256-4b259f7f8f0a44ad5e90b70a73553ced1df27012d126921d397ff403b6c86731)
- [`DeveloperMessage`](#persistence-type-sha256-46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba)
- [`UserMessage`](#persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47)
- [`DeveloperMessage`](#persistence-type-sha256-f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b)
- [`UserMessage`](#persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586)
- [`AssistantMessage`](#persistence-type-sha256-fa87537f4a9c1e25602990a8bf686b383e9e00352ec8946e16ae24ba7c1625be)
- [`SystemMessage`](#persistence-type-sha256-09f3f8dc417f278257202714132f98ba7b52957d7b558c4a04456603890eb363)
@@ -3944,7 +3936,7 @@ SHA-256: `390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2`
- `"negative"`
- `"positive"`
<a id="persistence-type-sha256-bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624"></a>
<a id="persistence-type-sha256-40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945"></a>
<a id="persistence-type-messagesource"></a>
@@ -3952,7 +3944,7 @@ SHA-256: `390eed1028aba02774f14408647acec10ec5516e97d4f15ecde2b9989d5a69f2`
### `MessageSource`
SHA-256: `bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624`
SHA-256: `40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945`
来源:[`packages/llm/llm/src/message.ts:136`](../packages/llm/llm/src/message.ts)
@@ -4027,7 +4019,6 @@ SHA-256: `bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624`
| `subagent-settled` | `"notice"` | `senderSessionId`: `string`; `summary`: `string` | [`SubagentSettledMessageSource`](#persistence-type-sha256-4e97c3d85c0fc817ee58873c38c25a2474abaaa0af4839311b50b68db3b8cf1a) |
| `system-prompt` | 未声明 | 无 | [`SystemPromptMessageSource`](#persistence-type-sha256-65a8400e451e667e5b6e34df72ceb81fca8c12330330fa72083ad40279b189ad) |
| `team-message` | 未声明 | `messageId`: `string`; `senderId`: `string`; `senderName`: `string`; `teamId`: `string` | [`TeamMessageSource`](#persistence-type-sha256-2152caf1a71e588e4df2358a806dea24936c1c47131134f01a12939d12cdc0c0) |
| `team-relay` | `"relay"` | `senderName`: `string`; `senderSessionId`: `string` | [`{ kind: "team-relay", form: "relay" }`](#persistence-type-sha256-a005283d8ee3046e3f7dadfc1364813834802abae0551fc9bf72c352381f7bfe) |
| `time-context` | `"catalog"` | 无 | [`{ kind: "time-context", form: "catalog" }`](#persistence-type-sha256-85fe96bf15d5c7559eec3bae4d6cf1a76fda9f5be05a29c2830cff560cab0c0d) |
| `time-context` | `"instructions"` | 无 | [`{ kind: "time-context", form: "instructions" }`](#persistence-type-sha256-f6afe41e3926f422fe849debe90819fddd739f0f59e20be9c71018b9554a7f09) |
| `time-context` | `"notice"` | `summary`: `string` | [`{ kind: "time-context", form: "notice" }`](#persistence-type-sha256-ee577a0cc18664c9daee50e9455153321155604f8f1817362f8f4a4b6fb9e1ad) |
@@ -4069,13 +4060,13 @@ SHA-256: `bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624`
| `user-approval` | 未声明 | 无 | [`{ kind: "user-approval" }`](#persistence-type-sha256-6292bcbedaa97feaec5b48a03bb8144b581b93309d9d6c905f26da7a6a7a0a4f) |
| `webhook` | `"notice"` | `deliveryId`: `string`; `provider`: `string`; `ruleId`: `string`; `source`: `string`; `summary`: `string` | [`{ kind: "webhook", form: "notice" }`](#persistence-type-sha256-9edc162949abf93bd5ff049191b345454ba104f583937ce5580fb50f067d2b94) |
<a id="persistence-type-sha256-9bc19580d3abd950c7e00aa4d1885c4de20c1a56e8a65df721ae88a11437211f"></a>
<a id="persistence-type-sha256-fc8242857caf7450d7f68a1f509dce83e237bd21571666006895124cb2246a83"></a>
### `Message[]`
SHA-256: `9bc19580d3abd950c7e00aa4d1885c4de20c1a56e8a65df721ae88a11437211f`
SHA-256: `fc8242857caf7450d7f68a1f509dce83e237bd21571666006895124cb2246a83`
[`Message`](#persistence-type-sha256-139bcc0c4019840db40b45e3e23dbcf44d93821ff5ebc064b8934a0a51d8b1b2) 的数组。
[`Message`](#persistence-type-sha256-691c0f641cd3e8072fdacd6fa8c400253cf75a0ce9285d8ce89141bbb24f2fb6) 的数组。
<a id="persistence-type-sha256-719c51f67074f97034a6c94297fe1f4b5d3c8d392c57586dab732aa5398c7a91"></a>
@@ -4442,7 +4433,7 @@ SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4`
| `source` | 必需 | [`SessionTitleSource`](#persistence-type-sha256-30d5a537b296685770b1241c4b4bbde19d5a31ff81aa23df73fab5e90b8fc65f) |
| `title` | 必需 | `string` |
<a id="persistence-type-sha256-4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407"></a>
<a id="persistence-type-sha256-9bc85364d1f37d9c837db6a3bdd3d1d007d923cdc7401a3322be9f12fdc225fd"></a>
<a id="persistence-type-packagessessionsession-title-llmsrcindextssessiontitlellmrequesteventdata"></a>
@@ -4450,7 +4441,7 @@ SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4`
### `SessionTitleLlmRequestEventData`
SHA-256: `4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407`
SHA-256: `9bc85364d1f37d9c837db6a3bdd3d1d007d923cdc7401a3322be9f12fdc225fd`
来源:[`packages/session/session-title-llm/src/index.ts:34`](../packages/session/session-title-llm/src/index.ts)
@@ -4458,7 +4449,7 @@ SHA-256: `4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407`
|---|---|---|
| `maxTokens` | 必需 | `number` |
| `messageSeqs` | 必需 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) |
| `messages` | 必需 | [`Message[]`](#persistence-type-sha256-9bc19580d3abd950c7e00aa4d1885c4de20c1a56e8a65df721ae88a11437211f) |
| `messages` | 必需 | [`Message[]`](#persistence-type-sha256-fc8242857caf7450d7f68a1f509dce83e237bd21571666006895124cb2246a83) |
| `route` | 必需 | [`SessionTitleModelIdentity`](#persistence-type-sha256-07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235) |
| `system` | 必需 | `string` |
| `titleProvider` | 必需 | `string` |
@@ -5112,7 +5103,7 @@ SHA-256: `f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402`
| `interrupted` | 未声明 | 无 | [`{ kind: "interrupted" }`](#persistence-type-sha256-56b7c047694875a843ba020dfea3c8380d54ae4ff88ab349e72004dc21e07c23) |
| `max-tokens` | 未声明 | 无 | [`{ kind: "max-tokens" }`](#persistence-type-sha256-ab7ec5f9eb2c6dfacca5da4c37cf7ba85d04172053ee6b1ebf1709ffcd99c1a7) |
<a id="persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47"></a>
<a id="persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586"></a>
<a id="persistence-type-packagesllmllmsrcmessagetsusermessage"></a>
@@ -5120,7 +5111,7 @@ SHA-256: `f1687f982fa3d41ef29e159feed154ecd13af4dd209acaee16038f223f2e9402`
### `UserMessage`
SHA-256: `2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47`
SHA-256: `64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586`
来源:[`packages/llm/llm/src/message.ts:162`](../packages/llm/llm/src/message.ts)
@@ -5129,19 +5120,19 @@ SHA-256: `2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47`
| `content` | 必需 | [`ContentBlock[]`](#persistence-type-sha256-b52f215a6cd691058a3413c12f161fa3b563a2f4895adb3df6f744ec4b0a6ef1) |
| `id` | 必需 | `string` |
| `role` | 必需 | `"user"` |
| `source` | 必需 | [`MessageSource`](#persistence-type-sha256-bc01b8b489de8b58fd355dae5ff5d74f8a9a852a0f3c8e569781cf75d8dc4624) |
| `source` | 必需 | [`MessageSource`](#persistence-type-sha256-40e314bd88730b4bff04a2083cc540ef8659ee2240eeaae0132cac974784b945) |
消息源兼容策略:`source` — `session-source-attribution` v1; `session.user-message.source`; `kind`; `preserve`.
仅表示归属的新增 kind:`team-relay`, `tmux-context`.
仅表示归属的新增 kind:`tmux-context`.
<a id="persistence-type-sha256-e2f0d22d8ab1e6f72ab1c373cc6298cb264a48c7a669e6b9e3fb583dbc15274f"></a>
<a id="persistence-type-sha256-d1f27cf1650e5f59d5d6e95ce6dfd92b31757af076a8ab6418a70b6dbdd53621"></a>
### `UserMessage[]`
SHA-256: `e2f0d22d8ab1e6f72ab1c373cc6298cb264a48c7a669e6b9e3fb583dbc15274f`
SHA-256: `d1f27cf1650e5f59d5d6e95ce6dfd92b31757af076a8ab6418a70b6dbdd53621`
[`UserMessage`](#persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47) 的数组。
[`UserMessage`](#persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586) 的数组。
<a id="persistence-type-sha256-c2deb7c9183735d4e0fffddf5c623f4e34daa1c8e96b111982e957dfcbbcf896"></a>
@@ -5984,18 +5975,18 @@ SHA-256: `ad0c38a0adb82a94c925456df41586d9b5f9202fca18593eae2213d4445b4585`
| `reason` | 必需 | [`RequestHeaderReason`](#persistence-type-sha256-530da6c0267813bb4511af72883cc518834e624e3b3220a7062955fd57a788a6) |
| `startsSeries` | 可选 | `true` |
<a id="persistence-type-sha256-766237c2b1b772edd4cad02080938565b64dbf317899e3268e32ff67aded0194"></a>
<a id="persistence-type-sha256-51c78ccc9023ce6642d07fb9a10cbf942ff7e313d5b304ddc77218df71da708f"></a>
### `{ headerSeq?, message, step, turn }`
SHA-256: `766237c2b1b772edd4cad02080938565b64dbf317899e3268e32ff67aded0194`
SHA-256: `51c78ccc9023ce6642d07fb9a10cbf942ff7e313d5b304ddc77218df71da708f`
来源:[`packages/core/session/src/types.ts:311`](../packages/core/session/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
| `headerSeq` | 可选 | `number` |
| `message` | 必需 | [`DeveloperMessage`](#persistence-type-sha256-46a72c9e650cc0179669cc826b3fa02a98be6152cd2fc626b0ba6eccd6440fba) |
| `message` | 必需 | [`DeveloperMessage`](#persistence-type-sha256-f61313bd96ed95b72eb16a4a5a77ad94a0da1756d428d3d660ff6e23c9e6342b) |
| `step` | 必需 | `number` |
| `turn` | 必需 | `number` |
@@ -6079,17 +6070,17 @@ SHA-256: `17d1afb770d9941936130996da00dc86782cfef731d8d6526162c301256a4ac3`
|---|---|---|
| `inherited` | 可选 | `true` |
<a id="persistence-type-sha256-f38b6f0dd53606c1b2ba04a4bb91224c55d2000c0e8c969476d197e28a920283"></a>
<a id="persistence-type-sha256-dc4bd7ac827f4b1f9236f9a157a4b4cc171a0588064a611e43edd95f62c68130"></a>
### `{ inserted, outcome?, removedCount?, start, … }`
SHA-256: `f38b6f0dd53606c1b2ba04a4bb91224c55d2000c0e8c969476d197e28a920283`
SHA-256: `dc4bd7ac827f4b1f9236f9a157a4b4cc171a0588064a611e43edd95f62c68130`
来源:[`packages/core/agent/src/types.ts:96`](../packages/core/agent/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
| `inserted` | 必需 | [`UserMessage[]`](#persistence-type-sha256-e2f0d22d8ab1e6f72ab1c373cc6298cb264a48c7a669e6b9e3fb583dbc15274f) |
| `inserted` | 必需 | [`UserMessage[]`](#persistence-type-sha256-d1f27cf1650e5f59d5d6e95ce6dfd92b31757af076a8ab6418a70b6dbdd53621) |
| `outcome` | 可选 | `"canceled"` |
| `removedCount` | 可选 | `number` |
| `start` | 必需 | `number` |
@@ -6920,21 +6911,6 @@ SHA-256: `1d76406cbb2ddadb0dbbb51e9d8bc6cf678fed455cf8eb512f36f7c86d37a62f`
|---|---|---|
| `kind` | 必需 | `"stop"` |
<a id="persistence-type-sha256-a005283d8ee3046e3f7dadfc1364813834802abae0551fc9bf72c352381f7bfe"></a>
### `{ kind: "team-relay", form: "relay" }`
SHA-256: `a005283d8ee3046e3f7dadfc1364813834802abae0551fc9bf72c352381f7bfe`
来源:[`packages/experimental/agent-team/src/types.ts:151`](../packages/experimental/agent-team/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
| `form` | 必需 | `"relay"` |
| `kind` | 必需 | `"team-relay"` |
| `senderName` | 必需 | `string` |
| `senderSessionId` | 必需 | `string` |
<a id="persistence-type-sha256-b79641a9d25e756636dc0c706fdf3c4583ccb7d4920e009e6e86c0759cf4de4c"></a>
### `{ kind: "time-context" }`
@@ -7402,7 +7378,7 @@ SHA-256: `930a6567a10bb62ddd157bd8abdf4b182810c8c3b49d91309b3b009a5fed9731`
SHA-256: `b1ebd5cda47d90d980bb05bffc3f970c51537b9aff15b3bc3d639811727741b1`
来源:[`packages/experimental/agent-team/src/types.ts:239`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:230`](../packages/experimental/agent-team/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
@@ -7430,7 +7406,7 @@ SHA-256: `6bc8e51124d0874bc89e1d0ceff381a9c3cd0fc240667d69f841ce4f60f65fe5`
SHA-256: `ea08ec1df0c33108fd03345b9af199cf04dea450aa045d3c683f216311403403`
来源:[`packages/experimental/agent-team/src/types.ts:243`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:234`](../packages/experimental/agent-team/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
@@ -7444,7 +7420,7 @@ SHA-256: `ea08ec1df0c33108fd03345b9af199cf04dea450aa045d3c683f216311403403`
SHA-256: `0bcfaf5566d271028429ac7b562cb59053c9d78b8ae14708c35fac835108d1b1`
来源:[`packages/experimental/agent-team/src/types.ts:245`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:236`](../packages/experimental/agent-team/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
@@ -7590,7 +7566,7 @@ SHA-256: `477614bca595a9e7adb5a1870be446b9a8684f3ba8950259d6289f2d3b74f028`
SHA-256: `a40d12070f6f4a124f32fb3cc86e7857554702e32f0eda3080a25c4b9ac9b18c`
来源:[`packages/experimental/agent-team/src/types.ts:241`](../packages/experimental/agent-team/src/types.ts)
来源:[`packages/experimental/agent-team/src/types.ts:232`](../packages/experimental/agent-team/src/types.ts)
| 属性 | 存在性 | 类型 |
|---|---|---|
@@ -7638,17 +7614,17 @@ SHA-256: `a10c17474eaf2ddab7095a099e0fe3d046fc18e56c3e344fc8894c05ff9ef97b`
| `time` | 必需 | `number` |
| `type` | 必需 | `"agent-preset/selected"` |
<a id="persistence-type-sha256-069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4"></a>
<a id="persistence-type-sha256-1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c"></a>
<a id="persistence-type-eventagentinboxspliced"></a>
### `{ type: "agent/inbox/spliced" }`
SHA-256: `069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4`
SHA-256: `1506a9b8224986c83015ae99d2cb5ede705538c58c063d6a48ef6d761a31ba6c`
| 属性 | 存在性 | 类型 |
|---|---|---|
| `data` | 必需 | [`{ inserted, outcome?, removedCount?, start, … }`](#persistence-type-sha256-f38b6f0dd53606c1b2ba04a4bb91224c55d2000c0e8c969476d197e28a920283) |
| `data` | 必需 | [`{ inserted, outcome?, removedCount?, start, … }`](#persistence-type-sha256-dc4bd7ac827f4b1f9236f9a157a4b4cc171a0588064a611e43edd95f62c68130) |
| `ignorable` | 可选 | `true` |
| `seq` | 必需 | `number` |
| `time` | 必需 | `number` |
@@ -7889,17 +7865,17 @@ SHA-256: `13d3d180f977bf78081d487ffa0ecb75857349bcab29a5a3fb48189fca2a6176`
| `time` | 必需 | `number` |
| `type` | 必需 | `"deliverables/presented"` |
<a id="persistence-type-sha256-3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e"></a>
<a id="persistence-type-sha256-eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80"></a>
<a id="persistence-type-eventdevelopermessage"></a>
### `{ type: "developer/message" }`
SHA-256: `3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e`
SHA-256: `eef4ef54dc7a133d47448a4ee822e45a351314923ef5f66db34c8b24e4b32d80`
| 属性 | 存在性 | 类型 |
|---|---|---|
| `data` | 必需 | [`{ headerSeq?, message, step, turn }`](#persistence-type-sha256-766237c2b1b772edd4cad02080938565b64dbf317899e3268e32ff67aded0194) |
| `data` | 必需 | [`{ headerSeq?, message, step, turn }`](#persistence-type-sha256-51c78ccc9023ce6642d07fb9a10cbf942ff7e313d5b304ddc77218df71da708f) |
| `ignorable` | 可选 | `true` |
| `seq` | 必需 | `number` |
| `sourceEventSeqs` | 可选 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) |
@@ -8255,17 +8231,17 @@ SHA-256: `1b912703e2d64f91c99c675b8f805b01076c8325b905c1218ad81ef0b24909d5`
| `time` | 必需 | `number` |
| `type` | 必需 | `"session/title"` |
<a id="persistence-type-sha256-d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7"></a>
<a id="persistence-type-sha256-fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d"></a>
<a id="persistence-type-eventsessiontitle-llm-request"></a>
### `{ type: "session/title-llm-request" }`
SHA-256: `d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7`
SHA-256: `fa8f7d3ebf08a76c7f7a8b0781873c4d819b964da5dbb52cd3cdfa5da34f452d`
| 属性 | 存在性 | 类型 |
|---|---|---|
| `data` | 必需 | [`SessionTitleLlmRequestEventData`](#persistence-type-sha256-4acc335429a47b513bcd92c688cc856459b90a344d27fbaccb2a524560113407) |
| `data` | 必需 | [`SessionTitleLlmRequestEventData`](#persistence-type-sha256-9bc85364d1f37d9c837db6a3bdd3d1d007d923cdc7401a3322be9f12fdc225fd) |
| `ignorable` | 可选 | `true` |
| `seq` | 必需 | `number` |
| `time` | 必需 | `number` |
@@ -8688,17 +8664,17 @@ SHA-256: `f1a96afe7503ac1817de769cd0ba13d9b80111c7034c50106b3344ecc14cc515`
| `type` | 必需 | `"usage"` |
| `usage` | 必需 | [`TokenUsage`](#persistence-type-sha256-fec5442b9ee4122e10514d81d5a43648003fe8bfb7ee2ba50c0cdbdd383ed394) |
<a id="persistence-type-sha256-0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58"></a>
<a id="persistence-type-sha256-3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761"></a>
<a id="persistence-type-eventusermessage"></a>
### `{ type: "user/message" }`
SHA-256: `0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58`
SHA-256: `3f72db3d87a0c5c43e68be467b4cca728eaf5adc1d5d2b6975ff42bfbd961761`
| 属性 | 存在性 | 类型 |
|---|---|---|
| `data` | 必需 | [`UserMessage`](#persistence-type-sha256-2424473dd6f2b538034fbb91c9e07af863fdf550c0d2fe4c75119e6e0872ce47) |
| `data` | 必需 | [`UserMessage`](#persistence-type-sha256-64ea5653002834c44f29bea4620e9c42aeb6024ae5b1d58d69f95158006b2586) |
| `ignorable` | 可选 | `true` |
| `seq` | 必需 | `number` |
| `sourceEventSeqs` | 可选 | [`number[]`](#persistence-type-sha256-5d03ba38734809bcbd2a55221bd938b3b3fc34b49bb686c6113e9e4931e3aa78) |
@@ -1,28 +0,0 @@
# Bilingual-pair consistency record for 2026-09-27-team-relay-source.md (docs/i18n/README.md): per heading
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
# After editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/persistence-changes/2026-09-27-team-relay-source.md
/:
en: 3d5a424ae7d7e46b
zh: c22a8e4a62d8cc1a
/2026-09-27-team-relay-source:
en: e0c1ab3f13e8273e
zh: bb1e786065a69390
/2026-09-27-team-relay-source/summary:
en: a6b6694a082889f1
zh: 2ffcc7e2ca682aae
/2026-09-27-team-relay-source/table-of-contents:
en: 6cf314a069ceb451
zh: 9adff678e9ecab3b
/2026-09-27-team-relay-source/declaration:
en: 6907136f28e48c90
zh: 02f8298485f3d8e7
/2026-09-27-team-relay-source/compatibility:
en: 495a00731d6363b7
zh: 03a17f27249df4ec
/2026-09-27-team-relay-source/verification:
en: 4f1b64efd9a6455a
zh: 3bafc76582930927
/2026-09-27-team-relay-source/dev-note:
en: b75c8458928b72b9
zh: 003ba4e17b4b5269
@@ -1,60 +0,0 @@
---
description: "Records a persistence type transition and its compatibility acknowledgement."
kind: persistence-change
---
# 2026-09-27-team-relay-source
English | [中文](2026-09-27-team-relay-source.zh.md)
## Summary
Adds the Team-owned team-relay attribution source to persisted user and developer message slots without changing the Session format version.
## Table of Contents
- [Declaration](#declaration)
- [Compatibility](#compatibility)
- [Verification](#verification)
- [Dev Note](#dev-note)
<a id="declaration"></a>
## Declaration
```yaml persistence-change
schemaVersion: 1
id: 2026-09-27-team-relay-source
baseline: false
changes:
- root: "event:agent/inbox/spliced"
previous: "2026-09-16-session-format-v4"
after: "069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4"
decision: same-version
- root: "event:developer/message"
previous: "2026-09-16-session-format-v4"
after: "3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e"
decision: same-version
- root: "event:session/title-llm-request"
previous: "2026-09-16-session-format-v4"
after: "d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7"
decision: same-version
- root: "event:user/message"
previous: "2026-09-16-session-format-v4"
after: "0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58"
decision: same-version
```
<a id="compatibility"></a>
## Compatibility
Existing agent-message and historical team-message records remain unchanged. The new kind records senderSessionId, senderName, and relay form only; it imposes no replay, validation, or authority requirement. Current V4 readers preserve unknown attribution and its JSON metadata without the Team producer. Older clients can display the recorded content with generic source presentation.
<a id="verification"></a>
## Verification
pnpm exec vitest run packages/experimental/agent-team packages/experimental/tool-agent-team packages/client/ui-chat/tests/turn-trigger.client.spec.tsx: 129 tests passed. pnpm exec vitest run packages/experimental/agent-team/tests/persistence.spec.ts packages/session/session-format-v3-to-v4/tests/attribution.spec.ts packages/session/session-format-v3-to-v4/tests/message-sources.spec.ts: 16 tests passed, including target inbox recovery with Team disposed. pnpm run test:snapshot -t 'team-direct-inbox|team-targets': 2 scenarios passed.
<a id="dev-note"></a>
## Dev Note
None.
File diff suppressed because it is too large. Load diff
@@ -1,60 +0,0 @@
---
description: "记录持久化类型更改及其兼容性确认。"
kind: persistence-change
---
# 2026-09-27-team-relay-source
[English](2026-09-27-team-relay-source.md) | 中文
## 概述
为持久化的 user 和 developer 消息位置添加 Team 所属的 team-relay 归属来源,不改变 Session 格式版本。
## 目录
- [声明](#declaration)
- [兼容性](#compatibility)
- [验证](#verification)
- [开发备注](#dev-note)
<a id="declaration"></a>
## 声明
```yaml persistence-change
schemaVersion: 1
id: 2026-09-27-team-relay-source
baseline: false
changes:
- root: "event:agent/inbox/spliced"
previous: "2026-09-16-session-format-v4"
after: "069fe0ac1098edd8c2582179e19aa1168db48efcbc41052d0b8a8d4a29d09dd4"
decision: same-version
- root: "event:developer/message"
previous: "2026-09-16-session-format-v4"
after: "3891652446c8d1e35ba97bf0205f5f8d60a08b9e4bc3213665a4921ae9c6484e"
decision: same-version
- root: "event:session/title-llm-request"
previous: "2026-09-16-session-format-v4"
after: "d36d44ef7e257e6fb64aa4fcda3b106b5e3d4afdca5227e5b6a8b721f1f2bbb7"
decision: same-version
- root: "event:user/message"
previous: "2026-09-16-session-format-v4"
after: "0ba8d5b72bf31a4148e9d1fabf661869806ec32fe0d86d92c49cdef691b22d58"
decision: same-version
```
<a id="compatibility"></a>
## 兼容性
已有 agent-message 和历史 team-message 记录保持不变。新 kind 仅记录 senderSessionId、senderName 和 relay form,不增加回放、校验或权限要求。当前 V4 读取方在没有 Team 生产者时仍保留未知归属类型及其 JSON 元数据。旧客户端可以使用通用来源展示已记录的正文。
<a id="verification"></a>
## 验证
pnpm exec vitest run packages/experimental/agent-team packages/experimental/tool-agent-team packages/client/ui-chat/tests/turn-trigger.client.spec.tsx:129 个测试通过。pnpm exec vitest run packages/experimental/agent-team/tests/persistence.spec.ts packages/session/session-format-v3-to-v4/tests/attribution.spec.ts packages/session/session-format-v3-to-v4/tests/message-sources.spec.ts:16 个测试通过,包含卸载 Team 后的目标 inbox 恢复。pnpm run test:snapshot -t 'team-direct-inbox|team-targets':2 个场景通过。
<a id="dev-note"></a>
## 开发备注
无。
@@ -15,8 +15,8 @@
en: 14c57f30e676f6e3
zh: b1a0ccf26fab3727
/session-persistence-formats/format-references:
en: 4fd2ce623e49ee0c
zh: 205db03929396361
en: 45dba01dd6d69c80
zh: c366d1a3991118c9
/session-persistence-formats/scope-and-evidence:
en: b220062139ddac1e
zh: 7c4c0efe05dafa9c
@@ -32,7 +32,7 @@ The index is generated from validated snapshots and the current writer constant.
| 1 | PR #3349 | [V1](v1.md) | [JSON](v1.schema.json) | 54 / 415 |
| 2 | `dsh-v0.1.3-alpha.2` | [V2](v2.md) | [JSON](v2.schema.json) | 56 / 435 |
| 3 | PR #4320 | [V3](v3.md) | [JSON](v3.schema.json) | 60 / 467 |
| 4 | Current checkout | [Current catalog](../../persistence-catalog.md) | [JSON](../../persistence-schema.json) | 62 / 589 |
| 4 | Current checkout | [Current catalog](../../persistence-catalog.md) | [JSON](../../persistence-schema.json) | 62 / 587 |
<!-- persistence-format-index:end -->
@@ -32,7 +32,7 @@ description: "查找从 V0 到工作区写入器版本的每个 Session 格式
| 1 | PR #3349 | [V1](v1.zh.md) | [JSON](v1.schema.json) | 54 / 415 |
| 2 | `dsh-v0.1.3-alpha.2` | [V2](v2.zh.md) | [JSON](v2.schema.json) | 56 / 435 |
| 3 | PR #4320 | [V3](v3.zh.md) | [JSON](v3.schema.json) | 60 / 467 |
| 4 | 当前工作树 | [当前目录](../../persistence-catalog.zh.md) | [JSON](../../persistence-schema.json) | 62 / 589 |
| 4 | 当前工作树 | [当前目录](../../persistence-catalog.zh.md) | [JSON](../../persistence-schema.json) | 62 / 587 |
<!-- persistence-format-index:end -->
+33503 -34115
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -9,8 +9,8 @@
en: df72d9409b89714d
zh: 982934dd18864ca2
/agent-teams/messages-and-historical-mailbox:
en: 31add73bb0520fd4
zh: 18c92eaadb3607fd
en: 2aed7dd369f47747
zh: 4f080e50c584ad37
/agent-teams/shared-task-dag:
en: 4515005d07e4d2a3
zh: 26811b31f69009d6
+1 -1
View File
@@ -25,7 +25,7 @@ Every member starts in `provisioning` and reaches exactly one terminal roster ph
## Messages and historical mailbox
New sends return inbox acceptance or reject. The target stores Team-owned `team-relay` source with the real sender Session id and member name. The content prefix also names the sender for the model. Team has no new-message outbox or resend deduplication. The [package contract](../../packages/experimental/agent-team/README.md#understand-the-implementation) defines persistence. The following mailbox types remain readable so historical Lead logs still replay; Team does not deliver their pending records.
New sends return inbox acceptance or reject. The target stores the existing `agent-message` source with the real sender Session id and a sender-name content prefix. Team has no new-message outbox or resend deduplication. The [package contract](../../packages/experimental/agent-team/README.md#understand-the-implementation) defines persistence. The following mailbox types remain readable so historical Lead logs still replay; Team does not deliver their pending records.
```ts type-equiv
/** One peer message recorded by the historical Team mailbox. */
+1 -1
View File
@@ -25,7 +25,7 @@ interface TeamMemberSnapshot {
## 消息与历史 mailbox
新发送返回 inbox 接收结果或拒绝。目标保存 Team 所属的 `team-relay` source,包含真实发送者 Session id 和成员名称。正文前缀也向模型标明发送者。Team 不为新消息提供 outbox 或重发去重。[包约定](../../packages/experimental/agent-team/README.zh.md#understand-the-implementation)定义持久化。以下 mailbox 类型继续可读,以便历史 Lead 日志仍能回放;Team 不投递其中的 pending 记录。
新发送返回 inbox 接收结果或拒绝。目标保存现有 `agent-message` source,包含真实发送者 Session id 和发送者名称正文前缀。Team 不为新消息提供 outbox 或重发去重。[包约定](../../packages/experimental/agent-team/README.zh.md#understand-the-implementation)定义持久化。以下 mailbox 类型继续可读,以便历史 Lead 日志仍能回放;Team 不投递其中的 pending 记录。
```ts type-equiv
/** One peer message recorded by the historical Team mailbox. */
@@ -37,7 +37,6 @@ export function turnTriggerDetails(node: ContextMessageNode): {
icon = 'agent'
break
case 'team-message':
case 'team-relay':
title = 'message.trigger.team'
icon = 'team'
break
@@ -31,7 +31,6 @@ describe('Turn trigger notices', () => {
[{ kind: 'goal' }, 'goal', 'Continuing goal'],
[{ kind: 'agent-message' }, 'agent', 'Task message received'],
[{ kind: 'team-message' }, 'team', 'Team message received'],
[{ kind: 'team-relay' }, 'team', 'Team message received'],
[{ kind: 'subagent-settled' }, 'subagent', 'Subtask status updated'],
[{ kind: 'webhook', provider: 'github' }, 'github', 'GitHub event received'],
[{ kind: 'webhook', provider: 'custom' }, 'webhook', 'External event received'],
@@ -48,24 +47,18 @@ describe('Turn trigger notices', () => {
})
it.each([
[en, 'Team message received'],
[zh, '收到团队消息'],
])('presents Team relays from their recorded source while retaining the sender name', (locale, title) => {
const node = trigger({ kind: 'team-relay', form: 'relay', senderSessionId: 'sender', senderName: 'reviewer-2' })
[en, 'Task message received'],
[zh, '收到任务消息'],
])('presents Team relays as Agent messages while retaining the sender name', (locale, title) => {
const node = trigger({ kind: 'agent-message', form: 'relay', senderSessionId: 'sender' })
node.data.content = [{ type: 'text', text: 'Team message from reviewer-2:' }, { type: 'text', text: 'Ready.' }]
expect(turnTriggerDetails(node.data)).toEqual({ title: 'message.trigger.team', icon: 'team' })
expect(turnTriggerDetails(node.data)).toEqual({ title: 'message.trigger.agent', icon: 'agent' })
const view = render(<TurnTriggerNodeView node={node} t={makeTranslate(locale)} />)
expect(view.getByRole('button').textContent).toContain(title)
fireEvent.click(view.getByRole('button'))
expect(view.container.querySelector('[data-context-text]')?.textContent).toContain('Team message from reviewer-2:')
})
it('does not classify Agent messages by Team-looking content', () => {
const node = trigger({ kind: 'agent-message', form: 'relay', senderSessionId: 'sender' })
node.data.content = [{ type: 'text', text: 'Team message from reviewer-2:' }]
expect(turnTriggerDetails(node.data)).toEqual({ title: 'message.trigger.agent', icon: 'agent' })
})
it.each([
{ locale: en, title: 'Automation task' },
{ locale: zh, title: '自动化任务' },
@@ -51,8 +51,8 @@
en: 2389048c1a494ed3
zh: 7e72acd6b83ea248
/deepseek-ai-dsh-experimental-agent-team/understand-the-implementation/direct-messages-and-historical-compatibility:
en: 634f799f560f58c3
zh: beec22b4100ac53c
en: 67cc4e92adda8baa
zh: 5abdb2415e414b9d
/deepseek-ai-dsh-experimental-agent-team/understand-the-implementation/shared-task-board:
en: 2dc37ba97a8a7178
zh: 96bd24033030e19d
+1 -1
View File
@@ -128,7 +128,7 @@ Every ordinary runtime root is the implicit Lead of a Team whose `TeamId` equals
### Direct messages and historical compatibility
`sendMessage()` checks exact caller membership, rejects self-messaging, and bounds the complete sender-framed UTF-8 content. It returns the existing inbox identity and emits Team activity only after acceptance. The target stores Team-owned `team-relay` source with the actual `senderSessionId` and `senderName`; the first content block is `Team message from <name>:`. No new `team/message/queued` or `team/message/delivered` records are written for these sends. Team adds no per-target send ordering; delivery order belongs to the target inbox. The client selects the Team title and icon from `source.kind`; the message body retains the sender name.
`sendMessage()` checks exact caller membership, rejects self-messaging, and bounds the complete sender-framed UTF-8 content. It returns the existing inbox identity and emits Team activity only after acceptance. The target stores `agent-message` source with the actual `senderSessionId`; the first content block is `Team message from <name>:`. No new `team/message/queued` or `team/message/delivered` records are written for these sends. Team adds no per-target send ordering; delivery order belongs to the target inbox. The client presents these messages with the ordinary Agent title and icon; the message body retains the sender name.
Lead delivery calls `Agent.steer()` directly. Teammate delivery uses the continuation owner's host-only Steer path, which preserves the Team sender source while authorizing the Lead-to-child edge and cold-resuming inactive targets. Sibling messages never impersonate the Lead through the public adjacent-Agent messaging operation.
@@ -128,7 +128,7 @@ Lead 可以停止 teammate 的当前轮次,而不会删除其排队的消息
### 直接消息与历史兼容
`sendMessage()` 检查确切调用方的成员身份,拒绝自发消息,并限制包含发送者前缀的完整 UTF-8 内容大小。它返回现有 inbox 身份,并仅在接收后发出 Team activity。目标保存 Team 所属的 `team-relay` source,包含真实 `senderSessionId` 和 `senderName`;首个内容块为 `Team message from <name>:`。这些发送不写入新的 `team/message/queued` 或 `team/message/delivered` 记录。Team 不额外保证同目标发送顺序;投递顺序由目标 inbox 管理。客户端依据 `source.kind` 选择 Team 标题和图标;正文保留发送者名称。
`sendMessage()` 检查确切调用方的成员身份,拒绝自发消息,并限制包含发送者前缀的完整 UTF-8 内容大小。它返回现有 inbox 身份,并仅在接收后发出 Team activity。目标保存带真实 `senderSessionId` 的 `agent-message` source;首个内容块为 `Team message from <name>:`。这些发送不写入新的 `team/message/queued` 或 `team/message/delivered` 记录。Team 不额外保证同目标发送顺序;投递顺序由目标 inbox 管理。客户端使用普通 Agent 消息标题和图标展示这些消息;正文保留发送者名称。
投递给 Lead 时直接调用 `Agent.steer()`。投递给 teammate 时使用 continuation owner 的 host-only Steer 路径;该路径会保留 Team 发送者 source,同时授权 Lead-to-child edge 并冷恢复 inactive target。sibling 消息绝不会通过公开的相邻 Agent 消息操作伪装成 Lead。
@@ -234,12 +234,7 @@ export class TeamService extends Service {
if (Buffer.byteLength(JSON.stringify(content), 'utf8') > this.config.maxMessageBytes) {
throw new TeamError(`team message exceeds ${this.config.maxMessageBytes} bytes`, 'TEAM_MESSAGE_TOO_LARGE')
}
const source = {
kind: 'team-relay' as const,
form: 'relay' as const,
senderSessionId: caller.id,
senderName: membership.name,
}
const source = { kind: 'agent-message' as const, form: 'relay' as const, senderSessionId: caller.id }
let messageId
if (target.id === root.id) {
const input = createUserMessage({ content, source })
@@ -145,15 +145,6 @@ export interface TeamMessageSource {
declare module '@deepseek-ai/dsh-llm' {
interface MessageSourceMap {
/** Sender attribution survives reading without the Team producer.
* @persistenceAttribution
*/
'team-relay': {
readonly kind: 'team-relay'
readonly form: 'relay'
readonly senderSessionId: SessionId
readonly senderName: string
}
'team-message': TeamMessageSource
}
}
@@ -106,13 +106,12 @@ async function stack(
await ctx.plugin(AgentLoop, { agents: [] })
await ctx.plugin(SubagentService)
await ctx.plugin(SubagentSpawn, { providerName: 'spawn' })
const teamFiber = await ctx.plugin(TeamService)
await ctx.plugin(TeamService)
const adapter = new MockAdapter(script)
ctx.llm.registerAdapter(['mock'], adapter)
return {
ctx,
adapter,
teamFiber,
dispose: async () => { await disposeContext(ctx) },
}
}
@@ -160,7 +159,7 @@ async function persistedChild(
for (const backend of backends) {
describe(`${backend.name} Agent Teams recovery`, () => {
it('restores a directly accepted target inbox and sender attribution without the Team producer', async () => {
it('restores a directly accepted target inbox from its flushed crash prefix without Team intent', async () => {
const liveRoot = mkdtempSync(join(tmpdir(), 'dsh-team-live-'))
const crashRoot = mkdtempSync(join(tmpdir(), 'dsh-team-crash-'))
roots.push(liveRoot, crashRoot)
@@ -181,14 +180,13 @@ for (const backend of backends) {
expect(lead.session.snapshotEvents().some(event => event.type.startsWith('team/message/'))).toBe(false)
await first.dispose()
const second = await stack(backend, crashRoot, [textResponse('recovered')])
await second.teamFiber.dispose()
const writer = await second.ctx.sessionPersistence.create(prefix.header)
try { await writer.append(prefix.events) } finally { await writer.close() }
const resumed = await second.ctx.agents.resume({
resumeSessionId: child.id, agentOptions: { provider: 'mock', model: 'mock' },
})
expect(resumed.agent.inbox.nextStep.find(message => message.id === receipt.messageId)).toMatchObject({
source: { kind: 'team-relay', form: 'relay', senderSessionId: lead.id, senderName: 'lead' },
source: { kind: 'agent-message', form: 'relay', senderSessionId: lead.id },
content: [{ type: 'text', text: 'Team message from lead:' }, { type: 'text', text: 'accepted before crash' }],
})
await resumed.dispose()
@@ -890,7 +890,7 @@ describe('Team direct messages and waiting', () => {
expect(Object.keys(result)).toEqual(['messageId'])
expect(result.messageId).toBeTypeOf('string')
expect(agent.inbox.nextStep.find(message => message.id === result.messageId)).toMatchObject({
source: { kind: 'team-relay', form: 'relay', senderSessionId: alpha.id, senderName: 'alpha' },
source: { kind: 'agent-message', form: 'relay', senderSessionId: alpha.id },
content: [{ type: 'text', text: 'Team message from alpha:' }, { type: 'text', text: 'update' }],
})
}
@@ -913,7 +913,7 @@ describe('Team direct messages and waiting', () => {
for (const [id, receipt] of [[lead.id, leadResult], [beta.member.id, peerResult]] as const) {
const messages = (await storedEvents(ctx, id)).flatMap(event => event.type === 'user/message' ? [event.data] : [])
expect(messages.find(message => message.id === receipt.messageId)).toMatchObject({
source: { kind: 'team-relay', senderSessionId: alpha.id, senderName: 'alpha' },
source: { kind: 'agent-message', senderSessionId: alpha.id },
})
}
})
@@ -15,7 +15,7 @@
{"type":"session/title","data":{"title":"<system-reminder> You are teammate \"revi","messageSeqs":[9],"source":{"kind":"fallback"}}}
{"type":"assistant/message","data":{"turn":1,"step":1,"message":{"role":"assistant","content":[{"type":"tool-call","id":"direct-1","name":"bash","arguments":"{\"command\":\"touch team-ready; while :; do sleep 1; done\",\"description\":\"Signal readiness and wait for interruption\",\"timeoutMs\":60000}"}],"source":{"kind":"model","provider":"deepseek-official","model":"deepseek-v4-flash"},"id":"{{message:16}}"},"usage":{"inputTokens":3,"outputTokens":3},"stream":[{"type":"chunk","time":1790429365968,"chunk":{"type":"block-start","index":0,"blockType":"tool-call"}},{"type":"tool-call-chunks","time0":1790429365968,"index":0,"dt":[],"id":"direct-1","name":"bash","args":["{\"command\":\"touch team-ready; while :; do sleep 1; done\",\"description\":\"Signal readiness and wait for interruption\",\"timeoutMs\":60000}"]},{"type":"chunk","time":1790429365968,"chunk":{"type":"block-end","index":0,"block":{"type":"tool-call","id":"direct-1","name":"bash","arguments":"{\"command\":\"touch team-ready; while :; do sleep 1; done\",\"description\":\"Signal readiness and wait for interruption\",\"timeoutMs\":60000}"}}},{"type":"chunk","time":1790429365968,"chunk":{"type":"usage","usage":{"inputTokens":3,"outputTokens":3}}},{"type":"chunk","time":1790429365969,"chunk":{"type":"finish","reason":{"kind":"tool-calls"}}}]},"surfaceOp":"append"}
{"type":"tool/call","data":{"turn":1,"step":1,"callId":"direct-1","name":"bash","arguments":"{\"command\":\"touch team-ready; while :; do sleep 1; done\",\"description\":\"Signal readiness and wait for interruption\",\"timeoutMs\":60000}"}}
{"type":"agent/inbox/spliced","data":{"target":"next-step","start":0,"inserted":[{"content":[{"type":"text","text":"Team message from lead:"},{"type":"text","text":"Review the direct inbox delivery."}],"source":{"kind":"team-relay","form":"relay","senderSessionId":"{{session:1}}","senderName":"lead"},"role":"user","id":"{{message:17}}"}]}}
{"type":"agent/inbox/spliced","data":{"target":"next-step","start":0,"inserted":[{"content":[{"type":"text","text":"Team message from lead:"},{"type":"text","text":"Review the direct inbox delivery."}],"source":{"kind":"agent-message","form":"relay","senderSessionId":"{{session:1}}"},"role":"user","id":"{{message:17}}"}]}}
{"type":"tool/result","data":{"turn":1,"step":1,"message":{"role":"tool","source":{"kind":"tool","callId":"direct-1"},"toolCallId":"direct-1","content":[{"type":"text","text":"Error: tool call aborted"}],"isError":true,"id":"{{message:18}}"},"error":{"name":"AbortError","code":"ABORTED"}},"sourceEventSeqs":[15],"surfaceOp":"append"}
{"type":"step/end","data":{"turn":1,"step":1}}
{"type":"turn/end","data":{"turn":1,"reason":{"kind":"aborted","reason":{"kind":"parent"}}}}