@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.
Files changed (69) hide show
  1. package/README.md +87 -5
  2. package/dist/client.d.ts +46 -11
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +239 -22
  5. package/dist/client.js.map +1 -1
  6. package/dist/tools/cancel-task.d.ts.map +1 -1
  7. package/dist/tools/cancel-task.js +34 -4
  8. package/dist/tools/cancel-task.js.map +1 -1
  9. package/dist/tools/explore.d.ts.map +1 -1
  10. package/dist/tools/explore.js +17 -1
  11. package/dist/tools/explore.js.map +1 -1
  12. package/dist/tools/get-model-schema.d.ts.map +1 -1
  13. package/dist/tools/get-model-schema.js +18 -2
  14. package/dist/tools/get-model-schema.js.map +1 -1
  15. package/dist/tools/get-task-price.d.ts.map +1 -1
  16. package/dist/tools/get-task-price.js +38 -5
  17. package/dist/tools/get-task-price.js.map +1 -1
  18. package/dist/tools/get-task.d.ts +1 -1
  19. package/dist/tools/get-task.d.ts.map +1 -1
  20. package/dist/tools/get-task.js +77 -7
  21. package/dist/tools/get-task.js.map +1 -1
  22. package/dist/tools/index.d.ts +3 -1
  23. package/dist/tools/index.d.ts.map +1 -1
  24. package/dist/tools/index.js +5 -1
  25. package/dist/tools/index.js.map +1 -1
  26. package/dist/tools/kill-task.d.ts.map +1 -1
  27. package/dist/tools/kill-task.js +34 -4
  28. package/dist/tools/kill-task.js.map +1 -1
  29. package/dist/tools/list-tasks.d.ts +4 -0
  30. package/dist/tools/list-tasks.d.ts.map +1 -0
  31. package/dist/tools/list-tasks.js +89 -0
  32. package/dist/tools/list-tasks.js.map +1 -0
  33. package/dist/tools/recommend-model.d.ts.map +1 -1
  34. package/dist/tools/recommend-model.js +51 -4
  35. package/dist/tools/recommend-model.js.map +1 -1
  36. package/dist/tools/run-model.d.ts +1 -1
  37. package/dist/tools/run-model.d.ts.map +1 -1
  38. package/dist/tools/run-model.js +115 -19
  39. package/dist/tools/run-model.js.map +1 -1
  40. package/dist/tools/schemas.d.ts +683 -0
  41. package/dist/tools/schemas.d.ts.map +1 -0
  42. package/dist/tools/schemas.js +134 -0
  43. package/dist/tools/schemas.js.map +1 -0
  44. package/dist/tools/search-docs.d.ts.map +1 -1
  45. package/dist/tools/search-docs.js +30 -4
  46. package/dist/tools/search-docs.js.map +1 -1
  47. package/dist/tools/search-models.d.ts.map +1 -1
  48. package/dist/tools/search-models.js +65 -15
  49. package/dist/tools/search-models.js.map +1 -1
  50. package/dist/tools/upload-file.d.ts.map +1 -1
  51. package/dist/tools/upload-file.js +42 -4
  52. package/dist/tools/upload-file.js.map +1 -1
  53. package/dist/tools/wait-for-task.d.ts +4 -0
  54. package/dist/tools/wait-for-task.d.ts.map +1 -0
  55. package/dist/tools/wait-for-task.js +121 -0
  56. package/dist/tools/wait-for-task.js.map +1 -0
  57. package/dist/types.d.ts +8 -1
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/types.js +3 -0
  60. package/dist/types.js.map +1 -1
  61. package/dist/utils/format.d.ts +10 -0
  62. package/dist/utils/format.d.ts.map +1 -1
  63. package/dist/utils/format.js +93 -4
  64. package/dist/utils/format.js.map +1 -1
  65. package/dist/utils/structured.d.ts +113 -0
  66. package/dist/utils/structured.d.ts.map +1 -0
  67. package/dist/utils/structured.js +227 -0
  68. package/dist/utils/structured.js.map +1 -0
  69. 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.tool('cancel_task', 'Cancel a task that is still in the queue (before worker assignment). Tasks already running cannot be cancelled — use kill_task instead.', {
4
- tasktoken: z.string().describe('The task token to cancel'),
5
- }, async ({ tasktoken }) => {
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
- const result = await client.cancelTask(tasktoken);
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;AAGxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAkB;IACtE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,yIAAyI,EACzI;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC3D,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAClD,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;aAC3E,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
+ {"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;AAG/C,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA4B3E"}
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"}
@@ -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.tool('explore', 'Browse curated AI models on Wiro, organized by category. Returns featured and popular models grouped into sections like "Recently Added", "Image Generation", "Video", etc. No parameters needed — just call it to see what\'s available.', {}, async () => {
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":"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"}
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;AAG/C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAgClF"}
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.tool('get_model_schema', 'Get the full parameter schema for a specific model. Shows parameter names, types, options, defaults, and required fields. Use this before run_model to understand what parameters a model accepts.', {
5
- model: z.string().describe('Model slug in "owner/model" format, e.g. "openai/sora-2", "black-forest-labs/flux-2-pro"'),
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,IAAI,CACT,kBAAkB,EAClB,oMAAoM,EACpM;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;KACvH,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;aAC3C,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
+ {"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;AAE/C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAiEhF"}
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.tool('get_task_price', 'Get the cost of a completed task. Returns the total cost charged for the run. Only successful tasks (pexit "0") are billed — failed tasks are not charged.', {
4
- tasktoken: z.string().optional().describe('The task token returned from run_model'),
5
- taskid: z.string().optional().describe('The task ID (alternative to tasktoken)'),
6
- }, async ({ tasktoken, taskid }) => {
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":"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"}
1
+ {"version":3,"file":"get-task-price.js","sourceRoot":"","sources":["../../src/tools/get-task-price.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { WiroClient } from '../client.js';
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,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAsC3E"}
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"}
@@ -1,10 +1,28 @@
1
1
  import { z } from 'zod';
2
- import { formatTaskResult } from '../utils/format.js';
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.tool('get_task', 'Get the current status and output of a task. Returns status, outputs, cost, and elapsed time. Check pexit for success ("0") or failure.', {
5
- tasktoken: z.string().optional().describe('The task token returned from run_model'),
6
- taskid: z.string().optional().describe('The task ID (alternative to tasktoken)'),
7
- }, async ({ tasktoken, taskid }) => {
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 detail = await client.getTask({ tasktoken, taskid });
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: [{ type: 'text', text: formatTaskResult(task) }],
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;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,MAAkB;IACnE,MAAM,CAAC,IAAI,CACT,UAAU,EACV,yIAAyI,EACzI;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,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,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAElC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;oBACzE,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;aACnE,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
+ {"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"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"}
@@ -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,CAYzE;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.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"}
@@ -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
@@ -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;AAE/C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA4B5E"}
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"}
@@ -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.tool('kill_task', 'Kill a task that is currently running (after worker assignment). For queued tasks, use cancel_task instead.', {
4
- tasktoken: z.string().describe('The task token to kill'),
5
- }, async ({ tasktoken }) => {
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
- const result = await client.killTask(tasktoken);
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;AAGxB,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAkB;IACpE,MAAM,CAAC,IAAI,CACT,WAAW,EACX,6GAA6G,EAC7G;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAChD,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;aACxE,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
+ {"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,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { WiroClient } from '../client.js';
3
+ export declare function registerListTasks(server: McpServer, client: WiroClient): void;
4
+ //# sourceMappingURL=list-tasks.d.ts.map
@@ -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