@apify/actors-mcp-server 0.6.8 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -2
- package/dist/actor/server.d.ts.map +1 -1
- package/dist/actor/server.js +6 -0
- package/dist/actor/server.js.map +1 -1
- package/dist/const.d.ts +1 -1
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +14 -2
- package/dist/const.js.map +1 -1
- package/dist/index-internals.d.ts +5 -4
- package/dist/index-internals.d.ts.map +1 -1
- package/dist/index-internals.js +4 -3
- package/dist/index-internals.js.map +1 -1
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +135 -25
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/utils.d.ts +3 -2
- package/dist/mcp/utils.d.ts.map +1 -1
- package/dist/mcp/utils.js +3 -2
- package/dist/mcp/utils.js.map +1 -1
- package/dist/stdio.js +11 -1
- package/dist/stdio.js.map +1 -1
- package/dist/tools/actor.d.ts.map +1 -1
- package/dist/tools/actor.js +100 -89
- package/dist/tools/actor.js.map +1 -1
- package/dist/tools/categories.d.ts +15 -0
- package/dist/tools/categories.d.ts.map +1 -0
- package/dist/tools/categories.js +52 -0
- package/dist/tools/categories.js.map +1 -0
- package/dist/tools/fetch-actor-details.d.ts.map +1 -1
- package/dist/tools/fetch-actor-details.js +136 -26
- package/dist/tools/fetch-actor-details.js.map +1 -1
- package/dist/tools/index.d.ts +8 -11
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +18 -67
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/run.d.ts.map +1 -1
- package/dist/tools/run.js +75 -9
- package/dist/tools/run.js.map +1 -1
- package/dist/tools/store_collection.d.ts.map +1 -1
- package/dist/tools/store_collection.js +45 -10
- package/dist/tools/store_collection.js.map +1 -1
- package/dist/tools/structured-output-schemas.d.ts +1 -1
- package/dist/tools/structured-output-schemas.d.ts.map +1 -1
- package/dist/tools/structured-output-schemas.js +1 -1
- package/dist/tools/structured-output-schemas.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/actor-card.d.ts +35 -3
- package/dist/utils/actor-card.d.ts.map +1 -1
- package/dist/utils/actor-card.js +174 -66
- package/dist/utils/actor-card.js.map +1 -1
- package/dist/utils/actor-details.d.ts +21 -2
- package/dist/utils/actor-details.d.ts.map +1 -1
- package/dist/utils/actor-details.js +37 -3
- package/dist/utils/actor-details.js.map +1 -1
- package/dist/utils/mcp.d.ts +3 -0
- package/dist/utils/mcp.d.ts.map +1 -1
- package/dist/utils/mcp.js +6 -1
- package/dist/utils/mcp.js.map +1 -1
- package/dist/utils/tool-categories-helpers.d.ts +10 -0
- package/dist/utils/tool-categories-helpers.d.ts.map +1 -0
- package/dist/utils/tool-categories-helpers.js +19 -0
- package/dist/utils/tool-categories-helpers.js.map +1 -0
- package/dist/utils/tools-loader.d.ts +3 -2
- package/dist/utils/tools-loader.d.ts.map +1 -1
- package/dist/utils/tools-loader.js +12 -2
- package/dist/utils/tools-loader.js.map +1 -1
- package/dist/utils/tools.d.ts +8 -10
- package/dist/utils/tools.d.ts.map +1 -1
- package/dist/utils/tools.js +20 -15
- package/dist/utils/tools.js.map +1 -1
- package/dist/utils/widgets.d.ts +53 -0
- package/dist/utils/widgets.d.ts.map +1 -0
- package/dist/utils/widgets.js +90 -0
- package/dist/utils/widgets.js.map +1 -0
- package/dist/web/dist/actor-run-widget.js +1155 -0
- package/dist/web/dist/search-actors-widget.js +1156 -0
- package/manifest.json +1 -1
- package/package.json +4 -2
- package/server.json +1 -1
package/dist/utils/mcp.js
CHANGED
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* it will be attached as `_toolStatus` so the server can read it
|
|
9
9
|
* and strip it before sending the response to the MCP client.
|
|
10
10
|
* @param options.structuredContent - Optional structured content of unknown type
|
|
11
|
+
* @param options._meta - Optional metadata for widget rendering (e.g., OpenAI widget metadata)
|
|
11
12
|
*/
|
|
12
13
|
export function buildMCPResponse(options) {
|
|
13
|
-
const { texts, isError = false, toolStatus, structuredContent, } = options;
|
|
14
|
+
const { texts, isError = false, toolStatus, structuredContent, _meta, } = options;
|
|
14
15
|
const response = {
|
|
15
16
|
content: texts.map((text) => ({ type: 'text', text })),
|
|
16
17
|
isError,
|
|
@@ -23,6 +24,10 @@ export function buildMCPResponse(options) {
|
|
|
23
24
|
if (structuredContent !== undefined) {
|
|
24
25
|
response.structuredContent = structuredContent;
|
|
25
26
|
}
|
|
27
|
+
// Add metadata if provided (e.g., for widget rendering)
|
|
28
|
+
if (_meta !== undefined) {
|
|
29
|
+
response._meta = _meta;
|
|
30
|
+
}
|
|
26
31
|
return response;
|
|
27
32
|
}
|
|
28
33
|
//# sourceMappingURL=mcp.js.map
|
package/dist/utils/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/utils/mcp.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/utils/mcp.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAMhC;IACG,MAAM,EACF,KAAK,EACL,OAAO,GAAG,KAAK,EACf,UAAU,EACV,iBAAiB,EACjB,KAAK,GACR,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAMV;QACA,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO;KACV,CAAC;IAEF,2EAA2E;IAC3E,IAAI,UAAU,EAAE,CAAC;QACb,QAAQ,CAAC,kBAAkB,GAAG,UAAU,CAAC;IAC7C,CAAC;IAED,qCAAqC;IACrC,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClC,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IACnD,CAAC;IAED,wDAAwD;IACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ToolCategory, ToolEntry } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the tool objects for the given category names using toolCategories.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getExpectedToolsByCategories(categories: ToolCategory[]): ToolEntry[];
|
|
6
|
+
/**
|
|
7
|
+
* Returns the tool names for the given category names using getExpectedToolsByCategories.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getExpectedToolNamesByCategories(categories: ToolCategory[]): string[];
|
|
10
|
+
//# sourceMappingURL=tool-categories-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-categories-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/tool-categories-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAGpF;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAErF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions for working with tool categories.
|
|
3
|
+
* Separated from tools.ts to break circular dependency: tools/index.ts → utils/tools.ts → tools/categories.ts → tools/index.ts
|
|
4
|
+
*/
|
|
5
|
+
import { toolCategories } from '../tools/categories.js';
|
|
6
|
+
/**
|
|
7
|
+
* Returns the tool objects for the given category names using toolCategories.
|
|
8
|
+
*/
|
|
9
|
+
export function getExpectedToolsByCategories(categories) {
|
|
10
|
+
return categories
|
|
11
|
+
.flatMap((category) => toolCategories[category] || []);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns the tool names for the given category names using getExpectedToolsByCategories.
|
|
15
|
+
*/
|
|
16
|
+
export function getExpectedToolNamesByCategories(categories) {
|
|
17
|
+
return getExpectedToolsByCategories(categories).map((tool) => tool.name);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tool-categories-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-categories-helpers.js","sourceRoot":"","sources":["../../src/utils/tool-categories-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAA0B;IACnE,OAAO,UAAU;SACZ,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,UAA0B;IACvE,OAAO,4BAA4B,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
* This eliminates duplication between stdio.ts and processParamsGetTools.
|
|
4
4
|
*/
|
|
5
5
|
import type { ApifyClient } from 'apify';
|
|
6
|
-
import type { Input, ToolEntry } from '../types.js';
|
|
6
|
+
import type { Input, ToolEntry, UiMode } from '../types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Load tools based on the provided Input object.
|
|
9
9
|
* This function is used by both the stdio.ts and the processParamsGetTools function.
|
|
10
10
|
*
|
|
11
11
|
* @param input The processed Input object
|
|
12
12
|
* @param apifyClient The Apify client instance
|
|
13
|
+
* @param uiMode Optional UI mode.
|
|
13
14
|
* @returns An array of tool entries
|
|
14
15
|
*/
|
|
15
|
-
export declare function loadToolsFromInput(input: Input, apifyClient: ApifyClient): Promise<ToolEntry[]>;
|
|
16
|
+
export declare function loadToolsFromInput(input: Input, apifyClient: ApifyClient, uiMode?: UiMode): Promise<ToolEntry[]>;
|
|
16
17
|
//# sourceMappingURL=tools-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-loader.d.ts","sourceRoot":"","sources":["../../src/utils/tools-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tools-loader.d.ts","sourceRoot":"","sources":["../../src/utils/tools-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAUzC,OAAO,KAAK,EAAE,KAAK,EAAkC,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAe5F;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,EAAE,CAAC,CA2JtB"}
|
|
@@ -8,7 +8,8 @@ import { callActor } from '../tools/actor.js';
|
|
|
8
8
|
import { getActorOutput } from '../tools/get-actor-output.js';
|
|
9
9
|
import { addTool } from '../tools/helpers.js';
|
|
10
10
|
import { getActorsAsTools, toolCategories, toolCategoriesEnabledByDefault } from '../tools/index.js';
|
|
11
|
-
import {
|
|
11
|
+
import { getActorRun } from '../tools/run.js';
|
|
12
|
+
import { getExpectedToolsByCategories } from './tool-categories-helpers.js';
|
|
12
13
|
// Lazily-computed cache of internal tools by name to avoid circular init issues.
|
|
13
14
|
let INTERNAL_TOOL_BY_NAME_CACHE = null;
|
|
14
15
|
function getInternalToolByNameMap() {
|
|
@@ -24,9 +25,10 @@ function getInternalToolByNameMap() {
|
|
|
24
25
|
*
|
|
25
26
|
* @param input The processed Input object
|
|
26
27
|
* @param apifyClient The Apify client instance
|
|
28
|
+
* @param uiMode Optional UI mode.
|
|
27
29
|
* @returns An array of tool entries
|
|
28
30
|
*/
|
|
29
|
-
export async function loadToolsFromInput(input, apifyClient) {
|
|
31
|
+
export async function loadToolsFromInput(input, apifyClient, uiMode) {
|
|
30
32
|
// Helpers for readability
|
|
31
33
|
const normalizeSelectors = (value) => {
|
|
32
34
|
if (value === undefined)
|
|
@@ -123,6 +125,14 @@ export async function loadToolsFromInput(input, apifyClient) {
|
|
|
123
125
|
if (hasCallActor || hasActorTools || hasAddActorTool) {
|
|
124
126
|
result.push(getActorOutput);
|
|
125
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* If call-actor tool is present or UI mode is enabled, automatically include get-actor-run
|
|
130
|
+
* to allow checking run status and retrieving results.
|
|
131
|
+
*/
|
|
132
|
+
const hasGetActorRun = result.some((entry) => entry.name === HelperTools.ACTOR_RUNS_GET);
|
|
133
|
+
if (!hasGetActorRun && (hasCallActor || uiMode === 'openai')) {
|
|
134
|
+
result.push(getActorRun);
|
|
135
|
+
}
|
|
126
136
|
// TEMP: for now we disable this swapping logic as the add-actor tool was misbehaving in some clients
|
|
127
137
|
// Handle client capabilities logic for 'actors' category to swap call-actor for add-actor
|
|
128
138
|
// if client supports dynamic tools.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-loader.js","sourceRoot":"","sources":["../../src/utils/tools-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools-loader.js","sourceRoot":"","sources":["../../src/utils/tools-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/tools.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ActorsMcpServerOptions, ToolBase, ToolEntry } from '../types.js';
|
|
2
|
+
type ToolPublicFieldOptions = {
|
|
3
|
+
uiMode?: ActorsMcpServerOptions['uiMode'];
|
|
4
|
+
filterOpenAiMeta?: boolean;
|
|
5
|
+
};
|
|
2
6
|
/**
|
|
3
7
|
* Returns a public version of the tool containing only fields that should be exposed publicly.
|
|
4
8
|
* Used for the tools list request.
|
|
5
9
|
*/
|
|
6
|
-
export declare function getToolPublicFieldOnly(tool: ToolBase): {
|
|
10
|
+
export declare function getToolPublicFieldOnly(tool: ToolBase, options?: ToolPublicFieldOptions): {
|
|
7
11
|
name: string;
|
|
8
12
|
title: string | undefined;
|
|
9
13
|
description: string | undefined;
|
|
@@ -35,18 +39,12 @@ export declare function getToolPublicFieldOnly(tool: ToolBase): {
|
|
|
35
39
|
execution: {
|
|
36
40
|
taskSupport?: "optional" | "required" | "forbidden" | undefined;
|
|
37
41
|
} | undefined;
|
|
42
|
+
_meta: Record<string, unknown> | undefined;
|
|
38
43
|
};
|
|
39
|
-
/**
|
|
40
|
-
* Returns the tool objects for the given category names using toolCategories.
|
|
41
|
-
*/
|
|
42
|
-
export declare function getExpectedToolsByCategories(categories: ToolCategory[]): ToolEntry[];
|
|
43
|
-
/**
|
|
44
|
-
* Returns the tool names for the given category names using getExpectedToolsByCategories.
|
|
45
|
-
*/
|
|
46
|
-
export declare function getExpectedToolNamesByCategories(categories: ToolCategory[]): string[];
|
|
47
44
|
/**
|
|
48
45
|
* Creates a deep copy of a tool entry, preserving functions like ajvValidate and call
|
|
49
46
|
* while cloning all other properties to avoid shared state mutations.
|
|
50
47
|
*/
|
|
51
48
|
export declare function cloneToolEntry(toolEntry: ToolEntry): ToolEntry;
|
|
49
|
+
export {};
|
|
52
50
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAc,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE3F,KAAK,sBAAsB,GAAG;IAC1B,MAAM,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAkBF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,sBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAkB9D"}
|
package/dist/utils/tools.js
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Strips OpenAI specific metadata from the tool metadata. U
|
|
3
|
+
* @param meta - The tool metadata.
|
|
4
|
+
* @returns The tool metadata with OpenAI specific metadata stripped.
|
|
5
|
+
*/
|
|
6
|
+
function stripOpenAiMeta(meta) {
|
|
7
|
+
if (!meta)
|
|
8
|
+
return meta;
|
|
9
|
+
const filteredEntries = Object.entries(meta)
|
|
10
|
+
.filter(([key]) => !key.startsWith('openai/'));
|
|
11
|
+
if (filteredEntries.length === 0)
|
|
12
|
+
return undefined;
|
|
13
|
+
return Object.fromEntries(filteredEntries);
|
|
14
|
+
}
|
|
2
15
|
/**
|
|
3
16
|
* Returns a public version of the tool containing only fields that should be exposed publicly.
|
|
4
17
|
* Used for the tools list request.
|
|
5
18
|
*/
|
|
6
|
-
export function getToolPublicFieldOnly(tool) {
|
|
19
|
+
export function getToolPublicFieldOnly(tool, options = {}) {
|
|
20
|
+
const { uiMode, filterOpenAiMeta = false } = options;
|
|
21
|
+
const meta = filterOpenAiMeta && uiMode !== 'openai'
|
|
22
|
+
? stripOpenAiMeta(tool._meta)
|
|
23
|
+
: tool._meta;
|
|
7
24
|
return {
|
|
8
25
|
name: tool.name,
|
|
9
26
|
title: tool.title,
|
|
@@ -13,21 +30,9 @@ export function getToolPublicFieldOnly(tool) {
|
|
|
13
30
|
annotations: tool.annotations,
|
|
14
31
|
icons: tool.icons,
|
|
15
32
|
execution: tool.execution,
|
|
33
|
+
_meta: meta,
|
|
16
34
|
};
|
|
17
35
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Returns the tool objects for the given category names using toolCategories.
|
|
20
|
-
*/
|
|
21
|
-
export function getExpectedToolsByCategories(categories) {
|
|
22
|
-
return categories
|
|
23
|
-
.flatMap((category) => toolCategories[category] || []);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Returns the tool names for the given category names using getExpectedToolsByCategories.
|
|
27
|
-
*/
|
|
28
|
-
export function getExpectedToolNamesByCategories(categories) {
|
|
29
|
-
return getExpectedToolsByCategories(categories).map((tool) => tool.name);
|
|
30
|
-
}
|
|
31
36
|
/**
|
|
32
37
|
* Creates a deep copy of a tool entry, preserving functions like ajvValidate and call
|
|
33
38
|
* while cloning all other properties to avoid shared state mutations.
|
package/dist/utils/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAwB;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnD,OAAO,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAc,EAAE,UAAkC,EAAE;IACvF,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACrD,MAAM,IAAI,GAAG,gBAAgB,IAAI,MAAM,KAAK,QAAQ;QAChD,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAEjB,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI;KACd,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB;IAC/C,+BAA+B;IAC/B,MAAM,mBAAmB,GAAG,SAAS,CAAC,WAAW,CAAC;IAClD,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhF,oEAAoE;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/D,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9D,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAc,CAAC;IAEjB,iCAAiC;IACjC,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC;IACzC,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,YAAY,EAAE,CAAC;QAC/C,MAAqB,CAAC,IAAI,GAAG,YAAY,CAAC;IAC/C,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Widget registry for MCP server UI widgets
|
|
3
|
+
*
|
|
4
|
+
* This module manages widget configuration and validates that widget files exist
|
|
5
|
+
* at runtime.
|
|
6
|
+
*/
|
|
7
|
+
export declare const WIDGET_URIS: {
|
|
8
|
+
readonly SEARCH_ACTORS: "ui://widget/search-actors.html";
|
|
9
|
+
readonly ACTOR_RUN: "ui://widget/actor-run.html";
|
|
10
|
+
};
|
|
11
|
+
export type WidgetConfig = {
|
|
12
|
+
uri: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
jsFilename: string;
|
|
16
|
+
title: string;
|
|
17
|
+
meta: {
|
|
18
|
+
'openai/outputTemplate': string;
|
|
19
|
+
'openai/toolInvocation/invoking'?: string;
|
|
20
|
+
'openai/toolInvocation/invoked'?: string;
|
|
21
|
+
'openai/widgetAccessible': boolean;
|
|
22
|
+
'openai/resultCanProduceWidget': boolean;
|
|
23
|
+
'openai/widgetDomain': string;
|
|
24
|
+
'openai/widgetCSP': {
|
|
25
|
+
readonly connect_domains: readonly string[];
|
|
26
|
+
readonly resource_domains: readonly string[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Widget registry configuration
|
|
32
|
+
* Maps widget URIs to their configuration
|
|
33
|
+
*/
|
|
34
|
+
export declare const WIDGET_REGISTRY: Record<string, WidgetConfig>;
|
|
35
|
+
export type AvailableWidget = WidgetConfig & {
|
|
36
|
+
jsPath: string;
|
|
37
|
+
exists: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Resolves available widgets by checking if their files exist on the filesystem.
|
|
41
|
+
*
|
|
42
|
+
* @param baseDir - Base directory where the server code is located
|
|
43
|
+
* @returns Map of widget URIs to their resolved state
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveAvailableWidgets(baseDir: string): Promise<Map<string, AvailableWidget>>;
|
|
46
|
+
/**
|
|
47
|
+
* Get widget configuration by URI
|
|
48
|
+
*
|
|
49
|
+
* @param uri - Widget URI
|
|
50
|
+
* @returns Widget configuration or undefined if not found
|
|
51
|
+
*/
|
|
52
|
+
export declare function getWidgetConfig(uri: string): WidgetConfig | undefined;
|
|
53
|
+
//# sourceMappingURL=widgets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.d.ts","sourceRoot":"","sources":["../../src/utils/widgets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE;QACJ,uBAAuB,EAAE,MAAM,CAAC;QAChC,gCAAgC,CAAC,EAAE,MAAM,CAAC;QAC1C,+BAA+B,CAAC,EAAE,MAAM,CAAC;QACzC,yBAAyB,EAAE,OAAO,CAAC;QACnC,+BAA+B,EAAE,OAAO,CAAC;QACzC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,kBAAkB,EAAE;YAClB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;YAC5C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;SAC9C,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA2BxD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAmBpG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAErE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Widget registry for MCP server UI widgets
|
|
3
|
+
*
|
|
4
|
+
* This module manages widget configuration and validates that widget files exist
|
|
5
|
+
* at runtime.
|
|
6
|
+
*/
|
|
7
|
+
const OPENAI_WIDGET_CSP = {
|
|
8
|
+
connect_domains: ['https://api.apify.com'],
|
|
9
|
+
resource_domains: [
|
|
10
|
+
'https://mcp.apify.com',
|
|
11
|
+
'https://images.apifyusercontent.com',
|
|
12
|
+
'https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com',
|
|
13
|
+
'https://apify-image-uploads-prod.s3.amazonaws.com',
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
const OPENAI_WIDGET_BASE_META = {
|
|
17
|
+
'openai/widgetAccessible': true,
|
|
18
|
+
'openai/resultCanProduceWidget': true,
|
|
19
|
+
'openai/widgetPrefersBorder': true,
|
|
20
|
+
'openai/widgetDomain': 'https://apify.com',
|
|
21
|
+
'openai/widgetCSP': OPENAI_WIDGET_CSP,
|
|
22
|
+
};
|
|
23
|
+
export const WIDGET_URIS = {
|
|
24
|
+
SEARCH_ACTORS: 'ui://widget/search-actors.html',
|
|
25
|
+
ACTOR_RUN: 'ui://widget/actor-run.html',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Widget registry configuration
|
|
29
|
+
* Maps widget URIs to their configuration
|
|
30
|
+
*/
|
|
31
|
+
export const WIDGET_REGISTRY = {
|
|
32
|
+
[WIDGET_URIS.SEARCH_ACTORS]: {
|
|
33
|
+
uri: WIDGET_URIS.SEARCH_ACTORS,
|
|
34
|
+
name: 'search-actors-widget',
|
|
35
|
+
description: 'Interactive Actor search results widget',
|
|
36
|
+
jsFilename: 'search-actors-widget.js',
|
|
37
|
+
title: 'Apify Actor Search',
|
|
38
|
+
meta: {
|
|
39
|
+
...OPENAI_WIDGET_BASE_META,
|
|
40
|
+
'openai/outputTemplate': WIDGET_URIS.SEARCH_ACTORS,
|
|
41
|
+
'openai/toolInvocation/invoking': 'Searching Apify Store...',
|
|
42
|
+
'openai/toolInvocation/invoked': 'Found Actors matching your criteria',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
[WIDGET_URIS.ACTOR_RUN]: {
|
|
46
|
+
uri: WIDGET_URIS.ACTOR_RUN,
|
|
47
|
+
name: 'actor-run-widget',
|
|
48
|
+
description: 'Interactive Actor run widget',
|
|
49
|
+
jsFilename: 'actor-run-widget.js',
|
|
50
|
+
title: 'Apify Actor Run',
|
|
51
|
+
meta: {
|
|
52
|
+
...OPENAI_WIDGET_BASE_META,
|
|
53
|
+
'openai/outputTemplate': WIDGET_URIS.ACTOR_RUN,
|
|
54
|
+
'openai/toolInvocation/invoking': 'Running Apify Actor...',
|
|
55
|
+
'openai/toolInvocation/invoked': 'Actor run started',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Resolves available widgets by checking if their files exist on the filesystem.
|
|
61
|
+
*
|
|
62
|
+
* @param baseDir - Base directory where the server code is located
|
|
63
|
+
* @returns Map of widget URIs to their resolved state
|
|
64
|
+
*/
|
|
65
|
+
export async function resolveAvailableWidgets(baseDir) {
|
|
66
|
+
const fs = await import('node:fs');
|
|
67
|
+
const path = await import('node:path');
|
|
68
|
+
const resolvedWidgets = new Map();
|
|
69
|
+
const webDistPath = path.resolve(baseDir, '../web/dist');
|
|
70
|
+
for (const [uri, config] of Object.entries(WIDGET_REGISTRY)) {
|
|
71
|
+
const jsPath = path.resolve(webDistPath, config.jsFilename);
|
|
72
|
+
const exists = fs.existsSync(jsPath);
|
|
73
|
+
resolvedWidgets.set(uri, {
|
|
74
|
+
...config,
|
|
75
|
+
jsPath,
|
|
76
|
+
exists,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return resolvedWidgets;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get widget configuration by URI
|
|
83
|
+
*
|
|
84
|
+
* @param uri - Widget URI
|
|
85
|
+
* @returns Widget configuration or undefined if not found
|
|
86
|
+
*/
|
|
87
|
+
export function getWidgetConfig(uri) {
|
|
88
|
+
return WIDGET_REGISTRY[uri];
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=widgets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../src/utils/widgets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,iBAAiB,GAAG;IACtB,eAAe,EAAE,CAAC,uBAAuB,CAAC;IAC1C,gBAAgB,EAAE;QACd,uBAAuB;QACvB,qCAAqC;QACrC,6DAA6D;QAC7D,mDAAmD;KACtD;CACK,CAAC;AAEX,MAAM,uBAAuB,GAAG;IAC5B,yBAAyB,EAAE,IAAI;IAC/B,+BAA+B,EAAE,IAAI;IACrC,4BAA4B,EAAE,IAAI;IAClC,qBAAqB,EAAE,mBAAmB;IAC1C,kBAAkB,EAAE,iBAAiB;CAC/B,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,aAAa,EAAE,gCAAgC;IAC/C,SAAS,EAAE,4BAA4B;CACjC,CAAC;AAsBX;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiC;IACzD,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;QACzB,GAAG,EAAE,WAAW,CAAC,aAAa;QAC9B,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,yBAAyB;QACrC,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE;YACF,GAAG,uBAAuB;YAC1B,uBAAuB,EAAE,WAAW,CAAC,aAAa;YAClD,gCAAgC,EAAE,0BAA0B;YAC5D,+BAA+B,EAAE,qCAAqC;SACzE;KACJ;IACD,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;QACrB,GAAG,EAAE,WAAW,CAAC,SAAS;QAC1B,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE,qBAAqB;QACjC,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE;YACF,GAAG,uBAAuB;YAC1B,uBAAuB,EAAE,WAAW,CAAC,SAAS;YAC9C,gCAAgC,EAAE,wBAAwB;YAC1D,+BAA+B,EAAE,mBAAmB;SACvD;KACJ;CACJ,CAAC;AAOF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAe;IACzD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEzD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAErC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;YACrB,GAAG,MAAM;YACT,MAAM;YACN,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAED,OAAO,eAAe,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACvC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
|