@deepseek-ai/dsh-goal 0.1.5-rc.2 → 0.1.6-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/goal/goal/README.md
5
- README.md: 7810fbb5f78aab73b2959538f1dc8fe64b2b5d62
6
- README.zh.md: 0852254f4bb6a7e239f3dd8b0134e0170567e1a7
5
+ README.md: 8c282dd94ce0548eed426e33f08e509a0cafd800
6
+ README.zh.md: a5b3f7d71365fd01fd99556024cbf948af81c8a8
package/README.md CHANGED
@@ -96,7 +96,7 @@ This section explains how the service realizes the behavior above; the observabl
96
96
 
97
97
  - **Event-sourced state.** Every mutation appends a durable `goal/change` event (version 1) carrying the complete post-mutation snapshot; `clear` writes a revisioned tombstone. The session log is the only durable authority.
98
98
  - **Compare-and-set mutations.** `ctx.goals` accepts only the exact live `Agent` registered under its id. `get()` returns a detached `GoalView`; mutations take a `GoalRef { id, revision }` and reject stale refs. Creation resolves the deployment default internally before committing.
99
- - **Activation is process-local.** `armed` and `disarmed` live in a per-session cache and are never persisted. A fresh cache and every `agent/session-start` edge disarm continuation even when replay finds an active durable phase; `disarm()` removes authority without writing a revision or emitting a mutation.
99
+ - **Activation is process-local.** `armed` and `disarmed` live in a per-session cache and are never persisted. A fresh cache and every `agent/created` edge disarm continuation even when replay finds an active durable phase; `disarm()` removes authority without writing a revision or emitting a mutation.
100
100
  - **Strict replay.** The fold derives lifecycle mutations only from `goal/change` and rejects malformed shapes, discontinuous revisions, illegal phase transitions, non-monotonic per-goal timestamps, and non-sequential admitted rounds. Positive rounds advance only on admitted goal-sourced `user/message` events, and mutation timestamps clamp against the preceding update when wall time moves backward.
101
101
  - **Projection unit.** The package requires the projection registry and registers a strict `goal` unit. Its host state retains replay validation data and the first failure, while its client view exposes the latest valid whole goal or `null`; `GoalService` rejects access after a retained replay failure.
102
102
 
package/README.zh.md CHANGED
@@ -9,7 +9,7 @@ kind: "package-reference"
9
9
 
10
10
  ## 概述
11
11
 
12
- `dsh-goal` 让一个长期完成目标在多轮、会话 resume(恢复)、fork 与进程重启后持续存在。用户与 agent 可以 create、edit、pause、resume、complete、block 或 clear 该目标;比较并设置的更新会拒绝陈旧视图。可配置的 Round 上限(默认 256)约束自动续行,被阻塞的 goal 会保留稳定的策略代码和面向人的说明。本包存储 goal 状态但不调度工作,续行权限是进程本地的而非持久状态。单个目标需要横跨多轮时选择本包;常规单轮工作或并行目标不要使用。
12
+ `dsh-goal` 让一个长期完成目标在多轮、会话恢复、fork 与进程重启后持续存在。用户与 agent(智能体)可以 create、edit、pause、resume、complete、block 或 clear 该目标;比较并设置的更新会拒绝陈旧视图。可配置的 Round 上限(默认 256)约束自动续行,被阻塞的 goal 会保留稳定的策略代码和面向人的说明。本包存储 goal 状态但不调度工作,续行权限是进程本地的而非持久状态。单个目标需要横跨多轮时选择本包;常规单轮工作或并行目标不要使用。
13
13
 
14
14
  ## 目录
15
15
 
@@ -49,7 +49,7 @@ goal 适合一个需要跨自动 Goal Round 持续的长期完成目标——例
49
49
 
50
50
  ### 会话投影
51
51
 
52
- `GoalService` 要求组合提供 `ctx.sessionProjections`([`@deepseek-ai/dsh-session-projection`](../../session/session-projection/README.zh.md)),并在启动时注册 `goal` 投影单元;未组合投影注册表的组合无法激活 `ctx.goals`。该单元版本为 6,其宿主状态保留最新的有效当前 goal、所有曾使用的 goal id,以及第一次严格回放失败。客户端 view 提供当前 goal;首次 create 前与 clear tombstone 后为 `null`。该 key 同时合并到 `SessionProjectionStateMap` 与 `SessionProjectionMap`;载体通过历史尾页和 `session/projection` 推送帧提供客户端值。
52
+ `GoalService` 要求组合提供 `ctx.sessionProjections`([`@deepseek-ai/dsh-session-projection`](../../session/session-projection/README.zh.md)),并在启动时注册 `goal` 投影单元;未组合投影注册表的组合无法激活 `ctx.goals`。该单元版本为 6,其宿主状态保留最新的有效当前 goal、所有曾使用的 goal id,以及第一次严格回放失败。客户端视图提供当前 goal;首次 create 前与 clear tombstone 后为 `null`。该键同时合并到 `SessionProjectionStateMap` 与 `SessionProjectionMap`;载体通过历史尾页和 `session/projection` 推送帧提供客户端值。
53
53
 
54
54
  ### 驱动生命周期
55
55
 
@@ -60,7 +60,7 @@ goal 经历四种持久 phase——`active`、`paused`、`blocked`、`complete`
60
60
  | `create` | 以目标和 Round 上限启动一个 active goal |
61
61
  | `edit` | 修改目标和/或 Round 上限,不改变 phase |
62
62
  | `pause` | 停止自动续行并保留状态 |
63
- | `resume` | 重新开始续行;也用于会话 resume 或 fork 后重新启用 active goal |
63
+ | `resume` | 重新开始续行;也用于会话恢复或 fork 后重新启用 active goal |
64
64
  | `complete` | 标记 goal 已完成并停止续行 |
65
65
  | `block` | 记录稳定的 blocker 代码与说明 |
66
66
  | `clear` | 移除当前 goal;其历史保留在会话日志中 |
@@ -69,7 +69,7 @@ pause、complete、block 和 clear 都会停用续行。block 是唯一保留策
69
69
 
70
70
  ### 什么会保留,什么不会
71
71
 
72
- 每项被接受的变更都会持久记录到会话日志——goal 状态的唯一存储——因此 goal 状态绝不依赖临时消息投递。会话 resume 或 fork 后,goal、其 phase、其 revision 与已准入 Round 数量都仍然存在。自动续行是例外:任何会话开始边界之后,`active` 的 goal 都会被停用续行——在有人显式 resume 之前,agent 不会自行继续。
72
+ 每项被接受的变更都会持久记录到会话日志——goal 状态的唯一存储——因此 goal 状态绝不依赖临时消息投递。会话恢复或 fork 后,goal、其 phase、其 revision 与已准入 Round 数量都仍然存在。自动续行是例外:任何会话开始边界之后,`active` 的 goal 都会被停用续行——在有人显式 resume 之前,agent 不会自行继续。
73
73
 
74
74
  ### 观察 goal
75
75
 
@@ -96,20 +96,20 @@ view.activation // 'armed' | 'disarmed' — not persisted
96
96
 
97
97
  - **事件溯源状态。** 每次变更都追加持久的 `goal/change` 事件(版本 1),携带变更后的完整快照;clear 写入带 revision 的 tombstone。会话日志是唯一的持久权威。
98
98
  - **比较并设置的变更。** `ctx.goals` 只接受以对应 id 注册的完全相同的活跃 `Agent` 实例。`get()` 返回脱离状态的 `GoalView`;变更携带 `GoalRef { id, revision }` 并拒绝陈旧引用。创建在提交前于内部解析部署默认值。
99
- - **续行启用状态是进程本地的。** `armed` 与 `disarmed` 保存在每会话缓存中,绝不持久化。新缓存与每次 `agent/session-start` 边界都会停用续行,即使回放发现持久 phase 为 active;`disarm()` 移除续行权限,不写入 revision 也不发出变更事件。
99
+ - **续行启用状态是进程本地的。** `armed` 与 `disarmed` 保存在每会话缓存中,绝不持久化。新缓存与每次 `agent/created` 边界都会停用续行,即使回放发现持久 phase 为 active;`disarm()` 移除续行权限,不写入 revision 也不发出变更事件。
100
100
  - **严格回放。** 折叠只从 `goal/change` 派生生命周期变更,并拒绝形状错误、不连续 revision、非法 phase 转换、每目标时间戳非单调,以及不连续的已准入 Round。只有已准入的来源为 goal 的 `user/message` 事件会推进正数 Round;挂钟时间倒退时,变更时间戳会限制在不早于上一次更新的值。
101
- - **投影单元。** 本包要求提供投影注册表,并注册一个严格的 `goal` 单元。其宿主状态保留回放校验数据与第一次失败,客户端 view 提供最新有效的完整 goal 或 `null`;保留回放失败后,`GoalService` 会拒绝访问。
101
+ - **投影单元。** 本包要求提供投影注册表,并注册一个严格的 `goal` 单元。其宿主状态保留回放校验数据与第一次失败,客户端视图提供最新有效的完整 goal 或 `null`;保留回放失败后,`GoalService` 会拒绝访问。
102
102
 
103
103
  ### 源码地图
104
104
 
105
105
  | 文件 | 职责 |
106
106
  |---|---|
107
- | [`src/index.ts`](src/index.ts) | 插件入口:`GoalService`、config schema、变更、续行启用缓存、投影单元 |
107
+ | [`src/index.ts`](src/index.ts) | 插件入口:`GoalService`、配置 schema、变更、续行启用缓存、投影单元 |
108
108
  | [`src/domain.ts`](src/domain.ts) | 持久变更载荷、`goal/changed` 事件、goal 消息来源归属 |
109
109
  | [`src/types.ts`](src/types.ts) | 纯客户端安全类型:`GoalView`、`GoalSnapshot`、`GoalActivationChanged`、投影键声明 |
110
110
  | [`src/fold.ts`](src/fold.ts) | 持久 goal 变更的严格回放折叠与解码器 |
111
111
  | [`src/runtime.ts`](src/runtime.ts) | `GoalId` 品牌、`GoalError` 代码、变更版本常量 |
112
- | [`src/invariant.ts`](src/invariant.ts) | 不变式伴生:对每个已挂接会话的独立增量折叠 |
112
+ | [`src/invariant.ts`](src/invariant.ts) | 不变式配套模块:对每个已挂接会话的独立增量折叠 |
113
113
 
114
114
  ### 事件与归属
115
115
 
package/lib/index.js CHANGED
@@ -591,7 +591,7 @@ let GoalService = (() => {
591
591
  constructor(ctx, config = {}) {
592
592
  super(ctx, "goals");
593
593
  this.resolved = { defaultMaxGoalRounds: resolveMaxGoalRounds(config.defaultMaxGoalRounds ?? 256) };
594
- ctx.on("agent/session-start", ({ agent }) => {
594
+ ctx.on("agent/created", ({ agent }) => {
595
595
  this.setActivation(agent.session, "disarmed");
596
596
  });
597
597
  ctx.sessionProjections.register(goalProjectionDefinition);
@@ -1,21 +1,27 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
- const _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema = z.intersection(z.string(), z.unknown())
5
- const _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema = z.object({
4
+ let _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema$value
5
+ const _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_clear_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
6
+ let _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema$value
7
+ const _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_clear_parameter_1$schema$value ??= z.object({
6
8
  'id': z.intersection(z.string(), z.unknown()).readonly(),
7
9
  'revision': z.number().readonly(),
8
- })
9
- const _deepseek_ai_dsh_goal_goals_clear_result$schema = z.object({
10
+ }))
11
+ let _deepseek_ai_dsh_goal_goals_clear_result$schema$value
12
+ const _deepseek_ai_dsh_goal_goals_clear_result$schema = () => (_deepseek_ai_dsh_goal_goals_clear_result$schema$value ??= z.object({
10
13
  'id': z.intersection(z.string(), z.unknown()).readonly(),
11
14
  'revision': z.number().readonly(),
12
- })
13
- const _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema = z.intersection(z.string(), z.unknown())
14
- const _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema = z.object({
15
+ }))
16
+ let _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema$value
17
+ const _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_complete_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
18
+ let _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema$value
19
+ const _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_complete_parameter_1$schema$value ??= z.object({
15
20
  'id': z.intersection(z.string(), z.unknown()).readonly(),
16
21
  'revision': z.number().readonly(),
17
- })
18
- const _deepseek_ai_dsh_goal_goals_complete_result$schema = z.object({
22
+ }))
23
+ let _deepseek_ai_dsh_goal_goals_complete_result$schema$value
24
+ const _deepseek_ai_dsh_goal_goals_complete_result$schema = () => (_deepseek_ai_dsh_goal_goals_complete_result$schema$value ??= z.object({
19
25
  'roundsStarted': z.number().readonly(),
20
26
  'createdAt': z.number().readonly(),
21
27
  'updatedAt': z.number().readonly(),
@@ -29,28 +35,35 @@ const _deepseek_ai_dsh_goal_goals_complete_result$schema = z.object({
29
35
  'maxGoalRounds': z.number().readonly(),
30
36
  'id': z.intersection(z.string(), z.unknown()).readonly(),
31
37
  'revision': z.number().readonly(),
32
- })
33
- const _deepseek_ai_dsh_goal_goals_create_parameter_0$schema = z.intersection(z.string(), z.unknown())
34
- const _deepseek_ai_dsh_goal_goals_create_parameter_1$schema = z.object({
38
+ }))
39
+ let _deepseek_ai_dsh_goal_goals_create_parameter_0$schema$value
40
+ const _deepseek_ai_dsh_goal_goals_create_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_create_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
41
+ let _deepseek_ai_dsh_goal_goals_create_parameter_1$schema$value
42
+ const _deepseek_ai_dsh_goal_goals_create_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_create_parameter_1$schema$value ??= z.object({
35
43
  'objective': z.string().readonly(),
36
44
  'maxGoalRounds': z.number().readonly().optional(),
37
- })
38
- const _deepseek_ai_dsh_goal_goals_create_result$schema = z.object({
45
+ }))
46
+ let _deepseek_ai_dsh_goal_goals_create_result$schema$value
47
+ const _deepseek_ai_dsh_goal_goals_create_result$schema = () => (_deepseek_ai_dsh_goal_goals_create_result$schema$value ??= z.object({
39
48
  'ref': z.object({
40
49
  'id': z.intersection(z.string(), z.unknown()).readonly(),
41
50
  'revision': z.number().readonly(),
42
51
  }).readonly(),
43
- })
44
- const _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema = z.intersection(z.string(), z.unknown())
45
- const _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema = z.object({
52
+ }))
53
+ let _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema$value
54
+ const _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_edit_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
55
+ let _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema$value
56
+ const _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_edit_parameter_1$schema$value ??= z.object({
46
57
  'id': z.intersection(z.string(), z.unknown()).readonly(),
47
58
  'revision': z.number().readonly(),
48
- })
49
- const _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema = z.object({
59
+ }))
60
+ let _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema$value
61
+ const _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema = () => (_deepseek_ai_dsh_goal_goals_edit_parameter_2$schema$value ??= z.object({
50
62
  'objective': z.string().readonly().optional(),
51
63
  'maxGoalRounds': z.number().readonly().optional(),
52
- })
53
- const _deepseek_ai_dsh_goal_goals_edit_result$schema = z.object({
64
+ }))
65
+ let _deepseek_ai_dsh_goal_goals_edit_result$schema$value
66
+ const _deepseek_ai_dsh_goal_goals_edit_result$schema = () => (_deepseek_ai_dsh_goal_goals_edit_result$schema$value ??= z.object({
54
67
  'roundsStarted': z.number().readonly(),
55
68
  'createdAt': z.number().readonly(),
56
69
  'updatedAt': z.number().readonly(),
@@ -64,9 +77,11 @@ const _deepseek_ai_dsh_goal_goals_edit_result$schema = z.object({
64
77
  'maxGoalRounds': z.number().readonly(),
65
78
  'id': z.intersection(z.string(), z.unknown()).readonly(),
66
79
  'revision': z.number().readonly(),
67
- })
68
- const _deepseek_ai_dsh_goal_goals_get_parameter_0$schema = z.intersection(z.string(), z.unknown())
69
- const _deepseek_ai_dsh_goal_goals_get_result$schema = z.union([z.undefined(), z.object({
80
+ }))
81
+ let _deepseek_ai_dsh_goal_goals_get_parameter_0$schema$value
82
+ const _deepseek_ai_dsh_goal_goals_get_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_get_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
83
+ let _deepseek_ai_dsh_goal_goals_get_result$schema$value
84
+ const _deepseek_ai_dsh_goal_goals_get_result$schema = () => (_deepseek_ai_dsh_goal_goals_get_result$schema$value ??= z.union([z.undefined(), z.object({
70
85
  'roundsStarted': z.number().readonly(),
71
86
  'createdAt': z.number().readonly(),
72
87
  'updatedAt': z.number().readonly(),
@@ -80,13 +95,16 @@ const _deepseek_ai_dsh_goal_goals_get_result$schema = z.union([z.undefined(), z.
80
95
  'maxGoalRounds': z.number().readonly(),
81
96
  'id': z.intersection(z.string(), z.unknown()).readonly(),
82
97
  'revision': z.number().readonly(),
83
- })])
84
- const _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema = z.intersection(z.string(), z.unknown())
85
- const _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema = z.object({
98
+ })]))
99
+ let _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema$value
100
+ const _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_pause_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
101
+ let _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema$value
102
+ const _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_pause_parameter_1$schema$value ??= z.object({
86
103
  'id': z.intersection(z.string(), z.unknown()).readonly(),
87
104
  'revision': z.number().readonly(),
88
- })
89
- const _deepseek_ai_dsh_goal_goals_pause_result$schema = z.object({
105
+ }))
106
+ let _deepseek_ai_dsh_goal_goals_pause_result$schema$value
107
+ const _deepseek_ai_dsh_goal_goals_pause_result$schema = () => (_deepseek_ai_dsh_goal_goals_pause_result$schema$value ??= z.object({
90
108
  'roundsStarted': z.number().readonly(),
91
109
  'createdAt': z.number().readonly(),
92
110
  'updatedAt': z.number().readonly(),
@@ -100,13 +118,16 @@ const _deepseek_ai_dsh_goal_goals_pause_result$schema = z.object({
100
118
  'maxGoalRounds': z.number().readonly(),
101
119
  'id': z.intersection(z.string(), z.unknown()).readonly(),
102
120
  'revision': z.number().readonly(),
103
- })
104
- const _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema = z.intersection(z.string(), z.unknown())
105
- const _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema = z.object({
121
+ }))
122
+ let _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema$value
123
+ const _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_resume_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
124
+ let _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema$value
125
+ const _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_resume_parameter_1$schema$value ??= z.object({
106
126
  'id': z.intersection(z.string(), z.unknown()).readonly(),
107
127
  'revision': z.number().readonly(),
108
- })
109
- const _deepseek_ai_dsh_goal_goals_resume_result$schema = z.object({
128
+ }))
129
+ let _deepseek_ai_dsh_goal_goals_resume_result$schema$value
130
+ const _deepseek_ai_dsh_goal_goals_resume_result$schema = () => (_deepseek_ai_dsh_goal_goals_resume_result$schema$value ??= z.object({
110
131
  'roundsStarted': z.number().readonly(),
111
132
  'createdAt': z.number().readonly(),
112
133
  'updatedAt': z.number().readonly(),
@@ -120,7 +141,7 @@ const _deepseek_ai_dsh_goal_goals_resume_result$schema = z.object({
120
141
  'maxGoalRounds': z.number().readonly(),
121
142
  'id': z.intersection(z.string(), z.unknown()).readonly(),
122
143
  'revision': z.number().readonly(),
123
- })
144
+ }))
124
145
 
125
146
  export const TYPERT = {
126
147
  package: '@deepseek-ai/dsh-goal',
@@ -147,7 +168,7 @@ export const TYPERT = {
147
168
  codec: {
148
169
  mode: 'strict',
149
170
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
150
- schema: _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema,
171
+ create: _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema,
151
172
  },
152
173
  },
153
174
  {
@@ -157,14 +178,14 @@ export const TYPERT = {
157
178
  codec: {
158
179
  mode: 'strict',
159
180
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
160
- schema: _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema,
181
+ create: _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema,
161
182
  },
162
183
  },
163
184
  ],
164
185
  result: {
165
186
  mode: 'strict',
166
187
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
167
- schema: _deepseek_ai_dsh_goal_goals_clear_result$schema,
188
+ create: _deepseek_ai_dsh_goal_goals_clear_result$schema,
168
189
  },
169
190
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":433,"column":3},
170
191
  },
@@ -187,7 +208,7 @@ export const TYPERT = {
187
208
  codec: {
188
209
  mode: 'strict',
189
210
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
190
- schema: _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema,
211
+ create: _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema,
191
212
  },
192
213
  },
193
214
  {
@@ -197,14 +218,14 @@ export const TYPERT = {
197
218
  codec: {
198
219
  mode: 'strict',
199
220
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
200
- schema: _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema,
221
+ create: _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema,
201
222
  },
202
223
  },
203
224
  ],
204
225
  result: {
205
226
  mode: 'strict',
206
227
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
207
- schema: _deepseek_ai_dsh_goal_goals_complete_result$schema,
228
+ create: _deepseek_ai_dsh_goal_goals_complete_result$schema,
208
229
  },
209
230
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":391,"column":3},
210
231
  },
@@ -228,7 +249,7 @@ export const TYPERT = {
228
249
  codec: {
229
250
  mode: 'strict',
230
251
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
231
- schema: _deepseek_ai_dsh_goal_goals_create_parameter_0$schema,
252
+ create: _deepseek_ai_dsh_goal_goals_create_parameter_0$schema,
232
253
  },
233
254
  },
234
255
  {
@@ -238,14 +259,14 @@ export const TYPERT = {
238
259
  codec: {
239
260
  mode: 'strict',
240
261
  typeSymbol: '@deepseek-ai/dsh-goal/client#CreateGoalRequest',
241
- schema: _deepseek_ai_dsh_goal_goals_create_parameter_1$schema,
262
+ create: _deepseek_ai_dsh_goal_goals_create_parameter_1$schema,
242
263
  },
243
264
  },
244
265
  ],
245
266
  result: {
246
267
  mode: 'strict',
247
268
  typeSymbol: '@deepseek-ai/dsh-goal/client#CreateGoalResult',
248
- schema: _deepseek_ai_dsh_goal_goals_create_result$schema,
269
+ create: _deepseek_ai_dsh_goal_goals_create_result$schema,
249
270
  },
250
271
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":647,"column":3},
251
272
  },
@@ -268,7 +289,7 @@ export const TYPERT = {
268
289
  codec: {
269
290
  mode: 'strict',
270
291
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
271
- schema: _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema,
292
+ create: _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema,
272
293
  },
273
294
  },
274
295
  {
@@ -278,7 +299,7 @@ export const TYPERT = {
278
299
  codec: {
279
300
  mode: 'strict',
280
301
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
281
- schema: _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema,
302
+ create: _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema,
282
303
  },
283
304
  },
284
305
  {
@@ -288,14 +309,14 @@ export const TYPERT = {
288
309
  codec: {
289
310
  mode: 'strict',
290
311
  typeSymbol: '@deepseek-ai/dsh-goal/client#EditGoalRequest',
291
- schema: _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema,
312
+ create: _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema,
292
313
  },
293
314
  },
294
315
  ],
295
316
  result: {
296
317
  mode: 'strict',
297
318
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
298
- schema: _deepseek_ai_dsh_goal_goals_edit_result$schema,
319
+ create: _deepseek_ai_dsh_goal_goals_edit_result$schema,
299
320
  },
300
321
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":329,"column":3},
301
322
  },
@@ -318,14 +339,14 @@ export const TYPERT = {
318
339
  codec: {
319
340
  mode: 'strict',
320
341
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
321
- schema: _deepseek_ai_dsh_goal_goals_get_parameter_0$schema,
342
+ create: _deepseek_ai_dsh_goal_goals_get_parameter_0$schema,
322
343
  },
323
344
  },
324
345
  ],
325
346
  result: {
326
347
  mode: 'strict',
327
348
  typeSymbol: '@deepseek-ai/dsh-goal#goals/get:result',
328
- schema: _deepseek_ai_dsh_goal_goals_get_result$schema,
349
+ create: _deepseek_ai_dsh_goal_goals_get_result$schema,
329
350
  },
330
351
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":277,"column":3},
331
352
  },
@@ -348,7 +369,7 @@ export const TYPERT = {
348
369
  codec: {
349
370
  mode: 'strict',
350
371
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
351
- schema: _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema,
372
+ create: _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema,
352
373
  },
353
374
  },
354
375
  {
@@ -358,14 +379,14 @@ export const TYPERT = {
358
379
  codec: {
359
380
  mode: 'strict',
360
381
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
361
- schema: _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema,
382
+ create: _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema,
362
383
  },
363
384
  },
364
385
  ],
365
386
  result: {
366
387
  mode: 'strict',
367
388
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
368
- schema: _deepseek_ai_dsh_goal_goals_pause_result$schema,
389
+ create: _deepseek_ai_dsh_goal_goals_pause_result$schema,
369
390
  },
370
391
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":352,"column":3},
371
392
  },
@@ -388,7 +409,7 @@ export const TYPERT = {
388
409
  codec: {
389
410
  mode: 'strict',
390
411
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
391
- schema: _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema,
412
+ create: _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema,
392
413
  },
393
414
  },
394
415
  {
@@ -398,14 +419,14 @@ export const TYPERT = {
398
419
  codec: {
399
420
  mode: 'strict',
400
421
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
401
- schema: _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema,
422
+ create: _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema,
402
423
  },
403
424
  },
404
425
  ],
405
426
  result: {
406
427
  mode: 'strict',
407
428
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
408
- schema: _deepseek_ai_dsh_goal_goals_resume_result$schema,
429
+ create: _deepseek_ai_dsh_goal_goals_resume_result$schema,
409
430
  },
410
431
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":364,"column":3},
411
432
  },
@@ -529,8 +550,8 @@ export const TYPERT = {
529
550
  "declaration": "export interface AssistantMessage extends Message {\n readonly role: 'assistant';\n readonly source: ModelMessageSource;\n}"
530
551
  },
531
552
  {
532
- "name": "AssistantProvenance",
533
- "declaration": "export interface AssistantProvenance {\n provider: string;\n model: string;\n replayState?: unknown;\n}"
553
+ "name": "AssistantProviderMetadata",
554
+ "declaration": "export interface AssistantProviderMetadata {\n provider: string;\n model: string;\n replayState?: unknown;\n}"
534
555
  },
535
556
  {
536
557
  "name": "AssistantStreamRecord",
@@ -686,12 +707,16 @@ export const TYPERT = {
686
707
  },
687
708
  {
688
709
  "name": "ImageBlock",
689
- "declaration": "export interface ImageBlock {\n type: 'image';\n attachment: ImageAttachmentRef;\n}"
710
+ "declaration": "export interface ImageBlock {\n type: 'image';\n attachment: ImageAttachmentRef;\n offloaded?: true;\n}"
690
711
  },
691
712
  {
692
713
  "name": "ImageMediaType",
693
714
  "declaration": "export type ImageMediaType = 'image/png' | 'image/jpeg' | 'image/webp' | 'image/gif';"
694
715
  },
716
+ {
717
+ "name": "ImageOffloadTarget",
718
+ "declaration": "export interface ImageOffloadTarget {\n seq: SessionSeq;\n imageIndexes: number[];\n}"
719
+ },
695
720
  {
696
721
  "name": "Inbox",
697
722
  "declaration": "export interface Inbox {\n readonly nextTurn: readonly UserMessage[];\n readonly nextStep: readonly UserMessage[];\n clear(): void;\n append(target: InboxTarget, message: UserMessage): void;\n prepend(target: InboxTarget, message: UserMessage): void;\n replace(messageId: MessageId, newMessage: UserMessage): boolean;\n remove(messageId: MessageId): boolean;\n splice(target: InboxTarget, start: number, deleteCount: number, inserted: UserMessage[]): UserMessage[];\n}"
@@ -714,7 +739,7 @@ export const TYPERT = {
714
739
  },
715
740
  {
716
741
  "name": "LlmFailure",
717
- "declaration": "export interface LlmFailure {\n readonly message: string;\n readonly code: string;\n readonly status?: number;\n readonly providerRetryAfterMs?: number;\n readonly requestId?: ProviderRequestId;\n}"
742
+ "declaration": "export interface LlmFailure {\n readonly message: string;\n readonly code: string;\n readonly status?: number;\n readonly providerRetryAfterMs?: number;\n readonly requestId?: ProviderRequestId;\n readonly offloadImages?: number;\n}"
718
743
  },
719
744
  {
720
745
  "name": "Message",
@@ -754,7 +779,7 @@ export const TYPERT = {
754
779
  },
755
780
  {
756
781
  "name": "ModelMessageSource",
757
- "declaration": "export interface ModelMessageSource extends AssistantProvenance {\n kind: 'model';\n}"
782
+ "declaration": "export interface ModelMessageSource extends AssistantProviderMetadata {\n kind: 'model';\n}"
758
783
  },
759
784
  {
760
785
  "name": "ModelSelection",
@@ -774,7 +799,7 @@ export const TYPERT = {
774
799
  },
775
800
  {
776
801
  "name": "PtcDispatchEventData",
777
- "declaration": "export interface PtcDispatchEventData extends PtcDispatchStartEventData {\n isError: boolean;\n content: ContentBlock[];\n}"
802
+ "declaration": "export interface PtcDispatchEventData extends PtcDispatchStartEventData {\n isError: boolean;\n content: ContentBlock[];\n error?: { name: string; code: string; reason?: string; };\n}"
778
803
  },
779
804
  {
780
805
  "name": "PtcDispatchStartEventData",
@@ -814,7 +839,7 @@ export const TYPERT = {
814
839
  },
815
840
  {
816
841
  "name": "SessionEventMap",
817
- "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
842
+ "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; reason?: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'permission/preset': { preset: string; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
818
843
  },
819
844
  {
820
845
  "name": "SessionEventType",
@@ -846,15 +871,15 @@ export const TYPERT = {
846
871
  },
847
872
  {
848
873
  "name": "SessionSurface",
849
- "declaration": "export interface SessionSurface {\n readonly nodes: readonly SessionSeq[];\n readonly replaceGeneration: number;\n}"
874
+ "declaration": "export interface SessionSurface {\n readonly nodes: readonly SessionSeq[];\n readonly replaceGeneration: number;\n readonly contentGeneration: number;\n}"
850
875
  },
851
876
  {
852
877
  "name": "SessionTitleEventData",
853
878
  "declaration": "export interface SessionTitleEventData {\n readonly title: string;\n readonly messageSeqs: SessionSeq[];\n readonly source: SessionTitleSource;\n}"
854
879
  },
855
880
  {
856
- "name": "SessionTitleModelProvenance",
857
- "declaration": "export interface SessionTitleModelProvenance {\n readonly provider: string;\n readonly model: string;\n}"
881
+ "name": "SessionTitleModelIdentity",
882
+ "declaration": "export interface SessionTitleModelIdentity {\n readonly provider: string;\n readonly model: string;\n}"
858
883
  },
859
884
  {
860
885
  "name": "SessionTitleProviderId",
@@ -862,7 +887,7 @@ export const TYPERT = {
862
887
  },
863
888
  {
864
889
  "name": "SessionTitleSource",
865
- "declaration": "export type SessionTitleSource = { readonly kind: 'fallback'; } | { readonly kind: 'provider'; readonly provider: SessionTitleProviderId; readonly model?: SessionTitleModelProvenance; } | { readonly kind: 'user'; };"
890
+ "declaration": "export type SessionTitleSource = { readonly kind: 'fallback'; } | { readonly kind: 'provider'; readonly provider: SessionTitleProviderId; readonly model?: SessionTitleModelIdentity; } | { readonly kind: 'user'; };"
866
891
  },
867
892
  {
868
893
  "name": "SkillInvocationSource",
@@ -1,21 +1,27 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
- const _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema = z.intersection(z.string(), z.unknown())
5
- const _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema = z.object({
4
+ let _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema$value
5
+ const _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_clear_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
6
+ let _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema$value
7
+ const _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_clear_parameter_1$schema$value ??= z.object({
6
8
  'id': z.intersection(z.string(), z.unknown()).readonly(),
7
9
  'revision': z.number().readonly(),
8
- })
9
- const _deepseek_ai_dsh_goal_goals_clear_result$schema = z.object({
10
+ }))
11
+ let _deepseek_ai_dsh_goal_goals_clear_result$schema$value
12
+ const _deepseek_ai_dsh_goal_goals_clear_result$schema = () => (_deepseek_ai_dsh_goal_goals_clear_result$schema$value ??= z.object({
10
13
  'id': z.intersection(z.string(), z.unknown()).readonly(),
11
14
  'revision': z.number().readonly(),
12
- })
13
- const _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema = z.intersection(z.string(), z.unknown())
14
- const _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema = z.object({
15
+ }))
16
+ let _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema$value
17
+ const _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_complete_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
18
+ let _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema$value
19
+ const _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_complete_parameter_1$schema$value ??= z.object({
15
20
  'id': z.intersection(z.string(), z.unknown()).readonly(),
16
21
  'revision': z.number().readonly(),
17
- })
18
- const _deepseek_ai_dsh_goal_goals_complete_result$schema = z.object({
22
+ }))
23
+ let _deepseek_ai_dsh_goal_goals_complete_result$schema$value
24
+ const _deepseek_ai_dsh_goal_goals_complete_result$schema = () => (_deepseek_ai_dsh_goal_goals_complete_result$schema$value ??= z.object({
19
25
  'roundsStarted': z.number().readonly(),
20
26
  'createdAt': z.number().readonly(),
21
27
  'updatedAt': z.number().readonly(),
@@ -29,28 +35,35 @@ const _deepseek_ai_dsh_goal_goals_complete_result$schema = z.object({
29
35
  'maxGoalRounds': z.number().readonly(),
30
36
  'id': z.intersection(z.string(), z.unknown()).readonly(),
31
37
  'revision': z.number().readonly(),
32
- })
33
- const _deepseek_ai_dsh_goal_goals_create_parameter_0$schema = z.intersection(z.string(), z.unknown())
34
- const _deepseek_ai_dsh_goal_goals_create_parameter_1$schema = z.object({
38
+ }))
39
+ let _deepseek_ai_dsh_goal_goals_create_parameter_0$schema$value
40
+ const _deepseek_ai_dsh_goal_goals_create_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_create_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
41
+ let _deepseek_ai_dsh_goal_goals_create_parameter_1$schema$value
42
+ const _deepseek_ai_dsh_goal_goals_create_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_create_parameter_1$schema$value ??= z.object({
35
43
  'objective': z.string().readonly(),
36
44
  'maxGoalRounds': z.number().readonly().optional(),
37
- })
38
- const _deepseek_ai_dsh_goal_goals_create_result$schema = z.object({
45
+ }))
46
+ let _deepseek_ai_dsh_goal_goals_create_result$schema$value
47
+ const _deepseek_ai_dsh_goal_goals_create_result$schema = () => (_deepseek_ai_dsh_goal_goals_create_result$schema$value ??= z.object({
39
48
  'ref': z.object({
40
49
  'id': z.intersection(z.string(), z.unknown()).readonly(),
41
50
  'revision': z.number().readonly(),
42
51
  }).readonly(),
43
- })
44
- const _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema = z.intersection(z.string(), z.unknown())
45
- const _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema = z.object({
52
+ }))
53
+ let _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema$value
54
+ const _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_edit_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
55
+ let _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema$value
56
+ const _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_edit_parameter_1$schema$value ??= z.object({
46
57
  'id': z.intersection(z.string(), z.unknown()).readonly(),
47
58
  'revision': z.number().readonly(),
48
- })
49
- const _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema = z.object({
59
+ }))
60
+ let _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema$value
61
+ const _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema = () => (_deepseek_ai_dsh_goal_goals_edit_parameter_2$schema$value ??= z.object({
50
62
  'objective': z.string().readonly().optional(),
51
63
  'maxGoalRounds': z.number().readonly().optional(),
52
- })
53
- const _deepseek_ai_dsh_goal_goals_edit_result$schema = z.object({
64
+ }))
65
+ let _deepseek_ai_dsh_goal_goals_edit_result$schema$value
66
+ const _deepseek_ai_dsh_goal_goals_edit_result$schema = () => (_deepseek_ai_dsh_goal_goals_edit_result$schema$value ??= z.object({
54
67
  'roundsStarted': z.number().readonly(),
55
68
  'createdAt': z.number().readonly(),
56
69
  'updatedAt': z.number().readonly(),
@@ -64,9 +77,11 @@ const _deepseek_ai_dsh_goal_goals_edit_result$schema = z.object({
64
77
  'maxGoalRounds': z.number().readonly(),
65
78
  'id': z.intersection(z.string(), z.unknown()).readonly(),
66
79
  'revision': z.number().readonly(),
67
- })
68
- const _deepseek_ai_dsh_goal_goals_get_parameter_0$schema = z.intersection(z.string(), z.unknown())
69
- const _deepseek_ai_dsh_goal_goals_get_result$schema = z.union([z.undefined(), z.object({
80
+ }))
81
+ let _deepseek_ai_dsh_goal_goals_get_parameter_0$schema$value
82
+ const _deepseek_ai_dsh_goal_goals_get_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_get_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
83
+ let _deepseek_ai_dsh_goal_goals_get_result$schema$value
84
+ const _deepseek_ai_dsh_goal_goals_get_result$schema = () => (_deepseek_ai_dsh_goal_goals_get_result$schema$value ??= z.union([z.undefined(), z.object({
70
85
  'roundsStarted': z.number().readonly(),
71
86
  'createdAt': z.number().readonly(),
72
87
  'updatedAt': z.number().readonly(),
@@ -80,13 +95,16 @@ const _deepseek_ai_dsh_goal_goals_get_result$schema = z.union([z.undefined(), z.
80
95
  'maxGoalRounds': z.number().readonly(),
81
96
  'id': z.intersection(z.string(), z.unknown()).readonly(),
82
97
  'revision': z.number().readonly(),
83
- })])
84
- const _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema = z.intersection(z.string(), z.unknown())
85
- const _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema = z.object({
98
+ })]))
99
+ let _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema$value
100
+ const _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_pause_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
101
+ let _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema$value
102
+ const _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_pause_parameter_1$schema$value ??= z.object({
86
103
  'id': z.intersection(z.string(), z.unknown()).readonly(),
87
104
  'revision': z.number().readonly(),
88
- })
89
- const _deepseek_ai_dsh_goal_goals_pause_result$schema = z.object({
105
+ }))
106
+ let _deepseek_ai_dsh_goal_goals_pause_result$schema$value
107
+ const _deepseek_ai_dsh_goal_goals_pause_result$schema = () => (_deepseek_ai_dsh_goal_goals_pause_result$schema$value ??= z.object({
90
108
  'roundsStarted': z.number().readonly(),
91
109
  'createdAt': z.number().readonly(),
92
110
  'updatedAt': z.number().readonly(),
@@ -100,13 +118,16 @@ const _deepseek_ai_dsh_goal_goals_pause_result$schema = z.object({
100
118
  'maxGoalRounds': z.number().readonly(),
101
119
  'id': z.intersection(z.string(), z.unknown()).readonly(),
102
120
  'revision': z.number().readonly(),
103
- })
104
- const _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema = z.intersection(z.string(), z.unknown())
105
- const _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema = z.object({
121
+ }))
122
+ let _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema$value
123
+ const _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema = () => (_deepseek_ai_dsh_goal_goals_resume_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
124
+ let _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema$value
125
+ const _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema = () => (_deepseek_ai_dsh_goal_goals_resume_parameter_1$schema$value ??= z.object({
106
126
  'id': z.intersection(z.string(), z.unknown()).readonly(),
107
127
  'revision': z.number().readonly(),
108
- })
109
- const _deepseek_ai_dsh_goal_goals_resume_result$schema = z.object({
128
+ }))
129
+ let _deepseek_ai_dsh_goal_goals_resume_result$schema$value
130
+ const _deepseek_ai_dsh_goal_goals_resume_result$schema = () => (_deepseek_ai_dsh_goal_goals_resume_result$schema$value ??= z.object({
110
131
  'roundsStarted': z.number().readonly(),
111
132
  'createdAt': z.number().readonly(),
112
133
  'updatedAt': z.number().readonly(),
@@ -120,7 +141,7 @@ const _deepseek_ai_dsh_goal_goals_resume_result$schema = z.object({
120
141
  'maxGoalRounds': z.number().readonly(),
121
142
  'id': z.intersection(z.string(), z.unknown()).readonly(),
122
143
  'revision': z.number().readonly(),
123
- })
144
+ }))
124
145
 
125
146
  export const TYPERT_REMOTE = {
126
147
  package: '@deepseek-ai/dsh-goal',
@@ -144,7 +165,7 @@ export const TYPERT_REMOTE = {
144
165
  codec: {
145
166
  mode: 'strict',
146
167
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
147
- schema: _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema,
168
+ create: _deepseek_ai_dsh_goal_goals_clear_parameter_0$schema,
148
169
  },
149
170
  },
150
171
  {
@@ -154,14 +175,14 @@ export const TYPERT_REMOTE = {
154
175
  codec: {
155
176
  mode: 'strict',
156
177
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
157
- schema: _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema,
178
+ create: _deepseek_ai_dsh_goal_goals_clear_parameter_1$schema,
158
179
  },
159
180
  },
160
181
  ],
161
182
  result: {
162
183
  mode: 'strict',
163
184
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
164
- schema: _deepseek_ai_dsh_goal_goals_clear_result$schema,
185
+ create: _deepseek_ai_dsh_goal_goals_clear_result$schema,
165
186
  },
166
187
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":433,"column":3},
167
188
  },
@@ -184,7 +205,7 @@ export const TYPERT_REMOTE = {
184
205
  codec: {
185
206
  mode: 'strict',
186
207
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
187
- schema: _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema,
208
+ create: _deepseek_ai_dsh_goal_goals_complete_parameter_0$schema,
188
209
  },
189
210
  },
190
211
  {
@@ -194,14 +215,14 @@ export const TYPERT_REMOTE = {
194
215
  codec: {
195
216
  mode: 'strict',
196
217
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
197
- schema: _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema,
218
+ create: _deepseek_ai_dsh_goal_goals_complete_parameter_1$schema,
198
219
  },
199
220
  },
200
221
  ],
201
222
  result: {
202
223
  mode: 'strict',
203
224
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
204
- schema: _deepseek_ai_dsh_goal_goals_complete_result$schema,
225
+ create: _deepseek_ai_dsh_goal_goals_complete_result$schema,
205
226
  },
206
227
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":391,"column":3},
207
228
  },
@@ -225,7 +246,7 @@ export const TYPERT_REMOTE = {
225
246
  codec: {
226
247
  mode: 'strict',
227
248
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
228
- schema: _deepseek_ai_dsh_goal_goals_create_parameter_0$schema,
249
+ create: _deepseek_ai_dsh_goal_goals_create_parameter_0$schema,
229
250
  },
230
251
  },
231
252
  {
@@ -235,14 +256,14 @@ export const TYPERT_REMOTE = {
235
256
  codec: {
236
257
  mode: 'strict',
237
258
  typeSymbol: '@deepseek-ai/dsh-goal/client#CreateGoalRequest',
238
- schema: _deepseek_ai_dsh_goal_goals_create_parameter_1$schema,
259
+ create: _deepseek_ai_dsh_goal_goals_create_parameter_1$schema,
239
260
  },
240
261
  },
241
262
  ],
242
263
  result: {
243
264
  mode: 'strict',
244
265
  typeSymbol: '@deepseek-ai/dsh-goal/client#CreateGoalResult',
245
- schema: _deepseek_ai_dsh_goal_goals_create_result$schema,
266
+ create: _deepseek_ai_dsh_goal_goals_create_result$schema,
246
267
  },
247
268
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":647,"column":3},
248
269
  },
@@ -265,7 +286,7 @@ export const TYPERT_REMOTE = {
265
286
  codec: {
266
287
  mode: 'strict',
267
288
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
268
- schema: _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema,
289
+ create: _deepseek_ai_dsh_goal_goals_edit_parameter_0$schema,
269
290
  },
270
291
  },
271
292
  {
@@ -275,7 +296,7 @@ export const TYPERT_REMOTE = {
275
296
  codec: {
276
297
  mode: 'strict',
277
298
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
278
- schema: _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema,
299
+ create: _deepseek_ai_dsh_goal_goals_edit_parameter_1$schema,
279
300
  },
280
301
  },
281
302
  {
@@ -285,14 +306,14 @@ export const TYPERT_REMOTE = {
285
306
  codec: {
286
307
  mode: 'strict',
287
308
  typeSymbol: '@deepseek-ai/dsh-goal/client#EditGoalRequest',
288
- schema: _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema,
309
+ create: _deepseek_ai_dsh_goal_goals_edit_parameter_2$schema,
289
310
  },
290
311
  },
291
312
  ],
292
313
  result: {
293
314
  mode: 'strict',
294
315
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
295
- schema: _deepseek_ai_dsh_goal_goals_edit_result$schema,
316
+ create: _deepseek_ai_dsh_goal_goals_edit_result$schema,
296
317
  },
297
318
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":329,"column":3},
298
319
  },
@@ -315,14 +336,14 @@ export const TYPERT_REMOTE = {
315
336
  codec: {
316
337
  mode: 'strict',
317
338
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
318
- schema: _deepseek_ai_dsh_goal_goals_get_parameter_0$schema,
339
+ create: _deepseek_ai_dsh_goal_goals_get_parameter_0$schema,
319
340
  },
320
341
  },
321
342
  ],
322
343
  result: {
323
344
  mode: 'strict',
324
345
  typeSymbol: '@deepseek-ai/dsh-goal#goals/get:result',
325
- schema: _deepseek_ai_dsh_goal_goals_get_result$schema,
346
+ create: _deepseek_ai_dsh_goal_goals_get_result$schema,
326
347
  },
327
348
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":277,"column":3},
328
349
  },
@@ -345,7 +366,7 @@ export const TYPERT_REMOTE = {
345
366
  codec: {
346
367
  mode: 'strict',
347
368
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
348
- schema: _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema,
369
+ create: _deepseek_ai_dsh_goal_goals_pause_parameter_0$schema,
349
370
  },
350
371
  },
351
372
  {
@@ -355,14 +376,14 @@ export const TYPERT_REMOTE = {
355
376
  codec: {
356
377
  mode: 'strict',
357
378
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
358
- schema: _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema,
379
+ create: _deepseek_ai_dsh_goal_goals_pause_parameter_1$schema,
359
380
  },
360
381
  },
361
382
  ],
362
383
  result: {
363
384
  mode: 'strict',
364
385
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
365
- schema: _deepseek_ai_dsh_goal_goals_pause_result$schema,
386
+ create: _deepseek_ai_dsh_goal_goals_pause_result$schema,
366
387
  },
367
388
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":352,"column":3},
368
389
  },
@@ -385,7 +406,7 @@ export const TYPERT_REMOTE = {
385
406
  codec: {
386
407
  mode: 'strict',
387
408
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
388
- schema: _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema,
409
+ create: _deepseek_ai_dsh_goal_goals_resume_parameter_0$schema,
389
410
  },
390
411
  },
391
412
  {
@@ -395,14 +416,14 @@ export const TYPERT_REMOTE = {
395
416
  codec: {
396
417
  mode: 'strict',
397
418
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalRef',
398
- schema: _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema,
419
+ create: _deepseek_ai_dsh_goal_goals_resume_parameter_1$schema,
399
420
  },
400
421
  },
401
422
  ],
402
423
  result: {
403
424
  mode: 'strict',
404
425
  typeSymbol: '@deepseek-ai/dsh-goal/client#GoalView',
405
- schema: _deepseek_ai_dsh_goal_goals_resume_result$schema,
426
+ create: _deepseek_ai_dsh_goal_goals_resume_result$schema,
406
427
  },
407
428
  sourceLocation: {"file":"packages/goal/goal/src/index.ts","line":364,"column":3},
408
429
  },
@@ -223,7 +223,7 @@ let GoalService = (() => {
223
223
  this.resolved = {
224
224
  defaultMaxGoalRounds: resolveMaxGoalRounds(config.defaultMaxGoalRounds ?? 256),
225
225
  };
226
- ctx.on('agent/session-start', ({ agent }) => {
226
+ ctx.on('agent/created', ({ agent }) => {
227
227
  this.setActivation(agent.session, 'disarmed');
228
228
  });
229
229
  ctx.sessionProjections.register(goalProjectionDefinition);
@@ -33,6 +33,7 @@ const install = Object.assign((ctx, fail) => {
33
33
  const staged = new WeakMap();
34
34
  const seed = (session) => {
35
35
  const state = emptyGoalFoldState();
36
+ // oxlint-disable-next-line typescript/no-deprecated -- Existing Session history read; migration deferred.
36
37
  for (const event of session.snapshotEvents())
37
38
  applyChecked(state, event, fail);
38
39
  states.set(session, state);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-goal",
3
3
  "description": "Event-sourced same-session goal state and lifecycle service for the DeepSeek Harness",
4
- "version": "0.1.5-rc.2",
4
+ "version": "0.1.6-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -53,36 +53,36 @@
53
53
  ],
54
54
  "license": "MIT",
55
55
  "peerDependencies": {
56
- "@deepseek-ai/dsh-agent": "^0.1.5-rc.2",
57
- "@deepseek-ai/dsh-session-projection": "^0.1.5-rc.2",
58
- "@deepseek-ai/dsh-brand": "^0.1.5-rc.2",
59
- "@deepseek-ai/dsh-invariants": "^0.1.5-rc.2",
60
- "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
61
- "@deepseek-ai/dsh-scope": "^0.1.5-rc.2",
62
- "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
63
- "@deepseek-ai/dsh-typert-protocol": "^0.1.5-rc.2",
64
- "@deepseek-ai/cordis": "^4.0.2"
56
+ "@deepseek-ai/dsh-invariants": "^0.1.6-alpha.2",
57
+ "@deepseek-ai/dsh-brand": "^0.1.6-alpha.2",
58
+ "@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
59
+ "@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
60
+ "@deepseek-ai/dsh-scope": "^0.1.6-alpha.2",
61
+ "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
62
+ "@deepseek-ai/cordis": "^4.0.2",
63
+ "@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
64
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.6-alpha.2"
65
65
  },
66
66
  "dependencies": {
67
67
  "zod": "^4.4.3",
68
68
  "@deepseek-ai/schemastery": "^3.18.2"
69
69
  },
70
70
  "devDependencies": {
71
- "@deepseek-ai/dsh-agent": "^0.1.5-rc.2",
72
- "@deepseek-ai/dsh-agent-loop": "^0.1.5-rc.2",
73
- "@deepseek-ai/dsh-agent-loop-testkit": "^0.1.5-rc.2",
74
- "@deepseek-ai/dsh-bash-local": "^0.1.5-rc.2",
75
- "@deepseek-ai/dsh-session-projection": "^0.1.5-rc.2",
76
- "@deepseek-ai/dsh-brand": "^0.1.5-rc.2",
77
- "@deepseek-ai/dsh-invariants": "^0.1.5-rc.2",
78
- "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
79
- "@deepseek-ai/dsh-loader-smoke": "^0.1.5-rc.2",
80
- "@deepseek-ai/dsh-scope": "^0.1.5-rc.2",
81
- "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
82
- "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.5-rc.2",
83
- "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.5-rc.2",
84
- "@deepseek-ai/dsh-subprocess-local": "^0.1.5-rc.2",
85
- "@deepseek-ai/dsh-typert-protocol": "^0.1.5-rc.2",
71
+ "@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
72
+ "@deepseek-ai/dsh-agent-loop": "^0.1.6-alpha.2",
73
+ "@deepseek-ai/dsh-agent-loop-testkit": "^0.1.6-alpha.2",
74
+ "@deepseek-ai/dsh-bash-local": "^0.1.6-alpha.2",
75
+ "@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
76
+ "@deepseek-ai/dsh-invariants": "^0.1.6-alpha.2",
77
+ "@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
78
+ "@deepseek-ai/dsh-brand": "^0.1.6-alpha.2",
79
+ "@deepseek-ai/dsh-scope": "^0.1.6-alpha.2",
80
+ "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
81
+ "@deepseek-ai/dsh-loader-smoke": "^0.1.6-alpha.2",
82
+ "@deepseek-ai/dsh-session-checkpoint-policy": "^0.1.6-alpha.2",
83
+ "@deepseek-ai/dsh-subprocess-local": "^0.1.6-alpha.2",
84
+ "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.6-alpha.2",
85
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.6-alpha.2",
86
86
  "@deepseek-ai/cordis": "^4.0.2"
87
87
  }
88
88
  }