@wiro-ai/wiro-mcp 1.3.4 → 1.4.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 (283) hide show
  1. package/README.md +183 -16
  2. package/dist/client.d.ts +16 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +126 -24
  5. package/dist/client.js.map +1 -1
  6. package/dist/index.js +4 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/instructions.d.ts +2 -0
  9. package/dist/instructions.d.ts.map +1 -0
  10. package/dist/instructions.js +29 -0
  11. package/dist/instructions.js.map +1 -0
  12. package/dist/playbooks.d.ts +8 -0
  13. package/dist/playbooks.d.ts.map +1 -0
  14. package/dist/playbooks.js +667 -0
  15. package/dist/playbooks.js.map +1 -0
  16. package/dist/prompts.d.ts +4 -0
  17. package/dist/prompts.d.ts.map +1 -0
  18. package/dist/prompts.js +133 -0
  19. package/dist/prompts.js.map +1 -0
  20. package/dist/server.d.ts +15 -2
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +12 -7
  23. package/dist/server.js.map +1 -1
  24. package/dist/tools/apply-agent-skills.d.ts +4 -0
  25. package/dist/tools/apply-agent-skills.d.ts.map +1 -0
  26. package/dist/tools/apply-agent-skills.js +601 -0
  27. package/dist/tools/apply-agent-skills.js.map +1 -0
  28. package/dist/tools/cancel-agent-message.d.ts +4 -0
  29. package/dist/tools/cancel-agent-message.d.ts.map +1 -0
  30. package/dist/tools/cancel-agent-message.js +126 -0
  31. package/dist/tools/cancel-agent-message.js.map +1 -0
  32. package/dist/tools/cancel-task.js +3 -3
  33. package/dist/tools/cancel-task.js.map +1 -1
  34. package/dist/tools/clone-workflow.d.ts +4 -0
  35. package/dist/tools/clone-workflow.d.ts.map +1 -0
  36. package/dist/tools/clone-workflow.js +83 -0
  37. package/dist/tools/clone-workflow.js.map +1 -0
  38. package/dist/tools/connect-agent-oauth.d.ts +4 -0
  39. package/dist/tools/connect-agent-oauth.d.ts.map +1 -0
  40. package/dist/tools/connect-agent-oauth.js +508 -0
  41. package/dist/tools/connect-agent-oauth.js.map +1 -0
  42. package/dist/tools/control-agent.d.ts +4 -0
  43. package/dist/tools/control-agent.d.ts.map +1 -0
  44. package/dist/tools/control-agent.js +289 -0
  45. package/dist/tools/control-agent.js.map +1 -0
  46. package/dist/tools/create-workflow.d.ts +100 -0
  47. package/dist/tools/create-workflow.d.ts.map +1 -0
  48. package/dist/tools/create-workflow.js +102 -0
  49. package/dist/tools/create-workflow.js.map +1 -0
  50. package/dist/tools/delete-agent-session.d.ts +6 -0
  51. package/dist/tools/delete-agent-session.d.ts.map +1 -0
  52. package/dist/tools/delete-agent-session.js +134 -0
  53. package/dist/tools/delete-agent-session.js.map +1 -0
  54. package/dist/tools/delete-agent.d.ts +4 -0
  55. package/dist/tools/delete-agent.d.ts.map +1 -0
  56. package/dist/tools/delete-agent.js +145 -0
  57. package/dist/tools/delete-agent.js.map +1 -0
  58. package/dist/tools/delete-workflow.d.ts +4 -0
  59. package/dist/tools/delete-workflow.d.ts.map +1 -0
  60. package/dist/tools/delete-workflow.js +77 -0
  61. package/dist/tools/delete-workflow.js.map +1 -0
  62. package/dist/tools/deploy-agent.d.ts +4 -0
  63. package/dist/tools/deploy-agent.d.ts.map +1 -0
  64. package/dist/tools/deploy-agent.js +463 -0
  65. package/dist/tools/deploy-agent.js.map +1 -0
  66. package/dist/tools/disconnect-agent-oauth.d.ts +4 -0
  67. package/dist/tools/disconnect-agent-oauth.d.ts.map +1 -0
  68. package/dist/tools/disconnect-agent-oauth.js +118 -0
  69. package/dist/tools/disconnect-agent-oauth.js.map +1 -0
  70. package/dist/tools/get-account.d.ts +4 -0
  71. package/dist/tools/get-account.d.ts.map +1 -0
  72. package/dist/tools/get-account.js +112 -0
  73. package/dist/tools/get-account.js.map +1 -0
  74. package/dist/tools/get-agent-activity.d.ts +4 -0
  75. package/dist/tools/get-agent-activity.d.ts.map +1 -0
  76. package/dist/tools/get-agent-activity.js +383 -0
  77. package/dist/tools/get-agent-activity.js.map +1 -0
  78. package/dist/tools/get-agent-conversation.d.ts +4 -0
  79. package/dist/tools/get-agent-conversation.d.ts.map +1 -0
  80. package/dist/tools/get-agent-conversation.js +228 -0
  81. package/dist/tools/get-agent-conversation.js.map +1 -0
  82. package/dist/tools/get-agent-message.d.ts +4 -0
  83. package/dist/tools/get-agent-message.d.ts.map +1 -0
  84. package/dist/tools/get-agent-message.js +68 -0
  85. package/dist/tools/get-agent-message.js.map +1 -0
  86. package/dist/tools/get-agent-template.d.ts +4 -0
  87. package/dist/tools/get-agent-template.d.ts.map +1 -0
  88. package/dist/tools/get-agent-template.js +128 -0
  89. package/dist/tools/get-agent-template.js.map +1 -0
  90. package/dist/tools/get-model-schema.d.ts +5 -1
  91. package/dist/tools/get-model-schema.d.ts.map +1 -1
  92. package/dist/tools/get-model-schema.js +138 -8
  93. package/dist/tools/get-model-schema.js.map +1 -1
  94. package/dist/tools/get-my-agent.d.ts +4 -0
  95. package/dist/tools/get-my-agent.d.ts.map +1 -0
  96. package/dist/tools/get-my-agent.js +117 -0
  97. package/dist/tools/get-my-agent.js.map +1 -0
  98. package/dist/tools/get-playbook.d.ts +3 -0
  99. package/dist/tools/get-playbook.d.ts.map +1 -0
  100. package/dist/tools/get-playbook.js +50 -0
  101. package/dist/tools/get-playbook.js.map +1 -0
  102. package/dist/tools/get-task-price.d.ts +1 -1
  103. package/dist/tools/get-task-price.d.ts.map +1 -1
  104. package/dist/tools/get-task-price.js +64 -16
  105. package/dist/tools/get-task-price.js.map +1 -1
  106. package/dist/tools/get-task.d.ts.map +1 -1
  107. package/dist/tools/get-task.js +26 -9
  108. package/dist/tools/get-task.js.map +1 -1
  109. package/dist/tools/get-workflow.d.ts +9 -0
  110. package/dist/tools/get-workflow.d.ts.map +1 -0
  111. package/dist/tools/get-workflow.js +105 -0
  112. package/dist/tools/get-workflow.js.map +1 -0
  113. package/dist/tools/index.d.ts +63 -2
  114. package/dist/tools/index.d.ts.map +1 -1
  115. package/dist/tools/index.js +131 -14
  116. package/dist/tools/index.js.map +1 -1
  117. package/dist/tools/kill-task.d.ts.map +1 -1
  118. package/dist/tools/kill-task.js +10 -6
  119. package/dist/tools/kill-task.js.map +1 -1
  120. package/dist/tools/list-agent-skills.d.ts +4 -0
  121. package/dist/tools/list-agent-skills.d.ts.map +1 -0
  122. package/dist/tools/list-agent-skills.js +242 -0
  123. package/dist/tools/list-agent-skills.js.map +1 -0
  124. package/dist/tools/list-agent-templates.d.ts +4 -0
  125. package/dist/tools/list-agent-templates.d.ts.map +1 -0
  126. package/dist/tools/list-agent-templates.js +110 -0
  127. package/dist/tools/list-agent-templates.js.map +1 -0
  128. package/dist/tools/list-my-agents.d.ts +4 -0
  129. package/dist/tools/list-my-agents.d.ts.map +1 -0
  130. package/dist/tools/list-my-agents.js +93 -0
  131. package/dist/tools/list-my-agents.js.map +1 -0
  132. package/dist/tools/list-studio-results.d.ts +4 -0
  133. package/dist/tools/list-studio-results.d.ts.map +1 -0
  134. package/dist/tools/list-studio-results.js +95 -0
  135. package/dist/tools/list-studio-results.js.map +1 -0
  136. package/dist/tools/list-tasks.d.ts.map +1 -1
  137. package/dist/tools/list-tasks.js +7 -5
  138. package/dist/tools/list-tasks.js.map +1 -1
  139. package/dist/tools/list-workflow-runs.d.ts +4 -0
  140. package/dist/tools/list-workflow-runs.d.ts.map +1 -0
  141. package/dist/tools/list-workflow-runs.js +110 -0
  142. package/dist/tools/list-workflow-runs.js.map +1 -0
  143. package/dist/tools/list-workflows.d.ts +4 -0
  144. package/dist/tools/list-workflows.d.ts.map +1 -0
  145. package/dist/tools/list-workflows.js +143 -0
  146. package/dist/tools/list-workflows.js.map +1 -0
  147. package/dist/tools/manage-agent-billing.d.ts +4 -0
  148. package/dist/tools/manage-agent-billing.d.ts.map +1 -0
  149. package/dist/tools/manage-agent-billing.js +788 -0
  150. package/dist/tools/manage-agent-billing.js.map +1 -0
  151. package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
  152. package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
  153. package/dist/tools/manage-agent-custom-skill.js +531 -0
  154. package/dist/tools/manage-agent-custom-skill.js.map +1 -0
  155. package/dist/tools/recommend-model.d.ts.map +1 -1
  156. package/dist/tools/recommend-model.js +6 -5
  157. package/dist/tools/recommend-model.js.map +1 -1
  158. package/dist/tools/resume-workflow-run.d.ts +4 -0
  159. package/dist/tools/resume-workflow-run.d.ts.map +1 -0
  160. package/dist/tools/resume-workflow-run.js +69 -0
  161. package/dist/tools/resume-workflow-run.js.map +1 -0
  162. package/dist/tools/run-model.d.ts.map +1 -1
  163. package/dist/tools/run-model.js +40 -4
  164. package/dist/tools/run-model.js.map +1 -1
  165. package/dist/tools/run-workflow.d.ts +6 -0
  166. package/dist/tools/run-workflow.d.ts.map +1 -0
  167. package/dist/tools/run-workflow.js +132 -0
  168. package/dist/tools/run-workflow.js.map +1 -0
  169. package/dist/tools/save-workflow-from-agent.d.ts +4 -0
  170. package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
  171. package/dist/tools/save-workflow-from-agent.js +280 -0
  172. package/dist/tools/save-workflow-from-agent.js.map +1 -0
  173. package/dist/tools/schemas.d.ts +182 -115
  174. package/dist/tools/schemas.d.ts.map +1 -1
  175. package/dist/tools/schemas.js +26 -6
  176. package/dist/tools/schemas.js.map +1 -1
  177. package/dist/tools/search-models.d.ts.map +1 -1
  178. package/dist/tools/search-models.js +9 -6
  179. package/dist/tools/search-models.js.map +1 -1
  180. package/dist/tools/send-agent-message.d.ts +4 -0
  181. package/dist/tools/send-agent-message.d.ts.map +1 -0
  182. package/dist/tools/send-agent-message.js +156 -0
  183. package/dist/tools/send-agent-message.js.map +1 -0
  184. package/dist/tools/set-agent-credentials.d.ts +4 -0
  185. package/dist/tools/set-agent-credentials.d.ts.map +1 -0
  186. package/dist/tools/set-agent-credentials.js +540 -0
  187. package/dist/tools/set-agent-credentials.js.map +1 -0
  188. package/dist/tools/update-agent.d.ts +4 -0
  189. package/dist/tools/update-agent.d.ts.map +1 -0
  190. package/dist/tools/update-agent.js +179 -0
  191. package/dist/tools/update-agent.js.map +1 -0
  192. package/dist/tools/update-workflow.d.ts +201 -0
  193. package/dist/tools/update-workflow.d.ts.map +1 -0
  194. package/dist/tools/update-workflow.js +168 -0
  195. package/dist/tools/update-workflow.js.map +1 -0
  196. package/dist/tools/upload-file.d.ts.map +1 -1
  197. package/dist/tools/upload-file.js +12 -7
  198. package/dist/tools/upload-file.js.map +1 -1
  199. package/dist/tools/wait-for-task.d.ts.map +1 -1
  200. package/dist/tools/wait-for-task.js +20 -2
  201. package/dist/tools/wait-for-task.js.map +1 -1
  202. package/dist/tools/wait-for-workflow-run.d.ts +259 -0
  203. package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
  204. package/dist/tools/wait-for-workflow-run.js +190 -0
  205. package/dist/tools/wait-for-workflow-run.js.map +1 -0
  206. package/dist/types.d.ts +18 -0
  207. package/dist/types.d.ts.map +1 -1
  208. package/dist/types.js.map +1 -1
  209. package/dist/utils/agent-catalog.d.ts +1256 -0
  210. package/dist/utils/agent-catalog.d.ts.map +1 -0
  211. package/dist/utils/agent-catalog.js +387 -0
  212. package/dist/utils/agent-catalog.js.map +1 -0
  213. package/dist/utils/agent-config.d.ts +443 -0
  214. package/dist/utils/agent-config.d.ts.map +1 -0
  215. package/dist/utils/agent-config.js +1676 -0
  216. package/dist/utils/agent-config.js.map +1 -0
  217. package/dist/utils/agent-message.d.ts +112 -0
  218. package/dist/utils/agent-message.d.ts.map +1 -0
  219. package/dist/utils/agent-message.js +243 -0
  220. package/dist/utils/agent-message.js.map +1 -0
  221. package/dist/utils/agent-targets.d.ts +76 -0
  222. package/dist/utils/agent-targets.d.ts.map +1 -0
  223. package/dist/utils/agent-targets.js +412 -0
  224. package/dist/utils/agent-targets.js.map +1 -0
  225. package/dist/utils/agent-turns.d.ts +354 -0
  226. package/dist/utils/agent-turns.d.ts.map +1 -0
  227. package/dist/utils/agent-turns.js +660 -0
  228. package/dist/utils/agent-turns.js.map +1 -0
  229. package/dist/utils/api.d.ts +40 -0
  230. package/dist/utils/api.d.ts.map +1 -0
  231. package/dist/utils/api.js +111 -0
  232. package/dist/utils/api.js.map +1 -0
  233. package/dist/utils/format.d.ts +65 -2
  234. package/dist/utils/format.d.ts.map +1 -1
  235. package/dist/utils/format.js +583 -81
  236. package/dist/utils/format.js.map +1 -1
  237. package/dist/utils/json-schema-dialect.d.ts +8 -1
  238. package/dist/utils/json-schema-dialect.d.ts.map +1 -1
  239. package/dist/utils/json-schema-dialect.js +23 -1
  240. package/dist/utils/json-schema-dialect.js.map +1 -1
  241. package/dist/utils/media.d.ts +28 -0
  242. package/dist/utils/media.d.ts.map +1 -0
  243. package/dist/utils/media.js +65 -0
  244. package/dist/utils/media.js.map +1 -0
  245. package/dist/utils/poll.d.ts +39 -0
  246. package/dist/utils/poll.d.ts.map +1 -0
  247. package/dist/utils/poll.js +111 -0
  248. package/dist/utils/poll.js.map +1 -0
  249. package/dist/utils/remote-file.js +2 -2
  250. package/dist/utils/remote-file.js.map +1 -1
  251. package/dist/utils/structured.d.ts +4 -0
  252. package/dist/utils/structured.d.ts.map +1 -1
  253. package/dist/utils/structured.js +23 -7
  254. package/dist/utils/structured.js.map +1 -1
  255. package/dist/utils/studio-runs.d.ts +87 -0
  256. package/dist/utils/studio-runs.d.ts.map +1 -0
  257. package/dist/utils/studio-runs.js +167 -0
  258. package/dist/utils/studio-runs.js.map +1 -0
  259. package/dist/utils/user-agent.d.ts +1199 -0
  260. package/dist/utils/user-agent.d.ts.map +1 -0
  261. package/dist/utils/user-agent.js +897 -0
  262. package/dist/utils/user-agent.js.map +1 -0
  263. package/dist/utils/workflow-agent.d.ts +151 -0
  264. package/dist/utils/workflow-agent.d.ts.map +1 -0
  265. package/dist/utils/workflow-agent.js +292 -0
  266. package/dist/utils/workflow-agent.js.map +1 -0
  267. package/dist/utils/workflow-artifacts.d.ts +160 -0
  268. package/dist/utils/workflow-artifacts.d.ts.map +1 -0
  269. package/dist/utils/workflow-artifacts.js +801 -0
  270. package/dist/utils/workflow-artifacts.js.map +1 -0
  271. package/dist/utils/workflow-save.d.ts +120 -0
  272. package/dist/utils/workflow-save.d.ts.map +1 -0
  273. package/dist/utils/workflow-save.js +728 -0
  274. package/dist/utils/workflow-save.js.map +1 -0
  275. package/dist/utils/workflow.d.ts +564 -0
  276. package/dist/utils/workflow.d.ts.map +1 -0
  277. package/dist/utils/workflow.js +712 -0
  278. package/dist/utils/workflow.js.map +1 -0
  279. package/dist/utils/workspace.d.ts +38 -0
  280. package/dist/utils/workspace.d.ts.map +1 -0
  281. package/dist/utils/workspace.js +90 -0
  282. package/dist/utils/workspace.js.map +1 -0
  283. package/package.json +6 -4
@@ -1,17 +1,106 @@
1
1
  import { z } from 'zod';
2
+ import { asString, isPlainObject, toNumber } from '../utils/api.js';
2
3
  import { formatModelSchema } from '../utils/format.js';
3
4
  import { toStructuredModelDetail } from '../utils/structured.js';
4
5
  import { modelDetailOutputSchema } from './schemas.js';
5
- export function registerGetModelSchema(server, client) {
6
+ const UTILITY_PREFIX = 'workflow-utilities/';
7
+ function optionalNumber(value) {
8
+ const parsed = toNumber(value);
9
+ return parsed === null ? undefined : parsed;
10
+ }
11
+ // Workflow utilities are built-in steps (pick a file from a model's outputs,
12
+ // merge or split text). They are not models, but a workflow author needs the
13
+ // same view of them: parameter ids and the output ports to reference.
14
+ async function getUtilitySchema(client, slug) {
15
+ const result = await client.post('/Workflow/UtilityDetail', { slug });
16
+ const utility = result.result === true ? result.utility?.[0] : undefined;
17
+ if (!utility)
18
+ return null;
19
+ const groups = Array.isArray(utility.parameters) ? utility.parameters.filter(isPlainObject) : [];
20
+ const parameters = groups.map(group => ({
21
+ title: asString(group.title) || 'Parameters',
22
+ items: (Array.isArray(group.items) ? group.items.filter(isPlainObject) : []).map(item => {
23
+ const notes = [
24
+ asString(item.note),
25
+ item.wireOnly === true ? 'Wire only: set it to a reference such as "$node-<id>.outputs".' : undefined,
26
+ item.configOnly === true ? 'Static value only: references are not allowed.' : undefined,
27
+ ].filter((note) => Boolean(note))
28
+ .map(note => (/[.!?]$/.test(note) ? note : `${note}.`))
29
+ .join(' ');
30
+ return {
31
+ id: String(item.id ?? ''),
32
+ type: String(item.type ?? 'text'),
33
+ label: asString(item.label) || String(item.id ?? ''),
34
+ ...(item.defaultvalue !== undefined && item.defaultvalue !== '' ? { default: String(item.defaultvalue) } : {}),
35
+ required: item.required === true || String(item.required) === 'true',
36
+ ...(notes ? { note: notes } : {}),
37
+ options: (Array.isArray(item.options) ? item.options.filter(isPlainObject) : []).map(option => ({
38
+ label: String(option.text ?? option.value ?? ''),
39
+ value: String(option.value ?? ''),
40
+ })),
41
+ ...(optionalNumber(item.minvalue) !== undefined ? { min: optionalNumber(item.minvalue) } : {}),
42
+ ...(optionalNumber(item.maxvalue) !== undefined ? { max: optionalNumber(item.maxvalue) } : {}),
43
+ ...(optionalNumber(item.incrementby) !== undefined ? { step: optionalNumber(item.incrementby) } : {}),
44
+ advanced: item.advanced === true,
45
+ };
46
+ }),
47
+ }));
48
+ const outputs = (Array.isArray(utility.outputs) ? utility.outputs.filter(isPlainObject) : []).map(port => ({
49
+ id: String(port.id ?? ''),
50
+ label: asString(port.label) || String(port.id ?? ''),
51
+ type: asString(port.type) || 'string',
52
+ }));
53
+ const dynamicOutputs = utility.dynamicOutputs === true;
54
+ return {
55
+ model: {
56
+ slug,
57
+ title: asString(utility.title) || slug,
58
+ ...(asString(utility.description) ? { description: asString(utility.description) } : {}),
59
+ categories: ['workflow-utility'],
60
+ parameters,
61
+ outputs,
62
+ ...(dynamicOutputs ? { dynamicOutputs } : {}),
63
+ },
64
+ nextAction: {
65
+ tool: 'get_playbook',
66
+ arguments: { topics: ['workflow-graph'] },
67
+ reason: 'Utilities are workflow steps, not runnable models. See how to wire them into a workflow.',
68
+ },
69
+ };
70
+ }
71
+ // The workflows group can load this tool without run_model. A model is then
72
+ // only usable as a workflow step, so the result points there instead.
73
+ function workflowStepUsage(text, slug) {
74
+ const usage = text.lastIndexOf('\n### Usage');
75
+ return [
76
+ usage >= 0 ? text.slice(0, usage) : text,
77
+ '',
78
+ '### Usage',
79
+ '',
80
+ `Use this model as a workflow step: \`"type": "run"\`, \`"tool": "${slug}"\`, and the parameter ids above as the keys of \`input\`. \`get_playbook\` with the topic "workflow-graph" shows the full format.`,
81
+ ].join('\n');
82
+ }
83
+ export function registerGetModelSchema(server, client, options = {}) {
84
+ const runModel = options.runModel !== false;
6
85
  server.registerTool('get_model_schema', {
7
86
  title: 'Get a Wiro model schema',
8
- description: 'Get one model’s typed parameters, options, defaults, required '
9
- + 'fields, and pricing. Catalog fields such as `previousTaskToken` must be '
10
- + 'discovered here; use it with `toolOutputs` for tool results or with one '
11
- + 'new prompt/messages value for a stateful next turn. Fill required '
12
- + 'parameters and follow the returned `run_model` next action exactly once.',
87
+ description: (runModel
88
+ ? 'Get one model’s typed parameters, options, defaults, required '
89
+ + 'fields, and pricing. Catalog fields such as `session_id` and `previousTaskToken` must be '
90
+ + 'discovered here: a chat continues with the same `session_id` and the next prompt, and '
91
+ + '`previousTaskToken` with `toolOutputs` continues a turn that ended with tool calls. Fill required '
92
+ + 'parameters and follow the returned `run_model` next action once when the user wants a run; '
93
+ + 'for a price question, the price here is the answer. A price set when the run ends, or turn by '
94
+ + 'turn in a live session, gives the rates, and the charge is known after the run. "No fixed price" '
95
+ + 'means the run is charged for the time it takes. '
96
+ : 'Get one model’s typed parameters, options, defaults, required '
97
+ + 'fields, and pricing, to use the model as a workflow step: its parameter '
98
+ + 'ids are the keys of the step’s input. ')
99
+ + 'It also describes the built-in workflow utilities (workflow-utilities/output-filter, '
100
+ + 'workflow-utilities/merge-text, workflow-utilities/split-text): their parameters and '
101
+ + 'the output ports other workflow steps reference.',
13
102
  inputSchema: {
14
- model: z.string().describe('Model slug in "owner/model" format, e.g. "openai/sora-2", "black-forest-labs/flux-2-pro".'),
103
+ model: z.string().describe('Model slug in "owner/model" format, e.g. "google/veo3-1", "black-forest-labs/flux-2-pro", or a workflow utility such as "workflow-utilities/output-filter".'),
15
104
  },
16
105
  outputSchema: modelDetailOutputSchema,
17
106
  annotations: {
@@ -22,6 +111,33 @@ export function registerGetModelSchema(server, client) {
22
111
  },
23
112
  }, async ({ model }) => {
24
113
  try {
114
+ if (model.startsWith(UTILITY_PREFIX)) {
115
+ const utility = await getUtilitySchema(client, model);
116
+ if (!utility) {
117
+ return {
118
+ content: [{ type: 'text', text: `Workflow utility "${model}" not found. The built-in utilities are workflow-utilities/output-filter, workflow-utilities/merge-text and workflow-utilities/split-text.` }],
119
+ isError: true,
120
+ };
121
+ }
122
+ const lines = [`## ${utility.model.title} (\`${model}\`)`, ''];
123
+ if (utility.model.description)
124
+ lines.push(utility.model.description, '');
125
+ lines.push('### Parameters', '');
126
+ for (const item of utility.model.parameters.flatMap(group => group.items)) {
127
+ lines.push(`- \`${item.id}\` (${item.type}${item.required ? ', required' : ''})${item.default !== undefined ? ` default ${item.default}` : ''}: ${item.label}${item.note ? `. ${item.note}` : ''}`);
128
+ }
129
+ lines.push('', '### Output ports', '');
130
+ for (const port of utility.model.outputs) {
131
+ lines.push(`- \`${port.id}\` (${port.type}): reference it as \`$node-<step id>.${port.id}\``);
132
+ }
133
+ if (utility.model.dynamicOutputs) {
134
+ lines.push('', 'The number of output ports follows the step\'s `count` parameter.');
135
+ }
136
+ return {
137
+ content: [{ type: 'text', text: lines.join('\n') }],
138
+ structuredContent: utility,
139
+ };
140
+ }
25
141
  const result = await client.getModelSchema(model);
26
142
  const modelData = result.tool?.[0];
27
143
  if (!result.result || !modelData) {
@@ -31,9 +147,23 @@ export function registerGetModelSchema(server, client) {
31
147
  };
32
148
  }
33
149
  const text = formatModelSchema(modelData);
150
+ const detail = toStructuredModelDetail(modelData);
151
+ if (!runModel) {
152
+ return {
153
+ content: [{ type: 'text', text: workflowStepUsage(text, detail.model.slug) }],
154
+ structuredContent: {
155
+ ...detail,
156
+ nextAction: {
157
+ tool: 'get_playbook',
158
+ arguments: { topics: ['workflow-graph'] },
159
+ reason: 'Use this model as a workflow step; the playbook shows the step format. Running a model on its own needs the models tool group, which is not loaded.',
160
+ },
161
+ },
162
+ };
163
+ }
34
164
  return {
35
165
  content: [{ type: 'text', text }],
36
- structuredContent: toStructuredModelDetail(modelData),
166
+ structuredContent: detail,
37
167
  };
38
168
  }
39
169
  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;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,0EAA0E;cAC1E,0EAA0E;cAC1E,oEAAoE;cACpE,0EAA0E;QAC9E,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
+ {"version":3,"file":"get-model-schema.js","sourceRoot":"","sources":["../../src/tools/get-model-schema.ts"],"names":[],"mappings":"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"}
@@ -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 registerGetMyAgent(server: McpServer, client: WiroClient): void;
4
+ //# sourceMappingURL=get-my-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-my-agent.d.ts","sourceRoot":"","sources":["../../src/tools/get-my-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA4B/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAwG9E"}
@@ -0,0 +1,117 @@
1
+ import { z } from 'zod';
2
+ import { errorResult } from '../utils/api.js';
3
+ import { customSkillEntries, resolveExistingCustomSkillKey, textBlock } from '../utils/agent-config.js';
4
+ import { DEFAULT_WAIT_SECONDS, MAX_WAIT_SECONDS } from '../utils/poll.js';
5
+ import { agentDetailSchema, describeAgentStatus, formatAgentDetail, isTransitionalStatus, nextStepForAgent, readAgentDetail, readAgentStatus, settledStatusAdvice, toAgentDetail, waitForAgentToSettle, } from '../utils/user-agent.js';
6
+ import { isPlainTeamMember } from '../utils/workspace.js';
7
+ import { nextActionSchema } from './schemas.js';
8
+ const entrySchema = z.object({
9
+ key: z.string(),
10
+ kind: z.enum(['custom_instruction', 'scheduled_task']),
11
+ description: z.string().optional(),
12
+ enabled: z.boolean(),
13
+ interval: z.string().nullable(),
14
+ text: z.string(),
15
+ });
16
+ export function registerGetMyAgent(server, client) {
17
+ server.registerTool('get_my_agent', {
18
+ title: 'Get a deployed Wiro agent',
19
+ description: 'Read the full state of one deployed agent: status (number and label), plan, its Starter and Pro '
20
+ + 'prices, credit balance, time zone, skills, chat channels, model settings with the credit rates of the models it can switch to, '
21
+ + 'scheduled tasks and custom instructions (a long text is shortened; entry adds one entry\'s whole text), and the '
22
+ + 'state of each credential. Credential values are never returned, only whether each one is filled, '
23
+ + 'connected or missing. With wait_seconds it keeps reading until the agent is no longer stopping, '
24
+ + 'queued or starting; when the wait runs out, follow the returned nextAction instead of repeating '
25
+ + 'the action that started it. Statuses: 0 stopped, 1 stopping, 2 queued, 3 starting, 4 running, '
26
+ + '5 error, 6 setup required.',
27
+ inputSchema: {
28
+ agent_guid: z.string().min(1).max(100)
29
+ .describe('The deployed agent\'s guid, from list_my_agents or deploy_agent.'),
30
+ entry: z.string().min(1).max(80).optional()
31
+ .describe('The key of one custom instruction or scheduled task, such as cs-brand-voice, or its bare name such as brand-voice. Adds that entry\'s whole text, which the list shortens when it is long. Read it before changing the entry with manage_agent_custom_skill.'),
32
+ wait_seconds: z.number().int().min(0).max(MAX_WAIT_SECONDS).default(0)
33
+ .describe('Keep reading for up to this many seconds while the agent is stopping, queued or starting (0 to 600, default 0 for an immediate read). 45 or less is safe for clients with a 60 second tool timeout; follow nextAction to keep waiting.'),
34
+ },
35
+ outputSchema: {
36
+ agent: agentDetailSchema,
37
+ settled: z.boolean(),
38
+ waitedSeconds: z.number().nonnegative().optional(),
39
+ advice: z.string(),
40
+ entry: entrySchema.optional(),
41
+ nextAction: nextActionSchema.optional(),
42
+ },
43
+ annotations: {
44
+ readOnlyHint: true,
45
+ destructiveHint: false,
46
+ idempotentHint: true,
47
+ openWorldHint: true,
48
+ },
49
+ }, async ({ agent_guid, entry, wait_seconds }, extra) => {
50
+ try {
51
+ const guid = agent_guid.trim();
52
+ let row = await readAgentDetail(client, guid, extra.signal);
53
+ let waitedSeconds;
54
+ let settled = !isTransitionalStatus(readAgentStatus(row));
55
+ if (!settled && wait_seconds > 0) {
56
+ const waited = await waitForAgentToSettle(client, guid, wait_seconds, extra, row);
57
+ row = waited.row;
58
+ settled = waited.settled;
59
+ waitedSeconds = Math.round(waited.elapsedMs / 1000);
60
+ }
61
+ const agent = toAgentDetail(row);
62
+ // The list shows the start of a long entry; the row holds its whole text.
63
+ let full;
64
+ if (entry !== undefined) {
65
+ const entries = customSkillEntries(row);
66
+ const resolved = resolveExistingCustomSkillKey(entry, new Set(entries.map(item => item.key)));
67
+ const found = resolved.key ? entries.find(item => item.key === resolved.key) : undefined;
68
+ if (!found) {
69
+ return errorResult(new Error(resolved.error
70
+ ?? `This agent has no custom instruction or scheduled task named "${entry}". get_my_agent without entry lists its keys.`));
71
+ }
72
+ full = {
73
+ key: found.key,
74
+ kind: found.kind === 'scheduled_task' ? 'scheduled_task' : 'custom_instruction',
75
+ ...(found.description ? { description: found.description } : {}),
76
+ enabled: found.enabled,
77
+ interval: found.interval,
78
+ text: found.value,
79
+ };
80
+ }
81
+ const plainMember = await isPlainTeamMember(client, row, extra.signal);
82
+ const advice = settled
83
+ ? settledStatusAdvice(agent.status, plainMember, agent)
84
+ : `The agent is still ${describeAgentStatus(agent.status).toLowerCase()}. Call get_my_agent again with wait_seconds to keep waiting.`;
85
+ const nextAction = !settled && wait_seconds > 0
86
+ ? {
87
+ tool: 'get_my_agent',
88
+ arguments: { agent_guid: guid, wait_seconds: DEFAULT_WAIT_SECONDS },
89
+ reason: 'The agent has not settled yet. Keep waiting; do not repeat the action that started it.',
90
+ }
91
+ : nextStepForAgent(agent, DEFAULT_WAIT_SECONDS, plainMember);
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: [
96
+ formatAgentDetail(agent, plainMember),
97
+ ...(full ? ['', `### \`${full.key}\` in full`, '', ...textBlock(full.text)] : []),
98
+ '',
99
+ advice,
100
+ ].join('\n'),
101
+ }],
102
+ structuredContent: {
103
+ agent,
104
+ settled,
105
+ ...(waitedSeconds !== undefined ? { waitedSeconds } : {}),
106
+ advice,
107
+ ...(full ? { entry: full } : {}),
108
+ ...(nextAction ? { nextAction } : {}),
109
+ },
110
+ };
111
+ }
112
+ catch (error) {
113
+ return errorResult(error);
114
+ }
115
+ });
116
+ }
117
+ //# sourceMappingURL=get-my-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-my-agent.js","sourceRoot":"","sources":["../../src/tools/get-my-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerGetPlaybook(server: McpServer): void;
3
+ //# sourceMappingURL=get-playbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-playbook.d.ts","sourceRoot":"","sources":["../../src/tools/get-playbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8C3D"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import { PLAYBOOK_SUMMARIES, PLAYBOOK_TITLES, PLAYBOOK_TOPICS, PLAYBOOKS, } from '../playbooks.js';
3
+ const topicSchema = z.enum(PLAYBOOK_TOPICS);
4
+ const topicList = PLAYBOOK_TOPICS
5
+ .map(topic => `${topic} (${PLAYBOOK_SUMMARIES[topic]})`)
6
+ .join('; ');
7
+ export function registerGetPlaybook(server) {
8
+ server.registerTool('get_playbook', {
9
+ title: 'Read a Wiro playbook',
10
+ description: 'Read Wiro playbooks: short guides with the order of calls, '
11
+ + 'the formats and the money rules for one kind of job. Read the '
12
+ + 'relevant topic before a multi-step job, such as building or running '
13
+ + 'a workflow, deploying or setting up an agent, or a Studio session, '
14
+ + 'and follow it. Each topic is enough for its own job; read getting-started '
15
+ + `when the route or the workspace is unclear. Topics: ${topicList}. `
16
+ + 'Several topics can be read in one call.',
17
+ inputSchema: {
18
+ topics: z.array(topicSchema).min(1)
19
+ .describe('One or more playbook topics to read, e.g. ["workflows"] or ["agents", "billing"].'),
20
+ },
21
+ outputSchema: {
22
+ topics: z.array(z.object({
23
+ topic: topicSchema,
24
+ title: z.string(),
25
+ markdown: z.string(),
26
+ })),
27
+ },
28
+ annotations: {
29
+ readOnlyHint: true,
30
+ destructiveHint: false,
31
+ idempotentHint: true,
32
+ // The guides ship inside the package; nothing outside the server is read.
33
+ openWorldHint: false,
34
+ },
35
+ }, async ({ topics }) => {
36
+ const entries = [...new Set(topics)].map(topic => ({
37
+ topic,
38
+ title: PLAYBOOK_TITLES[topic],
39
+ markdown: PLAYBOOKS[topic],
40
+ }));
41
+ return {
42
+ content: [{
43
+ type: 'text',
44
+ text: entries.map(entry => entry.markdown.trim()).join('\n\n---\n\n'),
45
+ }],
46
+ structuredContent: { topics: entries },
47
+ };
48
+ });
49
+ }
50
+ //# sourceMappingURL=get-playbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-playbook.js","sourceRoot":"","sources":["../../src/tools/get-playbook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAE5C,MAAM,SAAS,GAAG,eAAe;KAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;KACvD,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,6DAA6D;cACtE,gEAAgE;cAChE,sEAAsE;cACtE,qEAAqE;cACrE,4EAA4E;cAC5E,uDAAuD,SAAS,IAAI;cACpE,yCAAyC;QAC7C,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;iBAChC,QAAQ,CAAC,mFAAmF,CAAC;SACjG;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvB,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACrB,CAAC,CAAC;SACJ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,0EAA0E;YAC1E,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD,KAAK;YACL,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;YAC7B,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;iBACtE,CAAC;YACF,iBAAiB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;SACvC,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -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 registerGetTaskPrice(server: McpServer, client: WiroClient): void;
4
4
  //# sourceMappingURL=get-task-price.d.ts.map
@@ -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;AAO/C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAgGhF"}
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,EAA8C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAc3F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6IhF"}
@@ -1,12 +1,18 @@
1
1
  import { z } from 'zod';
2
+ import { isTaskId, isTaskIdTooLarge, isTaskNotFound } from '../client.js';
3
+ import { awaitingCharge, cancelledWhileQueued, formatTaskCost, TASK_ID_NOT_NUMERIC, TASK_NOT_FOUND, } from '../utils/format.js';
2
4
  import { getTaskState, toStructuredTaskResult, } from '../utils/structured.js';
3
5
  import { taskPriceOutputSchema } from './schemas.js';
4
6
  export function registerGetTaskPrice(server, client) {
5
7
  server.registerTool('get_task_price', {
6
8
  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.',
9
+ description: 'Get one task’s cost: the amount charged once Wiro has billed it, with the '
10
+ + 'model\'s list price beside it when a discount made them differ. Successful tasks are '
11
+ + 'billed; failed tasks and tasks cancelled while queued are not, and a task stopped '
12
+ + 'while running can still be charged once its work ends. A finished task\'s result already '
13
+ + 'shows its cost, so use this for a task whose result you do not have, or whose result '
14
+ + 'shows only the list price. If the task is active, follow the returned `wait_for_task` '
15
+ + 'next action.',
10
16
  inputSchema: {
11
17
  tasktoken: z.string().optional().describe('The task token returned from run_model.'),
12
18
  taskid: z.string().optional().describe('The task ID (alternative to tasktoken).'),
@@ -26,11 +32,32 @@ export function registerGetTaskPrice(server, client) {
26
32
  isError: true,
27
33
  };
28
34
  }
35
+ if (taskid && !isTaskId(taskid)) {
36
+ return {
37
+ content: [{ type: 'text', text: `## Error\n\n${TASK_ID_NOT_NUMERIC}` }],
38
+ isError: true,
39
+ };
40
+ }
41
+ if (taskid && isTaskIdTooLarge(taskid)) {
42
+ return {
43
+ content: [{ type: 'text', text: `## Error\n\n${TASK_NOT_FOUND}` }],
44
+ isError: true,
45
+ };
46
+ }
29
47
  const detail = await client.getTask({ tasktoken, taskid }, extra.signal);
48
+ if (!detail.result) {
49
+ const errors = isTaskNotFound(detail)
50
+ ? TASK_NOT_FOUND
51
+ : detail.errors?.map(error => error.message).join(', ') || 'Task status request failed.';
52
+ return {
53
+ content: [{ type: 'text', text: `## Error\n\n${errors}` }],
54
+ isError: true,
55
+ };
56
+ }
30
57
  const task = detail.tasklist?.[0];
31
58
  if (!task) {
32
59
  return {
33
- content: [{ type: 'text', text: '## Error\n\nTask not found.' }],
60
+ content: [{ type: 'text', text: `## Error\n\n${TASK_NOT_FOUND}` }],
34
61
  isError: true,
35
62
  };
36
63
  }
@@ -42,16 +69,33 @@ export function registerGetTaskPrice(server, client) {
42
69
  lines.push(`**Model:** \`${task.modelslugowner}/${task.modelslugproject}\``);
43
70
  }
44
71
  lines.push(`**Status:** ${task.status}`);
45
- if (task.pexit === '0') {
46
- const cost = task.totalcost && task.totalcost !== '0'
47
- ? `$${task.totalcost}`
48
- : '$0 (no charge)';
72
+ const state = getTaskState(task);
73
+ // Shows the charge Wiro reports for the task.
74
+ const chargedUsd = task.chargedcost === null || task.chargedcost === undefined || task.chargedcost === ''
75
+ ? null
76
+ : Number(task.chargedcost);
77
+ const charged = chargedUsd !== null && Number.isFinite(chargedUsd) && chargedUsd > 0
78
+ ? formatTaskCost(task)
79
+ : null;
80
+ // A successful task shows its list price until its charge is recorded.
81
+ const awaiting = awaitingCharge(task);
82
+ // No worker took a task cancelled while queued, so it never ran.
83
+ const neverRan = state === 'cancelled' && charged === null && cancelledWhileQueued(task);
84
+ if (state === 'completed') {
49
85
  lines.push(`**Result:** Success`);
50
- lines.push(`**Cost:** ${cost}`);
86
+ lines.push(`**Cost:** ${awaiting
87
+ ? `$${Number(task.totalcost)} list price; check again in a moment for the charged amount`
88
+ : formatTaskCost(task) ?? '$0 (no charge)'}`);
89
+ }
90
+ else if (state === 'failed') {
91
+ lines.push(`**Result:** Failed${task.pexit ? ` (exit code: ${task.pexit})` : ''}`);
92
+ lines.push(`**Cost:** ${charged ?? '$0 (failed tasks are not charged)'}`);
51
93
  }
52
- else if (task.pexit) {
53
- lines.push(`**Result:** Failed (exit code: ${task.pexit})`);
54
- lines.push(`**Cost:** $0 (failed tasks are not charged)`);
94
+ else if (state === 'cancelled') {
95
+ lines.push(`**Result:** Cancelled`);
96
+ lines.push(`**Cost:** ${charged ?? (neverRan
97
+ ? '$0 (cancelled while queued, not charged)'
98
+ : '$0 so far (a task stopped while running can still be charged when its work ends)')}`);
55
99
  }
56
100
  else {
57
101
  lines.push(`**Result:** In progress`);
@@ -60,21 +104,25 @@ export function registerGetTaskPrice(server, client) {
60
104
  if (task.elapsedseconds) {
61
105
  lines.push(`**Duration:** ${task.elapsedseconds}s`);
62
106
  }
63
- const state = getTaskState(task);
64
107
  const structuredTask = toStructuredTaskResult(task, {
65
108
  taskid,
66
109
  tasktoken,
67
110
  });
68
111
  const successful = state === 'completed';
69
112
  const terminal = successful || state === 'failed' || state === 'cancelled';
113
+ // Work a cancelled task had already started can still be charged when it
114
+ // ends, so with no charge yet it is not known whether it will be billed.
115
+ const pendingCancel = state === 'cancelled' && charged === null && !neverRan;
70
116
  return {
71
117
  content: [{ type: 'text', text: lines.join('\n') }],
72
118
  structuredContent: {
73
119
  state,
74
120
  task: structuredTask.task,
75
- billed: terminal ? successful : null,
76
- costUsd: terminal
77
- ? (successful ? Number(task.totalcost || 0) : 0)
121
+ billed: terminal && !pendingCancel ? successful || charged !== null : null,
122
+ costUsd: terminal && !awaiting
123
+ ? (chargedUsd !== null && Number.isFinite(chargedUsd)
124
+ ? chargedUsd
125
+ : (successful ? Number(task.totalcost || 0) : 0))
78
126
  : null,
79
127
  ...(structuredTask.nextAction
80
128
  ? { nextAction: structuredTask.nextAction }
@@ -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 +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,EAEL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAYtB,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAgH3E"}
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,EAML,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AActB,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAiI3E"}