@qilin-agent/commands 3.1.5 → 3.1.7
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/lib/typert.host.js +145 -33
- package/lib/typert.remote-client.d.ts +6 -2
- package/lib/typert.remote-client.js +77 -30
- package/package.json +18 -18
package/lib/typert.host.js
CHANGED
|
@@ -1,57 +1,69 @@
|
|
|
1
1
|
/* Generated by @qilin-agent/typert-generator from FaceModel — do not edit. */
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
|
+
import { createTypertRemoteInfo } from '@qilin-agent/typert-protocol/remote-info'
|
|
5
|
+
|
|
4
6
|
let _qilin_agent_commands_commands_execute_parameter_0$schema$value
|
|
5
|
-
const _qilin_agent_commands_commands_execute_parameter_0$schema = () => (_qilin_agent_commands_commands_execute_parameter_0$schema$value ??= z.
|
|
7
|
+
const _qilin_agent_commands_commands_execute_parameter_0$schema = () => (_qilin_agent_commands_commands_execute_parameter_0$schema$value ??= z.string())
|
|
6
8
|
let _qilin_agent_commands_commands_execute_parameter_1$schema$value
|
|
7
9
|
const _qilin_agent_commands_commands_execute_parameter_1$schema = () => (_qilin_agent_commands_commands_execute_parameter_1$schema$value ??= z.string())
|
|
8
10
|
let _qilin_agent_commands_commands_execute_parameter_2$schema$value
|
|
9
|
-
const _qilin_agent_commands_commands_execute_parameter_2$schema = () => (_qilin_agent_commands_commands_execute_parameter_2$schema$value ??= z.array(z.union([z.
|
|
11
|
+
const _qilin_agent_commands_commands_execute_parameter_2$schema = () => (_qilin_agent_commands_commands_execute_parameter_2$schema$value ??= z.array(z.union([z.object({
|
|
10
12
|
'type': z.literal("image").readonly(),
|
|
13
|
+
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]).describe('Declared media type, verified against the decoded bytes during admission.'),
|
|
14
|
+
'data': z.string().describe('Canonical base64 encoding of the image bytes.'),
|
|
15
|
+
'name': z.string().optional().describe('Optional display name; it is never interpreted as a path.'),
|
|
11
16
|
}), z.object({
|
|
12
|
-
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]),
|
|
13
|
-
'data': z.string(),
|
|
14
|
-
'name': z.string().optional(),
|
|
15
|
-
})), z.object({
|
|
16
17
|
'type': z.literal("file").readonly(),
|
|
17
18
|
'receiptId': z.string().readonly(),
|
|
18
19
|
})])))
|
|
19
20
|
let _qilin_agent_commands_commands_execute_result$schema$value
|
|
20
21
|
const _qilin_agent_commands_commands_execute_result$schema = () => (_qilin_agent_commands_commands_execute_result$schema$value ??= z.union([z.undefined(), z.object({
|
|
21
|
-
'commandId': z.
|
|
22
|
+
'commandId': z.string().readonly().describe('Pairing id carried by this execution\'s lifecycle events.'),
|
|
22
23
|
'result': z.union([z.object({
|
|
23
24
|
'kind': z.literal("success").readonly(),
|
|
24
25
|
'text': z.string().readonly().optional(),
|
|
25
|
-
'sourceEventSeq': z.
|
|
26
|
+
'sourceEventSeq': z.number().readonly().optional().describe('Earlier authoritative domain event that owns a richer presentation.'),
|
|
26
27
|
}), z.object({
|
|
27
28
|
'kind': z.literal("error").readonly(),
|
|
28
29
|
'text': z.string().readonly(),
|
|
29
|
-
})]).readonly(),
|
|
30
|
+
})]).readonly().describe('The handler\'s normalized outcome.'),
|
|
30
31
|
})]))
|
|
31
32
|
let _qilin_agent_commands_commands_list_parameter_0$schema$value
|
|
32
|
-
const _qilin_agent_commands_commands_list_parameter_0$schema = () => (_qilin_agent_commands_commands_list_parameter_0$schema$value ??= z.
|
|
33
|
+
const _qilin_agent_commands_commands_list_parameter_0$schema = () => (_qilin_agent_commands_commands_list_parameter_0$schema$value ??= z.string())
|
|
33
34
|
let _qilin_agent_commands_commands_list_result$schema$value
|
|
34
35
|
const _qilin_agent_commands_commands_list_result$schema = () => (_qilin_agent_commands_commands_list_result$schema$value ??= z.array(z.object({
|
|
35
|
-
'definitionId': z.
|
|
36
|
-
'name': z.string().readonly(),
|
|
37
|
-
'description': z.string().readonly(),
|
|
36
|
+
'definitionId': z.string().readonly().optional().describe('Stable plugin-owned identity; absent for definitions without identity-based client behavior.'),
|
|
37
|
+
'name': z.string().readonly().describe('Lowercase command name without the leading slash.'),
|
|
38
|
+
'description': z.string().readonly().describe('Human-readable summary used in discovery UI.'),
|
|
38
39
|
'input': z.object({
|
|
39
|
-
'hint': z.string().readonly(),
|
|
40
|
-
'attachments': z.boolean().readonly().optional(),
|
|
41
|
-
}).readonly().optional(),
|
|
40
|
+
'hint': z.string().readonly().describe('Placeholder shown before the user supplies free-form input.'),
|
|
41
|
+
'attachments': z.boolean().readonly().optional().describe('Whether composer attachments may accompany an invocation. Absent or false = the executor rejects an invocation carrying attachments and capable composers refuse the submission before dispatch. A declaring command\'s handler receives the admitted durable blocks and owns every further grammar decision, including rejecting sub-commands that cannot use them.'),
|
|
42
|
+
}).readonly().optional().describe('Optional free-form input hint advertised to capable clients.'),
|
|
42
43
|
})))
|
|
44
|
+
let _qilin_agent_commands_commands_execute_parameter_0_strict$schema$value
|
|
45
|
+
const _qilin_agent_commands_commands_execute_parameter_0_strict$schema = () => (_qilin_agent_commands_commands_execute_parameter_0_strict$schema$value ??= z.string())
|
|
46
|
+
let _qilin_agent_commands_commands_execute_parameter_1_strict$schema$value
|
|
47
|
+
const _qilin_agent_commands_commands_execute_parameter_1_strict$schema = () => (_qilin_agent_commands_commands_execute_parameter_1_strict$schema$value ??= z.string())
|
|
48
|
+
let _qilin_agent_commands_commands_execute_parameter_2_strict$schema$value
|
|
49
|
+
const _qilin_agent_commands_commands_execute_parameter_2_strict$schema = () => (_qilin_agent_commands_commands_execute_parameter_2_strict$schema$value ??= z.array(z.union([z.strictObject({
|
|
50
|
+
'type': z.literal("image").readonly(),
|
|
51
|
+
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]).describe('Declared media type, verified against the decoded bytes during admission.'),
|
|
52
|
+
'data': z.string().describe('Canonical base64 encoding of the image bytes.'),
|
|
53
|
+
'name': z.string().optional().describe('Optional display name; it is never interpreted as a path.'),
|
|
54
|
+
}), z.strictObject({
|
|
55
|
+
'type': z.literal("file").readonly(),
|
|
56
|
+
'receiptId': z.string().readonly(),
|
|
57
|
+
})])))
|
|
58
|
+
let _qilin_agent_commands_commands_list_parameter_0_strict$schema$value
|
|
59
|
+
const _qilin_agent_commands_commands_list_parameter_0_strict$schema = () => (_qilin_agent_commands_commands_list_parameter_0_strict$schema$value ??= z.string())
|
|
43
60
|
|
|
44
|
-
|
|
61
|
+
const $remote = createTypertRemoteInfo({
|
|
45
62
|
package: '@qilin-agent/commands',
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
],
|
|
49
|
-
invocations: [
|
|
50
|
-
{
|
|
51
|
-
id: '@qilin-agent/commands#commands/execute',
|
|
63
|
+
methods: {
|
|
64
|
+
'commands/execute': {
|
|
52
65
|
service: 'commands',
|
|
53
|
-
|
|
54
|
-
method: 'execute',
|
|
66
|
+
description: 'Parse and execute a known command without sending it to the model. A resolved command\'s lifecycle is logged: `command/run` is appended before the handler is invoked and `command/done` after settlement (a thrown or aborted handler settles as `kind: \'error\'`). Both are direct log-only appends — no turn wraps them, and persistence drains them at ordinary checkpoints. Admission misses (syntax or unknown name) log nothing — they never entered a handler. A `command/run` append failure fails the execution loud; a `command/done` append failure on the handler-failure path is contained so the handler\'s own error stays the reported failure. Attachment admission is enforced here, not in the composer: attachments sent to a command that does not declare `input.attachments`, an absent attachment store, and an exceeded image limit each settle as an error result before the handler runs. Validation rejection starts no attachment writes; a storage failure can leave only unreachable content-addressed objects for deferred collection.',
|
|
55
67
|
invocation: { kind: 'direct' },
|
|
56
68
|
scope: {
|
|
57
69
|
context: 'agent',
|
|
@@ -61,32 +73,54 @@ export const TYPERT = {
|
|
|
61
73
|
{
|
|
62
74
|
name: 'agent',
|
|
63
75
|
wire: 'agentId',
|
|
76
|
+
description: 'exact receiving agent.',
|
|
64
77
|
source: 'lookup',
|
|
65
78
|
lookup: 'agent',
|
|
66
79
|
codec: {
|
|
67
80
|
mode: 'strict',
|
|
68
81
|
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
69
82
|
create: _qilin_agent_commands_commands_execute_parameter_0$schema,
|
|
83
|
+
jsonSchema: {"type":"string"},
|
|
84
|
+
},
|
|
85
|
+
strictCodec: {
|
|
86
|
+
mode: 'strict',
|
|
87
|
+
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
88
|
+
create: _qilin_agent_commands_commands_execute_parameter_0_strict$schema,
|
|
89
|
+
jsonSchema: {"type":"string"},
|
|
70
90
|
},
|
|
71
91
|
},
|
|
72
92
|
{
|
|
73
93
|
name: 'line',
|
|
74
|
-
|
|
94
|
+
description: 'complete slash-command line.',
|
|
75
95
|
source: 'json',
|
|
76
96
|
codec: {
|
|
77
97
|
mode: 'strict',
|
|
78
98
|
typeSymbol: '@qilin-agent/commands#commands/execute:line',
|
|
79
99
|
create: _qilin_agent_commands_commands_execute_parameter_1$schema,
|
|
100
|
+
jsonSchema: {"type":"string"},
|
|
101
|
+
},
|
|
102
|
+
strictCodec: {
|
|
103
|
+
mode: 'strict',
|
|
104
|
+
typeSymbol: '@qilin-agent/commands#commands/execute:line',
|
|
105
|
+
create: _qilin_agent_commands_commands_execute_parameter_1_strict$schema,
|
|
106
|
+
jsonSchema: {"type":"string"},
|
|
80
107
|
},
|
|
81
108
|
},
|
|
82
109
|
{
|
|
83
110
|
name: 'submittedAttachments',
|
|
84
|
-
|
|
111
|
+
description: 'encoded images and staged file receipts accompanying the line, in submission order; empty for a plain invocation.',
|
|
85
112
|
source: 'json',
|
|
86
113
|
codec: {
|
|
87
114
|
mode: 'strict',
|
|
88
115
|
typeSymbol: '@qilin-agent/commands#commands/execute:submittedAttachments',
|
|
89
116
|
create: _qilin_agent_commands_commands_execute_parameter_2$schema,
|
|
117
|
+
jsonSchema: {"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"image"},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"],"description":"Declared media type, verified against the decoded bytes during admission."},"data":{"type":"string","description":"Canonical base64 encoding of the image bytes."},"name":{"type":"string","description":"Optional display name; it is never interpreted as a path."}},"required":["type","mediaType","data"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"file"},"receiptId":{"type":"string"}},"required":["type","receiptId"],"additionalProperties":true}]}},
|
|
118
|
+
},
|
|
119
|
+
strictCodec: {
|
|
120
|
+
mode: 'strict',
|
|
121
|
+
typeSymbol: '@qilin-agent/commands#commands/execute:submittedAttachments',
|
|
122
|
+
create: _qilin_agent_commands_commands_execute_parameter_2_strict$schema,
|
|
123
|
+
jsonSchema: {"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"image"},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"],"description":"Declared media type, verified against the decoded bytes during admission."},"data":{"type":"string","description":"Canonical base64 encoding of the image bytes."},"name":{"type":"string","description":"Optional display name; it is never interpreted as a path."}},"required":["type","mediaType","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"file"},"receiptId":{"type":"string"}},"required":["type","receiptId"],"additionalProperties":false}]}},
|
|
90
124
|
},
|
|
91
125
|
},
|
|
92
126
|
],
|
|
@@ -95,14 +129,14 @@ export const TYPERT = {
|
|
|
95
129
|
mode: 'strict',
|
|
96
130
|
typeSymbol: '@qilin-agent/commands#commands/execute:result',
|
|
97
131
|
create: _qilin_agent_commands_commands_execute_result$schema,
|
|
132
|
+
description: 'the settled execution (result + lifecycle pairing id), or `undefined` when syntax or name does not resolve.',
|
|
133
|
+
jsonSchemaError: 'typert tool schema: unsupported undefined value',
|
|
98
134
|
},
|
|
99
135
|
sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":361,"column":9},
|
|
100
136
|
},
|
|
101
|
-
{
|
|
102
|
-
id: '@qilin-agent/commands#commands/list',
|
|
137
|
+
'commands/list': {
|
|
103
138
|
service: 'commands',
|
|
104
|
-
|
|
105
|
-
method: 'list',
|
|
139
|
+
description: 'List the effective immutable command descriptors for one agent.',
|
|
106
140
|
invocation: { kind: 'direct' },
|
|
107
141
|
scope: {
|
|
108
142
|
context: 'agent',
|
|
@@ -112,12 +146,20 @@ export const TYPERT = {
|
|
|
112
146
|
{
|
|
113
147
|
name: 'agent',
|
|
114
148
|
wire: 'agentId',
|
|
149
|
+
description: 'exact receiving agent and scoped-layer key.',
|
|
115
150
|
source: 'lookup',
|
|
116
151
|
lookup: 'agent',
|
|
117
152
|
codec: {
|
|
118
153
|
mode: 'strict',
|
|
119
154
|
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
120
155
|
create: _qilin_agent_commands_commands_list_parameter_0$schema,
|
|
156
|
+
jsonSchema: {"type":"string"},
|
|
157
|
+
},
|
|
158
|
+
strictCodec: {
|
|
159
|
+
mode: 'strict',
|
|
160
|
+
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
161
|
+
create: _qilin_agent_commands_commands_list_parameter_0_strict$schema,
|
|
162
|
+
jsonSchema: {"type":"string"},
|
|
121
163
|
},
|
|
122
164
|
},
|
|
123
165
|
],
|
|
@@ -125,10 +167,20 @@ export const TYPERT = {
|
|
|
125
167
|
mode: 'strict',
|
|
126
168
|
typeSymbol: '@qilin-agent/commands#commands/list:result',
|
|
127
169
|
create: _qilin_agent_commands_commands_list_result$schema,
|
|
170
|
+
description: 'name-sorted descriptors after scoped shadowing.',
|
|
171
|
+
jsonSchema: {"type":"array","items":{"type":"object","properties":{"definitionId":{"type":"string","description":"Stable plugin-owned identity; absent for definitions without identity-based client behavior."},"name":{"type":"string","description":"Lowercase command name without the leading slash."},"description":{"type":"string","description":"Human-readable summary used in discovery UI."},"input":{"type":"object","properties":{"hint":{"type":"string","description":"Placeholder shown before the user supplies free-form input."},"attachments":{"type":"boolean","description":"Whether composer attachments may accompany an invocation. Absent or false = the executor rejects an invocation carrying attachments and capable composers refuse the submission before dispatch. A declaring command's handler receives the admitted durable blocks and owns every further grammar decision, including rejecting sub-commands that cannot use them."}},"required":["hint"],"additionalProperties":true,"description":"Optional free-form input hint advertised to capable clients."}},"required":["name","description"],"additionalProperties":true}},
|
|
128
172
|
},
|
|
129
173
|
sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":315,"column":3},
|
|
130
174
|
},
|
|
175
|
+
},
|
|
176
|
+
}, z)
|
|
177
|
+
|
|
178
|
+
export const TYPERT = {
|
|
179
|
+
package: '@qilin-agent/commands',
|
|
180
|
+
face: 'host',
|
|
181
|
+
schemas: [
|
|
131
182
|
],
|
|
183
|
+
get invocations() { return $remote.descriptors },
|
|
132
184
|
model: {
|
|
133
185
|
"services": [
|
|
134
186
|
{
|
|
@@ -200,6 +252,10 @@ export const TYPERT = {
|
|
|
200
252
|
"name": "AgentStatus",
|
|
201
253
|
"declaration": "export type AgentStatus = 'idle' | 'running';"
|
|
202
254
|
},
|
|
255
|
+
{
|
|
256
|
+
"name": "AllowedModelRoute",
|
|
257
|
+
"declaration": "export interface AllowedModelRoute {\n readonly provider: string;\n readonly model: string;\n}"
|
|
258
|
+
},
|
|
203
259
|
{
|
|
204
260
|
"name": "ApprovalOutcome",
|
|
205
261
|
"declaration": "export type ApprovalOutcome = 'allowed-once' | 'rejected' | 'cancelled' | 'unavailable';"
|
|
@@ -432,6 +488,30 @@ export const TYPERT = {
|
|
|
432
488
|
"name": "InboxTarget",
|
|
433
489
|
"declaration": "export type InboxTarget = 'next-turn' | 'next-step';"
|
|
434
490
|
},
|
|
491
|
+
{
|
|
492
|
+
"name": "JobId",
|
|
493
|
+
"declaration": "export type JobId = Branded<'JobId'>;"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"name": "JobOutcome",
|
|
497
|
+
"declaration": "export interface JobOutcome {\n status: 'completed' | 'killed' | 'failed';\n detail?: string;\n result?: string;\n}"
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
"name": "JobRegisteredData",
|
|
501
|
+
"declaration": "export interface JobRegisteredData {\n readonly jobId: JobId;\n readonly owner: SessionId;\n readonly kind: string;\n readonly label: string;\n readonly startedAt: number;\n readonly toolCall?: JobToolCall;\n}"
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"name": "JobSettleCause",
|
|
505
|
+
"declaration": "export type JobSettleCause = 'producer' | 'kill' | 'teardown';"
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"name": "JobSettledData",
|
|
509
|
+
"declaration": "export interface JobSettledData extends JobRegisteredData {\n readonly finishedAt: number;\n readonly status: JobOutcome['status'];\n readonly cause: JobSettleCause;\n readonly producerReported: boolean;\n readonly detail?: string;\n}"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"name": "JobToolCall",
|
|
513
|
+
"declaration": "export interface JobToolCall {\n readonly callId: SessionEventMap['tool/call']['callId'];\n readonly rootCallId: SessionEventMap['tool/call']['callId'];\n}"
|
|
514
|
+
},
|
|
435
515
|
{
|
|
436
516
|
"name": "JsonValue",
|
|
437
517
|
"declaration": "export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue; };"
|
|
@@ -468,6 +548,14 @@ export const TYPERT = {
|
|
|
468
548
|
"name": "LlmFailure",
|
|
469
549
|
"declaration": "export interface LlmFailure {\n readonly message: string;\n readonly code: string;\n readonly status?: number;\n readonly providerRetryAfterMs?: number;\n readonly requestId?: ProviderRequestId;\n readonly offloadImages?: number;\n}"
|
|
470
550
|
},
|
|
551
|
+
{
|
|
552
|
+
"name": "LlmRetryEventData",
|
|
553
|
+
"declaration": "export type LlmRetryEventData = { retryId: RetryId; turn: number; step: number; provider: string; mode: 'normal'; policyKey: string; retry: number; maxRetries: number; delayMs: number; failure: LlmFailure; } | { retryId: RetryId; turn: number; step: number; provider: string; mode: 'always'; policyKey: string; retry: number; delayMs: number; failure: LlmFailure; };"
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "LlmRetryStartedEventData",
|
|
557
|
+
"declaration": "export interface LlmRetryStartedEventData {\n retryId: RetryId;\n turn: number;\n step: number;\n retry: number;\n}"
|
|
558
|
+
},
|
|
471
559
|
{
|
|
472
560
|
"name": "Message",
|
|
473
561
|
"declaration": "export type Message = MessageRoleMap[keyof MessageRoleMap];"
|
|
@@ -510,7 +598,7 @@ export const TYPERT = {
|
|
|
510
598
|
},
|
|
511
599
|
{
|
|
512
600
|
"name": "MessageSourceMap",
|
|
513
|
-
"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 'user-approval': { kind: 'user-approval'; } & ContextFormed;\n 'working-directory': { kind: 'working-directory'; };\n 'ptc-mode': { kind: 'ptc-mode'; };\n 'tool-registry': { kind: 'tool-registry'; };\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n 'sidechat-boundary': { kind: 'sidechat-boundary'; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n '
|
|
601
|
+
"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 'runtime-context': { kind: 'runtime-context'; } & ContextFormed;\n 'user-approval': { kind: 'user-approval'; } & ContextFormed;\n 'working-directory': { kind: 'working-directory'; };\n 'ptc-mode': { kind: 'ptc-mode'; };\n 'tool-registry': { kind: 'tool-registry'; };\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; principal?: Principal; };\n 'sidechat-boundary': { kind: 'sidechat-boundary'; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'user-question-reply': { kind: 'user-question-reply'; callId: ToolCallId; outcome: 'answered'; };\n 'session-reference': SessionReferenceSource;\n 'compact-checkpoint': CompactionCheckpointSource;\n 'team-message': TeamMessageSource;\n webhook: { readonly kind: 'webhook'; readonly provider: string; readonly source: WebhookSourceId; readonly deliveryId: WebhookDeliveryId; readonly ruleId: WebhookRuleId; readonly form: 'notice'; readonly summary: string; };\n goal: GoalMessageSource;\n 'kylin-host-runner': { kind: 'kylin-host-runner'; };\n 'plan-mode': { kind: 'plan-mode'; } & ContextFormed;\n schedule: { kind: 'schedule'; } & ContextFormed;\n}"
|
|
514
602
|
},
|
|
515
603
|
{
|
|
516
604
|
"name": "ModelMessageSource",
|
|
@@ -532,6 +620,14 @@ export const TYPERT = {
|
|
|
532
620
|
"name": "OptionalSessionSeq",
|
|
533
621
|
"declaration": "export type OptionalSessionSeq = SessionSeq | null;"
|
|
534
622
|
},
|
|
623
|
+
{
|
|
624
|
+
"name": "Principal",
|
|
625
|
+
"declaration": "export type Principal = PrincipalMap[keyof PrincipalMap];"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"name": "PrincipalMap",
|
|
629
|
+
"declaration": "export interface PrincipalMap {\n owner: { readonly kind: 'owner'; };\n}"
|
|
630
|
+
},
|
|
535
631
|
{
|
|
536
632
|
"name": "ProviderRequestId",
|
|
537
633
|
"declaration": "export type ProviderRequestId = Branded<'ProviderRequestId'>;"
|
|
@@ -564,6 +660,10 @@ export const TYPERT = {
|
|
|
564
660
|
"name": "RequestHeaderReason",
|
|
565
661
|
"declaration": "export type RequestHeaderReason = 'initial' | 'resume' | 'change' | 'series';"
|
|
566
662
|
},
|
|
663
|
+
{
|
|
664
|
+
"name": "RetryId",
|
|
665
|
+
"declaration": "export type RetryId = Branded<'RetryId'>;"
|
|
666
|
+
},
|
|
567
667
|
{
|
|
568
668
|
"name": "SandboxMode",
|
|
569
669
|
"declaration": "export type SandboxMode = 'read-only' | 'workspace-write' | 'danger-full-access';"
|
|
@@ -598,7 +698,7 @@ export const TYPERT = {
|
|
|
598
698
|
},
|
|
599
699
|
{
|
|
600
700
|
"name": "SessionEventMap",
|
|
601
|
-
"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 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'working-directory/change': { cwd: string; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@qilin-agent/session/types').SessionSeq; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'permission/preset': { preset: string; };\n 'subagent/descriptor': SubagentDescriptorData;\n 'subagent/catalog': SubagentCatalogEvent;\n '
|
|
701
|
+
"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 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'working-directory/change': { cwd: string; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'job/registered': JobRegisteredData;\n 'job/settled': JobSettledData;\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@qilin-agent/session/types').SessionSeq; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'permission/preset': { preset: string; };\n 'subagent/descriptor': SubagentDescriptorData;\n 'subagent/catalog': SubagentCatalogEvent;\n 'schedule/change': ScheduleChange;\n 'feedback/record': FeedbackRecord;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n 'llm/retry': LlmRetryEventData;\n 'llm/retry-started': LlmRetryStartedEventData;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'plan/mode': { active: boolean; };\n 'subagent/model-selection-policy': { allowedModels: AllowedModelRoute[]; };\n 'workspace/changes': { turn: number; };\n}"
|
|
602
702
|
},
|
|
603
703
|
{
|
|
604
704
|
"name": "SessionEventType",
|
|
@@ -795,6 +895,18 @@ export const TYPERT = {
|
|
|
795
895
|
{
|
|
796
896
|
"name": "UserMessage",
|
|
797
897
|
"declaration": "export interface UserMessage extends MessageBase {\n readonly role: 'user';\n}"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"name": "WebhookDeliveryId",
|
|
901
|
+
"declaration": "export type WebhookDeliveryId = Branded<'WebhookDeliveryId'>;"
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
"name": "WebhookRuleId",
|
|
905
|
+
"declaration": "export type WebhookRuleId = Branded<'WebhookRuleId'>;"
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
"name": "WebhookSourceId",
|
|
909
|
+
"declaration": "export type WebhookSourceId = Branded<'WebhookSourceId'>;"
|
|
798
910
|
}
|
|
799
911
|
]
|
|
800
912
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* Generated by @qilin-agent/typert-generator from the Host FaceModel — do not edit. */
|
|
2
2
|
import type {
|
|
3
3
|
RemoteResult,
|
|
4
|
-
|
|
4
|
+
TypertRemoteInfo,
|
|
5
|
+
TypertRemoteMethod,
|
|
5
6
|
} from '@qilin-agent/typert-protocol'
|
|
6
7
|
import type { CommandDescriptor, CommandExecution, CommandSubmitAttachment } from '@qilin-agent/commands/types'
|
|
7
8
|
import type { SessionId } from '@qilin-agent/session/types'
|
|
@@ -24,6 +25,9 @@ declare module '@qilin-agent/typert-protocol' {
|
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
export declare const TYPERT_REMOTE:
|
|
28
|
+
export declare const TYPERT_REMOTE: TypertRemoteInfo<{
|
|
29
|
+
readonly 'commands/execute': TypertRemoteMethod<{ readonly 'agentId': SessionId; readonly 'line': string; readonly 'submittedAttachments': readonly CommandSubmitAttachment[] }, CommandExecution | undefined>
|
|
30
|
+
readonly 'commands/list': TypertRemoteMethod<{ readonly 'agentId': SessionId }, readonly CommandDescriptor[]>
|
|
31
|
+
}>
|
|
28
32
|
export default TYPERT_REMOTE
|
|
29
33
|
//# sourceMappingURL=typert.remote-client.d.ts.map
|
|
@@ -1,54 +1,69 @@
|
|
|
1
1
|
/* Generated by @qilin-agent/typert-generator from the Host FaceModel — do not edit. */
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
|
+
import { createTypertRemoteInfo } from '@qilin-agent/typert-protocol/remote-info'
|
|
5
|
+
|
|
4
6
|
let _qilin_agent_commands_commands_execute_parameter_0$schema$value
|
|
5
|
-
const _qilin_agent_commands_commands_execute_parameter_0$schema = () => (_qilin_agent_commands_commands_execute_parameter_0$schema$value ??= z.
|
|
7
|
+
const _qilin_agent_commands_commands_execute_parameter_0$schema = () => (_qilin_agent_commands_commands_execute_parameter_0$schema$value ??= z.string())
|
|
6
8
|
let _qilin_agent_commands_commands_execute_parameter_1$schema$value
|
|
7
9
|
const _qilin_agent_commands_commands_execute_parameter_1$schema = () => (_qilin_agent_commands_commands_execute_parameter_1$schema$value ??= z.string())
|
|
8
10
|
let _qilin_agent_commands_commands_execute_parameter_2$schema$value
|
|
9
|
-
const _qilin_agent_commands_commands_execute_parameter_2$schema = () => (_qilin_agent_commands_commands_execute_parameter_2$schema$value ??= z.array(z.union([z.
|
|
11
|
+
const _qilin_agent_commands_commands_execute_parameter_2$schema = () => (_qilin_agent_commands_commands_execute_parameter_2$schema$value ??= z.array(z.union([z.object({
|
|
10
12
|
'type': z.literal("image").readonly(),
|
|
13
|
+
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]).describe('Declared media type, verified against the decoded bytes during admission.'),
|
|
14
|
+
'data': z.string().describe('Canonical base64 encoding of the image bytes.'),
|
|
15
|
+
'name': z.string().optional().describe('Optional display name; it is never interpreted as a path.'),
|
|
11
16
|
}), z.object({
|
|
12
|
-
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]),
|
|
13
|
-
'data': z.string(),
|
|
14
|
-
'name': z.string().optional(),
|
|
15
|
-
})), z.object({
|
|
16
17
|
'type': z.literal("file").readonly(),
|
|
17
18
|
'receiptId': z.string().readonly(),
|
|
18
19
|
})])))
|
|
19
20
|
let _qilin_agent_commands_commands_execute_result$schema$value
|
|
20
21
|
const _qilin_agent_commands_commands_execute_result$schema = () => (_qilin_agent_commands_commands_execute_result$schema$value ??= z.union([z.undefined(), z.object({
|
|
21
|
-
'commandId': z.
|
|
22
|
+
'commandId': z.string().readonly().describe('Pairing id carried by this execution\'s lifecycle events.'),
|
|
22
23
|
'result': z.union([z.object({
|
|
23
24
|
'kind': z.literal("success").readonly(),
|
|
24
25
|
'text': z.string().readonly().optional(),
|
|
25
|
-
'sourceEventSeq': z.
|
|
26
|
+
'sourceEventSeq': z.number().readonly().optional().describe('Earlier authoritative domain event that owns a richer presentation.'),
|
|
26
27
|
}), z.object({
|
|
27
28
|
'kind': z.literal("error").readonly(),
|
|
28
29
|
'text': z.string().readonly(),
|
|
29
|
-
})]).readonly(),
|
|
30
|
+
})]).readonly().describe('The handler\'s normalized outcome.'),
|
|
30
31
|
})]))
|
|
31
32
|
let _qilin_agent_commands_commands_list_parameter_0$schema$value
|
|
32
|
-
const _qilin_agent_commands_commands_list_parameter_0$schema = () => (_qilin_agent_commands_commands_list_parameter_0$schema$value ??= z.
|
|
33
|
+
const _qilin_agent_commands_commands_list_parameter_0$schema = () => (_qilin_agent_commands_commands_list_parameter_0$schema$value ??= z.string())
|
|
33
34
|
let _qilin_agent_commands_commands_list_result$schema$value
|
|
34
35
|
const _qilin_agent_commands_commands_list_result$schema = () => (_qilin_agent_commands_commands_list_result$schema$value ??= z.array(z.object({
|
|
35
|
-
'definitionId': z.
|
|
36
|
-
'name': z.string().readonly(),
|
|
37
|
-
'description': z.string().readonly(),
|
|
36
|
+
'definitionId': z.string().readonly().optional().describe('Stable plugin-owned identity; absent for definitions without identity-based client behavior.'),
|
|
37
|
+
'name': z.string().readonly().describe('Lowercase command name without the leading slash.'),
|
|
38
|
+
'description': z.string().readonly().describe('Human-readable summary used in discovery UI.'),
|
|
38
39
|
'input': z.object({
|
|
39
|
-
'hint': z.string().readonly(),
|
|
40
|
-
'attachments': z.boolean().readonly().optional(),
|
|
41
|
-
}).readonly().optional(),
|
|
40
|
+
'hint': z.string().readonly().describe('Placeholder shown before the user supplies free-form input.'),
|
|
41
|
+
'attachments': z.boolean().readonly().optional().describe('Whether composer attachments may accompany an invocation. Absent or false = the executor rejects an invocation carrying attachments and capable composers refuse the submission before dispatch. A declaring command\'s handler receives the admitted durable blocks and owns every further grammar decision, including rejecting sub-commands that cannot use them.'),
|
|
42
|
+
}).readonly().optional().describe('Optional free-form input hint advertised to capable clients.'),
|
|
42
43
|
})))
|
|
44
|
+
let _qilin_agent_commands_commands_execute_parameter_0_strict$schema$value
|
|
45
|
+
const _qilin_agent_commands_commands_execute_parameter_0_strict$schema = () => (_qilin_agent_commands_commands_execute_parameter_0_strict$schema$value ??= z.string())
|
|
46
|
+
let _qilin_agent_commands_commands_execute_parameter_1_strict$schema$value
|
|
47
|
+
const _qilin_agent_commands_commands_execute_parameter_1_strict$schema = () => (_qilin_agent_commands_commands_execute_parameter_1_strict$schema$value ??= z.string())
|
|
48
|
+
let _qilin_agent_commands_commands_execute_parameter_2_strict$schema$value
|
|
49
|
+
const _qilin_agent_commands_commands_execute_parameter_2_strict$schema = () => (_qilin_agent_commands_commands_execute_parameter_2_strict$schema$value ??= z.array(z.union([z.strictObject({
|
|
50
|
+
'type': z.literal("image").readonly(),
|
|
51
|
+
'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]).describe('Declared media type, verified against the decoded bytes during admission.'),
|
|
52
|
+
'data': z.string().describe('Canonical base64 encoding of the image bytes.'),
|
|
53
|
+
'name': z.string().optional().describe('Optional display name; it is never interpreted as a path.'),
|
|
54
|
+
}), z.strictObject({
|
|
55
|
+
'type': z.literal("file").readonly(),
|
|
56
|
+
'receiptId': z.string().readonly(),
|
|
57
|
+
})])))
|
|
58
|
+
let _qilin_agent_commands_commands_list_parameter_0_strict$schema$value
|
|
59
|
+
const _qilin_agent_commands_commands_list_parameter_0_strict$schema = () => (_qilin_agent_commands_commands_list_parameter_0_strict$schema$value ??= z.string())
|
|
43
60
|
|
|
44
|
-
export const TYPERT_REMOTE = {
|
|
61
|
+
export const TYPERT_REMOTE = createTypertRemoteInfo({
|
|
45
62
|
package: '@qilin-agent/commands',
|
|
46
|
-
|
|
47
|
-
{
|
|
48
|
-
id: '@qilin-agent/commands#commands/execute',
|
|
63
|
+
methods: {
|
|
64
|
+
'commands/execute': {
|
|
49
65
|
service: 'commands',
|
|
50
|
-
|
|
51
|
-
method: 'execute',
|
|
66
|
+
description: 'Parse and execute a known command without sending it to the model. A resolved command\'s lifecycle is logged: `command/run` is appended before the handler is invoked and `command/done` after settlement (a thrown or aborted handler settles as `kind: \'error\'`). Both are direct log-only appends — no turn wraps them, and persistence drains them at ordinary checkpoints. Admission misses (syntax or unknown name) log nothing — they never entered a handler. A `command/run` append failure fails the execution loud; a `command/done` append failure on the handler-failure path is contained so the handler\'s own error stays the reported failure. Attachment admission is enforced here, not in the composer: attachments sent to a command that does not declare `input.attachments`, an absent attachment store, and an exceeded image limit each settle as an error result before the handler runs. Validation rejection starts no attachment writes; a storage failure can leave only unreachable content-addressed objects for deferred collection.',
|
|
52
67
|
invocation: { kind: 'direct' },
|
|
53
68
|
scope: {
|
|
54
69
|
context: 'agent',
|
|
@@ -58,32 +73,54 @@ export const TYPERT_REMOTE = {
|
|
|
58
73
|
{
|
|
59
74
|
name: 'agent',
|
|
60
75
|
wire: 'agentId',
|
|
76
|
+
description: 'exact receiving agent.',
|
|
61
77
|
source: 'lookup',
|
|
62
78
|
lookup: 'agent',
|
|
63
79
|
codec: {
|
|
64
80
|
mode: 'strict',
|
|
65
81
|
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
66
82
|
create: _qilin_agent_commands_commands_execute_parameter_0$schema,
|
|
83
|
+
jsonSchema: {"type":"string"},
|
|
84
|
+
},
|
|
85
|
+
strictCodec: {
|
|
86
|
+
mode: 'strict',
|
|
87
|
+
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
88
|
+
create: _qilin_agent_commands_commands_execute_parameter_0_strict$schema,
|
|
89
|
+
jsonSchema: {"type":"string"},
|
|
67
90
|
},
|
|
68
91
|
},
|
|
69
92
|
{
|
|
70
93
|
name: 'line',
|
|
71
|
-
|
|
94
|
+
description: 'complete slash-command line.',
|
|
72
95
|
source: 'json',
|
|
73
96
|
codec: {
|
|
74
97
|
mode: 'strict',
|
|
75
98
|
typeSymbol: '@qilin-agent/commands#commands/execute:line',
|
|
76
99
|
create: _qilin_agent_commands_commands_execute_parameter_1$schema,
|
|
100
|
+
jsonSchema: {"type":"string"},
|
|
101
|
+
},
|
|
102
|
+
strictCodec: {
|
|
103
|
+
mode: 'strict',
|
|
104
|
+
typeSymbol: '@qilin-agent/commands#commands/execute:line',
|
|
105
|
+
create: _qilin_agent_commands_commands_execute_parameter_1_strict$schema,
|
|
106
|
+
jsonSchema: {"type":"string"},
|
|
77
107
|
},
|
|
78
108
|
},
|
|
79
109
|
{
|
|
80
110
|
name: 'submittedAttachments',
|
|
81
|
-
|
|
111
|
+
description: 'encoded images and staged file receipts accompanying the line, in submission order; empty for a plain invocation.',
|
|
82
112
|
source: 'json',
|
|
83
113
|
codec: {
|
|
84
114
|
mode: 'strict',
|
|
85
115
|
typeSymbol: '@qilin-agent/commands#commands/execute:submittedAttachments',
|
|
86
116
|
create: _qilin_agent_commands_commands_execute_parameter_2$schema,
|
|
117
|
+
jsonSchema: {"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"image"},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"],"description":"Declared media type, verified against the decoded bytes during admission."},"data":{"type":"string","description":"Canonical base64 encoding of the image bytes."},"name":{"type":"string","description":"Optional display name; it is never interpreted as a path."}},"required":["type","mediaType","data"],"additionalProperties":true},{"type":"object","properties":{"type":{"type":"string","const":"file"},"receiptId":{"type":"string"}},"required":["type","receiptId"],"additionalProperties":true}]}},
|
|
118
|
+
},
|
|
119
|
+
strictCodec: {
|
|
120
|
+
mode: 'strict',
|
|
121
|
+
typeSymbol: '@qilin-agent/commands#commands/execute:submittedAttachments',
|
|
122
|
+
create: _qilin_agent_commands_commands_execute_parameter_2_strict$schema,
|
|
123
|
+
jsonSchema: {"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"image"},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"],"description":"Declared media type, verified against the decoded bytes during admission."},"data":{"type":"string","description":"Canonical base64 encoding of the image bytes."},"name":{"type":"string","description":"Optional display name; it is never interpreted as a path."}},"required":["type","mediaType","data"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"file"},"receiptId":{"type":"string"}},"required":["type","receiptId"],"additionalProperties":false}]}},
|
|
87
124
|
},
|
|
88
125
|
},
|
|
89
126
|
],
|
|
@@ -92,14 +129,14 @@ export const TYPERT_REMOTE = {
|
|
|
92
129
|
mode: 'strict',
|
|
93
130
|
typeSymbol: '@qilin-agent/commands#commands/execute:result',
|
|
94
131
|
create: _qilin_agent_commands_commands_execute_result$schema,
|
|
132
|
+
description: 'the settled execution (result + lifecycle pairing id), or `undefined` when syntax or name does not resolve.',
|
|
133
|
+
jsonSchemaError: 'typert tool schema: unsupported undefined value',
|
|
95
134
|
},
|
|
96
135
|
sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":361,"column":9},
|
|
97
136
|
},
|
|
98
|
-
{
|
|
99
|
-
id: '@qilin-agent/commands#commands/list',
|
|
137
|
+
'commands/list': {
|
|
100
138
|
service: 'commands',
|
|
101
|
-
|
|
102
|
-
method: 'list',
|
|
139
|
+
description: 'List the effective immutable command descriptors for one agent.',
|
|
103
140
|
invocation: { kind: 'direct' },
|
|
104
141
|
scope: {
|
|
105
142
|
context: 'agent',
|
|
@@ -109,12 +146,20 @@ export const TYPERT_REMOTE = {
|
|
|
109
146
|
{
|
|
110
147
|
name: 'agent',
|
|
111
148
|
wire: 'agentId',
|
|
149
|
+
description: 'exact receiving agent and scoped-layer key.',
|
|
112
150
|
source: 'lookup',
|
|
113
151
|
lookup: 'agent',
|
|
114
152
|
codec: {
|
|
115
153
|
mode: 'strict',
|
|
116
154
|
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
117
155
|
create: _qilin_agent_commands_commands_list_parameter_0$schema,
|
|
156
|
+
jsonSchema: {"type":"string"},
|
|
157
|
+
},
|
|
158
|
+
strictCodec: {
|
|
159
|
+
mode: 'strict',
|
|
160
|
+
typeSymbol: '@qilin-agent/session/types#SessionId',
|
|
161
|
+
create: _qilin_agent_commands_commands_list_parameter_0_strict$schema,
|
|
162
|
+
jsonSchema: {"type":"string"},
|
|
118
163
|
},
|
|
119
164
|
},
|
|
120
165
|
],
|
|
@@ -122,10 +167,12 @@ export const TYPERT_REMOTE = {
|
|
|
122
167
|
mode: 'strict',
|
|
123
168
|
typeSymbol: '@qilin-agent/commands#commands/list:result',
|
|
124
169
|
create: _qilin_agent_commands_commands_list_result$schema,
|
|
170
|
+
description: 'name-sorted descriptors after scoped shadowing.',
|
|
171
|
+
jsonSchema: {"type":"array","items":{"type":"object","properties":{"definitionId":{"type":"string","description":"Stable plugin-owned identity; absent for definitions without identity-based client behavior."},"name":{"type":"string","description":"Lowercase command name without the leading slash."},"description":{"type":"string","description":"Human-readable summary used in discovery UI."},"input":{"type":"object","properties":{"hint":{"type":"string","description":"Placeholder shown before the user supplies free-form input."},"attachments":{"type":"boolean","description":"Whether composer attachments may accompany an invocation. Absent or false = the executor rejects an invocation carrying attachments and capable composers refuse the submission before dispatch. A declaring command's handler receives the admitted durable blocks and owns every further grammar decision, including rejecting sub-commands that cannot use them."}},"required":["hint"],"additionalProperties":true,"description":"Optional free-form input hint advertised to capable clients."}},"required":["name","description"],"additionalProperties":true}},
|
|
125
172
|
},
|
|
126
173
|
sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":315,"column":3},
|
|
127
174
|
},
|
|
128
|
-
|
|
129
|
-
}
|
|
175
|
+
},
|
|
176
|
+
}, z)
|
|
130
177
|
|
|
131
178
|
export default TYPERT_REMOTE
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qilin-agent/commands",
|
|
3
3
|
"description": "Plugin-owned human command registry for QiLin UIs",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.7",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -51,27 +51,27 @@
|
|
|
51
51
|
],
|
|
52
52
|
"license": "MIT",
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@qilin-agent/attachment": "3.1.
|
|
55
|
-
"@qilin-agent/
|
|
56
|
-
"@qilin-agent/brand": "3.1.
|
|
57
|
-
"@qilin-agent/
|
|
58
|
-
"@qilin-agent/scope": "3.1.
|
|
59
|
-
"@qilin-agent/typert-protocol": "3.1.
|
|
60
|
-
"@qilin-agent/
|
|
61
|
-
"@qilin-agent/kylin": "~4.0.
|
|
54
|
+
"@qilin-agent/attachment": "3.1.7",
|
|
55
|
+
"@qilin-agent/agent": "3.1.7",
|
|
56
|
+
"@qilin-agent/brand": "3.1.7",
|
|
57
|
+
"@qilin-agent/session": "3.1.7",
|
|
58
|
+
"@qilin-agent/scope": "3.1.7",
|
|
59
|
+
"@qilin-agent/typert-protocol": "3.1.7",
|
|
60
|
+
"@qilin-agent/llm": "3.1.7",
|
|
61
|
+
"@qilin-agent/kylin": "~4.0.5"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"zod": "^4.4.3",
|
|
65
|
-
"@qilin-agent/util-crypto": "3.1.
|
|
65
|
+
"@qilin-agent/util-crypto": "3.1.7"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@qilin-agent/agent": "3.1.
|
|
69
|
-
"@qilin-agent/brand": "3.1.
|
|
70
|
-
"@qilin-agent/
|
|
71
|
-
"@qilin-agent/
|
|
72
|
-
"@qilin-agent/
|
|
73
|
-
"@qilin-agent/
|
|
74
|
-
"@qilin-agent/
|
|
75
|
-
"@qilin-agent/
|
|
68
|
+
"@qilin-agent/agent": "3.1.7",
|
|
69
|
+
"@qilin-agent/brand": "3.1.7",
|
|
70
|
+
"@qilin-agent/llm": "3.1.7",
|
|
71
|
+
"@qilin-agent/attachment": "3.1.7",
|
|
72
|
+
"@qilin-agent/scope": "3.1.7",
|
|
73
|
+
"@qilin-agent/typert-protocol": "3.1.7",
|
|
74
|
+
"@qilin-agent/session": "3.1.7",
|
|
75
|
+
"@qilin-agent/kylin": "~4.0.5"
|
|
76
76
|
}
|
|
77
77
|
}
|