@wiro-ai/wiro-mcp 1.5.2 → 1.5.4

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 CHANGED
@@ -14,7 +14,7 @@ Official MCP server for Wiro AI: run image, video, audio and LLM models, build a
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 tools are grouped in three sets:
17
+ `@wiro-ai/wiro-mcp` is a TypeScript [Model Context Protocol](https://modelcontextprotocol.io/) server that runs locally over stdio, with `npx` or [Docker](#docker). Its tools are grouped in three sets:
18
18
 
19
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
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.
@@ -25,7 +25,8 @@ Playbooks explain each job step by step, so the assistant knows the order of cal
25
25
  ## Quick Start
26
26
 
27
27
  Local `npx` and library usage require Node.js 20 or later. The hosted MCP
28
- endpoint does not require a local Node.js installation.
28
+ endpoint and the [Docker image](#docker) do not require a local Node.js
29
+ installation.
29
30
 
30
31
  ### 1. Get API Keys
31
32
 
@@ -159,6 +160,54 @@ Ask your AI assistant:
159
160
  - *"Deploy the Instagram manager agent on the Starter plan and tell me what it still needs"*
160
161
  - *"Tell my support agent to summarise today's tickets"*
161
162
 
163
+ ## Docker
164
+
165
+ Every release is also published on Docker Hub as
166
+ [`wiroai/wiro-mcp`](https://hub.docker.com/r/wiroai/wiro-mcp), for
167
+ `linux/amd64` and `linux/arm64`. The image runs the same stdio server, so you
168
+ need Docker but not Node.js:
169
+
170
+ ```bash
171
+ docker run -i --rm -e WIRO_API_KEY wiroai/wiro-mcp
172
+ ```
173
+
174
+ `-e WIRO_API_KEY` hands the variable from your environment to the container.
175
+ For a project with signature-based auth, add `-e WIRO_API_SECRET` as well.
176
+ `WIRO_TOOLSETS` passes through the same way. Keep `-i`, since the server reads
177
+ its requests from stdin, and leave out `-t`.
178
+
179
+ In a client config, `docker` is the command and the credentials go in `env`.
180
+ This works in Cursor, Claude Desktop and Windsurf:
181
+
182
+ ```json
183
+ {
184
+ "mcpServers": {
185
+ "wiro": {
186
+ "command": "docker",
187
+ "args": ["run", "-i", "--rm", "-e", "WIRO_API_KEY", "-e", "WIRO_API_SECRET", "wiroai/wiro-mcp"],
188
+ "env": {
189
+ "WIRO_API_KEY": "your-api-key",
190
+ "WIRO_API_SECRET": "your-api-secret"
191
+ }
192
+ }
193
+ }
194
+ }
195
+ ```
196
+
197
+ **Claude Code:**
198
+
199
+ ```bash
200
+ claude mcp add wiro -e WIRO_API_KEY=your-api-key -e WIRO_API_SECRET=your-api-secret -- docker run -i --rm -e WIRO_API_KEY -e WIRO_API_SECRET wiroai/wiro-mcp
201
+ ```
202
+
203
+ For an API Key Only project, leave out the `WIRO_API_SECRET` value. Docker only
204
+ passes variables that are set, so the `-e WIRO_API_SECRET` argument can stay.
205
+
206
+ Image tags follow the npm versions: `wiroai/wiro-mcp:<version>` pins a release
207
+ and `latest` is the newest one. A client does not fetch a newer `latest` by
208
+ itself, so run `docker pull wiroai/wiro-mcp` to update. Pulling once before the
209
+ first start also means the client does not wait for the download.
210
+
162
211
  ## Authentication
163
212
 
164
213
  Wiro AI supports two authentication types, chosen when you create a project:
@@ -194,7 +243,7 @@ The hosted server takes the same credentials as a bearer token:
194
243
  | `get_model_schema` | Get full parameter schema and pricing for any model, or the parameters and output ports of a workflow utility |
195
244
  | `recommend_model` | Find models for a goal from two or three key words, best matches first |
196
245
  | `explore` | Browse curated models grouped by category, no parameters needed |
197
- | `run_model` | Run any model, waiting up to 45s by default before it returns a recoverable task token |
246
+ | `run_model` | Run any model, waiting at most 45s from the start of the call before it returns a recoverable task token |
198
247
  | `wait_for_task` | Continue waiting for an existing task without submitting or billing a duplicate run |
199
248
  | `get_task` | Check task status immediately or wait up to 45s with `wait_seconds` |
200
249
  | `list_tasks` | Browse authenticated task history across conversations, then continue with `get_task` |
@@ -519,7 +568,11 @@ registerTools(myServer, client, { toolsets: ['models'] });
519
568
 
520
569
  | Repository | What it is |
521
570
  | --- | --- |
522
- | [Wiro-Plugin](https://github.com/wiroai/Wiro-Plugin) | Wiro AI plugin for Cursor, Claude Code, Gemini CLI and Devin |
571
+ | [Wiro-Plugin](https://github.com/wiroai/Wiro-Plugin) | Wiro AI plugin for Cursor, Claude Code, Gemini CLI, Devin, Antigravity and Kiro |
572
+ | [Wiro-LLM](https://github.com/wiroai/Wiro-LLM) | Vercel AI SDK provider for chat, images, speech, transcription and video, [`@wiro-ai/wiro-llm` on npm](https://www.npmjs.com/package/@wiro-ai/wiro-llm) |
573
+ | [Wiro-Chromium-Extension](https://github.com/wiroai/Wiro-Chromium-Extension) | Wiro AI extension for Chrome, Edge, Opera and Brave |
574
+ | [Wiro-Firefox-Extension](https://github.com/wiroai/Wiro-Firefox-Extension) | Wiro AI add-on for Firefox |
575
+ | [Wiro-Safari-Extension](https://github.com/wiroai/Wiro-Safari-Extension) | Wiro AI extension for Safari on the Mac |
523
576
  | [Swift-QuickStart](https://github.com/wiroai/Swift-QuickStart) | WiroKit, the Wiro AI SDK for iOS |
524
577
  | [Kotlin-QuickStart](https://github.com/wiroai/Kotlin-QuickStart) | WiroKit, the Wiro AI SDK for Android |
525
578
  | [Dart-QuickStart](https://github.com/wiroai/Dart-QuickStart) | Wiro AI SDK for Dart and Flutter, [`wiro` on pub.dev](https://pub.dev/packages/wiro) |
@@ -529,6 +582,17 @@ registerTools(myServer, client, { toolsets: ['models'] });
529
582
  | [Dart-Realtime](https://github.com/wiroai/Dart-Realtime) | Realtime voice AI example for Flutter |
530
583
  | [ReactNative-Realtime](https://github.com/wiroai/ReactNative-Realtime) | Realtime voice AI example for React Native |
531
584
  | [n8n-nodes-wiroai](https://github.com/wiroai/n8n-nodes-wiroai) | Wiro AI nodes for n8n, [`@wiro-ai/n8n-nodes-wiroai` on npm](https://www.npmjs.com/package/@wiro-ai/n8n-nodes-wiroai) |
585
+ | [Wiro-Dify-Plugin](https://github.com/wiroai/Wiro-Dify-Plugin) | Wiro AI plugins for Dify: the LLM gateway as a model provider, plus image, video, speech and music tools |
586
+ | [Wiro-ComfyUI](https://github.com/wiroai/Wiro-ComfyUI) | Wiro AI nodes for ComfyUI |
587
+ | [Wiro-Hermes](https://github.com/wiroai/Wiro-Hermes) | Wiro AI plugins for Hermes Agent: image, video, audio and 3D tools, plus the LLM gateway as a model provider |
588
+ | [Wiro-Zed](https://github.com/wiroai/Wiro-Zed) | Wiro AI MCP server extension for Zed |
589
+ | [Wiro-Action](https://github.com/wiroai/Wiro-Action) | GitHub Action for Wiro AI models and the LLM gateway, [on the GitHub Marketplace](https://github.com/marketplace/actions/wiro-ai-action) |
590
+ | [Wiro-Raycast](https://github.com/wiroai/Wiro-Raycast) | Wiro AI extension for Raycast: image and video generation, LLM chat and model search |
591
+ | [Wiro-WordPress](https://github.com/wiroai/Wiro-WordPress) | Wiro AI plugin for WordPress: featured images, image edits, alt text, narration and SEO suggestions |
592
+ | [Wiro-Obsidian](https://github.com/wiroai/Wiro-Obsidian) | Wiro AI plugin for Obsidian: images, video, speech, music, transcription and text tools |
593
+ | [Wiro-Blender](https://github.com/wiroai/Wiro-Blender) | Wiro AI add-on for Blender: text to 3D, image to 3D and textures |
594
+ | [Wiro-Figma](https://github.com/wiroai/Wiro-Figma) | Wiro AI plugin for Figma: images, vectors, image edits and text |
595
+ | [Wiro-Next-Starter](https://github.com/wiroai/Wiro-Next-Starter) | Next.js starter for Wiro AI: Playground, image, video and audio tools, and LLM chat, ready for Vercel and Railway |
532
596
  | [Wiro-Docs](https://github.com/wiroai/Wiro-Docs) | Source of the Wiro AI API docs |
533
597
 
534
598
  [Website](https://wiro.ai) · [Models](https://wiro.ai/models) · [Docs](https://wiro.ai/docs) · [X](https://x.com/wiroai)
package/dist/index.js CHANGED
@@ -24,6 +24,11 @@ const client = new WiroClient(apiKey, apiSecret, baseUrl, {
24
24
  });
25
25
  const server = createMcpServer(client, { toolsets });
26
26
  const transport = new StdioServerTransport();
27
+ // In a container the server is PID 1, which ignores SIGINT and SIGTERM unless
28
+ // it handles them, so `docker stop` would wait out its timeout.
29
+ for (const signal of ['SIGINT', 'SIGTERM']) {
30
+ process.on(signal, () => process.exit(0));
31
+ }
27
32
  await server.connect(transport);
28
33
  console.error(`Wiro MCP server running on stdio (auth: ${client.authType}, tools: ${(toolsets ?? ['all']).join(', ')})`);
29
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CACX,2DAA2D;QAC3D,uCAAuC;QACvC,cAAc;QACd,uCAAuC;QACvC,4CAA4C;QAC5C,SAAS;QACT,4DAA4D;QAC5D,8FAA8F,CAC/F,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;IACxD,iBAAiB,EAAE,0CAA0C;UACzD,6EAA6E;CAClF,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,2CAA2C,MAAM,CAAC,QAAQ,YAAY,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CACX,2DAA2D;QAC3D,uCAAuC;QACvC,cAAc;QACd,uCAAuC;QACvC,4CAA4C;QAC5C,SAAS;QACT,4DAA4D;QAC5D,8FAA8F,CAC/F,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;IACxD,iBAAiB,EAAE,0CAA0C;UACzD,6EAA6E;CAClF,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,8EAA8E;AAC9E,gEAAgE;AAChE,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAU,EAAE,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,2CAA2C,MAAM,CAAC,QAAQ,YAAY,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
package/dist/playbooks.js CHANGED
@@ -118,7 +118,7 @@ Wiro hosts image, video, audio, speech, 3D and LLM models from many providers. E
118
118
 
119
119
  ## Run and wait
120
120
 
121
- 1. Call \`run_model\` with \`model\` and \`params\`. It waits up to 45 seconds by default (\`timeout_seconds\`).
121
+ 1. Call \`run_model\` with \`model\` and \`params\`. It waits at most 45 seconds, counted from the start of the call; \`timeout_seconds\` can make that shorter.
122
122
  2. If the task is still running, follow the \`nextAction\` for \`wait_for_task\`, and repeat. Video and long audio often take several minutes.
123
123
  3. Never call \`run_model\` again for the same request: that starts a second task, billed again.
124
124
  4. A task is \`submitted\` or \`running\` until it ends as \`completed\`, \`failed\` or \`cancelled\`.
@@ -1,4 +1,20 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { type WiroClient } from '../client.js';
3
- export declare function registerRunModel(server: McpServer, client: WiroClient): void;
3
+ import { type RunReuseTiming } from '../utils/run-ledger.js';
4
+ /** How long run_model waits, and when an identical call continues an earlier run. */
5
+ export interface RunModelTiming extends RunReuseTiming {
6
+ /** The longest one call waits, counted from its start, the run request included. */
7
+ maxWaitMs: number;
8
+ }
9
+ /**
10
+ * A call answers within 45 seconds of its start, so it ends before a 60-second
11
+ * client tool timeout. An identical call (same API key, model and parameters)
12
+ * continues the earlier call's task instead of starting a new one when it
13
+ * comes within 10 minutes of that call ending without its answer reaching the
14
+ * client (cancelled, connection lost, or no task confirmed yet), or while that
15
+ * call is still waiting and at least 10 seconds after it started: a retry after
16
+ * the client gave up without telling the server.
17
+ */
18
+ export declare const RUN_MODEL_TIMING: Readonly<RunModelTiming>;
19
+ export declare function registerRunModel(server: McpServer, client: WiroClient, timing?: RunModelTiming): void;
4
20
  //# sourceMappingURL=run-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-model.d.ts","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAetB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAwM5E"}
1
+ {"version":3,"file":"run-model.d.ts","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAStB,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAWhC,qFAAqF;AACrF,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,cAAc,CAIpD,CAAC;AA4MH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,cAAiC,GACxC,IAAI,CAyHN"}
@@ -1,10 +1,197 @@
1
+ import crypto from 'node:crypto';
1
2
  import { z } from 'zod';
2
3
  import { TaskPollingError, TaskWaitTimeoutError, } from '../client.js';
3
4
  import { errorText, isOutcomeUnknown } from '../utils/api.js';
4
5
  import { formatTaskPending, formatTaskResult, formatTaskSubmitted, } from '../utils/format.js';
5
- import { createTaskContent, toPendingTaskResult, toStructuredTaskResult, } from '../utils/structured.js';
6
+ import { runKey, runLedger, submittedTask, } from '../utils/run-ledger.js';
7
+ import { createTaskContent, getTaskState, toPendingTaskResult, toStructuredTaskResult, } from '../utils/structured.js';
6
8
  import { strictInput, taskResultOutputSchema } from './schemas.js';
7
- export function registerRunModel(server, client) {
9
+ /**
10
+ * A call answers within 45 seconds of its start, so it ends before a 60-second
11
+ * client tool timeout. An identical call (same API key, model and parameters)
12
+ * continues the earlier call's task instead of starting a new one when it
13
+ * comes within 10 minutes of that call ending without its answer reaching the
14
+ * client (cancelled, connection lost, or no task confirmed yet), or while that
15
+ * call is still waiting and at least 10 seconds after it started: a retry after
16
+ * the client gave up without telling the server.
17
+ */
18
+ export const RUN_MODEL_TIMING = Object.freeze({
19
+ maxWaitMs: 45_000,
20
+ retryAfterMs: 10_000,
21
+ unansweredWindowMs: 10 * 60_000,
22
+ });
23
+ const TIMED_OUT = Symbol('timed out');
24
+ function abortError() {
25
+ const error = new Error('Task wait aborted by client');
26
+ error.name = 'AbortError';
27
+ return error;
28
+ }
29
+ /** The run request's answer, or TIMED_OUT once the deadline passes first. */
30
+ function settleBy(submission, deadline, signal) {
31
+ return new Promise((resolve, reject) => {
32
+ if (signal.aborted) {
33
+ reject(abortError());
34
+ return;
35
+ }
36
+ const finish = () => {
37
+ clearTimeout(timer);
38
+ signal.removeEventListener('abort', onAbort);
39
+ };
40
+ const onAbort = () => {
41
+ finish();
42
+ reject(abortError());
43
+ };
44
+ const timer = setTimeout(() => {
45
+ finish();
46
+ resolve(TIMED_OUT);
47
+ }, Math.max(0, deadline - Date.now()));
48
+ signal.addEventListener('abort', onAbort, { once: true });
49
+ void submission.then(settled => {
50
+ finish();
51
+ resolve(settled);
52
+ });
53
+ });
54
+ }
55
+ function errorResult(text) {
56
+ return { content: [{ type: 'text', text: `## Error\n\n${text}` }], isError: true };
57
+ }
58
+ /** What a call answers when Wiro created no task it can follow. */
59
+ function runFailure(settled, model, project) {
60
+ if (!settled.ok) {
61
+ const { error } = settled;
62
+ // The request was sent, and no clear answer says whether Wiro created a task.
63
+ if (isOutcomeUnknown(error)) {
64
+ return errorResult(`The run request was sent but no clear answer came back (${errorText(error)}). `
65
+ + 'The task may have started and may be charged. Before running it again, call list_tasks with model '
66
+ + `"${project}" and look for a task of ${model} that is queued or running, or that started in the last few minutes.`);
67
+ }
68
+ return errorResult(error instanceof Error ? error.message : String(error));
69
+ }
70
+ const runResult = settled.result;
71
+ if (!runResult.result) {
72
+ const errors = runResult.errors?.map(e => e.message).join(', ') || 'Unknown error';
73
+ return errorResult(`Failed to run model: ${errors}`);
74
+ }
75
+ // Wiro created the task, so it runs and can be charged; only this call
76
+ // cannot follow it.
77
+ const taskid = runResult.taskid ? String(runResult.taskid) : '';
78
+ return errorResult(taskid
79
+ ? `The task was created (task ID ${taskid}), but its task token did not come back, so this call cannot wait for it. `
80
+ + `Do not run the model again: read the task with get_task and taskid "${taskid}", or find it with list_tasks.`
81
+ : 'The task was created, but its task ID and token did not come back, so this call cannot wait for it. '
82
+ + `Do not run the model again: find the task with list_tasks with model "${project}", then read it with get_task.`);
83
+ }
84
+ /** What a call answers when Wiro has not confirmed the run before the deadline. */
85
+ function notConfirmed(model, project, sentSecondsAgo) {
86
+ return errorResult(`Wiro had not confirmed the run request ${sentSecondsAgo} seconds after it was sent, so this call stopped `
87
+ + 'waiting to answer within the client\'s time limit. The task may still start and may be charged. '
88
+ + `Do not run the model again now: in a minute, call list_tasks with model "${project}" and look for a task of `
89
+ + `${model} that started in the last few minutes, then follow it with wait_for_task.`);
90
+ }
91
+ function ageText(ms) {
92
+ const seconds = Math.max(1, Math.round(ms / 1000));
93
+ if (seconds < 90)
94
+ return `${seconds} second${seconds === 1 ? '' : 's'}`;
95
+ const minutes = Math.round(seconds / 60);
96
+ return `${minutes} minute${minutes === 1 ? '' : 's'}`;
97
+ }
98
+ /** Marks a result as the task of an earlier identical call. */
99
+ function withReuseNote(result, ageMs) {
100
+ const note = `This call continued the task of an identical run_model call made ${ageText(ageMs)} ago, whose answer `
101
+ + 'did not reach you, instead of starting and billing a new task. If the user wants a separate second run, '
102
+ + 'change a parameter such as the seed.';
103
+ const [first, ...rest] = result.content;
104
+ const content = first?.type === 'text'
105
+ ? [{ ...first, text: `${note}\n\n${first.text}` }, ...rest]
106
+ : [{ type: 'text', text: note }, ...result.content];
107
+ return {
108
+ ...result,
109
+ content,
110
+ ...(result.structuredContent ? { structuredContent: { ...result.structuredContent, reused: true } } : {}),
111
+ };
112
+ }
113
+ /** Polls the task until it ends or the deadline passes. */
114
+ async function followTask(client, tasktoken, deadline, startedAt, extra) {
115
+ const remainingMs = deadline - Date.now();
116
+ if (remainingMs <= 0)
117
+ return { kind: 'waiting', timedOut: true };
118
+ try {
119
+ const detail = await client.waitForTask(tasktoken, remainingMs, {
120
+ signal: extra.signal,
121
+ onPoll: async (task) => {
122
+ const progressToken = extra._meta?.progressToken;
123
+ if (progressToken === undefined)
124
+ return;
125
+ try {
126
+ await extra.sendNotification({
127
+ method: 'notifications/progress',
128
+ params: {
129
+ progressToken,
130
+ progress: (Date.now() - startedAt) / 1000,
131
+ message: `Task status: ${task.status}`,
132
+ },
133
+ });
134
+ }
135
+ catch {
136
+ // Progress is best-effort and must never interrupt task polling.
137
+ }
138
+ },
139
+ });
140
+ const task = detail.tasklist?.[0];
141
+ return task ? { kind: 'done', task } : { kind: 'missing' };
142
+ }
143
+ catch (error) {
144
+ const lastDetail = error instanceof TaskWaitTimeoutError || error instanceof TaskPollingError
145
+ ? error.lastDetail
146
+ : undefined;
147
+ const timedOut = error instanceof TaskWaitTimeoutError;
148
+ return {
149
+ kind: 'waiting',
150
+ lastTask: lastDetail?.tasklist?.[0],
151
+ reason: timedOut ? undefined : 'Task submission succeeded, but status monitoring was interrupted.',
152
+ timedOut,
153
+ };
154
+ }
155
+ }
156
+ function followedResult(followed, task, model, waitedSeconds) {
157
+ const reference = { taskid: task.taskid, tasktoken: task.tasktoken, model };
158
+ if (followed.kind === 'done') {
159
+ return {
160
+ content: createTaskContent(formatTaskResult(followed.task), followed.task),
161
+ structuredContent: toStructuredTaskResult(followed.task, reference),
162
+ };
163
+ }
164
+ if (followed.kind === 'missing') {
165
+ const reason = 'The status endpoint returned no task data.';
166
+ return {
167
+ content: [{
168
+ type: 'text',
169
+ text: formatTaskPending({ ...reference, timeoutSeconds: waitedSeconds, reason }),
170
+ }],
171
+ structuredContent: toPendingTaskResult({ ...reference, reason }),
172
+ };
173
+ }
174
+ const { lastTask, reason } = followed;
175
+ const structured = lastTask
176
+ ? toStructuredTaskResult(lastTask, reference)
177
+ : toPendingTaskResult({ ...reference, reason });
178
+ if (reason)
179
+ structured.error = reason;
180
+ return {
181
+ content: [{
182
+ type: 'text',
183
+ text: formatTaskPending({
184
+ ...reference,
185
+ status: lastTask?.status,
186
+ timeoutSeconds: followed.timedOut ? waitedSeconds : undefined,
187
+ reason,
188
+ }),
189
+ }],
190
+ structuredContent: structured,
191
+ };
192
+ }
193
+ export function registerRunModel(server, client, timing = RUN_MODEL_TIMING) {
194
+ const maxWaitSeconds = Math.round(timing.maxWaitMs / 1000);
8
195
  server.registerTool('run_model', {
9
196
  title: 'Run a Wiro model',
10
197
  description: 'Run any AI model on Wiro. Supports image, video, text, audio, '
@@ -20,7 +207,7 @@ export function registerRunModel(server, client) {
20
207
  model: z.string().describe('Model slug in "owner/model" format, e.g. "google/veo3-1", "google/nano-banana-pro"'),
21
208
  params: z.record(z.string(), z.unknown()).describe('Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. Pass json and json-array parameters as structured JSON values in this same object. File parameters take public URLs, no upload needed: one URL for fileinput, an array of URLs for combinefileinput, and for multifileinput the URLs comma-separated in its matching ...UrlMultiple field. A parameter you leave out gets the default get_model_schema shows for it. A run fills nothing for the ones it marks as samples (file fields, ids that contain "input", the prompt and the LLM chat fields), picks a random seed, and refuses a required parameter that is missing. To continue a chat, send the same session_id with the next prompt, without previousTaskToken. A turn that ended with tool calls is continued with previousTaskToken, toolOutputs rows (call_id and output) and the same session_id, as its nextAction shows.'),
22
209
  wait: z.boolean().default(true).describe('If true, poll until completion and return the result. If false, return the task identifiers immediately.'),
23
- timeout_seconds: z.number().int().min(10).max(600).default(45).describe('Maximum seconds to wait when wait=true. The 45-second default is safe for clients with a 60-second tool timeout.'),
210
+ timeout_seconds: z.number().int().min(10).max(600).default(45).describe(`Maximum seconds this call waits, counted from its start. A value above ${maxWaitSeconds} is treated as ${maxWaitSeconds}, so the call answers before a 60-second client tool timeout. A longer task continues with wait_for_task.`),
24
211
  }, 'Model parameters go inside `params`.'),
25
212
  outputSchema: taskResultOutputSchema,
26
213
  annotations: {
@@ -30,6 +217,7 @@ export function registerRunModel(server, client) {
30
217
  openWorldHint: true,
31
218
  },
32
219
  }, async ({ model, params, wait, timeout_seconds }, extra) => {
220
+ const startedAt = Date.now();
33
221
  // The slug is checked before anything is sent, so any error the run call
34
222
  // throws afterwards came once the request had gone out.
35
223
  const [owner, ...rest] = model.split('/');
@@ -40,152 +228,80 @@ export function registerRunModel(server, client) {
40
228
  isError: true,
41
229
  };
42
230
  }
43
- let runResult;
231
+ // A call the client cancelled before it began sends nothing.
232
+ if (extra.signal.aborted)
233
+ return errorResult('The call was cancelled before the run request was sent.');
234
+ // Every wait below ends by this deadline, the run request included.
235
+ const deadline = startedAt + Math.min(timeout_seconds * 1000, timing.maxWaitMs);
236
+ const waitedSeconds = () => Math.round((Date.now() - startedAt) / 1000);
237
+ // A client without an identity, such as a stand-in in a test, gets a key
238
+ // no other call shares.
239
+ const identity = typeof client.identity === 'string' ? client.identity : undefined;
240
+ const key = identity ? runKey(identity, model, params) : `call:${crypto.randomUUID()}`;
241
+ let match = identity ? runLedger.find(key, timing, startedAt) : undefined;
242
+ let record;
243
+ let outcome = 'failed';
244
+ // A cancel or a closed connection means this call's answer will never
245
+ // arrive, so an identical call right after it continues its task.
246
+ const onAbort = () => {
247
+ if (record)
248
+ runLedger.markUnanswered(record);
249
+ };
250
+ extra.signal.addEventListener('abort', onAbort);
44
251
  try {
45
- runResult = await client.runModel(model, params, extra.signal);
46
- if (!runResult.result) {
47
- const errors = runResult.errors?.map(e => e.message).join(', ') || 'Unknown error';
48
- return {
49
- content: [{ type: 'text', text: `## Error\n\nFailed to run model: ${errors}` }],
50
- isError: true,
51
- };
52
- }
53
- if (!/^[A-Za-z0-9_.:-]{1,256}$/.test(runResult.socketaccesstoken ?? '')) {
54
- // Wiro created the task, so it runs and can be charged; only this
55
- // call cannot follow it.
56
- const taskid = runResult.taskid ? String(runResult.taskid) : '';
57
- return {
58
- content: [{
59
- type: 'text',
60
- text: taskid
61
- ? `## Error\n\nThe task was created (task ID ${taskid}), but its task token did not come back, so this call cannot wait for it. `
62
- + `Do not run the model again: read the task with get_task and taskid "${taskid}", or find it with list_tasks.`
63
- : '## Error\n\nThe task was created, but its task ID and token did not come back, so this call cannot wait for it. '
64
- + `Do not run the model again: find the task with list_tasks with model "${project}", then read it with get_task.`,
65
- }],
66
- isError: true,
67
- };
68
- }
69
- if (!wait) {
70
- return {
71
- content: [{
72
- type: 'text',
73
- text: formatTaskSubmitted(runResult.taskid, runResult.socketaccesstoken),
74
- }],
75
- structuredContent: toPendingTaskResult({
76
- taskid: runResult.taskid,
77
- tasktoken: runResult.socketaccesstoken,
78
- model,
79
- }),
80
- };
81
- }
82
- const detail = await client.waitForTask(runResult.socketaccesstoken, timeout_seconds * 1000, {
83
- signal: extra.signal,
84
- onPoll: async (task, context) => {
85
- const progressToken = extra._meta?.progressToken;
86
- if (progressToken === undefined)
87
- return;
88
- try {
89
- await extra.sendNotification({
90
- method: 'notifications/progress',
91
- params: {
92
- progressToken,
93
- progress: context.elapsedMs / 1000,
94
- message: `Task status: ${task.status}`,
95
- },
96
- });
252
+ // Twice at most: a continued run whose request or task failed is
253
+ // replaced by a new run, as if no earlier call had been made.
254
+ for (;;) {
255
+ const reused = match;
256
+ match = undefined;
257
+ record = reused ?? runLedger.start(key, () => client.runModel(model, params));
258
+ runLedger.attach(record);
259
+ const finish = (result) => (reused
260
+ ? withReuseNote(result, startedAt - reused.startedAt)
261
+ : result);
262
+ // The run request is not tied to this call's signal: once it is sent,
263
+ // Wiro may create the task whether or not this call is still waiting,
264
+ // and the ledger needs its answer for an identical call that follows.
265
+ const settled = record.settled ?? await settleBy(record.submission, deadline, extra.signal);
266
+ if (settled === TIMED_OUT) {
267
+ outcome = 'unanswered';
268
+ return notConfirmed(model, project, Math.round((Date.now() - record.startedAt) / 1000));
269
+ }
270
+ const task = submittedTask(settled);
271
+ if (!task) {
272
+ if (reused) {
273
+ runLedger.release(record, 'failed');
274
+ record = undefined;
275
+ continue;
97
276
  }
98
- catch {
99
- // Progress is best-effort and must never interrupt task polling.
100
- }
101
- },
102
- });
103
- const task = detail.tasklist?.[0];
104
- if (!task) {
105
- const reason = 'The status endpoint returned no task data.';
106
- return {
107
- content: [{
108
- type: 'text',
109
- text: formatTaskPending({
110
- taskid: runResult.taskid,
111
- tasktoken: runResult.socketaccesstoken,
112
- timeoutSeconds: timeout_seconds,
113
- reason,
114
- }),
115
- }],
116
- structuredContent: toPendingTaskResult({
117
- taskid: runResult.taskid,
118
- tasktoken: runResult.socketaccesstoken,
119
- model,
120
- reason,
121
- }),
122
- };
277
+ outcome = 'failed';
278
+ return runFailure(settled, model, project);
279
+ }
280
+ if (!wait) {
281
+ outcome = 'answered';
282
+ return finish({
283
+ content: [{ type: 'text', text: formatTaskSubmitted(task.taskid ?? '', task.tasktoken) }],
284
+ structuredContent: toPendingTaskResult({ ...task, model }),
285
+ });
286
+ }
287
+ const followed = await followTask(client, task.tasktoken, deadline, startedAt, extra);
288
+ if (reused && followed.kind === 'done' && ['failed', 'cancelled'].includes(getTaskState(followed.task))) {
289
+ runLedger.release(record, 'failed');
290
+ record = undefined;
291
+ continue;
292
+ }
293
+ outcome = 'answered';
294
+ return finish(followedResult(followed, task, model, waitedSeconds()));
123
295
  }
124
- return {
125
- content: createTaskContent(formatTaskResult(task), task),
126
- structuredContent: toStructuredTaskResult(task, {
127
- taskid: runResult.taskid,
128
- tasktoken: runResult.socketaccesstoken,
129
- model,
130
- }),
131
- };
132
296
  }
133
297
  catch (error) {
134
- if (runResult?.result && runResult.socketaccesstoken) {
135
- const lastDetail = error instanceof TaskWaitTimeoutError
136
- || error instanceof TaskPollingError
137
- ? error.lastDetail
138
- : undefined;
139
- const lastTask = lastDetail?.tasklist?.[0];
140
- const reason = error instanceof TaskWaitTimeoutError
141
- ? undefined
142
- : 'Task submission succeeded, but status monitoring was interrupted.';
143
- const structured = lastTask
144
- ? toStructuredTaskResult(lastTask, {
145
- taskid: runResult.taskid,
146
- tasktoken: runResult.socketaccesstoken,
147
- model,
148
- })
149
- : toPendingTaskResult({
150
- taskid: runResult.taskid,
151
- tasktoken: runResult.socketaccesstoken,
152
- model,
153
- reason,
154
- });
155
- if (reason)
156
- structured.error = reason;
157
- return {
158
- content: [{
159
- type: 'text',
160
- text: formatTaskPending({
161
- taskid: runResult.taskid,
162
- tasktoken: runResult.socketaccesstoken,
163
- status: lastTask?.status,
164
- timeoutSeconds: error instanceof TaskWaitTimeoutError
165
- ? timeout_seconds
166
- : undefined,
167
- reason,
168
- }),
169
- }],
170
- structuredContent: structured,
171
- };
172
- }
173
- // The request was sent, and no clear answer says whether Wiro created a task.
174
- if (!runResult && isOutcomeUnknown(error)) {
175
- return {
176
- content: [{
177
- type: 'text',
178
- text: `## Error\n\nThe run request was sent but no clear answer came back (${errorText(error)}). `
179
- + 'The task may have started and may be charged. Before running it again, call list_tasks with model '
180
- + `"${project}" and look for a task of ${model} that is queued or running, or that started in the last few minutes.`,
181
- }],
182
- isError: true,
183
- };
184
- }
185
- return {
186
- content: [{ type: 'text', text: `## Error\n\n${error instanceof Error ? error.message : String(error)}` }],
187
- isError: true,
188
- };
298
+ // Only an abort ends up here; the SDK sends no answer for a cancelled call.
299
+ return errorResult(error instanceof Error ? error.message : String(error));
300
+ }
301
+ finally {
302
+ extra.signal.removeEventListener('abort', onAbort);
303
+ if (record)
304
+ runLedger.release(record, extra.signal.aborted ? 'unanswered' : outcome);
189
305
  }
190
306
  });
191
307
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run-model.js","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-model.js","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"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"}
@@ -295,6 +295,7 @@ export declare const taskResultOutputSchema: {
295
295
  arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
296
296
  reason: z.ZodString;
297
297
  }, z.core.$strip>>;
298
+ reused: z.ZodOptional<z.ZodBoolean>;
298
299
  };
299
300
  export declare const taskListOutputSchema: {
300
301
  tasks: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4CxB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,SAAK,oEAsBvE;AAED,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;iBAW9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;EAMjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;EAInC,CAAC;AAOH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqB5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOlC,CAAC;AAQF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWhC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;iBAU7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;CAOjC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;iBAqB/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBnC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;CAO/B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;CAOjC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;CAQlC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;CAQpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;CAOlC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4CxB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,SAAK,oEAsBvE;AAED,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;iBAW9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;EAMjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;EAInC,CAAC;AAOH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqB5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASlC,CAAC;AAQF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWhC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;iBAU7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;CAOjC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;iBAqB/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBnC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;CAO/B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;CAOjC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;CAQlC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;CAQpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;CAOlC,CAAC"}
@@ -180,6 +180,8 @@ export const taskResultOutputSchema = {
180
180
  response: z.string().optional(),
181
181
  error: z.string().optional(),
182
182
  nextAction: nextActionSchema.optional(),
183
+ reused: z.boolean().optional()
184
+ .describe('True when run_model continued the task of an identical earlier call whose answer did not reach the client, instead of starting and billing a new task.'),
183
185
  };
184
186
  const taskListItemOutputSchema = taskOutputSchema.omit({
185
187
  text: true,
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,oFAAoF;AACpF,MAAM,gBAAgB,GAA6B;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,CAAC;IACxD,YAAY,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC;IAC/D,eAAe,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC;IACvD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;IACpC,KAAK,EAAE,CAAC,WAAW,CAAC;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC;IAC9C,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;IAC9D,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC;IAC9D,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC;IACrF,eAAe,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IACzE,mBAAmB,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;IACzD,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;IAC3C,kBAAkB,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC;IACjE,UAAU,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;CAC9B,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,kFAAkF;AAClF,SAAS,aAAa,CAAC,IAAY,EAAE,KAAe;IAClD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;WACzD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAe,EAAE,KAAe,EAAE,IAAY;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IACH,OAAO,mBAAmB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB;UACzF,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAChG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAA0B,KAAQ,EAAE,IAAI,GAAG,EAAE;IACtE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;QACnC,2CAA2C;QAC3C,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,mBAAmB;YAChD,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;YAC5D,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;IACH,6EAA6E;IAC7E,gFAAgF;IAChF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;eACvD,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;YAC9E,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,GAAG,CAAC;YACT,GAAG,OAAO;YACV,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;SAC7F,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,WAAW;IACX,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SACtC,QAAQ,CAAC,wCAAwC,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SACzC,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,gBAAgB;IAChB,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7C,aAAa;IACb,WAAW;IACX,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE;KAClC,GAAG,EAAE;KACL,WAAW,EAAE;KACb,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,YAAY,EAAE,kBAAkB;IAChC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7B,aAAa,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC5C,kBAAkB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACjD,qBAAqB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACpD,qBAAqB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACpD,WAAW,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC1C,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC3C,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC3C,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KAC5C,CAAC,CAAC,QAAQ,EAAE;IACb,aAAa,EAAE,kBAAkB;IACjC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9B,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC/C,WAAW,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC1C,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC3C,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC3C,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC3C,0BAA0B,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACzD,0BAA0B,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KAC1D,CAAC,CAAC,QAAQ,EAAE;IACb,YAAY,EAAE,kBAAkB;IAChC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACxB,mBAAmB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAClD,kBAAkB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACjD,uBAAuB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACtD,4BAA4B,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAC3D,mCAAmC,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QAClE,qBAAqB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACpD,oBAAoB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;QACnD,yBAAyB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KACzD,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC5D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,wBAAwB;KACjC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACnC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,wBAAwB;KACjC,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACpD,4EAA4E;IAC5E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC/C,YAAY,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;AAEF,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACrD,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;KAC3C,CAAC,CAAC;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACpD,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SAC/C,QAAQ,CAAC,0OAA0O,CAAC;IACvP,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACnC,QAAQ,CAAC,yKAAyK,CAAC;CACvL,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACpD,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC3B,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,0NAA0N,CAAC;IACvO,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC,CAAC;IACH,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC;QAC/B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aACzC,QAAQ,CAAC,4HAA4H,CAAC;QACzI,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;SACrC,CAAC,CAAC;QACH,uEAAuE;QACvE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACxB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACvC,CAAC;IACF,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;KACpC,CAAC,CAAC;IACH,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,mBAAmB;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC3B,QAAQ,CAAC,sKAAsK,CAAC;IACnL,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QACpD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;CACjB,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { RunModelResult } from '../types.js';
2
+ /** What Wiro answered to a run request. It never rejects. */
3
+ export type RunSubmission = {
4
+ ok: true;
5
+ result: RunModelResult;
6
+ } | {
7
+ ok: false;
8
+ error: unknown;
9
+ };
10
+ export interface RunRecord {
11
+ readonly key: string;
12
+ readonly startedAt: number;
13
+ readonly submission: Promise<RunSubmission>;
14
+ /** The answer, once it came. */
15
+ settled?: RunSubmission;
16
+ /** run_model calls serving this run right now. */
17
+ active: number;
18
+ /** When a call serving this run last ended without its answer reaching the client. */
19
+ unansweredAt?: number;
20
+ }
21
+ export interface RunReuseTiming {
22
+ /** How long after a call ended unanswered an identical call continues its run. */
23
+ unansweredWindowMs: number;
24
+ /**
25
+ * How long after an identical call started, while it is still waiting, a new
26
+ * call counts as its retry. Calls an agent sends side by side arrive together
27
+ * and each start their own task; a retry comes after the client gave up.
28
+ */
29
+ retryAfterMs: number;
30
+ }
31
+ /** The task a run request created, when it created one this call can follow. */
32
+ export declare function submittedTask(submission: RunSubmission | undefined): {
33
+ taskid?: string;
34
+ tasktoken: string;
35
+ } | undefined;
36
+ /** The ledger key of one run: the caller, the model and the parameters. */
37
+ export declare function runKey(identity: string, model: string, params: Record<string, unknown>): string;
38
+ export declare class RunLedger {
39
+ private readonly records;
40
+ /**
41
+ * The run an identical call should continue: one whose last call ended
42
+ * without its answer reaching the client, within the window, or one an
43
+ * identical call is still waiting for after `retryAfterMs`.
44
+ */
45
+ find(key: string, timing: RunReuseTiming, now?: number): RunRecord | undefined;
46
+ /** Sends a new run request and remembers it under `key`. */
47
+ start(key: string, submit: () => Promise<RunModelResult>, now?: number): RunRecord;
48
+ /** A call starts serving the run. */
49
+ attach(record: RunRecord): void;
50
+ /** A call serving the run lost its client, so its answer will not arrive. */
51
+ markUnanswered(record: RunRecord, now?: number): void;
52
+ /**
53
+ * A call stops serving the run. `answered`: its client got the task, so an
54
+ * identical call after this one is a new run. `unanswered`: its client did
55
+ * not, so an identical call soon after continues this run. `failed`: there
56
+ * is no task to continue.
57
+ */
58
+ release(record: RunRecord, outcome: 'answered' | 'unanswered' | 'failed', now?: number): void;
59
+ /** Drops the run, unless a newer run already took its key. */
60
+ forget(record: RunRecord): void;
61
+ private prune;
62
+ private trim;
63
+ }
64
+ /** The ledger every run_model tool in this process shares. */
65
+ export declare const runLedger: RunLedger;
66
+ //# sourceMappingURL=run-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-ledger.d.ts","sourceRoot":"","sources":["../../src/utils/run-ledger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAalD,6DAA6D;AAC7D,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAElC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,gCAAgC;IAChC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMpD;AAcD,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAQ/F;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,SAAa,GAAG,SAAS,GAAG,SAAS;IAWlF,4DAA4D;IAC5D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,SAAa,GAAG,SAAS;IAuBtF,qCAAqC;IACrC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI/B,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAa,GAAG,IAAI;IAIzD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,GAAG,QAAQ,EAAE,GAAG,SAAa,GAAG,IAAI;IAWjG,8DAA8D;IAC9D,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI/B,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,IAAI;CAOb;AAED,8DAA8D;AAC9D,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -0,0 +1,129 @@
1
+ import crypto from 'node:crypto';
2
+ const MAX_RECORDS = 1000;
3
+ /** The task a run request created, when it created one this call can follow. */
4
+ export function submittedTask(submission) {
5
+ if (!submission?.ok || !submission.result.result)
6
+ return undefined;
7
+ const tasktoken = submission.result.socketaccesstoken ?? '';
8
+ if (!/^[A-Za-z0-9_.:-]{1,256}$/.test(tasktoken))
9
+ return undefined;
10
+ const taskid = submission.result.taskid ? String(submission.result.taskid) : undefined;
11
+ return { taskid, tasktoken };
12
+ }
13
+ /** JSON with object keys sorted at every level, so key order does not tell two calls apart. */
14
+ function canonicalJson(value) {
15
+ if (Array.isArray(value))
16
+ return `[${value.map(canonicalJson).join(',')}]`;
17
+ if (value !== null && typeof value === 'object') {
18
+ const object = value;
19
+ return `{${Object.keys(object).sort()
20
+ .map(name => `${JSON.stringify(name)}:${canonicalJson(object[name])}`)
21
+ .join(',')}}`;
22
+ }
23
+ return JSON.stringify(value) ?? 'null';
24
+ }
25
+ /** The ledger key of one run: the caller, the model and the parameters. */
26
+ export function runKey(identity, model, params) {
27
+ return crypto.createHash('sha256')
28
+ .update(identity)
29
+ .update('\0')
30
+ .update(model.trim().toLowerCase())
31
+ .update('\0')
32
+ .update(canonicalJson(params))
33
+ .digest('hex');
34
+ }
35
+ export class RunLedger {
36
+ records = new Map();
37
+ /**
38
+ * The run an identical call should continue: one whose last call ended
39
+ * without its answer reaching the client, within the window, or one an
40
+ * identical call is still waiting for after `retryAfterMs`.
41
+ */
42
+ find(key, timing, now = Date.now()) {
43
+ this.prune(timing, now);
44
+ const record = this.records.get(key);
45
+ if (!record)
46
+ return undefined;
47
+ if (record.unansweredAt !== undefined && now - record.unansweredAt <= timing.unansweredWindowMs) {
48
+ return record;
49
+ }
50
+ if (record.active > 0 && now - record.startedAt >= timing.retryAfterMs)
51
+ return record;
52
+ return undefined;
53
+ }
54
+ /** Sends a new run request and remembers it under `key`. */
55
+ start(key, submit, now = Date.now()) {
56
+ let submission;
57
+ try {
58
+ submission = submit().then(result => ({ ok: true, result }), error => ({ ok: false, error }));
59
+ }
60
+ catch (error) {
61
+ submission = Promise.resolve({ ok: false, error });
62
+ }
63
+ const record = { key, startedAt: now, submission, active: 0 };
64
+ void submission.then(settled => {
65
+ record.settled = settled;
66
+ // An answer that came after every call left: without a task nothing is
67
+ // left to continue.
68
+ if (record.active === 0 && !submittedTask(settled))
69
+ this.forget(record);
70
+ });
71
+ this.records.delete(key);
72
+ this.records.set(key, record);
73
+ this.trim();
74
+ return record;
75
+ }
76
+ /** A call starts serving the run. */
77
+ attach(record) {
78
+ record.active += 1;
79
+ }
80
+ /** A call serving the run lost its client, so its answer will not arrive. */
81
+ markUnanswered(record, now = Date.now()) {
82
+ record.unansweredAt = now;
83
+ }
84
+ /**
85
+ * A call stops serving the run. `answered`: its client got the task, so an
86
+ * identical call after this one is a new run. `unanswered`: its client did
87
+ * not, so an identical call soon after continues this run. `failed`: there
88
+ * is no task to continue.
89
+ */
90
+ release(record, outcome, now = Date.now()) {
91
+ record.active = Math.max(0, record.active - 1);
92
+ if (outcome === 'failed') {
93
+ this.forget(record);
94
+ }
95
+ else if (outcome === 'unanswered') {
96
+ record.unansweredAt = now;
97
+ }
98
+ else if (record.active === 0) {
99
+ this.forget(record);
100
+ }
101
+ }
102
+ /** Drops the run, unless a newer run already took its key. */
103
+ forget(record) {
104
+ if (this.records.get(record.key) === record)
105
+ this.records.delete(record.key);
106
+ }
107
+ prune(timing, now) {
108
+ for (const record of this.records.values()) {
109
+ if (record.active > 0)
110
+ continue;
111
+ const unanswered = record.unansweredAt !== undefined
112
+ && now - record.unansweredAt <= timing.unansweredWindowMs;
113
+ // A run request still on its way stays until it answers or its window ends.
114
+ if (!unanswered)
115
+ this.records.delete(record.key);
116
+ }
117
+ }
118
+ trim() {
119
+ while (this.records.size > MAX_RECORDS) {
120
+ const oldest = this.records.keys().next().value;
121
+ if (oldest === undefined)
122
+ break;
123
+ this.records.delete(oldest);
124
+ }
125
+ }
126
+ }
127
+ /** The ledger every run_model tool in this process shares. */
128
+ export const runLedger = new RunLedger();
129
+ //# sourceMappingURL=run-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-ledger.js","sourceRoot":"","sources":["../../src/utils/run-ledger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiro-ai/wiro-mcp",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "mcpName": "ai.wiro/mcp",
5
5
  "description": "Official MCP server for Wiro AI. Run Wiro AI models, build and run workflows, and talk to Studio and your Wiro agents from Cursor, Claude, Windsurf and any MCP-compatible AI assistant",
6
6
  "type": "module",