@fishwithcat/dsh-subagent 0.2.2-alpha.2 → 0.2.2-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 +39 -24
- package/README.md +41 -20
- package/README.zh.md +41 -20
- package/lib/index.js +573 -872
- package/lib/typert.host.js +64 -120
- package/lib/typert.remote-client.d.ts +3 -3
- package/lib/typert.remote-client.js +17 -63
- package/lib/types/activation.d.ts +15 -25
- package/lib/types/activation.js +1 -1
- package/lib/types/archive-admission.d.ts +11 -4
- package/lib/types/archive-admission.js +39 -115
- package/lib/types/child-agent.d.ts +7 -17
- package/lib/types/child-agent.js +6 -4
- package/lib/types/continuation-messages.d.ts +8 -7
- package/lib/types/continuation-messages.js +12 -14
- package/lib/types/control-types.d.ts +7 -28
- package/lib/types/control.d.ts +0 -4
- package/lib/types/control.js +1 -5
- package/lib/types/descriptor.d.ts +1 -1
- package/lib/types/descriptor.js +1 -1
- package/lib/types/index.d.ts +46 -95
- package/lib/types/index.js +83 -146
- package/lib/types/lifecycle.d.ts +9 -38
- package/lib/types/lifecycle.js +5 -31
- package/lib/types/manager.d.ts +74 -109
- package/lib/types/manager.js +394 -568
- package/lib/types/projection-types.d.ts +14 -6
- package/lib/types/projection.d.ts +2 -2
- package/lib/types/structured.d.ts +1 -1
- package/lib/types/structured.js +2 -2
- package/lib/types/types.d.ts +16 -28
- package/lib/types/types.js +2 -4
- package/package.json +53 -57
- package/lib/types/internal.d.ts +0 -58
- package/lib/types/internal.js +0 -58
package/lib/typert.host.js
CHANGED
|
@@ -3,22 +3,16 @@ import { z } from 'zod'
|
|
|
3
3
|
|
|
4
4
|
import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
|
|
5
5
|
|
|
6
|
-
let
|
|
7
|
-
const
|
|
8
|
-
let
|
|
9
|
-
const
|
|
10
|
-
let _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema$value
|
|
11
|
-
const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema$value ??= z.literal("continuable"))
|
|
12
|
-
let _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema$value
|
|
13
|
-
const _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema$value ??= z.object({
|
|
6
|
+
let _deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0$schema$value
|
|
7
|
+
const _deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0$schema$value ??= z.string())
|
|
8
|
+
let _deepseek_ai_dsh_subagent_subagents_interruptByUser_result$schema$value
|
|
9
|
+
const _deepseek_ai_dsh_subagent_subagents_interruptByUser_result$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByUser_result$schema$value ??= z.object({
|
|
14
10
|
'accepted': z.literal(true).readonly(),
|
|
15
11
|
}))
|
|
16
12
|
let _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema$value
|
|
17
13
|
const _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema = () => (_deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema$value ??= z.object({
|
|
18
14
|
'requestId': z.string().readonly().describe('Identity persisted on the accepted message, minted before the call.'),
|
|
19
|
-
'parentSessionId': z.string().readonly(),
|
|
20
15
|
'childSessionId': z.string().readonly(),
|
|
21
|
-
'mode': z.literal("continuable").readonly().describe('Required discriminator retained from the browser control address.'),
|
|
22
16
|
'delivery': z.union([z.literal("queue"), z.literal("steer")]).readonly().describe('Whether this message queues a later turn or targets the nearest step.'),
|
|
23
17
|
'content': z.array(z.union([z.object({
|
|
24
18
|
'type': z.literal("text").readonly(),
|
|
@@ -35,18 +29,12 @@ let _deepseek_ai_dsh_subagent_subagents_prompt_result$schema$value
|
|
|
35
29
|
const _deepseek_ai_dsh_subagent_subagents_prompt_result$schema = () => (_deepseek_ai_dsh_subagent_subagents_prompt_result$schema$value ??= z.object({
|
|
36
30
|
'messageId': z.string().readonly(),
|
|
37
31
|
}))
|
|
38
|
-
let
|
|
39
|
-
const
|
|
40
|
-
let _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1_strict$schema$value
|
|
41
|
-
const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1_strict$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1_strict$schema$value ??= z.string())
|
|
42
|
-
let _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2_strict$schema$value
|
|
43
|
-
const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2_strict$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2_strict$schema$value ??= z.literal("continuable"))
|
|
32
|
+
let _deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0_strict$schema$value
|
|
33
|
+
const _deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0_strict$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0_strict$schema$value ??= z.string())
|
|
44
34
|
let _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0_strict$schema$value
|
|
45
35
|
const _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0_strict$schema = () => (_deepseek_ai_dsh_subagent_subagents_prompt_parameter_0_strict$schema$value ??= z.strictObject({
|
|
46
36
|
'requestId': z.string().readonly().describe('Identity persisted on the accepted message, minted before the call.'),
|
|
47
|
-
'parentSessionId': z.string().readonly(),
|
|
48
37
|
'childSessionId': z.string().readonly(),
|
|
49
|
-
'mode': z.literal("continuable").readonly().describe('Required discriminator retained from the browser control address.'),
|
|
50
38
|
'delivery': z.union([z.literal("queue"), z.literal("steer")]).readonly().describe('Whether this message queues a later turn or targets the nearest step.'),
|
|
51
39
|
'content': z.array(z.union([z.strictObject({
|
|
52
40
|
'type': z.literal("text").readonly(),
|
|
@@ -63,9 +51,9 @@ const _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0_strict$schema = ()
|
|
|
63
51
|
const $remote = createTypertRemoteInfo({
|
|
64
52
|
package: '@fishwithcat/dsh-subagent',
|
|
65
53
|
methods: {
|
|
66
|
-
'subagents/
|
|
54
|
+
'subagents/interruptByUser': {
|
|
67
55
|
service: 'subagents',
|
|
68
|
-
description: 'Remote face of {@link interrupt}
|
|
56
|
+
description: 'Remote face of {@link interrupt}, authorized on the target Session by the Gateway. No catalog, history, persistence, or parent Agent lookup runs. Absent, idle, and already-completed targets are accepted no-ops there.',
|
|
69
57
|
invocation: { kind: 'direct' },
|
|
70
58
|
parameters: [
|
|
71
59
|
{
|
|
@@ -75,80 +63,46 @@ const $remote = createTypertRemoteInfo({
|
|
|
75
63
|
codec: {
|
|
76
64
|
mode: 'strict',
|
|
77
65
|
typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
|
|
78
|
-
create:
|
|
66
|
+
create: _deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0$schema,
|
|
79
67
|
jsonSchema: {"type":"string"},
|
|
80
68
|
},
|
|
81
69
|
strictCodec: {
|
|
82
70
|
mode: 'strict',
|
|
83
71
|
typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
|
|
84
|
-
create:
|
|
72
|
+
create: _deepseek_ai_dsh_subagent_subagents_interruptByUser_parameter_0_strict$schema,
|
|
85
73
|
jsonSchema: {"type":"string"},
|
|
86
74
|
},
|
|
87
75
|
},
|
|
88
|
-
{
|
|
89
|
-
name: 'parentSessionId',
|
|
90
|
-
description: 'durable direct parent whose authority is claimed.',
|
|
91
|
-
source: 'json',
|
|
92
|
-
codec: {
|
|
93
|
-
mode: 'strict',
|
|
94
|
-
typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
|
|
95
|
-
create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema,
|
|
96
|
-
jsonSchema: {"type":"string"},
|
|
97
|
-
},
|
|
98
|
-
strictCodec: {
|
|
99
|
-
mode: 'strict',
|
|
100
|
-
typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
|
|
101
|
-
create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1_strict$schema,
|
|
102
|
-
jsonSchema: {"type":"string"},
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: 'mode',
|
|
107
|
-
description: 'required continuable-address discriminator.',
|
|
108
|
-
source: 'json',
|
|
109
|
-
codec: {
|
|
110
|
-
mode: 'strict',
|
|
111
|
-
typeSymbol: '@deepseek-ai/dsh-subagent#subagents/interruptByParent:mode',
|
|
112
|
-
create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema,
|
|
113
|
-
jsonSchema: {"type":"string","const":"continuable"},
|
|
114
|
-
},
|
|
115
|
-
strictCodec: {
|
|
116
|
-
mode: 'strict',
|
|
117
|
-
typeSymbol: '@deepseek-ai/dsh-subagent#subagents/interruptByParent:mode',
|
|
118
|
-
create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2_strict$schema,
|
|
119
|
-
jsonSchema: {"type":"string","const":"continuable"},
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
76
|
],
|
|
123
77
|
result: {
|
|
124
78
|
mode: 'strict',
|
|
125
79
|
typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentInterruptReceipt',
|
|
126
|
-
create:
|
|
80
|
+
create: _deepseek_ai_dsh_subagent_subagents_interruptByUser_result$schema,
|
|
127
81
|
description: 'acknowledgement that the cancel signal was admitted, not that the target is quiescent.',
|
|
128
82
|
jsonSchema: {"type":"object","properties":{"accepted":{"type":"boolean","const":true}},"required":["accepted"],"additionalProperties":true},
|
|
129
83
|
},
|
|
130
|
-
sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":
|
|
84
|
+
sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":467,"column":3},
|
|
131
85
|
},
|
|
132
86
|
'subagents/prompt': {
|
|
133
87
|
service: 'subagents',
|
|
134
|
-
description: 'Deliver one browser-authored message to a continuable child through
|
|
88
|
+
description: 'Deliver one browser-authored message to a continuable child through its live subagent tree root, retaining the caller-minted request identity and validated browser zone on the accepted message. Success identifies the message the child\'s inbox accepted; later execution is independent of this call. Queue delivery targets a later turn; steer delivery targets the nearest step and retains the Agent loop\'s best-effort fallback semantics. Image parts are admitted and persisted through the attachment store before delivery, and the child\'s model must accept image input. Cold resume at capacity rejects with `subagent/delivery-unavailable`. Access is checked on the target Session before attachment admission or restoration.',
|
|
135
89
|
invocation: { kind: 'direct' },
|
|
136
90
|
parameters: [
|
|
137
91
|
{
|
|
138
92
|
name: 'request',
|
|
139
|
-
description: '
|
|
93
|
+
description: 'target id, delivery, minted identity, content, and optional browser zone.',
|
|
140
94
|
source: 'json',
|
|
141
95
|
codec: {
|
|
142
96
|
mode: 'strict',
|
|
143
97
|
typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentPromptRequest',
|
|
144
98
|
create: _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema,
|
|
145
|
-
jsonSchema: {"type":"object","properties":{"requestId":{"type":"string","description":"Identity persisted on the accepted message, minted before the call."},"
|
|
99
|
+
jsonSchema: {"type":"object","properties":{"requestId":{"type":"string","description":"Identity persisted on the accepted message, minted before the call."},"childSessionId":{"type":"string"},"delivery":{"type":"string","enum":["queue","steer"],"description":"Whether this message queues a later turn or targets the nearest step."},"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}]},"description":"Browser prompt parts delivered as the child's user message. The Host admits and persists image parts before delivery, so the wire never carries a durable attachment reference the caller could fabricate."},"clientTimeZone":{"type":"string","description":"Optional browser zone sampled for this exact human prompt."}},"required":["requestId","childSessionId","delivery","content"],"additionalProperties":true},
|
|
146
100
|
},
|
|
147
101
|
strictCodec: {
|
|
148
102
|
mode: 'strict',
|
|
149
103
|
typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentPromptRequest',
|
|
150
104
|
create: _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0_strict$schema,
|
|
151
|
-
jsonSchema: {"type":"object","properties":{"requestId":{"type":"string","description":"Identity persisted on the accepted message, minted before the call."},"
|
|
105
|
+
jsonSchema: {"type":"object","properties":{"requestId":{"type":"string","description":"Identity persisted on the accepted message, minted before the call."},"childSessionId":{"type":"string"},"delivery":{"type":"string","enum":["queue","steer"],"description":"Whether this message queues a later turn or targets the nearest step."},"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}]},"description":"Browser prompt parts delivered as the child's user message. The Host admits and persists image parts before delivery, so the wire never carries a durable attachment reference the caller could fabricate."},"clientTimeZone":{"type":"string","description":"Optional browser zone sampled for this exact human prompt."}},"required":["requestId","childSessionId","delivery","content"],"additionalProperties":false},
|
|
152
106
|
},
|
|
153
107
|
},
|
|
154
108
|
],
|
|
@@ -160,7 +114,7 @@ const $remote = createTypertRemoteInfo({
|
|
|
160
114
|
description: 'the accepted message\'s inbox identity.',
|
|
161
115
|
jsonSchema: {"type":"object","properties":{"messageId":{"type":"string"}},"required":["messageId"],"additionalProperties":true},
|
|
162
116
|
},
|
|
163
|
-
sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":
|
|
117
|
+
sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":414,"column":9},
|
|
164
118
|
},
|
|
165
119
|
},
|
|
166
120
|
}, z)
|
|
@@ -204,45 +158,38 @@ export const TYPERT = {
|
|
|
204
158
|
},
|
|
205
159
|
{
|
|
206
160
|
"kind": "method",
|
|
207
|
-
"name": "
|
|
208
|
-
"signature": "
|
|
209
|
-
"summary": "
|
|
210
|
-
"jsDoc": "/**\n *
|
|
161
|
+
"name": "rootOf",
|
|
162
|
+
"signature": "rootOf(caller: Agent): Agent",
|
|
163
|
+
"summary": "Resolve the root shared by an Agent and its other agents in its subagent tree.",
|
|
164
|
+
"jsDoc": "/**\n * Resolve the root shared by an Agent and its other agents in its subagent tree.\n * @param caller - exact live Agent whose subagent ancestry selects the tree.\n * @returns the live root; ordinary Session forks lead independent trees.\n * @throws when the caller or its runtime owner is unavailable.\n */"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"kind": "method",
|
|
168
|
+
"name": "waitForTreeWork",
|
|
169
|
+
"signature": "async waitForTreeWork(root: Agent): Promise<boolean>",
|
|
170
|
+
"summary": "Join progressing subagent tree work for its root.",
|
|
171
|
+
"jsDoc": "/**\n * Join progressing subagent tree work for its root. Idle members with parked input\n * stay resident without delaying host completion. Ordinary members return false.\n * @param root - exact live subagent tree root whose member work is awaited.\n * @returns whether work was joined; hosts recheck root idle after true.\n */"
|
|
211
172
|
},
|
|
212
173
|
{
|
|
213
174
|
"kind": "method",
|
|
214
175
|
"name": "sendMessage",
|
|
215
176
|
"signature": "async sendMessage( sender: Agent, targetId: SessionId, content: ContentBlock[], options: SubagentSendMessageOptions, ): Promise<MessageId>",
|
|
216
|
-
"summary": "Steer one model-authored message to
|
|
217
|
-
"jsDoc": "/**\n * Steer one model-authored message to
|
|
177
|
+
"summary": "Steer one model-authored message to another member of the same subagent tree.",
|
|
178
|
+
"jsDoc": "/**\n * Steer one model-authored message to another member of the same subagent tree.\n * A running target receives it at its next step; an idle target starts a turn.\n * A cold target resumes under its runtime subagent tree root without restoring\n * its creation ancestors. Sender identity is rechecked before inbox acceptance; cancellation\n * stops only pre-acceptance work and never retracts an accepted message.\n * @param sender - exact live root or resident continuable Agent originating the message.\n * @param targetId - another root or continuable member's durable Session id.\n * @param content - model-authored content to deliver.\n * @param options - caller cancellation before inbox acceptance.\n * @returns the accepted message's inbox id.\n * @throws when the target is outside the tree, cannot resume, or rejects input.\n */"
|
|
218
179
|
},
|
|
219
180
|
{
|
|
220
181
|
"kind": "method",
|
|
221
182
|
"name": "interrupt",
|
|
222
183
|
"signature": "interrupt(targetSessionId: SessionId, authority: SubagentInterruptAuthority): void",
|
|
223
|
-
"summary": "Interrupt one live child's current execution under a
|
|
224
|
-
"jsDoc": "/**\n * Interrupt one live child's current execution under a
|
|
184
|
+
"summary": "Interrupt one live child's current execution under a trusted user operation or an exact live ancestor Agent.",
|
|
185
|
+
"jsDoc": "/**\n * Interrupt one live child's current execution under a trusted user\n * operation or an exact live ancestor Agent. Fire-and-return: the cancel\n * signal is issued before this returns, but the target may keep running\n * until it observes the signal. Unclaimed pending inbox work, the Activation,\n * and published descendants are preserved; claimed work is not requeued.\n * Once the interrupted Agent is idle, a waking send resumes the parked FIFO\n * queue. External backends stop their single execution. An absent target\n * is an accepted no-op, as is a manager-less composition, which cannot own a\n * live Activation.\n * @param targetSessionId - the durable child session id to interrupt.\n * @param authority - a trusted user operation or exact live ancestor Agent.\n * @throws {SubagentError} `UNAUTHORIZED` when the authority does not own the\n * live target.\n */"
|
|
225
186
|
},
|
|
226
187
|
{
|
|
227
188
|
"kind": "method",
|
|
228
189
|
"name": "drainDescendants",
|
|
229
190
|
"signature": "async drainDescendants(parents: readonly Agent[]): Promise<void>",
|
|
230
|
-
"summary": "Close
|
|
231
|
-
"jsDoc": "/**\n * Close
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
"kind": "method",
|
|
235
|
-
"name": "drainChildren",
|
|
236
|
-
"signature": "async drainChildren(parent: Agent, childIds: readonly SessionId[]): Promise<void>",
|
|
237
|
-
"summary": "Release selected resident direct children of one exact live parent.",
|
|
238
|
-
"jsDoc": "/**\n * Release selected resident direct children of one exact live\n * parent. Other children of the same parent remain admitted and resident.\n * Absent targets and a manager-less composition are accepted no-ops.\n * @param parent - exact live direct parent authorizing the selected release.\n * @param childIds - durable direct-child ids to release when resident.\n * @returns once every selected activation released its execution handle.\n * @throws {SubagentError} `UNAUTHORIZED` when a resident target belongs to a\n * different parent or the supplied parent identity is stale.\n */"
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
"kind": "method",
|
|
242
|
-
"name": "listChildren",
|
|
243
|
-
"signature": "listChildren(parentSessionId: SessionId, signal?: AbortSignal): Promise<SubagentCatalogEntry[]>",
|
|
244
|
-
"summary": "Read the parent's durable direct-child catalog without loading or resuming an Agent.",
|
|
245
|
-
"jsDoc": "/**\n * Read the parent's durable direct-child catalog without loading or resuming an Agent.\n * The service owns and releases the live-preferred Session observation.\n * @param parentSessionId - parent whose direct children are requested.\n * @param signal - cancellation forwarded to the Session query.\n * @returns catalog children in parent event order.\n * @throws {@link SubagentError} when query or catalog projection is unavailable.\n * @throws SessionQueryError when the parent cannot be read or the query is cancelled.\n */"
|
|
191
|
+
"summary": "Close admission and stop all instances in the selected subagent trees, then await pending startup and cleanup.",
|
|
192
|
+
"jsDoc": "/**\n * Close admission and stop all instances in the selected subagent trees, then await\n * pending startup and cleanup. Ordinary members are ignored. The cutoff lasts\n * until each exact root leaves the registry; unrelated subagent trees remain live.\n * @param parents - exact live subagent tree roots entering teardown.\n * @returns once all admitted startup and member cleanup have settled.\n * @throws an aggregate error after all branches settle when any failed.\n */"
|
|
246
193
|
},
|
|
247
194
|
{
|
|
248
195
|
"kind": "method",
|
|
@@ -254,16 +201,16 @@ export const TYPERT = {
|
|
|
254
201
|
{
|
|
255
202
|
"kind": "method",
|
|
256
203
|
"name": "prompt",
|
|
257
|
-
"signature": "@Remote('prompt') async prompt(request: SubagentPromptRequest, signal: AbortSignal): Promise<SubagentPromptReceipt>",
|
|
258
|
-
"summary": "Deliver one browser-authored message to a continuable child through
|
|
259
|
-
"jsDoc": "/**\n * Deliver one browser-authored message to a continuable child through
|
|
204
|
+
"signature": "@Remote({ name: 'prompt', resources: { session: request => request.childSessionId } }) async prompt(request: SubagentPromptRequest, signal: AbortSignal): Promise<SubagentPromptReceipt>",
|
|
205
|
+
"summary": "Deliver one browser-authored message to a continuable child through its live subagent tree root, retaining the caller-minted request identity and validated browser zone on the accepted message.",
|
|
206
|
+
"jsDoc": "/**\n * Deliver one browser-authored message to a continuable child through its\n * live subagent tree root, retaining the caller-minted request identity and\n * validated browser zone on the accepted message. Success identifies the\n * message the child's inbox accepted; later execution is independent of this\n * call. Queue delivery targets a later turn; steer delivery targets the\n * nearest step and retains the Agent loop's best-effort fallback semantics.\n * Image parts are admitted and persisted through the attachment store\n * before delivery, and the child's model must accept image input.\n * Cold resume at capacity rejects with `subagent/delivery-unavailable`.\n * Access is checked on the target Session before attachment admission or restoration.\n * @param request - target id, delivery, minted identity, content, and optional browser zone.\n * @param signal - carrier cancellation, owning the call until inbox acceptance.\n * @returns the accepted message's inbox identity.\n * @throws {RemoteError} `gateway/bad-request`, `subagent/attachment-invalid`,\n * `subagent/invalid-time-zone`,\n * `subagent/not-resumable`, `subagent/unauthorized`,\n * `subagent/delivery-unavailable`, `gateway/cancelled`, or `gateway/internal`.\n */"
|
|
260
207
|
},
|
|
261
208
|
{
|
|
262
209
|
"kind": "method",
|
|
263
|
-
"name": "
|
|
264
|
-
"signature": "@Remote(
|
|
265
|
-
"summary": "Remote face of {@link interrupt}
|
|
266
|
-
"jsDoc": "/**\n * Remote face of {@link interrupt}
|
|
210
|
+
"name": "interruptByUser",
|
|
211
|
+
"signature": "@Remote({ name: 'interruptByUser', resources: { session: childSessionId => childSessionId } }) interruptByUser(childSessionId: SessionId): SubagentInterruptReceipt",
|
|
212
|
+
"summary": "Remote face of {@link interrupt}, authorized on the target Session by the Gateway.",
|
|
213
|
+
"jsDoc": "/**\n * Remote face of {@link interrupt}, authorized on the target Session by the Gateway.\n * No catalog, history, persistence, or parent Agent lookup runs.\n * Absent, idle, and already-completed targets are accepted no-ops there.\n * @param childSessionId - durable child session id to interrupt.\n * @returns acknowledgement that the cancel signal was admitted, not that the target is quiescent.\n * @throws {RemoteError} `gateway/bad-request` for an empty id,\n * otherwise `gateway/internal`.\n */"
|
|
267
214
|
},
|
|
268
215
|
{
|
|
269
216
|
"kind": "method",
|
|
@@ -278,13 +225,6 @@ export const TYPERT = {
|
|
|
278
225
|
"signature": "getProvider(name: string): SubagentProvider | undefined",
|
|
279
226
|
"summary": "Look up a provider by name.",
|
|
280
227
|
"jsDoc": "/**\n * Look up a provider by name.\n * @param name - the provider name.\n * @returns the provider, or undefined when absent.\n */"
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
"kind": "method",
|
|
284
|
-
"name": "list",
|
|
285
|
-
"signature": "list(): string[]",
|
|
286
|
-
"summary": "List registered provider names in insertion order.",
|
|
287
|
-
"jsDoc": "/**\n * List registered provider names in insertion order.\n * @returns the registered names.\n */"
|
|
288
228
|
}
|
|
289
229
|
],
|
|
290
230
|
"types": [
|
|
@@ -560,6 +500,10 @@ export const TYPERT = {
|
|
|
560
500
|
"name": "KnownCatalogMode",
|
|
561
501
|
"declaration": "export type KnownCatalogMode = { readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; };"
|
|
562
502
|
},
|
|
503
|
+
{
|
|
504
|
+
"name": "KnownSubagentCatalogFields",
|
|
505
|
+
"declaration": "export type KnownSubagentCatalogFields = { readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'external'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; };"
|
|
506
|
+
},
|
|
563
507
|
{
|
|
564
508
|
"name": "LegacyAfterScheduleRecord",
|
|
565
509
|
"declaration": "export interface LegacyAfterScheduleRecord extends Omit<AfterScheduleRecord, 'title'> {\n readonly title?: string;\n}"
|
|
@@ -642,7 +586,7 @@ export const TYPERT = {
|
|
|
642
586
|
},
|
|
643
587
|
{
|
|
644
588
|
"name": "MessageSourceMap",
|
|
645
|
-
"declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'system-prompt': SystemPromptMessageSource;\n 'model-selection': { kind: 'model-selection'; } & ContextFormed;\n 'tool-registry': { kind: 'tool-registry'; };\n 'action-cards': { kind: 'action-cards'; through: SessionSeq; } & ContextFormed;\n 'runtime-context': { kind: 'runtime-context'; } & ContextFormed;\n '
|
|
589
|
+
"declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'system-prompt': SystemPromptMessageSource;\n 'model-selection': { kind: 'model-selection'; } & ContextFormed;\n 'tool-registry': { kind: 'tool-registry'; };\n 'action-cards': { kind: 'action-cards'; through: SessionSeq; } & ContextFormed;\n 'runtime-context': { kind: 'runtime-context'; } & ContextFormed;\n 'team-message': TeamMessageSource;\n 'working-directory': { kind: 'working-directory'; };\n 'user-approval': { kind: 'user-approval'; } & ContextFormed;\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; principal?: Principal; };\n 'skill-invocation': SkillInvocationSource;\n 'ptc-mode': { kind: 'ptc-mode'; };\n 'compact-checkpoint': CompactionCheckpointSource;\n 'cordis-host-runner': { kind: 'cordis-host-runner'; };\n 'user-question-reply': { kind: 'user-question-reply'; callId: ToolCallId; outcome: 'answered'; };\n goal: GoalMessageSource;\n 'plan-mode': { kind: 'plan-mode'; } & ContextFormed;\n schedule: { kind: 'schedule'; } & ContextFormed;\n 'session-reference': SessionReferenceSource;\n webhook: { readonly kind: 'webhook'; readonly provider: string; readonly source: WebhookSourceId; readonly deliveryId: WebhookDeliveryId; readonly ruleId: WebhookRuleId; readonly form: 'notice'; readonly summary: string; };\n}"
|
|
646
590
|
},
|
|
647
591
|
{
|
|
648
592
|
"name": "Model",
|
|
@@ -758,7 +702,7 @@ export const TYPERT = {
|
|
|
758
702
|
},
|
|
759
703
|
{
|
|
760
704
|
"name": "SessionEventMap",
|
|
761
|
-
"declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'developer/message': { turn: number; step: number; message: DeveloperMessage; headerSeq?: SessionSeq; };\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; reason?: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'model/selection': ModelSelection;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'agent-preset/selected': { agentPreset: string; };\n '
|
|
705
|
+
"declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'developer/message': { turn: number; step: number; message: DeveloperMessage; headerSeq?: SessionSeq; };\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; reason?: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'model/selection': ModelSelection;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'agent-preset/selected': { agentPreset: string; };\n 'team/mode': { enabled: boolean; };\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'working-directory/change': { cwd: string; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'approval/grant': { toolName: string; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; remembered?: true; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'permission/preset': { preset: string; };\n 'subagent/descriptor': SubagentDescriptorData;\n 'subagent/catalog': SubagentCatalogEvent;\n 'job/registered': JobRegisteredData;\n 'job/settled': JobSettledData;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'feedback/record': FeedbackRecord;\n 'llm/retry': LlmRetryEventData;\n 'llm/retry-started': LlmRetryStartedEventData;\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'plan/mode': { active: boolean; };\n 'schedule/change': ScheduleChange;\n 'session-log-deepseek/delivery-accepted': { sessionId: import('@deepseek-ai/dsh-session/types').SessionId; sessionFormatVersion?: number; throughSeq: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'subagent/model-selection-policy': { allowedModels: AllowedModelRoute[]; };\n 'workspace/changes': { turn: number; };\n}"
|
|
762
706
|
},
|
|
763
707
|
{
|
|
764
708
|
"name": "SessionEventType",
|
|
@@ -826,23 +770,23 @@ export const TYPERT = {
|
|
|
826
770
|
},
|
|
827
771
|
{
|
|
828
772
|
"name": "SubagentActivationSpec",
|
|
829
|
-
"declaration": "export interface SubagentActivationSpec {\n readonly provider: string;\n readonly label: string;\n readonly childId?: SessionId;\n readonly
|
|
773
|
+
"declaration": "export interface SubagentActivationSpec extends Omit<SubagentStartRequest, 'label' | 'signal'> {\n readonly provider: string;\n readonly label: string;\n readonly childId?: SessionId;\n readonly signal: AbortSignal;\n readonly delivery: 'parent' | 'caller';\n}"
|
|
830
774
|
},
|
|
831
775
|
{
|
|
832
776
|
"name": "SubagentCapabilities",
|
|
833
777
|
"declaration": "export interface SubagentCapabilities {\n readonly agentOptions: boolean;\n readonly agentPreset: boolean;\n readonly outputSchema: boolean;\n readonly depthLimit: boolean;\n}"
|
|
834
778
|
},
|
|
835
|
-
{
|
|
836
|
-
"name": "SubagentCatalogEntry",
|
|
837
|
-
"declaration": "export type SubagentCatalogEntry = { readonly id: SessionId; readonly createdAt: number; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'external'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; } | { readonly mode: 'unknown'; readonly label?: string; });"
|
|
838
|
-
},
|
|
839
779
|
{
|
|
840
780
|
"name": "SubagentCatalogEvent",
|
|
841
781
|
"declaration": "export type SubagentCatalogEvent = { readonly childId: SessionId; readonly childCreatedAt: number; } & (({ readonly version: 0; } & KnownCatalogMode) | ({ readonly version: 1; } & (KnownCatalogMode | { readonly mode: 'unknown'; readonly label?: string; })) | { readonly version: 2; readonly mode: 'external'; readonly label?: string; });"
|
|
842
782
|
},
|
|
843
783
|
{
|
|
844
784
|
"name": "SubagentCatalogRow",
|
|
845
|
-
"declaration": "export type SubagentCatalogRow = { readonly id: SessionId; readonly activity: 'running' | 'inactive'; } &
|
|
785
|
+
"declaration": "export type SubagentCatalogRow = { readonly id: SessionId; readonly activity: 'running' | 'inactive'; } & KnownSubagentCatalogFields;"
|
|
786
|
+
},
|
|
787
|
+
{
|
|
788
|
+
"name": "SubagentDelivery",
|
|
789
|
+
"declaration": "export type SubagentDelivery = 'queue' | 'steer';"
|
|
846
790
|
},
|
|
847
791
|
{
|
|
848
792
|
"name": "SubagentDescendantListEntry",
|
|
@@ -858,7 +802,7 @@ export const TYPERT = {
|
|
|
858
802
|
},
|
|
859
803
|
{
|
|
860
804
|
"name": "SubagentInterruptAuthority",
|
|
861
|
-
"declaration": "export type SubagentInterruptAuthority = { readonly kind: 'user';
|
|
805
|
+
"declaration": "export type SubagentInterruptAuthority = { readonly kind: 'user'; } | { readonly kind: 'ancestor'; readonly agent: Agent; };"
|
|
862
806
|
},
|
|
863
807
|
{
|
|
864
808
|
"name": "SubagentInterruptReceipt",
|
|
@@ -874,7 +818,7 @@ export const TYPERT = {
|
|
|
874
818
|
},
|
|
875
819
|
{
|
|
876
820
|
"name": "SubagentPromptRequest",
|
|
877
|
-
"declaration": "export interface SubagentPromptRequest {\n readonly requestId: SubagentPromptRequestId;\n readonly
|
|
821
|
+
"declaration": "export interface SubagentPromptRequest {\n readonly requestId: SubagentPromptRequestId;\n readonly childSessionId: SessionId;\n readonly delivery: SubagentDelivery;\n readonly content: readonly PromptContentPart[];\n readonly clientTimeZone?: string;\n}"
|
|
878
822
|
},
|
|
879
823
|
{
|
|
880
824
|
"name": "SubagentPromptRequestId",
|
|
@@ -898,7 +842,7 @@ export const TYPERT = {
|
|
|
898
842
|
},
|
|
899
843
|
{
|
|
900
844
|
"name": "SubagentSettledMessageSource",
|
|
901
|
-
"declaration": "export interface SubagentSettledMessageSource {\n readonly kind: 'subagent-settled';\n readonly form: 'notice';\n readonly summary: string;\n readonly senderSessionId: SessionId;\n}"
|
|
845
|
+
"declaration": "export interface SubagentSettledMessageSource {\n readonly kind: 'subagent-settled';\n readonly form: 'notice';\n readonly summary: string;\n readonly stopReason?: SubagentResult['stopReason'];\n readonly senderSessionId: SessionId;\n}"
|
|
902
846
|
},
|
|
903
847
|
{
|
|
904
848
|
"name": "SubagentStartRequest",
|
|
@@ -1053,14 +997,14 @@ export const TYPERT = {
|
|
|
1053
997
|
],
|
|
1054
998
|
"events": [
|
|
1055
999
|
{
|
|
1056
|
-
"description": "A published child settled. Scope-filtered dispatch uses the same
|
|
1000
|
+
"description": "A published child settled. Scope-filtered dispatch uses the same subagent tree-root carrier as `subagent/start`, so the lifecycle pair reaches the same scoped audience.",
|
|
1057
1001
|
"summary": "A published child settled.",
|
|
1058
1002
|
"tags": [
|
|
1059
1003
|
{
|
|
1060
1004
|
"name": "param",
|
|
1061
1005
|
"argument": "info",
|
|
1062
|
-
"comment": "-
|
|
1063
|
-
"text": "@param info -
|
|
1006
|
+
"comment": "- run identity, durable direct creator `parentSessionId`, and terminal outcome.",
|
|
1007
|
+
"text": "@param info - run identity, durable direct creator `parentSessionId`, and terminal outcome.\n *"
|
|
1064
1008
|
},
|
|
1065
1009
|
{
|
|
1066
1010
|
"name": "mode",
|
|
@@ -1068,7 +1012,7 @@ export const TYPERT = {
|
|
|
1068
1012
|
"text": "@mode emit"
|
|
1069
1013
|
}
|
|
1070
1014
|
],
|
|
1071
|
-
"jsDoc": "/**\n * A published child settled. Scope-filtered dispatch uses the same
|
|
1015
|
+
"jsDoc": "/**\n * A published child settled. Scope-filtered dispatch uses the same subagent tree-root\n * carrier as `subagent/start`, so the lifecycle pair reaches the\n * same scoped audience.\n * @param info - run identity, durable direct creator `parentSessionId`, and terminal outcome.\n * @mode emit\n */",
|
|
1072
1016
|
"name": "subagent/end",
|
|
1073
1017
|
"mode": "emit",
|
|
1074
1018
|
"signature": "'subagent/end'(this: Scoped<SubagentRuntime>, info: SubagentRunEndInfo): void"
|
|
@@ -1116,14 +1060,14 @@ export const TYPERT = {
|
|
|
1116
1060
|
"signature": "'subagent/provider-removed'(name: string): void"
|
|
1117
1061
|
},
|
|
1118
1062
|
{
|
|
1119
|
-
"description": "A provider established a published child. For in-process providers, `ctx.agents.get(info.id)` resolves during this notification. Scope-filtered dispatch keys the carrier by the
|
|
1063
|
+
"description": "A provider established a published child. For in-process providers, `ctx.agents.get(info.id)` resolves during this notification. Scope-filtered dispatch keys the carrier by the subagent tree root, so a root-scoped listener observes all subagent tree activations. Paired with `subagent/end`.",
|
|
1120
1064
|
"summary": "A provider established a published child.",
|
|
1121
1065
|
"tags": [
|
|
1122
1066
|
{
|
|
1123
1067
|
"name": "param",
|
|
1124
1068
|
"argument": "info",
|
|
1125
|
-
"comment": "-
|
|
1126
|
-
"text": "@param info -
|
|
1069
|
+
"comment": "- provider, child identity, and durable direct creator `parentSessionId`.",
|
|
1070
|
+
"text": "@param info - provider, child identity, and durable direct creator `parentSessionId`.\n *"
|
|
1127
1071
|
},
|
|
1128
1072
|
{
|
|
1129
1073
|
"name": "mode",
|
|
@@ -1131,7 +1075,7 @@ export const TYPERT = {
|
|
|
1131
1075
|
"text": "@mode emit"
|
|
1132
1076
|
}
|
|
1133
1077
|
],
|
|
1134
|
-
"jsDoc": "/**\n * A provider established a published child. For in-process providers,\n * `ctx.agents.get(info.id)` resolves during this notification.\n * Scope-filtered dispatch keys the carrier by the
|
|
1078
|
+
"jsDoc": "/**\n * A provider established a published child. For in-process providers,\n * `ctx.agents.get(info.id)` resolves during this notification.\n * Scope-filtered dispatch keys the carrier by the subagent tree root, so a\n * root-scoped listener observes all subagent tree activations. Paired with\n * `subagent/end`.\n * @param info - provider, child identity, and durable direct creator `parentSessionId`.\n * @mode emit\n */",
|
|
1135
1079
|
"name": "subagent/start",
|
|
1136
1080
|
"mode": "emit",
|
|
1137
1081
|
"signature": "'subagent/start'(this: Scoped<SubagentRuntime>, info: SubagentRunInfo): void"
|
|
@@ -9,11 +9,11 @@ import type { SubagentInterruptReceipt, SubagentPromptReceipt, SubagentPromptReq
|
|
|
9
9
|
|
|
10
10
|
declare module '@deepseek-ai/dsh-typert-protocol' {
|
|
11
11
|
interface TypertRemoteNamespace$7375626167656e7473 {
|
|
12
|
-
|
|
12
|
+
interruptByUser: (childSessionId: SessionId) => Promise<RemoteResult<SubagentInterruptReceipt>>
|
|
13
13
|
prompt: (request: SubagentPromptRequest, signal?: AbortSignal) => Promise<RemoteResult<SubagentPromptReceipt>>
|
|
14
14
|
}
|
|
15
15
|
interface TypertRemoteMap {
|
|
16
|
-
'subagents/
|
|
16
|
+
'subagents/interruptByUser': (childSessionId: SessionId) => Promise<RemoteResult<SubagentInterruptReceipt>>
|
|
17
17
|
'subagents/prompt': (request: SubagentPromptRequest, signal?: AbortSignal) => Promise<RemoteResult<SubagentPromptReceipt>>
|
|
18
18
|
}
|
|
19
19
|
interface TypertRemoteNamespaceMap {
|
|
@@ -22,7 +22,7 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export declare const TYPERT_REMOTE: TypertRemoteInfo<{
|
|
25
|
-
readonly 'subagents/
|
|
25
|
+
readonly 'subagents/interruptByUser': TypertRemoteMethod<{ readonly 'childSessionId': SessionId }, SubagentInterruptReceipt>
|
|
26
26
|
readonly 'subagents/prompt': TypertRemoteMethod<{ readonly 'request': SubagentPromptRequest }, SubagentPromptReceipt>
|
|
27
27
|
}>
|
|
28
28
|
export default TYPERT_REMOTE
|