unreal-engine-mcp-server 0.6.0-beta-c → 0.6.0-beta-e
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/CHANGELOG.md +148 -9
- package/README.md +2 -2
- package/dist/gateway/gateway-manifest.generated.json +838 -133
- package/dist/proxy/native-proxy.js +6 -5
- package/dist/server/gateway/gateway-execute-dispatch.js +2 -1
- package/dist/server/gateway/gateway-execute-envelope.js +5 -1
- package/dist/server/gateway/gateway-execute-lookup.js +1 -1
- package/dist/server/gateway/gateway-execute.js +17 -4
- package/dist/server/gateway/gateway-schema-validate.js +13 -2
- package/dist/server/gateway/gateway-task-results.d.ts +6 -0
- package/dist/server/gateway/gateway-task-results.js +40 -0
- package/dist/server/tool-registry-manage-tools.js +4 -1
- package/dist/tools/catalog/capabilities/generated/canonical-registry.generated.d.ts +2 -2
- package/dist/tools/catalog/capabilities/generated/canonical-registry.generated.js +2 -2
- package/dist/tools/catalog/capabilities/generated/canonical-registry.generated.json +4079 -618
- package/dist/tools/catalog/capabilities/generated/capability-cost-index.generated.d.ts +1 -1
- package/dist/tools/catalog/capabilities/generated/capability-cost-index.generated.js +18 -1
- package/dist/tools/catalog/capabilities/generated/parent-tool-definitions.generated.js +1546 -212
- package/dist/tools/catalog/capabilities/records/aggregate.d.ts +1 -1
- package/dist/tools/catalog/capabilities/records/aggregate.js +1 -1
- package/dist/tools/catalog/capabilities/records/build-environment/spline.data.js +4 -3
- package/dist/tools/catalog/capabilities/records/build-environment/water.data.js +8 -5
- package/dist/tools/catalog/capabilities/records/control-actor/advanced-records.js +29 -8
- package/dist/tools/catalog/capabilities/records/control-actor/search-records.js +2 -2
- package/dist/tools/catalog/capabilities/records/control-actor/spawn-records.js +13 -5
- package/dist/tools/catalog/capabilities/records/control-actor/state-records.js +2 -1
- package/dist/tools/catalog/capabilities/records/control-actor/transform-records.js +27 -9
- package/dist/tools/catalog/capabilities/records/control-editor/asset.js +4 -1
- package/dist/tools/catalog/capabilities/records/control-editor/camera.js +5 -1
- package/dist/tools/catalog/capabilities/records/control-editor/command.js +5 -1
- package/dist/tools/catalog/capabilities/records/control-editor/input.js +2 -1
- package/dist/tools/catalog/capabilities/records/control-editor/screenshot.js +2 -1
- package/dist/tools/catalog/capabilities/records/control-editor/session.js +8 -1
- package/dist/tools/catalog/capabilities/records/control-editor/timing.js +5 -3
- package/dist/tools/catalog/capabilities/records/core/builder.d.ts +1 -0
- package/dist/tools/catalog/capabilities/records/core/builder.js +1 -0
- package/dist/tools/catalog/capabilities/records/folds/build-environment.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/folds/control-actor.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/folds/manage-asset.folds.js +8 -8
- package/dist/tools/catalog/capabilities/records/folds/manage-audio.folds.js +5 -5
- package/dist/tools/catalog/capabilities/records/folds/manage-blueprint.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/folds/manage-effect.folds.js +3 -3
- package/dist/tools/catalog/capabilities/records/folds/manage-sequence.folds.js +6 -6
- package/dist/tools/catalog/capabilities/records/folds/system-control.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/gameplay/animation-physics/animation-properties.js +7 -5
- package/dist/tools/catalog/capabilities/records/gameplay/animation-physics/authoring-1.data.js +86 -1
- package/dist/tools/catalog/capabilities/records/gameplay/animation-physics/authoring-2.data.js +7 -2
- package/dist/tools/catalog/capabilities/records/gameplay/manage-effect/effect-properties.js +7 -6
- package/dist/tools/catalog/capabilities/records/gameplay/manage-effect/effect.data.js +38 -27
- package/dist/tools/catalog/capabilities/records/inspect/component-actor.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/inspect/object-property.data.js +188 -10
- package/dist/tools/catalog/capabilities/records/inspect/properties.d.ts +1 -0
- package/dist/tools/catalog/capabilities/records/inspect/properties.js +2 -1
- package/dist/tools/catalog/capabilities/records/inspect/runtime.data.js +2 -1
- package/dist/tools/catalog/capabilities/records/inspect/stats.data.js +6 -2
- package/dist/tools/catalog/capabilities/records/manage-asset/asset-advanced.js +46 -0
- package/dist/tools/catalog/capabilities/records/manage-asset/asset-lifecycle.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-asset/asset-query.js +4 -3
- package/dist/tools/catalog/capabilities/records/manage-asset/builder.d.ts +3 -0
- package/dist/tools/catalog/capabilities/records/manage-asset/builder.js +3 -0
- package/dist/tools/catalog/capabilities/records/manage-asset/content-sources.js +3 -1
- package/dist/tools/catalog/capabilities/records/manage-asset/material-create.js +17 -2
- package/dist/tools/catalog/capabilities/records/manage-asset/material-graph.js +7 -5
- package/dist/tools/catalog/capabilities/records/manage-asset/material-params.js +5 -5
- package/dist/tools/catalog/capabilities/records/manage-audio/authoring.data.js +15 -5
- package/dist/tools/catalog/capabilities/records/manage-audio/runtime.data.js +1 -0
- package/dist/tools/catalog/capabilities/records/manage-blueprint/functions-events.js +3 -2
- package/dist/tools/catalog/capabilities/records/manage-blueprint/graph-batch.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-blueprint/graph-pins.js +6 -2
- package/dist/tools/catalog/capabilities/records/manage-blueprint/properties.js +4 -2
- package/dist/tools/catalog/capabilities/records/manage-blueprint/scs-components.js +7 -2
- package/dist/tools/catalog/capabilities/records/manage-blueprint/variables-metadata.js +8 -2
- package/dist/tools/catalog/capabilities/records/manage-blueprint/widget-animation.js +14 -4
- package/dist/tools/catalog/capabilities/records/manage-blueprint/widget-lifecycle.js +13 -5
- package/dist/tools/catalog/capabilities/records/manage-blueprint/widget-panels.js +1 -1
- package/dist/tools/catalog/capabilities/records/manage-sequence/cinematic.js +12 -3
- package/dist/tools/catalog/capabilities/records/manage-sequence/helpers.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-sequence/mrq.js +23 -4
- package/dist/tools/catalog/capabilities/records/manage-sequence/timeline-bindings.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-sequence/timeline-lifecycle.js +7 -2
- package/dist/tools/catalog/capabilities/records/manage-sequence/timeline-playback.js +9 -5
- package/dist/tools/catalog/capabilities/records/manage-sequence/timeline-state-ranges.js +19 -0
- package/dist/tools/catalog/capabilities/records/manage-sequence/timeline-tracks.js +10 -5
- package/dist/tools/catalog/capabilities/records/manage-tools/index.js +30 -2
- package/dist/tools/catalog/capabilities/records/system-control/console.js +3 -1
- package/dist/tools/catalog/capabilities/records/system-control/system-ops.js +122 -10
- package/dist/tools/catalog/capabilities/records/utility/output-glossary.js +11 -0
- package/dist/tools/catalog/capabilities/records/utility/utility-schema-pins.js +6 -3
- package/dist/tools/catalog/capabilities/records/world/manage-geometry.optimize.data.js +29 -0
- package/dist/tools/catalog/capabilities/records/world/manage-geometry.primitives.data.js +2 -1
- package/dist/tools/catalog/capabilities/records/world/properties.js +2 -2
- package/dist/tools/catalog/capabilities/semantic/envelope.d.ts +1 -1
- package/dist/tools/catalog/capabilities/semantic/errors.d.ts +1 -1
- package/dist/tools/catalog/unreal-gateway-definition.js +2 -2
- package/dist/utils/responses/gateway-reply-compaction.d.ts +6 -0
- package/dist/utils/responses/gateway-reply-compaction.js +264 -0
- package/dist/utils/responses/response-content.d.ts +0 -1
- package/dist/utils/responses/response-content.js +0 -172
- package/dist/utils/responses/response-validator.d.ts +1 -1
- package/dist/utils/responses/response-validator.js +39 -8
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { request } from 'node:http';
|
|
2
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
-
import {
|
|
4
|
-
import { join } from 'node:path';
|
|
2
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
5
|
import { createInterface } from 'node:readline';
|
|
6
6
|
import { CapabilityTokenProvider } from '../automation/capability-token-provider.js';
|
|
7
7
|
import { PACKAGE } from '../constants.js';
|
|
@@ -16,7 +16,7 @@ const PLACEHOLDER_TOOL = {
|
|
|
16
16
|
export function startNativeProxy(options = {}) {
|
|
17
17
|
const upstream = options.upstream ?? process.env.UNREAL_MCP_URL ?? 'http://127.0.0.1:3000/mcp';
|
|
18
18
|
const cacheFile = options.cacheFile ?? process.env.UNREAL_MCP_PROXY_CACHE
|
|
19
|
-
?? join(
|
|
19
|
+
?? join(process.env.LOCALAPPDATA ?? process.env.XDG_CACHE_HOME ?? join(homedir(), '.cache'), 'unreal-mcp', `proxy-${new URL(upstream).port || '80'}.json`);
|
|
20
20
|
const output = options.output ?? process.stdout;
|
|
21
21
|
const log = new Logger('NativeProxy');
|
|
22
22
|
const tokenProvider = new CapabilityTokenProvider(undefined, log);
|
|
@@ -39,7 +39,8 @@ export function startNativeProxy(options = {}) {
|
|
|
39
39
|
const remember = (patch) => {
|
|
40
40
|
cache = { ...cache, ...patch };
|
|
41
41
|
try {
|
|
42
|
-
|
|
42
|
+
mkdirSync(dirname(cacheFile), { recursive: true, mode: 0o700 });
|
|
43
|
+
writeFileSync(cacheFile, JSON.stringify(cache), { mode: 0o600 });
|
|
43
44
|
}
|
|
44
45
|
catch (error) {
|
|
45
46
|
log.warn(`cache not written: ${String(error)}`);
|
|
@@ -34,7 +34,8 @@ export function projectCanonicalOutput(result, schema) {
|
|
|
34
34
|
const details = existing ? { ...existing } : {};
|
|
35
35
|
const fold = (source) => {
|
|
36
36
|
for (const [name, value] of Object.entries(source)) {
|
|
37
|
-
if (name === 'data' || name === 'requestId' || name === 'type' || name
|
|
37
|
+
if (name === 'data' || name === 'requestId' || name === 'type' || name === 'liveRevisions' || name === 'message'
|
|
38
|
+
|| name in schema.properties)
|
|
38
39
|
continue;
|
|
39
40
|
if (!(name in details))
|
|
40
41
|
details[name] = value;
|
|
@@ -162,7 +162,7 @@ export function executeSuccessEnvelope(input, context) {
|
|
|
162
162
|
capabilityId,
|
|
163
163
|
data: publishedData,
|
|
164
164
|
handles: extractHandles(input.result),
|
|
165
|
-
changes: extractChanges(input.result),
|
|
165
|
+
changes: input.record.behavior.effect === 'read' ? [] : extractChanges(input.result),
|
|
166
166
|
task: extractTask(input.result),
|
|
167
167
|
warnings: input.warnings,
|
|
168
168
|
...correlationFields(context),
|
|
@@ -171,9 +171,13 @@ export function executeSuccessEnvelope(input, context) {
|
|
|
171
171
|
validation: { outputSchema: 'passed' },
|
|
172
172
|
liveRevisions
|
|
173
173
|
});
|
|
174
|
+
const handlerMessage = typeof input.result === 'object' && input.result !== null && 'message' in input.result
|
|
175
|
+
? input.result.message
|
|
176
|
+
: undefined;
|
|
174
177
|
return definedOnly({
|
|
175
178
|
success: true,
|
|
176
179
|
operation: 'execute',
|
|
180
|
+
message: typeof handlerMessage === 'string' && handlerMessage !== '' ? redactText(handlerMessage) : undefined,
|
|
177
181
|
correlationId: context.correlationId,
|
|
178
182
|
catalogRevision: catalogRevision(),
|
|
179
183
|
...capabilityFields(input.record),
|
|
@@ -69,7 +69,7 @@ function lookupByLegacyPair(requestedTool, action, index) {
|
|
|
69
69
|
kind: 'failed',
|
|
70
70
|
failure: {
|
|
71
71
|
errorCode: 'UNKNOWN_ACTION',
|
|
72
|
-
message: `Unknown action for ${tool}.${guide.hint} Call describe before execute.`,
|
|
72
|
+
message: `Unknown action ${action === undefined ? '' : `'${action}' `}for ${tool}.${guide.hint} Call describe before execute.`,
|
|
73
73
|
availableActions: available,
|
|
74
74
|
suggestions: guide.suggestions,
|
|
75
75
|
nextCall: guide.nextCall
|
|
@@ -10,6 +10,7 @@ import { dispatchAndValidate } from './gateway-execute-dispatch.js';
|
|
|
10
10
|
import { checkConsentAuthorization, checkExpectedCatalogRevision, checkScopeAuthorization, matchedFoldedGrant } from './gateway-execute-policy.js';
|
|
11
11
|
import { ConsentGrantSchema } from '../../tools/catalog/capabilities/semantic/authorization.js';
|
|
12
12
|
import { buildReceiptContext } from './gateway-receipt-context.js';
|
|
13
|
+
import { noteTaskDone, noteTaskRunning } from './gateway-task-results.js';
|
|
13
14
|
import { conflictMessage, IDEMPOTENCY_CONFLICT_CODE, LOCAL_PRINCIPAL, markReplayed, runWithIdempotency, sharedExecuteLedger } from './gateway-execute-idempotency.js';
|
|
14
15
|
export async function executeGatewayCall(args, context, correlationId) {
|
|
15
16
|
const options = isRecord(args.options) ? args.options : undefined;
|
|
@@ -106,7 +107,7 @@ export async function executeGatewayCall(args, context, correlationId) {
|
|
|
106
107
|
action: target.legacy.action
|
|
107
108
|
})
|
|
108
109
|
}, receiptContext), (recorded) => markReplayed(recorded, receiptContext.correlationId));
|
|
109
|
-
if (
|
|
110
|
+
if (checked.timeoutMs !== undefined)
|
|
110
111
|
return await settled;
|
|
111
112
|
return await answerWhileRunning(settled, target.record, receiptContext, context);
|
|
112
113
|
}
|
|
@@ -119,12 +120,24 @@ async function answerWhileRunning(settled, record, receiptContext, context) {
|
|
|
119
120
|
const first = await Promise.race([settled, running]).finally(() => clearTimeout(timer));
|
|
120
121
|
if (first !== undefined)
|
|
121
122
|
return first;
|
|
122
|
-
|
|
123
|
+
const taskId = receiptContext.correlationId;
|
|
124
|
+
noteTaskRunning(taskId);
|
|
125
|
+
settled.then((receipt) => {
|
|
126
|
+
noteTaskDone(taskId, receipt);
|
|
127
|
+
context.logger.info(`${record.id} finished after its still-running answer (success=${String(receipt.success)}).`);
|
|
128
|
+
}, (error) => {
|
|
129
|
+
const text = error instanceof Error ? error.message : String(error);
|
|
130
|
+
noteTaskDone(taskId, { success: false, errorCode: 'EXECUTION_ERROR', message: text });
|
|
131
|
+
context.logger.warn(`${record.id} failed after its still-running answer: ${text}`);
|
|
132
|
+
});
|
|
133
|
+
const again = receiptContext.idempotencyId === undefined
|
|
134
|
+
? 'do not send this call again: it would run twice.'
|
|
135
|
+
: 'the same call with the same idempotencyKey also answers with it instead of running again.';
|
|
123
136
|
const message = `Still running after ${STILL_RUNNING_AFTER_MS / 1000} s. Unreal keeps going; this answer does not stop it. `
|
|
124
|
-
+
|
|
137
|
+
+ `Read its result with manage_tools get_task_result taskId ${taskId} once it is done; ${again}`;
|
|
125
138
|
return executeSuccessEnvelope({
|
|
126
139
|
record,
|
|
127
|
-
result: { success: true, message, task: { taskId
|
|
140
|
+
result: { success: true, message, task: { taskId, state: 'running' } },
|
|
128
141
|
canonicalOutput: { message },
|
|
129
142
|
warnings: []
|
|
130
143
|
}, receiptContext);
|
|
@@ -131,10 +131,14 @@ function validateObject(value, schema, pointer) {
|
|
|
131
131
|
if (Array.isArray(schema.required)) {
|
|
132
132
|
for (const name of schema.required) {
|
|
133
133
|
if (typeof name === 'string' && !Object.hasOwn(value, name)) {
|
|
134
|
+
const stray = schema.additionalProperties === false
|
|
135
|
+
? Object.keys(value).filter((key) => properties === undefined || !Object.hasOwn(properties, key))
|
|
136
|
+
: [];
|
|
137
|
+
const missing = describeMissingParameter(name, properties);
|
|
134
138
|
return {
|
|
135
139
|
reason: 'missing-required',
|
|
136
140
|
pointer: `${pointer}/${name}`,
|
|
137
|
-
message:
|
|
141
|
+
message: stray.length === 0 ? missing : `${missing}; sent ${stray.join(', ')}, which this action does not take`
|
|
138
142
|
};
|
|
139
143
|
}
|
|
140
144
|
}
|
|
@@ -227,9 +231,9 @@ export function applyDeclaredDefaults(params, schema) {
|
|
|
227
231
|
return withDefaults;
|
|
228
232
|
}
|
|
229
233
|
export const VECTOR_KEY_SETS = [
|
|
234
|
+
['pitch', 'yaw', 'roll'],
|
|
230
235
|
['x', 'y', 'z', 'w'],
|
|
231
236
|
['x', 'y', 'z'],
|
|
232
|
-
['pitch', 'yaw', 'roll'],
|
|
233
237
|
['r', 'g', 'b', 'a'],
|
|
234
238
|
['width', 'height'],
|
|
235
239
|
['x', 'y']
|
|
@@ -255,6 +259,11 @@ function objectToVector(value) {
|
|
|
255
259
|
}
|
|
256
260
|
return undefined;
|
|
257
261
|
}
|
|
262
|
+
function isShadowedByLongerSet(keys, declared) {
|
|
263
|
+
return VECTOR_KEY_SETS.some((longer) => longer.length > keys.length
|
|
264
|
+
&& keys.every((key) => longer.includes(key))
|
|
265
|
+
&& longer.some((key) => !keys.includes(key) && declared.includes(key)));
|
|
266
|
+
}
|
|
258
267
|
function vectorToObject(values, propertySchema) {
|
|
259
268
|
const declared = isRecord(propertySchema.properties) ? Object.keys(propertySchema.properties) : [];
|
|
260
269
|
if (declared.length === 0)
|
|
@@ -263,6 +272,8 @@ function vectorToObject(values, propertySchema) {
|
|
|
263
272
|
const required = keys.length === 4 ? keys.length - 1 : keys.length;
|
|
264
273
|
if (!keys.slice(0, required).every((key) => declared.includes(key)))
|
|
265
274
|
continue;
|
|
275
|
+
if (isShadowedByLongerSet(keys, declared))
|
|
276
|
+
continue;
|
|
266
277
|
const consumed = keys.filter((key) => declared.includes(key));
|
|
267
278
|
if (values.length < required || values.length > consumed.length)
|
|
268
279
|
continue;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const MAX_KEPT_TASKS = 32;
|
|
2
|
+
export declare function noteTaskRunning(taskId: string): void;
|
|
3
|
+
export declare function noteTaskDone(taskId: string, reply: Record<string, unknown>): void;
|
|
4
|
+
export declare function describeTask(taskId: string): Record<string, unknown>;
|
|
5
|
+
export declare function resetTasksForTest(): void;
|
|
6
|
+
//# sourceMappingURL=gateway-task-results.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { compactGatewayReply } from '../../utils/responses/gateway-reply-compaction.js';
|
|
2
|
+
export const MAX_KEPT_TASKS = 32;
|
|
3
|
+
const tasks = new Map();
|
|
4
|
+
function remember(taskId, entry) {
|
|
5
|
+
tasks.delete(taskId);
|
|
6
|
+
tasks.set(taskId, entry);
|
|
7
|
+
while (tasks.size > MAX_KEPT_TASKS) {
|
|
8
|
+
const oldest = tasks.keys().next().value;
|
|
9
|
+
if (oldest === undefined)
|
|
10
|
+
break;
|
|
11
|
+
tasks.delete(oldest);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function noteTaskRunning(taskId) {
|
|
15
|
+
remember(taskId, { state: 'running' });
|
|
16
|
+
}
|
|
17
|
+
export function noteTaskDone(taskId, reply) {
|
|
18
|
+
remember(taskId, { state: 'done', reply });
|
|
19
|
+
}
|
|
20
|
+
export function describeTask(taskId) {
|
|
21
|
+
const entry = tasks.get(taskId);
|
|
22
|
+
if (entry === undefined) {
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
errorCode: 'TASK_NOT_FOUND',
|
|
26
|
+
error: `No task ${taskId}: only a call answered "still running" since the server started is kept, the last ${MAX_KEPT_TASKS} of them.`
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (entry.state === 'running') {
|
|
30
|
+
return { success: true, taskId, state: 'running', message: `Task ${taskId} is still running.` };
|
|
31
|
+
}
|
|
32
|
+
const outcome = { ...compactGatewayReply(entry.reply) };
|
|
33
|
+
delete outcome.operation;
|
|
34
|
+
outcome.success = entry.reply.success === true;
|
|
35
|
+
return { success: true, taskId, state: 'done', outcome, message: `Task ${taskId} is done.` };
|
|
36
|
+
}
|
|
37
|
+
export function resetTasksForTest() {
|
|
38
|
+
tasks.clear();
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=gateway-task-results.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CATALOG_REVISION } from '../tools/catalog/capabilities/generated/canonical-registry.generated.js';
|
|
2
2
|
import { dynamicToolManager } from '../tools/dynamic/dynamic-tool-manager.js';
|
|
3
3
|
import { getString } from './gateway/gateway-shared.js';
|
|
4
|
+
import { describeTask } from './gateway/gateway-task-results.js';
|
|
4
5
|
const VALID_TOOL_CATEGORIES = ['core', 'world', 'gameplay', 'utility', 'all'];
|
|
5
6
|
function getStringArray(args, key) {
|
|
6
7
|
const val = args[key];
|
|
@@ -29,6 +30,8 @@ export async function handleManageToolsCall(args) {
|
|
|
29
30
|
return setCategoryEnabled(args, false);
|
|
30
31
|
case 'get_status':
|
|
31
32
|
return getStatus();
|
|
33
|
+
case 'get_task_result':
|
|
34
|
+
return describeTask(getString(args, 'taskId') ?? '');
|
|
32
35
|
case 'reset': {
|
|
33
36
|
const result = dynamicToolManager.reset();
|
|
34
37
|
return {
|
|
@@ -40,7 +43,7 @@ export async function handleManageToolsCall(args) {
|
|
|
40
43
|
default:
|
|
41
44
|
return {
|
|
42
45
|
success: false,
|
|
43
|
-
error: `Unknown action: ${action}. Available: list_tools, list_categories, enable_tools, disable_tools, enable_category, disable_category, get_status, reset`,
|
|
46
|
+
error: `Unknown action: ${action}. Available: list_tools, list_categories, enable_tools, disable_tools, enable_category, disable_category, get_status, get_task_result, reset`,
|
|
44
47
|
errorCode: 'UNKNOWN_ACTION'
|
|
45
48
|
};
|
|
46
49
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CapabilityRecord } from '../model.js';
|
|
2
|
-
export declare const CANONICAL_CAPABILITY_RECORD_COUNT =
|
|
3
|
-
export declare const CATALOG_REVISION = "
|
|
2
|
+
export declare const CANONICAL_CAPABILITY_RECORD_COUNT = 405;
|
|
3
|
+
export declare const CATALOG_REVISION = "6a9b00e40ef5b820";
|
|
4
4
|
export declare const CANONICAL_CAPABILITY_RECORDS: readonly CapabilityRecord[];
|
|
5
5
|
export type { CapabilityRecord };
|
|
6
6
|
//# sourceMappingURL=canonical-registry.generated.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import registry from './canonical-registry.generated.json' with { type: 'json' };
|
|
2
2
|
import { parseCapabilityCatalog } from '../parser.js';
|
|
3
|
-
export const CANONICAL_CAPABILITY_RECORD_COUNT =
|
|
4
|
-
export const CATALOG_REVISION = "
|
|
3
|
+
export const CANONICAL_CAPABILITY_RECORD_COUNT = 405;
|
|
4
|
+
export const CATALOG_REVISION = "6a9b00e40ef5b820";
|
|
5
5
|
export const CANONICAL_CAPABILITY_RECORDS = parseCapabilityCatalog(registry.records);
|
|
6
6
|
//# sourceMappingURL=canonical-registry.generated.js.map
|