@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.
Files changed (82) hide show
  1. package/README.md +35 -2
  2. package/dist/actor/server.d.ts.map +1 -1
  3. package/dist/actor/server.js +6 -0
  4. package/dist/actor/server.js.map +1 -1
  5. package/dist/const.d.ts +1 -1
  6. package/dist/const.d.ts.map +1 -1
  7. package/dist/const.js +14 -2
  8. package/dist/const.js.map +1 -1
  9. package/dist/index-internals.d.ts +5 -4
  10. package/dist/index-internals.d.ts.map +1 -1
  11. package/dist/index-internals.js +4 -3
  12. package/dist/index-internals.js.map +1 -1
  13. package/dist/mcp/server.d.ts +5 -0
  14. package/dist/mcp/server.d.ts.map +1 -1
  15. package/dist/mcp/server.js +135 -25
  16. package/dist/mcp/server.js.map +1 -1
  17. package/dist/mcp/utils.d.ts +3 -2
  18. package/dist/mcp/utils.d.ts.map +1 -1
  19. package/dist/mcp/utils.js +3 -2
  20. package/dist/mcp/utils.js.map +1 -1
  21. package/dist/stdio.js +11 -1
  22. package/dist/stdio.js.map +1 -1
  23. package/dist/tools/actor.d.ts.map +1 -1
  24. package/dist/tools/actor.js +100 -89
  25. package/dist/tools/actor.js.map +1 -1
  26. package/dist/tools/categories.d.ts +15 -0
  27. package/dist/tools/categories.d.ts.map +1 -0
  28. package/dist/tools/categories.js +52 -0
  29. package/dist/tools/categories.js.map +1 -0
  30. package/dist/tools/fetch-actor-details.d.ts.map +1 -1
  31. package/dist/tools/fetch-actor-details.js +136 -26
  32. package/dist/tools/fetch-actor-details.js.map +1 -1
  33. package/dist/tools/index.d.ts +8 -11
  34. package/dist/tools/index.d.ts.map +1 -1
  35. package/dist/tools/index.js +18 -67
  36. package/dist/tools/index.js.map +1 -1
  37. package/dist/tools/run.d.ts.map +1 -1
  38. package/dist/tools/run.js +75 -9
  39. package/dist/tools/run.js.map +1 -1
  40. package/dist/tools/store_collection.d.ts.map +1 -1
  41. package/dist/tools/store_collection.js +45 -10
  42. package/dist/tools/store_collection.js.map +1 -1
  43. package/dist/tools/structured-output-schemas.d.ts +1 -1
  44. package/dist/tools/structured-output-schemas.d.ts.map +1 -1
  45. package/dist/tools/structured-output-schemas.js +1 -1
  46. package/dist/tools/structured-output-schemas.js.map +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/dist/types.d.ts +26 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/utils/actor-card.d.ts +35 -3
  51. package/dist/utils/actor-card.d.ts.map +1 -1
  52. package/dist/utils/actor-card.js +174 -66
  53. package/dist/utils/actor-card.js.map +1 -1
  54. package/dist/utils/actor-details.d.ts +21 -2
  55. package/dist/utils/actor-details.d.ts.map +1 -1
  56. package/dist/utils/actor-details.js +37 -3
  57. package/dist/utils/actor-details.js.map +1 -1
  58. package/dist/utils/mcp.d.ts +3 -0
  59. package/dist/utils/mcp.d.ts.map +1 -1
  60. package/dist/utils/mcp.js +6 -1
  61. package/dist/utils/mcp.js.map +1 -1
  62. package/dist/utils/tool-categories-helpers.d.ts +10 -0
  63. package/dist/utils/tool-categories-helpers.d.ts.map +1 -0
  64. package/dist/utils/tool-categories-helpers.js +19 -0
  65. package/dist/utils/tool-categories-helpers.js.map +1 -0
  66. package/dist/utils/tools-loader.d.ts +3 -2
  67. package/dist/utils/tools-loader.d.ts.map +1 -1
  68. package/dist/utils/tools-loader.js +12 -2
  69. package/dist/utils/tools-loader.js.map +1 -1
  70. package/dist/utils/tools.d.ts +8 -10
  71. package/dist/utils/tools.d.ts.map +1 -1
  72. package/dist/utils/tools.js +20 -15
  73. package/dist/utils/tools.js.map +1 -1
  74. package/dist/utils/widgets.d.ts +53 -0
  75. package/dist/utils/widgets.d.ts.map +1 -0
  76. package/dist/utils/widgets.js +90 -0
  77. package/dist/utils/widgets.js.map +1 -0
  78. package/dist/web/dist/actor-run-widget.js +1155 -0
  79. package/dist/web/dist/search-actors-widget.js +1156 -0
  80. package/manifest.json +1 -1
  81. package/package.json +4 -2
  82. 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
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/utils/mcp.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,MAAM,UAAU,gBAAgB,CAAC,OAKhC;IACG,MAAM,EACF,KAAK,EACL,OAAO,GAAG,KAAK,EACf,UAAU,EACV,iBAAiB,GACpB,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAKV;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,OAAO,QAAQ,CAAC;AACpB,CAAC"}
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;AASzC,OAAO,KAAK,EAAE,KAAK,EAAkC,SAAS,EAAE,MAAM,aAAa,CAAC;AAepF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkJtB"}
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 { getExpectedToolsByCategories } from './tools.js';
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":"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"}
1
+ {"version":3,"file":"tools-loader.js","sourceRoot":"","sources":["../../src/utils/tools-loader.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
- import type { ToolBase, ToolCategory, ToolEntry } from '../types.js';
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":"AACA,OAAO,KAAK,EAAc,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWpD;AAED;;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;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAkB9D"}
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"}
@@ -1,9 +1,26 @@
1
- import { toolCategories } from '../tools/index.js';
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.
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACjD,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;KAC5B,CAAC;AACN,CAAC;AAED;;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;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"}
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"}