@wiro-ai/wiro-mcp 1.1.4 → 1.2.0
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 +87 -5
- package/dist/client.d.ts +46 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +239 -22
- package/dist/client.js.map +1 -1
- package/dist/tools/cancel-task.d.ts.map +1 -1
- package/dist/tools/cancel-task.js +34 -4
- package/dist/tools/cancel-task.js.map +1 -1
- package/dist/tools/explore.d.ts.map +1 -1
- package/dist/tools/explore.js +17 -1
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/get-model-schema.d.ts.map +1 -1
- package/dist/tools/get-model-schema.js +18 -2
- package/dist/tools/get-model-schema.js.map +1 -1
- package/dist/tools/get-task-price.d.ts.map +1 -1
- package/dist/tools/get-task-price.js +38 -5
- package/dist/tools/get-task-price.js.map +1 -1
- package/dist/tools/get-task.d.ts +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +77 -7
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kill-task.d.ts.map +1 -1
- package/dist/tools/kill-task.js +34 -4
- package/dist/tools/kill-task.js.map +1 -1
- package/dist/tools/list-tasks.d.ts +4 -0
- package/dist/tools/list-tasks.d.ts.map +1 -0
- package/dist/tools/list-tasks.js +89 -0
- package/dist/tools/list-tasks.js.map +1 -0
- package/dist/tools/recommend-model.d.ts.map +1 -1
- package/dist/tools/recommend-model.js +51 -4
- package/dist/tools/recommend-model.js.map +1 -1
- package/dist/tools/run-model.d.ts +1 -1
- package/dist/tools/run-model.d.ts.map +1 -1
- package/dist/tools/run-model.js +115 -19
- package/dist/tools/run-model.js.map +1 -1
- package/dist/tools/schemas.d.ts +683 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +134 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search-docs.d.ts.map +1 -1
- package/dist/tools/search-docs.js +30 -4
- package/dist/tools/search-docs.js.map +1 -1
- package/dist/tools/search-models.d.ts.map +1 -1
- package/dist/tools/search-models.js +65 -15
- package/dist/tools/search-models.js.map +1 -1
- package/dist/tools/upload-file.d.ts.map +1 -1
- package/dist/tools/upload-file.js +42 -4
- package/dist/tools/upload-file.js.map +1 -1
- package/dist/tools/wait-for-task.d.ts +4 -0
- package/dist/tools/wait-for-task.d.ts.map +1 -0
- package/dist/tools/wait-for-task.js +121 -0
- package/dist/tools/wait-for-task.js.map +1 -0
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/format.d.ts +10 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +93 -4
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/structured.d.ts +113 -0
- package/dist/utils/structured.d.ts.map +1 -0
- package/dist/utils/structured.js +227 -0
- package/dist/utils/structured.js.map +1 -0
- package/package.json +13 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-tasks.js","sourceRoot":"","sources":["../../src/tools/list-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommend-model.d.ts","sourceRoot":"","sources":["../../src/tools/recommend-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"recommend-model.d.ts","sourceRoot":"","sources":["../../src/tools/recommend-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAoFlF"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { formatModelList } from '../utils/format.js';
|
|
3
|
+
import { toStructuredModel } from '../utils/structured.js';
|
|
4
|
+
import { modelListOutputSchema } from './schemas.js';
|
|
3
5
|
export function registerRecommendModel(server, client) {
|
|
4
|
-
server.
|
|
5
|
-
|
|
6
|
+
server.registerTool('recommend_model', {
|
|
7
|
+
title: 'Recommend Wiro models',
|
|
8
|
+
description: 'Describe a generation goal in natural language and receive '
|
|
9
|
+
+ 'ranked model recommendations. Follow the returned '
|
|
10
|
+
+ '`get_model_schema` next action before running a model.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
task: z.string().describe('What you want to do, e.g. "generate a photorealistic portrait", "upscale an image to 4K", "transcribe audio to text".'),
|
|
13
|
+
},
|
|
14
|
+
outputSchema: modelListOutputSchema,
|
|
15
|
+
annotations: {
|
|
16
|
+
readOnlyHint: true,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: true,
|
|
19
|
+
openWorldHint: true,
|
|
20
|
+
},
|
|
6
21
|
}, async ({ task }) => {
|
|
7
22
|
try {
|
|
8
23
|
const result = await client.searchModels({
|
|
@@ -10,18 +25,50 @@ export function registerRecommendModel(server, client) {
|
|
|
10
25
|
sort: 'relevance',
|
|
11
26
|
limit: 10,
|
|
12
27
|
});
|
|
13
|
-
if (!result.result
|
|
28
|
+
if (!result.result) {
|
|
29
|
+
const message = result.errors?.map(error => error.message).join(', ')
|
|
30
|
+
|| 'Model recommendation failed.';
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: 'text', text: `## Error\n\n${message}` }],
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const models = result.tool ?? [];
|
|
37
|
+
const total = Number.parseInt(String(result.total ?? models.length), 10) || models.length;
|
|
38
|
+
const firstModel = models[0];
|
|
39
|
+
if (!models.length) {
|
|
14
40
|
return {
|
|
15
41
|
content: [{
|
|
16
42
|
type: 'text',
|
|
17
43
|
text: `No models found for "${task}". Try a different description or use \`search_models\` with specific categories.`,
|
|
18
44
|
}],
|
|
45
|
+
structuredContent: {
|
|
46
|
+
models: [],
|
|
47
|
+
total,
|
|
48
|
+
start: 0,
|
|
49
|
+
limit: 10,
|
|
50
|
+
nextStart: null,
|
|
51
|
+
},
|
|
19
52
|
};
|
|
20
53
|
}
|
|
21
|
-
const text = formatModelList(
|
|
54
|
+
const text = formatModelList(models, `## Recommended Models for "${task}" (${models.length} results)`);
|
|
22
55
|
const footer = `\n\n*Use \`get_model_schema\` to see full parameters and pricing for any model.*`;
|
|
23
56
|
return {
|
|
24
57
|
content: [{ type: 'text', text: text + footer }],
|
|
58
|
+
structuredContent: {
|
|
59
|
+
models: models.map(toStructuredModel),
|
|
60
|
+
total,
|
|
61
|
+
start: 0,
|
|
62
|
+
limit: 10,
|
|
63
|
+
nextStart: null,
|
|
64
|
+
nextAction: {
|
|
65
|
+
tool: 'get_model_schema',
|
|
66
|
+
arguments: {
|
|
67
|
+
model: `${firstModel.cleanslugowner}/${firstModel.cleanslugproject}`,
|
|
68
|
+
},
|
|
69
|
+
reason: 'Inspect the selected model parameters before running it.',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
25
72
|
};
|
|
26
73
|
}
|
|
27
74
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommend-model.js","sourceRoot":"","sources":["../../src/tools/recommend-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAkB;IAC1E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"recommend-model.js","sourceRoot":"","sources":["../../src/tools/recommend-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAkB;IAC1E,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,6DAA6D;cACtE,oDAAoD;cACpD,wDAAwD;QAC5D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uHAAuH,CAAC;SACnJ;QACD,YAAY,EAAE,qBAAqB;QACnC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;gBACvC,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;uBAChE,8BAA8B,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,OAAO,EAAE,EAAE,CAAC;oBACpE,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC;YAC1F,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wBAAwB,IAAI,mFAAmF;yBACtH,CAAC;oBACF,iBAAiB,EAAE;wBACjB,MAAM,EAAE,EAAE;wBACV,KAAK;wBACL,KAAK,EAAE,CAAC;wBACR,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;qBAChB;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,8BAA8B,IAAI,MAAM,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YACvG,MAAM,MAAM,GAAG,kFAAkF,CAAC;YAElG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;gBACzD,iBAAiB,EAAE;oBACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBACrC,KAAK;oBACL,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,EAAE;oBACT,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE;wBACV,IAAI,EAAE,kBAAkB;wBACxB,SAAS,EAAE;4BACT,KAAK,EAAE,GAAG,UAAU,CAAC,cAAc,IAAI,UAAU,CAAC,gBAAgB,EAAE;yBACrE;wBACD,MAAM,EAAE,0DAA0D;qBACnE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type WiroClient } from '../client.js';
|
|
3
3
|
export declare function registerRunModel(server: McpServer, client: WiroClient): void;
|
|
4
4
|
//# 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,KAAK,
|
|
1
|
+
{"version":3,"file":"run-model.d.ts","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AActB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA6J5E"}
|
package/dist/tools/run-model.js
CHANGED
|
@@ -1,17 +1,33 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { TaskPollingError, TaskWaitTimeoutError, } from '../client.js';
|
|
3
|
+
import { formatTaskPending, formatTaskResult, formatTaskSubmitted, } from '../utils/format.js';
|
|
4
|
+
import { createTaskContent, toPendingTaskResult, toStructuredTaskResult, } from '../utils/structured.js';
|
|
5
|
+
import { taskResultOutputSchema } from './schemas.js';
|
|
3
6
|
export function registerRunModel(server, client) {
|
|
4
|
-
server.
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
server.registerTool('run_model', {
|
|
8
|
+
title: 'Run a Wiro model',
|
|
9
|
+
description: 'Run any AI model on Wiro. Supports image, video, text, audio, '
|
|
10
|
+
+ '3D, and more. Call `get_model_schema` first. With `wait=true` this '
|
|
11
|
+
+ 'performs a bounded wait; when the response contains '
|
|
12
|
+
+ '`nextAction.tool = "wait_for_task"`, call that tool with the exact '
|
|
13
|
+
+ 'arguments returned. Never call `run_model` again for the same request.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
model: z.string().describe('Model slug in "owner/model" format, e.g. "openai/sora-2", "google/nano-banana-pro"'),
|
|
16
|
+
params: z.record(z.string(), z.unknown()).describe('Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. For file parameters (fileinput, multifileinput, combinefileinput), pass URLs directly — no upload needed. For combinefileinput, pass an array of URLs.'),
|
|
17
|
+
wait: z.boolean().default(true).describe('If true, poll until completion and return the result. If false, return the task identifiers immediately.'),
|
|
18
|
+
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.'),
|
|
19
|
+
},
|
|
20
|
+
outputSchema: taskResultOutputSchema,
|
|
21
|
+
annotations: {
|
|
22
|
+
readOnlyHint: false,
|
|
23
|
+
destructiveHint: false,
|
|
24
|
+
idempotentHint: false,
|
|
25
|
+
openWorldHint: true,
|
|
26
|
+
},
|
|
27
|
+
}, async ({ model, params, wait, timeout_seconds }, extra) => {
|
|
28
|
+
let runResult;
|
|
13
29
|
try {
|
|
14
|
-
|
|
30
|
+
runResult = await client.runModel(model, params, extra.signal);
|
|
15
31
|
if (!runResult.result) {
|
|
16
32
|
const errors = runResult.errors?.map(e => e.message).join(', ') || 'Unknown error';
|
|
17
33
|
return {
|
|
@@ -23,26 +39,106 @@ export function registerRunModel(server, client) {
|
|
|
23
39
|
return {
|
|
24
40
|
content: [{
|
|
25
41
|
type: 'text',
|
|
26
|
-
text:
|
|
27
|
-
`**Task ID:** ${runResult.taskid}\n` +
|
|
28
|
-
`**Task Token:** ${runResult.socketaccesstoken}\n\n` +
|
|
29
|
-
`Use \`get_task\` with this token to check results.`,
|
|
42
|
+
text: formatTaskSubmitted(runResult.taskid, runResult.socketaccesstoken),
|
|
30
43
|
}],
|
|
44
|
+
structuredContent: toPendingTaskResult({
|
|
45
|
+
taskid: runResult.taskid,
|
|
46
|
+
tasktoken: runResult.socketaccesstoken,
|
|
47
|
+
model,
|
|
48
|
+
}),
|
|
31
49
|
};
|
|
32
50
|
}
|
|
33
|
-
const detail = await client.waitForTask(runResult.socketaccesstoken, timeout_seconds * 1000
|
|
51
|
+
const detail = await client.waitForTask(runResult.socketaccesstoken, timeout_seconds * 1000, {
|
|
52
|
+
signal: extra.signal,
|
|
53
|
+
onPoll: async (task, context) => {
|
|
54
|
+
const progressToken = extra._meta?.progressToken;
|
|
55
|
+
if (progressToken === undefined)
|
|
56
|
+
return;
|
|
57
|
+
try {
|
|
58
|
+
await extra.sendNotification({
|
|
59
|
+
method: 'notifications/progress',
|
|
60
|
+
params: {
|
|
61
|
+
progressToken,
|
|
62
|
+
progress: context.elapsedMs / 1000,
|
|
63
|
+
message: `Task status: ${task.status}`,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Progress is best-effort and must never interrupt task polling.
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
});
|
|
34
72
|
const task = detail.tasklist?.[0];
|
|
35
73
|
if (!task) {
|
|
74
|
+
const reason = 'The status endpoint returned no task data.';
|
|
36
75
|
return {
|
|
37
|
-
content: [{
|
|
38
|
-
|
|
76
|
+
content: [{
|
|
77
|
+
type: 'text',
|
|
78
|
+
text: formatTaskPending({
|
|
79
|
+
taskid: runResult.taskid,
|
|
80
|
+
tasktoken: runResult.socketaccesstoken,
|
|
81
|
+
timeoutSeconds: timeout_seconds,
|
|
82
|
+
reason,
|
|
83
|
+
}),
|
|
84
|
+
}],
|
|
85
|
+
structuredContent: toPendingTaskResult({
|
|
86
|
+
taskid: runResult.taskid,
|
|
87
|
+
tasktoken: runResult.socketaccesstoken,
|
|
88
|
+
model,
|
|
89
|
+
reason,
|
|
90
|
+
}),
|
|
39
91
|
};
|
|
40
92
|
}
|
|
41
93
|
return {
|
|
42
|
-
content:
|
|
94
|
+
content: createTaskContent(formatTaskResult(task), task),
|
|
95
|
+
structuredContent: toStructuredTaskResult(task, {
|
|
96
|
+
taskid: runResult.taskid,
|
|
97
|
+
tasktoken: runResult.socketaccesstoken,
|
|
98
|
+
model,
|
|
99
|
+
}),
|
|
43
100
|
};
|
|
44
101
|
}
|
|
45
102
|
catch (error) {
|
|
103
|
+
if (runResult?.result && runResult.socketaccesstoken) {
|
|
104
|
+
const lastDetail = error instanceof TaskWaitTimeoutError
|
|
105
|
+
|| error instanceof TaskPollingError
|
|
106
|
+
? error.lastDetail
|
|
107
|
+
: undefined;
|
|
108
|
+
const lastTask = lastDetail?.tasklist?.[0];
|
|
109
|
+
const reason = error instanceof TaskWaitTimeoutError
|
|
110
|
+
? undefined
|
|
111
|
+
: 'Task submission succeeded, but status monitoring was interrupted.';
|
|
112
|
+
const structured = lastTask
|
|
113
|
+
? toStructuredTaskResult(lastTask, {
|
|
114
|
+
taskid: runResult.taskid,
|
|
115
|
+
tasktoken: runResult.socketaccesstoken,
|
|
116
|
+
model,
|
|
117
|
+
})
|
|
118
|
+
: toPendingTaskResult({
|
|
119
|
+
taskid: runResult.taskid,
|
|
120
|
+
tasktoken: runResult.socketaccesstoken,
|
|
121
|
+
model,
|
|
122
|
+
reason,
|
|
123
|
+
});
|
|
124
|
+
if (reason)
|
|
125
|
+
structured.error = reason;
|
|
126
|
+
return {
|
|
127
|
+
content: [{
|
|
128
|
+
type: 'text',
|
|
129
|
+
text: formatTaskPending({
|
|
130
|
+
taskid: runResult.taskid,
|
|
131
|
+
tasktoken: runResult.socketaccesstoken,
|
|
132
|
+
status: lastTask?.status,
|
|
133
|
+
timeoutSeconds: error instanceof TaskWaitTimeoutError
|
|
134
|
+
? timeout_seconds
|
|
135
|
+
: undefined,
|
|
136
|
+
reason,
|
|
137
|
+
}),
|
|
138
|
+
}],
|
|
139
|
+
structuredContent: structured,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
46
142
|
return {
|
|
47
143
|
content: [{ type: 'text', text: `## Error\n\n${error instanceof Error ? error.message : String(error)}` }],
|
|
48
144
|
isError: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-model.js","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"run-model.js","sourceRoot":"","sources":["../../src/tools/run-model.ts"],"names":[],"mappings":"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"}
|