@wiro-ai/wiro-mcp 1.1.5 → 1.2.1

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 (65) hide show
  1. package/README.md +86 -2
  2. package/dist/client.d.ts +12 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +42 -4
  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 +26 -3
  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.map +1 -1
  19. package/dist/tools/get-task.js +30 -6
  20. package/dist/tools/get-task.js.map +1 -1
  21. package/dist/tools/index.d.ts +2 -1
  22. package/dist/tools/index.d.ts.map +1 -1
  23. package/dist/tools/index.js +3 -1
  24. package/dist/tools/index.js.map +1 -1
  25. package/dist/tools/kill-task.d.ts.map +1 -1
  26. package/dist/tools/kill-task.js +26 -3
  27. package/dist/tools/kill-task.js.map +1 -1
  28. package/dist/tools/list-tasks.d.ts +4 -0
  29. package/dist/tools/list-tasks.d.ts.map +1 -0
  30. package/dist/tools/list-tasks.js +89 -0
  31. package/dist/tools/list-tasks.js.map +1 -0
  32. package/dist/tools/recommend-model.d.ts.map +1 -1
  33. package/dist/tools/recommend-model.js +51 -4
  34. package/dist/tools/recommend-model.js.map +1 -1
  35. package/dist/tools/run-model.d.ts.map +1 -1
  36. package/dist/tools/run-model.js +58 -11
  37. package/dist/tools/run-model.js.map +1 -1
  38. package/dist/tools/schemas.d.ts +683 -0
  39. package/dist/tools/schemas.d.ts.map +1 -0
  40. package/dist/tools/schemas.js +134 -0
  41. package/dist/tools/schemas.js.map +1 -0
  42. package/dist/tools/search-docs.d.ts.map +1 -1
  43. package/dist/tools/search-docs.js +30 -4
  44. package/dist/tools/search-docs.js.map +1 -1
  45. package/dist/tools/search-models.d.ts.map +1 -1
  46. package/dist/tools/search-models.js +65 -15
  47. package/dist/tools/search-models.js.map +1 -1
  48. package/dist/tools/upload-file.d.ts.map +1 -1
  49. package/dist/tools/upload-file.js +42 -4
  50. package/dist/tools/upload-file.js.map +1 -1
  51. package/dist/tools/wait-for-task.d.ts.map +1 -1
  52. package/dist/tools/wait-for-task.js +40 -10
  53. package/dist/tools/wait-for-task.js.map +1 -1
  54. package/dist/types.d.ts +6 -0
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js.map +1 -1
  57. package/dist/utils/format.d.ts +2 -0
  58. package/dist/utils/format.d.ts.map +1 -1
  59. package/dist/utils/format.js +36 -1
  60. package/dist/utils/format.js.map +1 -1
  61. package/dist/utils/structured.d.ts +121 -0
  62. package/dist/utils/structured.d.ts.map +1 -0
  63. package/dist/utils/structured.js +243 -0
  64. package/dist/utils/structured.js.map +1 -0
  65. package/package.json +12 -6
@@ -1,12 +1,29 @@
1
1
  import { z } from 'zod';
2
2
  import { TaskWaitTimeoutError, } from '../client.js';
3
3
  import { formatTaskPending, formatTaskResult, } from '../utils/format.js';
4
+ import { createTaskContent, toPendingTaskResult, toStructuredTaskResult, } from '../utils/structured.js';
5
+ import { taskResultOutputSchema } from './schemas.js';
4
6
  export function registerGetTask(server, client) {
5
- server.tool('get_task', 'Get the current status and output of a task. By default this is an immediate one-time check; set `wait_seconds` for a short bounded wait, or use `wait_for_task` for resumable long generations. Returns status, outputs, cost, and elapsed time. Check pexit for success ("0") or failure.', {
6
- tasktoken: z.string().optional().describe('The task token returned from run_model'),
7
- taskid: z.string().optional().describe('The task ID (alternative to tasktoken)'),
8
- wait_seconds: z.number().int().min(0).max(45).default(0)
9
- .describe('Optional bounded wait before returning (0-45 seconds, default 0)'),
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. When the task is '
12
+ + 'complete, present every returned media resource in the user-facing '
13
+ + 'response instead of reporting only task metadata.',
14
+ inputSchema: {
15
+ tasktoken: z.string().optional().describe('The task token returned from run_model.'),
16
+ taskid: z.string().optional().describe('The task ID (alternative to tasktoken).'),
17
+ wait_seconds: z.number().int().min(0).max(45).default(0)
18
+ .describe('Optional bounded wait before returning (0-45 seconds, default 0).'),
19
+ },
20
+ outputSchema: taskResultOutputSchema,
21
+ annotations: {
22
+ readOnlyHint: true,
23
+ destructiveHint: false,
24
+ idempotentHint: true,
25
+ openWorldHint: true,
26
+ },
10
27
  }, async ({ tasktoken, taskid, wait_seconds }, extra) => {
11
28
  try {
12
29
  if (!tasktoken && !taskid) {
@@ -55,7 +72,11 @@ export function registerGetTask(server, client) {
55
72
  };
56
73
  }
57
74
  return {
58
- content: [{ type: 'text', text: formatTaskResult(task) }],
75
+ content: createTaskContent(formatTaskResult(task), task),
76
+ structuredContent: toStructuredTaskResult(task, {
77
+ taskid,
78
+ tasktoken,
79
+ }),
59
80
  };
60
81
  }
61
82
  catch (error) {
@@ -71,6 +92,9 @@ export function registerGetTask(server, client) {
71
92
  timeoutSeconds: wait_seconds,
72
93
  }),
73
94
  }],
95
+ structuredContent: lastTask
96
+ ? toStructuredTaskResult(lastTask, { taskid, tasktoken })
97
+ : toPendingTaskResult({ taskid, tasktoken }),
74
98
  };
75
99
  }
76
100
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../src/tools/get-task.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { registerGetModelSchema } from './get-model-schema.js';
5
5
  import { registerRunModel } from './run-model.js';
6
6
  import { registerWaitForTask } from './wait-for-task.js';
7
7
  import { registerGetTask } from './get-task.js';
8
+ import { registerListTasks } from './list-tasks.js';
8
9
  import { registerGetTaskPrice } from './get-task-price.js';
9
10
  import { registerCancelTask } from './cancel-task.js';
10
11
  import { registerKillTask } from './kill-task.js';
@@ -13,5 +14,5 @@ import { registerRecommendModel } from './recommend-model.js';
13
14
  import { registerExplore } from './explore.js';
14
15
  import { registerUploadFile } from './upload-file.js';
15
16
  export declare function registerTools(server: McpServer, client: WiroClient): void;
16
- export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerWaitForTask, registerGetTask, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
17
+ export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerWaitForTask, registerGetTask, registerListTasks, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
17
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,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,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,CAazE;AAED,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,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"}
@@ -3,6 +3,7 @@ import { registerGetModelSchema } from './get-model-schema.js';
3
3
  import { registerRunModel } from './run-model.js';
4
4
  import { registerWaitForTask } from './wait-for-task.js';
5
5
  import { registerGetTask } from './get-task.js';
6
+ import { registerListTasks } from './list-tasks.js';
6
7
  import { registerGetTaskPrice } from './get-task-price.js';
7
8
  import { registerCancelTask } from './cancel-task.js';
8
9
  import { registerKillTask } from './kill-task.js';
@@ -18,11 +19,12 @@ export function registerTools(server, client) {
18
19
  registerRunModel(server, client);
19
20
  registerWaitForTask(server, client);
20
21
  registerGetTask(server, client);
22
+ registerListTasks(server, client);
21
23
  registerGetTaskPrice(server, client);
22
24
  registerCancelTask(server, client);
23
25
  registerKillTask(server, client);
24
26
  registerUploadFile(server, client);
25
27
  registerSearchDocs(server);
26
28
  }
27
- export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerWaitForTask, registerGetTask, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
29
+ export { registerSearchModels, registerGetModelSchema, registerRecommendModel, registerExplore, registerRunModel, registerWaitForTask, registerGetTask, registerListTasks, registerGetTaskPrice, registerCancelTask, registerKillTask, registerUploadFile, registerSearchDocs, };
28
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,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,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,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,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,mBAAmB,EACnB,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,CAuC5E"}
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,8 +1,22 @@
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().optional().describe('The task token returned from run_model'),
5
- taskid: z.string().optional().describe('The task ID (alternative to 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
+ },
6
20
  }, async ({ tasktoken, taskid }, extra) => {
7
21
  try {
8
22
  if (!tasktoken && !taskid) {
@@ -21,6 +35,15 @@ export function registerKillTask(server, client) {
21
35
  }
22
36
  return {
23
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
+ },
24
47
  };
25
48
  }
26
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,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,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;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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tasks.js","sourceRoot":"","sources":["../../src/tools/list-tasks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recommend-model.d.ts","sourceRoot":"","sources":["../../src/tools/recommend-model.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,CAsClF"}
1
+ {"version":3,"file":"recommend-model.d.ts","sourceRoot":"","sources":["../../src/tools/recommend-model.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,CAoFlF"}
@@ -1,8 +1,23 @@
1
1
  import { z } from 'zod';
2
2
  import { formatModelList } from '../utils/format.js';
3
+ import { toStructuredModel } from '../utils/structured.js';
4
+ import { modelListOutputSchema } from './schemas.js';
3
5
  export function registerRecommendModel(server, client) {
4
- server.tool('recommend_model', 'Describe what you want to build and get model recommendations ranked by relevance. Use natural language like "remove background from product photos" or "generate a 10-second cinematic video".', {
5
- task: z.string().describe('What you want to do, e.g. "generate a photorealistic portrait", "upscale an image to 4K", "transcribe audio to text"'),
6
+ server.registerTool('recommend_model', {
7
+ title: 'Recommend Wiro models',
8
+ description: 'Describe a generation goal in natural language and receive '
9
+ + 'ranked model recommendations. Follow the returned '
10
+ + '`get_model_schema` next action before running a model.',
11
+ inputSchema: {
12
+ task: z.string().describe('What you want to do, e.g. "generate a photorealistic portrait", "upscale an image to 4K", "transcribe audio to text".'),
13
+ },
14
+ outputSchema: modelListOutputSchema,
15
+ annotations: {
16
+ readOnlyHint: true,
17
+ destructiveHint: false,
18
+ idempotentHint: true,
19
+ openWorldHint: true,
20
+ },
6
21
  }, async ({ task }) => {
7
22
  try {
8
23
  const result = await client.searchModels({
@@ -10,18 +25,50 @@ export function registerRecommendModel(server, client) {
10
25
  sort: 'relevance',
11
26
  limit: 10,
12
27
  });
13
- if (!result.result || !result.tool?.length) {
28
+ if (!result.result) {
29
+ const message = result.errors?.map(error => error.message).join(', ')
30
+ || 'Model recommendation failed.';
31
+ return {
32
+ content: [{ type: 'text', text: `## Error\n\n${message}` }],
33
+ isError: true,
34
+ };
35
+ }
36
+ const models = result.tool ?? [];
37
+ const total = Number.parseInt(String(result.total ?? models.length), 10) || models.length;
38
+ const firstModel = models[0];
39
+ if (!models.length) {
14
40
  return {
15
41
  content: [{
16
42
  type: 'text',
17
43
  text: `No models found for "${task}". Try a different description or use \`search_models\` with specific categories.`,
18
44
  }],
45
+ structuredContent: {
46
+ models: [],
47
+ total,
48
+ start: 0,
49
+ limit: 10,
50
+ nextStart: null,
51
+ },
19
52
  };
20
53
  }
21
- const text = formatModelList(result.tool, `## Recommended Models for "${task}" (${result.tool.length} results)`);
54
+ const text = formatModelList(models, `## Recommended Models for "${task}" (${models.length} results)`);
22
55
  const footer = `\n\n*Use \`get_model_schema\` to see full parameters and pricing for any model.*`;
23
56
  return {
24
57
  content: [{ type: 'text', text: text + footer }],
58
+ structuredContent: {
59
+ models: models.map(toStructuredModel),
60
+ total,
61
+ start: 0,
62
+ limit: 10,
63
+ nextStart: null,
64
+ nextAction: {
65
+ tool: 'get_model_schema',
66
+ arguments: {
67
+ model: `${firstModel.cleanslugowner}/${firstModel.cleanslugproject}`,
68
+ },
69
+ reason: 'Inspect the selected model parameters before running it.',
70
+ },
71
+ },
25
72
  };
26
73
  }
27
74
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"recommend-model.js","sourceRoot":"","sources":["../../src/tools/recommend-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAkB;IAC1E,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,iMAAiM,EACjM;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;KAClJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;gBACvC,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wBAAwB,IAAI,mFAAmF;yBACtH,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,8BAA8B,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,CAAC;YACjH,MAAM,MAAM,GAAG,kFAAkF,CAAC;YAElG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;aAC1D,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":"recommend-model.js","sourceRoot":"","sources":["../../src/tools/recommend-model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-model.d.ts","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAQtB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAoH5E"}
1
+ {"version":3,"file":"run-model.d.ts","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AActB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA+J5E"}
@@ -1,16 +1,31 @@
1
1
  import { z } from 'zod';
2
2
  import { TaskPollingError, TaskWaitTimeoutError, } from '../client.js';
3
3
  import { formatTaskPending, formatTaskResult, formatTaskSubmitted, } from '../utils/format.js';
4
+ import { createTaskContent, toPendingTaskResult, toStructuredTaskResult, } from '../utils/structured.js';
5
+ import { taskResultOutputSchema } from './schemas.js';
4
6
  export function registerRunModel(server, client) {
5
- server.tool('run_model', 'Run any AI model on Wiro. Supports image generation, video generation, LLMs, audio, 3D, and more.\n\n' +
6
- 'Use `get_model_schema` first to discover available parameters.\n\n' +
7
- 'With wait=true (default), polls until completion and returns the result.\n' +
8
- 'With wait=false, returns the task token immediately for `wait_for_task` or a one-time `get_task` check.\n' +
9
- 'If the wait budget expires, the task is still running: continue with `wait_for_task`. Never submit the same run again.', {
10
- model: z.string().describe('Model slug in "owner/model" format, e.g. "openai/sora-2", "google/nano-banana-pro"'),
11
- params: z.record(z.string(), z.unknown()).describe('Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. For file parameters (fileinput, multifileinput, combinefileinput), pass URLs directly — no upload needed. For combinefileinput, pass an array of URLs.'),
12
- wait: z.boolean().default(true).describe('If true, poll until completion and return result. If false, return task token immediately.'),
13
- timeout_seconds: z.number().int().min(10).max(600).default(45).describe('Max seconds to wait for completion (only when wait=true). The 45s default is safe for clients with a 60s tool timeout.'),
7
+ server.registerTool('run_model', {
8
+ title: 'Run a Wiro model',
9
+ description: 'Run any AI model on Wiro. Supports image, video, text, audio, '
10
+ + '3D, and more. Call `get_model_schema` first. With `wait=true` this '
11
+ + 'performs a bounded wait; when the response contains '
12
+ + '`nextAction.tool = "wait_for_task"`, call that tool with the exact '
13
+ + 'arguments returned. Never call `run_model` again for the same request. '
14
+ + 'When the task completes, present every returned media resource in the '
15
+ + 'user-facing response instead of reporting only task metadata.',
16
+ inputSchema: {
17
+ model: z.string().describe('Model slug in "owner/model" format, e.g. "openai/sora-2", "google/nano-banana-pro"'),
18
+ params: z.record(z.string(), z.unknown()).describe('Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. For file parameters (fileinput, multifileinput, combinefileinput), pass URLs directly — no upload needed. For combinefileinput, pass an array of URLs.'),
19
+ wait: z.boolean().default(true).describe('If true, poll until completion and return the result. If false, return the task identifiers immediately.'),
20
+ timeout_seconds: z.number().int().min(10).max(600).default(45).describe('Maximum seconds to wait when wait=true. The 45-second default is safe for clients with a 60-second tool timeout.'),
21
+ },
22
+ outputSchema: taskResultOutputSchema,
23
+ annotations: {
24
+ readOnlyHint: false,
25
+ destructiveHint: false,
26
+ idempotentHint: false,
27
+ openWorldHint: true,
28
+ },
14
29
  }, async ({ model, params, wait, timeout_seconds }, extra) => {
15
30
  let runResult;
16
31
  try {
@@ -28,6 +43,11 @@ export function registerRunModel(server, client) {
28
43
  type: 'text',
29
44
  text: formatTaskSubmitted(runResult.taskid, runResult.socketaccesstoken),
30
45
  }],
46
+ structuredContent: toPendingTaskResult({
47
+ taskid: runResult.taskid,
48
+ tasktoken: runResult.socketaccesstoken,
49
+ model,
50
+ }),
31
51
  };
32
52
  }
33
53
  const detail = await client.waitForTask(runResult.socketaccesstoken, timeout_seconds * 1000, {
@@ -53,6 +73,7 @@ export function registerRunModel(server, client) {
53
73
  });
54
74
  const task = detail.tasklist?.[0];
55
75
  if (!task) {
76
+ const reason = 'The status endpoint returned no task data.';
56
77
  return {
57
78
  content: [{
58
79
  type: 'text',
@@ -60,13 +81,24 @@ export function registerRunModel(server, client) {
60
81
  taskid: runResult.taskid,
61
82
  tasktoken: runResult.socketaccesstoken,
62
83
  timeoutSeconds: timeout_seconds,
63
- reason: 'The status endpoint returned no task data.',
84
+ reason,
64
85
  }),
65
86
  }],
87
+ structuredContent: toPendingTaskResult({
88
+ taskid: runResult.taskid,
89
+ tasktoken: runResult.socketaccesstoken,
90
+ model,
91
+ reason,
92
+ }),
66
93
  };
67
94
  }
68
95
  return {
69
- content: [{ type: 'text', text: formatTaskResult(task) }],
96
+ content: createTaskContent(formatTaskResult(task), task),
97
+ structuredContent: toStructuredTaskResult(task, {
98
+ taskid: runResult.taskid,
99
+ tasktoken: runResult.socketaccesstoken,
100
+ model,
101
+ }),
70
102
  };
71
103
  }
72
104
  catch (error) {
@@ -79,6 +111,20 @@ export function registerRunModel(server, client) {
79
111
  const reason = error instanceof TaskWaitTimeoutError
80
112
  ? undefined
81
113
  : 'Task submission succeeded, but status monitoring was interrupted.';
114
+ const structured = lastTask
115
+ ? toStructuredTaskResult(lastTask, {
116
+ taskid: runResult.taskid,
117
+ tasktoken: runResult.socketaccesstoken,
118
+ model,
119
+ })
120
+ : toPendingTaskResult({
121
+ taskid: runResult.taskid,
122
+ tasktoken: runResult.socketaccesstoken,
123
+ model,
124
+ reason,
125
+ });
126
+ if (reason)
127
+ structured.error = reason;
82
128
  return {
83
129
  content: [{
84
130
  type: 'text',
@@ -92,6 +138,7 @@ export function registerRunModel(server, client) {
92
138
  reason,
93
139
  }),
94
140
  }],
141
+ structuredContent: structured,
95
142
  };
96
143
  }
97
144
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"run-model.js","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-model.js","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"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"}