@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.
- package/README.md +183 -16
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +126 -24
- package/dist/client.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +29 -0
- package/dist/instructions.js.map +1 -0
- package/dist/playbooks.d.ts +8 -0
- package/dist/playbooks.d.ts.map +1 -0
- package/dist/playbooks.js +667 -0
- package/dist/playbooks.js.map +1 -0
- package/dist/prompts.d.ts +4 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +133 -0
- package/dist/prompts.js.map +1 -0
- package/dist/server.d.ts +15 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -7
- package/dist/server.js.map +1 -1
- package/dist/tools/apply-agent-skills.d.ts +4 -0
- package/dist/tools/apply-agent-skills.d.ts.map +1 -0
- package/dist/tools/apply-agent-skills.js +601 -0
- package/dist/tools/apply-agent-skills.js.map +1 -0
- package/dist/tools/cancel-agent-message.d.ts +4 -0
- package/dist/tools/cancel-agent-message.d.ts.map +1 -0
- package/dist/tools/cancel-agent-message.js +126 -0
- package/dist/tools/cancel-agent-message.js.map +1 -0
- package/dist/tools/cancel-task.js +3 -3
- package/dist/tools/cancel-task.js.map +1 -1
- package/dist/tools/clone-workflow.d.ts +4 -0
- package/dist/tools/clone-workflow.d.ts.map +1 -0
- package/dist/tools/clone-workflow.js +83 -0
- package/dist/tools/clone-workflow.js.map +1 -0
- package/dist/tools/connect-agent-oauth.d.ts +4 -0
- package/dist/tools/connect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/connect-agent-oauth.js +508 -0
- package/dist/tools/connect-agent-oauth.js.map +1 -0
- package/dist/tools/control-agent.d.ts +4 -0
- package/dist/tools/control-agent.d.ts.map +1 -0
- package/dist/tools/control-agent.js +289 -0
- package/dist/tools/control-agent.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +100 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +102 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-agent-session.d.ts +6 -0
- package/dist/tools/delete-agent-session.d.ts.map +1 -0
- package/dist/tools/delete-agent-session.js +134 -0
- package/dist/tools/delete-agent-session.js.map +1 -0
- package/dist/tools/delete-agent.d.ts +4 -0
- package/dist/tools/delete-agent.d.ts.map +1 -0
- package/dist/tools/delete-agent.js +145 -0
- package/dist/tools/delete-agent.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +4 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +77 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/deploy-agent.d.ts +4 -0
- package/dist/tools/deploy-agent.d.ts.map +1 -0
- package/dist/tools/deploy-agent.js +463 -0
- package/dist/tools/deploy-agent.js.map +1 -0
- package/dist/tools/disconnect-agent-oauth.d.ts +4 -0
- package/dist/tools/disconnect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/disconnect-agent-oauth.js +118 -0
- package/dist/tools/disconnect-agent-oauth.js.map +1 -0
- package/dist/tools/get-account.d.ts +4 -0
- package/dist/tools/get-account.d.ts.map +1 -0
- package/dist/tools/get-account.js +112 -0
- package/dist/tools/get-account.js.map +1 -0
- package/dist/tools/get-agent-activity.d.ts +4 -0
- package/dist/tools/get-agent-activity.d.ts.map +1 -0
- package/dist/tools/get-agent-activity.js +383 -0
- package/dist/tools/get-agent-activity.js.map +1 -0
- package/dist/tools/get-agent-conversation.d.ts +4 -0
- package/dist/tools/get-agent-conversation.d.ts.map +1 -0
- package/dist/tools/get-agent-conversation.js +228 -0
- package/dist/tools/get-agent-conversation.js.map +1 -0
- package/dist/tools/get-agent-message.d.ts +4 -0
- package/dist/tools/get-agent-message.d.ts.map +1 -0
- package/dist/tools/get-agent-message.js +68 -0
- package/dist/tools/get-agent-message.js.map +1 -0
- package/dist/tools/get-agent-template.d.ts +4 -0
- package/dist/tools/get-agent-template.d.ts.map +1 -0
- package/dist/tools/get-agent-template.js +128 -0
- package/dist/tools/get-agent-template.js.map +1 -0
- package/dist/tools/get-model-schema.d.ts +5 -1
- package/dist/tools/get-model-schema.d.ts.map +1 -1
- package/dist/tools/get-model-schema.js +138 -8
- package/dist/tools/get-model-schema.js.map +1 -1
- package/dist/tools/get-my-agent.d.ts +4 -0
- package/dist/tools/get-my-agent.d.ts.map +1 -0
- package/dist/tools/get-my-agent.js +117 -0
- package/dist/tools/get-my-agent.js.map +1 -0
- package/dist/tools/get-playbook.d.ts +3 -0
- package/dist/tools/get-playbook.d.ts.map +1 -0
- package/dist/tools/get-playbook.js +50 -0
- package/dist/tools/get-playbook.js.map +1 -0
- package/dist/tools/get-task-price.d.ts +1 -1
- package/dist/tools/get-task-price.d.ts.map +1 -1
- package/dist/tools/get-task-price.js +64 -16
- package/dist/tools/get-task-price.js.map +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +26 -9
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/get-workflow.d.ts +9 -0
- package/dist/tools/get-workflow.d.ts.map +1 -0
- package/dist/tools/get-workflow.js +105 -0
- package/dist/tools/get-workflow.js.map +1 -0
- package/dist/tools/index.d.ts +63 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +131 -14
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kill-task.d.ts.map +1 -1
- package/dist/tools/kill-task.js +10 -6
- package/dist/tools/kill-task.js.map +1 -1
- package/dist/tools/list-agent-skills.d.ts +4 -0
- package/dist/tools/list-agent-skills.d.ts.map +1 -0
- package/dist/tools/list-agent-skills.js +242 -0
- package/dist/tools/list-agent-skills.js.map +1 -0
- package/dist/tools/list-agent-templates.d.ts +4 -0
- package/dist/tools/list-agent-templates.d.ts.map +1 -0
- package/dist/tools/list-agent-templates.js +110 -0
- package/dist/tools/list-agent-templates.js.map +1 -0
- package/dist/tools/list-my-agents.d.ts +4 -0
- package/dist/tools/list-my-agents.d.ts.map +1 -0
- package/dist/tools/list-my-agents.js +93 -0
- package/dist/tools/list-my-agents.js.map +1 -0
- package/dist/tools/list-studio-results.d.ts +4 -0
- package/dist/tools/list-studio-results.d.ts.map +1 -0
- package/dist/tools/list-studio-results.js +95 -0
- package/dist/tools/list-studio-results.js.map +1 -0
- package/dist/tools/list-tasks.d.ts.map +1 -1
- package/dist/tools/list-tasks.js +7 -5
- package/dist/tools/list-tasks.js.map +1 -1
- package/dist/tools/list-workflow-runs.d.ts +4 -0
- package/dist/tools/list-workflow-runs.d.ts.map +1 -0
- package/dist/tools/list-workflow-runs.js +110 -0
- package/dist/tools/list-workflow-runs.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +4 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +143 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/manage-agent-billing.d.ts +4 -0
- package/dist/tools/manage-agent-billing.d.ts.map +1 -0
- package/dist/tools/manage-agent-billing.js +788 -0
- package/dist/tools/manage-agent-billing.js.map +1 -0
- package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
- package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
- package/dist/tools/manage-agent-custom-skill.js +531 -0
- package/dist/tools/manage-agent-custom-skill.js.map +1 -0
- package/dist/tools/recommend-model.d.ts.map +1 -1
- package/dist/tools/recommend-model.js +6 -5
- package/dist/tools/recommend-model.js.map +1 -1
- package/dist/tools/resume-workflow-run.d.ts +4 -0
- package/dist/tools/resume-workflow-run.d.ts.map +1 -0
- package/dist/tools/resume-workflow-run.js +69 -0
- package/dist/tools/resume-workflow-run.js.map +1 -0
- package/dist/tools/run-model.d.ts.map +1 -1
- package/dist/tools/run-model.js +40 -4
- package/dist/tools/run-model.js.map +1 -1
- package/dist/tools/run-workflow.d.ts +6 -0
- package/dist/tools/run-workflow.d.ts.map +1 -0
- package/dist/tools/run-workflow.js +132 -0
- package/dist/tools/run-workflow.js.map +1 -0
- package/dist/tools/save-workflow-from-agent.d.ts +4 -0
- package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
- package/dist/tools/save-workflow-from-agent.js +280 -0
- package/dist/tools/save-workflow-from-agent.js.map +1 -0
- package/dist/tools/schemas.d.ts +182 -115
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +26 -6
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/search-models.d.ts.map +1 -1
- package/dist/tools/search-models.js +9 -6
- package/dist/tools/search-models.js.map +1 -1
- package/dist/tools/send-agent-message.d.ts +4 -0
- package/dist/tools/send-agent-message.d.ts.map +1 -0
- package/dist/tools/send-agent-message.js +156 -0
- package/dist/tools/send-agent-message.js.map +1 -0
- package/dist/tools/set-agent-credentials.d.ts +4 -0
- package/dist/tools/set-agent-credentials.d.ts.map +1 -0
- package/dist/tools/set-agent-credentials.js +540 -0
- package/dist/tools/set-agent-credentials.js.map +1 -0
- package/dist/tools/update-agent.d.ts +4 -0
- package/dist/tools/update-agent.d.ts.map +1 -0
- package/dist/tools/update-agent.js +179 -0
- package/dist/tools/update-agent.js.map +1 -0
- package/dist/tools/update-workflow.d.ts +201 -0
- package/dist/tools/update-workflow.d.ts.map +1 -0
- package/dist/tools/update-workflow.js +168 -0
- package/dist/tools/update-workflow.js.map +1 -0
- package/dist/tools/upload-file.d.ts.map +1 -1
- package/dist/tools/upload-file.js +12 -7
- package/dist/tools/upload-file.js.map +1 -1
- package/dist/tools/wait-for-task.d.ts.map +1 -1
- package/dist/tools/wait-for-task.js +20 -2
- package/dist/tools/wait-for-task.js.map +1 -1
- package/dist/tools/wait-for-workflow-run.d.ts +259 -0
- package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
- package/dist/tools/wait-for-workflow-run.js +190 -0
- package/dist/tools/wait-for-workflow-run.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/agent-catalog.d.ts +1256 -0
- package/dist/utils/agent-catalog.d.ts.map +1 -0
- package/dist/utils/agent-catalog.js +387 -0
- package/dist/utils/agent-catalog.js.map +1 -0
- package/dist/utils/agent-config.d.ts +443 -0
- package/dist/utils/agent-config.d.ts.map +1 -0
- package/dist/utils/agent-config.js +1676 -0
- package/dist/utils/agent-config.js.map +1 -0
- package/dist/utils/agent-message.d.ts +112 -0
- package/dist/utils/agent-message.d.ts.map +1 -0
- package/dist/utils/agent-message.js +243 -0
- package/dist/utils/agent-message.js.map +1 -0
- package/dist/utils/agent-targets.d.ts +76 -0
- package/dist/utils/agent-targets.d.ts.map +1 -0
- package/dist/utils/agent-targets.js +412 -0
- package/dist/utils/agent-targets.js.map +1 -0
- package/dist/utils/agent-turns.d.ts +354 -0
- package/dist/utils/agent-turns.d.ts.map +1 -0
- package/dist/utils/agent-turns.js +660 -0
- package/dist/utils/agent-turns.js.map +1 -0
- package/dist/utils/api.d.ts +40 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +111 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/format.d.ts +65 -2
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +583 -81
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/json-schema-dialect.d.ts +8 -1
- package/dist/utils/json-schema-dialect.d.ts.map +1 -1
- package/dist/utils/json-schema-dialect.js +23 -1
- package/dist/utils/json-schema-dialect.js.map +1 -1
- package/dist/utils/media.d.ts +28 -0
- package/dist/utils/media.d.ts.map +1 -0
- package/dist/utils/media.js +65 -0
- package/dist/utils/media.js.map +1 -0
- package/dist/utils/poll.d.ts +39 -0
- package/dist/utils/poll.d.ts.map +1 -0
- package/dist/utils/poll.js +111 -0
- package/dist/utils/poll.js.map +1 -0
- package/dist/utils/remote-file.js +2 -2
- package/dist/utils/remote-file.js.map +1 -1
- package/dist/utils/structured.d.ts +4 -0
- package/dist/utils/structured.d.ts.map +1 -1
- package/dist/utils/structured.js +23 -7
- package/dist/utils/structured.js.map +1 -1
- package/dist/utils/studio-runs.d.ts +87 -0
- package/dist/utils/studio-runs.d.ts.map +1 -0
- package/dist/utils/studio-runs.js +167 -0
- package/dist/utils/studio-runs.js.map +1 -0
- package/dist/utils/user-agent.d.ts +1199 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +897 -0
- package/dist/utils/user-agent.js.map +1 -0
- package/dist/utils/workflow-agent.d.ts +151 -0
- package/dist/utils/workflow-agent.d.ts.map +1 -0
- package/dist/utils/workflow-agent.js +292 -0
- package/dist/utils/workflow-agent.js.map +1 -0
- package/dist/utils/workflow-artifacts.d.ts +160 -0
- package/dist/utils/workflow-artifacts.d.ts.map +1 -0
- package/dist/utils/workflow-artifacts.js +801 -0
- package/dist/utils/workflow-artifacts.js.map +1 -0
- package/dist/utils/workflow-save.d.ts +120 -0
- package/dist/utils/workflow-save.d.ts.map +1 -0
- package/dist/utils/workflow-save.js +728 -0
- package/dist/utils/workflow-save.js.map +1 -0
- package/dist/utils/workflow.d.ts +564 -0
- package/dist/utils/workflow.d.ts.map +1 -0
- package/dist/utils/workflow.js +712 -0
- package/dist/utils/workflow.js.map +1 -0
- package/dist/utils/workspace.d.ts +38 -0
- package/dist/utils/workspace.d.ts.map +1 -0
- package/dist/utils/workspace.js +90 -0
- package/dist/utils/workspace.js.map +1 -0
- 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:
|
|
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
|
[](https://www.npmjs.com/package/@wiro-ai/wiro-mcp) [](#quick-start) [](https://modelcontextprotocol.io/) [](./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
|
|
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` |
|
|
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` |
|
|
180
|
-
| `upload_file` | Upload a file from a public http(s) URL (up to
|
|
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
|
-
|
|
196
|
-
|
|
197
|
-
`
|
|
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
|
|
311
|
-
| `WiroClient` | API client with both auth types |
|
|
312
|
-
| `registerTools(server, client)` |
|
|
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>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,IAAI,EACL,MAAM,YAAY,CAAC;AAIpB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,IAAI,EACJ,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC;
|
|
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
|
+
' ': ' ',
|
|
27
|
+
'<': '<',
|
|
28
|
+
'>': '>',
|
|
29
|
+
'"': '"',
|
|
30
|
+
''': '\'',
|
|
31
|
+
'&': '&',
|
|
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. "
|
|
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. "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,UAAU,CAAC;AAa3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA8BzD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAClD,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AACzC,MAAM,2BAA2B,GAAG,0CAA0C;MAC1E,2DAA2D,CAAC;AA8BhE,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,IAAI,CAAU;IAEvB,YAAY,MAAc,EAAE,YAAoB,EAAE,IAAa;QAC7D,KAAK,CAAC,kBAAkB,MAAM,KAAK,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,SAAS,CAAS;IAClB,UAAU,CAAsB;IAChC,SAAS,CAAW;IAE7B,YAAY,SAAiB,EAAE,UAA+B,EAAE,SAAmB;QACjF,KAAK,CAAC,wBAAwB,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,UAAU,CAAsB;IAChC,SAAS,CAAW;IAE7B,YAAY,OAAe,EAAE,UAA+B,EAAE,SAAmB;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACJ,MAAM,CAAS;IACf,SAAS,CAAU;IACnB,OAAO,CAAS;IAChB,YAAY,CAAuB;IACnC,iBAAiB,CAAS;IAC3B,QAAQ,CAA8B;IAEtD,YACE,MAAc,EACd,SAAkB,EAClB,OAAgB,EAChB,UAA6B,EAAE;QAE/B,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAC;QAClF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAC1D,CAAC;IAED,wEAAwE;IACxE,gCAAgC;IACxB,UAAU,CAAC,MAAc,EAAE,YAAoB;QACrD,MAAM,aAAa,GAAG,MAAM,KAAK,GAAG;eAC/B,IAAI,CAAC,QAAQ,KAAK,aAAa;eAC/B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,IAAI,YAAY,CACrB,MAAM,EACN,YAAY,EACZ,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CACnD,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,MAAM,OAAO,GAA2B;YACtC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM;iBACrB,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;iBACjC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;iBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;YACnC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG;gBACd,SAAS;gBACT,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAC1B,IAAI,CAAC,MAAM;gBACX,QAAQ;aACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/D,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;YAC9C,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM;iBACvC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;iBACpD,MAAM,CAAC,OAAO,CAAC;iBACf,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAY,EACZ,IAA6B,EAC7B,MAAoB;QAEpB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAA6B,EAAE;QAChD,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;YAChC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;YACnC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW;YAChC,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACxD,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAmB,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,OAAO,CAAkB,eAAe,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,MAAM,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAqB,cAAc,EAAE;YACtD,SAAS,EAAE,cAAc;YACzB,WAAW,EAAE,gBAAgB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,MAA+B,EAC/B,MAAoB;QAEpB,MAAM,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,QAAQ,cAAc,IAAI,gBAAgB,EAAE,EAC5C,MAAM,EACN,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAmB,EAAE,MAAoB;QACrD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACpD,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAqB,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CACb,SAA0B,EAAE,EAC5B,MAAoB;QAEpB,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;YAChC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SAClC,CAAC;QACF,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAmB,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAA4B,EAC5B,MAAoB;QAEpB,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAE9B,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9E,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAA4B,EAC5B,MAAoB;QAEpB,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACjC,CAAC;aAAM,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,SAAS,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,QAAiB;QACjD,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7F,MAAM,YAAY,GAAG,QAAQ;eACxB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eACvC,QAAQ,CAAC;QAEd,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAE5C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,cAAc,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAA4B,EAC5B,SAAS,GAAG,eAAe,EAC3B,UAA8B,EAAE;QAEhC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB;eACpD,8BAA8B,CAAC;QACpC,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,UAA0C,CAAC;QAC/C,IAAI,SAAkB,CAAC;QAEvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChE,UAAU,GAAG,MAAM,CAAC;gBAEpB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;2BAChE,4BAA4B,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACpC,CAAC;gBAED,iBAAiB,GAAG,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;oBAClC,OAAO;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBAClC,CAAC,CAAC;gBAEH,IAAK,iBAAuC,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1E,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC5B,MAAM,gBAAgB,EAAE,CAAC;gBAC3B,CAAC;gBACD,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;oBAC5B,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM;gBACR,CAAC;gBAED,SAAS,GAAG,KAAK,CAAC;gBAClB,iBAAiB,IAAI,CAAC,CAAC;gBAEvB,IAAI,KAAK,YAAY,YAAY;uBAC5B,KAAK,CAAC,MAAM,IAAI,GAAG;uBACnB,KAAK,CAAC,MAAM,GAAG,GAAG;uBAClB,KAAK,CAAC,MAAM,KAAK,GAAG;uBACpB,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC1B,MAAM,IAAI,gBAAgB,CACxB,wCAAwC,KAAK,CAAC,MAAM,EAAE;0BAClD,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACzC,UAAU,EACV,KAAK,CACN,CAAC;gBACJ,CAAC;gBAED,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;oBAC9C,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,iBAAiB,iBAAiB,EAC9D,UAAU,EACV,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YAED,MAAM,kBAAkB,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,kBAAkB,IAAI,CAAC;gBAAE,MAAM;YAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc;mBAClC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;YAC7C,MAAM,KAAK,CACT,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EACtC,OAAO,CAAC,MAAM,CACf,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AAED,SAAS,sBAAsB,CAAC,IAA4B;IAC1D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,SAAS,GAAG,KAAK;QAAE,OAAO,kBAAkB,CAAC;IACjD,IAAI,SAAS,GAAG,KAAK;QAAE,OAAO,oBAAoB,CAAC;IACnD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,MAAoB;IAC1C,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,gBAAgB,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC7C,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAEtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAoC,CAAC;QAEzC,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,YAAqC,EACrC,SAAiB;IAMjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,aAAa,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACrD,IAAI,YAAY,EAAE,OAAO,EAAE,CAAC;QAC1B,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC1B,OAAO,EAAE,GAAG,EAAE;YACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,YAAY,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|