auto-model-router 0.4.8 → 0.4.10
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/.omp-plugin/marketplace.json +2 -2
- package/README.md +119 -19
- package/hermes-plugin/native/__pycache__/__init__.cpython-311.pyc +0 -0
- package/hermes-plugin/native/selftest.py +103 -0
- package/package.json +1 -1
- package/src/config/defaults.ts +5 -0
- package/src/cost/ledger.ts +6 -1
- package/src/cost/summary.ts +3 -1
- package/src/wire/openai/responses.ts +28 -1
- package/test/fixtures/harness/cline-cli.json +815 -0
- package/test/fixtures/harness/kilo.json +487 -0
- package/test/fixtures/harness/roo.json +456 -0
- package/test/harness-requests.test.ts +37 -0
- package/test/hermes-plugin.test.ts +32 -0
- package/test/summary.test.ts +1 -1
- package/test/tokens.test.ts +2 -0
- package/test/wire-responses.test.ts +15 -1
|
@@ -0,0 +1,815 @@
|
|
|
1
|
+
{
|
|
2
|
+
"harness": "cline-cli",
|
|
3
|
+
"capturedAtMs": 1788826902802,
|
|
4
|
+
"headers": {
|
|
5
|
+
"content-type": "application/json",
|
|
6
|
+
"user-agent": "ai-sdk/openai-compatible/3.0.37 ai-sdk/provider-utils/5.0.30 runtime/bun/1.3.13"
|
|
7
|
+
},
|
|
8
|
+
"body": {
|
|
9
|
+
"model": "auto",
|
|
10
|
+
"messages": [
|
|
11
|
+
{
|
|
12
|
+
"role": "system",
|
|
13
|
+
"content": "You are Cline, an AI coding agent. Your primary goal is to assist users with various coding tasks by leveraging your knowledge and the tools at your disposal. Given the user's prompt, you should use the tools available to you to answer user's question.\n\nAlways gather all the necessary context before starting to work on a task. For example, if you are generating a unit test or new code, make sure y\u00e2\u20ac\u00a6[4290 chars]"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"role": "user",
|
|
17
|
+
"content": "Reply with the single word ok"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"tools": [
|
|
21
|
+
{
|
|
22
|
+
"type": "function",
|
|
23
|
+
"function": {
|
|
24
|
+
"name": "read_files",
|
|
25
|
+
"description": "Read the content of text or image files at the provided absolute paths, or return only an inclusive one-based line range when start_line/end_line are provided on the same file entry as its path. When you already know multiple files you need, read them together in one call, and call this tool in the same response as other independent tool calls. Each read returns at most 2000 lines / ~47k character\u00e2\u20ac\u00a6[634 chars]",
|
|
26
|
+
"parameters": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"properties": {
|
|
29
|
+
"files": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"properties": {
|
|
34
|
+
"path": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "The absolute path of a text file to read content from"
|
|
37
|
+
},
|
|
38
|
+
"start_line": {
|
|
39
|
+
"description": "Optional one-based starting line number to read from; use null or omit for the start of the file",
|
|
40
|
+
"anyOf": [
|
|
41
|
+
{
|
|
42
|
+
"type": "integer",
|
|
43
|
+
"exclusiveMinimum": 0,
|
|
44
|
+
"maximum": 9007199254740991
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "null"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"end_line": {
|
|
52
|
+
"description": "Optional one-based ending line number to read through; use null or omit to read to the end of the file or the read cap, whichever comes first",
|
|
53
|
+
"anyOf": [
|
|
54
|
+
{
|
|
55
|
+
"type": "integer",
|
|
56
|
+
"exclusiveMinimum": 0,
|
|
57
|
+
"maximum": 9007199254740991
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"type": "null"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"required": [
|
|
66
|
+
"path"
|
|
67
|
+
],
|
|
68
|
+
"additionalProperties": false,
|
|
69
|
+
"description": "A file read request with optional inclusive one-based line bounds. Always include path; start_line/end_line must be on the same object as the path they apply to, never in a separate array element"
|
|
70
|
+
},
|
|
71
|
+
"description": "Array of file read requests; each element is one file and must include path. Omit start_line/end_line or set them to null to read from the start; provide integers on the same object as the path to return only that inclusive one-based line range \u00e2\u20ac\u201d never emit a range as its own array element. Reads are capped, so page through long files with start_line/end_line. Prefer this tool over running termina\u00e2\u20ac\u00a6[469 chars]"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"required": [
|
|
75
|
+
"files"
|
|
76
|
+
],
|
|
77
|
+
"additionalProperties": false
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"type": "function",
|
|
83
|
+
"function": {
|
|
84
|
+
"name": "search_codebase",
|
|
85
|
+
"description": "Perform regex pattern searches across the codebase. Supports multiple parallel searches. When several search patterns could be useful and do not depend on each other, run them together in one call, and call this tool in the same response as other independent tool calls. Use for finding code patterns, function definitions, class names, imports, etc. Output beyond ~48k characters per query is middle\u00e2\u20ac\u00a6[444 chars]",
|
|
86
|
+
"parameters": {
|
|
87
|
+
"type": "object",
|
|
88
|
+
"properties": {
|
|
89
|
+
"queries": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": {
|
|
92
|
+
"type": "string"
|
|
93
|
+
},
|
|
94
|
+
"description": "Array of regex search queries to execute"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"required": [
|
|
98
|
+
"queries"
|
|
99
|
+
],
|
|
100
|
+
"additionalProperties": false
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"type": "function",
|
|
106
|
+
"function": {
|
|
107
|
+
"name": "run_commands",
|
|
108
|
+
"description": "Run non-interactive shell commands from the root of the workspace in Windows environment. Use for listing files, checking git status, running builds, executing tests, etc. Commands must be non-interactive. Commands that require follow-up input like pagers should be skipped or used with supported flags/env (e.g. git --no-pager, --non-interactive) to bypass the interaction steps. Output beyond ~48k \u00e2\u20ac\u00a6[810 chars]",
|
|
109
|
+
"parameters": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"properties": {
|
|
112
|
+
"commands": {
|
|
113
|
+
"type": "array",
|
|
114
|
+
"items": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"description": "The non-interactive shell command to execute - MUST keep input short and concise (within 12000 characters) to avoid timeouts."
|
|
117
|
+
},
|
|
118
|
+
"description": "Array of complete shell command strings to execute."
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"required": [
|
|
122
|
+
"commands"
|
|
123
|
+
],
|
|
124
|
+
"additionalProperties": false
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"type": "function",
|
|
130
|
+
"function": {
|
|
131
|
+
"name": "fetch_web_content",
|
|
132
|
+
"description": "Fetch content from URLs and analyze them using the provided prompts. Use for retrieving documentation, API references, or any web content. Each request includes a URL and a prompt describing what information to extract. Fetch independent URLs together in one call, and call this tool in the same response as other independent tool calls.",
|
|
133
|
+
"parameters": {
|
|
134
|
+
"type": "object",
|
|
135
|
+
"properties": {
|
|
136
|
+
"requests": {
|
|
137
|
+
"type": "array",
|
|
138
|
+
"items": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"properties": {
|
|
141
|
+
"url": {
|
|
142
|
+
"type": "string",
|
|
143
|
+
"description": "The URL to fetch"
|
|
144
|
+
},
|
|
145
|
+
"prompt": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"minLength": 2,
|
|
148
|
+
"description": "Analysis prompt for the fetched content"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"required": [
|
|
152
|
+
"url",
|
|
153
|
+
"prompt"
|
|
154
|
+
],
|
|
155
|
+
"additionalProperties": false
|
|
156
|
+
},
|
|
157
|
+
"description": "Array of the URLs for the web fetch requests"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"required": [
|
|
161
|
+
"requests"
|
|
162
|
+
],
|
|
163
|
+
"additionalProperties": false
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"type": "function",
|
|
169
|
+
"function": {
|
|
170
|
+
"name": "editor",
|
|
171
|
+
"description": "An editor for controlled filesystem edits on the text file at the provided path. Provide `insert_line` to insert `new_text` at a specific line number. Otherwise, the tool replaces `old_text` with `new_text`, or creates the file with `new_text` if file does not exist. Use this tool for making small, precise edits to existing files or creating new files over shell commands. If several edits to diffe\u00e2\u20ac\u00a6[551 chars]",
|
|
172
|
+
"parameters": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"properties": {
|
|
175
|
+
"path": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"minLength": 1,
|
|
178
|
+
"description": "The absolute path for the action to be performed on"
|
|
179
|
+
},
|
|
180
|
+
"old_text": {
|
|
181
|
+
"description": "Exact text to replace (must match exactly once). Omit this when creating a missing file or inserting via insert_line. Keep this at or below 6000 characters when possible; larger payloads should be split across multiple tool calls to avoid timeouts.",
|
|
182
|
+
"anyOf": [
|
|
183
|
+
{
|
|
184
|
+
"type": "string"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"type": "null"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
"new_text": {
|
|
192
|
+
"type": "string",
|
|
193
|
+
"description": "The new content to write when creating a missing file, the replacement text for edits, or the inserted text when insert_line is provided. Keep this at or below 6000 characters when possible; for large edits, use multiple calls with small chunks of old_text and new_text to iteratively edit the file."
|
|
194
|
+
},
|
|
195
|
+
"insert_line": {
|
|
196
|
+
"description": "Optional positive one-based boundary line. When provided, the tool inserts new_text before that line instead of performing a replacement edit; use line_count + 1 to append at EOF.",
|
|
197
|
+
"anyOf": [
|
|
198
|
+
{
|
|
199
|
+
"type": "integer",
|
|
200
|
+
"minimum": -9007199254740991,
|
|
201
|
+
"maximum": 9007199254740991
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"type": "null"
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"required": [
|
|
210
|
+
"path",
|
|
211
|
+
"new_text"
|
|
212
|
+
],
|
|
213
|
+
"additionalProperties": false,
|
|
214
|
+
"description": "Edit a text file by replacing old_text with new_text, create the file with new_text if it does not exist, or insert new_text at insert_line when insert_line is provided. Prefer using this tool for file edits over shell commands. IMPORTANT: large edits can time out, so use small chunks and multiple calls when possible."
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"type": "function",
|
|
220
|
+
"function": {
|
|
221
|
+
"name": "ask_question",
|
|
222
|
+
"description": "Ask user a question for clarifying or gathering information needed to complete the task. For example, ask the user clarifying questions about a key implementation decision. You should only ask one question. Provide an array of 2-5 options for the user to choose from. Never include an option to toggle to Act mode.",
|
|
223
|
+
"parameters": {
|
|
224
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
225
|
+
"type": "object",
|
|
226
|
+
"properties": {
|
|
227
|
+
"question": {
|
|
228
|
+
"type": "string",
|
|
229
|
+
"minLength": 1,
|
|
230
|
+
"description": "The single question to ask the user. E.g. \"How can I help you?\""
|
|
231
|
+
},
|
|
232
|
+
"options": {
|
|
233
|
+
"minItems": 2,
|
|
234
|
+
"maxItems": 5,
|
|
235
|
+
"type": "array",
|
|
236
|
+
"items": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"minLength": 1
|
|
239
|
+
},
|
|
240
|
+
"description": "Array of 2-5 user-selectable answer options for the single question"
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"required": [
|
|
244
|
+
"question",
|
|
245
|
+
"options"
|
|
246
|
+
],
|
|
247
|
+
"additionalProperties": false
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"type": "function",
|
|
253
|
+
"function": {
|
|
254
|
+
"name": "spawn_agent",
|
|
255
|
+
"description": "Spawn a sub-agent with a custom system prompt for specialized tasks. Use when delegating work that benefits from focused expertise.",
|
|
256
|
+
"parameters": {
|
|
257
|
+
"type": "object",
|
|
258
|
+
"properties": {
|
|
259
|
+
"systemPrompt": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"description": "System prompt defining the sub-agent's behavior"
|
|
262
|
+
},
|
|
263
|
+
"task": {
|
|
264
|
+
"type": "string",
|
|
265
|
+
"description": "Task for the sub-agent to complete"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"required": [
|
|
269
|
+
"systemPrompt",
|
|
270
|
+
"task"
|
|
271
|
+
],
|
|
272
|
+
"additionalProperties": false
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"type": "function",
|
|
278
|
+
"function": {
|
|
279
|
+
"name": "team_spawn_teammate",
|
|
280
|
+
"description": "Spawn a teammate with a required agentId and rolePrompt.",
|
|
281
|
+
"parameters": {
|
|
282
|
+
"type": "object",
|
|
283
|
+
"properties": {
|
|
284
|
+
"agentId": {
|
|
285
|
+
"type": "string",
|
|
286
|
+
"minLength": 1,
|
|
287
|
+
"description": "Teammate identifier"
|
|
288
|
+
},
|
|
289
|
+
"rolePrompt": {
|
|
290
|
+
"type": "string",
|
|
291
|
+
"minLength": 1,
|
|
292
|
+
"description": "System prompt describing teammate role"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"required": [
|
|
296
|
+
"agentId",
|
|
297
|
+
"rolePrompt"
|
|
298
|
+
],
|
|
299
|
+
"additionalProperties": false
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"type": "function",
|
|
305
|
+
"function": {
|
|
306
|
+
"name": "team_shutdown_teammate",
|
|
307
|
+
"description": "Shutdown a teammate by agentId.",
|
|
308
|
+
"parameters": {
|
|
309
|
+
"type": "object",
|
|
310
|
+
"properties": {
|
|
311
|
+
"agentId": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"minLength": 1,
|
|
314
|
+
"description": "Teammate identifier"
|
|
315
|
+
},
|
|
316
|
+
"reason": {
|
|
317
|
+
"description": "Optional shutdown reason",
|
|
318
|
+
"type": "string",
|
|
319
|
+
"minLength": 1
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
"required": [
|
|
323
|
+
"agentId"
|
|
324
|
+
],
|
|
325
|
+
"additionalProperties": false
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"type": "function",
|
|
331
|
+
"function": {
|
|
332
|
+
"name": "team_status",
|
|
333
|
+
"description": "Return a snapshot of team members, task counts, mailbox, and mission log stats.",
|
|
334
|
+
"parameters": {
|
|
335
|
+
"type": "object",
|
|
336
|
+
"properties": {},
|
|
337
|
+
"additionalProperties": false
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"type": "function",
|
|
343
|
+
"function": {
|
|
344
|
+
"name": "team_task",
|
|
345
|
+
"description": "Manage shared team tasks with action-specific payloads. create requires title and description, with optional dependsOn and assignee. list accepts optional status, assignee. claim requires taskId. complete requires taskId and summary. block requires taskId and reason. Do not include fields from other actions.",
|
|
346
|
+
"parameters": {
|
|
347
|
+
"type": "object",
|
|
348
|
+
"properties": {
|
|
349
|
+
"action": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"enum": [
|
|
352
|
+
"create",
|
|
353
|
+
"list",
|
|
354
|
+
"claim",
|
|
355
|
+
"complete",
|
|
356
|
+
"block"
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
"title": {
|
|
360
|
+
"description": "Task title",
|
|
361
|
+
"type": "string",
|
|
362
|
+
"minLength": 1
|
|
363
|
+
},
|
|
364
|
+
"description": {
|
|
365
|
+
"description": "Task details",
|
|
366
|
+
"type": "string",
|
|
367
|
+
"minLength": 1
|
|
368
|
+
},
|
|
369
|
+
"dependsOn": {
|
|
370
|
+
"description": "Array of dependency task IDs",
|
|
371
|
+
"type": "array",
|
|
372
|
+
"items": {
|
|
373
|
+
"type": "string",
|
|
374
|
+
"description": "Dependency task ID"
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
"assignee": {
|
|
378
|
+
"description": "Optional assignee",
|
|
379
|
+
"type": "string",
|
|
380
|
+
"minLength": 1
|
|
381
|
+
},
|
|
382
|
+
"status": {
|
|
383
|
+
"description": "Optional task status filter",
|
|
384
|
+
"type": "string",
|
|
385
|
+
"enum": [
|
|
386
|
+
"pending",
|
|
387
|
+
"in_progress",
|
|
388
|
+
"blocked",
|
|
389
|
+
"completed"
|
|
390
|
+
]
|
|
391
|
+
},
|
|
392
|
+
"taskId": {
|
|
393
|
+
"description": "Task ID",
|
|
394
|
+
"type": "string"
|
|
395
|
+
},
|
|
396
|
+
"summary": {
|
|
397
|
+
"description": "Completion summary",
|
|
398
|
+
"type": "string",
|
|
399
|
+
"minLength": 1
|
|
400
|
+
},
|
|
401
|
+
"reason": {
|
|
402
|
+
"description": "Blocking reason",
|
|
403
|
+
"type": "string",
|
|
404
|
+
"minLength": 1
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
"required": [
|
|
408
|
+
"action"
|
|
409
|
+
],
|
|
410
|
+
"additionalProperties": false
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"type": "function",
|
|
416
|
+
"function": {
|
|
417
|
+
"name": "team_run_task",
|
|
418
|
+
"description": "Route a delegated task to a teammate. Choose sync (wait) or async (run in background).",
|
|
419
|
+
"parameters": {
|
|
420
|
+
"type": "object",
|
|
421
|
+
"properties": {
|
|
422
|
+
"agentId": {
|
|
423
|
+
"type": "string",
|
|
424
|
+
"description": "Teammate agent ID"
|
|
425
|
+
},
|
|
426
|
+
"task": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"minLength": 1,
|
|
429
|
+
"description": "Task instructions for the teammate"
|
|
430
|
+
},
|
|
431
|
+
"taskId": {
|
|
432
|
+
"description": "Optional shared task list ID",
|
|
433
|
+
"type": "string"
|
|
434
|
+
},
|
|
435
|
+
"runMode": {
|
|
436
|
+
"description": "Execution mode: 'sync' blocks until the teammate finishes and returns the result (default if omitted); 'async' queues the run and returns a runId immediately \u00e2\u20ac\u201d use team_await_runs to collect results later.",
|
|
437
|
+
"type": "string",
|
|
438
|
+
"enum": [
|
|
439
|
+
"sync",
|
|
440
|
+
"async"
|
|
441
|
+
]
|
|
442
|
+
},
|
|
443
|
+
"continueConversation": {
|
|
444
|
+
"description": "If true, continue the teammate conversation; otherwise start fresh",
|
|
445
|
+
"type": "boolean"
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
"required": [
|
|
449
|
+
"agentId",
|
|
450
|
+
"task"
|
|
451
|
+
],
|
|
452
|
+
"additionalProperties": false
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"type": "function",
|
|
458
|
+
"function": {
|
|
459
|
+
"name": "team_cancel_run",
|
|
460
|
+
"description": "Cancel one async teammate run.",
|
|
461
|
+
"parameters": {
|
|
462
|
+
"type": "object",
|
|
463
|
+
"properties": {
|
|
464
|
+
"runId": {
|
|
465
|
+
"type": "string",
|
|
466
|
+
"minLength": 1,
|
|
467
|
+
"description": "Run ID"
|
|
468
|
+
},
|
|
469
|
+
"reason": {
|
|
470
|
+
"description": "Optional cancellation reason",
|
|
471
|
+
"type": "string",
|
|
472
|
+
"minLength": 1
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
"required": [
|
|
476
|
+
"runId"
|
|
477
|
+
],
|
|
478
|
+
"additionalProperties": false
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"type": "function",
|
|
484
|
+
"function": {
|
|
485
|
+
"name": "team_list_runs",
|
|
486
|
+
"description": "List teammate runs started with team_run_task in async mode, including live activity/progress fields when available.",
|
|
487
|
+
"parameters": {
|
|
488
|
+
"type": "object",
|
|
489
|
+
"properties": {
|
|
490
|
+
"status": {
|
|
491
|
+
"description": "Optional run status filter. Omit to include all statuses.",
|
|
492
|
+
"type": "string",
|
|
493
|
+
"enum": [
|
|
494
|
+
"queued",
|
|
495
|
+
"running",
|
|
496
|
+
"completed",
|
|
497
|
+
"failed",
|
|
498
|
+
"cancelled",
|
|
499
|
+
"interrupted"
|
|
500
|
+
]
|
|
501
|
+
},
|
|
502
|
+
"agentId": {
|
|
503
|
+
"description": "Optional teammate ID filter. Omit to include all teammates.",
|
|
504
|
+
"type": "string",
|
|
505
|
+
"minLength": 1
|
|
506
|
+
},
|
|
507
|
+
"includeCompleted": {
|
|
508
|
+
"description": "Include completed/failed runs (default true)",
|
|
509
|
+
"type": "boolean"
|
|
510
|
+
}
|
|
511
|
+
},
|
|
512
|
+
"additionalProperties": false
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"type": "function",
|
|
518
|
+
"function": {
|
|
519
|
+
"name": "team_await_runs",
|
|
520
|
+
"description": "Wait for async teammate runs. Provide runId to wait for one run, or omit it to wait for all active async runs. Uses a long timeout for legitimate teammate work.",
|
|
521
|
+
"parameters": {
|
|
522
|
+
"type": "object",
|
|
523
|
+
"properties": {
|
|
524
|
+
"runId": {
|
|
525
|
+
"description": "Optional async run ID to await. Omit to wait for all active async runs.",
|
|
526
|
+
"type": "string",
|
|
527
|
+
"minLength": 1
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
"additionalProperties": false
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"type": "function",
|
|
536
|
+
"function": {
|
|
537
|
+
"name": "team_send_message",
|
|
538
|
+
"description": "Send a mailbox message to a specific teammate.",
|
|
539
|
+
"parameters": {
|
|
540
|
+
"type": "object",
|
|
541
|
+
"properties": {
|
|
542
|
+
"toAgentId": {
|
|
543
|
+
"type": "string",
|
|
544
|
+
"minLength": 1,
|
|
545
|
+
"description": "Recipient agent ID"
|
|
546
|
+
},
|
|
547
|
+
"subject": {
|
|
548
|
+
"type": "string",
|
|
549
|
+
"minLength": 1,
|
|
550
|
+
"description": "Message subject"
|
|
551
|
+
},
|
|
552
|
+
"body": {
|
|
553
|
+
"type": "string",
|
|
554
|
+
"minLength": 1,
|
|
555
|
+
"description": "Message body"
|
|
556
|
+
},
|
|
557
|
+
"taskId": {
|
|
558
|
+
"description": "Optional task ID context",
|
|
559
|
+
"type": "string",
|
|
560
|
+
"minLength": 1
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
"required": [
|
|
564
|
+
"toAgentId",
|
|
565
|
+
"subject",
|
|
566
|
+
"body"
|
|
567
|
+
],
|
|
568
|
+
"additionalProperties": false
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"type": "function",
|
|
574
|
+
"function": {
|
|
575
|
+
"name": "team_broadcast",
|
|
576
|
+
"description": "Broadcast a message to all teammates.",
|
|
577
|
+
"parameters": {
|
|
578
|
+
"type": "object",
|
|
579
|
+
"properties": {
|
|
580
|
+
"subject": {
|
|
581
|
+
"type": "string",
|
|
582
|
+
"minLength": 1,
|
|
583
|
+
"description": "Message subject"
|
|
584
|
+
},
|
|
585
|
+
"body": {
|
|
586
|
+
"type": "string",
|
|
587
|
+
"minLength": 1,
|
|
588
|
+
"description": "Message body"
|
|
589
|
+
},
|
|
590
|
+
"taskId": {
|
|
591
|
+
"description": "Optional task ID context",
|
|
592
|
+
"type": "string",
|
|
593
|
+
"minLength": 1
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
"required": [
|
|
597
|
+
"subject",
|
|
598
|
+
"body"
|
|
599
|
+
],
|
|
600
|
+
"additionalProperties": false
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"type": "function",
|
|
606
|
+
"function": {
|
|
607
|
+
"name": "team_read_mailbox",
|
|
608
|
+
"description": "Read the current agent mailbox.",
|
|
609
|
+
"parameters": {
|
|
610
|
+
"type": "object",
|
|
611
|
+
"properties": {
|
|
612
|
+
"unreadOnly": {
|
|
613
|
+
"description": "Only unread messages for read action (default true)",
|
|
614
|
+
"type": "boolean"
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
"additionalProperties": false
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"type": "function",
|
|
623
|
+
"function": {
|
|
624
|
+
"name": "team_mission_log",
|
|
625
|
+
"description": "Append a mission log update for your team.",
|
|
626
|
+
"parameters": {
|
|
627
|
+
"type": "object",
|
|
628
|
+
"properties": {
|
|
629
|
+
"kind": {
|
|
630
|
+
"type": "string",
|
|
631
|
+
"enum": [
|
|
632
|
+
"progress",
|
|
633
|
+
"handoff",
|
|
634
|
+
"blocked",
|
|
635
|
+
"decision",
|
|
636
|
+
"done",
|
|
637
|
+
"error"
|
|
638
|
+
]
|
|
639
|
+
},
|
|
640
|
+
"summary": {
|
|
641
|
+
"type": "string",
|
|
642
|
+
"minLength": 1,
|
|
643
|
+
"description": "Update summary"
|
|
644
|
+
},
|
|
645
|
+
"taskId": {
|
|
646
|
+
"description": "Optional task ID context",
|
|
647
|
+
"type": "string",
|
|
648
|
+
"minLength": 1
|
|
649
|
+
},
|
|
650
|
+
"evidence": {
|
|
651
|
+
"description": "Optional evidence links/snippets",
|
|
652
|
+
"type": "array",
|
|
653
|
+
"items": {
|
|
654
|
+
"type": "string",
|
|
655
|
+
"minLength": 1
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
"nextAction": {
|
|
659
|
+
"description": "Planned next step",
|
|
660
|
+
"type": "string",
|
|
661
|
+
"minLength": 1
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
"required": [
|
|
665
|
+
"kind",
|
|
666
|
+
"summary"
|
|
667
|
+
],
|
|
668
|
+
"additionalProperties": false
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"type": "function",
|
|
674
|
+
"function": {
|
|
675
|
+
"name": "team_cleanup",
|
|
676
|
+
"description": "Clean up the team runtime. Fails if teammates are still running.",
|
|
677
|
+
"parameters": {
|
|
678
|
+
"type": "object",
|
|
679
|
+
"properties": {},
|
|
680
|
+
"additionalProperties": false
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
"type": "function",
|
|
686
|
+
"function": {
|
|
687
|
+
"name": "team_create_outcome",
|
|
688
|
+
"description": "Create a converged team outcome.",
|
|
689
|
+
"parameters": {
|
|
690
|
+
"type": "object",
|
|
691
|
+
"properties": {
|
|
692
|
+
"title": {
|
|
693
|
+
"type": "string",
|
|
694
|
+
"description": "Outcome title"
|
|
695
|
+
},
|
|
696
|
+
"requiredSections": {
|
|
697
|
+
"default": [
|
|
698
|
+
"current_state",
|
|
699
|
+
"boundary_analysis",
|
|
700
|
+
"interface_proposal"
|
|
701
|
+
],
|
|
702
|
+
"description": "Required sections for finalization gate (defaults to current_state,boundary_analysis,interface_proposal)",
|
|
703
|
+
"type": "array",
|
|
704
|
+
"items": {
|
|
705
|
+
"type": "string"
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
},
|
|
709
|
+
"required": [
|
|
710
|
+
"title",
|
|
711
|
+
"requiredSections"
|
|
712
|
+
],
|
|
713
|
+
"additionalProperties": false
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"type": "function",
|
|
719
|
+
"function": {
|
|
720
|
+
"name": "team_attach_outcome_fragment",
|
|
721
|
+
"description": "Attach a fragment to an outcome section.",
|
|
722
|
+
"parameters": {
|
|
723
|
+
"type": "object",
|
|
724
|
+
"properties": {
|
|
725
|
+
"outcomeId": {
|
|
726
|
+
"type": "string",
|
|
727
|
+
"description": "Outcome ID"
|
|
728
|
+
},
|
|
729
|
+
"section": {
|
|
730
|
+
"type": "string",
|
|
731
|
+
"description": "Section name"
|
|
732
|
+
},
|
|
733
|
+
"sourceRunId": {
|
|
734
|
+
"description": "Optional source run ID",
|
|
735
|
+
"type": "string"
|
|
736
|
+
},
|
|
737
|
+
"content": {
|
|
738
|
+
"type": "string",
|
|
739
|
+
"description": "Section fragment content"
|
|
740
|
+
}
|
|
741
|
+
},
|
|
742
|
+
"required": [
|
|
743
|
+
"outcomeId",
|
|
744
|
+
"section",
|
|
745
|
+
"content"
|
|
746
|
+
],
|
|
747
|
+
"additionalProperties": false
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
"type": "function",
|
|
753
|
+
"function": {
|
|
754
|
+
"name": "team_review_outcome_fragment",
|
|
755
|
+
"description": "Review one outcome fragment.",
|
|
756
|
+
"parameters": {
|
|
757
|
+
"type": "object",
|
|
758
|
+
"properties": {
|
|
759
|
+
"fragmentId": {
|
|
760
|
+
"type": "string",
|
|
761
|
+
"description": "Fragment ID"
|
|
762
|
+
},
|
|
763
|
+
"approved": {
|
|
764
|
+
"type": "boolean",
|
|
765
|
+
"description": "Review decision"
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
"required": [
|
|
769
|
+
"fragmentId",
|
|
770
|
+
"approved"
|
|
771
|
+
],
|
|
772
|
+
"additionalProperties": false
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
"type": "function",
|
|
778
|
+
"function": {
|
|
779
|
+
"name": "team_finalize_outcome",
|
|
780
|
+
"description": "Finalize one outcome.",
|
|
781
|
+
"parameters": {
|
|
782
|
+
"type": "object",
|
|
783
|
+
"properties": {
|
|
784
|
+
"outcomeId": {
|
|
785
|
+
"type": "string",
|
|
786
|
+
"description": "Outcome ID"
|
|
787
|
+
}
|
|
788
|
+
},
|
|
789
|
+
"required": [
|
|
790
|
+
"outcomeId"
|
|
791
|
+
],
|
|
792
|
+
"additionalProperties": false
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"type": "function",
|
|
798
|
+
"function": {
|
|
799
|
+
"name": "team_list_outcomes",
|
|
800
|
+
"description": "List team outcomes.",
|
|
801
|
+
"parameters": {
|
|
802
|
+
"type": "object",
|
|
803
|
+
"properties": {},
|
|
804
|
+
"additionalProperties": false
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
],
|
|
809
|
+
"tool_choice": "auto",
|
|
810
|
+
"stream": true,
|
|
811
|
+
"stream_options": {
|
|
812
|
+
"include_usage": true
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
}
|