@apify/actors-mcp-server 0.20.1-beta.7 → 0.20.1-beta.9
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/dist/mcp/errors.d.ts +1 -1
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +1 -1
- package/dist/mcp/errors.js.map +1 -1
- package/dist/mcp/proxy.d.ts.map +1 -1
- package/dist/mcp/proxy.js +1 -0
- package/dist/mcp/proxy.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/tool_dispatch.js +2 -2
- package/dist/mcp/tool_dispatch.js.map +1 -1
- package/dist/resources/resource_service.d.ts.map +1 -1
- package/dist/resources/resource_service.js +10 -24
- package/dist/resources/resource_service.js.map +1 -1
- package/dist/test_kit/cases/apps.cases.d.ts.map +1 -1
- package/dist/test_kit/cases/apps.cases.js +0 -2
- package/dist/test_kit/cases/apps.cases.js.map +1 -1
- package/dist/test_kit/tsconfig.tsbuildinfo +1 -1
- package/dist/tools/actors/fetch_actor_details.d.ts +2 -1
- package/dist/tools/actors/fetch_actor_details.d.ts.map +1 -1
- package/dist/tools/actors/fetch_actor_details.js +9 -9
- package/dist/tools/actors/fetch_actor_details.js.map +1 -1
- package/dist/tools/actors/server_interface_details.d.ts +33 -0
- package/dist/tools/actors/server_interface_details.d.ts.map +1 -0
- package/dist/tools/actors/server_interface_details.js +158 -0
- package/dist/tools/actors/server_interface_details.js.map +1 -0
- package/dist/tools/actors/server_interface_schema.d.ts +28 -28
- package/dist/tools/actors/server_interface_schema.d.ts.map +1 -1
- package/dist/tools/actors/server_interface_schema.js +25 -156
- package/dist/tools/actors/server_interface_schema.js.map +1 -1
- package/dist/tools/structured_output_schemas.d.ts +636 -485
- package/dist/tools/structured_output_schemas.d.ts.map +1 -1
- package/dist/tools/structured_output_schemas.js +109 -27
- package/dist/tools/structured_output_schemas.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/tools.d.ts.map +1 -1
- package/dist/utils/tools.js +1 -3
- package/dist/utils/tools.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import type { ConsoleLinkContext, InternalToolArgs, ToolEntry } from '../../types.js';
|
|
3
3
|
import { type ActorDetailsResult } from '../../utils/actor_details.js';
|
|
4
4
|
import { type ToolResponse } from '../../utils/mcp.js';
|
|
5
|
+
import type { ServerInterfaceSection } from './server_interface_details.js';
|
|
5
6
|
/**
|
|
6
7
|
* Shared schema for actor details output options.
|
|
7
8
|
*
|
|
@@ -70,7 +71,7 @@ export declare function buildActorDetailsTextResponse(options: {
|
|
|
70
71
|
details: ActorDetailsResult;
|
|
71
72
|
output: ResolvedOutputOptions;
|
|
72
73
|
actorOutputSchema?: Record<string, unknown> | null;
|
|
73
|
-
|
|
74
|
+
serverInterface?: ServerInterfaceSection;
|
|
74
75
|
linkContext?: ConsoleLinkContext;
|
|
75
76
|
}): {
|
|
76
77
|
texts: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch_actor_details.d.ts","sourceRoot":"","sources":["../../../src/tools/actors/fetch_actor_details.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EACR,kBAAkB,EAElB,gBAAgB,EAEhB,SAAS,EAEZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,KAAK,kBAAkB,EAK1B,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch_actor_details.d.ts","sourceRoot":"","sources":["../../../src/tools/actors/fetch_actor_details.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EACR,kBAAkB,EAElB,gBAAgB,EAEhB,SAAS,EAEZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,KAAK,kBAAkB,EAK1B,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;iBAuB1C,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;qBAST,OAAO,GAAG,MAAM;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,OAAO,0BAA0B,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,GAAG,qBAAqB,CAkBpH;AAED;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;iBAQ1C,CAAC;AAiCH;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAU9G;AAED,gGAAgG;AAChG,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GACpC,MAAM,CAMR;AAED,4DAA4D;AAC5D,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,sBAAsB,CAAC;IACzC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CACpC,GAAG;IACA,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C,CA2DA;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6DpG;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAiBA,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { getUserInfoCached } from '../../utils/userid_cache.js';
|
|
|
11
11
|
import { canRunActor, getOwnServerRemedy } from '../actor_tool_naming.js';
|
|
12
12
|
import { actorDetailsOutputSchema } from '../structured_output_schemas.js';
|
|
13
13
|
import { fixActorNameInputAndLog } from './actor_tools_factory.js';
|
|
14
|
-
import {
|
|
14
|
+
import { buildServerInterfaceDetails } from './server_interface_details.js';
|
|
15
15
|
/**
|
|
16
16
|
* Shared schema for actor details output options.
|
|
17
17
|
*
|
|
@@ -38,7 +38,7 @@ export const actorDetailsOutputOptionsSchema = z.object({
|
|
|
38
38
|
.optional()
|
|
39
39
|
.describe('Include inferred output schema from recent successful runs (TypeScript type).'),
|
|
40
40
|
serverInterface: z.union([z.boolean(), z.string()]).optional().describe(dedent `
|
|
41
|
-
Server Actor HTTP API. true: every operation with its parameters and request body schema when they fit; otherwise one
|
|
41
|
+
Server Actor HTTP API. true: every operation with its parameters and request body schema when they fit; otherwise an index with one entry per operation.
|
|
42
42
|
"METHOD /path" (e.g. "GET /search"): that one operation in full.
|
|
43
43
|
Each is limited to ${MAX_INLINE_BYTES} UTF-8 bytes.
|
|
44
44
|
`),
|
|
@@ -106,7 +106,7 @@ Use 'output' to control returned information:
|
|
|
106
106
|
? ' Server Actors always get a one-line server interface summary unless serverInterface is true or a selector.'
|
|
107
107
|
: ''}
|
|
108
108
|
- Selective: set only the fields you need to true, e.g. output: { inputSchema: true }
|
|
109
|
-
- Common patterns: inputSchema only, description + readme, serverInterface: true (every operation in full when they fit,
|
|
109
|
+
- Common patterns: inputSchema only, description + readme, serverInterface: true (every operation in full when they fit, an index of them otherwise) or "GET /search" (one operation in full) for Server Actors
|
|
110
110
|
|
|
111
111
|
The 'readme' field returns the summary when available, full README otherwise.
|
|
112
112
|
Use when querying Actor details, documentation, or input requirements.${mcpToolList}
|
|
@@ -143,7 +143,7 @@ export function buildActorNotRunnableGuidance(actorId, loadedToolNames, loadedAc
|
|
|
143
143
|
/** Build text and structured response for actor details. */
|
|
144
144
|
export function buildActorDetailsTextResponse(options) {
|
|
145
145
|
var _a;
|
|
146
|
-
const { details, output, actorOutputSchema,
|
|
146
|
+
const { details, output, actorOutputSchema, serverInterface, linkContext } = options;
|
|
147
147
|
const actorUrl = (_a = buildConsoleActorUrl(linkContext, details.actorInfo.id)) !== null && _a !== void 0 ? _a : `https://apify.com/${details.actorInfo.username}/${details.actorInfo.name}`;
|
|
148
148
|
const texts = [];
|
|
149
149
|
const needsCard = output.description || output.stats || output.pricing || output.rating || output.metadata;
|
|
@@ -177,8 +177,8 @@ export function buildActorDetailsTextResponse(options) {
|
|
|
177
177
|
`);
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
-
if (
|
|
181
|
-
texts.push(
|
|
180
|
+
if (serverInterface === null || serverInterface === void 0 ? void 0 : serverInterface.text)
|
|
181
|
+
texts.push(serverInterface.text);
|
|
182
182
|
if (linkContext) {
|
|
183
183
|
texts.push(VERBATIM_LINKS_NUDGE);
|
|
184
184
|
}
|
|
@@ -187,7 +187,7 @@ export function buildActorDetailsTextResponse(options) {
|
|
|
187
187
|
readme: resolvedReadme === null || resolvedReadme === void 0 ? void 0 : resolvedReadme.content,
|
|
188
188
|
inputSchema: output.inputSchema ? details.inputSchema : undefined,
|
|
189
189
|
outputSchema: output.outputSchema ? (actorOutputSchema !== null && actorOutputSchema !== void 0 ? actorOutputSchema : {}) : undefined,
|
|
190
|
-
serverInterface:
|
|
190
|
+
serverInterface: serverInterface === null || serverInterface === void 0 ? void 0 : serverInterface.serverInterface,
|
|
191
191
|
};
|
|
192
192
|
return { texts, structuredContent };
|
|
193
193
|
}
|
|
@@ -213,7 +213,7 @@ export async function buildFetchActorDetailsResult(toolArgs) {
|
|
|
213
213
|
if (!details) {
|
|
214
214
|
return buildActorNotFoundResponse(actorName, loadedToolNames);
|
|
215
215
|
}
|
|
216
|
-
const serverInterface =
|
|
216
|
+
const serverInterface = buildServerInterfaceDetails({
|
|
217
217
|
actor: details.actorInfo,
|
|
218
218
|
actorFullName: `${details.actorInfo.username}/${details.actorInfo.name}`,
|
|
219
219
|
schema: details.webServerSchema,
|
|
@@ -235,7 +235,7 @@ export async function buildFetchActorDetailsResult(toolArgs) {
|
|
|
235
235
|
details,
|
|
236
236
|
output: resolvedOutput,
|
|
237
237
|
actorOutputSchema,
|
|
238
|
-
|
|
238
|
+
serverInterface,
|
|
239
239
|
linkContext,
|
|
240
240
|
});
|
|
241
241
|
// Resolved Actor ID, not the raw `actor` input — that may itself be an ID.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch_actor_details.js","sourceRoot":"","sources":["../../../src/tools/actors/fetch_actor_details.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAShE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAEH,gBAAgB,EAChB,iBAAiB,IAAI,wBAAwB,EAC7C,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAqB,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch_actor_details.js","sourceRoot":"","sources":["../../../src/tools/actors/fetch_actor_details.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Actor, ActorTenancy } from '../../types.js';
|
|
2
|
+
import type { ServerOperationDetails, ServerOperationIndexEntry } from './server_interface_schema.js';
|
|
3
|
+
/** `structuredContent.serverInterface` of `fetch-actor-details`. */
|
|
4
|
+
export type ServerInterfaceDetails = {
|
|
5
|
+
tenancy: ActorTenancy;
|
|
6
|
+
/** Single-tenant: how long the run the first request starts stays up without requests. */
|
|
7
|
+
idleTimeoutSecs?: number;
|
|
8
|
+
/** Only without the send tool, which adds the host itself. */
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
/** All documented operations, whatever `operations` holds. */
|
|
11
|
+
operationCount: number;
|
|
12
|
+
operations?: ServerOperationDetails[];
|
|
13
|
+
/** Replaces `operations` when they exceed `MAX_INLINE_BYTES` in full. */
|
|
14
|
+
operationIndex?: ServerOperationIndexEntry[];
|
|
15
|
+
omittedOperationCount?: number;
|
|
16
|
+
};
|
|
17
|
+
export type ServerInterfaceSection = {
|
|
18
|
+
serverInterface?: ServerInterfaceDetails;
|
|
19
|
+
text?: string;
|
|
20
|
+
};
|
|
21
|
+
/** The section by `output.serverInterface`: a summary line, every operation or the index, or one operation. */
|
|
22
|
+
export declare function buildServerInterfaceDetails({ actor, actorFullName, schema, serverInterface, loadedToolNames, hasPaymentProvider, }: {
|
|
23
|
+
actor: Pick<Actor, 'actorStandby' | 'standbyUrl'>;
|
|
24
|
+
actorFullName: string;
|
|
25
|
+
schema: unknown;
|
|
26
|
+
serverInterface: boolean | string;
|
|
27
|
+
loadedToolNames: readonly string[];
|
|
28
|
+
/** An agentic payment provider (x402, Skyfire) cannot pay for a server-interface request. */
|
|
29
|
+
hasPaymentProvider: boolean;
|
|
30
|
+
}): ServerInterfaceSection | {
|
|
31
|
+
error: string;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=server_interface_details.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server_interface_details.d.ts","sourceRoot":"","sources":["../../../src/tools/actors/server_interface_details.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM1D,OAAO,KAAK,EAAmB,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AASvH,oEAAoE;AACpE,MAAM,MAAM,sBAAsB,GAAG;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,yEAAyE;IACzE,cAAc,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAAE,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAkJjG,+GAA+G;AAC/G,wBAAgB,2BAA2B,CAAC,EACxC,KAAK,EACL,aAAa,EACb,MAAM,EACN,eAAe,EACf,eAAe,EACf,kBAAkB,GACrB,EAAE;IACC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,6FAA6F;IAC7F,kBAAkB,EAAE,OAAO,CAAC;CAC/B,GAAG,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAyC7C"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The server-interface section of `fetch-actor-details`, built as the `structuredContent` object first and the
|
|
3
|
+
* text from it (a header plus the object as fenced JSON), so the two cannot drift.
|
|
4
|
+
*/
|
|
5
|
+
import { HELPER_TOOLS, MAX_INLINE_BYTES } from '../../const.js';
|
|
6
|
+
import { ACTOR_TENANCY } from '../../types.js';
|
|
7
|
+
import { wrapJsonText } from '../../utils/encode_text.js';
|
|
8
|
+
import { resolveActorTenancy } from '../actor_tool_naming.js';
|
|
9
|
+
import { DereferenceBudgetError } from '../api/apify_api_spec.js';
|
|
10
|
+
import { buildServerOperationDetails, buildServerOperationIndex, findServerOperation, formatOperationName, listServerOperations, } from './server_interface_schema.js';
|
|
11
|
+
const MAX_NAMED_OPERATIONS = 5;
|
|
12
|
+
const MAX_NAMED_OPERATIONS_LENGTH = 300;
|
|
13
|
+
function formatOperationCount(operations) {
|
|
14
|
+
const count = `${operations.length} documented operation${operations.length === 1 ? '' : 's'}`;
|
|
15
|
+
const names = operations.map(formatOperationName).join(', ');
|
|
16
|
+
const isNamed = operations.length <= MAX_NAMED_OPERATIONS && names.length <= MAX_NAMED_OPERATIONS_LENGTH;
|
|
17
|
+
return isNamed ? `${count}: ${names}` : count;
|
|
18
|
+
}
|
|
19
|
+
function formatDetailsCall(actorFullName, serverInterface) {
|
|
20
|
+
return `${HELPER_TOOLS.ACTOR_GET_DETAILS} with ${JSON.stringify({ actor: actorFullName, output: { serverInterface } })}`;
|
|
21
|
+
}
|
|
22
|
+
/** `undefined` when the references expand past `MAX_INLINE_BYTES`. */
|
|
23
|
+
function renderWithinBudget(schema, render) {
|
|
24
|
+
const budget = { remainingBytes: MAX_INLINE_BYTES };
|
|
25
|
+
try {
|
|
26
|
+
const value = render({ spec: schema, shouldKeepExamples: true, budget });
|
|
27
|
+
return { value, json: wrapJsonText(value) };
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// A deep untrusted schema or example can exhaust the stack in JSON.stringify.
|
|
31
|
+
if (error instanceof DereferenceBudgetError || error instanceof RangeError)
|
|
32
|
+
return undefined;
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** As many entries as fit `maxBytes`. The size grows with the entries kept, as an entry outweighs a digit of the count. */
|
|
37
|
+
function fitOperationIndex(facts, index, maxBytes) {
|
|
38
|
+
const render = (kept) => {
|
|
39
|
+
const omitted = index.length - kept;
|
|
40
|
+
const value = {
|
|
41
|
+
...facts,
|
|
42
|
+
operationIndex: index.slice(0, kept),
|
|
43
|
+
...(omitted > 0 && { omittedOperationCount: omitted }),
|
|
44
|
+
};
|
|
45
|
+
return { value, json: wrapJsonText(value) };
|
|
46
|
+
};
|
|
47
|
+
let low = 0;
|
|
48
|
+
let high = index.length;
|
|
49
|
+
while (low < high) {
|
|
50
|
+
const middle = Math.ceil((low + high) / 2);
|
|
51
|
+
if (Buffer.byteLength(render(middle).json) <= maxBytes)
|
|
52
|
+
low = middle;
|
|
53
|
+
else
|
|
54
|
+
high = middle - 1;
|
|
55
|
+
}
|
|
56
|
+
return render(low);
|
|
57
|
+
}
|
|
58
|
+
/** An `undefined` section ran out of its rendering budget, so it would not fit either. */
|
|
59
|
+
function checkSize(section, actorFullName) {
|
|
60
|
+
if ((section === null || section === void 0 ? void 0 : section.text) !== undefined && Buffer.byteLength(section.text) <= MAX_INLINE_BYTES)
|
|
61
|
+
return section;
|
|
62
|
+
return {
|
|
63
|
+
error: `Actor '${actorFullName}' server-interface output exceeds the ${MAX_INLINE_BYTES}-byte limit and was not returned. A smaller operation may fit.`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** The platform facts of the section, the same for every tier that lists operations. */
|
|
67
|
+
function buildServerInterfaceFacts(actor, tenancy, operationCount, canSend) {
|
|
68
|
+
var _a;
|
|
69
|
+
const idleTimeoutSecs = (_a = actor.actorStandby) === null || _a === void 0 ? void 0 : _a.idleTimeoutSecs;
|
|
70
|
+
return {
|
|
71
|
+
tenancy,
|
|
72
|
+
...(tenancy === ACTOR_TENANCY.SINGLE_TENANT && idleTimeoutSecs !== undefined && { idleTimeoutSecs }),
|
|
73
|
+
...(!canSend && actor.standbyUrl && { baseUrl: actor.standbyUrl }),
|
|
74
|
+
operationCount,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** What a request costs, from the facts. */
|
|
78
|
+
function formatCostNotice({ tenancy, idleTimeoutSecs }, hasPaymentProvider) {
|
|
79
|
+
if (hasPaymentProvider)
|
|
80
|
+
return 'Requests to a server interface are not supported in agentic payment mode.';
|
|
81
|
+
if (tenancy === ACTOR_TENANCY.MULTI_TENANT) {
|
|
82
|
+
return `${tenancy}: requests are charged per event and start no run in your account.`;
|
|
83
|
+
}
|
|
84
|
+
const idleTimeout = idleTimeoutSecs === undefined ? 'its idle timeout' : `its idle timeout of ${idleTimeoutSecs} s`;
|
|
85
|
+
return `${tenancy}: the first request starts a run in your account, kept for ${idleTimeout}.`;
|
|
86
|
+
}
|
|
87
|
+
function formatSendExample(actorFullName, lead, { method, path }) {
|
|
88
|
+
return `${HELPER_TOOLS.ACTOR_SERVER_REQUEST} sends ${lead}: ${JSON.stringify({ actor: actorFullName, method, path })}\n`;
|
|
89
|
+
}
|
|
90
|
+
/** Every operation in full, or the index when they do not fit. */
|
|
91
|
+
function buildOperationsSection({ actorFullName, schema, facts, formatHeader }, operations) {
|
|
92
|
+
const header = formatHeader(`# Server interface of ${actorFullName}`, 'a request to one of them', operations[0]);
|
|
93
|
+
const full = renderWithinBudget(schema, (context) => ({
|
|
94
|
+
...facts,
|
|
95
|
+
operations: operations.map((operation) => buildServerOperationDetails(operation, context)),
|
|
96
|
+
}));
|
|
97
|
+
if (full) {
|
|
98
|
+
const text = `${header}${full.json}`;
|
|
99
|
+
if (Buffer.byteLength(text) <= MAX_INLINE_BYTES)
|
|
100
|
+
return { serverInterface: full.value, text };
|
|
101
|
+
}
|
|
102
|
+
const next = `The operations in full exceed the ${MAX_INLINE_BYTES}-byte limit. ${formatDetailsCall(actorFullName, formatOperationName(operations[0]))} returns one operation in full.\n`;
|
|
103
|
+
const index = fitOperationIndex(facts, buildServerOperationIndex(operations, schema), MAX_INLINE_BYTES - Buffer.byteLength(`${header}${next}`));
|
|
104
|
+
return checkSize({ serverInterface: index.value, text: `${header}${next}${index.json}` }, actorFullName);
|
|
105
|
+
}
|
|
106
|
+
function buildOperationSection({ actorFullName, schema, facts, formatHeader }, operation) {
|
|
107
|
+
const header = formatHeader(`# Server interface of ${actorFullName}: ${formatOperationName(operation)}`, 'this request', operation);
|
|
108
|
+
const one = renderWithinBudget(schema, (context) => ({
|
|
109
|
+
...facts,
|
|
110
|
+
operations: [buildServerOperationDetails(operation, context)],
|
|
111
|
+
}));
|
|
112
|
+
return checkSize(one && { serverInterface: one.value, text: `${header}${one.json}` }, actorFullName);
|
|
113
|
+
}
|
|
114
|
+
/** The section by `output.serverInterface`: a summary line, every operation or the index, or one operation. */
|
|
115
|
+
export function buildServerInterfaceDetails({ actor, actorFullName, schema, serverInterface, loadedToolNames, hasPaymentProvider, }) {
|
|
116
|
+
var _a;
|
|
117
|
+
const hasSendTool = loadedToolNames.includes(HELPER_TOOLS.ACTOR_SERVER_REQUEST);
|
|
118
|
+
// The summary helps choose between call-actor and the send tool, so it follows the send tool.
|
|
119
|
+
if (serverInterface === false && !hasSendTool)
|
|
120
|
+
return {};
|
|
121
|
+
if (((_a = actor.actorStandby) === null || _a === void 0 ? void 0 : _a.isEnabled) !== true) {
|
|
122
|
+
return serverInterface === false ? {} : { text: `Actor '${actorFullName}' has no server interface.` };
|
|
123
|
+
}
|
|
124
|
+
const tenancy = resolveActorTenancy(actor);
|
|
125
|
+
const operations = listServerOperations(schema);
|
|
126
|
+
if (operations.length === 0) {
|
|
127
|
+
return {
|
|
128
|
+
serverInterface: { tenancy, operationCount: 0 },
|
|
129
|
+
text: `Server interface: enabled, ${tenancy}, undocumented: no API schema. See the README.`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const listsThem = `${formatDetailsCall(actorFullName, true)} lists them.`;
|
|
133
|
+
if (serverInterface === false) {
|
|
134
|
+
return {
|
|
135
|
+
serverInterface: { tenancy, operationCount: operations.length },
|
|
136
|
+
text: `Server interface: enabled, ${tenancy}, ${formatOperationCount(operations)}. ${listsThem}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const canSend = !hasPaymentProvider && hasSendTool;
|
|
140
|
+
const facts = buildServerInterfaceFacts(actor, tenancy, operations.length, canSend);
|
|
141
|
+
const notice = formatCostNotice(facts, hasPaymentProvider);
|
|
142
|
+
const context = {
|
|
143
|
+
actorFullName,
|
|
144
|
+
schema,
|
|
145
|
+
facts,
|
|
146
|
+
formatHeader: (title, lead, operation) => `${title}\n${notice}\n${canSend ? formatSendExample(actorFullName, lead, operation) : ''}`,
|
|
147
|
+
};
|
|
148
|
+
if (serverInterface === true)
|
|
149
|
+
return buildOperationsSection(context, operations);
|
|
150
|
+
const operation = findServerOperation(operations, serverInterface);
|
|
151
|
+
if (!operation) {
|
|
152
|
+
return {
|
|
153
|
+
error: `Actor '${actorFullName}' has no operation "${serverInterface}". ${formatOperationCount(operations)}. ${listsThem}`,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return buildOperationSection(context, operation);
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=server_interface_details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server_interface_details.js","sourceRoot":"","sources":["../../../src/tools/actors/server_interface_details.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import type { Actor } from '../../types.js';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
* `
|
|
2
|
+
* The operations of a Server Actor's `webServerSchema`, an OpenAPI document as the creator wrote it, read the way
|
|
3
|
+
* `apify_api_spec.ts` reads the Apify API. No prose and no tool names here.
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* An unknown selection, or one operation over the byte cap, is an error.
|
|
18
|
-
*/
|
|
19
|
-
export declare function buildServerInterfaceText({ actor, actorFullName, schema, serverInterface, loadedToolNames, hasPaymentProvider, }: {
|
|
20
|
-
actor: Pick<Actor, 'actorStandby' | 'standbyUrl'>;
|
|
21
|
-
actorFullName: string;
|
|
22
|
-
schema: unknown;
|
|
23
|
-
serverInterface: boolean | string;
|
|
24
|
-
loadedToolNames: readonly string[];
|
|
25
|
-
/** An agentic payment provider (x402, Skyfire) cannot pay for an Actor Server request. */
|
|
26
|
-
hasPaymentProvider: boolean;
|
|
27
|
-
}): {
|
|
28
|
-
text?: string;
|
|
29
|
-
} | {
|
|
30
|
-
error: string;
|
|
5
|
+
import type { ApiMethod, ApiOperation, ApiParameter, DereferenceContext } from '../api/apify_api_spec.js';
|
|
6
|
+
/** One method on one path, with the path-level parameters merged into the operation. */
|
|
7
|
+
export type ServerOperation = {
|
|
8
|
+
method: ApiMethod;
|
|
9
|
+
path: string;
|
|
10
|
+
operation: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
/** A body with no JSON media type cannot be sent, so it has no schema. */
|
|
13
|
+
export type OtherRequestBody = {
|
|
14
|
+
isRequired: boolean;
|
|
15
|
+
contentTypes: string[];
|
|
31
16
|
};
|
|
17
|
+
/** The `get-apify-api-details` shape. */
|
|
18
|
+
export type ServerOperationDetails = Pick<ApiOperation, 'method' | 'path'> & Partial<Pick<ApiOperation, 'summary' | 'description'>> & {
|
|
19
|
+
parameters: ApiParameter[];
|
|
20
|
+
requestBody?: ApiOperation['requestBody'] | OtherRequestBody;
|
|
21
|
+
};
|
|
22
|
+
export type ServerOperationIndexEntry = Pick<ApiOperation, 'method' | 'path'> & Partial<Pick<ApiOperation, 'summary'>> & {
|
|
23
|
+
requiredInputs: string[];
|
|
24
|
+
};
|
|
25
|
+
export declare function listServerOperations(schema: unknown): ServerOperation[];
|
|
26
|
+
export declare function formatOperationName({ method, path }: Pick<ServerOperation, 'method' | 'path'>): string;
|
|
27
|
+
export declare function findServerOperation(operations: ServerOperation[], selector: string): ServerOperation | undefined;
|
|
28
|
+
export declare function buildServerOperationIndex(operations: ServerOperation[], schema: unknown): ServerOperationIndexEntry[];
|
|
29
|
+
export declare function listDocumentedOperations(schema: unknown): string[];
|
|
30
|
+
/** Throws `DereferenceBudgetError` when the context's budget runs out. */
|
|
31
|
+
export declare function buildServerOperationDetails({ method, path, operation }: ServerOperation, context: DereferenceContext): ServerOperationDetails;
|
|
32
32
|
//# sourceMappingURL=server_interface_schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server_interface_schema.d.ts","sourceRoot":"","sources":["../../../src/tools/actors/server_interface_schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server_interface_schema.d.ts","sourceRoot":"","sources":["../../../src/tools/actors/server_interface_schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG1G,wFAAwF;AACxF,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEtG,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/E,yCAAyC;AACzC,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,GACtE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,GAAG;IACrD,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC;CAChE,CAAC;AAEN,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,GAAG;IAAE,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AA8B1E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,EAAE,CAiBvE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,MAAM,CAEtG;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAKhH;AAeD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,yBAAyB,EAAE,CAOrH;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAKlE;AAUD,0EAA0E;AAC1E,wBAAgB,2BAA2B,CACvC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,EAC5C,OAAO,EAAE,kBAAkB,GAC5B,sBAAsB,CAWxB"}
|