@apify/actors-mcp-server 0.14.4-beta.1 → 0.14.4-beta.2
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/apify_client.d.ts.map +1 -1
- package/dist/apify_client.js +3 -2
- package/dist/apify_client.js.map +1 -1
- package/dist/index_internals_test_kit.d.ts +11 -0
- package/dist/index_internals_test_kit.d.ts.map +1 -0
- package/dist/index_internals_test_kit.js +15 -0
- package/dist/index_internals_test_kit.js.map +1 -0
- package/dist/test_kit/cases/actors.cases.d.ts +4 -0
- package/dist/test_kit/cases/actors.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/actors.cases.js +911 -0
- package/dist/test_kit/cases/actors.cases.js.map +1 -0
- package/dist/test_kit/cases/apps.cases.d.ts +4 -0
- package/dist/test_kit/cases/apps.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/apps.cases.js +111 -0
- package/dist/test_kit/cases/apps.cases.js.map +1 -0
- package/dist/test_kit/cases/payments.cases.d.ts +4 -0
- package/dist/test_kit/cases/payments.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/payments.cases.js +207 -0
- package/dist/test_kit/cases/payments.cases.js.map +1 -0
- package/dist/test_kit/cases/registration.cases.d.ts +4 -0
- package/dist/test_kit/cases/registration.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/registration.cases.js +431 -0
- package/dist/test_kit/cases/registration.cases.js.map +1 -0
- package/dist/test_kit/cases/storage.cases.d.ts +4 -0
- package/dist/test_kit/cases/storage.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/storage.cases.js +378 -0
- package/dist/test_kit/cases/storage.cases.js.map +1 -0
- package/dist/test_kit/cases/tasks.cases.d.ts +4 -0
- package/dist/test_kit/cases/tasks.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/tasks.cases.js +320 -0
- package/dist/test_kit/cases/tasks.cases.js.map +1 -0
- package/dist/test_kit/cases/tools.cases.d.ts +4 -0
- package/dist/test_kit/cases/tools.cases.d.ts.map +1 -0
- package/dist/test_kit/cases/tools.cases.js +204 -0
- package/dist/test_kit/cases/tools.cases.js.map +1 -0
- package/dist/test_kit/helpers.d.ts +69 -0
- package/dist/test_kit/helpers.d.ts.map +1 -0
- package/dist/test_kit/helpers.js +223 -0
- package/dist/test_kit/helpers.js.map +1 -0
- package/dist/test_kit/index.d.ts +20 -0
- package/dist/test_kit/index.d.ts.map +1 -0
- package/dist/test_kit/index.js +32 -0
- package/dist/test_kit/index.js.map +1 -0
- package/dist/test_kit/mcp_client.d.ts +31 -0
- package/dist/test_kit/mcp_client.d.ts.map +1 -0
- package/dist/test_kit/mcp_client.js +73 -0
- package/dist/test_kit/mcp_client.js.map +1 -0
- package/dist/test_kit/register.d.ts +9 -0
- package/dist/test_kit/register.d.ts.map +1 -0
- package/dist/test_kit/register.js +39 -0
- package/dist/test_kit/register.js.map +1 -0
- package/dist/test_kit/tsconfig.tsbuildinfo +1 -0
- package/dist/test_kit/types.d.ts +45 -0
- package/dist/test_kit/types.d.ts.map +1 -0
- package/dist/test_kit/types.js +2 -0
- package/dist/test_kit/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -3
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { expect } from 'vitest';
|
|
2
|
+
import { actorNameToToolName, defaults, getCategoryTools, getExpectedToolNamesByCategories, } from '@apify/actors-mcp-server/internals.js';
|
|
3
|
+
import { HELPER_TOOLS } from '@apify/actors-mcp-server/internals/test-kit.js';
|
|
4
|
+
import { ACTOR_NORMAL_MODE, AUTO_INJECTED_TOOL_NAMES, DEFAULT_ACTOR_NAMES, expectToolNamesToContain, expectWidgetToolMeta, getToolNames, RETIRED_SELECTORS, servedDefaultTools, servedDefaultToolNames, skipUnlessStdio, withClient, } from '../helpers.js';
|
|
5
|
+
const TWO_TEST_ACTORS = ['apify/python-example', 'apify/rag-web-browser'];
|
|
6
|
+
const SINGLE_NORMAL_MODE_ACTOR = [ACTOR_NORMAL_MODE];
|
|
7
|
+
const DOCS_CATEGORY = ['docs'];
|
|
8
|
+
const DOCS_RUNS_STORAGE_CATEGORIES = ['docs', 'runs', 'storage'];
|
|
9
|
+
/** Tool/Actor selection, categories, env loading, auto-inject, server mode. */
|
|
10
|
+
export const registrationCases = [
|
|
11
|
+
{
|
|
12
|
+
// telemetry off so default tool set is deterministic across environments.
|
|
13
|
+
name: 'should match spec default: actors,docs,apify/rag-web-browser when no params provided (telemetry off)',
|
|
14
|
+
isDeploymentTest: true,
|
|
15
|
+
run: withClient({ telemetry: { enabled: false } }, async (client) => {
|
|
16
|
+
const tools = await client.listTools();
|
|
17
|
+
const names = getToolNames(tools);
|
|
18
|
+
// Equivalent to tools=actors,docs,apify/rag-web-browser (no widgets outside apps).
|
|
19
|
+
const expectedActorsTools = ['fetch-actor-details', 'search-actors', 'call-actor'];
|
|
20
|
+
const expectedDocsTools = ['search-apify-docs', 'fetch-apify-docs'];
|
|
21
|
+
const expectedActors = [actorNameToToolName('apify/rag-web-browser')];
|
|
22
|
+
const expectedTotal = expectedActorsTools.concat(expectedDocsTools, expectedActors);
|
|
23
|
+
expect(names).toHaveLength(expectedTotal.length + AUTO_INJECTED_TOOL_NAMES.length);
|
|
24
|
+
expectToolNamesToContain(names, expectedActorsTools);
|
|
25
|
+
expectToolNamesToContain(names, expectedDocsTools);
|
|
26
|
+
expect(names).not.toContain(HELPER_TOOLS.PROBLEM_REPORT);
|
|
27
|
+
expectToolNamesToContain(names, expectedActors);
|
|
28
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
29
|
+
}),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
// telemetry on — only difference is report-problem.
|
|
33
|
+
name: 'should match spec default: actors,docs,apify/rag-web-browser when no params provided (telemetry on)',
|
|
34
|
+
isDeploymentTest: true,
|
|
35
|
+
run: withClient({ telemetry: { enabled: true } }, async (client) => {
|
|
36
|
+
const tools = await client.listTools();
|
|
37
|
+
const names = getToolNames(tools);
|
|
38
|
+
const expectedActorsTools = ['fetch-actor-details', 'search-actors', 'call-actor'];
|
|
39
|
+
const expectedDocsTools = ['search-apify-docs', 'fetch-apify-docs'];
|
|
40
|
+
const expectedActors = [actorNameToToolName('apify/rag-web-browser')];
|
|
41
|
+
const expectedFeedbackTools = [HELPER_TOOLS.PROBLEM_REPORT];
|
|
42
|
+
const expectedTotal = expectedActorsTools.concat(expectedDocsTools, expectedActors, expectedFeedbackTools);
|
|
43
|
+
expect(names).toHaveLength(expectedTotal.length + AUTO_INJECTED_TOOL_NAMES.length);
|
|
44
|
+
expectToolNamesToContain(names, expectedActorsTools);
|
|
45
|
+
expectToolNamesToContain(names, expectedDocsTools);
|
|
46
|
+
expect(names).toContain(HELPER_TOOLS.PROBLEM_REPORT);
|
|
47
|
+
expectToolNamesToContain(names, expectedActors);
|
|
48
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
49
|
+
}),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
// isDeploymentTest: default tool/Actor set.
|
|
53
|
+
name: 'should list all default tools and Actors',
|
|
54
|
+
isDeploymentTest: true,
|
|
55
|
+
run: withClient(undefined, async (client) => {
|
|
56
|
+
const names = getToolNames(await client.listTools());
|
|
57
|
+
expect(names.length).toEqual(servedDefaultTools().length + defaults.actors.length + 4);
|
|
58
|
+
expectToolNamesToContain(names, servedDefaultToolNames());
|
|
59
|
+
expectToolNamesToContain(names, DEFAULT_ACTOR_NAMES);
|
|
60
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
61
|
+
// get-actor-run should be automatically included when call-actor is present
|
|
62
|
+
expect(names).toContain(HELPER_TOOLS.ACTOR_RUNS_GET);
|
|
63
|
+
}),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'loads no tools for retired selectors',
|
|
67
|
+
isDeploymentTest: false,
|
|
68
|
+
run: withClient({ tools: [...RETIRED_SELECTORS] }, async (client) => {
|
|
69
|
+
const names = getToolNames(await client.listTools());
|
|
70
|
+
expect(names).toHaveLength(0);
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'should list two loaded Actors plus auto-injected storage and abort tools',
|
|
75
|
+
isDeploymentTest: false,
|
|
76
|
+
run: withClient({ actors: TWO_TEST_ACTORS, serverMode: 'default' }, async (client) => {
|
|
77
|
+
const names = getToolNames(await client.listTools());
|
|
78
|
+
// Actor tools trigger auto-injected helpers (get-actor-run, storage, abort).
|
|
79
|
+
expect(names.length).toEqual(TWO_TEST_ACTORS.length + AUTO_INJECTED_TOOL_NAMES.length);
|
|
80
|
+
expectToolNamesToContain(names, TWO_TEST_ACTORS.map((actor) => actorNameToToolName(actor)));
|
|
81
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
82
|
+
}),
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'should load only specified actors when actors param is provided (no other tools)',
|
|
86
|
+
isDeploymentTest: false,
|
|
87
|
+
run: withClient({ actors: SINGLE_NORMAL_MODE_ACTOR, serverMode: 'default' }, async (client) => {
|
|
88
|
+
const names = getToolNames(await client.listTools());
|
|
89
|
+
// Should only load the specified actor plus auto-injected storage/abort helpers
|
|
90
|
+
expect(names.length).toEqual(SINGLE_NORMAL_MODE_ACTOR.length + AUTO_INJECTED_TOOL_NAMES.length);
|
|
91
|
+
expect(names).toContain(actorNameToToolName(SINGLE_NORMAL_MODE_ACTOR[0]));
|
|
92
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
93
|
+
// Should NOT include any default category tools
|
|
94
|
+
expect(names).not.toContain('search-actors');
|
|
95
|
+
expect(names).not.toContain('fetch-actor-details');
|
|
96
|
+
expect(names).not.toContain('call-actor');
|
|
97
|
+
expect(names).not.toContain('search-apify-docs');
|
|
98
|
+
expect(names).not.toContain('fetch-apify-docs');
|
|
99
|
+
}),
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'should return tool with execution field when listing tools with apify/normal-mode-test-actor',
|
|
103
|
+
isDeploymentTest: false,
|
|
104
|
+
run: withClient({ tools: SINGLE_NORMAL_MODE_ACTOR }, async (client, ctx) => {
|
|
105
|
+
const tools = await client.listTools();
|
|
106
|
+
// Find the tool for apify/normal-mode-test-actor
|
|
107
|
+
const normalModeTool = tools.tools.find((tool) => tool.name === actorNameToToolName(ACTOR_NORMAL_MODE));
|
|
108
|
+
expect(normalModeTool).toBeDefined();
|
|
109
|
+
// Verify the tool contains the execution field (as returned by getToolPublicFieldOnly).
|
|
110
|
+
// The 2026-07-28 codec strips `execution` as deleted vocabulary (no tasks capability there).
|
|
111
|
+
if (ctx.transport !== '2026-07-28') {
|
|
112
|
+
expect(normalModeTool).toHaveProperty('execution');
|
|
113
|
+
expect(normalModeTool === null || normalModeTool === void 0 ? void 0 : normalModeTool.execution).toBeDefined();
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
expect(normalModeTool).not.toHaveProperty('execution');
|
|
117
|
+
}
|
|
118
|
+
expect(normalModeTool).toHaveProperty('name');
|
|
119
|
+
expect(normalModeTool).toHaveProperty('description');
|
|
120
|
+
expect(normalModeTool).toHaveProperty('inputSchema');
|
|
121
|
+
}),
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: 'should not load any tools when tools param is empty',
|
|
125
|
+
isDeploymentTest: false,
|
|
126
|
+
run: withClient({ tools: [] }, async (client) => {
|
|
127
|
+
const names = getToolNames(await client.listTools());
|
|
128
|
+
expect(names).toHaveLength(0);
|
|
129
|
+
}),
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'should not load any tools when actors param is empty',
|
|
133
|
+
isDeploymentTest: false,
|
|
134
|
+
run: withClient({ actors: [] }, async (client) => {
|
|
135
|
+
const names = getToolNames(await client.listTools());
|
|
136
|
+
expect(names.length).toEqual(0);
|
|
137
|
+
}),
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'should not load any tools when both tools and actors params are empty',
|
|
141
|
+
isDeploymentTest: false,
|
|
142
|
+
run: withClient({ tools: [], actors: [] }, async (client) => {
|
|
143
|
+
const names = getToolNames(await client.listTools());
|
|
144
|
+
expect(names.length).toEqual(0);
|
|
145
|
+
}),
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'should load only specified Actors via tools selectors when actors param omitted',
|
|
149
|
+
isDeploymentTest: false,
|
|
150
|
+
run: withClient({ tools: SINGLE_NORMAL_MODE_ACTOR, serverMode: 'default' }, async (client) => {
|
|
151
|
+
const names = getToolNames(await client.listTools());
|
|
152
|
+
// The Actor plus auto-injected storage/abort helpers.
|
|
153
|
+
expect(names).toHaveLength(SINGLE_NORMAL_MODE_ACTOR.length + AUTO_INJECTED_TOOL_NAMES.length);
|
|
154
|
+
expect(names).toContain(actorNameToToolName(SINGLE_NORMAL_MODE_ACTOR[0]));
|
|
155
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
156
|
+
}),
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: 'should treat selectors with slashes as Actor names',
|
|
160
|
+
isDeploymentTest: false,
|
|
161
|
+
run: withClient({ tools: ['docs', ACTOR_NORMAL_MODE] }, async (client) => {
|
|
162
|
+
const names = getToolNames(await client.listTools());
|
|
163
|
+
// Should include docs category
|
|
164
|
+
expect(names).toContain('search-apify-docs');
|
|
165
|
+
expect(names).toContain('fetch-apify-docs');
|
|
166
|
+
// Should include actor (if it exists/is valid)
|
|
167
|
+
expect(names).toContain(actorNameToToolName(ACTOR_NORMAL_MODE));
|
|
168
|
+
}),
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: 'should merge actors param into tools selectors (backward compatibility)',
|
|
172
|
+
isDeploymentTest: false,
|
|
173
|
+
run: withClient({ tools: DOCS_CATEGORY, actors: SINGLE_NORMAL_MODE_ACTOR }, async (client) => {
|
|
174
|
+
const names = getToolNames(await client.listTools());
|
|
175
|
+
const docsToolNames = getExpectedToolNamesByCategories(DOCS_CATEGORY);
|
|
176
|
+
const expected = [...docsToolNames, actorNameToToolName(SINGLE_NORMAL_MODE_ACTOR[0])];
|
|
177
|
+
// Actor tool triggers auto-injection of storage/abort helpers.
|
|
178
|
+
expect(names).toHaveLength(expected.length + AUTO_INJECTED_TOOL_NAMES.length);
|
|
179
|
+
const containsExpected = expected.every((n) => names.includes(n));
|
|
180
|
+
expect(containsExpected).toBe(true);
|
|
181
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
182
|
+
}),
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
// category + specific tools must not widen to whole sibling category.
|
|
186
|
+
name: 'should handle mixed categories and specific tools in tools param',
|
|
187
|
+
isDeploymentTest: true,
|
|
188
|
+
run: withClient({ tools: ['docs', 'fetch-actor-details', 'call-actor'] }, async (client) => {
|
|
189
|
+
const names = getToolNames(await client.listTools());
|
|
190
|
+
expect(names).toContain('search-apify-docs'); // from docs category
|
|
191
|
+
expect(names).toContain('fetch-apify-docs'); // from docs category
|
|
192
|
+
expect(names).toContain('fetch-actor-details'); // specific tool
|
|
193
|
+
expect(names).toContain('call-actor'); // specific tool
|
|
194
|
+
// Should NOT include other actors-category tools
|
|
195
|
+
expect(names).not.toContain('search-actors');
|
|
196
|
+
}),
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'loads docs while dropping retired selectors',
|
|
200
|
+
isDeploymentTest: false,
|
|
201
|
+
run: withClient({ tools: ['docs', ...RETIRED_SELECTORS] }, async (client) => {
|
|
202
|
+
const names = getToolNames(await client.listTools());
|
|
203
|
+
expect(names).toEqual([HELPER_TOOLS.DOCS_SEARCH, HELPER_TOOLS.DOCS_FETCH]);
|
|
204
|
+
}),
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'should load only docs tools',
|
|
208
|
+
isDeploymentTest: false,
|
|
209
|
+
run: withClient({ tools: DOCS_CATEGORY, actors: [] }, async (client) => {
|
|
210
|
+
const names = getToolNames(await client.listTools());
|
|
211
|
+
const expected = getExpectedToolNamesByCategories(DOCS_CATEGORY);
|
|
212
|
+
expect(names.length).toEqual(expected.length);
|
|
213
|
+
expectToolNamesToContain(names, expected);
|
|
214
|
+
}),
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: 'should load only a specific tool when tools includes a tool name',
|
|
218
|
+
isDeploymentTest: false,
|
|
219
|
+
run: withClient({ tools: ['fetch-actor-details'], actors: [] }, async (client) => {
|
|
220
|
+
const names = getToolNames(await client.listTools());
|
|
221
|
+
expect(names).toEqual(['fetch-actor-details']);
|
|
222
|
+
}),
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'should not load any tools when tools param is empty and actors omitted',
|
|
226
|
+
isDeploymentTest: false,
|
|
227
|
+
run: withClient({ tools: [] }, async (client) => {
|
|
228
|
+
const names = getToolNames(await client.listTools());
|
|
229
|
+
expect(names.length).toEqual(0);
|
|
230
|
+
}),
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: 'should not load any internal tools when tools param is empty and use custom Actor if specified',
|
|
234
|
+
isDeploymentTest: false,
|
|
235
|
+
run: withClient({ tools: [], actors: [ACTOR_NORMAL_MODE] }, async (client) => {
|
|
236
|
+
const names = getToolNames(await client.listTools());
|
|
237
|
+
// Actor tool triggers auto-injected helpers (get-actor-run, storage, abort).
|
|
238
|
+
expect(names.length).toEqual(1 + AUTO_INJECTED_TOOL_NAMES.length);
|
|
239
|
+
expect(names).toContain(actorNameToToolName(ACTOR_NORMAL_MODE));
|
|
240
|
+
expectToolNamesToContain(names, AUTO_INJECTED_TOOL_NAMES);
|
|
241
|
+
}),
|
|
242
|
+
},
|
|
243
|
+
// `dev` is telemetry-gated (unit-tested); skip standalone load here.
|
|
244
|
+
...Object.keys(getCategoryTools('default'))
|
|
245
|
+
.filter((category) => category !== 'dev')
|
|
246
|
+
.map((category) => ({
|
|
247
|
+
name: `should load correct tools for ${category} category`,
|
|
248
|
+
isDeploymentTest: false,
|
|
249
|
+
run: withClient({ tools: [category] }, async (client) => {
|
|
250
|
+
const loadedTools = await client.listTools();
|
|
251
|
+
const toolNames = getToolNames(loadedTools);
|
|
252
|
+
const expectedToolNames = getExpectedToolNamesByCategories([category]);
|
|
253
|
+
// Only assert that all tools from the selected category are present.
|
|
254
|
+
for (const expectedToolName of expectedToolNames) {
|
|
255
|
+
expect(toolNames).toContain(expectedToolName);
|
|
256
|
+
}
|
|
257
|
+
}),
|
|
258
|
+
})),
|
|
259
|
+
{
|
|
260
|
+
name: 'should handle multiple tool category keys input correctly',
|
|
261
|
+
isDeploymentTest: false,
|
|
262
|
+
run: withClient({ tools: DOCS_RUNS_STORAGE_CATEGORIES }, async (client) => {
|
|
263
|
+
const loadedTools = await client.listTools();
|
|
264
|
+
const toolNames = getToolNames(loadedTools);
|
|
265
|
+
const expectedToolNames = getExpectedToolNamesByCategories(DOCS_RUNS_STORAGE_CATEGORIES);
|
|
266
|
+
expect(toolNames).toHaveLength(expectedToolNames.length);
|
|
267
|
+
const containsExpectedTools = toolNames.every((name) => expectedToolNames.includes(name));
|
|
268
|
+
expect(containsExpectedTools).toBe(true);
|
|
269
|
+
}),
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
// Environment variable tests - only applicable to stdio transport
|
|
273
|
+
name: 'should load actors from ACTORS environment variable',
|
|
274
|
+
isDeploymentTest: false,
|
|
275
|
+
skipIf: skipUnlessStdio,
|
|
276
|
+
run: async (ctx) => {
|
|
277
|
+
const actors = ['apify/python-example', 'apify/rag-web-browser'];
|
|
278
|
+
const client = await ctx.createClientFn({ actors, useEnv: true });
|
|
279
|
+
try {
|
|
280
|
+
const names = getToolNames(await client.listTools());
|
|
281
|
+
expectToolNamesToContain(names, actors.map((actor) => actorNameToToolName(actor)));
|
|
282
|
+
}
|
|
283
|
+
finally {
|
|
284
|
+
await client.close();
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: 'should load tool categories from TOOLS environment variable',
|
|
290
|
+
isDeploymentTest: false,
|
|
291
|
+
skipIf: skipUnlessStdio,
|
|
292
|
+
run: async (ctx) => {
|
|
293
|
+
// TOOLS=docs via stdio; docs avoids auto-inject noise.
|
|
294
|
+
const client = await ctx.createClientFn({ tools: ['docs'], useEnv: true });
|
|
295
|
+
try {
|
|
296
|
+
const toolNames = getToolNames(await client.listTools());
|
|
297
|
+
expect(toolNames).toContain(HELPER_TOOLS.DOCS_SEARCH);
|
|
298
|
+
expect(toolNames).toContain(HELPER_TOOLS.DOCS_FETCH);
|
|
299
|
+
expect(toolNames).not.toContain(HELPER_TOOLS.ACTOR_CALL);
|
|
300
|
+
expect(toolNames).not.toContain(HELPER_TOOLS.ACTOR_RUNS_GET);
|
|
301
|
+
}
|
|
302
|
+
finally {
|
|
303
|
+
await client.close();
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
name: 'should auto-inject storage and abort tools after call-actor in expected order',
|
|
309
|
+
isDeploymentTest: false,
|
|
310
|
+
run: withClient(undefined, async (client) => {
|
|
311
|
+
const tools = await client.listTools();
|
|
312
|
+
const names = tools.tools.map((t) => t.name);
|
|
313
|
+
const callIndex = names.indexOf(HELPER_TOOLS.ACTOR_CALL);
|
|
314
|
+
const runIndex = names.indexOf(HELPER_TOOLS.ACTOR_RUNS_GET);
|
|
315
|
+
const datasetIndex = names.indexOf(HELPER_TOOLS.DATASET_GET_ITEMS);
|
|
316
|
+
const kvIndex = names.indexOf(HELPER_TOOLS.KEY_VALUE_STORE_RECORD_GET);
|
|
317
|
+
const abortIndex = names.indexOf(HELPER_TOOLS.ACTOR_RUNS_ABORT);
|
|
318
|
+
expect(callIndex).toBeGreaterThanOrEqual(0);
|
|
319
|
+
expect(callIndex).toBeLessThan(runIndex);
|
|
320
|
+
expect(runIndex).toBeLessThan(datasetIndex);
|
|
321
|
+
expect(datasetIndex).toBeLessThan(kvIndex);
|
|
322
|
+
expect(kvIndex).toBeLessThan(abortIndex);
|
|
323
|
+
}),
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
name: 'should not auto-inject storage and abort tools when no actor-touching tools are present',
|
|
327
|
+
isDeploymentTest: false,
|
|
328
|
+
run: withClient({ tools: ['docs'] }, async (client) => {
|
|
329
|
+
const names = getToolNames(await client.listTools());
|
|
330
|
+
for (const name of AUTO_INJECTED_TOOL_NAMES)
|
|
331
|
+
expect(names).not.toContain(name);
|
|
332
|
+
expect(names).not.toContain(HELPER_TOOLS.ACTOR_RUNS_GET);
|
|
333
|
+
}),
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
// Environment variable precedence test
|
|
337
|
+
name: 'should use TELEMETRY_ENABLED env var when CLI arg is not provided',
|
|
338
|
+
isDeploymentTest: false,
|
|
339
|
+
skipIf: skipUnlessStdio,
|
|
340
|
+
run: async (ctx) => {
|
|
341
|
+
// When useEnv=true, telemetry.enabled option translates to env.TELEMETRY_ENABLED in child process
|
|
342
|
+
const client = await ctx.createClientFn({ useEnv: true, telemetry: { enabled: false } });
|
|
343
|
+
try {
|
|
344
|
+
const tools = await client.listTools();
|
|
345
|
+
// Verify tools are loaded correctly
|
|
346
|
+
expect(tools.tools.length).toBeGreaterThan(0);
|
|
347
|
+
}
|
|
348
|
+
finally {
|
|
349
|
+
await client.close();
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
// Deprecated `openai` alias silently normalizes to apps.
|
|
355
|
+
name: 'should use UI_MODE env var (deprecated "openai" alias) when CLI arg is not provided',
|
|
356
|
+
isDeploymentTest: false,
|
|
357
|
+
skipIf: skipUnlessStdio,
|
|
358
|
+
run: async (ctx) => {
|
|
359
|
+
const client = await ctx.createClientFn({ useEnv: true, serverMode: 'openai' });
|
|
360
|
+
try {
|
|
361
|
+
const tools = await client.listTools();
|
|
362
|
+
const toolNames = getToolNames(tools);
|
|
363
|
+
expect(tools.tools.length).toBeGreaterThan(0);
|
|
364
|
+
// Verify that apps-only internal tools are present in apps mode
|
|
365
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_GET_DETAILS_WIDGET);
|
|
366
|
+
expect(toolNames).toContain(HELPER_TOOLS.STORE_SEARCH_WIDGET);
|
|
367
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_CALL_WIDGET);
|
|
368
|
+
// Verify that tools have widget metadata when UI mode is enabled
|
|
369
|
+
expectWidgetToolMeta(tools);
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
await client.close();
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: 'should enable apps mode when serverMode is apps',
|
|
378
|
+
isDeploymentTest: false,
|
|
379
|
+
run: withClient({ serverMode: 'apps' }, async (client) => {
|
|
380
|
+
const tools = await client.listTools();
|
|
381
|
+
const toolNames = getToolNames(tools);
|
|
382
|
+
expect(tools.tools.length).toBeGreaterThan(0);
|
|
383
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_GET_DETAILS_WIDGET);
|
|
384
|
+
expect(toolNames).toContain(HELPER_TOOLS.STORE_SEARCH_WIDGET);
|
|
385
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_CALL_WIDGET);
|
|
386
|
+
// Verify that tools have widget metadata when UI mode is enabled via URL parameter
|
|
387
|
+
expectWidgetToolMeta(tools);
|
|
388
|
+
}),
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
name: 'should treat serverMode=true the same as serverMode=apps',
|
|
392
|
+
isDeploymentTest: false,
|
|
393
|
+
run: withClient({ serverMode: 'true' }, async (client) => {
|
|
394
|
+
const tools = await client.listTools();
|
|
395
|
+
const toolNames = getToolNames(tools);
|
|
396
|
+
expect(tools.tools.length).toBeGreaterThan(0);
|
|
397
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_GET_DETAILS_WIDGET);
|
|
398
|
+
expect(toolNames).toContain(HELPER_TOOLS.STORE_SEARCH_WIDGET);
|
|
399
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_CALL_WIDGET);
|
|
400
|
+
expectWidgetToolMeta(tools);
|
|
401
|
+
}),
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
name: 'should automatically include get-actor-run for default settings when call-actor is enabled',
|
|
405
|
+
isDeploymentTest: false,
|
|
406
|
+
run: withClient({ serverMode: 'apps' }, async (client) => {
|
|
407
|
+
const tools = await client.listTools();
|
|
408
|
+
const toolNames = getToolNames(tools);
|
|
409
|
+
// When serverMode is enabled, default tools include call-actor, so get-actor-run should be included
|
|
410
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_CALL);
|
|
411
|
+
expect(toolNames).toContain(HELPER_TOOLS.ACTOR_RUNS_GET);
|
|
412
|
+
}),
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
name: 'should not include get-actor-run when only docs tools are selected',
|
|
416
|
+
isDeploymentTest: false,
|
|
417
|
+
run: withClient({ serverMode: 'apps', tools: ['docs'] }, async (client) => {
|
|
418
|
+
const tools = await client.listTools();
|
|
419
|
+
const toolNames = getToolNames(tools);
|
|
420
|
+
// No actor tools selected — get-actor-run and its widget must not appear
|
|
421
|
+
expect(toolNames).not.toContain(HELPER_TOOLS.ACTOR_RUNS_GET);
|
|
422
|
+
expect(toolNames).not.toContain(HELPER_TOOLS.ACTOR_RUNS_GET_WIDGET);
|
|
423
|
+
// Docs tools should be present
|
|
424
|
+
expect(toolNames).toContain(HELPER_TOOLS.DOCS_SEARCH);
|
|
425
|
+
expect(toolNames).toContain(HELPER_TOOLS.DOCS_FETCH);
|
|
426
|
+
// call-actor should NOT be present since only 'docs' was selected
|
|
427
|
+
expect(toolNames).not.toContain(HELPER_TOOLS.ACTOR_CALL);
|
|
428
|
+
}),
|
|
429
|
+
},
|
|
430
|
+
];
|
|
431
|
+
//# sourceMappingURL=registration.cases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration.cases.js","sourceRoot":"","sources":["../../../tests/test_kit/cases/registration.cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.cases.d.ts","sourceRoot":"","sources":["../../../tests/test_kit/cases/storage.cases.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAiC,MAAM,aAAa,CAAC;AA0DvE,6BAA6B;AAC7B,eAAO,MAAM,YAAY,EAAE,IAAI,EAiY9B,CAAC"}
|