@apify/actors-mcp-server 0.9.20-beta.2 → 0.9.20-beta.3

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.
@@ -1,5 +1,44 @@
1
1
  import { z } from 'zod';
2
- import type { HelperTool } from '../../types.js';
2
+ import { HelperTools } from '../../const.js';
3
+ import type { HelperTool, InternalToolArgs } from '../../types.js';
4
+ import { type ActorDetailsResult } from '../../utils/actor_details.js';
5
+ import { buildMCPResponse } from '../../utils/mcp.js';
6
+ /**
7
+ * Shared schema for actor details output options.
8
+ *
9
+ * Behavior:
10
+ * - If output is undefined or empty object: use defaults (all true except mcpTools and outputSchema)
11
+ * - If any property is explicitly set: only include sections with explicit true values
12
+ */
13
+ export declare const actorDetailsOutputOptionsSchema: z.ZodObject<{
14
+ description: z.ZodOptional<z.ZodBoolean>;
15
+ stats: z.ZodOptional<z.ZodBoolean>;
16
+ pricing: z.ZodOptional<z.ZodBoolean>;
17
+ rating: z.ZodOptional<z.ZodBoolean>;
18
+ metadata: z.ZodOptional<z.ZodBoolean>;
19
+ inputSchema: z.ZodOptional<z.ZodBoolean>;
20
+ readme: z.ZodOptional<z.ZodBoolean>;
21
+ outputSchema: z.ZodOptional<z.ZodBoolean>;
22
+ mcpTools: z.ZodOptional<z.ZodBoolean>;
23
+ }, z.core.$strip>;
24
+ export declare const actorDetailsOutputDefaults: {
25
+ description: boolean;
26
+ stats: boolean;
27
+ pricing: boolean;
28
+ rating: boolean;
29
+ metadata: boolean;
30
+ inputSchema: boolean;
31
+ readme: boolean;
32
+ outputSchema: boolean;
33
+ mcpTools: boolean;
34
+ };
35
+ export type ResolvedOutputOptions = typeof actorDetailsOutputDefaults;
36
+ /**
37
+ * Resolve output options with smart defaults.
38
+ * If output is undefined/empty, returns defaults.
39
+ * If any property is explicitly set, undefined properties are treated as false.
40
+ */
41
+ export declare function resolveOutputOptions(output?: z.infer<typeof actorDetailsOutputOptionsSchema>): ResolvedOutputOptions;
3
42
  /**
4
43
  * Zod schema for fetch-actor-details arguments — shared between default and openai variants.
5
44
  */
@@ -22,4 +61,26 @@ export declare const fetchActorDetailsToolArgsSchema: z.ZodObject<{
22
61
  * Used by both default and openai variants.
23
62
  */
24
63
  export declare const fetchActorDetailsMetadata: Omit<HelperTool, 'call'>;
64
+ /**
65
+ * Build error response for when actor is not found.
66
+ */
67
+ export declare function buildActorNotFoundResponse(actorName: string): ReturnType<typeof buildMCPResponse>;
68
+ /**
69
+ * Build text and structured response for actor details.
70
+ * Pure/sync: the caller pre-resolves `mcpToolsMessage` when `output.mcpTools` is true.
71
+ */
72
+ export declare function buildActorDetailsTextResponse(options: {
73
+ details: ActorDetailsResult;
74
+ output: ResolvedOutputOptions;
75
+ actorOutputSchema?: Record<string, unknown> | null;
76
+ mcpToolsMessage?: string;
77
+ }): {
78
+ texts: string[];
79
+ structuredContent: Record<string, unknown>;
80
+ };
81
+ /**
82
+ * Shared handler for default and internal fetch-actor-details variants.
83
+ * Both return the same text + structured response; only the telemetry route differs.
84
+ */
85
+ export declare function buildFetchActorDetailsResult(toolArgs: InternalToolArgs, route: HelperTools.ACTOR_GET_DETAILS | HelperTools.ACTOR_GET_DETAILS_INTERNAL): Promise<ReturnType<typeof buildMCPResponse>>;
25
86
  //# sourceMappingURL=fetch_actor_details_common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details_common.d.ts","sourceRoot":"","sources":["../../../src/tools/core/fetch_actor_details_common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAOlE;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;iBAM1C,CAAC;AAiBH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAkB9D,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details_common.d.ts","sourceRoot":"","sources":["../../../src/tools/core/fetch_actor_details_common.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAoB,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACH,KAAK,kBAAkB,EAM1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;iBAU1C,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;CAUtC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,0BAA0B,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,GAAG,qBAAqB,CAkBpH;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;iBAM1C,CAAC;AAiBH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAkB9D,CAAC;AAEF;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAUjG;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACnD,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG;IACA,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C,CA6DA;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAC9C,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,WAAW,CAAC,iBAAiB,GAAG,WAAW,CAAC,0BAA0B,GAC9E,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAgC9C"}
@@ -1,10 +1,65 @@
1
1
  var _a;
2
+ import dedent from 'dedent';
2
3
  import { z } from 'zod';
3
- import { HelperTools } from '../../const.js';
4
+ import { ApifyClient } from '../../apify_client.js';
5
+ import { FAILURE_CATEGORY, HelperTools, TOOL_STATUS } from '../../const.js';
4
6
  import { getWidgetConfig, WIDGET_URIS } from '../../resources/widgets.js';
5
- import { actorDetailsOutputOptionsSchema, } from '../../utils/actor_details.js';
7
+ import { buildCardOptions, fetchActorDetails, getMcpToolsMessage, resolveReadmeContent, typeObjectToString, } from '../../utils/actor_details.js';
6
8
  import { compileSchema } from '../../utils/ajv.js';
9
+ import { buildMCPResponse } from '../../utils/mcp.js';
7
10
  import { actorDetailsOutputSchema } from '../structured_output_schemas.js';
11
+ import { fixActorNameInputAndLog } from './actor_tools_factory.js';
12
+ /**
13
+ * Shared schema for actor details output options.
14
+ *
15
+ * Behavior:
16
+ * - If output is undefined or empty object: use defaults (all true except mcpTools and outputSchema)
17
+ * - If any property is explicitly set: only include sections with explicit true values
18
+ */
19
+ export const actorDetailsOutputOptionsSchema = z.object({
20
+ description: z.boolean().optional().describe('Include Actor description text only.'),
21
+ stats: z.boolean().optional().describe('Include usage statistics (users, runs, success rate).'),
22
+ pricing: z.boolean().optional().describe('Include pricing model and costs.'),
23
+ rating: z.boolean().optional().describe('Include user rating (out of 5 stars).'),
24
+ metadata: z.boolean().optional().describe('Include developer, categories, last modified date, and deprecation status.'),
25
+ inputSchema: z.boolean().optional().describe('Include required input parameters schema.'),
26
+ readme: z.boolean().optional().describe('Include Actor README documentation (summary when available, full otherwise).'),
27
+ outputSchema: z.boolean().optional().describe('Include inferred output schema from recent successful runs (TypeScript type).'),
28
+ mcpTools: z.boolean().optional().describe('List available tools (only for MCP server Actors).'),
29
+ });
30
+ export const actorDetailsOutputDefaults = {
31
+ description: true,
32
+ stats: true,
33
+ pricing: true,
34
+ rating: true,
35
+ metadata: true,
36
+ inputSchema: true,
37
+ readme: true,
38
+ outputSchema: false,
39
+ mcpTools: false,
40
+ };
41
+ /**
42
+ * Resolve output options with smart defaults.
43
+ * If output is undefined/empty, returns defaults.
44
+ * If any property is explicitly set, undefined properties are treated as false.
45
+ */
46
+ export function resolveOutputOptions(output) {
47
+ const hasExplicitOptions = output && Object.values(output).some((v) => v !== undefined);
48
+ if (!hasExplicitOptions) {
49
+ return actorDetailsOutputDefaults;
50
+ }
51
+ return {
52
+ description: (output === null || output === void 0 ? void 0 : output.description) === true,
53
+ stats: (output === null || output === void 0 ? void 0 : output.stats) === true,
54
+ pricing: (output === null || output === void 0 ? void 0 : output.pricing) === true,
55
+ rating: (output === null || output === void 0 ? void 0 : output.rating) === true,
56
+ metadata: (output === null || output === void 0 ? void 0 : output.metadata) === true,
57
+ inputSchema: (output === null || output === void 0 ? void 0 : output.inputSchema) === true,
58
+ readme: (output === null || output === void 0 ? void 0 : output.readme) === true,
59
+ outputSchema: (output === null || output === void 0 ? void 0 : output.outputSchema) === true,
60
+ mcpTools: (output === null || output === void 0 ? void 0 : output.mcpTools) === true,
61
+ };
62
+ }
8
63
  /**
9
64
  * Zod schema for fetch-actor-details arguments — shared between default and openai variants.
10
65
  */
@@ -52,4 +107,108 @@ export const fetchActorDetailsMetadata = {
52
107
  openWorldHint: false,
53
108
  },
54
109
  };
110
+ /**
111
+ * Build error response for when actor is not found.
112
+ */
113
+ export function buildActorNotFoundResponse(actorName) {
114
+ return buildMCPResponse({
115
+ texts: [dedent `
116
+ Actor information for '${actorName}' was not found.
117
+ Please verify Actor ID or name format and ensure that the Actor exists.
118
+ You can search for available Actors using the tool: ${HelperTools.STORE_SEARCH}.
119
+ `],
120
+ isError: true,
121
+ telemetry: { toolStatus: TOOL_STATUS.SOFT_FAIL, failureCategory: FAILURE_CATEGORY.INVALID_INPUT },
122
+ });
123
+ }
124
+ /**
125
+ * Build text and structured response for actor details.
126
+ * Pure/sync: the caller pre-resolves `mcpToolsMessage` when `output.mcpTools` is true.
127
+ */
128
+ export function buildActorDetailsTextResponse(options) {
129
+ const { details, output, actorOutputSchema, mcpToolsMessage } = options;
130
+ const actorUrl = `https://apify.com/${details.actorInfo.username}/${details.actorInfo.name}`;
131
+ const texts = [];
132
+ const needsCard = output.description
133
+ || output.stats
134
+ || output.pricing
135
+ || output.rating
136
+ || output.metadata;
137
+ if (needsCard) {
138
+ texts.push(`# Actor information\n${details.actorCard}`);
139
+ }
140
+ const resolvedReadme = output.readme ? resolveReadmeContent(details) : undefined;
141
+ if (resolvedReadme) {
142
+ texts.push(`${resolvedReadme.heading}\n${resolvedReadme.content}`);
143
+ }
144
+ if (output.inputSchema) {
145
+ texts.push([
146
+ `# [Input schema](${actorUrl}/input)`,
147
+ '```json',
148
+ JSON.stringify(details.inputSchema),
149
+ '```',
150
+ ].join('\n'));
151
+ }
152
+ if (output.outputSchema) {
153
+ if (actorOutputSchema && Object.keys(actorOutputSchema).length > 0) {
154
+ const typeString = typeObjectToString(actorOutputSchema);
155
+ texts.push(dedent `
156
+ # Output Schema (TypeScript)
157
+ Inferred from recent successful runs:
158
+ \`\`\`typescript
159
+ type ActorOutput = ${typeString}
160
+ \`\`\`
161
+ `);
162
+ }
163
+ else {
164
+ texts.push(dedent `
165
+ # Output Schema
166
+ No output schema available. The Actor may not have recent successful runs, or the output structure could not be determined.
167
+ `);
168
+ }
169
+ }
170
+ if (mcpToolsMessage) {
171
+ texts.push(mcpToolsMessage);
172
+ }
173
+ const structuredContent = {
174
+ actorInfo: needsCard ? details.actorCardStructured : undefined,
175
+ readme: resolvedReadme === null || resolvedReadme === void 0 ? void 0 : resolvedReadme.content,
176
+ inputSchema: output.inputSchema ? details.inputSchema : undefined,
177
+ outputSchema: output.outputSchema ? (actorOutputSchema !== null && actorOutputSchema !== void 0 ? actorOutputSchema : {}) : undefined,
178
+ };
179
+ return { texts, structuredContent };
180
+ }
181
+ /**
182
+ * Shared handler for default and internal fetch-actor-details variants.
183
+ * Both return the same text + structured response; only the telemetry route differs.
184
+ */
185
+ export async function buildFetchActorDetailsResult(toolArgs, route) {
186
+ const { args, apifyToken, apifyMcpServer, mcpSessionId } = toolArgs;
187
+ const parsed = fetchActorDetailsToolArgsSchema.parse(args);
188
+ const actorName = fixActorNameInputAndLog(parsed.actor, { mcpSessionId, route });
189
+ const apifyClient = new ApifyClient({ token: apifyToken });
190
+ const resolvedOutput = resolveOutputOptions(parsed.output);
191
+ const details = await fetchActorDetails(apifyClient, actorName, buildCardOptions(resolvedOutput));
192
+ if (!details) {
193
+ return buildActorNotFoundResponse(actorName);
194
+ }
195
+ let actorOutputSchema;
196
+ if (resolvedOutput.outputSchema) {
197
+ actorOutputSchema = apifyMcpServer.actorStore
198
+ ? await apifyMcpServer.actorStore.getActorOutputSchemaAsTypeObject(actorName).catch(() => null)
199
+ : null;
200
+ }
201
+ const mcpToolsMessage = resolvedOutput.mcpTools
202
+ ? await getMcpToolsMessage(actorName, apifyClient, apifyToken, apifyMcpServer === null || apifyMcpServer === void 0 ? void 0 : apifyMcpServer.options.paymentProvider, mcpSessionId)
203
+ : undefined;
204
+ // NOTE: Data duplication between texts and structuredContent is intentional and required.
205
+ // Some MCP clients only read text content, while others only read structured content.
206
+ const { texts, structuredContent } = buildActorDetailsTextResponse({
207
+ details,
208
+ output: resolvedOutput,
209
+ actorOutputSchema,
210
+ mcpToolsMessage,
211
+ });
212
+ return buildMCPResponse({ texts, structuredContent });
213
+ }
55
214
  //# sourceMappingURL=fetch_actor_details_common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details_common.js","sourceRoot":"","sources":["../../../src/tools/core/fetch_actor_details_common.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EACH,+BAA+B,GAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACZ,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,qFAAqF,CAAC;IACpG,MAAM,EAAE,+BAA+B,CAAC,QAAQ,EAAE;SAC7C,QAAQ,CAAC,sEAAsE,CAAC;CACxF,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;mDAaW,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA6B;IAC/D,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW,CAAC,iBAAiB;IACnC,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,+BAA+B,CAAoB;IAC/E,YAAY,EAAE,wBAAwB;IACtC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;IAC3E,kGAAkG;IAClG,KAAK,EAAE;QACH,GAAG,MAAA,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,0CAAE,IAAI;KACtD;IACD,WAAW,EAAE;QACT,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACvB;CACJ,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details_common.js","sourceRoot":"","sources":["../../../src/tools/core/fetch_actor_details_common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details.d.ts","sourceRoot":"","sources":["../../../src/tools/default/fetch_actor_details.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAelE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAqC5B,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details.d.ts","sourceRoot":"","sources":["../../../src/tools/default/fetch_actor_details.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMhD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAG5B,CAAC"}
@@ -1,44 +1,11 @@
1
- import { ApifyClient } from '../../apify_client.js';
2
- import { buildActorDetailsTextResponse, buildActorNotFoundResponse, buildCardOptions, fetchActorDetails, resolveOutputOptions, } from '../../utils/actor_details.js';
3
- import { buildMCPResponse } from '../../utils/mcp.js';
4
- import { fixActorNameInputAndLog } from '../core/actor_tools_factory.js';
5
- import { fetchActorDetailsMetadata, fetchActorDetailsToolArgsSchema, } from '../core/fetch_actor_details_common.js';
1
+ import { HelperTools } from '../../const.js';
2
+ import { buildFetchActorDetailsResult, fetchActorDetailsMetadata, } from '../core/fetch_actor_details_common.js';
6
3
  /**
7
4
  * Default mode fetch-actor-details tool.
8
5
  * Returns full text response with output schema fetch.
9
6
  */
10
7
  export const defaultFetchActorDetails = Object.freeze({
11
8
  ...fetchActorDetailsMetadata,
12
- call: async (toolArgs) => {
13
- var _a;
14
- const { args, apifyToken, apifyMcpServer, mcpSessionId } = toolArgs;
15
- const parsedArgs = fetchActorDetailsToolArgsSchema.parse(args);
16
- const actorName = fixActorNameInputAndLog(parsedArgs.actor, { mcpSessionId, route: 'fetch-actor-details' });
17
- const apifyClient = new ApifyClient({ token: apifyToken });
18
- const resolvedOutput = resolveOutputOptions(parsedArgs.output);
19
- const cardOptions = buildCardOptions(resolvedOutput);
20
- const details = await fetchActorDetails(apifyClient, actorName, cardOptions);
21
- if (!details) {
22
- return buildActorNotFoundResponse(actorName);
23
- }
24
- // Fetch output schema from ActorStore if available and requested
25
- const actorOutputSchema = resolvedOutput.outputSchema
26
- ? await ((_a = apifyMcpServer.actorStore) === null || _a === void 0 ? void 0 : _a.getActorOutputSchemaAsTypeObject(actorName).catch(() => null))
27
- : undefined;
28
- // NOTE: Data duplication between texts and structuredContent is intentional and required.
29
- // Some MCP clients only read text content, while others only read structured content.
30
- const { texts, structuredContent: responseStructuredContent } = await buildActorDetailsTextResponse({
31
- actorName,
32
- details,
33
- output: resolvedOutput,
34
- cardOptions,
35
- apifyClient,
36
- apifyToken,
37
- actorOutputSchema,
38
- paymentProvider: apifyMcpServer === null || apifyMcpServer === void 0 ? void 0 : apifyMcpServer.options.paymentProvider,
39
- mcpSessionId,
40
- });
41
- return buildMCPResponse({ texts, structuredContent: responseStructuredContent });
42
- },
9
+ call: async (toolArgs) => buildFetchActorDetailsResult(toolArgs, HelperTools.ACTOR_GET_DETAILS),
43
10
  });
44
11
  //# sourceMappingURL=fetch_actor_details.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details.js","sourceRoot":"","sources":["../../../src/tools/default/fetch_actor_details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EACH,6BAA6B,EAC7B,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACH,yBAAyB,EACzB,+BAA+B,GAClC,MAAM,uCAAuC,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAc,MAAM,CAAC,MAAM,CAAC;IAC7D,GAAG,yBAAyB;IAC5B,IAAI,EAAE,KAAK,EAAE,QAA0B,EAAE,EAAE;;QACvC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QACpE,MAAM,UAAU,GAAG,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC5G,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAE3D,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,iEAAiE;QACjE,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY;YACjD,CAAC,CAAC,MAAM,CAAA,MAAA,cAAc,CAAC,UAAU,0CAAE,gCAAgC,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YAChG,CAAC,CAAC,SAAS,CAAC;QAEhB,0FAA0F;QAC1F,sFAAsF;QACtF,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,GAAG,MAAM,6BAA6B,CAAC;YAChG,SAAS;YACT,OAAO;YACP,MAAM,EAAE,cAAc;YACtB,WAAW;YACX,WAAW;YACX,UAAU;YACV,iBAAiB;YACjB,eAAe,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,CAAC,eAAe;YACxD,YAAY;SACf,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACrF,CAAC;CACK,CAAC,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details.js","sourceRoot":"","sources":["../../../src/tools/default/fetch_actor_details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EACH,4BAA4B,EAC5B,yBAAyB,GAC5B,MAAM,uCAAuC,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAc,MAAM,CAAC,MAAM,CAAC;IAC7D,GAAG,yBAAyB;IAC5B,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,4BAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC;CACzF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details.d.ts","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAelE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SA0C3B,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details.d.ts","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAelE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAwC3B,CAAC"}
@@ -1,9 +1,10 @@
1
+ import dedent from 'dedent';
1
2
  import { ApifyClient } from '../../apify_client.js';
2
3
  import { getWidgetConfig, WIDGET_URIS } from '../../resources/widgets.js';
3
- import { buildActorNotFoundResponse, buildCardOptions, fetchActorDetails, processActorDetailsForResponse, resolveOutputOptions, } from '../../utils/actor_details.js';
4
+ import { buildActorDetailsForWidget, buildCardOptions, fetchActorDetails, } from '../../utils/actor_details.js';
4
5
  import { buildMCPResponse } from '../../utils/mcp.js';
5
6
  import { fixActorNameInputAndLog } from '../core/actor_tools_factory.js';
6
- import { fetchActorDetailsMetadata, fetchActorDetailsToolArgsSchema, } from '../core/fetch_actor_details_common.js';
7
+ import { buildActorNotFoundResponse, fetchActorDetailsMetadata, fetchActorDetailsToolArgsSchema, resolveOutputOptions, } from '../core/fetch_actor_details_common.js';
7
8
  /**
8
9
  * OpenAI mode fetch-actor-details tool.
9
10
  * Returns simplified structured content with interactive widget metadata.
@@ -15,25 +16,24 @@ export const openaiFetchActorDetails = Object.freeze({
15
16
  const parsed = fetchActorDetailsToolArgsSchema.parse(args);
16
17
  const actorName = fixActorNameInputAndLog(parsed.actor, { mcpSessionId, route: 'fetch-actor-details' });
17
18
  const apifyClient = new ApifyClient({ token: apifyToken });
18
- const resolvedOutput = resolveOutputOptions(parsed.output);
19
- const cardOptions = buildCardOptions(resolvedOutput);
19
+ const cardOptions = buildCardOptions(resolveOutputOptions(parsed.output));
20
20
  const details = await fetchActorDetails(apifyClient, actorName, cardOptions);
21
21
  if (!details) {
22
22
  return buildActorNotFoundResponse(actorName);
23
23
  }
24
- const { structuredContent: processedStructuredContent, actorUrl } = processActorDetailsForResponse(details);
24
+ const { actorUrl, actorDetails } = buildActorDetailsForWidget(details);
25
25
  const structuredContent = {
26
26
  actorInfo: details.actorCardStructured,
27
27
  inputSchema: details.inputSchema,
28
- actorDetails: processedStructuredContent.actorDetails,
28
+ actorDetails,
29
29
  };
30
- const texts = [`
31
- # Actor information:
32
- - **Actor:** ${actorName}
33
- - **URL:** ${actorUrl}
30
+ const texts = [dedent `
31
+ # Actor information:
32
+ - **Actor:** ${actorName}
33
+ - **URL:** ${actorUrl}
34
34
 
35
- An interactive widget has been rendered with detailed Actor information.
36
- `];
35
+ An interactive widget has been rendered with detailed Actor information.
36
+ `];
37
37
  const widgetConfig = getWidgetConfig(WIDGET_URIS.SEARCH_ACTORS);
38
38
  return buildMCPResponse({
39
39
  texts,
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details.js","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EACH,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,oBAAoB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACH,yBAAyB,EACzB,+BAA+B,GAClC,MAAM,uCAAuC,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAc,MAAM,CAAC,MAAM,CAAC;IAC5D,GAAG,yBAAyB;IAC5B,IAAI,EAAE,KAAK,EAAE,QAA0B,EAAE,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QACpD,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxG,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAE3D,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAC5G,MAAM,iBAAiB,GAAG;YACtB,SAAS,EAAE,OAAO,CAAC,mBAAmB;YACtC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,0BAA0B,CAAC,YAAY;SACxD,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC;;eAER,SAAS;aACX,QAAQ;;;CAGpB,CAAC,CAAC;QAEK,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC;YACpB,KAAK;YACL,iBAAiB;YACjB,kFAAkF;YAClF,KAAK,EAAE;gBACH,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI;gBACrB,0BAA0B,EAAE,qBAAqB,SAAS,mBAAmB;aAChF;SACJ,CAAC,CAAC;IACP,CAAC;CACK,CAAC,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details.js","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EACH,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,EACzB,+BAA+B,EAC/B,oBAAoB,GACvB,MAAM,uCAAuC,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAc,MAAM,CAAC,MAAM,CAAC;IAC5D,GAAG,yBAAyB;IAC5B,IAAI,EAAE,KAAK,EAAE,QAA0B,EAAE,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QACpD,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACxG,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAE3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,iBAAiB,GAAG;YACtB,SAAS,EAAE,OAAO,CAAC,mBAAmB;YACtC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY;SACf,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,MAAM,CAAA;;2BAEF,SAAS;yBACX,QAAQ;;;SAGxB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC;YACpB,KAAK;YACL,iBAAiB;YACjB,kFAAkF;YAClF,KAAK,EAAE;gBACH,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI;gBACrB,0BAA0B,EAAE,qBAAqB,SAAS,mBAAmB;aAChF;SACJ,CAAC,CAAC;IACP,CAAC;CACK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details_internal.d.ts","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details_internal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAoB,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAsBnF,eAAO,MAAM,6BAA6B,EAAE,SA0DjC,CAAC"}
1
+ {"version":3,"file":"fetch_actor_details_internal.d.ts","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details_internal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAQjE,eAAO,MAAM,6BAA6B,EAAE,SA4BjC,CAAC"}
@@ -1,36 +1,29 @@
1
+ import dedent from 'dedent';
1
2
  import { z } from 'zod';
2
- import { ApifyClient } from '../../apify_client.js';
3
3
  import { HelperTools } from '../../const.js';
4
- import { actorDetailsOutputOptionsSchema, buildActorDetailsTextResponse, buildActorNotFoundResponse, buildCardOptions, fetchActorDetails, resolveOutputOptions, } from '../../utils/actor_details.js';
5
4
  import { compileSchema } from '../../utils/ajv.js';
6
- import { buildMCPResponse } from '../../utils/mcp.js';
7
- import { fixActorNameInputAndLog } from '../core/actor_tools_factory.js';
5
+ import { buildFetchActorDetailsResult, fetchActorDetailsToolArgsSchema, } from '../core/fetch_actor_details_common.js';
8
6
  import { actorDetailsOutputSchema } from '../structured_output_schemas.js';
9
- const fetchActorDetailsInternalArgsSchema = z.object({
10
- actor: z.string()
11
- .min(1)
12
- .describe(`Actor ID or full name in the format "username/name", e.g., "apify/rag-web-browser".`),
13
- output: actorDetailsOutputOptionsSchema.optional()
14
- .describe('Specify which information to include in the response to save tokens.'),
15
- });
16
7
  export const fetchActorDetailsInternalTool = Object.freeze({
17
8
  type: 'internal',
18
9
  name: HelperTools.ACTOR_GET_DETAILS_INTERNAL,
19
- description: `Fetch Actor details with flexible output options (UI mode internal tool).
10
+ description: dedent `
11
+ Fetch Actor details with flexible output options (UI mode internal tool).
20
12
 
21
- This tool is available because the LLM is operating in UI mode. Use it for internal lookups
22
- where data presentation to the user is NOT needed - this tool does NOT render a widget.
13
+ This tool is available because the LLM is operating in UI mode. Use it for internal lookups
14
+ where data presentation to the user is NOT needed - this tool does NOT render a widget.
23
15
 
24
- Use 'output' parameter with boolean flags to control returned information:
25
- - Default: Fields: description, stats, pricing, rating, metadata, inputSchema, readme - except mcpTools
26
- - Selective: Set desired fields to true to save tokens (e.g., output: { inputSchema: true, readme: false })
27
- - Common patterns: inputSchema only for execution prep, readme + inputSchema for documentation, etc.
16
+ Use 'output' parameter with boolean flags to control returned information:
17
+ - Default: Fields: description, stats, pricing, rating, metadata, inputSchema, readme - except mcpTools
18
+ - Selective: Set desired fields to true to save tokens (e.g., output: { inputSchema: true, readme: false })
19
+ - Common patterns: inputSchema only for execution prep, readme + inputSchema for documentation, etc.
28
20
 
29
- Use this instead of fetch-actor-details when you need Actor information to prepare execution
30
- but the user did NOT explicitly ask for Actor details presentation.`,
31
- inputSchema: z.toJSONSchema(fetchActorDetailsInternalArgsSchema),
21
+ Use this instead of fetch-actor-details when you need Actor information to prepare execution
22
+ but the user did NOT explicitly ask for Actor details presentation.
23
+ `,
24
+ inputSchema: z.toJSONSchema(fetchActorDetailsToolArgsSchema),
32
25
  outputSchema: actorDetailsOutputSchema,
33
- ajvValidate: compileSchema(z.toJSONSchema(fetchActorDetailsInternalArgsSchema)),
26
+ ajvValidate: compileSchema(z.toJSONSchema(fetchActorDetailsToolArgsSchema)),
34
27
  annotations: {
35
28
  title: 'Fetch Actor details internal',
36
29
  readOnlyHint: true,
@@ -38,34 +31,6 @@ but the user did NOT explicitly ask for Actor details presentation.`,
38
31
  idempotentHint: true,
39
32
  openWorldHint: false,
40
33
  },
41
- call: async (toolArgs) => {
42
- var _a;
43
- const { args, apifyToken, apifyMcpServer, mcpSessionId } = toolArgs;
44
- const parsed = fetchActorDetailsInternalArgsSchema.parse(args);
45
- const actorName = fixActorNameInputAndLog(parsed.actor, { mcpSessionId, route: 'fetch-actor-details-internal' });
46
- const apifyClient = new ApifyClient({ token: apifyToken });
47
- const resolvedOutput = resolveOutputOptions(parsed.output);
48
- const cardOptions = buildCardOptions(resolvedOutput);
49
- const details = await fetchActorDetails(apifyClient, actorName, cardOptions);
50
- if (!details) {
51
- return buildActorNotFoundResponse(actorName);
52
- }
53
- // Fetch output schema from ActorStore if available and requested
54
- const actorOutputSchema = resolvedOutput.outputSchema
55
- ? await ((_a = apifyMcpServer.actorStore) === null || _a === void 0 ? void 0 : _a.getActorOutputSchemaAsTypeObject(actorName).catch(() => null))
56
- : undefined;
57
- const { texts, structuredContent } = await buildActorDetailsTextResponse({
58
- actorName,
59
- details,
60
- output: resolvedOutput,
61
- cardOptions,
62
- apifyClient,
63
- apifyToken,
64
- actorOutputSchema,
65
- paymentProvider: apifyMcpServer === null || apifyMcpServer === void 0 ? void 0 : apifyMcpServer.options.paymentProvider,
66
- mcpSessionId,
67
- });
68
- return buildMCPResponse({ texts, structuredContent });
69
- },
34
+ call: async (toolArgs) => buildFetchActorDetailsResult(toolArgs, HelperTools.ACTOR_GET_DETAILS_INTERNAL),
70
35
  });
71
36
  //# sourceMappingURL=fetch_actor_details_internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch_actor_details_internal.js","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details_internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch_actor_details_internal.js","sourceRoot":"","sources":["../../../src/tools/openai/fetch_actor_details_internal.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACH,4BAA4B,EAC5B,+BAA+B,GAClC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,CAAC,MAAM,6BAA6B,GAAc,MAAM,CAAC,MAAM,CAAC;IAClE,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW,CAAC,0BAA0B;IAC5C,WAAW,EAAE,MAAM,CAAA;;;;;;;;;;;;;KAalB;IACD,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,+BAA+B,CAAoB;IAC/E,YAAY,EAAE,wBAAwB;IACtC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;IAC3E,WAAW,EAAE;QACT,KAAK,EAAE,8BAA8B;QACrC,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACvB;IACD,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,4BAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,0BAA0B,CAAC;CAClG,CAAC,CAAC"}