@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
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Wiro MCP Server
6
6
 
7
- Official MCP server for Wiro AI: search, price and run image, video, audio and LLM models from Cursor, Claude Code, Claude Desktop, Windsurf and any other MCP client.
7
+ Official MCP server for Wiro AI: run image, video, audio and LLM models, build and run workflows, and deploy and talk to AI agents from Cursor, Claude Code, Claude Desktop, Windsurf and any other MCP client.
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/@wiro-ai/wiro-mcp?style=for-the-badge&color=111111)](https://www.npmjs.com/package/@wiro-ai/wiro-mcp) [![Node.js 20+](https://img.shields.io/badge/Node.js-20%2B-111111?style=for-the-badge&color=111111)](#quick-start) [![MCP server](https://img.shields.io/badge/MCP-server-111111?style=for-the-badge&color=111111)](https://modelcontextprotocol.io/) [![License: MIT](https://img.shields.io/badge/license-MIT-111111?style=for-the-badge&color=111111)](./LICENSE)
10
10
 
@@ -14,7 +14,13 @@ Official MCP server for Wiro AI: search, price and run image, video, audio and L
14
14
 
15
15
  </div>
16
16
 
17
- `@wiro-ai/wiro-mcp` is a TypeScript [Model Context Protocol](https://modelcontextprotocol.io/) server that runs locally over stdio with `npx`. Its 13 tools let an AI assistant search the Wiro AI model catalog, read a model's parameters and price, run it and wait for the result, upload input files, browse past tasks and search the Wiro AI docs. The hosted server at `https://mcp.wiro.ai/v1` serves the same tools with nothing to install.
17
+ `@wiro-ai/wiro-mcp` is a TypeScript [Model Context Protocol](https://modelcontextprotocol.io/) server that runs locally over stdio with `npx`. Its tools are grouped in three sets:
18
+
19
+ - **Models**: search the Wiro AI model catalog, read a model's parameters and price, run it and wait for the result, upload input files and browse past tasks.
20
+ - **Workflows**: build multi-step workflows that chain models, run them, resume failed runs, browse the public gallery, and design workflows together with the Workflow Agent.
21
+ - **Agents**: talk to Studio, the creative agent that runs models for you, and deploy, configure, run and message your own agents built from templates or from scratch.
22
+
23
+ Playbooks explain each job step by step, so the assistant knows the order of calls, what costs money and what needs your approval. The hosted server at `https://mcp.wiro.ai/v1` serves the same tools with nothing to install.
18
24
 
19
25
  ## Quick Start
20
26
 
@@ -130,6 +136,8 @@ Store `WIRO_MCP_AUTH` (your API key, or `API_KEY:API_SECRET`) in `~/.hermes/.env
130
136
 
131
137
  Ask your AI assistant:
132
138
 
139
+ **Models**
140
+
133
141
  - *"Generate a photorealistic image of a mountain lake at sunset"*
134
142
  - *"What video generation models are available on Wiro?"*
135
143
  - *"Show me the parameters for google/veo3-1"*
@@ -137,6 +145,20 @@ Ask your AI assistant:
137
145
  - *"Check the status of my last task"*
138
146
  - *"Show my latest productions and open the newest result"*
139
147
 
148
+ **Workflows**
149
+
150
+ - *"Build a workflow that turns a product photo into a short ad video, then run it on this photo"*
151
+ - *"Find a public workflow for podcast covers and run it with my show's name"*
152
+ - *"Ask the Workflow Agent to add an upscale step to my product ad workflow and save it"*
153
+ - *"Why did my last workflow run fail? Resume it if it can be resumed"*
154
+
155
+ **Agents**
156
+
157
+ - *"Ask Studio for three logo ideas for a coffee shop"*
158
+ - *"Which agent templates can manage Instagram? What does each plan cost?"*
159
+ - *"Deploy the Instagram manager agent on the Starter plan and tell me what it still needs"*
160
+ - *"Tell my support agent to summarise today's tickets"*
161
+
140
162
  ## Authentication
141
163
 
142
164
  Wiro AI supports two authentication types, chosen when you create a project:
@@ -164,11 +186,13 @@ The hosted server takes the same credentials as a bearer token:
164
186
 
165
187
  ## Available Tools
166
188
 
189
+ ### Models
190
+
167
191
  | Tool | Description |
168
192
  |------|-------------|
169
193
  | `search_models` | Search and browse AI models by keyword, category, or owner |
170
- | `get_model_schema` | Get full parameter schema and pricing for any model |
171
- | `recommend_model` | Describe what you want to build, get model recommendations by relevance |
194
+ | `get_model_schema` | Get full parameter schema and pricing for any model, or the parameters and output ports of a workflow utility |
195
+ | `recommend_model` | Find models for a goal from two or three key words, best matches first |
172
196
  | `explore` | Browse curated models grouped by category, no parameters needed |
173
197
  | `run_model` | Run any model, waiting up to 45s by default before it returns a recoverable task token |
174
198
  | `wait_for_task` | Continue waiting for an existing task without submitting or billing a duplicate run |
@@ -176,14 +200,124 @@ The hosted server takes the same credentials as a bearer token:
176
200
  | `list_tasks` | Browse authenticated task history across conversations, then continue with `get_task` |
177
201
  | `get_task_price` | Get the cost of a completed task |
178
202
  | `cancel_task` | Cancel a queued task |
179
- | `kill_task` | Kill a running task |
180
- | `upload_file` | Upload a file from a public http(s) URL (up to 200 MB) for use as model input |
181
- | `search_docs` | Search the Wiro documentation for guides and API references |
203
+ | `kill_task` | Stop a queued or running task |
204
+ | `upload_file` | Upload a file from a public http(s) URL (up to about 100 MB) for use as model input |
182
205
 
183
206
  For long generations, `run_model` returns the existing task ID and token when its
184
207
  wait budget expires. The assistant must continue with `wait_for_task`; retrying
185
208
  `run_model` creates a separate billable task.
186
209
 
210
+ ### Workflows
211
+
212
+ A workflow chains models and built-in utility steps into one graph with its own
213
+ inputs and outputs. Every model step is charged like a normal model run when it
214
+ finishes. Wiro fills a model input you leave out with the model's default, so the
215
+ save result lists what it filled, and a graph can be at most 40 KB of JSON.
216
+
217
+ | Tool | Description |
218
+ |------|-------------|
219
+ | `list_workflows` | List the workflows in your workspace, or search the public gallery by text, tag or model |
220
+ | `get_workflow` | Read a workflow's inputs, outputs and step graph |
221
+ | `create_workflow` | Save a new workflow from a step graph. Wiro checks it against the live model catalog and returns every problem it finds at once |
222
+ | `update_workflow` | Edit a workflow's title, description, tags or graph without overwriting newer changes; a new graph is saved only after you confirm a summary of the change |
223
+ | `clone_workflow` | Copy a public workflow into your workspace |
224
+ | `delete_workflow` | Delete a workflow, after your confirmation |
225
+ | `run_workflow` | Run a workflow and wait for its outputs; can stop after a chosen step to test the first steps |
226
+ | `wait_for_workflow_run` | Keep waiting on a run, read its outputs, or see why a step failed |
227
+ | `resume_workflow_run` | Continue a failed or stopped run without paying again for finished steps |
228
+ | `list_workflow_runs` | Browse past and current runs, including runs started on wiro.ai |
229
+ | `save_workflow_from_agent` | Save a workflow the Workflow Agent proposed, as a new workflow, or onto an existing one after you confirm a summary of the change |
230
+
231
+ The **Workflow Agent** designs workflows with you in plain language: talk to it
232
+ with `send_agent_message` and `agent: "workflow-agent"`, attach an existing
233
+ workflow to edit, then save its proposal with `save_workflow_from_agent`.
234
+ Conversations started through this server belong to the connected project and
235
+ are separate from your Workflow Agent chats on wiro.ai.
236
+
237
+ ### Agents
238
+
239
+ Talk to any Wiro agent with one set of tools. `agent` is `"studio"`, `"workflow-agent"`
240
+ or the id of one of your own agents.
241
+
242
+ | Tool | Description |
243
+ |------|-------------|
244
+ | `send_agent_message` | Send a message and wait for the reply, with any media, workflows or model runs it produced |
245
+ | `get_agent_message` | Keep waiting on a reply, or read one again |
246
+ | `get_agent_conversation` | List conversations, or read one conversation's history |
247
+ | `cancel_agent_message` | Stop a reply that is still being written |
248
+ | `delete_agent_session` | Delete a conversation and the agent's memory of it, after your confirmation |
249
+ | `list_studio_results` | List the images, videos and other results Studio generated for you |
250
+
251
+ **Studio** is Wiro's creative agent: it picks and runs models for you and charges
252
+ your wallet after each reply. Your own agents run on a monthly plan with credits.
253
+
254
+ | Tool | Description |
255
+ |------|-------------|
256
+ | `list_agent_templates` | Browse ready-made agent templates and their monthly prices |
257
+ | `get_agent_template` | Read a template's skills, plans, and the accounts and keys it needs |
258
+ | `list_agent_skills` | Browse the skills an agent can have, and what each one needs to work |
259
+ | `deploy_agent` | Deploy an agent from a template or build one from skills; shows the price and asks before charging |
260
+ | `list_my_agents` | List your agents with their status, plan and credits |
261
+ | `get_my_agent` | Read one agent's setup, plan and credits; can wait until it is running |
262
+ | `control_agent` | Start, stop or restart an agent |
263
+ | `update_agent` | Change an agent's name, description, time zone, models and chat commands |
264
+ | `apply_agent_skills` | Turn skills on or off; shows the price change and asks before charging |
265
+ | `set_agent_credentials` | Save the keys, tokens and settings an agent's skills and channels need, such as a Telegram bot token or a Gmail app password |
266
+ | `connect_agent_oauth` | Connect sign-in accounts such as HubSpot or X; you approve the connection in your browser. Some services need your own app keys or a token first |
267
+ | `disconnect_agent_oauth` | Disconnect a connected account, after your confirmation |
268
+ | `manage_agent_custom_skill` | Add, edit, schedule, restore or remove an agent's own instructions and scheduled tasks |
269
+ | `manage_agent_billing` | Subscribe, upgrade to Pro, cancel, renew or buy extra credits from your wallet, after your confirmation |
270
+ | `get_agent_activity` | Read an agent's credit usage and activity logs |
271
+ | `delete_agent` | Delete an agent, after your confirmation |
272
+
273
+ ### Account and guides
274
+
275
+ | Tool | Description |
276
+ |------|-------------|
277
+ | `get_account` | Show which workspace the connected project belongs to and its wallet balance |
278
+ | `get_playbook` | Step-by-step guides: getting started, models, workflows, workflow graphs, the Workflow Agent, Studio, agents and billing |
279
+ | `search_docs` | Search the Wiro documentation for guides and API references |
280
+
281
+ The server also offers prompts for common jobs (`build_workflow`, `deploy_agent`,
282
+ `create_with_studio`, `talk_to_my_agent`). In clients that support MCP prompts
283
+ they appear as ready-made commands.
284
+
285
+ ### Choosing tool groups
286
+
287
+ All groups are on by default. Some clients work best with fewer tools; set
288
+ `WIRO_TOOLSETS` to a comma-separated list of `models`, `workflows` and `agents`
289
+ to load only those. `get_account`, `get_playbook` and `search_docs` are always
290
+ available, and `workflows` also brings the model search tools it needs. The
291
+ conversation tools for Studio and the Workflow Agent, with
292
+ `save_workflow_from_agent`, come with either `workflows` or `agents`, and each
293
+ prompt appears only when its tools are loaded. If a job needs a tool from a
294
+ group that is not loaded, the server instructions tell the assistant to say so.
295
+
296
+ ```json
297
+ "env": {
298
+ "WIRO_API_KEY": "your-api-key",
299
+ "WIRO_TOOLSETS": "models,workflows"
300
+ }
301
+ ```
302
+
303
+ ### Paid and irreversible actions
304
+
305
+ Running a model or workflow, sending a message to Studio or the Workflow Agent,
306
+ and messages to your own agents (which use the agent's credits) cost money. Agent
307
+ plans, plan changes, credit packs and skill changes are charged to your wallet,
308
+ so those tools first return the price (an estimate for prorated changes such as
309
+ an upgrade to Pro) and only act when called again with `confirm: true` and the
310
+ quote's reference (`confirm_charge_usd` with the approved amount, or the quote's
311
+ `idempotency_key` for skill changes) after you agree. If the price changed in
312
+ between, nothing is charged and you get a new quote. Deleting a workflow, an
313
+ agent, a conversation or an account connection also waits for `confirm: true`,
314
+ and so does replacing a workflow's steps with `update_workflow` or
315
+ `save_workflow_from_agent`: you see a summary of the change first. No tool adds
316
+ funds or takes a card payment: funds are added in the Wiro dashboard, and an
317
+ agent plan paid by card is upgraded or topped up there. The connected project
318
+ decides the workspace: a personal project uses your personal wallet, a team
319
+ project uses the team wallet.
320
+
187
321
  ### LLM-friendly responses
188
322
 
189
323
  All tools publish typed MCP input and output schemas. Successful calls return
@@ -191,10 +325,12 @@ All tools publish typed MCP input and output schemas. Successful calls return
191
325
  that only render text, and MCP resource links for generated media.
192
326
  Model parameters remain catalog-driven: `json` and `json-array` fields are sent
193
327
  as structured values in the same `run_model.params` object as all other inputs.
194
- Use `get_model_schema` as the source of truth for continuation fields.
195
- `previousTaskToken` is the single continuation reference. Send it with exactly
196
- one new `prompt` or non-empty `messages` value for a stateful next turn, or with
197
- `toolOutputs` for a tool-result continuation.
328
+ Use `get_model_schema` as the source of truth for continuation fields. A model
329
+ can continue a conversation only when its schema lists `session_id`: send the
330
+ same `session_id` on every turn, the first one included, with the next
331
+ `prompt`. A turn that ended with tool calls is continued with
332
+ `previousTaskToken`, that turn's task token, and `toolOutputs`, as the turn's
333
+ `nextAction` template shows.
198
334
 
199
335
  LLM task outputs preserve the public Task Detail segment names and casing:
200
336
  `thinking`, `answer`, `function_call`, and `custom_tool_call`, including
@@ -220,7 +356,8 @@ same ordinary `run_model.params` object back:
220
356
  "call_id": "call_01",
221
357
  "output": "<tool result>"
222
358
  }
223
- ]
359
+ ],
360
+ "session_id": "launch-taglines"
224
361
  }
225
362
  }
226
363
  }
@@ -235,7 +372,9 @@ instruction. Some MCP clients expose a `resource_link` as tool metadata instead
235
372
  of previewing it inside the tool card, so the assistant is explicitly told to
236
373
  render images and preserve clickable media links in its user-facing response.
237
374
  The standard resource link and full-resolution URL remain available to every
238
- client; no base64 media payload is required.
375
+ client; no base64 media payload is required. Only files on Wiro's own hosts are
376
+ returned this way. Other links in an agent's reply stay plain links in the text,
377
+ without the delivery instruction.
239
378
 
240
379
  Task responses use the stable states `submitted`, `running`, `completed`,
241
380
  `failed`, and `cancelled`. When more work is required, the response includes an
@@ -264,6 +403,15 @@ Generation chain:
264
403
  Cross-conversation history:
265
404
  `list_tasks → get_task`
266
405
 
406
+ Workflow chain:
407
+ `search_models → get_model_schema → create_workflow → run_workflow → wait_for_workflow_run`
408
+
409
+ Workflow Agent chain:
410
+ `send_agent_message (agent "workflow-agent") → get_agent_message → save_workflow_from_agent → run_workflow`
411
+
412
+ Agent chain:
413
+ `list_agent_templates → get_agent_template → deploy_agent → set_agent_credentials / connect_agent_oauth → control_agent → send_agent_message`
414
+
267
415
  ## Hosted MCP Server
268
416
 
269
417
  Wiro AI also hosts the same tools at `https://mcp.wiro.ai/v1` over streamable HTTP, so nothing has to be installed locally. Send your credentials in the `Authorization` header as shown under [Authentication](#authentication). The [MCP Server documentation](https://wiro.ai/docs/wiro-mcp-server) has setup instructions for each client.
@@ -282,6 +430,10 @@ Wiro AI also hosts the same tools at `https://mcp.wiro.ai/v1` over streamable HT
282
430
  - [Tasks](https://wiro.ai/docs/tasks): task lifecycle, statuses, determining success
283
431
  - [Concurrency Limits](https://wiro.ai/docs/concurrency-limits): concurrent task limits based on balance
284
432
  - [Error Reference](https://wiro.ai/docs/error-reference): error codes and handling
433
+ - [Agents Overview](https://wiro.ai/docs/agent-overview): templates, plans, credits and the agent lifecycle
434
+ - [Agent Builder](https://wiro.ai/docs/agent-builder): build an agent from skills instead of a template
435
+ - [Agent Skills](https://wiro.ai/docs/agent-skills) and [Agent Credentials](https://wiro.ai/docs/agent-credentials): what each skill needs and how accounts are connected
436
+ - [Agent Messaging](https://wiro.ai/docs/agent-messaging): conversations, sessions and replies
285
437
 
286
438
  ## Using as a Library
287
439
 
@@ -307,14 +459,28 @@ const client = new WiroClient(apiKey, apiSecret, undefined, {
307
459
 
308
460
  | Export | Description |
309
461
  |--------|-------------|
310
- | `createMcpServer(client)` | Creates an McpServer with all 13 tools registered |
311
- | `WiroClient` | API client with both auth types |
312
- | `registerTools(server, client)` | Register tools on an existing McpServer |
462
+ | `createMcpServer(client, options?)` | Creates an McpServer with the tools, prompts and server instructions registered. `options.toolsets` picks tool groups and the prompts that use them; `options.instructions` replaces the instructions; `options.wrapTool(tool, handler)` returns the handler to register for each tool, for your own logging or permission checks; `options.maxToolInputElements` caps the array elements and object members one tool call may carry (default 10000, `Infinity` turns the check off) |
463
+ | `WiroClient` | API client with both auth types; `post(path, body)` calls any Wiro API endpoint with the same credentials |
464
+ | `registerTools(server, client, options?)` | Registers the tools on an McpServer you already have, with the same `toolsets` and `wrapTool` options. That server then lists every tool schema, its own tools included, as JSON Schema 2020-12 |
465
+ | `advertiseJsonSchema2020_12(server)` | Makes an McpServer list its tool schemas as JSON Schema 2020-12. Call it when you register single tools from `@wiro-ai/wiro-mcp/tools` instead of using `registerTools` |
466
+ | `withJsonSchema2020_12(transport)` | The same for one transport: `await server.connect(withJsonSchema2020_12(transport))` |
467
+ | `parseToolsets(value)` | Parse a `WIRO_TOOLSETS`-style list such as `"models,agents"` |
313
468
 
314
469
  ```typescript
315
470
  // Import specific components
471
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
316
472
  import { WiroClient } from '@wiro-ai/wiro-mcp/client';
473
+ import { createMcpServer } from '@wiro-ai/wiro-mcp/server';
317
474
  import { registerTools } from '@wiro-ai/wiro-mcp/tools';
475
+
476
+ const client = new WiroClient('your-api-key', 'your-api-secret');
477
+
478
+ // Only the model and workflow tools
479
+ const server = createMcpServer(client, { toolsets: ['models', 'workflows'] });
480
+
481
+ // Or add the model tools to an McpServer you already have
482
+ const myServer = new McpServer({ name: 'my-server', version: '1.0.0' });
483
+ registerTools(myServer, client, { toolsets: ['models'] });
318
484
  ```
319
485
 
320
486
  ## Environment Variables
@@ -324,6 +490,7 @@ import { registerTools } from '@wiro-ai/wiro-mcp/tools';
324
490
  | `WIRO_API_KEY` | Yes | Your Wiro project API key |
325
491
  | `WIRO_API_SECRET` | No | Your Wiro project API secret (for signature auth) |
326
492
  | `WIRO_API_BASE_URL` | No | Override API base URL (default: `https://api.wiro.ai/v1`) |
493
+ | `WIRO_TOOLSETS` | No | Comma-separated tool groups to load: `models`, `workflows`, `agents` (default: all) |
327
494
 
328
495
  ## More from Wiro AI
329
496
 
package/dist/client.d.ts CHANGED
@@ -39,6 +39,12 @@ export declare class TaskPollingError extends Error {
39
39
  readonly lastError?: unknown;
40
40
  constructor(message: string, lastDetail?: TaskDetailResponse, lastError?: unknown);
41
41
  }
42
+ /** True when a value can be a task ID: Wiro task IDs are whole numbers. */
43
+ export declare function isTaskId(value: string): boolean;
44
+ /** True when a whole number is larger than any task ID, so no task has it. */
45
+ export declare function isTaskIdTooLarge(value: string): boolean;
46
+ /** True when a task status answer says the task is not in the key's workspace. */
47
+ export declare function isTaskNotFound(detail?: TaskDetailResponse): boolean;
42
48
  export declare class WiroClient {
43
49
  private readonly apiKey;
44
50
  private readonly apiSecret?;
@@ -47,9 +53,19 @@ export declare class WiroClient {
47
53
  private readonly missingSecretHint;
48
54
  readonly authType: 'signature' | 'apikey-only';
49
55
  constructor(apiKey: string, apiSecret?: string, baseUrl?: string, options?: WiroClientOptions);
56
+ /** A short, non-reversible id of this client's API key, for per-caller bookkeeping. */
57
+ get identity(): string;
50
58
  private toApiError;
51
59
  private getAuthHeaders;
52
60
  private request;
61
+ /**
62
+ * Calls any Wiro API endpoint with this client's credentials, for example
63
+ * `post('/Workflow/List', { scope: 'my' })`. Wiro reports each outcome in the
64
+ * response body, so check `result` on the returned body.
65
+ */
66
+ post<T = Record<string, unknown>>(path: string, body?: Record<string, unknown>, signal?: AbortSignal): Promise<T>;
67
+ /** Same as `post`, for endpoints that take multipart/form-data. */
68
+ postForm<T = Record<string, unknown>>(path: string, form: FormData, signal?: AbortSignal): Promise<T>;
53
69
  searchModels(params?: SearchModelsParams): Promise<ToolListResponse>;
54
70
  explore(): Promise<ExploreResponse>;
55
71
  getModelSchema(model: string): Promise<ToolDetailResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -10,12 +10,65 @@ const SLOW_POLL_INTERVAL = 10000;
10
10
  const DEFAULT_MAX_CONSECUTIVE_ERRORS = 5;
11
11
  const DEFAULT_MISSING_SECRET_HINT = 'This project uses signature-based auth. '
12
12
  + 'Pass its API secret to WiroClient along with the API key.';
13
+ const MAX_UPLOAD_BYTES = Math.floor(0.1 * 1024 ** 3);
14
+ // The upload endpoint unpacks a .zip archive into a folder of its files, and a
15
+ // folder has no single link, so uploadFile does not send one.
16
+ const ARCHIVE_MEDIA_TYPES = new Set([
17
+ 'application/zip',
18
+ 'application/x-zip-compressed',
19
+ 'application/x-zip',
20
+ ]);
21
+ const ARCHIVE_UPLOAD_MESSAGE = 'A .zip archive cannot be uploaded as one file. '
22
+ + 'Pass the archive\'s public URL to the model directly, or upload its files one at a time.';
23
+ const MAX_PAGE_TEXT = 200;
24
+ const PAGE_MARKUP = /<\/?(?:!doctype|html|head|body|title|h[1-6]|center|div|p|pre|hr|br)\b/i;
25
+ const PAGE_ENTITIES = {
26
+ '&nbsp;': ' ',
27
+ '&lt;': '<',
28
+ '&gt;': '>',
29
+ '&quot;': '"',
30
+ '&#39;': '\'',
31
+ '&amp;': '&',
32
+ };
33
+ function pageText(html) {
34
+ return html
35
+ .replace(/<(script|style)\b[\s\S]*?<\/\1\s*>/gi, ' ')
36
+ .replace(/<!--[\s\S]*?-->/g, ' ')
37
+ .replace(/<[^>]*>/g, ' ')
38
+ .replace(/&(?:nbsp|lt|gt|quot|#39|amp);/g, entity => PAGE_ENTITIES[entity] ?? entity)
39
+ .replace(/\s+/g, ' ')
40
+ .trim();
41
+ }
42
+ /**
43
+ * An answer body as an error message shows it. JSON and plain text stay as
44
+ * they are. A web page, such as the error page of a proxy between the client
45
+ * and the API, becomes one short line: its title, or else its text.
46
+ * `responseBody` keeps the full answer.
47
+ */
48
+ function bodyForMessage(body, status) {
49
+ try {
50
+ JSON.parse(body);
51
+ return body;
52
+ }
53
+ catch {
54
+ // Not JSON.
55
+ }
56
+ if (!PAGE_MARKUP.test(body))
57
+ return body;
58
+ const title = pageText(/<title[^>]*>([\s\S]*?)<\/title\s*>/i.exec(body)?.[1] ?? '');
59
+ const full = title || pageText(body);
60
+ // "504 Gateway Time-out" after "Wiro API error 504:" would repeat the code.
61
+ const text = (status !== undefined ? full.replace(new RegExp(`^${status}\\b\\s*:?\\s*`), '') : '') || full;
62
+ if (!text)
63
+ return 'the answer was a web page with no text';
64
+ return text.length > MAX_PAGE_TEXT ? `${text.slice(0, MAX_PAGE_TEXT)}...` : text;
65
+ }
13
66
  export class WiroApiError extends Error {
14
67
  status;
15
68
  responseBody;
16
69
  hint;
17
70
  constructor(status, responseBody, hint) {
18
- super(`Wiro API error ${status}: ${hint ?? responseBody}`);
71
+ super(`Wiro API error ${status}: ${hint ?? bodyForMessage(responseBody, status)}`);
19
72
  this.name = 'WiroApiError';
20
73
  this.status = status;
21
74
  this.responseBody = responseBody;
@@ -44,6 +97,29 @@ export class TaskPollingError extends Error {
44
97
  this.lastError = lastError;
45
98
  }
46
99
  }
100
+ /** True when a value can be a task ID: Wiro task IDs are whole numbers. */
101
+ export function isTaskId(value) {
102
+ return /^\d+$/.test(value.trim());
103
+ }
104
+ // No task ID is larger than this.
105
+ const MAX_TASK_ID = 9223372036854775807n;
106
+ /** True when a whole number is larger than any task ID, so no task has it. */
107
+ export function isTaskIdTooLarge(value) {
108
+ if (!isTaskId(value))
109
+ return false;
110
+ const digits = value.trim().replace(/^0+/, '');
111
+ return digits.length > 19 || BigInt(digits || '0') > MAX_TASK_ID;
112
+ }
113
+ // Task/Detail's answer when no task matches the reference in the key's
114
+ // workspace: an unknown task and another workspace's task get the same one.
115
+ const TASK_NOT_FOUND_ERRORS = ['task-not-founded', 'coretask-not-founded'];
116
+ /** True when a task status answer says the task is not in the key's workspace. */
117
+ export function isTaskNotFound(detail) {
118
+ if (!detail || detail.result)
119
+ return false;
120
+ return (detail.errors ?? [])
121
+ .some(error => TASK_NOT_FOUND_ERRORS.includes(String(error?.message ?? '').trim()));
122
+ }
47
123
  export class WiroClient {
48
124
  apiKey;
49
125
  apiSecret;
@@ -69,6 +145,10 @@ export class WiroClient {
69
145
  this.missingSecretHint = options.missingSecretHint ?? DEFAULT_MISSING_SECRET_HINT;
70
146
  this.authType = apiSecret ? 'signature' : 'apikey-only';
71
147
  }
148
+ /** A short, non-reversible id of this client's API key, for per-caller bookkeeping. */
149
+ get identity() {
150
+ return crypto.createHash('sha256').update(this.apiKey).digest('hex').slice(0, 16);
151
+ }
72
152
  // Without a secret, the only 401 that mentions a signature is a project
73
153
  // that requires signature auth.
74
154
  toApiError(status, responseBody) {
@@ -125,7 +205,37 @@ export class WiroClient {
125
205
  return JSON.parse(text);
126
206
  }
127
207
  catch {
128
- throw new Error(`Invalid JSON response: ${text}`);
208
+ throw new Error(`Invalid JSON response: ${bodyForMessage(text)}`);
209
+ }
210
+ }
211
+ /**
212
+ * Calls any Wiro API endpoint with this client's credentials, for example
213
+ * `post('/Workflow/List', { scope: 'my' })`. Wiro reports each outcome in the
214
+ * response body, so check `result` on the returned body.
215
+ */
216
+ async post(path, body = {}, signal) {
217
+ return this.request(path, body, signal);
218
+ }
219
+ /** Same as `post`, for endpoints that take multipart/form-data. */
220
+ async postForm(path, form, signal) {
221
+ const url = `${this.baseUrl}${path}`;
222
+ const headers = this.getAuthHeaders(new URL(url).pathname);
223
+ delete headers['Content-Type'];
224
+ const response = await fetch(url, {
225
+ method: 'POST',
226
+ headers,
227
+ body: form,
228
+ signal,
229
+ });
230
+ const text = await response.text();
231
+ if (!response.ok) {
232
+ throw this.toApiError(response.status, text);
233
+ }
234
+ try {
235
+ return JSON.parse(text);
236
+ }
237
+ catch {
238
+ throw new Error(`Invalid JSON response: ${bodyForMessage(text)}`);
129
239
  }
130
240
  }
131
241
  async searchModels(params = {}) {
@@ -151,7 +261,7 @@ export class WiroClient {
151
261
  const [cleanslugowner, ...rest] = model.split('/');
152
262
  const cleanslugproject = rest.join('/');
153
263
  if (!cleanslugowner || !cleanslugproject) {
154
- throw new Error('Model must be in "owner/model" format, e.g. "openai/sora-2"');
264
+ throw new Error('Model must be in "owner/model" format, e.g. "google/veo3-1"');
155
265
  }
156
266
  return this.request('/Tool/Detail', {
157
267
  slugowner: cleanslugowner,
@@ -162,7 +272,7 @@ export class WiroClient {
162
272
  const [cleanslugowner, ...rest] = model.split('/');
163
273
  const cleanslugproject = rest.join('/');
164
274
  if (!cleanslugowner || !cleanslugproject) {
165
- throw new Error('Model must be in "owner/model" format, e.g. "openai/sora-2"');
275
+ throw new Error('Model must be in "owner/model" format, e.g. "google/veo3-1"');
166
276
  }
167
277
  return this.request(`/Run/${cleanslugowner}/${cleanslugproject}`, params, signal);
168
278
  }
@@ -216,32 +326,20 @@ export class WiroClient {
216
326
  return this.request('/Task/Kill', body, signal);
217
327
  }
218
328
  async uploadFile(fileUrl, fileName) {
219
- // Public http(s) hosts only; see utils/remote-file.ts.
220
- const remote = await fetchPublicFile(fileUrl);
329
+ // Public http(s) hosts only; see utils/remote-file.ts. The upload endpoint
330
+ // refuses files over 0.1 GiB, so a bigger one is not downloaded at all.
331
+ const remote = await fetchPublicFile(fileUrl, { maxBytes: MAX_UPLOAD_BYTES });
221
332
  const blob = new Blob([remote.data], remote.contentType ? { type: remote.contentType } : {});
333
+ // blob.type is what the upload sends: lowercased, with any parameters.
334
+ if (ARCHIVE_MEDIA_TYPES.has((blob.type.split(';')[0] ?? '').trim())) {
335
+ throw new Error(ARCHIVE_UPLOAD_MESSAGE);
336
+ }
222
337
  const resolvedName = fileName
223
338
  ?? fileUrl.split('/').pop()?.split('?')[0]
224
339
  ?? 'upload';
225
340
  const formData = new FormData();
226
341
  formData.append('file', blob, resolvedName);
227
- const url = `${this.baseUrl}/File/Upload`;
228
- const headers = this.getAuthHeaders(new URL(url).pathname);
229
- delete headers['Content-Type'];
230
- const response = await fetch(url, {
231
- method: 'POST',
232
- headers,
233
- body: formData,
234
- });
235
- const text = await response.text();
236
- if (!response.ok) {
237
- throw this.toApiError(response.status, text);
238
- }
239
- try {
240
- return JSON.parse(text);
241
- }
242
- catch {
243
- throw new Error(`Invalid JSON response: ${text}`);
244
- }
342
+ return this.postForm('/File/Upload', formData);
245
343
  }
246
344
  async waitForTask(task, timeoutMs = DEFAULT_TIMEOUT, options = {}) {
247
345
  if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
@@ -295,6 +393,10 @@ export class WiroClient {
295
393
  }
296
394
  lastError = error;
297
395
  consecutiveErrors += 1;
396
+ // No task matches in this workspace, so asking again cannot find one.
397
+ if (isTaskNotFound(lastDetail)) {
398
+ throw new TaskPollingError('Task not found in this workspace', lastDetail, error);
399
+ }
298
400
  if (error instanceof WiroApiError
299
401
  && error.status >= 400
300
402
  && error.status < 500
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}