@deepseek-ai/dsh-api-session-controller 0.2.1-alpha.1 → 0.2.1-alpha.3
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 +2 -2
- package/README.md +6 -2
- package/README.zh.md +6 -2
- package/lib/client.js +55 -26
- package/lib/index.js +265 -110
- package/lib/typert.host.js +1328 -590
- package/lib/typert.remote-client.d.ts +25 -2
- package/lib/typert.remote-client.js +1102 -561
- package/lib/types/agent.d.ts +61 -17
- package/lib/types/agent.js +148 -84
- package/lib/types/client/contract/sessions.d.ts +10 -5
- package/lib/types/client/sessions/lineage.d.ts +2 -0
- package/lib/types/client/sessions/manager.d.ts +10 -7
- package/lib/types/client/sessions/manager.js +42 -14
- package/lib/types/client/sessions/projection-store.d.ts +3 -3
- package/lib/types/client/sessions/projection-store.js +1 -1
- package/lib/types/client/sessions/service.d.ts +11 -6
- package/lib/types/client/sessions/service.js +9 -5
- package/lib/types/client/sessions/session.js +1 -1
- package/lib/types/commands.d.ts +20 -6
- package/lib/types/commands.js +28 -34
- package/lib/types/index.d.ts +11 -8
- package/lib/types/index.js +105 -25
- package/lib/types/list.js +6 -4
- package/lib/types/skill-catalog.js +7 -6
- package/lib/types/types.d.ts +28 -5
- package/locale/en.json +5 -0
- package/locale/zh.json +6 -0
- package/package.json +83 -77
|
@@ -1,49 +1,41 @@
|
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
let JsonValueRemoteCodec$schema2$value
|
|
7
|
-
const JsonValueRemoteCodec$schema2 = () => (JsonValueRemoteCodec$schema2$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema2())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema2()))]))
|
|
8
|
-
let JsonValueRemoteCodec$schema3$value
|
|
9
|
-
const JsonValueRemoteCodec$schema3 = () => (JsonValueRemoteCodec$schema3$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema3())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema3()))]))
|
|
10
|
-
let JsonValueRemoteCodec$schema4$value
|
|
11
|
-
const JsonValueRemoteCodec$schema4 = () => (JsonValueRemoteCodec$schema4$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))]))
|
|
12
|
-
let JsonValueRemoteCodec$schema5$value
|
|
13
|
-
const JsonValueRemoteCodec$schema5 = () => (JsonValueRemoteCodec$schema5$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5()))]))
|
|
4
|
+
import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
|
|
5
|
+
|
|
14
6
|
let _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema$value
|
|
15
|
-
const _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema$value ??= z.
|
|
7
|
+
const _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema$value ??= z.string())
|
|
16
8
|
let _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1$schema$value
|
|
17
9
|
const _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1$schema$value ??= z.string())
|
|
18
10
|
let _deepseek_ai_dsh_api_session_controller_fileReferences_list_result$schema$value
|
|
19
11
|
const _deepseek_ai_dsh_api_session_controller_fileReferences_list_result$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_result$schema$value ??= z.array(z.object({
|
|
20
|
-
'path': z.string(),
|
|
21
|
-
'kind': z.union([z.literal("file"), z.literal("directory")]),
|
|
12
|
+
'path': z.string().describe('User-facing path accepted by normal prompts and filesystem tools.'),
|
|
13
|
+
'kind': z.union([z.literal("file"), z.literal("directory")]).describe('Directories keep completion open; files finish the mention.'),
|
|
22
14
|
})))
|
|
23
15
|
let _deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0$schema$value
|
|
24
16
|
const _deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0$schema$value ??= z.object({
|
|
25
|
-
'sessionId': z.
|
|
26
|
-
'attachmentId': z.
|
|
17
|
+
'sessionId': z.string().readonly(),
|
|
18
|
+
'attachmentId': z.string().readonly(),
|
|
27
19
|
}))
|
|
28
20
|
let _deepseek_ai_dsh_api_session_controller_session_attachment_result$schema$value
|
|
29
21
|
const _deepseek_ai_dsh_api_session_controller_session_attachment_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_attachment_result$schema$value ??= z.object({
|
|
30
22
|
'attachment': z.object({
|
|
31
|
-
'attachmentId': z.
|
|
32
|
-
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]),
|
|
33
|
-
'bytes': z.number(),
|
|
34
|
-
'width': z.number(),
|
|
35
|
-
'height': z.number(),
|
|
36
|
-
'name': z.string().optional(),
|
|
23
|
+
'attachmentId': z.string().describe('Opaque storage identifier; never a filesystem path or bearer URL.'),
|
|
24
|
+
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]).describe('Media type verified from the stored bytes.'),
|
|
25
|
+
'bytes': z.number().describe('Exact encoded byte length.'),
|
|
26
|
+
'width': z.number().describe('Intrinsic encoded width in pixels.'),
|
|
27
|
+
'height': z.number().describe('Intrinsic encoded height in pixels.'),
|
|
28
|
+
'name': z.string().optional().describe('Optional display name stripped of local path information.'),
|
|
37
29
|
'originalDimensions': z.object({
|
|
38
30
|
'width': z.number(),
|
|
39
31
|
'height': z.number(),
|
|
40
|
-
}).optional(),
|
|
32
|
+
}).optional().describe('Input dimensions after applying EXIF orientation and before normalization scaling. Present only when normalization reduced the image.'),
|
|
41
33
|
}).readonly(),
|
|
42
34
|
'data': z.string().readonly(),
|
|
43
35
|
}))
|
|
44
36
|
let _deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0$schema$value
|
|
45
37
|
const _deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0$schema$value ??= z.object({
|
|
46
|
-
'sessionId': z.
|
|
38
|
+
'sessionId': z.string().readonly(),
|
|
47
39
|
}))
|
|
48
40
|
let _deepseek_ai_dsh_api_session_controller_session_cancel_result$schema$value
|
|
49
41
|
const _deepseek_ai_dsh_api_session_controller_session_cancel_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_cancel_result$schema$value ??= z.object({
|
|
@@ -55,184 +47,212 @@ let _deepseek_ai_dsh_api_session_controller_session_control_result$schema$value
|
|
|
55
47
|
const _deepseek_ai_dsh_api_session_controller_session_control_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_control_result$schema$value ??= z.union([z.object({
|
|
56
48
|
'type': z.literal("baseline").readonly(),
|
|
57
49
|
'value': z.object({
|
|
58
|
-
'projections': z.record(z.
|
|
50
|
+
'projections': z.record(z.string(), z.object({
|
|
59
51
|
'asOfSeq': z.number().readonly(),
|
|
60
52
|
'values': z.intersection(z.object({
|
|
61
53
|
'inbox': z.object({
|
|
62
|
-
'next-turn': z.array(z.
|
|
63
|
-
'next-step': z.array(z.
|
|
64
|
-
}).optional(),
|
|
65
|
-
'
|
|
66
|
-
'
|
|
54
|
+
'next-turn': z.array(z.json()).readonly(),
|
|
55
|
+
'next-step': z.array(z.json()).readonly(),
|
|
56
|
+
}).optional().describe('Pending agent input reconstructed from durable inbox splices.'),
|
|
57
|
+
'workingDirectory': z.union([z.literal(null), z.string()]).optional().describe('Recorded current directory for Session observations, or null when none is recorded.'),
|
|
58
|
+
'agentPreset': z.union([z.literal(null), z.string()]).optional().describe('Preset the Session runs, or null when the deployment composes none.'),
|
|
59
|
+
'title': z.union([z.literal(null), z.string()]).optional().describe('The session\'s current normalized title — the latest `session/title` event\'s text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume.'),
|
|
67
60
|
'todos': z.union([z.literal(null), z.array(z.object({
|
|
68
|
-
'content': z.string(),
|
|
69
|
-
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
|
|
70
|
-
}))]).optional(),
|
|
61
|
+
'content': z.string().describe('What this task is — a short imperative line shown in the UI.'),
|
|
62
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]).describe('Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several.'),
|
|
63
|
+
}))]).optional().describe('The agent\'s current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins.'),
|
|
71
64
|
'sessionListMetadata': z.object({
|
|
72
|
-
'blank': z.boolean().readonly(),
|
|
73
|
-
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly(),
|
|
74
|
-
}).optional(),
|
|
65
|
+
'blank': z.boolean().readonly().describe('Whether the folded prefix contains no turn.'),
|
|
66
|
+
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly().describe('Latest human-authored prompt time in the folded prefix.'),
|
|
67
|
+
}).optional().describe('Persisted facts used to summarize a Session without activating it.'),
|
|
75
68
|
'imageLimits': z.object({
|
|
76
69
|
'maxImageBytes': z.number(),
|
|
77
70
|
'maxImagesPerMessage': z.number(),
|
|
78
71
|
'maxMessageImageBytes': z.number(),
|
|
79
72
|
'maxImagePixels': z.number(),
|
|
80
|
-
'maxImageDimension': z.number(),
|
|
73
|
+
'maxImageDimension': z.number().describe('Maximum intrinsic width and maximum intrinsic height in pixels for one image.'),
|
|
81
74
|
'mediaTypes': z.array(z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")])),
|
|
82
|
-
}).optional(),
|
|
75
|
+
}).optional().describe('Image-intake limits enforced by the Session prompt endpoint.'),
|
|
83
76
|
'modelSelection': z.object({
|
|
84
77
|
'lastUsed': z.union([z.literal(null), z.object({
|
|
85
78
|
'provider': z.string().readonly(),
|
|
86
79
|
'model': z.string().readonly(),
|
|
87
80
|
'reasoningEffort': z.string().readonly().optional(),
|
|
88
|
-
})]).readonly(),
|
|
81
|
+
})]).readonly().describe('Selection consumed by the latest recorded model request.'),
|
|
89
82
|
'next': z.union([z.literal(null), z.object({
|
|
90
83
|
'provider': z.string().readonly(),
|
|
91
84
|
'model': z.string().readonly(),
|
|
92
85
|
'reasoningEffort': z.string().readonly().optional(),
|
|
93
|
-
})]).readonly(),
|
|
94
|
-
}).optional(),
|
|
86
|
+
})]).readonly().describe('Selection the next request should use, falling back to {@link lastUsed}.'),
|
|
87
|
+
}).optional().describe('Durable model selection already used and selected for the next request.'),
|
|
95
88
|
'permissions': z.object({
|
|
96
|
-
'currentValue': z.string(),
|
|
97
|
-
}).optional(),
|
|
98
|
-
'subagentCatalog': z.array(z.union([z.
|
|
99
|
-
'id': z.
|
|
89
|
+
'currentValue': z.string().describe('The effective current value: a configured preset key, `auto`, or `custom`.'),
|
|
90
|
+
}).optional().describe('The session\'s current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control.'),
|
|
91
|
+
'subagentCatalog': z.array(z.union([z.object({
|
|
92
|
+
'id': z.string().readonly(),
|
|
100
93
|
'createdAt': z.number().readonly(),
|
|
101
|
-
}), z.object({
|
|
102
94
|
'mode': z.literal("one-shot").readonly(),
|
|
103
95
|
'label': z.string().readonly().optional(),
|
|
104
|
-
})
|
|
105
|
-
'id': z.
|
|
96
|
+
}), z.object({
|
|
97
|
+
'id': z.string().readonly(),
|
|
106
98
|
'createdAt': z.number().readonly(),
|
|
99
|
+
'mode': z.literal("external").readonly(),
|
|
100
|
+
'label': z.string().readonly().optional(),
|
|
107
101
|
}), z.object({
|
|
102
|
+
'id': z.string().readonly(),
|
|
103
|
+
'createdAt': z.number().readonly(),
|
|
108
104
|
'mode': z.literal("continuable").readonly(),
|
|
109
105
|
'label': z.string().readonly(),
|
|
110
|
-
})), z.intersection(z.object({
|
|
111
|
-
'id': z.intersection(z.string(), z.unknown()).readonly(),
|
|
112
|
-
'createdAt': z.number().readonly(),
|
|
113
106
|
}), z.object({
|
|
107
|
+
'id': z.string().readonly(),
|
|
108
|
+
'createdAt': z.number().readonly(),
|
|
114
109
|
'mode': z.literal("unknown").readonly(),
|
|
115
110
|
'label': z.string().readonly().optional(),
|
|
116
|
-
})
|
|
111
|
+
})])).optional().describe('Direct children in parent catalog event order, excluding fork-inherited facts.'),
|
|
117
112
|
'subagentTiming': z.object({
|
|
118
|
-
'settledMs': z.number(),
|
|
113
|
+
'settledMs': z.number().describe('Milliseconds accumulated across completed turns after the child\'s own descriptor.'),
|
|
119
114
|
'active': z.object({
|
|
120
|
-
'since': z.number(),
|
|
121
|
-
'through': z.number(),
|
|
122
|
-
}).optional(),
|
|
123
|
-
'lastTurnCompleted': z.boolean().optional(),
|
|
124
|
-
}).optional(),
|
|
115
|
+
'since': z.number().describe('Start of the open turn.'),
|
|
116
|
+
'through': z.number().describe('Latest event time folded into this projection cut.'),
|
|
117
|
+
}).optional().describe('Same-cut bounds of the currently open turn, when one has not reached `turn/end`.'),
|
|
118
|
+
'lastTurnCompleted': z.boolean().optional().describe('Whether the latest closed turn after the child\'s own descriptor completed normally; absent while a turn is open or before one closes.'),
|
|
119
|
+
}).optional().describe('Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session.'),
|
|
125
120
|
'subagent': z.union([z.literal(null), z.object({
|
|
126
|
-
'mode': z.literal("one-shot"),
|
|
127
|
-
'label': z.string().optional(),
|
|
128
|
-
'seq': z.
|
|
121
|
+
'mode': z.literal("one-shot").describe('A terminal one-shot child.'),
|
|
122
|
+
'label': z.string().optional().describe('Optional durable creation label from the child\'s descriptor.'),
|
|
123
|
+
'seq': z.number().describe('Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child\'s OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed\'s replayed ancestor descriptor.'),
|
|
129
124
|
}), z.object({
|
|
130
|
-
'mode': z.literal("continuable"),
|
|
131
|
-
'label': z.string(),
|
|
132
|
-
'seq': z.
|
|
133
|
-
})]).optional(),
|
|
125
|
+
'mode': z.literal("continuable").describe('A resumable conversation.'),
|
|
126
|
+
'label': z.string().describe('Durable creation label from the child\'s descriptor.'),
|
|
127
|
+
'seq': z.number().describe('Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof.'),
|
|
128
|
+
})]).optional().describe('Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional.'),
|
|
134
129
|
'tokenUsage': z.object({
|
|
135
130
|
'uncachedInputTokens': z.number(),
|
|
136
131
|
'outputTokens': z.number(),
|
|
137
132
|
'cacheReadTokens': z.number(),
|
|
138
133
|
'cacheWriteTokens': z.number(),
|
|
139
|
-
}).optional(),
|
|
134
|
+
}).optional().describe('Provider-reported usage accumulated across the complete durable log.'),
|
|
140
135
|
'contextPressure': z.object({
|
|
141
|
-
'pressureTokens': z.number().optional(),
|
|
142
|
-
'projectedTokens': z.number().optional(),
|
|
143
|
-
'contextWindow': z.number().optional(),
|
|
144
|
-
}).optional(),
|
|
136
|
+
'pressureTokens': z.number().optional().describe('Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage.'),
|
|
137
|
+
'projectedTokens': z.number().optional().describe('What the NEXT request\'s prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage.'),
|
|
138
|
+
'contextWindow': z.number().optional().describe('Newest recorded route capacity; absent when no adapter advertised one.'),
|
|
139
|
+
}).optional().describe('Newest request pressure paired with the newest known route capacity.'),
|
|
145
140
|
'contextBreakdown': z.object({
|
|
146
|
-
'systemTokens': z.number(),
|
|
147
|
-
'toolsTokens': z.number(),
|
|
148
|
-
'messageTokens': z.number(),
|
|
149
|
-
}).optional(),
|
|
141
|
+
'systemTokens': z.number().describe('Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists.'),
|
|
142
|
+
'toolsTokens': z.number().describe('Heuristic tokens of the newest request envelope\'s tool schemas; 0 before any request.'),
|
|
143
|
+
'messageTokens': z.number().describe('Heuristic tokens of every other visible surface node, including superseded system prompts.'),
|
|
144
|
+
}).optional().describe('Heuristic system/tools/message composition of the next request.'),
|
|
145
|
+
'agentTeam': z.object({
|
|
146
|
+
'members': z.array(z.object({
|
|
147
|
+
'id': z.string().readonly(),
|
|
148
|
+
'name': z.string().readonly(),
|
|
149
|
+
'role': z.union([z.literal("lead"), z.literal("teammate")]).readonly(),
|
|
150
|
+
'phase': z.union([z.literal("failed"), z.literal("provisioning"), z.literal("active")]).readonly().describe('Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status.'),
|
|
151
|
+
'error': z.string().readonly().optional(),
|
|
152
|
+
})).readonly(),
|
|
153
|
+
'tasks': z.array(z.object({
|
|
154
|
+
'id': z.string().readonly(),
|
|
155
|
+
'revision': z.number().readonly(),
|
|
156
|
+
'subject': z.string().readonly(),
|
|
157
|
+
'description': z.string().readonly(),
|
|
158
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress"), z.literal("deleted")]).readonly(),
|
|
159
|
+
'blockedBy': z.array(z.string()).readonly(),
|
|
160
|
+
'writeScopes': z.array(z.string()).readonly(),
|
|
161
|
+
'ownerName': z.string().readonly().optional(),
|
|
162
|
+
'ready': z.boolean().readonly(),
|
|
163
|
+
'writeScopeWarnings': z.array(z.string()).readonly(),
|
|
164
|
+
})).readonly(),
|
|
165
|
+
'failure': z.string().readonly().optional(),
|
|
166
|
+
}).optional().describe('Durable roster and non-deleted task board of the Team rooted at the projected Session.'),
|
|
150
167
|
'userQuestions': z.object({
|
|
151
168
|
'active': z.array(z.object({
|
|
152
|
-
'callId': z.
|
|
169
|
+
'callId': z.string().readonly(),
|
|
153
170
|
'questions': z.array(z.object({
|
|
154
|
-
'id': z.string(),
|
|
155
|
-
'question': z.string(),
|
|
156
|
-
'detail': z.string().optional(),
|
|
157
|
-
'header': z.string().optional(),
|
|
171
|
+
'id': z.string().describe('Stable caller-provided question id, echoed in the answer.'),
|
|
172
|
+
'question': z.string().describe('The question to display.'),
|
|
173
|
+
'detail': z.string().optional().describe('Optional supporting detail rendered with the question but kept out of option labels.'),
|
|
174
|
+
'header': z.string().optional().describe('Optional short heading/group label.'),
|
|
158
175
|
'options': z.array(z.object({
|
|
159
|
-
'label': z.string(),
|
|
160
|
-
'description': z.string().optional(),
|
|
161
|
-
})).optional(),
|
|
162
|
-
'multiSelect': z.boolean().optional(),
|
|
176
|
+
'label': z.string().describe('User-facing label.'),
|
|
177
|
+
'description': z.string().optional().describe('Optional extra context rendered by capable UIs.'),
|
|
178
|
+
})).optional().describe('Optional choices the UI can render as a menu.'),
|
|
179
|
+
'multiSelect': z.boolean().optional().describe('Whether more than one option may be selected. Defaults to single-select.'),
|
|
163
180
|
'intent': z.object({
|
|
164
|
-
'kind': z.literal("plan-review"),
|
|
165
|
-
'approve': z.string(),
|
|
166
|
-
'callId': z.
|
|
167
|
-
}).optional(),
|
|
181
|
+
'kind': z.literal("plan-review").describe('A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it.'),
|
|
182
|
+
'approve': z.string().describe('The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`.'),
|
|
183
|
+
'callId': z.string().optional().describe('Logged tool invocation whose arguments contain the reviewed plan.'),
|
|
184
|
+
}).optional().describe('Optional presentation intent for capable UIs; absent asks for the generic option list.'),
|
|
168
185
|
})).readonly(),
|
|
169
186
|
'state': z.union([z.literal("open"), z.literal("continued")]).readonly(),
|
|
170
|
-
})).readonly(),
|
|
187
|
+
})).readonly().describe('Calls that can still take an answer, in ask order.'),
|
|
171
188
|
'settled': z.array(z.object({
|
|
172
|
-
'callId': z.
|
|
189
|
+
'callId': z.string().readonly().describe('The settled call.'),
|
|
173
190
|
'answers': z.array(z.object({
|
|
174
|
-
'id': z.string(),
|
|
175
|
-
'selected': z.array(z.string()),
|
|
176
|
-
'custom': z.string().optional(),
|
|
177
|
-
})).readonly(),
|
|
178
|
-
})).readonly(),
|
|
179
|
-
}).optional(),
|
|
191
|
+
'id': z.string().describe('The answered question id.'),
|
|
192
|
+
'selected': z.array(z.string()).describe('Selected option labels. May accompany custom text for a multi-select question.'),
|
|
193
|
+
'custom': z.string().optional().describe('Optional free-text "Other" answer.'),
|
|
194
|
+
})).readonly().describe('The recorded batch, one entry per question; empty when the late reply carried none.'),
|
|
195
|
+
})).readonly().describe('Calls an answer settled, in settlement order.'),
|
|
196
|
+
}).optional().describe('Timed questions that remain answerable in this Session, and the ones a late reply settled.'),
|
|
180
197
|
'goal': z.union([z.literal(null), z.object({
|
|
181
198
|
'goal': z.object({
|
|
182
|
-
'objective': z.string().readonly(),
|
|
183
|
-
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly(),
|
|
199
|
+
'objective': z.string().readonly().describe('Human-requested completion objective.'),
|
|
200
|
+
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly().describe('Durable lifecycle phase.'),
|
|
184
201
|
'blockedReason': z.object({
|
|
185
|
-
'code': z.string().readonly(),
|
|
186
|
-
'message': z.string().readonly(),
|
|
187
|
-
}).readonly().optional(),
|
|
188
|
-
'maxGoalRounds': z.number().readonly(),
|
|
189
|
-
'id': z.
|
|
190
|
-
'revision': z.number().readonly(),
|
|
191
|
-
}).readonly(),
|
|
192
|
-
'roundsStarted': z.number().readonly(),
|
|
193
|
-
'createdAt': z.number().readonly(),
|
|
194
|
-
'updatedAt': z.number().readonly(),
|
|
195
|
-
})]).optional(),
|
|
196
|
-
|
|
202
|
+
'code': z.string().readonly().describe('Stable lower-kebab-case classification chosen by the blocking policy.'),
|
|
203
|
+
'message': z.string().readonly().describe('Non-empty explanation shown to humans and models.'),
|
|
204
|
+
}).readonly().optional().describe('Present exactly while `phase` is `blocked`.'),
|
|
205
|
+
'maxGoalRounds': z.number().readonly().describe('Total admitted goal-round cap.'),
|
|
206
|
+
'id': z.string().readonly().describe('Stable goal identity.'),
|
|
207
|
+
'revision': z.number().readonly().describe('Positive revision; every durable mutation increments it.'),
|
|
208
|
+
}).readonly().describe('Current durable goal snapshot (the CAS ref for mutations rides on it).'),
|
|
209
|
+
'roundsStarted': z.number().readonly().describe('Highest admitted round number for this goal.'),
|
|
210
|
+
'createdAt': z.number().readonly().describe('Epoch milliseconds of the create mutation.'),
|
|
211
|
+
'updatedAt': z.number().readonly().describe('Epoch milliseconds of the latest mutation.'),
|
|
212
|
+
})]).optional().describe('The session\'s current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`.'),
|
|
213
|
+
'plan': z.object({
|
|
214
|
+
'active': z.boolean(),
|
|
215
|
+
'pending': z.boolean(),
|
|
216
|
+
}).optional().describe('Plan collaboration state folded from the plan command lifecycle and `plan/mode` events.'),
|
|
217
|
+
}), z.record(z.string(), z.json()).readonly()).readonly().describe('Provider-validated values; omitted keys are absent capabilities at this cut.'),
|
|
197
218
|
})).readonly().readonly(),
|
|
198
219
|
}).readonly(),
|
|
199
|
-
}), z.intersection(z.object({
|
|
200
|
-
'type': z.literal("projection").readonly(),
|
|
201
220
|
}), z.object({
|
|
202
|
-
'
|
|
221
|
+
'type': z.literal("projection").readonly(),
|
|
222
|
+
'sessionId': z.string().readonly(),
|
|
203
223
|
'key': z.string().readonly(),
|
|
204
|
-
'value': z.
|
|
224
|
+
'value': z.json().readonly(),
|
|
205
225
|
'seq': z.number().readonly(),
|
|
206
|
-
})
|
|
226
|
+
})]))
|
|
207
227
|
let _deepseek_ai_dsh_api_session_controller_session_create_parameter_0$schema$value
|
|
208
228
|
const _deepseek_ai_dsh_api_session_controller_session_create_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_create_parameter_0$schema$value ??= z.object({
|
|
209
|
-
'workspaceId': z.
|
|
210
|
-
'cwd': z.string().readonly().optional(),
|
|
211
|
-
'sessionId': z.
|
|
212
|
-
'agentPreset': z.string().readonly().optional(),
|
|
229
|
+
'workspaceId': z.string().readonly().optional().describe('Workspace the Session joins; exclusive with `cwd`.'),
|
|
230
|
+
'cwd': z.string().readonly().optional().describe('Directory the Session owns when no Workspace is named.'),
|
|
231
|
+
'sessionId': z.string().readonly().optional().describe('Blank Session to reuse while it is reusable, or the identity of a new Session when none is stored under it.'),
|
|
232
|
+
'agentPreset': z.string().readonly().optional().describe('Preset the Session runs, replacing a reused Session\'s recorded preset; the configured default when omitted.'),
|
|
213
233
|
}))
|
|
214
234
|
let _deepseek_ai_dsh_api_session_controller_session_create_result$schema$value
|
|
215
235
|
const _deepseek_ai_dsh_api_session_controller_session_create_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_create_result$schema$value ??= z.object({
|
|
216
|
-
'sessionId': z.
|
|
217
|
-
'agentPreset': z.string().readonly().optional(),
|
|
236
|
+
'sessionId': z.string().readonly().describe('The created or reused Session, which may differ from the requested `sessionId`.'),
|
|
237
|
+
'agentPreset': z.string().readonly().optional().describe('Preset the Session runs, when the deployment composes a preset roster.'),
|
|
218
238
|
}))
|
|
219
239
|
let _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value
|
|
220
240
|
const _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema$value ??= z.object({
|
|
221
241
|
'address': z.union([z.object({
|
|
222
242
|
'kind': z.literal("session").readonly(),
|
|
223
|
-
'sessionId': z.
|
|
243
|
+
'sessionId': z.string().readonly(),
|
|
224
244
|
}), z.object({
|
|
225
245
|
'kind': z.literal("subagent").readonly(),
|
|
226
|
-
'parentSessionId': z.
|
|
227
|
-
'childSessionId': z.
|
|
246
|
+
'parentSessionId': z.string().readonly(),
|
|
247
|
+
'childSessionId': z.string().readonly(),
|
|
228
248
|
'mode': z.union([z.literal("one-shot"), z.literal("continuable"), z.literal("unknown")]).readonly(),
|
|
229
249
|
})]).readonly(),
|
|
230
|
-
'assistantStream': z.literal(true).readonly().optional(),
|
|
250
|
+
'assistantStream': z.literal(true).readonly().optional().describe('Include process-local assistant presentation frames for the Web client.'),
|
|
231
251
|
'maxMessages': z.number().readonly().optional(),
|
|
232
252
|
'turnWindow': z.object({
|
|
233
|
-
'minMessages': z.number().readonly(),
|
|
234
|
-
'minTurns': z.number().readonly(),
|
|
235
|
-
}).readonly().optional(),
|
|
253
|
+
'minMessages': z.number().readonly().describe('Minimum append-origin user/assistant messages; must not exceed maxMessages.'),
|
|
254
|
+
'minTurns': z.number().readonly().describe('Minimum Turn starts crossed, including the partial Turn at beforeSeq.'),
|
|
255
|
+
}).readonly().optional().describe('Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins.'),
|
|
236
256
|
}))
|
|
237
257
|
let _deepseek_ai_dsh_api_session_controller_session_follow_result$schema$value
|
|
238
258
|
const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_follow_result$schema$value ??= z.union([z.object({
|
|
@@ -241,20 +261,20 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
|
|
|
241
261
|
'type': z.string().readonly(),
|
|
242
262
|
'seq': z.number().readonly(),
|
|
243
263
|
'time': z.number().readonly(),
|
|
244
|
-
'data': z.
|
|
264
|
+
'data': z.json().readonly(),
|
|
245
265
|
'ignorable': z.literal(true).readonly().optional(),
|
|
246
|
-
'sourceEventSeqs': z.
|
|
247
|
-
'surfaceOp': z.
|
|
266
|
+
'sourceEventSeqs': z.json().readonly().optional().describe('Earlier sources on current surface events; opaque JSON on unknown ignorable events.'),
|
|
267
|
+
'surfaceOp': z.json().readonly().optional().describe('Canonical placement on current surface events; opaque JSON on unknown ignorable events.'),
|
|
248
268
|
}).readonly(),
|
|
249
269
|
}), z.object({
|
|
250
270
|
'type': z.literal("snapshot").readonly(),
|
|
251
271
|
'header': z.object({
|
|
252
272
|
'version': z.number().readonly(),
|
|
253
|
-
'id': z.
|
|
273
|
+
'id': z.string().readonly(),
|
|
254
274
|
'createdAt': z.number().readonly(),
|
|
255
275
|
'cwd': z.string().readonly().optional(),
|
|
256
|
-
'parentSession': z.
|
|
257
|
-
'isSeeded': z.boolean().readonly(),
|
|
276
|
+
'parentSession': z.string().readonly().optional(),
|
|
277
|
+
'isSeeded': z.boolean().readonly().describe('Whether the Session contains a fork-inherited prefix.'),
|
|
258
278
|
'origin': z.literal("subagent").readonly().optional(),
|
|
259
279
|
'delegationDepth': z.number().readonly().optional(),
|
|
260
280
|
'agentPreset': z.string().readonly().optional(),
|
|
@@ -266,10 +286,10 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
|
|
|
266
286
|
'type': z.string().readonly(),
|
|
267
287
|
'seq': z.number().readonly(),
|
|
268
288
|
'time': z.number().readonly(),
|
|
269
|
-
'data': z.
|
|
289
|
+
'data': z.json().readonly(),
|
|
270
290
|
'ignorable': z.literal(true).readonly().optional(),
|
|
271
|
-
'sourceEventSeqs': z.
|
|
272
|
-
'surfaceOp': z.
|
|
291
|
+
'sourceEventSeqs': z.json().readonly().optional().describe('Earlier sources on current surface events; opaque JSON on unknown ignorable events.'),
|
|
292
|
+
'surfaceOp': z.json().readonly().optional().describe('Canonical placement on current surface events; opaque JSON on unknown ignorable events.'),
|
|
273
293
|
}).readonly(),
|
|
274
294
|
})).readonly(),
|
|
275
295
|
'hasMore': z.boolean().readonly(),
|
|
@@ -277,174 +297,203 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
|
|
|
277
297
|
'asOfSeq': z.number().readonly(),
|
|
278
298
|
'values': z.intersection(z.object({
|
|
279
299
|
'inbox': z.object({
|
|
280
|
-
'next-turn': z.array(z.
|
|
281
|
-
'next-step': z.array(z.
|
|
282
|
-
}).optional(),
|
|
283
|
-
'
|
|
284
|
-
'
|
|
300
|
+
'next-turn': z.array(z.json()).readonly(),
|
|
301
|
+
'next-step': z.array(z.json()).readonly(),
|
|
302
|
+
}).optional().describe('Pending agent input reconstructed from durable inbox splices.'),
|
|
303
|
+
'workingDirectory': z.union([z.literal(null), z.string()]).optional().describe('Recorded current directory for Session observations, or null when none is recorded.'),
|
|
304
|
+
'agentPreset': z.union([z.literal(null), z.string()]).optional().describe('Preset the Session runs, or null when the deployment composes none.'),
|
|
305
|
+
'title': z.union([z.literal(null), z.string()]).optional().describe('The session\'s current normalized title — the latest `session/title` event\'s text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume.'),
|
|
285
306
|
'todos': z.union([z.literal(null), z.array(z.object({
|
|
286
|
-
'content': z.string(),
|
|
287
|
-
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
|
|
288
|
-
}))]).optional(),
|
|
307
|
+
'content': z.string().describe('What this task is — a short imperative line shown in the UI.'),
|
|
308
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]).describe('Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several.'),
|
|
309
|
+
}))]).optional().describe('The agent\'s current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins.'),
|
|
289
310
|
'sessionListMetadata': z.object({
|
|
290
|
-
'blank': z.boolean().readonly(),
|
|
291
|
-
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly(),
|
|
292
|
-
}).optional(),
|
|
311
|
+
'blank': z.boolean().readonly().describe('Whether the folded prefix contains no turn.'),
|
|
312
|
+
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly().describe('Latest human-authored prompt time in the folded prefix.'),
|
|
313
|
+
}).optional().describe('Persisted facts used to summarize a Session without activating it.'),
|
|
293
314
|
'imageLimits': z.object({
|
|
294
315
|
'maxImageBytes': z.number(),
|
|
295
316
|
'maxImagesPerMessage': z.number(),
|
|
296
317
|
'maxMessageImageBytes': z.number(),
|
|
297
318
|
'maxImagePixels': z.number(),
|
|
298
|
-
'maxImageDimension': z.number(),
|
|
319
|
+
'maxImageDimension': z.number().describe('Maximum intrinsic width and maximum intrinsic height in pixels for one image.'),
|
|
299
320
|
'mediaTypes': z.array(z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")])),
|
|
300
|
-
}).optional(),
|
|
321
|
+
}).optional().describe('Image-intake limits enforced by the Session prompt endpoint.'),
|
|
301
322
|
'modelSelection': z.object({
|
|
302
323
|
'lastUsed': z.union([z.literal(null), z.object({
|
|
303
324
|
'provider': z.string().readonly(),
|
|
304
325
|
'model': z.string().readonly(),
|
|
305
326
|
'reasoningEffort': z.string().readonly().optional(),
|
|
306
|
-
})]).readonly(),
|
|
327
|
+
})]).readonly().describe('Selection consumed by the latest recorded model request.'),
|
|
307
328
|
'next': z.union([z.literal(null), z.object({
|
|
308
329
|
'provider': z.string().readonly(),
|
|
309
330
|
'model': z.string().readonly(),
|
|
310
331
|
'reasoningEffort': z.string().readonly().optional(),
|
|
311
|
-
})]).readonly(),
|
|
312
|
-
}).optional(),
|
|
332
|
+
})]).readonly().describe('Selection the next request should use, falling back to {@link lastUsed}.'),
|
|
333
|
+
}).optional().describe('Durable model selection already used and selected for the next request.'),
|
|
313
334
|
'permissions': z.object({
|
|
314
|
-
'currentValue': z.string(),
|
|
315
|
-
}).optional(),
|
|
316
|
-
'subagentCatalog': z.array(z.union([z.
|
|
317
|
-
'id': z.
|
|
335
|
+
'currentValue': z.string().describe('The effective current value: a configured preset key, `auto`, or `custom`.'),
|
|
336
|
+
}).optional().describe('The session\'s current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control.'),
|
|
337
|
+
'subagentCatalog': z.array(z.union([z.object({
|
|
338
|
+
'id': z.string().readonly(),
|
|
318
339
|
'createdAt': z.number().readonly(),
|
|
319
|
-
}), z.object({
|
|
320
340
|
'mode': z.literal("one-shot").readonly(),
|
|
321
341
|
'label': z.string().readonly().optional(),
|
|
322
|
-
})
|
|
323
|
-
'id': z.
|
|
342
|
+
}), z.object({
|
|
343
|
+
'id': z.string().readonly(),
|
|
324
344
|
'createdAt': z.number().readonly(),
|
|
345
|
+
'mode': z.literal("external").readonly(),
|
|
346
|
+
'label': z.string().readonly().optional(),
|
|
325
347
|
}), z.object({
|
|
348
|
+
'id': z.string().readonly(),
|
|
349
|
+
'createdAt': z.number().readonly(),
|
|
326
350
|
'mode': z.literal("continuable").readonly(),
|
|
327
351
|
'label': z.string().readonly(),
|
|
328
|
-
})), z.intersection(z.object({
|
|
329
|
-
'id': z.intersection(z.string(), z.unknown()).readonly(),
|
|
330
|
-
'createdAt': z.number().readonly(),
|
|
331
352
|
}), z.object({
|
|
353
|
+
'id': z.string().readonly(),
|
|
354
|
+
'createdAt': z.number().readonly(),
|
|
332
355
|
'mode': z.literal("unknown").readonly(),
|
|
333
356
|
'label': z.string().readonly().optional(),
|
|
334
|
-
})
|
|
357
|
+
})])).optional().describe('Direct children in parent catalog event order, excluding fork-inherited facts.'),
|
|
335
358
|
'subagentTiming': z.object({
|
|
336
|
-
'settledMs': z.number(),
|
|
359
|
+
'settledMs': z.number().describe('Milliseconds accumulated across completed turns after the child\'s own descriptor.'),
|
|
337
360
|
'active': z.object({
|
|
338
|
-
'since': z.number(),
|
|
339
|
-
'through': z.number(),
|
|
340
|
-
}).optional(),
|
|
341
|
-
'lastTurnCompleted': z.boolean().optional(),
|
|
342
|
-
}).optional(),
|
|
361
|
+
'since': z.number().describe('Start of the open turn.'),
|
|
362
|
+
'through': z.number().describe('Latest event time folded into this projection cut.'),
|
|
363
|
+
}).optional().describe('Same-cut bounds of the currently open turn, when one has not reached `turn/end`.'),
|
|
364
|
+
'lastTurnCompleted': z.boolean().optional().describe('Whether the latest closed turn after the child\'s own descriptor completed normally; absent while a turn is open or before one closes.'),
|
|
365
|
+
}).optional().describe('Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session.'),
|
|
343
366
|
'subagent': z.union([z.literal(null), z.object({
|
|
344
|
-
'mode': z.literal("one-shot"),
|
|
345
|
-
'label': z.string().optional(),
|
|
346
|
-
'seq': z.
|
|
367
|
+
'mode': z.literal("one-shot").describe('A terminal one-shot child.'),
|
|
368
|
+
'label': z.string().optional().describe('Optional durable creation label from the child\'s descriptor.'),
|
|
369
|
+
'seq': z.number().describe('Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child\'s OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed\'s replayed ancestor descriptor.'),
|
|
347
370
|
}), z.object({
|
|
348
|
-
'mode': z.literal("continuable"),
|
|
349
|
-
'label': z.string(),
|
|
350
|
-
'seq': z.
|
|
351
|
-
})]).optional(),
|
|
371
|
+
'mode': z.literal("continuable").describe('A resumable conversation.'),
|
|
372
|
+
'label': z.string().describe('Durable creation label from the child\'s descriptor.'),
|
|
373
|
+
'seq': z.number().describe('Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof.'),
|
|
374
|
+
})]).optional().describe('Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional.'),
|
|
352
375
|
'tokenUsage': z.object({
|
|
353
376
|
'uncachedInputTokens': z.number(),
|
|
354
377
|
'outputTokens': z.number(),
|
|
355
378
|
'cacheReadTokens': z.number(),
|
|
356
379
|
'cacheWriteTokens': z.number(),
|
|
357
|
-
}).optional(),
|
|
380
|
+
}).optional().describe('Provider-reported usage accumulated across the complete durable log.'),
|
|
358
381
|
'contextPressure': z.object({
|
|
359
|
-
'pressureTokens': z.number().optional(),
|
|
360
|
-
'projectedTokens': z.number().optional(),
|
|
361
|
-
'contextWindow': z.number().optional(),
|
|
362
|
-
}).optional(),
|
|
382
|
+
'pressureTokens': z.number().optional().describe('Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage.'),
|
|
383
|
+
'projectedTokens': z.number().optional().describe('What the NEXT request\'s prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage.'),
|
|
384
|
+
'contextWindow': z.number().optional().describe('Newest recorded route capacity; absent when no adapter advertised one.'),
|
|
385
|
+
}).optional().describe('Newest request pressure paired with the newest known route capacity.'),
|
|
363
386
|
'contextBreakdown': z.object({
|
|
364
|
-
'systemTokens': z.number(),
|
|
365
|
-
'toolsTokens': z.number(),
|
|
366
|
-
'messageTokens': z.number(),
|
|
367
|
-
}).optional(),
|
|
387
|
+
'systemTokens': z.number().describe('Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists.'),
|
|
388
|
+
'toolsTokens': z.number().describe('Heuristic tokens of the newest request envelope\'s tool schemas; 0 before any request.'),
|
|
389
|
+
'messageTokens': z.number().describe('Heuristic tokens of every other visible surface node, including superseded system prompts.'),
|
|
390
|
+
}).optional().describe('Heuristic system/tools/message composition of the next request.'),
|
|
391
|
+
'agentTeam': z.object({
|
|
392
|
+
'members': z.array(z.object({
|
|
393
|
+
'id': z.string().readonly(),
|
|
394
|
+
'name': z.string().readonly(),
|
|
395
|
+
'role': z.union([z.literal("lead"), z.literal("teammate")]).readonly(),
|
|
396
|
+
'phase': z.union([z.literal("failed"), z.literal("provisioning"), z.literal("active")]).readonly().describe('Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status.'),
|
|
397
|
+
'error': z.string().readonly().optional(),
|
|
398
|
+
})).readonly(),
|
|
399
|
+
'tasks': z.array(z.object({
|
|
400
|
+
'id': z.string().readonly(),
|
|
401
|
+
'revision': z.number().readonly(),
|
|
402
|
+
'subject': z.string().readonly(),
|
|
403
|
+
'description': z.string().readonly(),
|
|
404
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress"), z.literal("deleted")]).readonly(),
|
|
405
|
+
'blockedBy': z.array(z.string()).readonly(),
|
|
406
|
+
'writeScopes': z.array(z.string()).readonly(),
|
|
407
|
+
'ownerName': z.string().readonly().optional(),
|
|
408
|
+
'ready': z.boolean().readonly(),
|
|
409
|
+
'writeScopeWarnings': z.array(z.string()).readonly(),
|
|
410
|
+
})).readonly(),
|
|
411
|
+
'failure': z.string().readonly().optional(),
|
|
412
|
+
}).optional().describe('Durable roster and non-deleted task board of the Team rooted at the projected Session.'),
|
|
368
413
|
'userQuestions': z.object({
|
|
369
414
|
'active': z.array(z.object({
|
|
370
|
-
'callId': z.
|
|
415
|
+
'callId': z.string().readonly(),
|
|
371
416
|
'questions': z.array(z.object({
|
|
372
|
-
'id': z.string(),
|
|
373
|
-
'question': z.string(),
|
|
374
|
-
'detail': z.string().optional(),
|
|
375
|
-
'header': z.string().optional(),
|
|
417
|
+
'id': z.string().describe('Stable caller-provided question id, echoed in the answer.'),
|
|
418
|
+
'question': z.string().describe('The question to display.'),
|
|
419
|
+
'detail': z.string().optional().describe('Optional supporting detail rendered with the question but kept out of option labels.'),
|
|
420
|
+
'header': z.string().optional().describe('Optional short heading/group label.'),
|
|
376
421
|
'options': z.array(z.object({
|
|
377
|
-
'label': z.string(),
|
|
378
|
-
'description': z.string().optional(),
|
|
379
|
-
})).optional(),
|
|
380
|
-
'multiSelect': z.boolean().optional(),
|
|
422
|
+
'label': z.string().describe('User-facing label.'),
|
|
423
|
+
'description': z.string().optional().describe('Optional extra context rendered by capable UIs.'),
|
|
424
|
+
})).optional().describe('Optional choices the UI can render as a menu.'),
|
|
425
|
+
'multiSelect': z.boolean().optional().describe('Whether more than one option may be selected. Defaults to single-select.'),
|
|
381
426
|
'intent': z.object({
|
|
382
|
-
'kind': z.literal("plan-review"),
|
|
383
|
-
'approve': z.string(),
|
|
384
|
-
'callId': z.
|
|
385
|
-
}).optional(),
|
|
427
|
+
'kind': z.literal("plan-review").describe('A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it.'),
|
|
428
|
+
'approve': z.string().describe('The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`.'),
|
|
429
|
+
'callId': z.string().optional().describe('Logged tool invocation whose arguments contain the reviewed plan.'),
|
|
430
|
+
}).optional().describe('Optional presentation intent for capable UIs; absent asks for the generic option list.'),
|
|
386
431
|
})).readonly(),
|
|
387
432
|
'state': z.union([z.literal("open"), z.literal("continued")]).readonly(),
|
|
388
|
-
})).readonly(),
|
|
433
|
+
})).readonly().describe('Calls that can still take an answer, in ask order.'),
|
|
389
434
|
'settled': z.array(z.object({
|
|
390
|
-
'callId': z.
|
|
435
|
+
'callId': z.string().readonly().describe('The settled call.'),
|
|
391
436
|
'answers': z.array(z.object({
|
|
392
|
-
'id': z.string(),
|
|
393
|
-
'selected': z.array(z.string()),
|
|
394
|
-
'custom': z.string().optional(),
|
|
395
|
-
})).readonly(),
|
|
396
|
-
})).readonly(),
|
|
397
|
-
}).optional(),
|
|
437
|
+
'id': z.string().describe('The answered question id.'),
|
|
438
|
+
'selected': z.array(z.string()).describe('Selected option labels. May accompany custom text for a multi-select question.'),
|
|
439
|
+
'custom': z.string().optional().describe('Optional free-text "Other" answer.'),
|
|
440
|
+
})).readonly().describe('The recorded batch, one entry per question; empty when the late reply carried none.'),
|
|
441
|
+
})).readonly().describe('Calls an answer settled, in settlement order.'),
|
|
442
|
+
}).optional().describe('Timed questions that remain answerable in this Session, and the ones a late reply settled.'),
|
|
398
443
|
'goal': z.union([z.literal(null), z.object({
|
|
399
444
|
'goal': z.object({
|
|
400
|
-
'objective': z.string().readonly(),
|
|
401
|
-
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly(),
|
|
445
|
+
'objective': z.string().readonly().describe('Human-requested completion objective.'),
|
|
446
|
+
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly().describe('Durable lifecycle phase.'),
|
|
402
447
|
'blockedReason': z.object({
|
|
403
|
-
'code': z.string().readonly(),
|
|
404
|
-
'message': z.string().readonly(),
|
|
405
|
-
}).readonly().optional(),
|
|
406
|
-
'maxGoalRounds': z.number().readonly(),
|
|
407
|
-
'id': z.
|
|
408
|
-
'revision': z.number().readonly(),
|
|
409
|
-
}).readonly(),
|
|
410
|
-
'roundsStarted': z.number().readonly(),
|
|
411
|
-
'createdAt': z.number().readonly(),
|
|
412
|
-
'updatedAt': z.number().readonly(),
|
|
413
|
-
})]).optional(),
|
|
414
|
-
|
|
448
|
+
'code': z.string().readonly().describe('Stable lower-kebab-case classification chosen by the blocking policy.'),
|
|
449
|
+
'message': z.string().readonly().describe('Non-empty explanation shown to humans and models.'),
|
|
450
|
+
}).readonly().optional().describe('Present exactly while `phase` is `blocked`.'),
|
|
451
|
+
'maxGoalRounds': z.number().readonly().describe('Total admitted goal-round cap.'),
|
|
452
|
+
'id': z.string().readonly().describe('Stable goal identity.'),
|
|
453
|
+
'revision': z.number().readonly().describe('Positive revision; every durable mutation increments it.'),
|
|
454
|
+
}).readonly().describe('Current durable goal snapshot (the CAS ref for mutations rides on it).'),
|
|
455
|
+
'roundsStarted': z.number().readonly().describe('Highest admitted round number for this goal.'),
|
|
456
|
+
'createdAt': z.number().readonly().describe('Epoch milliseconds of the create mutation.'),
|
|
457
|
+
'updatedAt': z.number().readonly().describe('Epoch milliseconds of the latest mutation.'),
|
|
458
|
+
})]).optional().describe('The session\'s current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`.'),
|
|
459
|
+
'plan': z.object({
|
|
460
|
+
'active': z.boolean(),
|
|
461
|
+
'pending': z.boolean(),
|
|
462
|
+
}).optional().describe('Plan collaboration state folded from the plan command lifecycle and `plan/mode` events.'),
|
|
463
|
+
}), z.record(z.string(), z.json()).readonly()).readonly().describe('Provider-validated values; omitted keys are absent capabilities at this cut.'),
|
|
415
464
|
}).readonly(),
|
|
416
465
|
'assistantStream': z.object({
|
|
417
466
|
'revision': z.number().readonly(),
|
|
418
467
|
'activeAttempt': z.object({
|
|
419
|
-
'attemptId': z.
|
|
420
|
-
'startedAfterSeq': z.union([z.
|
|
468
|
+
'attemptId': z.string().readonly(),
|
|
469
|
+
'startedAfterSeq': z.union([z.number(), z.literal(-1)]).readonly().describe('Last durable Session seq observed when this attempt started.'),
|
|
421
470
|
'turn': z.number().readonly(),
|
|
422
471
|
'step': z.number().readonly(),
|
|
423
|
-
'nextIndex': z.number().readonly(),
|
|
424
|
-
'stream': z.array(z.
|
|
472
|
+
'nextIndex': z.number().readonly().describe('Dense position expected for the next live chunk frame.'),
|
|
473
|
+
'stream': z.array(z.json()).readonly().describe('Compact detached stream accumulated at this opening revision.'),
|
|
425
474
|
}).readonly().optional(),
|
|
426
475
|
}).readonly().optional(),
|
|
427
476
|
}), z.object({
|
|
428
477
|
'type': z.literal("assistant-stream").readonly(),
|
|
429
478
|
'frame': z.union([z.object({
|
|
430
479
|
'type': z.literal("start").readonly(),
|
|
431
|
-
'attemptId': z.
|
|
480
|
+
'attemptId': z.string().readonly(),
|
|
432
481
|
'revision': z.number().readonly(),
|
|
433
|
-
'startedAfterSeq': z.union([z.
|
|
482
|
+
'startedAfterSeq': z.union([z.number(), z.literal(-1)]).readonly(),
|
|
434
483
|
'turn': z.number().readonly(),
|
|
435
484
|
'step': z.number().readonly(),
|
|
436
485
|
}), z.object({
|
|
437
486
|
'type': z.literal("chunk").readonly(),
|
|
438
|
-
'attemptId': z.
|
|
487
|
+
'attemptId': z.string().readonly(),
|
|
439
488
|
'revision': z.number().readonly(),
|
|
440
489
|
'index': z.number().readonly(),
|
|
441
490
|
'time': z.number().readonly(),
|
|
442
|
-
'chunk': z.
|
|
491
|
+
'chunk': z.json().readonly(),
|
|
443
492
|
}), z.object({
|
|
444
493
|
'type': z.literal("end").readonly(),
|
|
445
|
-
'attemptId': z.
|
|
494
|
+
'attemptId': z.string().readonly(),
|
|
446
495
|
'revision': z.number().readonly(),
|
|
447
|
-
'index': z.number().readonly(),
|
|
496
|
+
'index': z.number().readonly().describe('Number of chunk frames represented by this terminal marker.'),
|
|
448
497
|
'outcome': z.union([z.object({
|
|
449
498
|
'kind': z.literal("committed").readonly(),
|
|
450
499
|
'eventType': z.union([z.literal("assistant/message"), z.literal("assistant/attempt")]).readonly(),
|
|
@@ -456,12 +505,13 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
|
|
|
456
505
|
})]))
|
|
457
506
|
let _deepseek_ai_dsh_api_session_controller_session_fork_parameter_0$schema$value
|
|
458
507
|
const _deepseek_ai_dsh_api_session_controller_session_fork_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_fork_parameter_0$schema$value ??= z.object({
|
|
459
|
-
'sessionId': z.
|
|
460
|
-
'atSeq': z.number().readonly().optional(),
|
|
508
|
+
'sessionId': z.string().readonly(),
|
|
509
|
+
'atSeq': z.number().readonly().optional().describe('Exact inclusive source event seq; omission selects the latest completed-turn prefix.'),
|
|
510
|
+
'allowMigration': z.boolean().readonly().optional().describe('False asks the Host to check for required migration before forking. Defaults to true.'),
|
|
461
511
|
}))
|
|
462
512
|
let _deepseek_ai_dsh_api_session_controller_session_fork_result$schema$value
|
|
463
513
|
const _deepseek_ai_dsh_api_session_controller_session_fork_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_fork_result$schema$value ??= z.object({
|
|
464
|
-
'sessionId': z.
|
|
514
|
+
'sessionId': z.string().readonly(),
|
|
465
515
|
}))
|
|
466
516
|
let _deepseek_ai_dsh_api_session_controller_session_initializeDefaultModel_result$schema$value
|
|
467
517
|
const _deepseek_ai_dsh_api_session_controller_session_initializeDefaultModel_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_initializeDefaultModel_result$schema$value ??= z.void())
|
|
@@ -472,154 +522,184 @@ const _deepseek_ai_dsh_api_session_controller_session_list_parameter_0$schema =
|
|
|
472
522
|
let _deepseek_ai_dsh_api_session_controller_session_list_result$schema$value
|
|
473
523
|
const _deepseek_ai_dsh_api_session_controller_session_list_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_list_result$schema$value ??= z.object({
|
|
474
524
|
'items': z.array(z.object({
|
|
475
|
-
'agentAvailable': z.boolean().readonly(),
|
|
476
|
-
'
|
|
525
|
+
'agentAvailable': z.boolean().readonly().describe('Whether this Session currently owns a live Agent.'),
|
|
526
|
+
'formatStatus': z.union([z.literal("current"), z.literal("migration-required")]).readonly().optional().describe('Current for attached Sessions; otherwise the persistence format status when reported.'),
|
|
527
|
+
'sessionId': z.string().readonly(),
|
|
477
528
|
'updatedAt': z.number().readonly(),
|
|
478
529
|
'running': z.boolean().readonly(),
|
|
479
530
|
'blank': z.boolean().readonly(),
|
|
480
|
-
'parentSessionId': z.
|
|
531
|
+
'parentSessionId': z.string().readonly().optional(),
|
|
481
532
|
'origin': z.literal("subagent").readonly().optional(),
|
|
482
533
|
'cwd': z.string().readonly().optional(),
|
|
483
534
|
'projections': z.object({
|
|
484
|
-
'kind': z.union([z.literal("cached"), z.literal("sequenced")]).readonly(),
|
|
485
|
-
'asOfSeq': z.number().readonly(),
|
|
535
|
+
'kind': z.union([z.literal("cached"), z.literal("sequenced")]).readonly().describe('`sequenced`: the Host\'s live registry produced the block for an attached Session, so `asOfSeq` is comparable with baselines and frames of the same connection. `cached`: a header-only listing viewed the block from the persisted projection cache, so `asOfSeq` is the stored record\'s own watermark and must not be compared with the connected Session\'s values.'),
|
|
536
|
+
'asOfSeq': z.number().readonly().describe('Watermark of the block in the sequence space named by `kind`.'),
|
|
486
537
|
'values': z.intersection(z.object({
|
|
487
538
|
'inbox': z.object({
|
|
488
|
-
'next-turn': z.array(z.
|
|
489
|
-
'next-step': z.array(z.
|
|
490
|
-
}).optional(),
|
|
491
|
-
'
|
|
492
|
-
'
|
|
539
|
+
'next-turn': z.array(z.json()).readonly(),
|
|
540
|
+
'next-step': z.array(z.json()).readonly(),
|
|
541
|
+
}).optional().describe('Pending agent input reconstructed from durable inbox splices.'),
|
|
542
|
+
'workingDirectory': z.union([z.literal(null), z.string()]).optional().describe('Recorded current directory for Session observations, or null when none is recorded.'),
|
|
543
|
+
'agentPreset': z.union([z.literal(null), z.string()]).optional().describe('Preset the Session runs, or null when the deployment composes none.'),
|
|
544
|
+
'title': z.union([z.literal(null), z.string()]).optional().describe('The session\'s current normalized title — the latest `session/title` event\'s text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume.'),
|
|
493
545
|
'todos': z.union([z.literal(null), z.array(z.object({
|
|
494
|
-
'content': z.string(),
|
|
495
|
-
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
|
|
496
|
-
}))]).optional(),
|
|
546
|
+
'content': z.string().describe('What this task is — a short imperative line shown in the UI.'),
|
|
547
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]).describe('Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several.'),
|
|
548
|
+
}))]).optional().describe('The agent\'s current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins.'),
|
|
497
549
|
'sessionListMetadata': z.object({
|
|
498
|
-
'blank': z.boolean().readonly(),
|
|
499
|
-
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly(),
|
|
500
|
-
}).optional(),
|
|
550
|
+
'blank': z.boolean().readonly().describe('Whether the folded prefix contains no turn.'),
|
|
551
|
+
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly().describe('Latest human-authored prompt time in the folded prefix.'),
|
|
552
|
+
}).optional().describe('Persisted facts used to summarize a Session without activating it.'),
|
|
501
553
|
'imageLimits': z.object({
|
|
502
554
|
'maxImageBytes': z.number(),
|
|
503
555
|
'maxImagesPerMessage': z.number(),
|
|
504
556
|
'maxMessageImageBytes': z.number(),
|
|
505
557
|
'maxImagePixels': z.number(),
|
|
506
|
-
'maxImageDimension': z.number(),
|
|
558
|
+
'maxImageDimension': z.number().describe('Maximum intrinsic width and maximum intrinsic height in pixels for one image.'),
|
|
507
559
|
'mediaTypes': z.array(z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")])),
|
|
508
|
-
}).optional(),
|
|
560
|
+
}).optional().describe('Image-intake limits enforced by the Session prompt endpoint.'),
|
|
509
561
|
'modelSelection': z.object({
|
|
510
562
|
'lastUsed': z.union([z.literal(null), z.object({
|
|
511
563
|
'provider': z.string().readonly(),
|
|
512
564
|
'model': z.string().readonly(),
|
|
513
565
|
'reasoningEffort': z.string().readonly().optional(),
|
|
514
|
-
})]).readonly(),
|
|
566
|
+
})]).readonly().describe('Selection consumed by the latest recorded model request.'),
|
|
515
567
|
'next': z.union([z.literal(null), z.object({
|
|
516
568
|
'provider': z.string().readonly(),
|
|
517
569
|
'model': z.string().readonly(),
|
|
518
570
|
'reasoningEffort': z.string().readonly().optional(),
|
|
519
|
-
})]).readonly(),
|
|
520
|
-
}).optional(),
|
|
571
|
+
})]).readonly().describe('Selection the next request should use, falling back to {@link lastUsed}.'),
|
|
572
|
+
}).optional().describe('Durable model selection already used and selected for the next request.'),
|
|
521
573
|
'permissions': z.object({
|
|
522
|
-
'currentValue': z.string(),
|
|
523
|
-
}).optional(),
|
|
524
|
-
'subagentCatalog': z.array(z.union([z.
|
|
525
|
-
'id': z.
|
|
574
|
+
'currentValue': z.string().describe('The effective current value: a configured preset key, `auto`, or `custom`.'),
|
|
575
|
+
}).optional().describe('The session\'s current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control.'),
|
|
576
|
+
'subagentCatalog': z.array(z.union([z.object({
|
|
577
|
+
'id': z.string().readonly(),
|
|
526
578
|
'createdAt': z.number().readonly(),
|
|
527
|
-
}), z.object({
|
|
528
579
|
'mode': z.literal("one-shot").readonly(),
|
|
529
580
|
'label': z.string().readonly().optional(),
|
|
530
|
-
})
|
|
531
|
-
'id': z.
|
|
581
|
+
}), z.object({
|
|
582
|
+
'id': z.string().readonly(),
|
|
532
583
|
'createdAt': z.number().readonly(),
|
|
584
|
+
'mode': z.literal("external").readonly(),
|
|
585
|
+
'label': z.string().readonly().optional(),
|
|
533
586
|
}), z.object({
|
|
587
|
+
'id': z.string().readonly(),
|
|
588
|
+
'createdAt': z.number().readonly(),
|
|
534
589
|
'mode': z.literal("continuable").readonly(),
|
|
535
590
|
'label': z.string().readonly(),
|
|
536
|
-
})), z.intersection(z.object({
|
|
537
|
-
'id': z.intersection(z.string(), z.unknown()).readonly(),
|
|
538
|
-
'createdAt': z.number().readonly(),
|
|
539
591
|
}), z.object({
|
|
592
|
+
'id': z.string().readonly(),
|
|
593
|
+
'createdAt': z.number().readonly(),
|
|
540
594
|
'mode': z.literal("unknown").readonly(),
|
|
541
595
|
'label': z.string().readonly().optional(),
|
|
542
|
-
})
|
|
596
|
+
})])).optional().describe('Direct children in parent catalog event order, excluding fork-inherited facts.'),
|
|
543
597
|
'subagentTiming': z.object({
|
|
544
|
-
'settledMs': z.number(),
|
|
598
|
+
'settledMs': z.number().describe('Milliseconds accumulated across completed turns after the child\'s own descriptor.'),
|
|
545
599
|
'active': z.object({
|
|
546
|
-
'since': z.number(),
|
|
547
|
-
'through': z.number(),
|
|
548
|
-
}).optional(),
|
|
549
|
-
'lastTurnCompleted': z.boolean().optional(),
|
|
550
|
-
}).optional(),
|
|
600
|
+
'since': z.number().describe('Start of the open turn.'),
|
|
601
|
+
'through': z.number().describe('Latest event time folded into this projection cut.'),
|
|
602
|
+
}).optional().describe('Same-cut bounds of the currently open turn, when one has not reached `turn/end`.'),
|
|
603
|
+
'lastTurnCompleted': z.boolean().optional().describe('Whether the latest closed turn after the child\'s own descriptor completed normally; absent while a turn is open or before one closes.'),
|
|
604
|
+
}).optional().describe('Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session.'),
|
|
551
605
|
'subagent': z.union([z.literal(null), z.object({
|
|
552
|
-
'mode': z.literal("one-shot"),
|
|
553
|
-
'label': z.string().optional(),
|
|
554
|
-
'seq': z.
|
|
606
|
+
'mode': z.literal("one-shot").describe('A terminal one-shot child.'),
|
|
607
|
+
'label': z.string().optional().describe('Optional durable creation label from the child\'s descriptor.'),
|
|
608
|
+
'seq': z.number().describe('Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child\'s OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed\'s replayed ancestor descriptor.'),
|
|
555
609
|
}), z.object({
|
|
556
|
-
'mode': z.literal("continuable"),
|
|
557
|
-
'label': z.string(),
|
|
558
|
-
'seq': z.
|
|
559
|
-
})]).optional(),
|
|
610
|
+
'mode': z.literal("continuable").describe('A resumable conversation.'),
|
|
611
|
+
'label': z.string().describe('Durable creation label from the child\'s descriptor.'),
|
|
612
|
+
'seq': z.number().describe('Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof.'),
|
|
613
|
+
})]).optional().describe('Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional.'),
|
|
560
614
|
'tokenUsage': z.object({
|
|
561
615
|
'uncachedInputTokens': z.number(),
|
|
562
616
|
'outputTokens': z.number(),
|
|
563
617
|
'cacheReadTokens': z.number(),
|
|
564
618
|
'cacheWriteTokens': z.number(),
|
|
565
|
-
}).optional(),
|
|
619
|
+
}).optional().describe('Provider-reported usage accumulated across the complete durable log.'),
|
|
566
620
|
'contextPressure': z.object({
|
|
567
|
-
'pressureTokens': z.number().optional(),
|
|
568
|
-
'projectedTokens': z.number().optional(),
|
|
569
|
-
'contextWindow': z.number().optional(),
|
|
570
|
-
}).optional(),
|
|
621
|
+
'pressureTokens': z.number().optional().describe('Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage.'),
|
|
622
|
+
'projectedTokens': z.number().optional().describe('What the NEXT request\'s prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage.'),
|
|
623
|
+
'contextWindow': z.number().optional().describe('Newest recorded route capacity; absent when no adapter advertised one.'),
|
|
624
|
+
}).optional().describe('Newest request pressure paired with the newest known route capacity.'),
|
|
571
625
|
'contextBreakdown': z.object({
|
|
572
|
-
'systemTokens': z.number(),
|
|
573
|
-
'toolsTokens': z.number(),
|
|
574
|
-
'messageTokens': z.number(),
|
|
575
|
-
}).optional(),
|
|
626
|
+
'systemTokens': z.number().describe('Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists.'),
|
|
627
|
+
'toolsTokens': z.number().describe('Heuristic tokens of the newest request envelope\'s tool schemas; 0 before any request.'),
|
|
628
|
+
'messageTokens': z.number().describe('Heuristic tokens of every other visible surface node, including superseded system prompts.'),
|
|
629
|
+
}).optional().describe('Heuristic system/tools/message composition of the next request.'),
|
|
630
|
+
'agentTeam': z.object({
|
|
631
|
+
'members': z.array(z.object({
|
|
632
|
+
'id': z.string().readonly(),
|
|
633
|
+
'name': z.string().readonly(),
|
|
634
|
+
'role': z.union([z.literal("lead"), z.literal("teammate")]).readonly(),
|
|
635
|
+
'phase': z.union([z.literal("failed"), z.literal("provisioning"), z.literal("active")]).readonly().describe('Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status.'),
|
|
636
|
+
'error': z.string().readonly().optional(),
|
|
637
|
+
})).readonly(),
|
|
638
|
+
'tasks': z.array(z.object({
|
|
639
|
+
'id': z.string().readonly(),
|
|
640
|
+
'revision': z.number().readonly(),
|
|
641
|
+
'subject': z.string().readonly(),
|
|
642
|
+
'description': z.string().readonly(),
|
|
643
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress"), z.literal("deleted")]).readonly(),
|
|
644
|
+
'blockedBy': z.array(z.string()).readonly(),
|
|
645
|
+
'writeScopes': z.array(z.string()).readonly(),
|
|
646
|
+
'ownerName': z.string().readonly().optional(),
|
|
647
|
+
'ready': z.boolean().readonly(),
|
|
648
|
+
'writeScopeWarnings': z.array(z.string()).readonly(),
|
|
649
|
+
})).readonly(),
|
|
650
|
+
'failure': z.string().readonly().optional(),
|
|
651
|
+
}).optional().describe('Durable roster and non-deleted task board of the Team rooted at the projected Session.'),
|
|
576
652
|
'userQuestions': z.object({
|
|
577
653
|
'active': z.array(z.object({
|
|
578
|
-
'callId': z.
|
|
654
|
+
'callId': z.string().readonly(),
|
|
579
655
|
'questions': z.array(z.object({
|
|
580
|
-
'id': z.string(),
|
|
581
|
-
'question': z.string(),
|
|
582
|
-
'detail': z.string().optional(),
|
|
583
|
-
'header': z.string().optional(),
|
|
656
|
+
'id': z.string().describe('Stable caller-provided question id, echoed in the answer.'),
|
|
657
|
+
'question': z.string().describe('The question to display.'),
|
|
658
|
+
'detail': z.string().optional().describe('Optional supporting detail rendered with the question but kept out of option labels.'),
|
|
659
|
+
'header': z.string().optional().describe('Optional short heading/group label.'),
|
|
584
660
|
'options': z.array(z.object({
|
|
585
|
-
'label': z.string(),
|
|
586
|
-
'description': z.string().optional(),
|
|
587
|
-
})).optional(),
|
|
588
|
-
'multiSelect': z.boolean().optional(),
|
|
661
|
+
'label': z.string().describe('User-facing label.'),
|
|
662
|
+
'description': z.string().optional().describe('Optional extra context rendered by capable UIs.'),
|
|
663
|
+
})).optional().describe('Optional choices the UI can render as a menu.'),
|
|
664
|
+
'multiSelect': z.boolean().optional().describe('Whether more than one option may be selected. Defaults to single-select.'),
|
|
589
665
|
'intent': z.object({
|
|
590
|
-
'kind': z.literal("plan-review"),
|
|
591
|
-
'approve': z.string(),
|
|
592
|
-
'callId': z.
|
|
593
|
-
}).optional(),
|
|
666
|
+
'kind': z.literal("plan-review").describe('A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it.'),
|
|
667
|
+
'approve': z.string().describe('The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`.'),
|
|
668
|
+
'callId': z.string().optional().describe('Logged tool invocation whose arguments contain the reviewed plan.'),
|
|
669
|
+
}).optional().describe('Optional presentation intent for capable UIs; absent asks for the generic option list.'),
|
|
594
670
|
})).readonly(),
|
|
595
671
|
'state': z.union([z.literal("open"), z.literal("continued")]).readonly(),
|
|
596
|
-
})).readonly(),
|
|
672
|
+
})).readonly().describe('Calls that can still take an answer, in ask order.'),
|
|
597
673
|
'settled': z.array(z.object({
|
|
598
|
-
'callId': z.
|
|
674
|
+
'callId': z.string().readonly().describe('The settled call.'),
|
|
599
675
|
'answers': z.array(z.object({
|
|
600
|
-
'id': z.string(),
|
|
601
|
-
'selected': z.array(z.string()),
|
|
602
|
-
'custom': z.string().optional(),
|
|
603
|
-
})).readonly(),
|
|
604
|
-
})).readonly(),
|
|
605
|
-
}).optional(),
|
|
676
|
+
'id': z.string().describe('The answered question id.'),
|
|
677
|
+
'selected': z.array(z.string()).describe('Selected option labels. May accompany custom text for a multi-select question.'),
|
|
678
|
+
'custom': z.string().optional().describe('Optional free-text "Other" answer.'),
|
|
679
|
+
})).readonly().describe('The recorded batch, one entry per question; empty when the late reply carried none.'),
|
|
680
|
+
})).readonly().describe('Calls an answer settled, in settlement order.'),
|
|
681
|
+
}).optional().describe('Timed questions that remain answerable in this Session, and the ones a late reply settled.'),
|
|
606
682
|
'goal': z.union([z.literal(null), z.object({
|
|
607
683
|
'goal': z.object({
|
|
608
|
-
'objective': z.string().readonly(),
|
|
609
|
-
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly(),
|
|
684
|
+
'objective': z.string().readonly().describe('Human-requested completion objective.'),
|
|
685
|
+
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly().describe('Durable lifecycle phase.'),
|
|
610
686
|
'blockedReason': z.object({
|
|
611
|
-
'code': z.string().readonly(),
|
|
612
|
-
'message': z.string().readonly(),
|
|
613
|
-
}).readonly().optional(),
|
|
614
|
-
'maxGoalRounds': z.number().readonly(),
|
|
615
|
-
'id': z.
|
|
616
|
-
'revision': z.number().readonly(),
|
|
617
|
-
}).readonly(),
|
|
618
|
-
'roundsStarted': z.number().readonly(),
|
|
619
|
-
'createdAt': z.number().readonly(),
|
|
620
|
-
'updatedAt': z.number().readonly(),
|
|
621
|
-
})]).optional(),
|
|
622
|
-
|
|
687
|
+
'code': z.string().readonly().describe('Stable lower-kebab-case classification chosen by the blocking policy.'),
|
|
688
|
+
'message': z.string().readonly().describe('Non-empty explanation shown to humans and models.'),
|
|
689
|
+
}).readonly().optional().describe('Present exactly while `phase` is `blocked`.'),
|
|
690
|
+
'maxGoalRounds': z.number().readonly().describe('Total admitted goal-round cap.'),
|
|
691
|
+
'id': z.string().readonly().describe('Stable goal identity.'),
|
|
692
|
+
'revision': z.number().readonly().describe('Positive revision; every durable mutation increments it.'),
|
|
693
|
+
}).readonly().describe('Current durable goal snapshot (the CAS ref for mutations rides on it).'),
|
|
694
|
+
'roundsStarted': z.number().readonly().describe('Highest admitted round number for this goal.'),
|
|
695
|
+
'createdAt': z.number().readonly().describe('Epoch milliseconds of the create mutation.'),
|
|
696
|
+
'updatedAt': z.number().readonly().describe('Epoch milliseconds of the latest mutation.'),
|
|
697
|
+
})]).optional().describe('The session\'s current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`.'),
|
|
698
|
+
'plan': z.object({
|
|
699
|
+
'active': z.boolean(),
|
|
700
|
+
'pending': z.boolean(),
|
|
701
|
+
}).optional().describe('Plan collaboration state folded from the plan command lifecycle and `plan/mode` events.'),
|
|
702
|
+
}), z.record(z.string(), z.json()).readonly()).readonly().describe('Provider-validated values present in the block; omitted keys remain unknown.'),
|
|
623
703
|
}).readonly().optional(),
|
|
624
704
|
})).readonly(),
|
|
625
705
|
}))
|
|
@@ -630,7 +710,7 @@ const _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema
|
|
|
630
710
|
'model': z.string().readonly(),
|
|
631
711
|
'reasoningEffort': z.string().readonly().optional(),
|
|
632
712
|
}).readonly(),
|
|
633
|
-
'routableProviders': z.array(z.string()).readonly(),
|
|
713
|
+
'routableProviders': z.array(z.string()).readonly().describe('Provider routes with at least one currently available catalog model.'),
|
|
634
714
|
'groups': z.array(z.object({
|
|
635
715
|
'id': z.string().readonly(),
|
|
636
716
|
'name': z.string().readonly(),
|
|
@@ -656,9 +736,9 @@ const _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema
|
|
|
656
736
|
}))
|
|
657
737
|
let _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema$value
|
|
658
738
|
const _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema$value ??= z.object({
|
|
659
|
-
'action': z.literal("reveal").readonly().optional(),
|
|
660
|
-
'application': z.string().readonly().optional(),
|
|
661
|
-
'path': z.string().readonly(),
|
|
739
|
+
'action': z.literal("reveal").readonly().optional().describe('File-manager navigation when requested; omission uses the default application.'),
|
|
740
|
+
'application': z.string().readonly().optional().describe('Registered application identifier; ignored for reveal. Omission preserves the operating system default.'),
|
|
741
|
+
'path': z.string().readonly().describe('Path after best-effort Session workspace resolution, in Host filesystem syntax.'),
|
|
662
742
|
}))
|
|
663
743
|
let _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_result$schema$value
|
|
664
744
|
const _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_result$schema$value ??= z.object({
|
|
@@ -668,20 +748,20 @@ let _deepseek_ai_dsh_api_session_controller_session_page_parameter_0$schema$valu
|
|
|
668
748
|
const _deepseek_ai_dsh_api_session_controller_session_page_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_page_parameter_0$schema$value ??= z.object({
|
|
669
749
|
'address': z.union([z.object({
|
|
670
750
|
'kind': z.literal("session").readonly(),
|
|
671
|
-
'sessionId': z.
|
|
751
|
+
'sessionId': z.string().readonly(),
|
|
672
752
|
}), z.object({
|
|
673
753
|
'kind': z.literal("subagent").readonly(),
|
|
674
|
-
'parentSessionId': z.
|
|
675
|
-
'childSessionId': z.
|
|
754
|
+
'parentSessionId': z.string().readonly(),
|
|
755
|
+
'childSessionId': z.string().readonly(),
|
|
676
756
|
'mode': z.union([z.literal("one-shot"), z.literal("continuable"), z.literal("unknown")]).readonly(),
|
|
677
757
|
})]).readonly(),
|
|
678
|
-
'throughSeq': z.number().readonly(),
|
|
758
|
+
'throughSeq': z.number().readonly().describe('Inclusive log cut obtained from the corresponding follow opening frame.'),
|
|
679
759
|
'beforeSeq': z.number().readonly().optional(),
|
|
680
760
|
'maxMessages': z.number().readonly().optional(),
|
|
681
761
|
'turnWindow': z.object({
|
|
682
|
-
'minMessages': z.number().readonly(),
|
|
683
|
-
'minTurns': z.number().readonly(),
|
|
684
|
-
}).readonly().optional(),
|
|
762
|
+
'minMessages': z.number().readonly().describe('Minimum append-origin user/assistant messages; must not exceed maxMessages.'),
|
|
763
|
+
'minTurns': z.number().readonly().describe('Minimum Turn starts crossed, including the partial Turn at beforeSeq.'),
|
|
764
|
+
}).readonly().optional().describe('Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins.'),
|
|
685
765
|
}))
|
|
686
766
|
let _deepseek_ai_dsh_api_session_controller_session_page_result$schema$value
|
|
687
767
|
const _deepseek_ai_dsh_api_session_controller_session_page_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_page_result$schema$value ??= z.object({
|
|
@@ -691,163 +771,361 @@ const _deepseek_ai_dsh_api_session_controller_session_page_result$schema = () =>
|
|
|
691
771
|
'type': z.string().readonly(),
|
|
692
772
|
'seq': z.number().readonly(),
|
|
693
773
|
'time': z.number().readonly(),
|
|
694
|
-
'data': z.
|
|
774
|
+
'data': z.json().readonly(),
|
|
695
775
|
'ignorable': z.literal(true).readonly().optional(),
|
|
696
|
-
'sourceEventSeqs': z.
|
|
697
|
-
'surfaceOp': z.
|
|
776
|
+
'sourceEventSeqs': z.json().readonly().optional().describe('Earlier sources on current surface events; opaque JSON on unknown ignorable events.'),
|
|
777
|
+
'surfaceOp': z.json().readonly().optional().describe('Canonical placement on current surface events; opaque JSON on unknown ignorable events.'),
|
|
698
778
|
}).readonly(),
|
|
699
779
|
})).readonly(),
|
|
700
780
|
'hasMore': z.boolean().readonly(),
|
|
701
781
|
}))
|
|
702
782
|
let _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema$value
|
|
703
783
|
const _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema$value ??= z.object({
|
|
704
|
-
'sessionId': z.
|
|
784
|
+
'sessionId': z.string().readonly(),
|
|
705
785
|
}))
|
|
706
786
|
let _deepseek_ai_dsh_api_session_controller_session_projections_result$schema$value
|
|
707
787
|
const _deepseek_ai_dsh_api_session_controller_session_projections_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_projections_result$schema$value ??= z.union([z.literal(null), z.object({
|
|
708
788
|
'asOfSeq': z.number().readonly(),
|
|
709
789
|
'values': z.intersection(z.object({
|
|
710
790
|
'inbox': z.object({
|
|
711
|
-
'next-turn': z.array(z.
|
|
712
|
-
'next-step': z.array(z.
|
|
713
|
-
}).optional(),
|
|
714
|
-
'
|
|
715
|
-
'
|
|
791
|
+
'next-turn': z.array(z.json()).readonly(),
|
|
792
|
+
'next-step': z.array(z.json()).readonly(),
|
|
793
|
+
}).optional().describe('Pending agent input reconstructed from durable inbox splices.'),
|
|
794
|
+
'workingDirectory': z.union([z.literal(null), z.string()]).optional().describe('Recorded current directory for Session observations, or null when none is recorded.'),
|
|
795
|
+
'agentPreset': z.union([z.literal(null), z.string()]).optional().describe('Preset the Session runs, or null when the deployment composes none.'),
|
|
796
|
+
'title': z.union([z.literal(null), z.string()]).optional().describe('The session\'s current normalized title — the latest `session/title` event\'s text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume.'),
|
|
716
797
|
'todos': z.union([z.literal(null), z.array(z.object({
|
|
717
|
-
'content': z.string(),
|
|
718
|
-
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
|
|
719
|
-
}))]).optional(),
|
|
798
|
+
'content': z.string().describe('What this task is — a short imperative line shown in the UI.'),
|
|
799
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]).describe('Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several.'),
|
|
800
|
+
}))]).optional().describe('The agent\'s current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins.'),
|
|
720
801
|
'sessionListMetadata': z.object({
|
|
721
|
-
'blank': z.boolean().readonly(),
|
|
722
|
-
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly(),
|
|
723
|
-
}).optional(),
|
|
802
|
+
'blank': z.boolean().readonly().describe('Whether the folded prefix contains no turn.'),
|
|
803
|
+
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly().describe('Latest human-authored prompt time in the folded prefix.'),
|
|
804
|
+
}).optional().describe('Persisted facts used to summarize a Session without activating it.'),
|
|
724
805
|
'imageLimits': z.object({
|
|
725
806
|
'maxImageBytes': z.number(),
|
|
726
807
|
'maxImagesPerMessage': z.number(),
|
|
727
808
|
'maxMessageImageBytes': z.number(),
|
|
728
809
|
'maxImagePixels': z.number(),
|
|
729
|
-
'maxImageDimension': z.number(),
|
|
810
|
+
'maxImageDimension': z.number().describe('Maximum intrinsic width and maximum intrinsic height in pixels for one image.'),
|
|
730
811
|
'mediaTypes': z.array(z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")])),
|
|
731
|
-
}).optional(),
|
|
812
|
+
}).optional().describe('Image-intake limits enforced by the Session prompt endpoint.'),
|
|
732
813
|
'modelSelection': z.object({
|
|
733
814
|
'lastUsed': z.union([z.literal(null), z.object({
|
|
734
815
|
'provider': z.string().readonly(),
|
|
735
816
|
'model': z.string().readonly(),
|
|
736
817
|
'reasoningEffort': z.string().readonly().optional(),
|
|
737
|
-
})]).readonly(),
|
|
818
|
+
})]).readonly().describe('Selection consumed by the latest recorded model request.'),
|
|
738
819
|
'next': z.union([z.literal(null), z.object({
|
|
739
820
|
'provider': z.string().readonly(),
|
|
740
821
|
'model': z.string().readonly(),
|
|
741
822
|
'reasoningEffort': z.string().readonly().optional(),
|
|
742
|
-
})]).readonly(),
|
|
743
|
-
}).optional(),
|
|
823
|
+
})]).readonly().describe('Selection the next request should use, falling back to {@link lastUsed}.'),
|
|
824
|
+
}).optional().describe('Durable model selection already used and selected for the next request.'),
|
|
744
825
|
'permissions': z.object({
|
|
745
|
-
'currentValue': z.string(),
|
|
746
|
-
}).optional(),
|
|
747
|
-
'subagentCatalog': z.array(z.union([z.
|
|
748
|
-
'id': z.
|
|
826
|
+
'currentValue': z.string().describe('The effective current value: a configured preset key, `auto`, or `custom`.'),
|
|
827
|
+
}).optional().describe('The session\'s current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control.'),
|
|
828
|
+
'subagentCatalog': z.array(z.union([z.object({
|
|
829
|
+
'id': z.string().readonly(),
|
|
749
830
|
'createdAt': z.number().readonly(),
|
|
750
|
-
}), z.object({
|
|
751
831
|
'mode': z.literal("one-shot").readonly(),
|
|
752
832
|
'label': z.string().readonly().optional(),
|
|
753
|
-
})
|
|
754
|
-
'id': z.
|
|
833
|
+
}), z.object({
|
|
834
|
+
'id': z.string().readonly(),
|
|
755
835
|
'createdAt': z.number().readonly(),
|
|
836
|
+
'mode': z.literal("external").readonly(),
|
|
837
|
+
'label': z.string().readonly().optional(),
|
|
756
838
|
}), z.object({
|
|
839
|
+
'id': z.string().readonly(),
|
|
840
|
+
'createdAt': z.number().readonly(),
|
|
757
841
|
'mode': z.literal("continuable").readonly(),
|
|
758
842
|
'label': z.string().readonly(),
|
|
759
|
-
})), z.intersection(z.object({
|
|
760
|
-
'id': z.intersection(z.string(), z.unknown()).readonly(),
|
|
761
|
-
'createdAt': z.number().readonly(),
|
|
762
843
|
}), z.object({
|
|
844
|
+
'id': z.string().readonly(),
|
|
845
|
+
'createdAt': z.number().readonly(),
|
|
763
846
|
'mode': z.literal("unknown").readonly(),
|
|
764
847
|
'label': z.string().readonly().optional(),
|
|
765
|
-
})
|
|
848
|
+
})])).optional().describe('Direct children in parent catalog event order, excluding fork-inherited facts.'),
|
|
766
849
|
'subagentTiming': z.object({
|
|
767
|
-
'settledMs': z.number(),
|
|
850
|
+
'settledMs': z.number().describe('Milliseconds accumulated across completed turns after the child\'s own descriptor.'),
|
|
768
851
|
'active': z.object({
|
|
769
|
-
'since': z.number(),
|
|
770
|
-
'through': z.number(),
|
|
771
|
-
}).optional(),
|
|
772
|
-
'lastTurnCompleted': z.boolean().optional(),
|
|
773
|
-
}).optional(),
|
|
852
|
+
'since': z.number().describe('Start of the open turn.'),
|
|
853
|
+
'through': z.number().describe('Latest event time folded into this projection cut.'),
|
|
854
|
+
}).optional().describe('Same-cut bounds of the currently open turn, when one has not reached `turn/end`.'),
|
|
855
|
+
'lastTurnCompleted': z.boolean().optional().describe('Whether the latest closed turn after the child\'s own descriptor completed normally; absent while a turn is open or before one closes.'),
|
|
856
|
+
}).optional().describe('Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session.'),
|
|
774
857
|
'subagent': z.union([z.literal(null), z.object({
|
|
775
|
-
'mode': z.literal("one-shot"),
|
|
776
|
-
'label': z.string().optional(),
|
|
777
|
-
'seq': z.
|
|
858
|
+
'mode': z.literal("one-shot").describe('A terminal one-shot child.'),
|
|
859
|
+
'label': z.string().optional().describe('Optional durable creation label from the child\'s descriptor.'),
|
|
860
|
+
'seq': z.number().describe('Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child\'s OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed\'s replayed ancestor descriptor.'),
|
|
778
861
|
}), z.object({
|
|
779
|
-
'mode': z.literal("continuable"),
|
|
780
|
-
'label': z.string(),
|
|
781
|
-
'seq': z.
|
|
782
|
-
})]).optional(),
|
|
862
|
+
'mode': z.literal("continuable").describe('A resumable conversation.'),
|
|
863
|
+
'label': z.string().describe('Durable creation label from the child\'s descriptor.'),
|
|
864
|
+
'seq': z.number().describe('Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof.'),
|
|
865
|
+
})]).optional().describe('Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional.'),
|
|
783
866
|
'tokenUsage': z.object({
|
|
784
867
|
'uncachedInputTokens': z.number(),
|
|
785
868
|
'outputTokens': z.number(),
|
|
786
869
|
'cacheReadTokens': z.number(),
|
|
787
870
|
'cacheWriteTokens': z.number(),
|
|
788
|
-
}).optional(),
|
|
871
|
+
}).optional().describe('Provider-reported usage accumulated across the complete durable log.'),
|
|
789
872
|
'contextPressure': z.object({
|
|
790
|
-
'pressureTokens': z.number().optional(),
|
|
791
|
-
'projectedTokens': z.number().optional(),
|
|
792
|
-
'contextWindow': z.number().optional(),
|
|
793
|
-
}).optional(),
|
|
873
|
+
'pressureTokens': z.number().optional().describe('Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage.'),
|
|
874
|
+
'projectedTokens': z.number().optional().describe('What the NEXT request\'s prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage.'),
|
|
875
|
+
'contextWindow': z.number().optional().describe('Newest recorded route capacity; absent when no adapter advertised one.'),
|
|
876
|
+
}).optional().describe('Newest request pressure paired with the newest known route capacity.'),
|
|
794
877
|
'contextBreakdown': z.object({
|
|
795
|
-
'systemTokens': z.number(),
|
|
796
|
-
'toolsTokens': z.number(),
|
|
797
|
-
'messageTokens': z.number(),
|
|
798
|
-
}).optional(),
|
|
878
|
+
'systemTokens': z.number().describe('Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists.'),
|
|
879
|
+
'toolsTokens': z.number().describe('Heuristic tokens of the newest request envelope\'s tool schemas; 0 before any request.'),
|
|
880
|
+
'messageTokens': z.number().describe('Heuristic tokens of every other visible surface node, including superseded system prompts.'),
|
|
881
|
+
}).optional().describe('Heuristic system/tools/message composition of the next request.'),
|
|
882
|
+
'agentTeam': z.object({
|
|
883
|
+
'members': z.array(z.object({
|
|
884
|
+
'id': z.string().readonly(),
|
|
885
|
+
'name': z.string().readonly(),
|
|
886
|
+
'role': z.union([z.literal("lead"), z.literal("teammate")]).readonly(),
|
|
887
|
+
'phase': z.union([z.literal("failed"), z.literal("provisioning"), z.literal("active")]).readonly().describe('Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status.'),
|
|
888
|
+
'error': z.string().readonly().optional(),
|
|
889
|
+
})).readonly(),
|
|
890
|
+
'tasks': z.array(z.object({
|
|
891
|
+
'id': z.string().readonly(),
|
|
892
|
+
'revision': z.number().readonly(),
|
|
893
|
+
'subject': z.string().readonly(),
|
|
894
|
+
'description': z.string().readonly(),
|
|
895
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress"), z.literal("deleted")]).readonly(),
|
|
896
|
+
'blockedBy': z.array(z.string()).readonly(),
|
|
897
|
+
'writeScopes': z.array(z.string()).readonly(),
|
|
898
|
+
'ownerName': z.string().readonly().optional(),
|
|
899
|
+
'ready': z.boolean().readonly(),
|
|
900
|
+
'writeScopeWarnings': z.array(z.string()).readonly(),
|
|
901
|
+
})).readonly(),
|
|
902
|
+
'failure': z.string().readonly().optional(),
|
|
903
|
+
}).optional().describe('Durable roster and non-deleted task board of the Team rooted at the projected Session.'),
|
|
799
904
|
'userQuestions': z.object({
|
|
800
905
|
'active': z.array(z.object({
|
|
801
|
-
'callId': z.
|
|
906
|
+
'callId': z.string().readonly(),
|
|
802
907
|
'questions': z.array(z.object({
|
|
803
|
-
'id': z.string(),
|
|
804
|
-
'question': z.string(),
|
|
805
|
-
'detail': z.string().optional(),
|
|
806
|
-
'header': z.string().optional(),
|
|
908
|
+
'id': z.string().describe('Stable caller-provided question id, echoed in the answer.'),
|
|
909
|
+
'question': z.string().describe('The question to display.'),
|
|
910
|
+
'detail': z.string().optional().describe('Optional supporting detail rendered with the question but kept out of option labels.'),
|
|
911
|
+
'header': z.string().optional().describe('Optional short heading/group label.'),
|
|
807
912
|
'options': z.array(z.object({
|
|
808
|
-
'label': z.string(),
|
|
809
|
-
'description': z.string().optional(),
|
|
810
|
-
})).optional(),
|
|
811
|
-
'multiSelect': z.boolean().optional(),
|
|
913
|
+
'label': z.string().describe('User-facing label.'),
|
|
914
|
+
'description': z.string().optional().describe('Optional extra context rendered by capable UIs.'),
|
|
915
|
+
})).optional().describe('Optional choices the UI can render as a menu.'),
|
|
916
|
+
'multiSelect': z.boolean().optional().describe('Whether more than one option may be selected. Defaults to single-select.'),
|
|
812
917
|
'intent': z.object({
|
|
813
|
-
'kind': z.literal("plan-review"),
|
|
814
|
-
'approve': z.string(),
|
|
815
|
-
'callId': z.
|
|
816
|
-
}).optional(),
|
|
918
|
+
'kind': z.literal("plan-review").describe('A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it.'),
|
|
919
|
+
'approve': z.string().describe('The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`.'),
|
|
920
|
+
'callId': z.string().optional().describe('Logged tool invocation whose arguments contain the reviewed plan.'),
|
|
921
|
+
}).optional().describe('Optional presentation intent for capable UIs; absent asks for the generic option list.'),
|
|
817
922
|
})).readonly(),
|
|
818
923
|
'state': z.union([z.literal("open"), z.literal("continued")]).readonly(),
|
|
819
|
-
})).readonly(),
|
|
924
|
+
})).readonly().describe('Calls that can still take an answer, in ask order.'),
|
|
820
925
|
'settled': z.array(z.object({
|
|
821
|
-
'callId': z.
|
|
926
|
+
'callId': z.string().readonly().describe('The settled call.'),
|
|
822
927
|
'answers': z.array(z.object({
|
|
823
|
-
'id': z.string(),
|
|
824
|
-
'selected': z.array(z.string()),
|
|
825
|
-
'custom': z.string().optional(),
|
|
928
|
+
'id': z.string().describe('The answered question id.'),
|
|
929
|
+
'selected': z.array(z.string()).describe('Selected option labels. May accompany custom text for a multi-select question.'),
|
|
930
|
+
'custom': z.string().optional().describe('Optional free-text "Other" answer.'),
|
|
931
|
+
})).readonly().describe('The recorded batch, one entry per question; empty when the late reply carried none.'),
|
|
932
|
+
})).readonly().describe('Calls an answer settled, in settlement order.'),
|
|
933
|
+
}).optional().describe('Timed questions that remain answerable in this Session, and the ones a late reply settled.'),
|
|
934
|
+
'goal': z.union([z.literal(null), z.object({
|
|
935
|
+
'goal': z.object({
|
|
936
|
+
'objective': z.string().readonly().describe('Human-requested completion objective.'),
|
|
937
|
+
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly().describe('Durable lifecycle phase.'),
|
|
938
|
+
'blockedReason': z.object({
|
|
939
|
+
'code': z.string().readonly().describe('Stable lower-kebab-case classification chosen by the blocking policy.'),
|
|
940
|
+
'message': z.string().readonly().describe('Non-empty explanation shown to humans and models.'),
|
|
941
|
+
}).readonly().optional().describe('Present exactly while `phase` is `blocked`.'),
|
|
942
|
+
'maxGoalRounds': z.number().readonly().describe('Total admitted goal-round cap.'),
|
|
943
|
+
'id': z.string().readonly().describe('Stable goal identity.'),
|
|
944
|
+
'revision': z.number().readonly().describe('Positive revision; every durable mutation increments it.'),
|
|
945
|
+
}).readonly().describe('Current durable goal snapshot (the CAS ref for mutations rides on it).'),
|
|
946
|
+
'roundsStarted': z.number().readonly().describe('Highest admitted round number for this goal.'),
|
|
947
|
+
'createdAt': z.number().readonly().describe('Epoch milliseconds of the create mutation.'),
|
|
948
|
+
'updatedAt': z.number().readonly().describe('Epoch milliseconds of the latest mutation.'),
|
|
949
|
+
})]).optional().describe('The session\'s current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`.'),
|
|
950
|
+
'plan': z.object({
|
|
951
|
+
'active': z.boolean(),
|
|
952
|
+
'pending': z.boolean(),
|
|
953
|
+
}).optional().describe('Plan collaboration state folded from the plan command lifecycle and `plan/mode` events.'),
|
|
954
|
+
}), z.record(z.string(), z.json()).readonly()).readonly().describe('Provider-validated values; omitted keys are absent capabilities at this cut.'),
|
|
955
|
+
'kind': z.literal("sequenced").readonly(),
|
|
956
|
+
}), z.object({
|
|
957
|
+
'kind': z.literal("migration-required").readonly(),
|
|
958
|
+
'values': z.intersection(z.object({
|
|
959
|
+
'inbox': z.object({
|
|
960
|
+
'next-turn': z.array(z.json()).readonly(),
|
|
961
|
+
'next-step': z.array(z.json()).readonly(),
|
|
962
|
+
}).optional().describe('Pending agent input reconstructed from durable inbox splices.'),
|
|
963
|
+
'workingDirectory': z.union([z.literal(null), z.string()]).optional().describe('Recorded current directory for Session observations, or null when none is recorded.'),
|
|
964
|
+
'agentPreset': z.union([z.literal(null), z.string()]).optional().describe('Preset the Session runs, or null when the deployment composes none.'),
|
|
965
|
+
'title': z.union([z.literal(null), z.string()]).optional().describe('The session\'s current normalized title — the latest `session/title` event\'s text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume.'),
|
|
966
|
+
'todos': z.union([z.literal(null), z.array(z.object({
|
|
967
|
+
'content': z.string().describe('What this task is — a short imperative line shown in the UI.'),
|
|
968
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]).describe('Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several.'),
|
|
969
|
+
}))]).optional().describe('The agent\'s current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins.'),
|
|
970
|
+
'sessionListMetadata': z.object({
|
|
971
|
+
'blank': z.boolean().readonly().describe('Whether the folded prefix contains no turn.'),
|
|
972
|
+
'lastPromptAt': z.union([z.literal(null), z.number()]).readonly().describe('Latest human-authored prompt time in the folded prefix.'),
|
|
973
|
+
}).optional().describe('Persisted facts used to summarize a Session without activating it.'),
|
|
974
|
+
'imageLimits': z.object({
|
|
975
|
+
'maxImageBytes': z.number(),
|
|
976
|
+
'maxImagesPerMessage': z.number(),
|
|
977
|
+
'maxMessageImageBytes': z.number(),
|
|
978
|
+
'maxImagePixels': z.number(),
|
|
979
|
+
'maxImageDimension': z.number().describe('Maximum intrinsic width and maximum intrinsic height in pixels for one image.'),
|
|
980
|
+
'mediaTypes': z.array(z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")])),
|
|
981
|
+
}).optional().describe('Image-intake limits enforced by the Session prompt endpoint.'),
|
|
982
|
+
'modelSelection': z.object({
|
|
983
|
+
'lastUsed': z.union([z.literal(null), z.object({
|
|
984
|
+
'provider': z.string().readonly(),
|
|
985
|
+
'model': z.string().readonly(),
|
|
986
|
+
'reasoningEffort': z.string().readonly().optional(),
|
|
987
|
+
})]).readonly().describe('Selection consumed by the latest recorded model request.'),
|
|
988
|
+
'next': z.union([z.literal(null), z.object({
|
|
989
|
+
'provider': z.string().readonly(),
|
|
990
|
+
'model': z.string().readonly(),
|
|
991
|
+
'reasoningEffort': z.string().readonly().optional(),
|
|
992
|
+
})]).readonly().describe('Selection the next request should use, falling back to {@link lastUsed}.'),
|
|
993
|
+
}).optional().describe('Durable model selection already used and selected for the next request.'),
|
|
994
|
+
'permissions': z.object({
|
|
995
|
+
'currentValue': z.string().describe('The effective current value: a configured preset key, `auto`, or `custom`.'),
|
|
996
|
+
}).optional().describe('The session\'s current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control.'),
|
|
997
|
+
'subagentCatalog': z.array(z.union([z.object({
|
|
998
|
+
'id': z.string().readonly(),
|
|
999
|
+
'createdAt': z.number().readonly(),
|
|
1000
|
+
'mode': z.literal("one-shot").readonly(),
|
|
1001
|
+
'label': z.string().readonly().optional(),
|
|
1002
|
+
}), z.object({
|
|
1003
|
+
'id': z.string().readonly(),
|
|
1004
|
+
'createdAt': z.number().readonly(),
|
|
1005
|
+
'mode': z.literal("external").readonly(),
|
|
1006
|
+
'label': z.string().readonly().optional(),
|
|
1007
|
+
}), z.object({
|
|
1008
|
+
'id': z.string().readonly(),
|
|
1009
|
+
'createdAt': z.number().readonly(),
|
|
1010
|
+
'mode': z.literal("continuable").readonly(),
|
|
1011
|
+
'label': z.string().readonly(),
|
|
1012
|
+
}), z.object({
|
|
1013
|
+
'id': z.string().readonly(),
|
|
1014
|
+
'createdAt': z.number().readonly(),
|
|
1015
|
+
'mode': z.literal("unknown").readonly(),
|
|
1016
|
+
'label': z.string().readonly().optional(),
|
|
1017
|
+
})])).optional().describe('Direct children in parent catalog event order, excluding fork-inherited facts.'),
|
|
1018
|
+
'subagentTiming': z.object({
|
|
1019
|
+
'settledMs': z.number().describe('Milliseconds accumulated across completed turns after the child\'s own descriptor.'),
|
|
1020
|
+
'active': z.object({
|
|
1021
|
+
'since': z.number().describe('Start of the open turn.'),
|
|
1022
|
+
'through': z.number().describe('Latest event time folded into this projection cut.'),
|
|
1023
|
+
}).optional().describe('Same-cut bounds of the currently open turn, when one has not reached `turn/end`.'),
|
|
1024
|
+
'lastTurnCompleted': z.boolean().optional().describe('Whether the latest closed turn after the child\'s own descriptor completed normally; absent while a turn is open or before one closes.'),
|
|
1025
|
+
}).optional().describe('Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session.'),
|
|
1026
|
+
'subagent': z.union([z.literal(null), z.object({
|
|
1027
|
+
'mode': z.literal("one-shot").describe('A terminal one-shot child.'),
|
|
1028
|
+
'label': z.string().optional().describe('Optional durable creation label from the child\'s descriptor.'),
|
|
1029
|
+
'seq': z.number().describe('Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child\'s OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed\'s replayed ancestor descriptor.'),
|
|
1030
|
+
}), z.object({
|
|
1031
|
+
'mode': z.literal("continuable").describe('A resumable conversation.'),
|
|
1032
|
+
'label': z.string().describe('Durable creation label from the child\'s descriptor.'),
|
|
1033
|
+
'seq': z.number().describe('Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof.'),
|
|
1034
|
+
})]).optional().describe('Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional.'),
|
|
1035
|
+
'tokenUsage': z.object({
|
|
1036
|
+
'uncachedInputTokens': z.number(),
|
|
1037
|
+
'outputTokens': z.number(),
|
|
1038
|
+
'cacheReadTokens': z.number(),
|
|
1039
|
+
'cacheWriteTokens': z.number(),
|
|
1040
|
+
}).optional().describe('Provider-reported usage accumulated across the complete durable log.'),
|
|
1041
|
+
'contextPressure': z.object({
|
|
1042
|
+
'pressureTokens': z.number().optional().describe('Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage.'),
|
|
1043
|
+
'projectedTokens': z.number().optional().describe('What the NEXT request\'s prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage.'),
|
|
1044
|
+
'contextWindow': z.number().optional().describe('Newest recorded route capacity; absent when no adapter advertised one.'),
|
|
1045
|
+
}).optional().describe('Newest request pressure paired with the newest known route capacity.'),
|
|
1046
|
+
'contextBreakdown': z.object({
|
|
1047
|
+
'systemTokens': z.number().describe('Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists.'),
|
|
1048
|
+
'toolsTokens': z.number().describe('Heuristic tokens of the newest request envelope\'s tool schemas; 0 before any request.'),
|
|
1049
|
+
'messageTokens': z.number().describe('Heuristic tokens of every other visible surface node, including superseded system prompts.'),
|
|
1050
|
+
}).optional().describe('Heuristic system/tools/message composition of the next request.'),
|
|
1051
|
+
'agentTeam': z.object({
|
|
1052
|
+
'members': z.array(z.object({
|
|
1053
|
+
'id': z.string().readonly(),
|
|
1054
|
+
'name': z.string().readonly(),
|
|
1055
|
+
'role': z.union([z.literal("lead"), z.literal("teammate")]).readonly(),
|
|
1056
|
+
'phase': z.union([z.literal("failed"), z.literal("provisioning"), z.literal("active")]).readonly().describe('Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status.'),
|
|
1057
|
+
'error': z.string().readonly().optional(),
|
|
826
1058
|
})).readonly(),
|
|
1059
|
+
'tasks': z.array(z.object({
|
|
1060
|
+
'id': z.string().readonly(),
|
|
1061
|
+
'revision': z.number().readonly(),
|
|
1062
|
+
'subject': z.string().readonly(),
|
|
1063
|
+
'description': z.string().readonly(),
|
|
1064
|
+
'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress"), z.literal("deleted")]).readonly(),
|
|
1065
|
+
'blockedBy': z.array(z.string()).readonly(),
|
|
1066
|
+
'writeScopes': z.array(z.string()).readonly(),
|
|
1067
|
+
'ownerName': z.string().readonly().optional(),
|
|
1068
|
+
'ready': z.boolean().readonly(),
|
|
1069
|
+
'writeScopeWarnings': z.array(z.string()).readonly(),
|
|
827
1070
|
})).readonly(),
|
|
828
|
-
|
|
1071
|
+
'failure': z.string().readonly().optional(),
|
|
1072
|
+
}).optional().describe('Durable roster and non-deleted task board of the Team rooted at the projected Session.'),
|
|
1073
|
+
'userQuestions': z.object({
|
|
1074
|
+
'active': z.array(z.object({
|
|
1075
|
+
'callId': z.string().readonly(),
|
|
1076
|
+
'questions': z.array(z.object({
|
|
1077
|
+
'id': z.string().describe('Stable caller-provided question id, echoed in the answer.'),
|
|
1078
|
+
'question': z.string().describe('The question to display.'),
|
|
1079
|
+
'detail': z.string().optional().describe('Optional supporting detail rendered with the question but kept out of option labels.'),
|
|
1080
|
+
'header': z.string().optional().describe('Optional short heading/group label.'),
|
|
1081
|
+
'options': z.array(z.object({
|
|
1082
|
+
'label': z.string().describe('User-facing label.'),
|
|
1083
|
+
'description': z.string().optional().describe('Optional extra context rendered by capable UIs.'),
|
|
1084
|
+
})).optional().describe('Optional choices the UI can render as a menu.'),
|
|
1085
|
+
'multiSelect': z.boolean().optional().describe('Whether more than one option may be selected. Defaults to single-select.'),
|
|
1086
|
+
'intent': z.object({
|
|
1087
|
+
'kind': z.literal("plan-review").describe('A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it.'),
|
|
1088
|
+
'approve': z.string().describe('The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`.'),
|
|
1089
|
+
'callId': z.string().optional().describe('Logged tool invocation whose arguments contain the reviewed plan.'),
|
|
1090
|
+
}).optional().describe('Optional presentation intent for capable UIs; absent asks for the generic option list.'),
|
|
1091
|
+
})).readonly(),
|
|
1092
|
+
'state': z.union([z.literal("open"), z.literal("continued")]).readonly(),
|
|
1093
|
+
})).readonly().describe('Calls that can still take an answer, in ask order.'),
|
|
1094
|
+
'settled': z.array(z.object({
|
|
1095
|
+
'callId': z.string().readonly().describe('The settled call.'),
|
|
1096
|
+
'answers': z.array(z.object({
|
|
1097
|
+
'id': z.string().describe('The answered question id.'),
|
|
1098
|
+
'selected': z.array(z.string()).describe('Selected option labels. May accompany custom text for a multi-select question.'),
|
|
1099
|
+
'custom': z.string().optional().describe('Optional free-text "Other" answer.'),
|
|
1100
|
+
})).readonly().describe('The recorded batch, one entry per question; empty when the late reply carried none.'),
|
|
1101
|
+
})).readonly().describe('Calls an answer settled, in settlement order.'),
|
|
1102
|
+
}).optional().describe('Timed questions that remain answerable in this Session, and the ones a late reply settled.'),
|
|
829
1103
|
'goal': z.union([z.literal(null), z.object({
|
|
830
1104
|
'goal': z.object({
|
|
831
|
-
'objective': z.string().readonly(),
|
|
832
|
-
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly(),
|
|
1105
|
+
'objective': z.string().readonly().describe('Human-requested completion objective.'),
|
|
1106
|
+
'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly().describe('Durable lifecycle phase.'),
|
|
833
1107
|
'blockedReason': z.object({
|
|
834
|
-
'code': z.string().readonly(),
|
|
835
|
-
'message': z.string().readonly(),
|
|
836
|
-
}).readonly().optional(),
|
|
837
|
-
'maxGoalRounds': z.number().readonly(),
|
|
838
|
-
'id': z.
|
|
839
|
-
'revision': z.number().readonly(),
|
|
840
|
-
}).readonly(),
|
|
841
|
-
'roundsStarted': z.number().readonly(),
|
|
842
|
-
'createdAt': z.number().readonly(),
|
|
843
|
-
'updatedAt': z.number().readonly(),
|
|
844
|
-
})]).optional(),
|
|
845
|
-
|
|
1108
|
+
'code': z.string().readonly().describe('Stable lower-kebab-case classification chosen by the blocking policy.'),
|
|
1109
|
+
'message': z.string().readonly().describe('Non-empty explanation shown to humans and models.'),
|
|
1110
|
+
}).readonly().optional().describe('Present exactly while `phase` is `blocked`.'),
|
|
1111
|
+
'maxGoalRounds': z.number().readonly().describe('Total admitted goal-round cap.'),
|
|
1112
|
+
'id': z.string().readonly().describe('Stable goal identity.'),
|
|
1113
|
+
'revision': z.number().readonly().describe('Positive revision; every durable mutation increments it.'),
|
|
1114
|
+
}).readonly().describe('Current durable goal snapshot (the CAS ref for mutations rides on it).'),
|
|
1115
|
+
'roundsStarted': z.number().readonly().describe('Highest admitted round number for this goal.'),
|
|
1116
|
+
'createdAt': z.number().readonly().describe('Epoch milliseconds of the create mutation.'),
|
|
1117
|
+
'updatedAt': z.number().readonly().describe('Epoch milliseconds of the latest mutation.'),
|
|
1118
|
+
})]).optional().describe('The session\'s current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`.'),
|
|
1119
|
+
'plan': z.object({
|
|
1120
|
+
'active': z.boolean(),
|
|
1121
|
+
'pending': z.boolean(),
|
|
1122
|
+
}).optional().describe('Plan collaboration state folded from the plan command lifecycle and `plan/mode` events.'),
|
|
1123
|
+
}), z.record(z.string(), z.json()).readonly()).readonly(),
|
|
846
1124
|
})]))
|
|
847
1125
|
let _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema$value
|
|
848
1126
|
const _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema$value ??= z.object({
|
|
849
|
-
'requestId': z.
|
|
850
|
-
'sessionId': z.
|
|
1127
|
+
'requestId': z.string().readonly().describe('Client-minted identity persisted on the exact accepted user message.'),
|
|
1128
|
+
'sessionId': z.string().readonly(),
|
|
851
1129
|
'mode': z.union([z.literal("queue"), z.literal("steer")]).readonly(),
|
|
852
1130
|
'content': z.array(z.union([z.object({
|
|
853
1131
|
'type': z.literal("text").readonly(),
|
|
@@ -859,8 +1137,8 @@ const _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema
|
|
|
859
1137
|
'name': z.string().readonly().optional(),
|
|
860
1138
|
}), z.object({
|
|
861
1139
|
'type': z.literal("file").readonly(),
|
|
862
|
-
'receiptId': z.
|
|
863
|
-
})])).readonly(),
|
|
1140
|
+
'receiptId': z.string().readonly(),
|
|
1141
|
+
})])).readonly().describe('At least one non-whitespace text part or attachment.'),
|
|
864
1142
|
'clientTimeZone': z.string().readonly().optional(),
|
|
865
1143
|
}))
|
|
866
1144
|
let _deepseek_ai_dsh_api_session_controller_session_prompt_result$schema$value
|
|
@@ -869,7 +1147,7 @@ const _deepseek_ai_dsh_api_session_controller_session_prompt_result$schema = ()
|
|
|
869
1147
|
}))
|
|
870
1148
|
let _deepseek_ai_dsh_api_session_controller_session_rename_parameter_0$schema$value
|
|
871
1149
|
const _deepseek_ai_dsh_api_session_controller_session_rename_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_rename_parameter_0$schema$value ??= z.object({
|
|
872
|
-
'sessionId': z.
|
|
1150
|
+
'sessionId': z.string().readonly(),
|
|
873
1151
|
'title': z.string().readonly(),
|
|
874
1152
|
}))
|
|
875
1153
|
let _deepseek_ai_dsh_api_session_controller_session_rename_result$schema$value
|
|
@@ -884,14 +1162,14 @@ const _deepseek_ai_dsh_api_session_controller_session_search_parameter_0$schema
|
|
|
884
1162
|
let _deepseek_ai_dsh_api_session_controller_session_search_result$schema$value
|
|
885
1163
|
const _deepseek_ai_dsh_api_session_controller_session_search_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_search_result$schema$value ??= z.object({
|
|
886
1164
|
'items': z.array(z.object({
|
|
887
|
-
'sessionId': z.
|
|
1165
|
+
'sessionId': z.string().readonly(),
|
|
888
1166
|
'snippet': z.string().readonly(),
|
|
889
1167
|
})).readonly(),
|
|
890
1168
|
'hasMore': z.boolean().readonly(),
|
|
891
1169
|
}))
|
|
892
1170
|
let _deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0$schema$value
|
|
893
1171
|
const _deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0$schema$value ??= z.object({
|
|
894
|
-
'sessionId': z.
|
|
1172
|
+
'sessionId': z.string().readonly(),
|
|
895
1173
|
'provider': z.string().readonly(),
|
|
896
1174
|
'model': z.string().readonly(),
|
|
897
1175
|
'reasoningEffort': z.string().readonly().optional(),
|
|
@@ -906,14 +1184,14 @@ const _deepseek_ai_dsh_api_session_controller_session_selectModel_result$schema
|
|
|
906
1184
|
}))
|
|
907
1185
|
let _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0$schema$value
|
|
908
1186
|
const _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0$schema$value ??= z.object({
|
|
909
|
-
'sessionId': z.
|
|
910
|
-
'itemId': z.
|
|
1187
|
+
'sessionId': z.string().readonly(),
|
|
1188
|
+
'itemId': z.string().readonly(),
|
|
911
1189
|
'action': z.union([z.object({
|
|
912
1190
|
'kind': z.literal("edit").readonly(),
|
|
913
1191
|
'content': z.array(z.object({
|
|
914
1192
|
'type': z.literal("text"),
|
|
915
1193
|
'text': z.string(),
|
|
916
|
-
})).readonly(),
|
|
1194
|
+
})).readonly().describe('Non-empty text-only replacement content.'),
|
|
917
1195
|
}), z.object({
|
|
918
1196
|
'kind': z.literal("remove").readonly(),
|
|
919
1197
|
}), z.object({
|
|
@@ -930,34 +1208,168 @@ const _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_
|
|
|
930
1208
|
}))
|
|
931
1209
|
let _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema$value
|
|
932
1210
|
const _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema$value ??= z.array(z.object({
|
|
933
|
-
'id': z.string().readonly(),
|
|
1211
|
+
'id': z.string().readonly().describe('OS application identifier; callers must revalidate it against the file\'s current handlers before opening.'),
|
|
934
1212
|
'name': z.string().readonly(),
|
|
935
1213
|
'default': z.boolean().readonly(),
|
|
936
|
-
'icon': z.union([z.literal(null), z.string()]).readonly(),
|
|
1214
|
+
'icon': z.union([z.literal(null), z.string()]).readonly().describe('PNG or SVG data URL, or null when the desktop supplies no icon.'),
|
|
937
1215
|
})))
|
|
938
1216
|
let _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema$value
|
|
939
1217
|
const _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema$value ??= z.object({
|
|
940
|
-
'sessionId': z.
|
|
1218
|
+
'sessionId': z.string().readonly(),
|
|
941
1219
|
}))
|
|
942
1220
|
let _deepseek_ai_dsh_api_session_controller_skills_list_result$schema$value
|
|
943
1221
|
const _deepseek_ai_dsh_api_session_controller_skills_list_result$schema = () => (_deepseek_ai_dsh_api_session_controller_skills_list_result$schema$value ??= z.object({
|
|
944
1222
|
'skills': z.array(z.object({
|
|
945
|
-
'path': z.string().readonly().optional(),
|
|
946
|
-
'name': z.string().readonly(),
|
|
947
|
-
'description': z.string().readonly(),
|
|
948
|
-
'whenToUse': z.string().readonly().optional(),
|
|
949
|
-
'modelInvocable': z.boolean().readonly(),
|
|
1223
|
+
'path': z.string().readonly().optional().describe('Absolute SKILL.md path when supplied by a filesystem provider.'),
|
|
1224
|
+
'name': z.string().readonly().describe('Kebab-case identifier referenced as `/name`.'),
|
|
1225
|
+
'description': z.string().readonly().describe('Short routing description.'),
|
|
1226
|
+
'whenToUse': z.string().readonly().optional().describe('Optional extra routing guidance.'),
|
|
1227
|
+
'modelInvocable': z.boolean().readonly().describe('Whether the same skill is also advertised to the model.'),
|
|
950
1228
|
})).readonly(),
|
|
951
1229
|
}))
|
|
1230
|
+
let _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0_strict$schema$value
|
|
1231
|
+
const _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0_strict$schema$value ??= z.string())
|
|
1232
|
+
let _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1_strict$schema$value
|
|
1233
|
+
const _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1_strict$schema$value ??= z.string())
|
|
1234
|
+
let _deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0_strict$schema$value
|
|
1235
|
+
const _deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1236
|
+
'sessionId': z.string().readonly(),
|
|
1237
|
+
'attachmentId': z.string().readonly(),
|
|
1238
|
+
}))
|
|
1239
|
+
let _deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0_strict$schema$value
|
|
1240
|
+
const _deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1241
|
+
'sessionId': z.string().readonly(),
|
|
1242
|
+
}))
|
|
1243
|
+
let _deepseek_ai_dsh_api_session_controller_session_create_parameter_0_strict$schema$value
|
|
1244
|
+
const _deepseek_ai_dsh_api_session_controller_session_create_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_create_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1245
|
+
'workspaceId': z.string().readonly().optional().describe('Workspace the Session joins; exclusive with `cwd`.'),
|
|
1246
|
+
'cwd': z.string().readonly().optional().describe('Directory the Session owns when no Workspace is named.'),
|
|
1247
|
+
'sessionId': z.string().readonly().optional().describe('Blank Session to reuse while it is reusable, or the identity of a new Session when none is stored under it.'),
|
|
1248
|
+
'agentPreset': z.string().readonly().optional().describe('Preset the Session runs, replacing a reused Session\'s recorded preset; the configured default when omitted.'),
|
|
1249
|
+
}))
|
|
1250
|
+
let _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0_strict$schema$value
|
|
1251
|
+
const _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_follow_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1252
|
+
'address': z.union([z.strictObject({
|
|
1253
|
+
'kind': z.literal("session").readonly(),
|
|
1254
|
+
'sessionId': z.string().readonly(),
|
|
1255
|
+
}), z.strictObject({
|
|
1256
|
+
'kind': z.literal("subagent").readonly(),
|
|
1257
|
+
'parentSessionId': z.string().readonly(),
|
|
1258
|
+
'childSessionId': z.string().readonly(),
|
|
1259
|
+
'mode': z.union([z.literal("one-shot"), z.literal("continuable"), z.literal("unknown")]).readonly(),
|
|
1260
|
+
})]).readonly(),
|
|
1261
|
+
'assistantStream': z.literal(true).readonly().optional().describe('Include process-local assistant presentation frames for the Web client.'),
|
|
1262
|
+
'maxMessages': z.number().readonly().optional(),
|
|
1263
|
+
'turnWindow': z.strictObject({
|
|
1264
|
+
'minMessages': z.number().readonly().describe('Minimum append-origin user/assistant messages; must not exceed maxMessages.'),
|
|
1265
|
+
'minTurns': z.number().readonly().describe('Minimum Turn starts crossed, including the partial Turn at beforeSeq.'),
|
|
1266
|
+
}).readonly().optional().describe('Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins.'),
|
|
1267
|
+
}))
|
|
1268
|
+
let _deepseek_ai_dsh_api_session_controller_session_fork_parameter_0_strict$schema$value
|
|
1269
|
+
const _deepseek_ai_dsh_api_session_controller_session_fork_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_fork_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1270
|
+
'sessionId': z.string().readonly(),
|
|
1271
|
+
'atSeq': z.number().readonly().optional().describe('Exact inclusive source event seq; omission selects the latest completed-turn prefix.'),
|
|
1272
|
+
'allowMigration': z.boolean().readonly().optional().describe('False asks the Host to check for required migration before forking. Defaults to true.'),
|
|
1273
|
+
}))
|
|
1274
|
+
let _deepseek_ai_dsh_api_session_controller_session_list_parameter_0_strict$schema$value
|
|
1275
|
+
const _deepseek_ai_dsh_api_session_controller_session_list_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_list_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1276
|
+
'cursor': z.string().readonly().optional(),
|
|
1277
|
+
}))
|
|
1278
|
+
let _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0_strict$schema$value
|
|
1279
|
+
const _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1280
|
+
'action': z.literal("reveal").readonly().optional().describe('File-manager navigation when requested; omission uses the default application.'),
|
|
1281
|
+
'application': z.string().readonly().optional().describe('Registered application identifier; ignored for reveal. Omission preserves the operating system default.'),
|
|
1282
|
+
'path': z.string().readonly().describe('Path after best-effort Session workspace resolution, in Host filesystem syntax.'),
|
|
1283
|
+
}))
|
|
1284
|
+
let _deepseek_ai_dsh_api_session_controller_session_page_parameter_0_strict$schema$value
|
|
1285
|
+
const _deepseek_ai_dsh_api_session_controller_session_page_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_page_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1286
|
+
'address': z.union([z.strictObject({
|
|
1287
|
+
'kind': z.literal("session").readonly(),
|
|
1288
|
+
'sessionId': z.string().readonly(),
|
|
1289
|
+
}), z.strictObject({
|
|
1290
|
+
'kind': z.literal("subagent").readonly(),
|
|
1291
|
+
'parentSessionId': z.string().readonly(),
|
|
1292
|
+
'childSessionId': z.string().readonly(),
|
|
1293
|
+
'mode': z.union([z.literal("one-shot"), z.literal("continuable"), z.literal("unknown")]).readonly(),
|
|
1294
|
+
})]).readonly(),
|
|
1295
|
+
'throughSeq': z.number().readonly().describe('Inclusive log cut obtained from the corresponding follow opening frame.'),
|
|
1296
|
+
'beforeSeq': z.number().readonly().optional(),
|
|
1297
|
+
'maxMessages': z.number().readonly().optional(),
|
|
1298
|
+
'turnWindow': z.strictObject({
|
|
1299
|
+
'minMessages': z.number().readonly().describe('Minimum append-origin user/assistant messages; must not exceed maxMessages.'),
|
|
1300
|
+
'minTurns': z.number().readonly().describe('Minimum Turn starts crossed, including the partial Turn at beforeSeq.'),
|
|
1301
|
+
}).readonly().optional().describe('Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins.'),
|
|
1302
|
+
}))
|
|
1303
|
+
let _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0_strict$schema$value
|
|
1304
|
+
const _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_projections_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1305
|
+
'sessionId': z.string().readonly(),
|
|
1306
|
+
}))
|
|
1307
|
+
let _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0_strict$schema$value
|
|
1308
|
+
const _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1309
|
+
'requestId': z.string().readonly().describe('Client-minted identity persisted on the exact accepted user message.'),
|
|
1310
|
+
'sessionId': z.string().readonly(),
|
|
1311
|
+
'mode': z.union([z.literal("queue"), z.literal("steer")]).readonly(),
|
|
1312
|
+
'content': z.array(z.union([z.strictObject({
|
|
1313
|
+
'type': z.literal("text").readonly(),
|
|
1314
|
+
'text': z.string().readonly(),
|
|
1315
|
+
}), z.strictObject({
|
|
1316
|
+
'type': z.literal("image").readonly(),
|
|
1317
|
+
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]).readonly(),
|
|
1318
|
+
'data': z.string().readonly(),
|
|
1319
|
+
'name': z.string().readonly().optional(),
|
|
1320
|
+
}), z.strictObject({
|
|
1321
|
+
'type': z.literal("file").readonly(),
|
|
1322
|
+
'receiptId': z.string().readonly(),
|
|
1323
|
+
})])).readonly().describe('At least one non-whitespace text part or attachment.'),
|
|
1324
|
+
'clientTimeZone': z.string().readonly().optional(),
|
|
1325
|
+
}))
|
|
1326
|
+
let _deepseek_ai_dsh_api_session_controller_session_rename_parameter_0_strict$schema$value
|
|
1327
|
+
const _deepseek_ai_dsh_api_session_controller_session_rename_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_rename_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1328
|
+
'sessionId': z.string().readonly(),
|
|
1329
|
+
'title': z.string().readonly(),
|
|
1330
|
+
}))
|
|
1331
|
+
let _deepseek_ai_dsh_api_session_controller_session_search_parameter_0_strict$schema$value
|
|
1332
|
+
const _deepseek_ai_dsh_api_session_controller_session_search_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_search_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1333
|
+
'query': z.string().readonly(),
|
|
1334
|
+
}))
|
|
1335
|
+
let _deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0_strict$schema$value
|
|
1336
|
+
const _deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1337
|
+
'sessionId': z.string().readonly(),
|
|
1338
|
+
'provider': z.string().readonly(),
|
|
1339
|
+
'model': z.string().readonly(),
|
|
1340
|
+
'reasoningEffort': z.string().readonly().optional(),
|
|
1341
|
+
}))
|
|
1342
|
+
let _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0_strict$schema$value
|
|
1343
|
+
const _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1344
|
+
'sessionId': z.string().readonly(),
|
|
1345
|
+
'itemId': z.string().readonly(),
|
|
1346
|
+
'action': z.union([z.strictObject({
|
|
1347
|
+
'kind': z.literal("edit").readonly(),
|
|
1348
|
+
'content': z.array(z.strictObject({
|
|
1349
|
+
'type': z.literal("text"),
|
|
1350
|
+
'text': z.string(),
|
|
1351
|
+
})).readonly().describe('Non-empty text-only replacement content.'),
|
|
1352
|
+
}), z.strictObject({
|
|
1353
|
+
'kind': z.literal("remove").readonly(),
|
|
1354
|
+
}), z.strictObject({
|
|
1355
|
+
'kind': z.literal("steer").readonly(),
|
|
1356
|
+
})]).readonly(),
|
|
1357
|
+
}))
|
|
1358
|
+
let _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0_strict$schema$value
|
|
1359
|
+
const _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1360
|
+
'path': z.string().readonly(),
|
|
1361
|
+
}))
|
|
1362
|
+
let _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0_strict$schema$value
|
|
1363
|
+
const _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0_strict$schema = () => (_deepseek_ai_dsh_api_session_controller_skills_list_parameter_0_strict$schema$value ??= z.strictObject({
|
|
1364
|
+
'sessionId': z.string().readonly(),
|
|
1365
|
+
}))
|
|
952
1366
|
|
|
953
|
-
export const TYPERT_REMOTE = {
|
|
1367
|
+
export const TYPERT_REMOTE = createTypertRemoteInfo({
|
|
954
1368
|
package: '@deepseek-ai/dsh-api-session-controller',
|
|
955
|
-
|
|
956
|
-
{
|
|
957
|
-
id: '@deepseek-ai/dsh-api-session-controller#fileReferences/list',
|
|
1369
|
+
methods: {
|
|
1370
|
+
'fileReferences/list': {
|
|
958
1371
|
service: 'sessionFileReferences',
|
|
959
|
-
|
|
960
|
-
method: 'list',
|
|
1372
|
+
description: 'List file and directory candidates for one Agent\'s working directory.',
|
|
961
1373
|
invocation: { kind: 'direct' },
|
|
962
1374
|
scope: {
|
|
963
1375
|
context: 'agent',
|
|
@@ -967,22 +1379,37 @@ export const TYPERT_REMOTE = {
|
|
|
967
1379
|
{
|
|
968
1380
|
name: 'agent',
|
|
969
1381
|
wire: 'agentId',
|
|
1382
|
+
description: 'target Agent resolved from the Session identity on the wire.',
|
|
970
1383
|
source: 'lookup',
|
|
971
1384
|
lookup: 'agent',
|
|
972
1385
|
codec: {
|
|
973
1386
|
mode: 'strict',
|
|
974
1387
|
typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
|
|
975
1388
|
create: _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema,
|
|
1389
|
+
jsonSchema: {"type":"string"},
|
|
1390
|
+
},
|
|
1391
|
+
strictCodec: {
|
|
1392
|
+
mode: 'strict',
|
|
1393
|
+
typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
|
|
1394
|
+
create: _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0_strict$schema,
|
|
1395
|
+
jsonSchema: {"type":"string"},
|
|
976
1396
|
},
|
|
977
1397
|
},
|
|
978
1398
|
{
|
|
979
1399
|
name: 'query',
|
|
980
|
-
|
|
1400
|
+
description: 'path text following `@` or `@"`.',
|
|
981
1401
|
source: 'json',
|
|
982
1402
|
codec: {
|
|
983
1403
|
mode: 'strict',
|
|
984
1404
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller#fileReferences/list:query',
|
|
985
1405
|
create: _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1$schema,
|
|
1406
|
+
jsonSchema: {"type":"string"},
|
|
1407
|
+
},
|
|
1408
|
+
strictCodec: {
|
|
1409
|
+
mode: 'strict',
|
|
1410
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller#fileReferences/list:query',
|
|
1411
|
+
create: _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1_strict$schema,
|
|
1412
|
+
jsonSchema: {"type":"string"},
|
|
986
1413
|
},
|
|
987
1414
|
},
|
|
988
1415
|
],
|
|
@@ -991,24 +1418,31 @@ export const TYPERT_REMOTE = {
|
|
|
991
1418
|
mode: 'strict',
|
|
992
1419
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller#fileReferences/list:result',
|
|
993
1420
|
create: _deepseek_ai_dsh_api_session_controller_fileReferences_list_result$schema,
|
|
1421
|
+
description: 'deterministic path-only candidates from the composed provider.',
|
|
1422
|
+
jsonSchema: {"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"User-facing path accepted by normal prompts and filesystem tools."},"kind":{"type":"string","enum":["file","directory"],"description":"Directories keep completion open; files finish the mention."}},"required":["path","kind"],"additionalProperties":true}},
|
|
994
1423
|
},
|
|
995
1424
|
sourceLocation: {"file":"packages/api/session-controller/src/file-references.ts","line":33,"column":3},
|
|
996
1425
|
},
|
|
997
|
-
{
|
|
998
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/attachment',
|
|
1426
|
+
'session/attachment': {
|
|
999
1427
|
service: 'sessionController',
|
|
1000
|
-
|
|
1001
|
-
method: 'attachment',
|
|
1428
|
+
description: 'Read one image proven reachable from the addressed Session log.',
|
|
1002
1429
|
invocation: { kind: 'direct' },
|
|
1003
1430
|
parameters: [
|
|
1004
1431
|
{
|
|
1005
1432
|
name: 'request',
|
|
1006
|
-
|
|
1433
|
+
description: 'Session and attachment identities used for authorization.',
|
|
1007
1434
|
source: 'json',
|
|
1008
1435
|
codec: {
|
|
1009
1436
|
mode: 'strict',
|
|
1010
1437
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionAttachmentRequest',
|
|
1011
1438
|
create: _deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0$schema,
|
|
1439
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"attachmentId":{"type":"string"}},"required":["sessionId","attachmentId"],"additionalProperties":true},
|
|
1440
|
+
},
|
|
1441
|
+
strictCodec: {
|
|
1442
|
+
mode: 'strict',
|
|
1443
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionAttachmentRequest',
|
|
1444
|
+
create: _deepseek_ai_dsh_api_session_controller_session_attachment_parameter_0_strict$schema,
|
|
1445
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"attachmentId":{"type":"string"}},"required":["sessionId","attachmentId"],"additionalProperties":false},
|
|
1012
1446
|
},
|
|
1013
1447
|
},
|
|
1014
1448
|
],
|
|
@@ -1016,24 +1450,31 @@ export const TYPERT_REMOTE = {
|
|
|
1016
1450
|
mode: 'strict',
|
|
1017
1451
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionAttachmentValue',
|
|
1018
1452
|
create: _deepseek_ai_dsh_api_session_controller_session_attachment_result$schema,
|
|
1453
|
+
description: 'the durable attachment reference and base64-encoded bytes.',
|
|
1454
|
+
jsonSchema: {"type":"object","properties":{"attachment":{"type":"object","properties":{"attachmentId":{"type":"string","description":"Opaque storage identifier; never a filesystem path or bearer URL."},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"],"description":"Media type verified from the stored bytes."},"bytes":{"type":"number","description":"Exact encoded byte length."},"width":{"type":"number","description":"Intrinsic encoded width in pixels."},"height":{"type":"number","description":"Intrinsic encoded height in pixels."},"name":{"type":"string","description":"Optional display name stripped of local path information."},"originalDimensions":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"}},"required":["width","height"],"additionalProperties":true,"description":"Input dimensions after applying EXIF orientation and before normalization scaling. Present only when normalization reduced the image."}},"required":["attachmentId","mediaType","bytes","width","height"],"additionalProperties":true},"data":{"type":"string"}},"required":["attachment","data"],"additionalProperties":true},
|
|
1019
1455
|
},
|
|
1020
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1456
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":494,"column":3},
|
|
1021
1457
|
},
|
|
1022
|
-
{
|
|
1023
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/cancel',
|
|
1458
|
+
'session/cancel': {
|
|
1024
1459
|
service: 'sessionController',
|
|
1025
|
-
|
|
1026
|
-
method: 'cancel',
|
|
1460
|
+
description: 'Cancel one active Agent turn without dropping its pending inbox.',
|
|
1027
1461
|
invocation: { kind: 'direct' },
|
|
1028
1462
|
parameters: [
|
|
1029
1463
|
{
|
|
1030
1464
|
name: 'request',
|
|
1031
|
-
|
|
1465
|
+
description: 'Session whose active Agent turn is cancelled.',
|
|
1032
1466
|
source: 'json',
|
|
1033
1467
|
codec: {
|
|
1034
1468
|
mode: 'strict',
|
|
1035
1469
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCancelRequest',
|
|
1036
1470
|
create: _deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0$schema,
|
|
1471
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":true},
|
|
1472
|
+
},
|
|
1473
|
+
strictCodec: {
|
|
1474
|
+
mode: 'strict',
|
|
1475
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCancelRequest',
|
|
1476
|
+
create: _deepseek_ai_dsh_api_session_controller_session_cancel_parameter_0_strict$schema,
|
|
1477
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":false},
|
|
1037
1478
|
},
|
|
1038
1479
|
},
|
|
1039
1480
|
],
|
|
@@ -1041,14 +1482,14 @@ export const TYPERT_REMOTE = {
|
|
|
1041
1482
|
mode: 'strict',
|
|
1042
1483
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCancelValue',
|
|
1043
1484
|
create: _deepseek_ai_dsh_api_session_controller_session_cancel_result$schema,
|
|
1485
|
+
description: 'acknowledgement that cancellation was requested.',
|
|
1486
|
+
jsonSchema: {"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":true},
|
|
1044
1487
|
},
|
|
1045
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1488
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":514,"column":3},
|
|
1046
1489
|
},
|
|
1047
|
-
{
|
|
1048
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/canOpenWorkspacePath',
|
|
1490
|
+
'session/canOpenWorkspacePath': {
|
|
1049
1491
|
service: 'sessionController',
|
|
1050
|
-
|
|
1051
|
-
method: 'canOpenWorkspacePath',
|
|
1492
|
+
description: 'Report whether this deployment can hand a Session workspace path to a native desktop.',
|
|
1052
1493
|
invocation: { kind: 'direct' },
|
|
1053
1494
|
parameters: [
|
|
1054
1495
|
],
|
|
@@ -1056,14 +1497,14 @@ export const TYPERT_REMOTE = {
|
|
|
1056
1497
|
mode: 'strict',
|
|
1057
1498
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/canOpenWorkspacePath:result',
|
|
1058
1499
|
create: _deepseek_ai_dsh_api_session_controller_session_canOpenWorkspacePath_result$schema,
|
|
1500
|
+
description: 'true when the matching open operation is available.',
|
|
1501
|
+
jsonSchema: {"type":"boolean"},
|
|
1059
1502
|
},
|
|
1060
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1503
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":347,"column":3},
|
|
1061
1504
|
},
|
|
1062
|
-
{
|
|
1063
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/control',
|
|
1505
|
+
'session/control': {
|
|
1064
1506
|
service: 'sessionController',
|
|
1065
|
-
|
|
1066
|
-
method: 'control',
|
|
1507
|
+
description: 'Stream a complete live-control baseline followed by replacement frames.',
|
|
1067
1508
|
mode: 'stream',
|
|
1068
1509
|
invocation: { kind: 'direct' },
|
|
1069
1510
|
parameters: [
|
|
@@ -1073,24 +1514,31 @@ export const TYPERT_REMOTE = {
|
|
|
1073
1514
|
mode: 'strict',
|
|
1074
1515
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionControlFrame',
|
|
1075
1516
|
create: _deepseek_ai_dsh_api_session_controller_session_control_result$schema,
|
|
1517
|
+
description: 'one complete baseline followed by live replacement frames.',
|
|
1518
|
+
jsonSchemaError: 'typert tool schema: selected dictionaries require string keys and unconstrained JSON values',
|
|
1076
1519
|
},
|
|
1077
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1520
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":599,"column":10},
|
|
1078
1521
|
},
|
|
1079
|
-
{
|
|
1080
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/create',
|
|
1522
|
+
'session/create': {
|
|
1081
1523
|
service: 'sessionController',
|
|
1082
|
-
|
|
1083
|
-
method: 'create',
|
|
1524
|
+
description: 'Create one ordinary Session for a new conversation, reusing the named blank Session while it is reusable.',
|
|
1084
1525
|
invocation: { kind: 'direct' },
|
|
1085
1526
|
parameters: [
|
|
1086
1527
|
{
|
|
1087
1528
|
name: 'request',
|
|
1088
|
-
|
|
1529
|
+
description: 'optional blank Session to reuse, location, and Agent preset.',
|
|
1089
1530
|
source: 'json',
|
|
1090
1531
|
codec: {
|
|
1091
1532
|
mode: 'strict',
|
|
1092
1533
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCreateRequest',
|
|
1093
1534
|
create: _deepseek_ai_dsh_api_session_controller_session_create_parameter_0$schema,
|
|
1535
|
+
jsonSchema: {"type":"object","properties":{"workspaceId":{"type":"string","description":"Workspace the Session joins; exclusive with `cwd`."},"cwd":{"type":"string","description":"Directory the Session owns when no Workspace is named."},"sessionId":{"type":"string","description":"Blank Session to reuse while it is reusable, or the identity of a new Session when none is stored under it."},"agentPreset":{"type":"string","description":"Preset the Session runs, replacing a reused Session's recorded preset; the configured default when omitted."}},"required":[],"additionalProperties":true},
|
|
1536
|
+
},
|
|
1537
|
+
strictCodec: {
|
|
1538
|
+
mode: 'strict',
|
|
1539
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCreateRequest',
|
|
1540
|
+
create: _deepseek_ai_dsh_api_session_controller_session_create_parameter_0_strict$schema,
|
|
1541
|
+
jsonSchema: {"type":"object","properties":{"workspaceId":{"type":"string","description":"Workspace the Session joins; exclusive with `cwd`."},"cwd":{"type":"string","description":"Directory the Session owns when no Workspace is named."},"sessionId":{"type":"string","description":"Blank Session to reuse while it is reusable, or the identity of a new Session when none is stored under it."},"agentPreset":{"type":"string","description":"Preset the Session runs, replacing a reused Session's recorded preset; the configured default when omitted."}},"required":[],"additionalProperties":false},
|
|
1094
1542
|
},
|
|
1095
1543
|
},
|
|
1096
1544
|
],
|
|
@@ -1098,25 +1546,32 @@ export const TYPERT_REMOTE = {
|
|
|
1098
1546
|
mode: 'strict',
|
|
1099
1547
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCreateValue',
|
|
1100
1548
|
create: _deepseek_ai_dsh_api_session_controller_session_create_result$schema,
|
|
1549
|
+
description: 'the created or reused Session identity and its preset when configured.',
|
|
1550
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string","description":"The created or reused Session, which may differ from the requested `sessionId`."},"agentPreset":{"type":"string","description":"Preset the Session runs, when the deployment composes a preset roster."}},"required":["sessionId"],"additionalProperties":true},
|
|
1101
1551
|
},
|
|
1102
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1552
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":301,"column":3},
|
|
1103
1553
|
},
|
|
1104
|
-
{
|
|
1105
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/follow',
|
|
1554
|
+
'session/follow': {
|
|
1106
1555
|
service: 'sessionController',
|
|
1107
|
-
|
|
1108
|
-
method: 'follow',
|
|
1556
|
+
description: 'Follow one Session log from its opening or resume cursor.',
|
|
1109
1557
|
mode: 'stream',
|
|
1110
1558
|
invocation: { kind: 'direct' },
|
|
1111
1559
|
parameters: [
|
|
1112
1560
|
{
|
|
1113
1561
|
name: 'request',
|
|
1114
|
-
|
|
1562
|
+
description: 'durable address and last committed sequence already held by the caller.',
|
|
1115
1563
|
source: 'json',
|
|
1116
1564
|
codec: {
|
|
1117
1565
|
mode: 'strict',
|
|
1118
1566
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionFollowRequest',
|
|
1119
1567
|
create: _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema,
|
|
1568
|
+
jsonSchema: {"type":"object","properties":{"address":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"session"},"sessionId":{"type":"string"}},"required":["kind","sessionId"],"additionalProperties":true},{"type":"object","properties":{"kind":{"type":"string","const":"subagent"},"parentSessionId":{"type":"string"},"childSessionId":{"type":"string"},"mode":{"type":"string","enum":["one-shot","continuable","unknown"]}},"required":["kind","parentSessionId","childSessionId","mode"],"additionalProperties":true}]},"assistantStream":{"type":"boolean","const":true,"description":"Include process-local assistant presentation frames for the Web client."},"maxMessages":{"type":"number"},"turnWindow":{"type":"object","properties":{"minMessages":{"type":"number","description":"Minimum append-origin user/assistant messages; must not exceed maxMessages."},"minTurns":{"type":"number","description":"Minimum Turn starts crossed, including the partial Turn at beforeSeq."}},"required":["minMessages","minTurns"],"additionalProperties":true,"description":"Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins."}},"required":["address"],"additionalProperties":true},
|
|
1569
|
+
},
|
|
1570
|
+
strictCodec: {
|
|
1571
|
+
mode: 'strict',
|
|
1572
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionFollowRequest',
|
|
1573
|
+
create: _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0_strict$schema,
|
|
1574
|
+
jsonSchema: {"type":"object","properties":{"address":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"session"},"sessionId":{"type":"string"}},"required":["kind","sessionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"subagent"},"parentSessionId":{"type":"string"},"childSessionId":{"type":"string"},"mode":{"type":"string","enum":["one-shot","continuable","unknown"]}},"required":["kind","parentSessionId","childSessionId","mode"],"additionalProperties":false}]},"assistantStream":{"type":"boolean","const":true,"description":"Include process-local assistant presentation frames for the Web client."},"maxMessages":{"type":"number"},"turnWindow":{"type":"object","properties":{"minMessages":{"type":"number","description":"Minimum append-origin user/assistant messages; must not exceed maxMessages."},"minTurns":{"type":"number","description":"Minimum Turn starts crossed, including the partial Turn at beforeSeq."}},"required":["minMessages","minTurns"],"additionalProperties":false,"description":"Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins."}},"required":["address"],"additionalProperties":false},
|
|
1120
1575
|
},
|
|
1121
1576
|
},
|
|
1122
1577
|
],
|
|
@@ -1125,24 +1580,31 @@ export const TYPERT_REMOTE = {
|
|
|
1125
1580
|
mode: 'strict',
|
|
1126
1581
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionFollowFrame',
|
|
1127
1582
|
create: _deepseek_ai_dsh_api_session_controller_session_follow_result$schema,
|
|
1583
|
+
description: 'a complete opening snapshot followed by gap-free durable event frames and optional cursorless assistant-stream frames.',
|
|
1584
|
+
jsonSchema: {"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"event"},"event":{"type":"object","properties":{"type":{"type":"string"},"seq":{"type":"number"},"time":{"type":"number"},"data":{},"ignorable":{"type":"boolean","const":true},"sourceEventSeqs":{"description":"Earlier sources on current surface events; opaque JSON on unknown ignorable events."},"surfaceOp":{"description":"Canonical placement on current surface events; opaque JSON on unknown ignorable events."}},"required":["type","seq","time","data"],"additionalProperties":true}},"required":["type","event"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"snapshot"},"header":{"type":"object","properties":{"version":{"type":"number"},"id":{"type":"string"},"createdAt":{"type":"number"},"cwd":{"type":"string"},"parentSession":{"type":"string"},"isSeeded":{"type":"boolean","description":"Whether the Session contains a fork-inherited prefix."},"origin":{"type":"string","const":"subagent"},"delegationDepth":{"type":"number"},"agentPreset":{"type":"string"}},"required":["version","id","createdAt","isSeeded"],"additionalProperties":true},"cursor":{"type":"number"},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"event"},"event":{"type":"object","properties":{"type":{"type":"string"},"seq":{"type":"number"},"time":{"type":"number"},"data":{},"ignorable":{"type":"boolean","const":true},"sourceEventSeqs":{"description":"Earlier sources on current surface events; opaque JSON on unknown ignorable events."},"surfaceOp":{"description":"Canonical placement on current surface events; opaque JSON on unknown ignorable events."}},"required":["type","seq","time","data"],"additionalProperties":true}},"required":["type","event"],"additionalProperties":true}},"hasMore":{"type":"boolean"},"projections":{"type":"object","properties":{"asOfSeq":{"type":"number"},"values":{"type":"object","properties":{"inbox":{"type":"object","properties":{"next-turn":{"type":"array","items":{}},"next-step":{"type":"array","items":{}}},"required":["next-turn","next-step"],"additionalProperties":true,"description":"Pending agent input reconstructed from durable inbox splices."},"workingDirectory":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Recorded current directory for Session observations, or null when none is recorded."},"agentPreset":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Preset the Session runs, or null when the deployment composes none."},"title":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"The session's current normalized title — the latest `session/title` event's text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume."},"todos":{"oneOf":[{"type":"null","const":null},{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","description":"What this task is — a short imperative line shown in the UI."},"status":{"type":"string","enum":["completed","pending","in_progress"],"description":"Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several."}},"required":["content","status"],"additionalProperties":true}}],"description":"The agent's current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins."},"sessionListMetadata":{"type":"object","properties":{"blank":{"type":"boolean","description":"Whether the folded prefix contains no turn."},"lastPromptAt":{"oneOf":[{"type":"null","const":null},{"type":"number"}],"description":"Latest human-authored prompt time in the folded prefix."}},"required":["blank","lastPromptAt"],"additionalProperties":true,"description":"Persisted facts used to summarize a Session without activating it."},"imageLimits":{"type":"object","properties":{"maxImageBytes":{"type":"number"},"maxImagesPerMessage":{"type":"number"},"maxMessageImageBytes":{"type":"number"},"maxImagePixels":{"type":"number"},"maxImageDimension":{"type":"number","description":"Maximum intrinsic width and maximum intrinsic height in pixels for one image."},"mediaTypes":{"type":"array","items":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]}}},"required":["maxImageBytes","maxImagesPerMessage","maxMessageImageBytes","maxImagePixels","maxImageDimension","mediaTypes"],"additionalProperties":true,"description":"Image-intake limits enforced by the Session prompt endpoint."},"modelSelection":{"type":"object","properties":{"lastUsed":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection consumed by the latest recorded model request."},"next":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection the next request should use, falling back to {@link lastUsed}."}},"required":["lastUsed","next"],"additionalProperties":true,"description":"Durable model selection already used and selected for the next request."},"permissions":{"type":"object","properties":{"currentValue":{"type":"string","description":"The effective current value: a configured preset key, `auto`, or `custom`."}},"required":["currentValue"],"additionalProperties":true,"description":"The session's current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control."},"subagentCatalog":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"one-shot"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"external"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"continuable"},"label":{"type":"string"}},"required":["id","createdAt","mode","label"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"unknown"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true}]},"description":"Direct children in parent catalog event order, excluding fork-inherited facts."},"subagentTiming":{"type":"object","properties":{"settledMs":{"type":"number","description":"Milliseconds accumulated across completed turns after the child's own descriptor."},"active":{"type":"object","properties":{"since":{"type":"number","description":"Start of the open turn."},"through":{"type":"number","description":"Latest event time folded into this projection cut."}},"required":["since","through"],"additionalProperties":true,"description":"Same-cut bounds of the currently open turn, when one has not reached `turn/end`."},"lastTurnCompleted":{"type":"boolean","description":"Whether the latest closed turn after the child's own descriptor completed normally; absent while a turn is open or before one closes."}},"required":["settledMs"],"additionalProperties":true,"description":"Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session."},"subagent":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"mode":{"type":"string","const":"one-shot","description":"A terminal one-shot child."},"label":{"type":"string","description":"Optional durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child's OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed's replayed ancestor descriptor."}},"required":["mode","seq"],"additionalProperties":true},{"type":"object","properties":{"mode":{"type":"string","const":"continuable","description":"A resumable conversation."},"label":{"type":"string","description":"Durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof."}},"required":["mode","label","seq"],"additionalProperties":true}],"description":"Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional."},"tokenUsage":{"type":"object","properties":{"uncachedInputTokens":{"type":"number"},"outputTokens":{"type":"number"},"cacheReadTokens":{"type":"number"},"cacheWriteTokens":{"type":"number"}},"required":["uncachedInputTokens","outputTokens","cacheReadTokens","cacheWriteTokens"],"additionalProperties":true,"description":"Provider-reported usage accumulated across the complete durable log."},"contextPressure":{"type":"object","properties":{"pressureTokens":{"type":"number","description":"Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage."},"projectedTokens":{"type":"number","description":"What the NEXT request's prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage."},"contextWindow":{"type":"number","description":"Newest recorded route capacity; absent when no adapter advertised one."}},"required":[],"additionalProperties":true,"description":"Newest request pressure paired with the newest known route capacity."},"contextBreakdown":{"type":"object","properties":{"systemTokens":{"type":"number","description":"Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists."},"toolsTokens":{"type":"number","description":"Heuristic tokens of the newest request envelope's tool schemas; 0 before any request."},"messageTokens":{"type":"number","description":"Heuristic tokens of every other visible surface node, including superseded system prompts."}},"required":["systemTokens","toolsTokens","messageTokens"],"additionalProperties":true,"description":"Heuristic system/tools/message composition of the next request."},"agentTeam":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string","enum":["lead","teammate"]},"phase":{"type":"string","enum":["failed","provisioning","active"],"description":"Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status."},"error":{"type":"string"}},"required":["id","name","role","phase"],"additionalProperties":true}},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"number"},"subject":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["completed","pending","in_progress","deleted"]},"blockedBy":{"type":"array","items":{"type":"string"}},"writeScopes":{"type":"array","items":{"type":"string"}},"ownerName":{"type":"string"},"ready":{"type":"boolean"},"writeScopeWarnings":{"type":"array","items":{"type":"string"}}},"required":["id","revision","subject","description","status","blockedBy","writeScopes","ready","writeScopeWarnings"],"additionalProperties":true}},"failure":{"type":"string"}},"required":["members","tasks"],"additionalProperties":true,"description":"Durable roster and non-deleted task board of the Team rooted at the projected Session."},"userQuestions":{"type":"object","properties":{"active":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable caller-provided question id, echoed in the answer."},"question":{"type":"string","description":"The question to display."},"detail":{"type":"string","description":"Optional supporting detail rendered with the question but kept out of option labels."},"header":{"type":"string","description":"Optional short heading/group label."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"User-facing label."},"description":{"type":"string","description":"Optional extra context rendered by capable UIs."}},"required":["label"],"additionalProperties":true},"description":"Optional choices the UI can render as a menu."},"multiSelect":{"type":"boolean","description":"Whether more than one option may be selected. Defaults to single-select."},"intent":{"type":"object","properties":{"kind":{"type":"string","const":"plan-review","description":"A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it."},"approve":{"type":"string","description":"The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`."},"callId":{"type":"string","description":"Logged tool invocation whose arguments contain the reviewed plan."}},"required":["kind","approve"],"additionalProperties":true,"description":"Optional presentation intent for capable UIs; absent asks for the generic option list."}},"required":["id","question"],"additionalProperties":true}},"state":{"type":"string","enum":["open","continued"]}},"required":["callId","questions","state"],"additionalProperties":true},"description":"Calls that can still take an answer, in ask order."},"settled":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string","description":"The settled call."},"answers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The answered question id."},"selected":{"type":"array","items":{"type":"string"},"description":"Selected option labels. May accompany custom text for a multi-select question."},"custom":{"type":"string","description":"Optional free-text \"Other\" answer."}},"required":["id","selected"],"additionalProperties":true},"description":"The recorded batch, one entry per question; empty when the late reply carried none."}},"required":["callId","answers"],"additionalProperties":true},"description":"Calls an answer settled, in settlement order."}},"required":["active","settled"],"additionalProperties":true,"description":"Timed questions that remain answerable in this Session, and the ones a late reply settled."},"goal":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"goal":{"type":"object","properties":{"objective":{"type":"string","description":"Human-requested completion objective."},"phase":{"type":"string","enum":["active","paused","blocked","complete"],"description":"Durable lifecycle phase."},"blockedReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable lower-kebab-case classification chosen by the blocking policy."},"message":{"type":"string","description":"Non-empty explanation shown to humans and models."}},"required":["code","message"],"additionalProperties":true,"description":"Present exactly while `phase` is `blocked`."},"maxGoalRounds":{"type":"number","description":"Total admitted goal-round cap."},"id":{"type":"string","description":"Stable goal identity."},"revision":{"type":"number","description":"Positive revision; every durable mutation increments it."}},"required":["objective","phase","maxGoalRounds","id","revision"],"additionalProperties":true,"description":"Current durable goal snapshot (the CAS ref for mutations rides on it)."},"roundsStarted":{"type":"number","description":"Highest admitted round number for this goal."},"createdAt":{"type":"number","description":"Epoch milliseconds of the create mutation."},"updatedAt":{"type":"number","description":"Epoch milliseconds of the latest mutation."}},"required":["goal","roundsStarted","createdAt","updatedAt"],"additionalProperties":true}],"description":"The session's current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`."},"plan":{"type":"object","properties":{"active":{"type":"boolean"},"pending":{"type":"boolean"}},"required":["active","pending"],"additionalProperties":true,"description":"Plan collaboration state folded from the plan command lifecycle and `plan/mode` events."}},"required":[],"additionalProperties":true,"description":"Provider-validated values; omitted keys are absent capabilities at this cut."}},"required":["asOfSeq","values"],"additionalProperties":true},"assistantStream":{"type":"object","properties":{"revision":{"type":"number"},"activeAttempt":{"type":"object","properties":{"attemptId":{"type":"string"},"startedAfterSeq":{"type":"number","description":"Last durable Session seq observed when this attempt started."},"turn":{"type":"number"},"step":{"type":"number"},"nextIndex":{"type":"number","description":"Dense position expected for the next live chunk frame."},"stream":{"type":"array","items":{},"description":"Compact detached stream accumulated at this opening revision."}},"required":["attemptId","startedAfterSeq","turn","step","nextIndex","stream"],"additionalProperties":true}},"required":["revision"],"additionalProperties":true}},"required":["type","header","cursor","records","hasMore","projections"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"assistant-stream"},"frame":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"start"},"attemptId":{"type":"string"},"revision":{"type":"number"},"startedAfterSeq":{"type":"number"},"turn":{"type":"number"},"step":{"type":"number"}},"required":["type","attemptId","revision","startedAfterSeq","turn","step"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"chunk"},"attemptId":{"type":"string"},"revision":{"type":"number"},"index":{"type":"number"},"time":{"type":"number"},"chunk":{}},"required":["type","attemptId","revision","index","time","chunk"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"end"},"attemptId":{"type":"string"},"revision":{"type":"number"},"index":{"type":"number","description":"Number of chunk frames represented by this terminal marker."},"outcome":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"committed"},"eventType":{"type":"string","enum":["assistant/message","assistant/attempt"]},"seq":{"type":"number"}},"required":["kind","eventType","seq"],"additionalProperties":true},{"type":"object","properties":{"kind":{"type":"string","const":"abandoned"}},"required":["kind"],"additionalProperties":true}]}},"required":["type","attemptId","revision","index","outcome"],"additionalProperties":true}]}},"required":["type","frame"],"additionalProperties":true}]},
|
|
1128
1585
|
},
|
|
1129
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1586
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":537,"column":3},
|
|
1130
1587
|
},
|
|
1131
|
-
{
|
|
1132
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/fork',
|
|
1588
|
+
'session/fork': {
|
|
1133
1589
|
service: 'sessionController',
|
|
1134
|
-
|
|
1135
|
-
method: 'fork',
|
|
1590
|
+
description: 'Fork one cold-readable exact event prefix into a new Session. An omitted boundary selects the latest completed-turn prefix; an open cut receives synthetic fork closers.',
|
|
1136
1591
|
invocation: { kind: 'direct' },
|
|
1137
1592
|
parameters: [
|
|
1138
1593
|
{
|
|
1139
1594
|
name: 'request',
|
|
1140
|
-
|
|
1595
|
+
description: 'source Session, optional exact inclusive event boundary, and migration preflight choice.',
|
|
1141
1596
|
source: 'json',
|
|
1142
1597
|
codec: {
|
|
1143
1598
|
mode: 'strict',
|
|
1144
1599
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionForkRequest',
|
|
1145
1600
|
create: _deepseek_ai_dsh_api_session_controller_session_fork_parameter_0$schema,
|
|
1601
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"atSeq":{"type":"number","description":"Exact inclusive source event seq; omission selects the latest completed-turn prefix."},"allowMigration":{"type":"boolean","description":"False asks the Host to check for required migration before forking. Defaults to true."}},"required":["sessionId"],"additionalProperties":true},
|
|
1602
|
+
},
|
|
1603
|
+
strictCodec: {
|
|
1604
|
+
mode: 'strict',
|
|
1605
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionForkRequest',
|
|
1606
|
+
create: _deepseek_ai_dsh_api_session_controller_session_fork_parameter_0_strict$schema,
|
|
1607
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"atSeq":{"type":"number","description":"Exact inclusive source event seq; omission selects the latest completed-turn prefix."},"allowMigration":{"type":"boolean","description":"False asks the Host to check for required migration before forking. Defaults to true."}},"required":["sessionId"],"additionalProperties":false},
|
|
1146
1608
|
},
|
|
1147
1609
|
},
|
|
1148
1610
|
],
|
|
@@ -1150,14 +1612,14 @@ export const TYPERT_REMOTE = {
|
|
|
1150
1612
|
mode: 'strict',
|
|
1151
1613
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionForkValue',
|
|
1152
1614
|
create: _deepseek_ai_dsh_api_session_controller_session_fork_result$schema,
|
|
1615
|
+
description: 'the new Session identity.',
|
|
1616
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":true},
|
|
1153
1617
|
},
|
|
1154
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1618
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":443,"column":9},
|
|
1155
1619
|
},
|
|
1156
|
-
{
|
|
1157
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/initializeDefaultModel',
|
|
1620
|
+
'session/initializeDefaultModel': {
|
|
1158
1621
|
service: 'sessionController',
|
|
1159
|
-
|
|
1160
|
-
method: 'initializeDefaultModel',
|
|
1622
|
+
description: 'Select the first available account model after login when no provider API key is configured.',
|
|
1161
1623
|
invocation: { kind: 'direct' },
|
|
1162
1624
|
parameters: [
|
|
1163
1625
|
],
|
|
@@ -1165,24 +1627,31 @@ export const TYPERT_REMOTE = {
|
|
|
1165
1627
|
mode: 'strict',
|
|
1166
1628
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/initializeDefaultModel:result',
|
|
1167
1629
|
create: _deepseek_ai_dsh_api_session_controller_session_initializeDefaultModel_result$schema,
|
|
1630
|
+
description: 'after saving the first available model or retaining the existing default.',
|
|
1631
|
+
jsonSchemaError: 'typert tool schema: unsupported void value',
|
|
1168
1632
|
},
|
|
1169
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1633
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":320,"column":9},
|
|
1170
1634
|
},
|
|
1171
|
-
{
|
|
1172
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/list',
|
|
1635
|
+
'session/list': {
|
|
1173
1636
|
service: 'sessionController',
|
|
1174
|
-
|
|
1175
|
-
method: 'list',
|
|
1637
|
+
description: 'Read all visible Session rows without resuming an Agent.',
|
|
1176
1638
|
invocation: { kind: 'direct' },
|
|
1177
1639
|
parameters: [
|
|
1178
1640
|
{
|
|
1179
1641
|
name: '_request',
|
|
1180
|
-
|
|
1642
|
+
description: 'reserved empty list request.',
|
|
1181
1643
|
source: 'json',
|
|
1182
1644
|
codec: {
|
|
1183
1645
|
mode: 'strict',
|
|
1184
1646
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionListRequest',
|
|
1185
1647
|
create: _deepseek_ai_dsh_api_session_controller_session_list_parameter_0$schema,
|
|
1648
|
+
jsonSchema: {"type":"object","properties":{"cursor":{"type":"string"}},"required":[],"additionalProperties":true},
|
|
1649
|
+
},
|
|
1650
|
+
strictCodec: {
|
|
1651
|
+
mode: 'strict',
|
|
1652
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionListRequest',
|
|
1653
|
+
create: _deepseek_ai_dsh_api_session_controller_session_list_parameter_0_strict$schema,
|
|
1654
|
+
jsonSchema: {"type":"object","properties":{"cursor":{"type":"string"}},"required":[],"additionalProperties":false},
|
|
1186
1655
|
},
|
|
1187
1656
|
},
|
|
1188
1657
|
],
|
|
@@ -1191,14 +1660,14 @@ export const TYPERT_REMOTE = {
|
|
|
1191
1660
|
mode: 'strict',
|
|
1192
1661
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionListValue',
|
|
1193
1662
|
create: _deepseek_ai_dsh_api_session_controller_session_list_result$schema,
|
|
1663
|
+
description: 'visible Session summaries ordered by activity.',
|
|
1664
|
+
jsonSchema: {"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"agentAvailable":{"type":"boolean","description":"Whether this Session currently owns a live Agent."},"formatStatus":{"type":"string","enum":["current","migration-required"],"description":"Current for attached Sessions; otherwise the persistence format status when reported."},"sessionId":{"type":"string"},"updatedAt":{"type":"number"},"running":{"type":"boolean"},"blank":{"type":"boolean"},"parentSessionId":{"type":"string"},"origin":{"type":"string","const":"subagent"},"cwd":{"type":"string"},"projections":{"type":"object","properties":{"kind":{"type":"string","enum":["cached","sequenced"],"description":"`sequenced`: the Host's live registry produced the block for an attached Session, so `asOfSeq` is comparable with baselines and frames of the same connection. `cached`: a header-only listing viewed the block from the persisted projection cache, so `asOfSeq` is the stored record's own watermark and must not be compared with the connected Session's values."},"asOfSeq":{"type":"number","description":"Watermark of the block in the sequence space named by `kind`."},"values":{"type":"object","properties":{"inbox":{"type":"object","properties":{"next-turn":{"type":"array","items":{}},"next-step":{"type":"array","items":{}}},"required":["next-turn","next-step"],"additionalProperties":true,"description":"Pending agent input reconstructed from durable inbox splices."},"workingDirectory":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Recorded current directory for Session observations, or null when none is recorded."},"agentPreset":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Preset the Session runs, or null when the deployment composes none."},"title":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"The session's current normalized title — the latest `session/title` event's text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume."},"todos":{"oneOf":[{"type":"null","const":null},{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","description":"What this task is — a short imperative line shown in the UI."},"status":{"type":"string","enum":["completed","pending","in_progress"],"description":"Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several."}},"required":["content","status"],"additionalProperties":true}}],"description":"The agent's current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins."},"sessionListMetadata":{"type":"object","properties":{"blank":{"type":"boolean","description":"Whether the folded prefix contains no turn."},"lastPromptAt":{"oneOf":[{"type":"null","const":null},{"type":"number"}],"description":"Latest human-authored prompt time in the folded prefix."}},"required":["blank","lastPromptAt"],"additionalProperties":true,"description":"Persisted facts used to summarize a Session without activating it."},"imageLimits":{"type":"object","properties":{"maxImageBytes":{"type":"number"},"maxImagesPerMessage":{"type":"number"},"maxMessageImageBytes":{"type":"number"},"maxImagePixels":{"type":"number"},"maxImageDimension":{"type":"number","description":"Maximum intrinsic width and maximum intrinsic height in pixels for one image."},"mediaTypes":{"type":"array","items":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]}}},"required":["maxImageBytes","maxImagesPerMessage","maxMessageImageBytes","maxImagePixels","maxImageDimension","mediaTypes"],"additionalProperties":true,"description":"Image-intake limits enforced by the Session prompt endpoint."},"modelSelection":{"type":"object","properties":{"lastUsed":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection consumed by the latest recorded model request."},"next":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection the next request should use, falling back to {@link lastUsed}."}},"required":["lastUsed","next"],"additionalProperties":true,"description":"Durable model selection already used and selected for the next request."},"permissions":{"type":"object","properties":{"currentValue":{"type":"string","description":"The effective current value: a configured preset key, `auto`, or `custom`."}},"required":["currentValue"],"additionalProperties":true,"description":"The session's current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control."},"subagentCatalog":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"one-shot"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"external"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"continuable"},"label":{"type":"string"}},"required":["id","createdAt","mode","label"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"unknown"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true}]},"description":"Direct children in parent catalog event order, excluding fork-inherited facts."},"subagentTiming":{"type":"object","properties":{"settledMs":{"type":"number","description":"Milliseconds accumulated across completed turns after the child's own descriptor."},"active":{"type":"object","properties":{"since":{"type":"number","description":"Start of the open turn."},"through":{"type":"number","description":"Latest event time folded into this projection cut."}},"required":["since","through"],"additionalProperties":true,"description":"Same-cut bounds of the currently open turn, when one has not reached `turn/end`."},"lastTurnCompleted":{"type":"boolean","description":"Whether the latest closed turn after the child's own descriptor completed normally; absent while a turn is open or before one closes."}},"required":["settledMs"],"additionalProperties":true,"description":"Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session."},"subagent":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"mode":{"type":"string","const":"one-shot","description":"A terminal one-shot child."},"label":{"type":"string","description":"Optional durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child's OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed's replayed ancestor descriptor."}},"required":["mode","seq"],"additionalProperties":true},{"type":"object","properties":{"mode":{"type":"string","const":"continuable","description":"A resumable conversation."},"label":{"type":"string","description":"Durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof."}},"required":["mode","label","seq"],"additionalProperties":true}],"description":"Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional."},"tokenUsage":{"type":"object","properties":{"uncachedInputTokens":{"type":"number"},"outputTokens":{"type":"number"},"cacheReadTokens":{"type":"number"},"cacheWriteTokens":{"type":"number"}},"required":["uncachedInputTokens","outputTokens","cacheReadTokens","cacheWriteTokens"],"additionalProperties":true,"description":"Provider-reported usage accumulated across the complete durable log."},"contextPressure":{"type":"object","properties":{"pressureTokens":{"type":"number","description":"Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage."},"projectedTokens":{"type":"number","description":"What the NEXT request's prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage."},"contextWindow":{"type":"number","description":"Newest recorded route capacity; absent when no adapter advertised one."}},"required":[],"additionalProperties":true,"description":"Newest request pressure paired with the newest known route capacity."},"contextBreakdown":{"type":"object","properties":{"systemTokens":{"type":"number","description":"Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists."},"toolsTokens":{"type":"number","description":"Heuristic tokens of the newest request envelope's tool schemas; 0 before any request."},"messageTokens":{"type":"number","description":"Heuristic tokens of every other visible surface node, including superseded system prompts."}},"required":["systemTokens","toolsTokens","messageTokens"],"additionalProperties":true,"description":"Heuristic system/tools/message composition of the next request."},"agentTeam":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string","enum":["lead","teammate"]},"phase":{"type":"string","enum":["failed","provisioning","active"],"description":"Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status."},"error":{"type":"string"}},"required":["id","name","role","phase"],"additionalProperties":true}},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"number"},"subject":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["completed","pending","in_progress","deleted"]},"blockedBy":{"type":"array","items":{"type":"string"}},"writeScopes":{"type":"array","items":{"type":"string"}},"ownerName":{"type":"string"},"ready":{"type":"boolean"},"writeScopeWarnings":{"type":"array","items":{"type":"string"}}},"required":["id","revision","subject","description","status","blockedBy","writeScopes","ready","writeScopeWarnings"],"additionalProperties":true}},"failure":{"type":"string"}},"required":["members","tasks"],"additionalProperties":true,"description":"Durable roster and non-deleted task board of the Team rooted at the projected Session."},"userQuestions":{"type":"object","properties":{"active":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable caller-provided question id, echoed in the answer."},"question":{"type":"string","description":"The question to display."},"detail":{"type":"string","description":"Optional supporting detail rendered with the question but kept out of option labels."},"header":{"type":"string","description":"Optional short heading/group label."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"User-facing label."},"description":{"type":"string","description":"Optional extra context rendered by capable UIs."}},"required":["label"],"additionalProperties":true},"description":"Optional choices the UI can render as a menu."},"multiSelect":{"type":"boolean","description":"Whether more than one option may be selected. Defaults to single-select."},"intent":{"type":"object","properties":{"kind":{"type":"string","const":"plan-review","description":"A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it."},"approve":{"type":"string","description":"The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`."},"callId":{"type":"string","description":"Logged tool invocation whose arguments contain the reviewed plan."}},"required":["kind","approve"],"additionalProperties":true,"description":"Optional presentation intent for capable UIs; absent asks for the generic option list."}},"required":["id","question"],"additionalProperties":true}},"state":{"type":"string","enum":["open","continued"]}},"required":["callId","questions","state"],"additionalProperties":true},"description":"Calls that can still take an answer, in ask order."},"settled":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string","description":"The settled call."},"answers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The answered question id."},"selected":{"type":"array","items":{"type":"string"},"description":"Selected option labels. May accompany custom text for a multi-select question."},"custom":{"type":"string","description":"Optional free-text \"Other\" answer."}},"required":["id","selected"],"additionalProperties":true},"description":"The recorded batch, one entry per question; empty when the late reply carried none."}},"required":["callId","answers"],"additionalProperties":true},"description":"Calls an answer settled, in settlement order."}},"required":["active","settled"],"additionalProperties":true,"description":"Timed questions that remain answerable in this Session, and the ones a late reply settled."},"goal":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"goal":{"type":"object","properties":{"objective":{"type":"string","description":"Human-requested completion objective."},"phase":{"type":"string","enum":["active","paused","blocked","complete"],"description":"Durable lifecycle phase."},"blockedReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable lower-kebab-case classification chosen by the blocking policy."},"message":{"type":"string","description":"Non-empty explanation shown to humans and models."}},"required":["code","message"],"additionalProperties":true,"description":"Present exactly while `phase` is `blocked`."},"maxGoalRounds":{"type":"number","description":"Total admitted goal-round cap."},"id":{"type":"string","description":"Stable goal identity."},"revision":{"type":"number","description":"Positive revision; every durable mutation increments it."}},"required":["objective","phase","maxGoalRounds","id","revision"],"additionalProperties":true,"description":"Current durable goal snapshot (the CAS ref for mutations rides on it)."},"roundsStarted":{"type":"number","description":"Highest admitted round number for this goal."},"createdAt":{"type":"number","description":"Epoch milliseconds of the create mutation."},"updatedAt":{"type":"number","description":"Epoch milliseconds of the latest mutation."}},"required":["goal","roundsStarted","createdAt","updatedAt"],"additionalProperties":true}],"description":"The session's current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`."},"plan":{"type":"object","properties":{"active":{"type":"boolean"},"pending":{"type":"boolean"}},"required":["active","pending"],"additionalProperties":true,"description":"Plan collaboration state folded from the plan command lifecycle and `plan/mode` events."}},"required":[],"additionalProperties":true,"description":"Provider-validated values present in the block; omitted keys remain unknown."}},"required":["kind","asOfSeq","values"],"additionalProperties":true}},"required":["agentAvailable","sessionId","updatedAt","running","blank"],"additionalProperties":true}}},"required":["items"],"additionalProperties":true},
|
|
1194
1665
|
},
|
|
1195
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1666
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":276,"column":9},
|
|
1196
1667
|
},
|
|
1197
|
-
{
|
|
1198
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/modelCatalog',
|
|
1668
|
+
'session/modelCatalog': {
|
|
1199
1669
|
service: 'sessionController',
|
|
1200
|
-
|
|
1201
|
-
method: 'modelCatalog',
|
|
1670
|
+
description: 'Describe every currently routable model for Host-generation selectors.',
|
|
1202
1671
|
invocation: { kind: 'direct' },
|
|
1203
1672
|
parameters: [
|
|
1204
1673
|
],
|
|
@@ -1206,24 +1675,31 @@ export const TYPERT_REMOTE = {
|
|
|
1206
1675
|
mode: 'strict',
|
|
1207
1676
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#ModelCatalog',
|
|
1208
1677
|
create: _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema,
|
|
1678
|
+
description: 'provider-grouped models, the deployment default, and isolated provider failures.',
|
|
1679
|
+
jsonSchema: {"type":"object","properties":{"default":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true},"routableProviders":{"type":"array","items":{"type":"string"},"description":"Provider routes with at least one currently available catalog model."},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"reasoning":{"type":"object","properties":{"efforts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name"],"additionalProperties":true}},"defaultEffort":{"type":"string"}},"required":["efforts"],"additionalProperties":true}},"required":["id","name"],"additionalProperties":true}}},"required":["id","name","models"],"additionalProperties":true}},"failures":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"message":{"type":"string"}},"required":["id","name","message"],"additionalProperties":true}}},"required":["default","routableProviders","groups","failures"],"additionalProperties":true},
|
|
1209
1680
|
},
|
|
1210
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1681
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":338,"column":3},
|
|
1211
1682
|
},
|
|
1212
|
-
{
|
|
1213
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/openWorkspacePath',
|
|
1683
|
+
'session/openWorkspacePath': {
|
|
1214
1684
|
service: 'sessionController',
|
|
1215
|
-
|
|
1216
|
-
method: 'openWorkspacePath',
|
|
1685
|
+
description: 'Verify one path through the composed filesystem and open it on the Host desktop.',
|
|
1217
1686
|
invocation: { kind: 'direct' },
|
|
1218
1687
|
parameters: [
|
|
1219
1688
|
{
|
|
1220
1689
|
name: 'request',
|
|
1221
|
-
|
|
1690
|
+
description: 'path after best-effort Session workspace resolution.',
|
|
1222
1691
|
source: 'json',
|
|
1223
1692
|
codec: {
|
|
1224
1693
|
mode: 'strict',
|
|
1225
1694
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionOpenWorkspacePathRequest',
|
|
1226
1695
|
create: _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema,
|
|
1696
|
+
jsonSchema: {"type":"object","properties":{"action":{"type":"string","const":"reveal","description":"File-manager navigation when requested; omission uses the default application."},"application":{"type":"string","description":"Registered application identifier; ignored for reveal. Omission preserves the operating system default."},"path":{"type":"string","description":"Path after best-effort Session workspace resolution, in Host filesystem syntax."}},"required":["path"],"additionalProperties":true},
|
|
1697
|
+
},
|
|
1698
|
+
strictCodec: {
|
|
1699
|
+
mode: 'strict',
|
|
1700
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionOpenWorkspacePathRequest',
|
|
1701
|
+
create: _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0_strict$schema,
|
|
1702
|
+
jsonSchema: {"type":"object","properties":{"action":{"type":"string","const":"reveal","description":"File-manager navigation when requested; omission uses the default application."},"application":{"type":"string","description":"Registered application identifier; ignored for reveal. Omission preserves the operating system default."},"path":{"type":"string","description":"Path after best-effort Session workspace resolution, in Host filesystem syntax."}},"required":["path"],"additionalProperties":false},
|
|
1227
1703
|
},
|
|
1228
1704
|
},
|
|
1229
1705
|
],
|
|
@@ -1232,24 +1708,31 @@ export const TYPERT_REMOTE = {
|
|
|
1232
1708
|
mode: 'strict',
|
|
1233
1709
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionOpenWorkspacePathValue',
|
|
1234
1710
|
create: _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_result$schema,
|
|
1711
|
+
description: 'confirmation after the native opener accepts the path.',
|
|
1712
|
+
jsonSchema: {"type":"object","properties":{"opened":{"type":"boolean","const":true}},"required":["opened"],"additionalProperties":true},
|
|
1235
1713
|
},
|
|
1236
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1714
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":368,"column":9},
|
|
1237
1715
|
},
|
|
1238
|
-
{
|
|
1239
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/page',
|
|
1716
|
+
'session/page': {
|
|
1240
1717
|
service: 'sessionController',
|
|
1241
|
-
|
|
1242
|
-
method: 'page',
|
|
1718
|
+
description: 'Read one cold-safe, message-aligned Session history page.',
|
|
1243
1719
|
invocation: { kind: 'direct' },
|
|
1244
1720
|
parameters: [
|
|
1245
1721
|
{
|
|
1246
1722
|
name: 'request',
|
|
1247
|
-
|
|
1723
|
+
description: 'durable address, backward cursor, and page budget.',
|
|
1248
1724
|
source: 'json',
|
|
1249
1725
|
codec: {
|
|
1250
1726
|
mode: 'strict',
|
|
1251
1727
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPageRequest',
|
|
1252
1728
|
create: _deepseek_ai_dsh_api_session_controller_session_page_parameter_0$schema,
|
|
1729
|
+
jsonSchema: {"type":"object","properties":{"address":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"session"},"sessionId":{"type":"string"}},"required":["kind","sessionId"],"additionalProperties":true},{"type":"object","properties":{"kind":{"type":"string","const":"subagent"},"parentSessionId":{"type":"string"},"childSessionId":{"type":"string"},"mode":{"type":"string","enum":["one-shot","continuable","unknown"]}},"required":["kind","parentSessionId","childSessionId","mode"],"additionalProperties":true}]},"throughSeq":{"type":"number","description":"Inclusive log cut obtained from the corresponding follow opening frame."},"beforeSeq":{"type":"number"},"maxMessages":{"type":"number"},"turnWindow":{"type":"object","properties":{"minMessages":{"type":"number","description":"Minimum append-origin user/assistant messages; must not exceed maxMessages."},"minTurns":{"type":"number","description":"Minimum Turn starts crossed, including the partial Turn at beforeSeq."}},"required":["minMessages","minTurns"],"additionalProperties":true,"description":"Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins."}},"required":["address","throughSeq"],"additionalProperties":true},
|
|
1730
|
+
},
|
|
1731
|
+
strictCodec: {
|
|
1732
|
+
mode: 'strict',
|
|
1733
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPageRequest',
|
|
1734
|
+
create: _deepseek_ai_dsh_api_session_controller_session_page_parameter_0_strict$schema,
|
|
1735
|
+
jsonSchema: {"type":"object","properties":{"address":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"session"},"sessionId":{"type":"string"}},"required":["kind","sessionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"subagent"},"parentSessionId":{"type":"string"},"childSessionId":{"type":"string"},"mode":{"type":"string","enum":["one-shot","continuable","unknown"]}},"required":["kind","parentSessionId","childSessionId","mode"],"additionalProperties":false}]},"throughSeq":{"type":"number","description":"Inclusive log cut obtained from the corresponding follow opening frame."},"beforeSeq":{"type":"number"},"maxMessages":{"type":"number"},"turnWindow":{"type":"object","properties":{"minMessages":{"type":"number","description":"Minimum append-origin user/assistant messages; must not exceed maxMessages."},"minTurns":{"type":"number","description":"Minimum Turn starts crossed, including the partial Turn at beforeSeq."}},"required":["minMessages","minTurns"],"additionalProperties":false,"description":"Stop at a Turn start after both minima, unless maxMessages or history exhaustion wins."}},"required":["address","throughSeq"],"additionalProperties":false},
|
|
1253
1736
|
},
|
|
1254
1737
|
},
|
|
1255
1738
|
],
|
|
@@ -1258,24 +1741,31 @@ export const TYPERT_REMOTE = {
|
|
|
1258
1741
|
mode: 'strict',
|
|
1259
1742
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPage',
|
|
1260
1743
|
create: _deepseek_ai_dsh_api_session_controller_session_page_result$schema,
|
|
1744
|
+
description: 'one chronological page.',
|
|
1745
|
+
jsonSchema: {"type":"object","properties":{"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"event"},"event":{"type":"object","properties":{"type":{"type":"string"},"seq":{"type":"number"},"time":{"type":"number"},"data":{},"ignorable":{"type":"boolean","const":true},"sourceEventSeqs":{"description":"Earlier sources on current surface events; opaque JSON on unknown ignorable events."},"surfaceOp":{"description":"Canonical placement on current surface events; opaque JSON on unknown ignorable events."}},"required":["type","seq","time","data"],"additionalProperties":true}},"required":["type","event"],"additionalProperties":true}},"hasMore":{"type":"boolean"}},"required":["records","hasMore"],"additionalProperties":true},
|
|
1261
1746
|
},
|
|
1262
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1747
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":525,"column":3},
|
|
1263
1748
|
},
|
|
1264
|
-
{
|
|
1265
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/projections',
|
|
1749
|
+
'session/projections': {
|
|
1266
1750
|
service: 'sessionController',
|
|
1267
|
-
|
|
1268
|
-
method: 'projections',
|
|
1751
|
+
description: 'Read exact projections, returning cached hints only when migration is required.',
|
|
1269
1752
|
invocation: { kind: 'direct' },
|
|
1270
1753
|
parameters: [
|
|
1271
1754
|
{
|
|
1272
1755
|
name: 'request',
|
|
1273
|
-
|
|
1756
|
+
description: 'Session whose current values are required.',
|
|
1274
1757
|
source: 'json',
|
|
1275
1758
|
codec: {
|
|
1276
1759
|
mode: 'strict',
|
|
1277
1760
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionProjectionsRequest',
|
|
1278
1761
|
create: _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema,
|
|
1762
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":true},
|
|
1763
|
+
},
|
|
1764
|
+
strictCodec: {
|
|
1765
|
+
mode: 'strict',
|
|
1766
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionProjectionsRequest',
|
|
1767
|
+
create: _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0_strict$schema,
|
|
1768
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":false},
|
|
1279
1769
|
},
|
|
1280
1770
|
},
|
|
1281
1771
|
],
|
|
@@ -1284,24 +1774,31 @@ export const TYPERT_REMOTE = {
|
|
|
1284
1774
|
mode: 'strict',
|
|
1285
1775
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionProjectionsValue',
|
|
1286
1776
|
create: _deepseek_ai_dsh_api_session_controller_session_projections_result$schema,
|
|
1777
|
+
description: 'a sequenced baseline, cached hints when migration is deferred, or null when absent.',
|
|
1778
|
+
jsonSchema: {"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"asOfSeq":{"type":"number"},"values":{"type":"object","properties":{"inbox":{"type":"object","properties":{"next-turn":{"type":"array","items":{}},"next-step":{"type":"array","items":{}}},"required":["next-turn","next-step"],"additionalProperties":true,"description":"Pending agent input reconstructed from durable inbox splices."},"workingDirectory":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Recorded current directory for Session observations, or null when none is recorded."},"agentPreset":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Preset the Session runs, or null when the deployment composes none."},"title":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"The session's current normalized title — the latest `session/title` event's text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume."},"todos":{"oneOf":[{"type":"null","const":null},{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","description":"What this task is — a short imperative line shown in the UI."},"status":{"type":"string","enum":["completed","pending","in_progress"],"description":"Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several."}},"required":["content","status"],"additionalProperties":true}}],"description":"The agent's current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins."},"sessionListMetadata":{"type":"object","properties":{"blank":{"type":"boolean","description":"Whether the folded prefix contains no turn."},"lastPromptAt":{"oneOf":[{"type":"null","const":null},{"type":"number"}],"description":"Latest human-authored prompt time in the folded prefix."}},"required":["blank","lastPromptAt"],"additionalProperties":true,"description":"Persisted facts used to summarize a Session without activating it."},"imageLimits":{"type":"object","properties":{"maxImageBytes":{"type":"number"},"maxImagesPerMessage":{"type":"number"},"maxMessageImageBytes":{"type":"number"},"maxImagePixels":{"type":"number"},"maxImageDimension":{"type":"number","description":"Maximum intrinsic width and maximum intrinsic height in pixels for one image."},"mediaTypes":{"type":"array","items":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]}}},"required":["maxImageBytes","maxImagesPerMessage","maxMessageImageBytes","maxImagePixels","maxImageDimension","mediaTypes"],"additionalProperties":true,"description":"Image-intake limits enforced by the Session prompt endpoint."},"modelSelection":{"type":"object","properties":{"lastUsed":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection consumed by the latest recorded model request."},"next":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection the next request should use, falling back to {@link lastUsed}."}},"required":["lastUsed","next"],"additionalProperties":true,"description":"Durable model selection already used and selected for the next request."},"permissions":{"type":"object","properties":{"currentValue":{"type":"string","description":"The effective current value: a configured preset key, `auto`, or `custom`."}},"required":["currentValue"],"additionalProperties":true,"description":"The session's current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control."},"subagentCatalog":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"one-shot"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"external"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"continuable"},"label":{"type":"string"}},"required":["id","createdAt","mode","label"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"unknown"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true}]},"description":"Direct children in parent catalog event order, excluding fork-inherited facts."},"subagentTiming":{"type":"object","properties":{"settledMs":{"type":"number","description":"Milliseconds accumulated across completed turns after the child's own descriptor."},"active":{"type":"object","properties":{"since":{"type":"number","description":"Start of the open turn."},"through":{"type":"number","description":"Latest event time folded into this projection cut."}},"required":["since","through"],"additionalProperties":true,"description":"Same-cut bounds of the currently open turn, when one has not reached `turn/end`."},"lastTurnCompleted":{"type":"boolean","description":"Whether the latest closed turn after the child's own descriptor completed normally; absent while a turn is open or before one closes."}},"required":["settledMs"],"additionalProperties":true,"description":"Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session."},"subagent":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"mode":{"type":"string","const":"one-shot","description":"A terminal one-shot child."},"label":{"type":"string","description":"Optional durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child's OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed's replayed ancestor descriptor."}},"required":["mode","seq"],"additionalProperties":true},{"type":"object","properties":{"mode":{"type":"string","const":"continuable","description":"A resumable conversation."},"label":{"type":"string","description":"Durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof."}},"required":["mode","label","seq"],"additionalProperties":true}],"description":"Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional."},"tokenUsage":{"type":"object","properties":{"uncachedInputTokens":{"type":"number"},"outputTokens":{"type":"number"},"cacheReadTokens":{"type":"number"},"cacheWriteTokens":{"type":"number"}},"required":["uncachedInputTokens","outputTokens","cacheReadTokens","cacheWriteTokens"],"additionalProperties":true,"description":"Provider-reported usage accumulated across the complete durable log."},"contextPressure":{"type":"object","properties":{"pressureTokens":{"type":"number","description":"Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage."},"projectedTokens":{"type":"number","description":"What the NEXT request's prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage."},"contextWindow":{"type":"number","description":"Newest recorded route capacity; absent when no adapter advertised one."}},"required":[],"additionalProperties":true,"description":"Newest request pressure paired with the newest known route capacity."},"contextBreakdown":{"type":"object","properties":{"systemTokens":{"type":"number","description":"Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists."},"toolsTokens":{"type":"number","description":"Heuristic tokens of the newest request envelope's tool schemas; 0 before any request."},"messageTokens":{"type":"number","description":"Heuristic tokens of every other visible surface node, including superseded system prompts."}},"required":["systemTokens","toolsTokens","messageTokens"],"additionalProperties":true,"description":"Heuristic system/tools/message composition of the next request."},"agentTeam":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string","enum":["lead","teammate"]},"phase":{"type":"string","enum":["failed","provisioning","active"],"description":"Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status."},"error":{"type":"string"}},"required":["id","name","role","phase"],"additionalProperties":true}},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"number"},"subject":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["completed","pending","in_progress","deleted"]},"blockedBy":{"type":"array","items":{"type":"string"}},"writeScopes":{"type":"array","items":{"type":"string"}},"ownerName":{"type":"string"},"ready":{"type":"boolean"},"writeScopeWarnings":{"type":"array","items":{"type":"string"}}},"required":["id","revision","subject","description","status","blockedBy","writeScopes","ready","writeScopeWarnings"],"additionalProperties":true}},"failure":{"type":"string"}},"required":["members","tasks"],"additionalProperties":true,"description":"Durable roster and non-deleted task board of the Team rooted at the projected Session."},"userQuestions":{"type":"object","properties":{"active":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable caller-provided question id, echoed in the answer."},"question":{"type":"string","description":"The question to display."},"detail":{"type":"string","description":"Optional supporting detail rendered with the question but kept out of option labels."},"header":{"type":"string","description":"Optional short heading/group label."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"User-facing label."},"description":{"type":"string","description":"Optional extra context rendered by capable UIs."}},"required":["label"],"additionalProperties":true},"description":"Optional choices the UI can render as a menu."},"multiSelect":{"type":"boolean","description":"Whether more than one option may be selected. Defaults to single-select."},"intent":{"type":"object","properties":{"kind":{"type":"string","const":"plan-review","description":"A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it."},"approve":{"type":"string","description":"The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`."},"callId":{"type":"string","description":"Logged tool invocation whose arguments contain the reviewed plan."}},"required":["kind","approve"],"additionalProperties":true,"description":"Optional presentation intent for capable UIs; absent asks for the generic option list."}},"required":["id","question"],"additionalProperties":true}},"state":{"type":"string","enum":["open","continued"]}},"required":["callId","questions","state"],"additionalProperties":true},"description":"Calls that can still take an answer, in ask order."},"settled":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string","description":"The settled call."},"answers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The answered question id."},"selected":{"type":"array","items":{"type":"string"},"description":"Selected option labels. May accompany custom text for a multi-select question."},"custom":{"type":"string","description":"Optional free-text \"Other\" answer."}},"required":["id","selected"],"additionalProperties":true},"description":"The recorded batch, one entry per question; empty when the late reply carried none."}},"required":["callId","answers"],"additionalProperties":true},"description":"Calls an answer settled, in settlement order."}},"required":["active","settled"],"additionalProperties":true,"description":"Timed questions that remain answerable in this Session, and the ones a late reply settled."},"goal":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"goal":{"type":"object","properties":{"objective":{"type":"string","description":"Human-requested completion objective."},"phase":{"type":"string","enum":["active","paused","blocked","complete"],"description":"Durable lifecycle phase."},"blockedReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable lower-kebab-case classification chosen by the blocking policy."},"message":{"type":"string","description":"Non-empty explanation shown to humans and models."}},"required":["code","message"],"additionalProperties":true,"description":"Present exactly while `phase` is `blocked`."},"maxGoalRounds":{"type":"number","description":"Total admitted goal-round cap."},"id":{"type":"string","description":"Stable goal identity."},"revision":{"type":"number","description":"Positive revision; every durable mutation increments it."}},"required":["objective","phase","maxGoalRounds","id","revision"],"additionalProperties":true,"description":"Current durable goal snapshot (the CAS ref for mutations rides on it)."},"roundsStarted":{"type":"number","description":"Highest admitted round number for this goal."},"createdAt":{"type":"number","description":"Epoch milliseconds of the create mutation."},"updatedAt":{"type":"number","description":"Epoch milliseconds of the latest mutation."}},"required":["goal","roundsStarted","createdAt","updatedAt"],"additionalProperties":true}],"description":"The session's current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`."},"plan":{"type":"object","properties":{"active":{"type":"boolean"},"pending":{"type":"boolean"}},"required":["active","pending"],"additionalProperties":true,"description":"Plan collaboration state folded from the plan command lifecycle and `plan/mode` events."}},"required":[],"additionalProperties":true,"description":"Provider-validated values; omitted keys are absent capabilities at this cut."},"kind":{"type":"string","const":"sequenced"}},"required":["asOfSeq","values","kind"],"additionalProperties":true},{"type":"object","properties":{"kind":{"type":"string","const":"migration-required"},"values":{"type":"object","properties":{"inbox":{"type":"object","properties":{"next-turn":{"type":"array","items":{}},"next-step":{"type":"array","items":{}}},"required":["next-turn","next-step"],"additionalProperties":true,"description":"Pending agent input reconstructed from durable inbox splices."},"workingDirectory":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Recorded current directory for Session observations, or null when none is recorded."},"agentPreset":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Preset the Session runs, or null when the deployment composes none."},"title":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"The session's current normalized title — the latest `session/title` event's text (last-wins), or `null` before the first title lands. A plain string: the shape the client list rows consume."},"todos":{"oneOf":[{"type":"null","const":null},{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","description":"What this task is — a short imperative line shown in the UI."},"status":{"type":"string","enum":["completed","pending","in_progress"],"description":"Lifecycle state. `in_progress` marks a task being worked now; parallel work may mark several."}},"required":["content","status"],"additionalProperties":true}}],"description":"The agent's current whole todo list (the latest `todo/write` snapshot), or `null` before the first write. Whole-value rule: every `todo/write` carries the complete replacement list, so the fold is last-wins."},"sessionListMetadata":{"type":"object","properties":{"blank":{"type":"boolean","description":"Whether the folded prefix contains no turn."},"lastPromptAt":{"oneOf":[{"type":"null","const":null},{"type":"number"}],"description":"Latest human-authored prompt time in the folded prefix."}},"required":["blank","lastPromptAt"],"additionalProperties":true,"description":"Persisted facts used to summarize a Session without activating it."},"imageLimits":{"type":"object","properties":{"maxImageBytes":{"type":"number"},"maxImagesPerMessage":{"type":"number"},"maxMessageImageBytes":{"type":"number"},"maxImagePixels":{"type":"number"},"maxImageDimension":{"type":"number","description":"Maximum intrinsic width and maximum intrinsic height in pixels for one image."},"mediaTypes":{"type":"array","items":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]}}},"required":["maxImageBytes","maxImagesPerMessage","maxMessageImageBytes","maxImagePixels","maxImageDimension","mediaTypes"],"additionalProperties":true,"description":"Image-intake limits enforced by the Session prompt endpoint."},"modelSelection":{"type":"object","properties":{"lastUsed":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection consumed by the latest recorded model request."},"next":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}],"description":"Selection the next request should use, falling back to {@link lastUsed}."}},"required":["lastUsed","next"],"additionalProperties":true,"description":"Durable model selection already used and selected for the next request."},"permissions":{"type":"object","properties":{"currentValue":{"type":"string","description":"The effective current value: a configured preset key, `auto`, or `custom`."}},"required":["currentValue"],"additionalProperties":true,"description":"The session's current permission, folded from the three whole-value knob events (`permission/preset`, `sandbox/mode`, `approval/policy`) over the composition defaults. Selectable options come from the process-level catalog Remote. Key absence means no permission service is composed — clients hide the control."},"subagentCatalog":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"one-shot"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"external"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"continuable"},"label":{"type":"string"}},"required":["id","createdAt","mode","label"],"additionalProperties":true},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"number"},"mode":{"type":"string","const":"unknown"},"label":{"type":"string"}},"required":["id","createdAt","mode"],"additionalProperties":true}]},"description":"Direct children in parent catalog event order, excluding fork-inherited facts."},"subagentTiming":{"type":"object","properties":{"settledMs":{"type":"number","description":"Milliseconds accumulated across completed turns after the child's own descriptor."},"active":{"type":"object","properties":{"since":{"type":"number","description":"Start of the open turn."},"through":{"type":"number","description":"Latest event time folded into this projection cut."}},"required":["since","through"],"additionalProperties":true,"description":"Same-cut bounds of the currently open turn, when one has not reached `turn/end`."},"lastTurnCompleted":{"type":"boolean","description":"Whether the latest closed turn after the child's own descriptor completed normally; absent while a turn is open or before one closes."}},"required":["settledMs"],"additionalProperties":true,"description":"Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session."},"subagent":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"mode":{"type":"string","const":"one-shot","description":"A terminal one-shot child."},"label":{"type":"string","description":"Optional durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the `subagent/descriptor` event this identity was folded from. `session.isOwnSeq(seq)` proves the identity comes from the child's OWN log suffix — where a descriptor is immutable once appended — and not from a fork seed's replayed ancestor descriptor."}},"required":["mode","seq"],"additionalProperties":true},{"type":"object","properties":{"mode":{"type":"string","const":"continuable","description":"A resumable conversation."},"label":{"type":"string","description":"Durable creation label from the child's descriptor."},"seq":{"type":"number","description":"Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof."}},"required":["mode","label","seq"],"additionalProperties":true}],"description":"Identity of a descriptor-backed subagent session. `null` ⟺ no valid descriptor (missing, malformed, or unrecognized-version — deliberately undistinguished). The sentinel is deliberately serializable: a value pushed over JSON transports must survive `JSON.stringify` losslessly, where an `undefined` field would be dropped and a stale identity would survive on the receiving side. The entry itself stays non-optional."},"tokenUsage":{"type":"object","properties":{"uncachedInputTokens":{"type":"number"},"outputTokens":{"type":"number"},"cacheReadTokens":{"type":"number"},"cacheWriteTokens":{"type":"number"}},"required":["uncachedInputTokens","outputTokens","cacheReadTokens","cacheWriteTokens"],"additionalProperties":true,"description":"Provider-reported usage accumulated across the complete durable log."},"contextPressure":{"type":"object","properties":{"pressureTokens":{"type":"number","description":"Provider-reported prompt size of the most recent request: uncached input plus cache reads and writes. Response output is excluded, so this does not grow as the current turn streams. Absent until a provider reports usage."},"projectedTokens":{"type":"number","description":"What the NEXT request's prompt would cost: {@link pressureTokens} plus the heuristic repricing of everything the surface gained or lost since that sample. Only the delta is estimated, so the figure stays anchored to the provider while still reacting the moment a compaction shadows a span — which `pressureTokens` alone cannot do, since compaction reports no usage of its own. Absent until a provider reports usage."},"contextWindow":{"type":"number","description":"Newest recorded route capacity; absent when no adapter advertised one."}},"required":[],"additionalProperties":true,"description":"Newest request pressure paired with the newest known route capacity."},"contextBreakdown":{"type":"object","properties":{"systemTokens":{"type":"number","description":"Heuristic tokens of the last nonempty surviving system prompt in surface order; 0 when none exists."},"toolsTokens":{"type":"number","description":"Heuristic tokens of the newest request envelope's tool schemas; 0 before any request."},"messageTokens":{"type":"number","description":"Heuristic tokens of every other visible surface node, including superseded system prompts."}},"required":["systemTokens","toolsTokens","messageTokens"],"additionalProperties":true,"description":"Heuristic system/tools/message composition of the next request."},"agentTeam":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string","enum":["lead","teammate"]},"phase":{"type":"string","enum":["failed","provisioning","active"],"description":"Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status."},"error":{"type":"string"}},"required":["id","name","role","phase"],"additionalProperties":true}},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"number"},"subject":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["completed","pending","in_progress","deleted"]},"blockedBy":{"type":"array","items":{"type":"string"}},"writeScopes":{"type":"array","items":{"type":"string"}},"ownerName":{"type":"string"},"ready":{"type":"boolean"},"writeScopeWarnings":{"type":"array","items":{"type":"string"}}},"required":["id","revision","subject","description","status","blockedBy","writeScopes","ready","writeScopeWarnings"],"additionalProperties":true}},"failure":{"type":"string"}},"required":["members","tasks"],"additionalProperties":true,"description":"Durable roster and non-deleted task board of the Team rooted at the projected Session."},"userQuestions":{"type":"object","properties":{"active":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable caller-provided question id, echoed in the answer."},"question":{"type":"string","description":"The question to display."},"detail":{"type":"string","description":"Optional supporting detail rendered with the question but kept out of option labels."},"header":{"type":"string","description":"Optional short heading/group label."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"User-facing label."},"description":{"type":"string","description":"Optional extra context rendered by capable UIs."}},"required":["label"],"additionalProperties":true},"description":"Optional choices the UI can render as a menu."},"multiSelect":{"type":"boolean","description":"Whether more than one option may be selected. Defaults to single-select."},"intent":{"type":"object","properties":{"kind":{"type":"string","const":"plan-review","description":"A plan submitted for review: `detail` is the plan markdown `ask()` requires, and the decision approves or declines it."},"approve":{"type":"string","description":"The option label that approves the plan; every other option declines it. Named rather than positional so no UI infers the verdict from option order. An `approve` naming no option of its own question is rejected at `ask()`."},"callId":{"type":"string","description":"Logged tool invocation whose arguments contain the reviewed plan."}},"required":["kind","approve"],"additionalProperties":true,"description":"Optional presentation intent for capable UIs; absent asks for the generic option list."}},"required":["id","question"],"additionalProperties":true}},"state":{"type":"string","enum":["open","continued"]}},"required":["callId","questions","state"],"additionalProperties":true},"description":"Calls that can still take an answer, in ask order."},"settled":{"type":"array","items":{"type":"object","properties":{"callId":{"type":"string","description":"The settled call."},"answers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The answered question id."},"selected":{"type":"array","items":{"type":"string"},"description":"Selected option labels. May accompany custom text for a multi-select question."},"custom":{"type":"string","description":"Optional free-text \"Other\" answer."}},"required":["id","selected"],"additionalProperties":true},"description":"The recorded batch, one entry per question; empty when the late reply carried none."}},"required":["callId","answers"],"additionalProperties":true},"description":"Calls an answer settled, in settlement order."}},"required":["active","settled"],"additionalProperties":true,"description":"Timed questions that remain answerable in this Session, and the ones a late reply settled."},"goal":{"oneOf":[{"type":"null","const":null},{"type":"object","properties":{"goal":{"type":"object","properties":{"objective":{"type":"string","description":"Human-requested completion objective."},"phase":{"type":"string","enum":["active","paused","blocked","complete"],"description":"Durable lifecycle phase."},"blockedReason":{"type":"object","properties":{"code":{"type":"string","description":"Stable lower-kebab-case classification chosen by the blocking policy."},"message":{"type":"string","description":"Non-empty explanation shown to humans and models."}},"required":["code","message"],"additionalProperties":true,"description":"Present exactly while `phase` is `blocked`."},"maxGoalRounds":{"type":"number","description":"Total admitted goal-round cap."},"id":{"type":"string","description":"Stable goal identity."},"revision":{"type":"number","description":"Positive revision; every durable mutation increments it."}},"required":["objective","phase","maxGoalRounds","id","revision"],"additionalProperties":true,"description":"Current durable goal snapshot (the CAS ref for mutations rides on it)."},"roundsStarted":{"type":"number","description":"Highest admitted round number for this goal."},"createdAt":{"type":"number","description":"Epoch milliseconds of the create mutation."},"updatedAt":{"type":"number","description":"Epoch milliseconds of the latest mutation."}},"required":["goal","roundsStarted","createdAt","updatedAt"],"additionalProperties":true}],"description":"The session's current goal and admitted-round count, or `null` before the first create and after a clear tombstone. `goal/change` supplies the whole lifecycle value; matching admitted `user/message` events advance `roundsStarted`."},"plan":{"type":"object","properties":{"active":{"type":"boolean"},"pending":{"type":"boolean"}},"required":["active","pending"],"additionalProperties":true,"description":"Plan collaboration state folded from the plan command lifecycle and `plan/mode` events."}},"required":[],"additionalProperties":true}},"required":["kind","values"],"additionalProperties":true}]},
|
|
1287
1779
|
},
|
|
1288
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1780
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":548,"column":9},
|
|
1289
1781
|
},
|
|
1290
|
-
{
|
|
1291
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/prompt',
|
|
1782
|
+
'session/prompt': {
|
|
1292
1783
|
service: 'sessionController',
|
|
1293
|
-
|
|
1294
|
-
method: 'prompt',
|
|
1784
|
+
description: 'Admit one prompt after explicitly resuming its Session.',
|
|
1295
1785
|
invocation: { kind: 'direct' },
|
|
1296
1786
|
parameters: [
|
|
1297
1787
|
{
|
|
1298
1788
|
name: 'request',
|
|
1299
|
-
|
|
1789
|
+
description: 'Session identity, prompt content, source metadata, and delivery mode.',
|
|
1300
1790
|
source: 'json',
|
|
1301
1791
|
codec: {
|
|
1302
1792
|
mode: 'strict',
|
|
1303
1793
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPromptRequest',
|
|
1304
1794
|
create: _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema,
|
|
1795
|
+
jsonSchema: {"type":"object","properties":{"requestId":{"type":"string","description":"Client-minted identity persisted on the exact accepted user message."},"sessionId":{"type":"string"},"mode":{"type":"string","enum":["queue","steer"]},"content":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string"}},"required":["type","text"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"image"},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]},"data":{"type":"string"},"name":{"type":"string"}},"required":["type","mediaType","data"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"file"},"receiptId":{"type":"string"}},"required":["type","receiptId"],"additionalProperties":true}]},"description":"At least one non-whitespace text part or attachment."},"clientTimeZone":{"type":"string"}},"required":["requestId","sessionId","mode","content"],"additionalProperties":true},
|
|
1796
|
+
},
|
|
1797
|
+
strictCodec: {
|
|
1798
|
+
mode: 'strict',
|
|
1799
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPromptRequest',
|
|
1800
|
+
create: _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0_strict$schema,
|
|
1801
|
+
jsonSchema: {"type":"object","properties":{"requestId":{"type":"string","description":"Client-minted identity persisted on the exact accepted user message."},"sessionId":{"type":"string"},"mode":{"type":"string","enum":["queue","steer"]},"content":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string"}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"image"},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]},"data":{"type":"string"},"name":{"type":"string"}},"required":["type","mediaType","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"file"},"receiptId":{"type":"string"}},"required":["type","receiptId"],"additionalProperties":false}]},"description":"At least one non-whitespace text part or attachment."},"clientTimeZone":{"type":"string"}},"required":["requestId","sessionId","mode","content"],"additionalProperties":false},
|
|
1305
1802
|
},
|
|
1306
1803
|
},
|
|
1307
1804
|
],
|
|
@@ -1310,24 +1807,31 @@ export const TYPERT_REMOTE = {
|
|
|
1310
1807
|
mode: 'strict',
|
|
1311
1808
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPromptValue',
|
|
1312
1809
|
create: _deepseek_ai_dsh_api_session_controller_session_prompt_result$schema,
|
|
1810
|
+
description: 'acknowledgement that the Agent accepted the prompt.',
|
|
1811
|
+
jsonSchema: {"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":true},
|
|
1313
1812
|
},
|
|
1314
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1813
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":462,"column":9},
|
|
1315
1814
|
},
|
|
1316
|
-
{
|
|
1317
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/rename',
|
|
1815
|
+
'session/rename': {
|
|
1318
1816
|
service: 'sessionController',
|
|
1319
|
-
|
|
1320
|
-
method: 'rename',
|
|
1817
|
+
description: 'Rename one Session after explicitly resuming it.',
|
|
1321
1818
|
invocation: { kind: 'direct' },
|
|
1322
1819
|
parameters: [
|
|
1323
1820
|
{
|
|
1324
1821
|
name: 'request',
|
|
1325
|
-
|
|
1822
|
+
description: 'Session identity and proposed title.',
|
|
1326
1823
|
source: 'json',
|
|
1327
1824
|
codec: {
|
|
1328
1825
|
mode: 'strict',
|
|
1329
1826
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionRenameRequest',
|
|
1330
1827
|
create: _deepseek_ai_dsh_api_session_controller_session_rename_parameter_0$schema,
|
|
1828
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"title":{"type":"string"}},"required":["sessionId","title"],"additionalProperties":true},
|
|
1829
|
+
},
|
|
1830
|
+
strictCodec: {
|
|
1831
|
+
mode: 'strict',
|
|
1832
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionRenameRequest',
|
|
1833
|
+
create: _deepseek_ai_dsh_api_session_controller_session_rename_parameter_0_strict$schema,
|
|
1834
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"title":{"type":"string"}},"required":["sessionId","title"],"additionalProperties":false},
|
|
1331
1835
|
},
|
|
1332
1836
|
},
|
|
1333
1837
|
],
|
|
@@ -1335,24 +1839,31 @@ export const TYPERT_REMOTE = {
|
|
|
1335
1839
|
mode: 'strict',
|
|
1336
1840
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionRenameValue',
|
|
1337
1841
|
create: _deepseek_ai_dsh_api_session_controller_session_rename_result$schema,
|
|
1842
|
+
description: 'the accepted title and durable event sequence.',
|
|
1843
|
+
jsonSchema: {"type":"object","properties":{"title":{"type":"string"},"seq":{"type":"number"}},"required":["title","seq"],"additionalProperties":true},
|
|
1338
1844
|
},
|
|
1339
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1845
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":431,"column":3},
|
|
1340
1846
|
},
|
|
1341
|
-
{
|
|
1342
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/search',
|
|
1847
|
+
'session/search': {
|
|
1343
1848
|
service: 'sessionController',
|
|
1344
|
-
|
|
1345
|
-
method: 'search',
|
|
1849
|
+
description: 'Search visible Session content without resuming an Agent. A non-owner receives only the hits whose Session `allows()` admits; `hasMore` describes the bounded result before that filtering.',
|
|
1346
1850
|
invocation: { kind: 'direct' },
|
|
1347
1851
|
parameters: [
|
|
1348
1852
|
{
|
|
1349
1853
|
name: 'request',
|
|
1350
|
-
|
|
1854
|
+
description: 'literal message-content query.',
|
|
1351
1855
|
source: 'json',
|
|
1352
1856
|
codec: {
|
|
1353
1857
|
mode: 'strict',
|
|
1354
1858
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSearchRequest',
|
|
1355
1859
|
create: _deepseek_ai_dsh_api_session_controller_session_search_parameter_0$schema,
|
|
1860
|
+
jsonSchema: {"type":"object","properties":{"query":{"type":"string"}},"required":["query"],"additionalProperties":true},
|
|
1861
|
+
},
|
|
1862
|
+
strictCodec: {
|
|
1863
|
+
mode: 'strict',
|
|
1864
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSearchRequest',
|
|
1865
|
+
create: _deepseek_ai_dsh_api_session_controller_session_search_parameter_0_strict$schema,
|
|
1866
|
+
jsonSchema: {"type":"object","properties":{"query":{"type":"string"}},"required":["query"],"additionalProperties":false},
|
|
1356
1867
|
},
|
|
1357
1868
|
},
|
|
1358
1869
|
],
|
|
@@ -1361,24 +1872,31 @@ export const TYPERT_REMOTE = {
|
|
|
1361
1872
|
mode: 'strict',
|
|
1362
1873
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSearchValue',
|
|
1363
1874
|
create: _deepseek_ai_dsh_api_session_controller_session_search_result$schema,
|
|
1875
|
+
description: 'authorized bounded Session search results.',
|
|
1876
|
+
jsonSchema: {"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"sessionId":{"type":"string"},"snippet":{"type":"string"}},"required":["sessionId","snippet"],"additionalProperties":true}},"hasMore":{"type":"boolean"}},"required":["items","hasMore"],"additionalProperties":true},
|
|
1364
1877
|
},
|
|
1365
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1878
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":290,"column":9},
|
|
1366
1879
|
},
|
|
1367
|
-
{
|
|
1368
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/selectModel',
|
|
1880
|
+
'session/selectModel': {
|
|
1369
1881
|
service: 'sessionController',
|
|
1370
|
-
|
|
1371
|
-
method: 'selectModel',
|
|
1882
|
+
description: 'Select one Session-local model after explicitly resuming the Session; save the default in the background.',
|
|
1372
1883
|
invocation: { kind: 'direct' },
|
|
1373
1884
|
parameters: [
|
|
1374
1885
|
{
|
|
1375
1886
|
name: 'request',
|
|
1376
|
-
|
|
1887
|
+
description: 'Session identity and requested model selection.',
|
|
1377
1888
|
source: 'json',
|
|
1378
1889
|
codec: {
|
|
1379
1890
|
mode: 'strict',
|
|
1380
1891
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSelectModelRequest',
|
|
1381
1892
|
create: _deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0$schema,
|
|
1893
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["sessionId","provider","model"],"additionalProperties":true},
|
|
1894
|
+
},
|
|
1895
|
+
strictCodec: {
|
|
1896
|
+
mode: 'strict',
|
|
1897
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSelectModelRequest',
|
|
1898
|
+
create: _deepseek_ai_dsh_api_session_controller_session_selectModel_parameter_0_strict$schema,
|
|
1899
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["sessionId","provider","model"],"additionalProperties":false},
|
|
1382
1900
|
},
|
|
1383
1901
|
},
|
|
1384
1902
|
],
|
|
@@ -1386,24 +1904,31 @@ export const TYPERT_REMOTE = {
|
|
|
1386
1904
|
mode: 'strict',
|
|
1387
1905
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSelectModelValue',
|
|
1388
1906
|
create: _deepseek_ai_dsh_api_session_controller_session_selectModel_result$schema,
|
|
1907
|
+
description: 'the normalized selection installed for the Session, without waiting for default persistence.',
|
|
1908
|
+
jsonSchema: {"type":"object","properties":{"selected":{"type":"object","properties":{"provider":{"type":"string"},"model":{"type":"string"},"reasoningEffort":{"type":"string"}},"required":["provider","model"],"additionalProperties":true}},"required":["selected"],"additionalProperties":true},
|
|
1389
1909
|
},
|
|
1390
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1910
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":311,"column":3},
|
|
1391
1911
|
},
|
|
1392
|
-
{
|
|
1393
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/updateQueue',
|
|
1912
|
+
'session/updateQueue': {
|
|
1394
1913
|
service: 'sessionController',
|
|
1395
|
-
|
|
1396
|
-
method: 'updateQueue',
|
|
1914
|
+
description: 'Mutate one still-pending queue occurrence, resuming a cold Agent first.',
|
|
1397
1915
|
invocation: { kind: 'direct' },
|
|
1398
1916
|
parameters: [
|
|
1399
1917
|
{
|
|
1400
1918
|
name: 'request',
|
|
1401
|
-
|
|
1919
|
+
description: 'Session, queue item, and requested mutation.',
|
|
1402
1920
|
source: 'json',
|
|
1403
1921
|
codec: {
|
|
1404
1922
|
mode: 'strict',
|
|
1405
1923
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionUpdateQueueRequest',
|
|
1406
1924
|
create: _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0$schema,
|
|
1925
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"itemId":{"type":"string"},"action":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"edit"},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string"}},"required":["type","text"],"additionalProperties":true},"description":"Non-empty text-only replacement content."}},"required":["kind","content"],"additionalProperties":true},{"type":"object","properties":{"kind":{"type":"string","const":"remove"}},"required":["kind"],"additionalProperties":true},{"type":"object","properties":{"kind":{"type":"string","const":"steer"}},"required":["kind"],"additionalProperties":true}]}},"required":["sessionId","itemId","action"],"additionalProperties":true},
|
|
1926
|
+
},
|
|
1927
|
+
strictCodec: {
|
|
1928
|
+
mode: 'strict',
|
|
1929
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionUpdateQueueRequest',
|
|
1930
|
+
create: _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0_strict$schema,
|
|
1931
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"},"itemId":{"type":"string"},"action":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"edit"},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string"}},"required":["type","text"],"additionalProperties":false},"description":"Non-empty text-only replacement content."}},"required":["kind","content"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"remove"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"steer"}},"required":["kind"],"additionalProperties":false}]}},"required":["sessionId","itemId","action"],"additionalProperties":false},
|
|
1407
1932
|
},
|
|
1408
1933
|
},
|
|
1409
1934
|
],
|
|
@@ -1411,24 +1936,31 @@ export const TYPERT_REMOTE = {
|
|
|
1411
1936
|
mode: 'strict',
|
|
1412
1937
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionUpdateQueueValue',
|
|
1413
1938
|
create: _deepseek_ai_dsh_api_session_controller_session_updateQueue_result$schema,
|
|
1939
|
+
description: 'acknowledgement that the queue mutation was applied.',
|
|
1940
|
+
jsonSchema: {"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":true},
|
|
1414
1941
|
},
|
|
1415
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1942
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":504,"column":3},
|
|
1416
1943
|
},
|
|
1417
|
-
{
|
|
1418
|
-
id: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications',
|
|
1944
|
+
'session/workspacePathApplications': {
|
|
1419
1945
|
service: 'sessionController',
|
|
1420
|
-
|
|
1421
|
-
method: 'workspacePathApplications',
|
|
1946
|
+
description: 'Query current file handlers on the serving desktop without activating an Agent.',
|
|
1422
1947
|
invocation: { kind: 'direct' },
|
|
1423
1948
|
parameters: [
|
|
1424
1949
|
{
|
|
1425
1950
|
name: 'request',
|
|
1426
|
-
|
|
1951
|
+
description: 'file path in Host filesystem syntax.',
|
|
1427
1952
|
source: 'json',
|
|
1428
1953
|
codec: {
|
|
1429
1954
|
mode: 'strict',
|
|
1430
1955
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications:request',
|
|
1431
1956
|
create: _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0$schema,
|
|
1957
|
+
jsonSchema: {"type":"object","properties":{"path":{"type":"string"}},"required":["path"],"additionalProperties":true},
|
|
1958
|
+
},
|
|
1959
|
+
strictCodec: {
|
|
1960
|
+
mode: 'strict',
|
|
1961
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications:request',
|
|
1962
|
+
create: _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0_strict$schema,
|
|
1963
|
+
jsonSchema: {"type":"object","properties":{"path":{"type":"string"}},"required":["path"],"additionalProperties":false},
|
|
1432
1964
|
},
|
|
1433
1965
|
},
|
|
1434
1966
|
],
|
|
@@ -1437,24 +1969,31 @@ export const TYPERT_REMOTE = {
|
|
|
1437
1969
|
mode: 'strict',
|
|
1438
1970
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications:result',
|
|
1439
1971
|
create: _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema,
|
|
1972
|
+
description: 'OS application names, icons, and default selection; empty when desktop opening is unavailable.',
|
|
1973
|
+
jsonSchema: {"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"OS application identifier; callers must revalidate it against the file's current handlers before opening."},"name":{"type":"string"},"default":{"type":"boolean"},"icon":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"PNG or SVG data URL, or null when the desktop supplies no icon."}},"required":["id","name","default","icon"],"additionalProperties":true}},
|
|
1440
1974
|
},
|
|
1441
|
-
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":
|
|
1975
|
+
sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":398,"column":9},
|
|
1442
1976
|
},
|
|
1443
|
-
{
|
|
1444
|
-
id: '@deepseek-ai/dsh-api-session-controller#skills/list',
|
|
1977
|
+
'skills/list': {
|
|
1445
1978
|
service: 'sessionSkillCatalog',
|
|
1446
|
-
|
|
1447
|
-
method: 'list',
|
|
1979
|
+
description: 'List the user-invocable skills visible to one Session composition.',
|
|
1448
1980
|
invocation: { kind: 'direct' },
|
|
1449
1981
|
parameters: [
|
|
1450
1982
|
{
|
|
1451
1983
|
name: 'request',
|
|
1452
|
-
|
|
1984
|
+
description: 'Session identity whose cwd and preset select the catalog view.',
|
|
1453
1985
|
source: 'json',
|
|
1454
1986
|
codec: {
|
|
1455
1987
|
mode: 'strict',
|
|
1456
1988
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SkillListRequest',
|
|
1457
1989
|
create: _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema,
|
|
1990
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":true},
|
|
1991
|
+
},
|
|
1992
|
+
strictCodec: {
|
|
1993
|
+
mode: 'strict',
|
|
1994
|
+
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SkillListRequest',
|
|
1995
|
+
create: _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0_strict$schema,
|
|
1996
|
+
jsonSchema: {"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":false},
|
|
1458
1997
|
},
|
|
1459
1998
|
},
|
|
1460
1999
|
],
|
|
@@ -1463,10 +2002,12 @@ export const TYPERT_REMOTE = {
|
|
|
1463
2002
|
mode: 'strict',
|
|
1464
2003
|
typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SkillListValue',
|
|
1465
2004
|
create: _deepseek_ai_dsh_api_session_controller_skills_list_result$schema,
|
|
2005
|
+
description: 'user-invocable skill metadata without loading skill bodies.',
|
|
2006
|
+
jsonSchema: {"type":"object","properties":{"skills":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Absolute SKILL.md path when supplied by a filesystem provider."},"name":{"type":"string","description":"Kebab-case identifier referenced as `/name`."},"description":{"type":"string","description":"Short routing description."},"whenToUse":{"type":"string","description":"Optional extra routing guidance."},"modelInvocable":{"type":"boolean","description":"Whether the same skill is also advertised to the model."}},"required":["name","description","modelInvocable"],"additionalProperties":true}}},"required":["skills"],"additionalProperties":true},
|
|
1466
2007
|
},
|
|
1467
|
-
sourceLocation: {"file":"packages/api/session-controller/src/skill-catalog.ts","line":
|
|
2008
|
+
sourceLocation: {"file":"packages/api/session-controller/src/skill-catalog.ts","line":36,"column":9},
|
|
1468
2009
|
},
|
|
1469
|
-
|
|
1470
|
-
}
|
|
2010
|
+
},
|
|
2011
|
+
}, z)
|
|
1471
2012
|
|
|
1472
2013
|
export default TYPERT_REMOTE
|