@apify/actors-mcp-server 0.1.6 → 0.1.7-beta.0
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 +37 -12
- package/dist/actors.d.ts +42 -0
- package/dist/actors.d.ts.map +1 -0
- package/dist/{actorDefinition.js → actors.js} +32 -27
- package/dist/actors.js.map +1 -0
- package/dist/const.d.ts +11 -4
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +14 -6
- package/dist/const.js.map +1 -1
- package/dist/examples/clientSse.d.ts +1 -0
- package/dist/examples/clientSse.d.ts.map +1 -1
- package/dist/examples/clientSse.js +1 -1
- package/dist/examples/clientSse.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +3 -0
- package/dist/input.js.map +1 -1
- package/dist/main.js +11 -2
- package/dist/main.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +48 -18
- package/dist/server.js.map +1 -1
- package/dist/tools.d.ts +43 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +123 -0
- package/dist/tools.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +35 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
- package/dist/actorDefinition.d.ts +0 -14
- package/dist/actorDefinition.d.ts.map +0 -1
- package/dist/actorDefinition.js.map +0 -1
package/dist/server.js
CHANGED
|
@@ -6,9 +6,10 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
6
6
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
7
7
|
import { Actor } from 'apify';
|
|
8
8
|
import { ApifyClient } from 'apify-client';
|
|
9
|
-
import { getActorsAsTools } from './
|
|
10
|
-
import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, defaults, SERVER_NAME, SERVER_VERSION, USER_AGENT_ORIGIN, } from './const.js';
|
|
9
|
+
import { actorNameToToolName, filterSchemaProperties, getActorDefinition, getActorsAsTools, shortenProperties, toolNameToActorName, } from './actors.js';
|
|
10
|
+
import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, defaults, InternalTools, SERVER_NAME, SERVER_VERSION, USER_AGENT_ORIGIN, } from './const.js';
|
|
11
11
|
import { log } from './logger.js';
|
|
12
|
+
import { RemoveActorToolArgsSchema, AddActorToToolsArgsSchema, DiscoverActorsArgsSchema, searchActorsByKeywords, GetActorDefinition, } from './tools.js';
|
|
12
13
|
/**
|
|
13
14
|
* Create Apify MCP server
|
|
14
15
|
*/
|
|
@@ -52,17 +53,15 @@ export class ApifyMcpServer {
|
|
|
52
53
|
* @throws {Error} - Throws an error if the `APIFY_TOKEN` is not set
|
|
53
54
|
*/
|
|
54
55
|
async callActorGetDataset(actorName, input, callOptions = undefined) {
|
|
55
|
-
|
|
56
|
-
throw new Error('APIFY_TOKEN is required but not set. Please set it as an environment variable');
|
|
57
|
-
}
|
|
56
|
+
const name = toolNameToActorName(actorName);
|
|
58
57
|
try {
|
|
59
|
-
log.info(`Calling actor ${
|
|
58
|
+
log.info(`Calling actor ${name} with input: ${JSON.stringify(input)}`);
|
|
60
59
|
const options = { requestInterceptors: [this.addUserAgent] };
|
|
61
60
|
const client = new ApifyClient({ ...options, token: process.env.APIFY_TOKEN });
|
|
62
|
-
const actorClient = client.actor(
|
|
61
|
+
const actorClient = client.actor(name);
|
|
63
62
|
const results = await actorClient.call(input, callOptions);
|
|
64
63
|
const dataset = await client.dataset(results.defaultDatasetId).listItems();
|
|
65
|
-
log.info(`Actor ${
|
|
64
|
+
log.info(`Actor ${name} finished with ${dataset.items.length} items`);
|
|
66
65
|
if (process.env.APIFY_IS_AT_HOME) {
|
|
67
66
|
await Actor.pushData(dataset.items);
|
|
68
67
|
log.info(`Pushed ${dataset.items.length} items to the dataset`);
|
|
@@ -70,7 +69,7 @@ export class ApifyMcpServer {
|
|
|
70
69
|
return dataset.items;
|
|
71
70
|
}
|
|
72
71
|
catch (error) {
|
|
73
|
-
log.error(`Error calling actor: ${error}. Actor: ${
|
|
72
|
+
log.error(`Error calling actor: ${error}. Actor: ${name}, input: ${JSON.stringify(input)}`);
|
|
74
73
|
throw new Error(`Error calling actor: ${error}`);
|
|
75
74
|
}
|
|
76
75
|
}
|
|
@@ -111,23 +110,54 @@ export class ApifyMcpServer {
|
|
|
111
110
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
112
111
|
const { name, arguments: args } = request.params;
|
|
113
112
|
// Anthropic can't handle '/' in tool names. The replace is only necessary when calling the tool from stdio clients.
|
|
114
|
-
const tool = this.tools.get(name) || this.tools.get(name
|
|
113
|
+
const tool = this.tools.get(name) || this.tools.get(actorNameToToolName(name));
|
|
115
114
|
if (!tool) {
|
|
116
115
|
throw new Error(`Unknown tool: ${name}`);
|
|
117
116
|
}
|
|
117
|
+
if (!args) {
|
|
118
|
+
throw new Error(`Missing arguments for tool: ${name}`);
|
|
119
|
+
}
|
|
118
120
|
log.info(`Validate arguments for tool: ${tool.name} with arguments: ${JSON.stringify(args)}`);
|
|
119
121
|
if (!tool.ajvValidate(args)) {
|
|
120
122
|
throw new Error(`Invalid arguments for tool ${tool.name}: args: ${JSON.stringify(args)} error: ${JSON.stringify(tool?.ajvValidate.errors)}`);
|
|
121
123
|
}
|
|
122
124
|
try {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
switch (name) {
|
|
126
|
+
case InternalTools.ADD_ACTOR_TO_TOOLS: {
|
|
127
|
+
const parsed = AddActorToToolsArgsSchema.parse(args);
|
|
128
|
+
await this.addToolsFromActors([parsed.actorFullName]);
|
|
129
|
+
return { content: [{ type: 'text', text: `Actor ${args.name} was added to tools` }] };
|
|
130
|
+
}
|
|
131
|
+
case InternalTools.REMOVE_ACTOR_FROM_TOOLS: {
|
|
132
|
+
const parsed = RemoveActorToolArgsSchema.parse(args);
|
|
133
|
+
this.tools.delete(parsed.toolName);
|
|
134
|
+
return { content: [{ type: 'text', text: `Actor ${args.name} was removed from tools` }] };
|
|
135
|
+
}
|
|
136
|
+
case InternalTools.DISCOVER_ACTORS: {
|
|
137
|
+
const parsed = DiscoverActorsArgsSchema.parse(args);
|
|
138
|
+
const actors = await searchActorsByKeywords(parsed.search, parsed.limit, parsed.offset);
|
|
139
|
+
return { content: actors?.map((item) => ({ type: 'text', text: JSON.stringify(item) })) };
|
|
140
|
+
}
|
|
141
|
+
case InternalTools.GET_ACTOR_DETAILS: {
|
|
142
|
+
const parsed = GetActorDefinition.parse(args);
|
|
143
|
+
const v = await getActorDefinition(parsed.actorFullName);
|
|
144
|
+
if (v && v.input && 'properties' in v.input && v.input) {
|
|
145
|
+
const properties = filterSchemaProperties(v.input.properties);
|
|
146
|
+
v.input.properties = shortenProperties(properties);
|
|
147
|
+
}
|
|
148
|
+
return { content: [{ type: 'text', text: JSON.stringify(v) }] };
|
|
149
|
+
}
|
|
150
|
+
default: {
|
|
151
|
+
const items = await this.callActorGetDataset(tool.actorFullName, args, { memory: tool.memoryMbytes });
|
|
152
|
+
const content = items.map((item) => {
|
|
153
|
+
const text = JSON.stringify(item).slice(0, ACTOR_OUTPUT_MAX_CHARS_PER_ITEM);
|
|
154
|
+
return text.length === ACTOR_OUTPUT_MAX_CHARS_PER_ITEM
|
|
155
|
+
? { type: 'text', text: `${text} ... ${ACTOR_OUTPUT_TRUNCATED_MESSAGE}` }
|
|
156
|
+
: { type: 'text', text };
|
|
157
|
+
});
|
|
158
|
+
return { content };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
131
161
|
}
|
|
132
162
|
catch (error) {
|
|
133
163
|
log.error(`Error calling tool: ${error}`);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,+BAA+B,EAC/B,8BAA8B,EAC9B,QAAQ,EACR,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACH,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,GACrB,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,MAAM,OAAO,cAAc;IACf,MAAM,CAAS;IACf,KAAK,CAAoB;IAEjC;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACpB;YACI,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,cAAc;SAC1B,EACD;YACI,YAAY,EAAE;gBACV,KAAK,EAAE,EAAE;aACZ;SACJ,CACJ,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,MAA0B;QAC3C,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACpC,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC;QACpD,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;QAC3G,OAAO,aAAa,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,mBAAmB,CAC5B,SAAiB,EACjB,KAAc,EACd,cAA4C,SAAS;QAErD,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEvE,MAAM,OAAO,GAAuB,EAAE,mBAAmB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACjF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3E,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,OAAO,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAEtE,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,CAAC,MAAM,uBAAuB,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,wBAAwB,KAAK,YAAY,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,MAAgB;QAC5C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,yBAAyB;QAClC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAEM,WAAW,CAAC,KAAa;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAEM,YAAY;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,iCAAiC;QAC1E,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH;;;;WAIG;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACnE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,oHAAoH;YACpH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjJ,CAAC;YAED,IAAI,CAAC;gBACD,QAAQ,IAAI,EAAE,CAAC;oBACX,KAAK,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;wBACpC,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACrD,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;wBACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,qBAAqB,EAAE,CAAC,EAAE,CAAC;oBAC1F,CAAC;oBACD,KAAK,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;wBACzC,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACrD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBACnC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,yBAAyB,EAAE,CAAC,EAAE,CAAC;oBAC9F,CAAC;oBACD,KAAK,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;wBACjC,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACpD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACvC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,CAChB,CAAC;wBACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC9F,CAAC;oBACD,KAAK,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBACnC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9C,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBACzD,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,YAAY,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;4BACrD,MAAM,UAAU,GAAG,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAiD,CAAC,CAAC;4BACrG,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;wBACvD,CAAC;wBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpE,CAAC;oBACD,OAAO,CAAC,CAAC,CAAC;wBACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAsB,CAAC,CAAC;wBAC1H,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;4BAC5E,OAAO,IAAI,CAAC,MAAM,KAAK,+BAA+B;gCAClD,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,8BAA8B,EAAE,EAAE;gCACzE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;wBACjC,CAAC,CAAC,CAAC;wBACH,OAAO,EAAE,OAAO,EAAE,CAAC;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAoB;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;CACJ"}
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ActorStorePruned, Tool } from './types.js';
|
|
3
|
+
export declare const DiscoverActorsArgsSchema: z.ZodObject<{
|
|
4
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
search: z.ZodDefault<z.ZodString>;
|
|
7
|
+
category: z.ZodDefault<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
limit: number;
|
|
10
|
+
offset: number;
|
|
11
|
+
search: string;
|
|
12
|
+
category: string;
|
|
13
|
+
}, {
|
|
14
|
+
limit?: number | undefined;
|
|
15
|
+
offset?: number | undefined;
|
|
16
|
+
search?: string | undefined;
|
|
17
|
+
category?: string | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const RemoveActorToolArgsSchema: z.ZodObject<{
|
|
20
|
+
toolName: z.ZodEffects<z.ZodString, string, string>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
toolName: string;
|
|
23
|
+
}, {
|
|
24
|
+
toolName: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const AddActorToToolsArgsSchema: z.ZodObject<{
|
|
27
|
+
actorFullName: z.ZodEffects<z.ZodString, string, string>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
actorFullName: string;
|
|
30
|
+
}, {
|
|
31
|
+
actorFullName: string;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const GetActorDefinition: z.ZodObject<{
|
|
34
|
+
actorFullName: z.ZodEffects<z.ZodString, string, string>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
actorFullName: string;
|
|
37
|
+
}, {
|
|
38
|
+
actorFullName: string;
|
|
39
|
+
}>;
|
|
40
|
+
export declare function getActorAutoLoadingTools(): Tool[];
|
|
41
|
+
export declare function getActorDiscoveryTools(): Tool[];
|
|
42
|
+
export declare function searchActorsByKeywords(search: string, limit?: number | undefined, offset?: number | undefined): Promise<ActorStorePruned[] | null>;
|
|
43
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,gBAAgB,EAAe,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAqBnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAKpC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAKpC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;EAK7B,CAAC;AAEH,wBAAgB,wBAAwB,IAAI,IAAI,EAAE,CAqBjD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,EAAE,CAyB/C;AA2BD,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAM,GAAG,SAAqB,EACrC,MAAM,GAAE,MAAM,GAAG,SAAqB,GACvC,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAIpC"}
|
package/dist/tools.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Ajv } from 'ajv';
|
|
2
|
+
import { ApifyClient } from 'apify-client';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
5
|
+
import { actorNameToToolName, toolNameToActorName } from './actors.js';
|
|
6
|
+
import { InternalTools } from './const.js';
|
|
7
|
+
export const DiscoverActorsArgsSchema = z.object({
|
|
8
|
+
limit: z.number()
|
|
9
|
+
.int()
|
|
10
|
+
.min(1)
|
|
11
|
+
.max(100)
|
|
12
|
+
.default(10)
|
|
13
|
+
.describe('The maximum number of Actors to return. Default value is 10.'),
|
|
14
|
+
offset: z.number()
|
|
15
|
+
.int()
|
|
16
|
+
.min(0)
|
|
17
|
+
.default(0)
|
|
18
|
+
.describe('The number of elements that should be skipped at the start. Default value is 0.'),
|
|
19
|
+
search: z.string()
|
|
20
|
+
.default('')
|
|
21
|
+
.describe('String of key words to search by. '
|
|
22
|
+
+ 'Searches the title, name, description, username, and readme of an Actor.'
|
|
23
|
+
+ 'Only key word search is supported, no advanced search.'),
|
|
24
|
+
category: z.string()
|
|
25
|
+
.default('')
|
|
26
|
+
.describe('Filters the results by the specified category.'),
|
|
27
|
+
});
|
|
28
|
+
export const RemoveActorToolArgsSchema = z.object({
|
|
29
|
+
toolName: z.string()
|
|
30
|
+
.describe('Full name of the Actor to remove. Actor full name is always composed from `username--name`'
|
|
31
|
+
+ 'Never use name or username only')
|
|
32
|
+
.transform((val) => actorNameToToolName(val)),
|
|
33
|
+
});
|
|
34
|
+
export const AddActorToToolsArgsSchema = z.object({
|
|
35
|
+
actorFullName: z.string()
|
|
36
|
+
.describe('Full name of the Actor to add as tool. Tool name is always composed from `username--name`'
|
|
37
|
+
+ 'Never use name or username only')
|
|
38
|
+
.transform((val) => actorNameToToolName(val)),
|
|
39
|
+
});
|
|
40
|
+
export const GetActorDefinition = z.object({
|
|
41
|
+
actorFullName: z.string()
|
|
42
|
+
.describe('Full name of the Actor to retrieve documentation. Actor full name is always composed from `username--name`.'
|
|
43
|
+
+ 'Never use name or username only')
|
|
44
|
+
.transform((val) => toolNameToActorName(val)),
|
|
45
|
+
});
|
|
46
|
+
export function getActorAutoLoadingTools() {
|
|
47
|
+
const ajv = new Ajv({ coerceTypes: 'array', strict: false });
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
name: InternalTools.ADD_ACTOR_TO_TOOLS,
|
|
51
|
+
actorFullName: InternalTools.ADD_ACTOR_TO_TOOLS,
|
|
52
|
+
description: 'Add an Actor tool by name to available tools. Do not execute the actor, only add it and list it in available tools. '
|
|
53
|
+
+ 'Never run the tool without user consent! '
|
|
54
|
+
+ 'For example, add a tool with username--name when user wants to scrape/extract data',
|
|
55
|
+
inputSchema: zodToJsonSchema(AddActorToToolsArgsSchema),
|
|
56
|
+
ajvValidate: ajv.compile(zodToJsonSchema(AddActorToToolsArgsSchema)),
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: InternalTools.REMOVE_ACTOR_FROM_TOOLS,
|
|
60
|
+
actorFullName: InternalTools.ADD_ACTOR_TO_TOOLS,
|
|
61
|
+
description: 'Remove an actor tool by name from available toos. '
|
|
62
|
+
+ 'For example, when user says, I do not need a tool username--name anymore',
|
|
63
|
+
inputSchema: zodToJsonSchema(RemoveActorToolArgsSchema),
|
|
64
|
+
ajvValidate: ajv.compile(zodToJsonSchema(RemoveActorToolArgsSchema)),
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
export function getActorDiscoveryTools() {
|
|
69
|
+
const ajv = new Ajv({ coerceTypes: 'array', strict: false });
|
|
70
|
+
return [
|
|
71
|
+
{
|
|
72
|
+
name: InternalTools.DISCOVER_ACTORS,
|
|
73
|
+
actorFullName: InternalTools.DISCOVER_ACTORS,
|
|
74
|
+
description: `Discover available Actors using full text search using keywords.`
|
|
75
|
+
+ `Users try to discover Actors using free form query in this case search query needs to be converted to full text search. `
|
|
76
|
+
+ `Prefer Actors from Apify as they are generally more reliable and have better support. `
|
|
77
|
+
+ `Returns a list of Actors with name, description, run statistics, pricing, starts, and URL. `
|
|
78
|
+
+ `You perhaps need to use this tool several times to find the right Actor. `
|
|
79
|
+
+ `Limit number of results returned but ensure that relevant results are returned. `,
|
|
80
|
+
inputSchema: zodToJsonSchema(DiscoverActorsArgsSchema),
|
|
81
|
+
ajvValidate: ajv.compile(zodToJsonSchema(DiscoverActorsArgsSchema)),
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: InternalTools.GET_ACTOR_DETAILS,
|
|
85
|
+
actorFullName: InternalTools.GET_ACTOR_DETAILS,
|
|
86
|
+
description: 'Get documentation, readme, input schema and other details about Actor. '
|
|
87
|
+
+ 'For example, when user says, I need to know more about web crawler Actor.'
|
|
88
|
+
+ 'Get details for Actors with username--name.',
|
|
89
|
+
inputSchema: zodToJsonSchema(GetActorDefinition),
|
|
90
|
+
ajvValidate: ajv.compile(zodToJsonSchema(GetActorDefinition)),
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
function pruneActorStoreInfo(response) {
|
|
95
|
+
const stats = response.stats || {};
|
|
96
|
+
const pricingInfo = (response.currentPricingInfo || {});
|
|
97
|
+
return {
|
|
98
|
+
name: response.name?.toString() || '',
|
|
99
|
+
username: response.username?.toString() || '',
|
|
100
|
+
actorFullName: `${response.username}/${response.name}`,
|
|
101
|
+
title: response.title?.toString() || '',
|
|
102
|
+
description: response.description?.toString() || '',
|
|
103
|
+
stats: {
|
|
104
|
+
totalRuns: stats.totalRuns,
|
|
105
|
+
totalUsers30Days: stats.totalUsers30Days,
|
|
106
|
+
publicActorRunStats30Days: 'publicActorRunStats30Days' in stats
|
|
107
|
+
? stats.publicActorRunStats30Days : {},
|
|
108
|
+
},
|
|
109
|
+
currentPricingInfo: {
|
|
110
|
+
pricingModel: pricingInfo.pricingModel?.toString() || '',
|
|
111
|
+
pricePerUnitUsd: pricingInfo?.pricePerUnitUsd ?? 0,
|
|
112
|
+
trialMinutes: pricingInfo?.trialMinutes ?? 0,
|
|
113
|
+
},
|
|
114
|
+
url: response.url?.toString() || '',
|
|
115
|
+
totalStars: 'totalStars' in response ? response.totalStars : null,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export async function searchActorsByKeywords(search, limit = undefined, offset = undefined) {
|
|
119
|
+
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
|
|
120
|
+
const results = await client.store().list({ search, limit, offset });
|
|
121
|
+
return results.items.map((x) => pruneActorStoreInfo(x));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|