@wiro-ai/wiro-mcp 1.1.4 → 1.2.0
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.md +87 -5
- package/dist/client.d.ts +46 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +239 -22
- package/dist/client.js.map +1 -1
- package/dist/tools/cancel-task.d.ts.map +1 -1
- package/dist/tools/cancel-task.js +34 -4
- package/dist/tools/cancel-task.js.map +1 -1
- package/dist/tools/explore.d.ts.map +1 -1
- package/dist/tools/explore.js +17 -1
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/get-model-schema.d.ts.map +1 -1
- package/dist/tools/get-model-schema.js +18 -2
- package/dist/tools/get-model-schema.js.map +1 -1
- package/dist/tools/get-task-price.d.ts.map +1 -1
- package/dist/tools/get-task-price.js +38 -5
- package/dist/tools/get-task-price.js.map +1 -1
- package/dist/tools/get-task.d.ts +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +77 -7
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kill-task.d.ts.map +1 -1
- package/dist/tools/kill-task.js +34 -4
- package/dist/tools/kill-task.js.map +1 -1
- package/dist/tools/list-tasks.d.ts +4 -0
- package/dist/tools/list-tasks.d.ts.map +1 -0
- package/dist/tools/list-tasks.js +89 -0
- package/dist/tools/list-tasks.js.map +1 -0
- package/dist/tools/recommend-model.d.ts.map +1 -1
- package/dist/tools/recommend-model.js +51 -4
- package/dist/tools/recommend-model.js.map +1 -1
- package/dist/tools/run-model.d.ts +1 -1
- package/dist/tools/run-model.d.ts.map +1 -1
- package/dist/tools/run-model.js +115 -19
- package/dist/tools/run-model.js.map +1 -1
- package/dist/tools/schemas.d.ts +683 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +134 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search-docs.d.ts.map +1 -1
- package/dist/tools/search-docs.js +30 -4
- package/dist/tools/search-docs.js.map +1 -1
- package/dist/tools/search-models.d.ts.map +1 -1
- package/dist/tools/search-models.js +65 -15
- package/dist/tools/search-models.js.map +1 -1
- package/dist/tools/upload-file.d.ts.map +1 -1
- package/dist/tools/upload-file.js +42 -4
- package/dist/tools/upload-file.js.map +1 -1
- package/dist/tools/wait-for-task.d.ts +4 -0
- package/dist/tools/wait-for-task.d.ts.map +1 -0
- package/dist/tools/wait-for-task.js +121 -0
- package/dist/tools/wait-for-task.js.map +1 -0
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/format.d.ts +10 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +93 -4
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/structured.d.ts +113 -0
- package/dist/utils/structured.d.ts.map +1 -0
- package/dist/utils/structured.js +227 -0
- package/dist/utils/structured.js.map +1 -0
- package/package.json +13 -6
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { taskActionOutputSchema } from './schemas.js';
|
|
2
3
|
export function registerCancelTask(server, client) {
|
|
3
|
-
server.
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
server.registerTool('cancel_task', {
|
|
5
|
+
title: 'Cancel a queued Wiro task',
|
|
6
|
+
description: 'Cancel a task that is still queued, before worker '
|
|
7
|
+
+ 'assignment. This changes remote state. Use `kill_task` for a task '
|
|
8
|
+
+ 'that has already started.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
tasktoken: z.string().optional().describe('The task token returned from run_model.'),
|
|
11
|
+
taskid: z.string().optional().describe('The task ID (alternative to tasktoken).'),
|
|
12
|
+
},
|
|
13
|
+
outputSchema: taskActionOutputSchema,
|
|
14
|
+
annotations: {
|
|
15
|
+
readOnlyHint: false,
|
|
16
|
+
destructiveHint: true,
|
|
17
|
+
idempotentHint: true,
|
|
18
|
+
openWorldHint: true,
|
|
19
|
+
},
|
|
20
|
+
}, async ({ tasktoken, taskid }, extra) => {
|
|
6
21
|
try {
|
|
7
|
-
|
|
22
|
+
if (!tasktoken && !taskid) {
|
|
23
|
+
return {
|
|
24
|
+
content: [{ type: 'text', text: '## Error\n\nEither `tasktoken` or `taskid` is required.' }],
|
|
25
|
+
isError: true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const result = await client.cancelTask({ tasktoken, taskid }, extra.signal);
|
|
8
29
|
if (result.result === false) {
|
|
9
30
|
const msg = result.errors?.map(e => e.message).join(', ') || 'Cancel failed';
|
|
10
31
|
return {
|
|
@@ -14,6 +35,15 @@ export function registerCancelTask(server, client) {
|
|
|
14
35
|
}
|
|
15
36
|
return {
|
|
16
37
|
content: [{ type: 'text', text: `Task cancelled successfully.` }],
|
|
38
|
+
structuredContent: {
|
|
39
|
+
action: 'cancel',
|
|
40
|
+
success: true,
|
|
41
|
+
task: {
|
|
42
|
+
...(taskid ? { id: taskid } : {}),
|
|
43
|
+
...(tasktoken ? { token: tasktoken } : {}),
|
|
44
|
+
},
|
|
45
|
+
message: 'Task cancelled successfully.',
|
|
46
|
+
},
|
|
17
47
|
};
|
|
18
48
|
}
|
|
19
49
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-task.js","sourceRoot":"","sources":["../../src/tools/cancel-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cancel-task.js","sourceRoot":"","sources":["../../src/tools/cancel-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAkB;IACtE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,oDAAoD;cAC7D,oEAAoE;cACpE,2BAA2B;QAC/B,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACpF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAClF;QACD,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAC;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CACpC,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,MAAM,CACb,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAI,MAAM,CAAC,MAAqC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;gBAC7G,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,GAAG,EAAE,EAAE,CAAC;oBAChE,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;gBAC1E,iBAAiB,EAAE;oBACjB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC3C;oBACD,OAAO,EAAE,8BAA8B;iBACxC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAyC3E"}
|
package/dist/tools/explore.js
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
|
+
import { toStructuredExplore } from '../utils/structured.js';
|
|
2
|
+
import { exploreOutputSchema } from './schemas.js';
|
|
1
3
|
export function registerExplore(server, client) {
|
|
2
|
-
server.
|
|
4
|
+
server.registerTool('explore', {
|
|
5
|
+
title: 'Explore Wiro models',
|
|
6
|
+
description: 'Browse curated Wiro models grouped by category. Choose a '
|
|
7
|
+
+ 'model and call `get_model_schema` before `run_model`.',
|
|
8
|
+
inputSchema: {},
|
|
9
|
+
outputSchema: exploreOutputSchema,
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
destructiveHint: false,
|
|
13
|
+
idempotentHint: true,
|
|
14
|
+
openWorldHint: true,
|
|
15
|
+
},
|
|
16
|
+
}, async () => {
|
|
3
17
|
try {
|
|
4
18
|
const result = await client.explore();
|
|
5
19
|
if (!result.result || !result.explore?.length) {
|
|
6
20
|
return {
|
|
7
21
|
content: [{ type: 'text', text: 'No explore data available.' }],
|
|
22
|
+
structuredContent: { categories: [] },
|
|
8
23
|
};
|
|
9
24
|
}
|
|
10
25
|
const text = formatExplore(result.explore);
|
|
11
26
|
return {
|
|
12
27
|
content: [{ type: 'text', text }],
|
|
28
|
+
structuredContent: toStructuredExplore(result.explore),
|
|
13
29
|
};
|
|
14
30
|
}
|
|
15
31
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-model-schema.d.ts","sourceRoot":"","sources":["../../src/tools/get-model-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"get-model-schema.d.ts","sourceRoot":"","sources":["../../src/tools/get-model-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6ClF"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { formatModelSchema } from '../utils/format.js';
|
|
3
|
+
import { toStructuredModelDetail } from '../utils/structured.js';
|
|
4
|
+
import { modelDetailOutputSchema } from './schemas.js';
|
|
3
5
|
export function registerGetModelSchema(server, client) {
|
|
4
|
-
server.
|
|
5
|
-
|
|
6
|
+
server.registerTool('get_model_schema', {
|
|
7
|
+
title: 'Get a Wiro model schema',
|
|
8
|
+
description: 'Get one model’s typed parameters, options, defaults, required '
|
|
9
|
+
+ 'fields, and pricing. Fill its required parameters and follow the '
|
|
10
|
+
+ 'returned `run_model` next action exactly once.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
model: z.string().describe('Model slug in "owner/model" format, e.g. "openai/sora-2", "black-forest-labs/flux-2-pro".'),
|
|
13
|
+
},
|
|
14
|
+
outputSchema: modelDetailOutputSchema,
|
|
15
|
+
annotations: {
|
|
16
|
+
readOnlyHint: true,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: true,
|
|
19
|
+
openWorldHint: true,
|
|
20
|
+
},
|
|
6
21
|
}, async ({ model }) => {
|
|
7
22
|
try {
|
|
8
23
|
const result = await client.getModelSchema(model);
|
|
@@ -16,6 +31,7 @@ export function registerGetModelSchema(server, client) {
|
|
|
16
31
|
const text = formatModelSchema(modelData);
|
|
17
32
|
return {
|
|
18
33
|
content: [{ type: 'text', text }],
|
|
34
|
+
structuredContent: toStructuredModelDetail(modelData),
|
|
19
35
|
};
|
|
20
36
|
}
|
|
21
37
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-model-schema.js","sourceRoot":"","sources":["../../src/tools/get-model-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAkB;IAC1E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"get-model-schema.js","sourceRoot":"","sources":["../../src/tools/get-model-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAkB;IAC1E,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,gEAAgE;cACzE,mEAAmE;cACnE,gDAAgD;QACpD,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2FAA2F,CAAC;SACxH;QACD,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAElD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,KAAK,cAAc,EAAE,CAAC;oBACzE,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE1C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;gBAC1C,iBAAiB,EAAE,uBAAuB,CAAC,SAAS,CAAC;aACtD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-task-price.d.ts","sourceRoot":"","sources":["../../src/tools/get-task-price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"get-task-price.d.ts","sourceRoot":"","sources":["../../src/tools/get-task-price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAgGhF"}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { getTaskState, toStructuredTaskResult, } from '../utils/structured.js';
|
|
3
|
+
import { taskPriceOutputSchema } from './schemas.js';
|
|
2
4
|
export function registerGetTaskPrice(server, client) {
|
|
3
|
-
server.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
server.registerTool('get_task_price', {
|
|
6
|
+
title: 'Get a Wiro task price',
|
|
7
|
+
description: 'Get one task’s final charged cost. Successful tasks are '
|
|
8
|
+
+ 'billed; failed tasks are not. If the task is active, follow the '
|
|
9
|
+
+ 'returned `wait_for_task` next action.',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
tasktoken: z.string().optional().describe('The task token returned from run_model.'),
|
|
12
|
+
taskid: z.string().optional().describe('The task ID (alternative to tasktoken).'),
|
|
13
|
+
},
|
|
14
|
+
outputSchema: taskPriceOutputSchema,
|
|
15
|
+
annotations: {
|
|
16
|
+
readOnlyHint: true,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: true,
|
|
19
|
+
openWorldHint: true,
|
|
20
|
+
},
|
|
21
|
+
}, async ({ tasktoken, taskid }, extra) => {
|
|
7
22
|
try {
|
|
8
23
|
if (!tasktoken && !taskid) {
|
|
9
24
|
return {
|
|
@@ -11,7 +26,7 @@ export function registerGetTaskPrice(server, client) {
|
|
|
11
26
|
isError: true,
|
|
12
27
|
};
|
|
13
28
|
}
|
|
14
|
-
const detail = await client.getTask({ tasktoken, taskid });
|
|
29
|
+
const detail = await client.getTask({ tasktoken, taskid }, extra.signal);
|
|
15
30
|
const task = detail.tasklist?.[0];
|
|
16
31
|
if (!task) {
|
|
17
32
|
return {
|
|
@@ -45,8 +60,26 @@ export function registerGetTaskPrice(server, client) {
|
|
|
45
60
|
if (task.elapsedseconds) {
|
|
46
61
|
lines.push(`**Duration:** ${task.elapsedseconds}s`);
|
|
47
62
|
}
|
|
63
|
+
const state = getTaskState(task);
|
|
64
|
+
const structuredTask = toStructuredTaskResult(task, {
|
|
65
|
+
taskid,
|
|
66
|
+
tasktoken,
|
|
67
|
+
});
|
|
68
|
+
const successful = state === 'completed';
|
|
69
|
+
const terminal = successful || state === 'failed' || state === 'cancelled';
|
|
48
70
|
return {
|
|
49
71
|
content: [{ type: 'text', text: lines.join('\n') }],
|
|
72
|
+
structuredContent: {
|
|
73
|
+
state,
|
|
74
|
+
task: structuredTask.task,
|
|
75
|
+
billed: terminal ? successful : null,
|
|
76
|
+
costUsd: terminal
|
|
77
|
+
? (successful ? Number(task.totalcost || 0) : 0)
|
|
78
|
+
: null,
|
|
79
|
+
...(structuredTask.nextAction
|
|
80
|
+
? { nextAction: structuredTask.nextAction }
|
|
81
|
+
: {}),
|
|
82
|
+
},
|
|
50
83
|
};
|
|
51
84
|
}
|
|
52
85
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-task-price.js","sourceRoot":"","sources":["../../src/tools/get-task-price.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"get-task-price.js","sourceRoot":"","sources":["../../src/tools/get-task-price.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/get-task.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type WiroClient } from '../client.js';
|
|
3
3
|
export declare function registerGetTask(server: McpServer, client: WiroClient): void;
|
|
4
4
|
//# sourceMappingURL=get-task.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-task.d.ts","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"get-task.d.ts","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAYtB,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA2G3E"}
|
package/dist/tools/get-task.js
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { TaskWaitTimeoutError, } from '../client.js';
|
|
3
|
+
import { formatTaskPending, formatTaskResult, } from '../utils/format.js';
|
|
4
|
+
import { createTaskContent, toPendingTaskResult, toStructuredTaskResult, } from '../utils/structured.js';
|
|
5
|
+
import { taskResultOutputSchema } from './schemas.js';
|
|
3
6
|
export function registerGetTask(server, client) {
|
|
4
|
-
server.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
server.registerTool('get_task', {
|
|
8
|
+
title: 'Get a Wiro task',
|
|
9
|
+
description: 'Get the current status and output of one task. By default '
|
|
10
|
+
+ 'this is an immediate check. For an active task, follow the returned '
|
|
11
|
+
+ '`nextAction` instead of submitting another run.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
tasktoken: z.string().optional().describe('The task token returned from run_model.'),
|
|
14
|
+
taskid: z.string().optional().describe('The task ID (alternative to tasktoken).'),
|
|
15
|
+
wait_seconds: z.number().int().min(0).max(45).default(0)
|
|
16
|
+
.describe('Optional bounded wait before returning (0-45 seconds, default 0).'),
|
|
17
|
+
},
|
|
18
|
+
outputSchema: taskResultOutputSchema,
|
|
19
|
+
annotations: {
|
|
20
|
+
readOnlyHint: true,
|
|
21
|
+
destructiveHint: false,
|
|
22
|
+
idempotentHint: true,
|
|
23
|
+
openWorldHint: true,
|
|
24
|
+
},
|
|
25
|
+
}, async ({ tasktoken, taskid, wait_seconds }, extra) => {
|
|
8
26
|
try {
|
|
9
27
|
if (!tasktoken && !taskid) {
|
|
10
28
|
return {
|
|
@@ -12,7 +30,38 @@ export function registerGetTask(server, client) {
|
|
|
12
30
|
isError: true,
|
|
13
31
|
};
|
|
14
32
|
}
|
|
15
|
-
const
|
|
33
|
+
const reference = { tasktoken, taskid };
|
|
34
|
+
const detail = wait_seconds > 0
|
|
35
|
+
? await client.waitForTask(reference, wait_seconds * 1000, {
|
|
36
|
+
signal: extra.signal,
|
|
37
|
+
onPoll: async (task, context) => {
|
|
38
|
+
const progressToken = extra._meta?.progressToken;
|
|
39
|
+
if (progressToken === undefined)
|
|
40
|
+
return;
|
|
41
|
+
try {
|
|
42
|
+
await extra.sendNotification({
|
|
43
|
+
method: 'notifications/progress',
|
|
44
|
+
params: {
|
|
45
|
+
progressToken,
|
|
46
|
+
progress: context.elapsedMs / 1000,
|
|
47
|
+
message: `Task status: ${task.status}`,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Progress is best-effort and must never interrupt task polling.
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
})
|
|
56
|
+
: await client.getTask(reference, extra.signal);
|
|
57
|
+
if (!detail.result) {
|
|
58
|
+
const errors = detail.errors?.map(error => error.message).join(', ')
|
|
59
|
+
|| 'Task status request failed.';
|
|
60
|
+
return {
|
|
61
|
+
content: [{ type: 'text', text: `## Error\n\n${errors}` }],
|
|
62
|
+
isError: true,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
16
65
|
const task = detail.tasklist?.[0];
|
|
17
66
|
if (!task) {
|
|
18
67
|
return {
|
|
@@ -21,10 +70,31 @@ export function registerGetTask(server, client) {
|
|
|
21
70
|
};
|
|
22
71
|
}
|
|
23
72
|
return {
|
|
24
|
-
content:
|
|
73
|
+
content: createTaskContent(formatTaskResult(task), task),
|
|
74
|
+
structuredContent: toStructuredTaskResult(task, {
|
|
75
|
+
taskid,
|
|
76
|
+
tasktoken,
|
|
77
|
+
}),
|
|
25
78
|
};
|
|
26
79
|
}
|
|
27
80
|
catch (error) {
|
|
81
|
+
if (error instanceof TaskWaitTimeoutError) {
|
|
82
|
+
const lastTask = error.lastDetail?.tasklist?.[0];
|
|
83
|
+
return {
|
|
84
|
+
content: [{
|
|
85
|
+
type: 'text',
|
|
86
|
+
text: formatTaskPending({
|
|
87
|
+
taskid: taskid || lastTask?.id,
|
|
88
|
+
tasktoken: tasktoken || lastTask?.socketaccesstoken,
|
|
89
|
+
status: lastTask?.status,
|
|
90
|
+
timeoutSeconds: wait_seconds,
|
|
91
|
+
}),
|
|
92
|
+
}],
|
|
93
|
+
structuredContent: lastTask
|
|
94
|
+
? toStructuredTaskResult(lastTask, { taskid, tasktoken })
|
|
95
|
+
: toPendingTaskResult({ taskid, tasktoken }),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
28
98
|
return {
|
|
29
99
|
content: [{ type: 'text', text: `## Error\n\n${error instanceof Error ? error.message : String(error)}` }],
|
|
30
100
|
isError: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -3,7 +3,9 @@ import type { WiroClient } from '../client.js';
|
|
|
3
3
|
import { registerSearchModels } from './search-models.js';
|
|
4
4
|
import { registerGetModelSchema } from './get-model-schema.js';
|
|
5
5
|
import { registerRunModel } from './run-model.js';
|
|
6
|
+
import { registerWaitForTask } from './wait-for-task.js';
|
|
6
7
|
import { registerGetTask } from './get-task.js';
|
|
8
|
+
import { registerListTasks } from './list-tasks.js';
|
|
7
9
|
import { registerGetTaskPrice } from './get-task-price.js';
|
|
8
10
|
import { registerCancelTask } from './cancel-task.js';
|
|
9
11
|
import { registerKillTask } from './kill-task.js';
|
|
@@ -12,5 +14,5 @@ import { registerRecommendModel } from './recommend-model.js';
|
|
|
12
14
|
import { registerExplore } from './explore.js';
|
|
13
15
|
import { registerUploadFile } from './upload-file.js';
|
|
14
16
|
export declare function registerTools(server: McpServer, client: WiroClient): void;
|
|
15
|
-
export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerGetTask, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
|
|
17
|
+
export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerWaitForTask, registerGetTask, registerListTasks, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAczE;AAED,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { registerSearchModels } from './search-models.js';
|
|
2
2
|
import { registerGetModelSchema } from './get-model-schema.js';
|
|
3
3
|
import { registerRunModel } from './run-model.js';
|
|
4
|
+
import { registerWaitForTask } from './wait-for-task.js';
|
|
4
5
|
import { registerGetTask } from './get-task.js';
|
|
6
|
+
import { registerListTasks } from './list-tasks.js';
|
|
5
7
|
import { registerGetTaskPrice } from './get-task-price.js';
|
|
6
8
|
import { registerCancelTask } from './cancel-task.js';
|
|
7
9
|
import { registerKillTask } from './kill-task.js';
|
|
@@ -15,12 +17,14 @@ export function registerTools(server, client) {
|
|
|
15
17
|
registerRecommendModel(server, client);
|
|
16
18
|
registerExplore(server, client);
|
|
17
19
|
registerRunModel(server, client);
|
|
20
|
+
registerWaitForTask(server, client);
|
|
18
21
|
registerGetTask(server, client);
|
|
22
|
+
registerListTasks(server, client);
|
|
19
23
|
registerGetTaskPrice(server, client);
|
|
20
24
|
registerCancelTask(server, client);
|
|
21
25
|
registerKillTask(server, client);
|
|
22
26
|
registerUploadFile(server, client);
|
|
23
27
|
registerSearchDocs(server);
|
|
24
28
|
}
|
|
25
|
-
export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerGetTask, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
|
|
29
|
+
export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerWaitForTask, registerGetTask, registerListTasks, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
|
|
26
30
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,MAAkB;IACjE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,MAAkB;IACjE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kill-task.d.ts","sourceRoot":"","sources":["../../src/tools/kill-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"kill-task.d.ts","sourceRoot":"","sources":["../../src/tools/kill-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA4D5E"}
|
package/dist/tools/kill-task.js
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { taskActionOutputSchema } from './schemas.js';
|
|
2
3
|
export function registerKillTask(server, client) {
|
|
3
|
-
server.
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
server.registerTool('kill_task', {
|
|
5
|
+
title: 'Kill a running Wiro task',
|
|
6
|
+
description: 'Stop a task that is already running. This changes remote '
|
|
7
|
+
+ 'state and can discard in-progress work. Use `cancel_task` for a '
|
|
8
|
+
+ 'task that is still queued.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
tasktoken: z.string().optional().describe('The task token returned from run_model.'),
|
|
11
|
+
taskid: z.string().optional().describe('The task ID (alternative to tasktoken).'),
|
|
12
|
+
},
|
|
13
|
+
outputSchema: taskActionOutputSchema,
|
|
14
|
+
annotations: {
|
|
15
|
+
readOnlyHint: false,
|
|
16
|
+
destructiveHint: true,
|
|
17
|
+
idempotentHint: true,
|
|
18
|
+
openWorldHint: true,
|
|
19
|
+
},
|
|
20
|
+
}, async ({ tasktoken, taskid }, extra) => {
|
|
6
21
|
try {
|
|
7
|
-
|
|
22
|
+
if (!tasktoken && !taskid) {
|
|
23
|
+
return {
|
|
24
|
+
content: [{ type: 'text', text: '## Error\n\nEither `tasktoken` or `taskid` is required.' }],
|
|
25
|
+
isError: true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const result = await client.killTask({ tasktoken, taskid }, extra.signal);
|
|
8
29
|
if (result.result === false) {
|
|
9
30
|
const msg = result.errors?.map(e => e.message).join(', ') || 'Kill failed';
|
|
10
31
|
return {
|
|
@@ -14,6 +35,15 @@ export function registerKillTask(server, client) {
|
|
|
14
35
|
}
|
|
15
36
|
return {
|
|
16
37
|
content: [{ type: 'text', text: `Task killed successfully.` }],
|
|
38
|
+
structuredContent: {
|
|
39
|
+
action: 'kill',
|
|
40
|
+
success: true,
|
|
41
|
+
task: {
|
|
42
|
+
...(taskid ? { id: taskid } : {}),
|
|
43
|
+
...(tasktoken ? { token: tasktoken } : {}),
|
|
44
|
+
},
|
|
45
|
+
message: 'Task killed successfully.',
|
|
46
|
+
},
|
|
17
47
|
};
|
|
18
48
|
}
|
|
19
49
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kill-task.js","sourceRoot":"","sources":["../../src/tools/kill-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"kill-task.js","sourceRoot":"","sources":["../../src/tools/kill-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAkB;IACpE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,2DAA2D;cACpE,kEAAkE;cAClE,4BAA4B;QAChC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACpF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAClF;QACD,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAC;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAClC,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,KAAK,CAAC,MAAM,CACb,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAI,MAAM,CAAC,MAAqC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC;gBAC3G,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,GAAG,EAAE,EAAE,CAAC;oBAChE,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;gBACvE,iBAAiB,EAAE;oBACjB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE;wBACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC3C;oBACD,OAAO,EAAE,2BAA2B;iBACrC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-tasks.d.ts","sourceRoot":"","sources":["../../src/tools/list-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA2F7E"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { formatTaskList } from '../utils/format.js';
|
|
3
|
+
import { toStructuredTaskResult } from '../utils/structured.js';
|
|
4
|
+
import { taskListOutputSchema } from './schemas.js';
|
|
5
|
+
export function registerListTasks(server, client) {
|
|
6
|
+
server.registerTool('list_tasks', {
|
|
7
|
+
title: 'List Wiro tasks',
|
|
8
|
+
description: 'List the authenticated project’s recent model-generation tasks. '
|
|
9
|
+
+ 'Use this to find work from previous conversations, then call `get_task` '
|
|
10
|
+
+ 'with a returned task ID for the complete result. The caller identity is '
|
|
11
|
+
+ 'derived from authentication; no user UUID is accepted.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
start: z.number().int().min(0).default(0)
|
|
14
|
+
.describe('Pagination offset (default 0).'),
|
|
15
|
+
limit: z.number().int().min(1).max(100).default(20)
|
|
16
|
+
.describe('Maximum tasks to return (default 20, max 100).'),
|
|
17
|
+
model: z.string().optional()
|
|
18
|
+
.describe('Optional model slug or partial model name filter.'),
|
|
19
|
+
},
|
|
20
|
+
outputSchema: taskListOutputSchema,
|
|
21
|
+
annotations: {
|
|
22
|
+
readOnlyHint: true,
|
|
23
|
+
destructiveHint: false,
|
|
24
|
+
idempotentHint: true,
|
|
25
|
+
openWorldHint: true,
|
|
26
|
+
},
|
|
27
|
+
}, async ({ start, limit, model }, extra) => {
|
|
28
|
+
try {
|
|
29
|
+
const result = await client.listTasks({ start, limit, model }, extra.signal);
|
|
30
|
+
if (!result.result) {
|
|
31
|
+
const message = result.errors?.map(error => error.message).join(', ')
|
|
32
|
+
|| 'Task history request failed.';
|
|
33
|
+
return {
|
|
34
|
+
content: [{ type: 'text', text: `## Error\n\n${message}` }],
|
|
35
|
+
isError: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const tasks = result.tasklist ?? [];
|
|
39
|
+
const total = Number.parseInt(String(result.total ?? '0'), 10) || 0;
|
|
40
|
+
const nextStart = start + tasks.length < total
|
|
41
|
+
? start + tasks.length
|
|
42
|
+
: null;
|
|
43
|
+
const firstTask = tasks[0];
|
|
44
|
+
const structuredTasks = tasks.map(task => {
|
|
45
|
+
const structured = toStructuredTaskResult(task);
|
|
46
|
+
return {
|
|
47
|
+
state: structured.state,
|
|
48
|
+
task: structured.task,
|
|
49
|
+
outputs: structured.outputs.slice(0, 3).map(output => {
|
|
50
|
+
const { text: _text, ...summary } = output;
|
|
51
|
+
return summary;
|
|
52
|
+
}),
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
content: [{
|
|
57
|
+
type: 'text',
|
|
58
|
+
text: formatTaskList(tasks, total, start),
|
|
59
|
+
}],
|
|
60
|
+
structuredContent: {
|
|
61
|
+
tasks: structuredTasks,
|
|
62
|
+
total,
|
|
63
|
+
start,
|
|
64
|
+
limit,
|
|
65
|
+
nextStart,
|
|
66
|
+
...(firstTask
|
|
67
|
+
? {
|
|
68
|
+
nextAction: {
|
|
69
|
+
tool: 'get_task',
|
|
70
|
+
arguments: { taskid: firstTask.id },
|
|
71
|
+
reason: 'Fetch the complete result for the newest matching task.',
|
|
72
|
+
},
|
|
73
|
+
}
|
|
74
|
+
: {}),
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return {
|
|
80
|
+
content: [{
|
|
81
|
+
type: 'text',
|
|
82
|
+
text: `## Error\n\n${error instanceof Error ? error.message : String(error)}`,
|
|
83
|
+
}],
|
|
84
|
+
isError: true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=list-tasks.js.map
|