@polpo-ai/server 0.15.57 → 0.15.58
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/routes/completions/agent-step-runner.d.ts.map +1 -1
- package/dist/routes/completions/agent-step-runner.js +33 -4
- package/dist/routes/completions/agent-step-runner.js.map +1 -1
- package/dist/routes/completions/agent-step-runner.test.js +77 -0
- package/dist/routes/completions/agent-step-runner.test.js.map +1 -1
- package/dist/routes/completions/chat-handler.d.ts +4 -0
- package/dist/routes/completions/chat-handler.d.ts.map +1 -1
- package/dist/routes/completions/chat-handler.js +4 -2
- package/dist/routes/completions/chat-handler.js.map +1 -1
- package/dist/routes/completions/chat-via-run-handler.d.ts.map +1 -1
- package/dist/routes/completions/chat-via-run-handler.js +2 -0
- package/dist/routes/completions/chat-via-run-handler.js.map +1 -1
- package/dist/routes/completions/chat-via-run-handler.test.js +117 -0
- package/dist/routes/completions/chat-via-run-handler.test.js.map +1 -1
- package/dist/routes/completions/conversation-turn.d.ts.map +1 -1
- package/dist/routes/completions/conversation-turn.js +35 -1
- package/dist/routes/completions/conversation-turn.js.map +1 -1
- package/dist/routes/completions/tool-disclosure.d.ts +44 -0
- package/dist/routes/completions/tool-disclosure.d.ts.map +1 -0
- package/dist/routes/completions/tool-disclosure.js +330 -0
- package/dist/routes/completions/tool-disclosure.js.map +1 -0
- package/dist/routes/completions/tool-disclosure.test.d.ts +2 -0
- package/dist/routes/completions/tool-disclosure.test.d.ts.map +1 -0
- package/dist/routes/completions/tool-disclosure.test.js +176 -0
- package/dist/routes/completions/tool-disclosure.test.js.map +1 -0
- package/dist/routes/completions.d.ts +6 -0
- package/dist/routes/completions.d.ts.map +1 -1
- package/dist/routes/completions.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
export const MODEL_CONTROLLED_TOOL_NAMES = [
|
|
2
|
+
"tool_list",
|
|
3
|
+
"tool_search",
|
|
4
|
+
"tool_load",
|
|
5
|
+
];
|
|
6
|
+
const MODEL_CONTROLLED_TOOL_NAME_SET = new Set(MODEL_CONTROLLED_TOOL_NAMES);
|
|
7
|
+
function positiveInteger(value, fallback) {
|
|
8
|
+
return Number.isInteger(value) && Number(value) > 0 ? Number(value) : fallback;
|
|
9
|
+
}
|
|
10
|
+
function toolName(tool) {
|
|
11
|
+
return typeof tool?.name === "string" ? tool.name.trim() : "";
|
|
12
|
+
}
|
|
13
|
+
function toolSource(tool) {
|
|
14
|
+
const name = toolName(tool);
|
|
15
|
+
if (name === "skill_list" || name === "skill_read")
|
|
16
|
+
return "skill";
|
|
17
|
+
if (name.startsWith("mcp__") || typeof tool?.serverName === "string" || typeof tool?.mcpServer === "string")
|
|
18
|
+
return "mcp";
|
|
19
|
+
if (typeof tool?.connectionId === "string" || typeof tool?.providerId === "string")
|
|
20
|
+
return "connection";
|
|
21
|
+
if (typeof tool?.clientSide === "boolean")
|
|
22
|
+
return "custom";
|
|
23
|
+
return "runtime";
|
|
24
|
+
}
|
|
25
|
+
function toolCategory(tool) {
|
|
26
|
+
const name = toolName(tool);
|
|
27
|
+
const source = toolSource(tool);
|
|
28
|
+
if (source !== "runtime")
|
|
29
|
+
return source;
|
|
30
|
+
if (name.startsWith("memory_"))
|
|
31
|
+
return "memory";
|
|
32
|
+
if (name === "brain_search" || name === "source_read")
|
|
33
|
+
return "knowledge";
|
|
34
|
+
if (["read", "write", "edit", "ls", "glob", "grep"].includes(name) || name.startsWith("file_")) {
|
|
35
|
+
return "filesystem";
|
|
36
|
+
}
|
|
37
|
+
if (name === "bash" || name.startsWith("shell_"))
|
|
38
|
+
return "execution";
|
|
39
|
+
if (name.startsWith("browser_"))
|
|
40
|
+
return "browser";
|
|
41
|
+
if (name.startsWith("search_") || name === "http_fetch")
|
|
42
|
+
return "search_http";
|
|
43
|
+
if (name.startsWith("image_") || name.startsWith("video_") || name.startsWith("vision_"))
|
|
44
|
+
return "media";
|
|
45
|
+
if (name.startsWith("audio_"))
|
|
46
|
+
return "audio";
|
|
47
|
+
return "runtime";
|
|
48
|
+
}
|
|
49
|
+
function compactMetadata(tool) {
|
|
50
|
+
const description = typeof tool?.description === "string"
|
|
51
|
+
? tool.description.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g, " ").trim().slice(0, 240)
|
|
52
|
+
: "";
|
|
53
|
+
const label = typeof tool?.label === "string" ? tool.label.trim().slice(0, 120) : "";
|
|
54
|
+
return {
|
|
55
|
+
name: toolName(tool),
|
|
56
|
+
...(label ? { label } : {}),
|
|
57
|
+
...(description ? { description } : {}),
|
|
58
|
+
source: toolSource(tool),
|
|
59
|
+
category: toolCategory(tool),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function normalizedSearchText(value) {
|
|
63
|
+
return String(value ?? "")
|
|
64
|
+
.replace(/[_-]+/g, " ")
|
|
65
|
+
.toLowerCase();
|
|
66
|
+
}
|
|
67
|
+
const GENERIC_SEARCH_TERMS = new Set([
|
|
68
|
+
"a", "an", "and", "api", "call", "create", "delete", "fetch", "file",
|
|
69
|
+
"find", "for", "get", "list", "message", "read", "run", "search", "send",
|
|
70
|
+
"show", "the", "tool", "tools", "update", "use", "with",
|
|
71
|
+
]);
|
|
72
|
+
function matchesSignificantSearchTerm(tool, rawQuery) {
|
|
73
|
+
const terms = normalizedSearchText(rawQuery)
|
|
74
|
+
.split(/\s+/)
|
|
75
|
+
.filter((term) => term.length > 2 && !GENERIC_SEARCH_TERMS.has(term));
|
|
76
|
+
if (terms.length === 0)
|
|
77
|
+
return true;
|
|
78
|
+
const metadata = compactMetadata(tool);
|
|
79
|
+
const haystack = normalizedSearchText([
|
|
80
|
+
metadata.name,
|
|
81
|
+
metadata.label,
|
|
82
|
+
metadata.description,
|
|
83
|
+
metadata.source,
|
|
84
|
+
metadata.category,
|
|
85
|
+
].filter(Boolean).join(" "));
|
|
86
|
+
const tokens = new Set(haystack.split(/\s+/).filter(Boolean));
|
|
87
|
+
return terms.some((term) => tokens.has(term)
|
|
88
|
+
|| haystack.includes(term)
|
|
89
|
+
|| [...tokens].some((token) => token.startsWith(term) || term.startsWith(token)));
|
|
90
|
+
}
|
|
91
|
+
function searchScore(tool, rawQuery) {
|
|
92
|
+
const query = normalizedSearchText(rawQuery).trim();
|
|
93
|
+
if (!query)
|
|
94
|
+
return 0;
|
|
95
|
+
const terms = query.split(/\s+/).filter(Boolean);
|
|
96
|
+
const metadata = compactMetadata(tool);
|
|
97
|
+
const name = normalizedSearchText(metadata.name);
|
|
98
|
+
const label = normalizedSearchText(metadata.label);
|
|
99
|
+
const haystack = normalizedSearchText([
|
|
100
|
+
metadata.name,
|
|
101
|
+
metadata.label,
|
|
102
|
+
metadata.description,
|
|
103
|
+
metadata.source,
|
|
104
|
+
metadata.category,
|
|
105
|
+
].filter(Boolean).join(" "));
|
|
106
|
+
const tokens = new Set(haystack.split(/\s+/).filter(Boolean));
|
|
107
|
+
let score = haystack.includes(query) ? 8 : 0;
|
|
108
|
+
if (name.includes(query) || label.includes(query))
|
|
109
|
+
score += 6;
|
|
110
|
+
for (const term of terms) {
|
|
111
|
+
if (tokens.has(term)) {
|
|
112
|
+
score += 4;
|
|
113
|
+
}
|
|
114
|
+
else if (haystack.includes(term)) {
|
|
115
|
+
score += 2;
|
|
116
|
+
}
|
|
117
|
+
else if ([...tokens].some((token) => token.startsWith(term) || term.startsWith(token))) {
|
|
118
|
+
score += 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return score;
|
|
122
|
+
}
|
|
123
|
+
function disclosureTools() {
|
|
124
|
+
return [
|
|
125
|
+
{
|
|
126
|
+
name: "tool_list",
|
|
127
|
+
label: "List Tools",
|
|
128
|
+
description: "List compact metadata for tools available to this agent. This does not load or execute tools.",
|
|
129
|
+
parameters: {
|
|
130
|
+
type: "object",
|
|
131
|
+
properties: {
|
|
132
|
+
category: { type: "string", description: "Optional exact category filter." },
|
|
133
|
+
source: { type: "string", description: "Optional exact source filter." },
|
|
134
|
+
loaded: { type: "boolean", description: "When true, return only tools already loaded in this run." },
|
|
135
|
+
limit: { type: "number", description: "Maximum results. Defaults to 40." },
|
|
136
|
+
},
|
|
137
|
+
additionalProperties: false,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "tool_search",
|
|
142
|
+
label: "Search Tools",
|
|
143
|
+
description: "Search compact metadata for tools available to this agent. Review the results, then explicitly load exact tool names with tool_load.",
|
|
144
|
+
parameters: {
|
|
145
|
+
type: "object",
|
|
146
|
+
properties: {
|
|
147
|
+
query: { type: "string", description: "Capability or tool name to search for." },
|
|
148
|
+
limit: { type: "number", description: "Maximum matching tools. Defaults to 20." },
|
|
149
|
+
},
|
|
150
|
+
required: ["query"],
|
|
151
|
+
additionalProperties: false,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: "tool_load",
|
|
156
|
+
label: "Load Tools",
|
|
157
|
+
description: "Load one or more exact authorized tool names into the model's active tool pool for this run. Loading does not execute a tool or grant new permissions.",
|
|
158
|
+
parameters: {
|
|
159
|
+
type: "object",
|
|
160
|
+
properties: {
|
|
161
|
+
names: {
|
|
162
|
+
type: "array",
|
|
163
|
+
items: { type: "string" },
|
|
164
|
+
minItems: 1,
|
|
165
|
+
description: "Exact tool names returned by tool_search or tool_list.",
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
required: ["names"],
|
|
169
|
+
additionalProperties: false,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
function boundedLimit(value, fallback, maximum) {
|
|
175
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
176
|
+
return fallback;
|
|
177
|
+
return Math.max(1, Math.min(maximum, Math.trunc(value)));
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Create one request-scoped, model-controlled progressive tool pool.
|
|
181
|
+
*
|
|
182
|
+
* `tools` must already be authorization-filtered by the host. Loading only
|
|
183
|
+
* changes model visibility; execution is still checked against both the
|
|
184
|
+
* authorized catalog and the current pool before reaching the host executor.
|
|
185
|
+
*/
|
|
186
|
+
export function createModelControlledToolPool(options) {
|
|
187
|
+
const catalog = new Map();
|
|
188
|
+
const catalogOrder = [];
|
|
189
|
+
for (const tool of options.tools) {
|
|
190
|
+
const name = toolName(tool);
|
|
191
|
+
if (!name)
|
|
192
|
+
continue;
|
|
193
|
+
if (MODEL_CONTROLLED_TOOL_NAME_SET.has(name)) {
|
|
194
|
+
throw new Error(`Tool catalog contains reserved disclosure name "${name}".`);
|
|
195
|
+
}
|
|
196
|
+
if (catalog.has(name)) {
|
|
197
|
+
throw new Error(`Tool catalog contains duplicate tool name "${name}".`);
|
|
198
|
+
}
|
|
199
|
+
catalog.set(name, tool);
|
|
200
|
+
catalogOrder.push(name);
|
|
201
|
+
}
|
|
202
|
+
const maxLoadedTools = positiveInteger(options.maxLoadedTools, 16);
|
|
203
|
+
const maxLoadBatch = positiveInteger(options.maxLoadBatch, 8);
|
|
204
|
+
const maxSearchResults = positiveInteger(options.maxSearchResults, 20);
|
|
205
|
+
const loaded = new Set();
|
|
206
|
+
for (const rawName of options.initiallyLoaded ?? []) {
|
|
207
|
+
const name = String(rawName).trim();
|
|
208
|
+
if (!catalog.has(name)) {
|
|
209
|
+
throw new Error(`Initially loaded tool "${name}" is not in the authorized catalog.`);
|
|
210
|
+
}
|
|
211
|
+
loaded.add(name);
|
|
212
|
+
}
|
|
213
|
+
if (loaded.size > maxLoadedTools) {
|
|
214
|
+
throw new Error(`Initial tool pool exceeds the ${maxLoadedTools}-tool limit.`);
|
|
215
|
+
}
|
|
216
|
+
let executableThisTurn = new Set(loaded);
|
|
217
|
+
const metaTools = disclosureTools();
|
|
218
|
+
const metaToolsByName = new Map(metaTools.map((tool) => [tool.name, tool]));
|
|
219
|
+
const activeToolNames = () => [
|
|
220
|
+
...catalogOrder.filter((name) => loaded.has(name)),
|
|
221
|
+
...MODEL_CONTROLLED_TOOL_NAMES,
|
|
222
|
+
];
|
|
223
|
+
const startModelTurn = () => {
|
|
224
|
+
executableThisTurn = new Set(loaded);
|
|
225
|
+
return activeToolNames();
|
|
226
|
+
};
|
|
227
|
+
const activeTools = () => activeToolNames()
|
|
228
|
+
.map((name) => catalog.get(name) ?? metaToolsByName.get(name))
|
|
229
|
+
.filter(Boolean);
|
|
230
|
+
const loadedToolNames = () => catalogOrder.filter((name) => loaded.has(name));
|
|
231
|
+
const executor = async (name, args, execution) => {
|
|
232
|
+
if (name === "tool_list") {
|
|
233
|
+
const category = typeof args.category === "string" ? args.category.trim() : "";
|
|
234
|
+
const source = typeof args.source === "string" ? args.source.trim() : "";
|
|
235
|
+
const loadedOnly = args.loaded === true;
|
|
236
|
+
const limit = boundedLimit(args.limit, 40, 100);
|
|
237
|
+
const matches = catalogOrder
|
|
238
|
+
.filter((toolNameValue) => !loadedOnly || loaded.has(toolNameValue))
|
|
239
|
+
.map((toolNameValue) => catalog.get(toolNameValue))
|
|
240
|
+
.filter((tool) => !category || toolCategory(tool) === category)
|
|
241
|
+
.filter((tool) => !source || toolSource(tool) === source);
|
|
242
|
+
return JSON.stringify({
|
|
243
|
+
tools: matches.slice(0, limit).map(compactMetadata),
|
|
244
|
+
total: matches.length,
|
|
245
|
+
truncated: matches.length > limit,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
if (name === "tool_search") {
|
|
249
|
+
const query = typeof args.query === "string" ? args.query.trim() : "";
|
|
250
|
+
if (!query)
|
|
251
|
+
return "Error: tool_search requires a non-empty query.";
|
|
252
|
+
const limit = boundedLimit(args.limit, maxSearchResults, 50);
|
|
253
|
+
const matches = catalogOrder
|
|
254
|
+
.map((toolNameValue) => catalog.get(toolNameValue))
|
|
255
|
+
.filter((tool) => matchesSignificantSearchTerm(tool, query))
|
|
256
|
+
.map((tool) => ({ tool, score: searchScore(tool, query) }))
|
|
257
|
+
.filter((entry) => entry.score > 0)
|
|
258
|
+
.sort((left, right) => right.score - left.score || toolName(left.tool).localeCompare(toolName(right.tool)));
|
|
259
|
+
return JSON.stringify({
|
|
260
|
+
query,
|
|
261
|
+
tools: matches.slice(0, limit).map((entry) => compactMetadata(entry.tool)),
|
|
262
|
+
total: matches.length,
|
|
263
|
+
truncated: matches.length > limit,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
if (name === "tool_load") {
|
|
267
|
+
if (!Array.isArray(args.names)) {
|
|
268
|
+
return "Error: tool_load requires an array of exact tool names.";
|
|
269
|
+
}
|
|
270
|
+
const names = [...new Set(args.names.map((value) => typeof value === "string" ? value.trim() : ""))];
|
|
271
|
+
if (names.length === 0 || names.some((value) => !value)) {
|
|
272
|
+
return "Error: tool_load requires at least one exact tool name.";
|
|
273
|
+
}
|
|
274
|
+
if (names.length > maxLoadBatch) {
|
|
275
|
+
return `Error: tool_load accepts at most ${maxLoadBatch} names per call.`;
|
|
276
|
+
}
|
|
277
|
+
for (const requested of names) {
|
|
278
|
+
if (!catalog.has(requested)) {
|
|
279
|
+
return `Error: Tool "${requested}" is not available to this agent.`;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const additions = names.filter((requested) => !loaded.has(requested));
|
|
283
|
+
if (loaded.size + additions.length > maxLoadedTools) {
|
|
284
|
+
return `Error: Tool pool limit reached (${maxLoadedTools} loaded tools).`;
|
|
285
|
+
}
|
|
286
|
+
for (const requested of additions)
|
|
287
|
+
loaded.add(requested);
|
|
288
|
+
return JSON.stringify({
|
|
289
|
+
loaded: names,
|
|
290
|
+
active: loadedToolNames(),
|
|
291
|
+
remainingCapacity: maxLoadedTools - loaded.size,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
if (!catalog.has(name))
|
|
295
|
+
return `Error: Unknown tool "${name}".`;
|
|
296
|
+
if (!executableThisTurn.has(name)) {
|
|
297
|
+
return `Error: Tool "${name}" is not active in this model turn. Use tool_search and tool_load, then call it on the next turn.`;
|
|
298
|
+
}
|
|
299
|
+
return options.executor(name, args, execution);
|
|
300
|
+
};
|
|
301
|
+
return {
|
|
302
|
+
tools: [...catalogOrder.map((name) => catalog.get(name)), ...metaTools],
|
|
303
|
+
executor,
|
|
304
|
+
activeToolNames,
|
|
305
|
+
startModelTurn,
|
|
306
|
+
activeTools,
|
|
307
|
+
loadedToolNames,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
/** Extract an exact forced AI SDK tool choice, if one is configured. */
|
|
311
|
+
export function forcedModelToolName(toolChoice) {
|
|
312
|
+
if (!toolChoice || typeof toolChoice !== "object" || Array.isArray(toolChoice))
|
|
313
|
+
return undefined;
|
|
314
|
+
const candidate = toolChoice;
|
|
315
|
+
return candidate.type === "tool"
|
|
316
|
+
&& typeof candidate.toolName === "string"
|
|
317
|
+
&& candidate.toolName.trim()
|
|
318
|
+
? candidate.toolName.trim()
|
|
319
|
+
: undefined;
|
|
320
|
+
}
|
|
321
|
+
export const MODEL_CONTROLLED_TOOL_PROMPT = [
|
|
322
|
+
"## Tool discovery",
|
|
323
|
+
"",
|
|
324
|
+
"Only a compact discovery catalog is initially visible for most tools.",
|
|
325
|
+
"Use tool_search or tool_list to inspect available capabilities. Discovery is read-only.",
|
|
326
|
+
"After reviewing the returned names and descriptions, explicitly call tool_load with only the exact tools you need.",
|
|
327
|
+
"Loaded tools become directly callable with their original schemas on the next turn.",
|
|
328
|
+
"You may search and load additional tools later in the same run. Loading never grants permissions or executes a tool.",
|
|
329
|
+
].join("\n");
|
|
330
|
+
//# sourceMappingURL=tool-disclosure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-disclosure.js","sourceRoot":"","sources":["../../../src/routes/completions/tool-disclosure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-disclosure.test.d.ts","sourceRoot":"","sources":["../../../src/routes/completions/tool-disclosure.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { createModelControlledToolPool } from "./tool-disclosure.js";
|
|
3
|
+
function runtimeTool(name, description, parameters = {
|
|
4
|
+
type: "object",
|
|
5
|
+
properties: {},
|
|
6
|
+
additionalProperties: false,
|
|
7
|
+
}) {
|
|
8
|
+
return {
|
|
9
|
+
name,
|
|
10
|
+
label: name.replaceAll("_", " "),
|
|
11
|
+
description,
|
|
12
|
+
parameters,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function parseResult(value) {
|
|
16
|
+
return JSON.parse(value);
|
|
17
|
+
}
|
|
18
|
+
describe("model-controlled tool disclosure", () => {
|
|
19
|
+
it("starts with discovery and explicitly pinned tools only", () => {
|
|
20
|
+
const pool = createModelControlledToolPool({
|
|
21
|
+
tools: [
|
|
22
|
+
runtimeTool("skill_list", "List assigned skills"),
|
|
23
|
+
runtimeTool("slack_send_message", "Send a message to Slack"),
|
|
24
|
+
],
|
|
25
|
+
executor: vi.fn(async () => "ok"),
|
|
26
|
+
initiallyLoaded: ["skill_list"],
|
|
27
|
+
});
|
|
28
|
+
expect(pool.activeToolNames()).toEqual([
|
|
29
|
+
"skill_list",
|
|
30
|
+
"tool_list",
|
|
31
|
+
"tool_search",
|
|
32
|
+
"tool_load",
|
|
33
|
+
]);
|
|
34
|
+
expect(pool.tools.map((tool) => tool.name)).toEqual([
|
|
35
|
+
"skill_list",
|
|
36
|
+
"slack_send_message",
|
|
37
|
+
"tool_list",
|
|
38
|
+
"tool_search",
|
|
39
|
+
"tool_load",
|
|
40
|
+
]);
|
|
41
|
+
});
|
|
42
|
+
it("keeps discovery read-only and returns compact metadata without schemas", async () => {
|
|
43
|
+
const pool = createModelControlledToolPool({
|
|
44
|
+
tools: [
|
|
45
|
+
runtimeTool("slack_send_message", "Send a message to Slack", {
|
|
46
|
+
type: "object",
|
|
47
|
+
properties: { channelId: { type: "string" }, text: { type: "string" } },
|
|
48
|
+
required: ["channelId", "text"],
|
|
49
|
+
}),
|
|
50
|
+
runtimeTool("discord_send_message", "Send a message to Discord"),
|
|
51
|
+
],
|
|
52
|
+
executor: vi.fn(async () => "ok"),
|
|
53
|
+
});
|
|
54
|
+
const result = parseResult(await pool.executor("tool_search", { query: "Slack message" }));
|
|
55
|
+
expect(result.tools).toEqual([
|
|
56
|
+
expect.objectContaining({
|
|
57
|
+
name: "slack_send_message",
|
|
58
|
+
description: "Send a message to Slack",
|
|
59
|
+
}),
|
|
60
|
+
]);
|
|
61
|
+
expect(result.tools[0]).not.toHaveProperty("parameters");
|
|
62
|
+
expect(result.tools[0]).not.toHaveProperty("inputSchema");
|
|
63
|
+
expect(pool.activeToolNames()).toEqual(["tool_list", "tool_search", "tool_load"]);
|
|
64
|
+
});
|
|
65
|
+
it("loads exact authorized tools atomically and executes them directly", async () => {
|
|
66
|
+
const execute = vi.fn(async (name, args, options) => JSON.stringify({ name, args, callId: options?.callId }));
|
|
67
|
+
const pool = createModelControlledToolPool({
|
|
68
|
+
tools: [
|
|
69
|
+
runtimeTool("slack_list_channels", "List Slack channels"),
|
|
70
|
+
runtimeTool("slack_send_message", "Send a message to Slack"),
|
|
71
|
+
],
|
|
72
|
+
executor: execute,
|
|
73
|
+
});
|
|
74
|
+
const loaded = parseResult(await pool.executor("tool_load", {
|
|
75
|
+
names: ["slack_list_channels", "slack_send_message", "slack_list_channels"],
|
|
76
|
+
}));
|
|
77
|
+
expect(loaded.loaded).toEqual(["slack_list_channels", "slack_send_message"]);
|
|
78
|
+
expect(loaded).not.toHaveProperty("tools");
|
|
79
|
+
expect(pool.activeToolNames()).toEqual([
|
|
80
|
+
"slack_list_channels",
|
|
81
|
+
"slack_send_message",
|
|
82
|
+
"tool_list",
|
|
83
|
+
"tool_search",
|
|
84
|
+
"tool_load",
|
|
85
|
+
]);
|
|
86
|
+
pool.startModelTurn();
|
|
87
|
+
const result = await pool.executor("slack_send_message", { channelId: "C123", text: "hello" }, { callId: "call_1" });
|
|
88
|
+
expect(JSON.parse(result)).toEqual({
|
|
89
|
+
name: "slack_send_message",
|
|
90
|
+
args: { channelId: "C123", text: "hello" },
|
|
91
|
+
callId: "call_1",
|
|
92
|
+
});
|
|
93
|
+
expect(execute).toHaveBeenCalledOnce();
|
|
94
|
+
});
|
|
95
|
+
it("does not execute a tool loaded later in the same model turn", async () => {
|
|
96
|
+
const execute = vi.fn(async () => "executed");
|
|
97
|
+
const pool = createModelControlledToolPool({
|
|
98
|
+
tools: [runtimeTool("bash", "Run a shell command")],
|
|
99
|
+
executor: execute,
|
|
100
|
+
});
|
|
101
|
+
pool.startModelTurn();
|
|
102
|
+
await pool.executor("tool_load", { names: ["bash"] });
|
|
103
|
+
await expect(pool.executor("bash", { command: "pwd" })).resolves.toContain("not active");
|
|
104
|
+
expect(execute).not.toHaveBeenCalled();
|
|
105
|
+
pool.startModelTurn();
|
|
106
|
+
await expect(pool.executor("bash", { command: "pwd" })).resolves.toBe("executed");
|
|
107
|
+
expect(execute).toHaveBeenCalledOnce();
|
|
108
|
+
});
|
|
109
|
+
it("denies execution before load and never forwards it", async () => {
|
|
110
|
+
const execute = vi.fn(async () => "executed");
|
|
111
|
+
const pool = createModelControlledToolPool({
|
|
112
|
+
tools: [runtimeTool("bash", "Run a shell command")],
|
|
113
|
+
executor: execute,
|
|
114
|
+
});
|
|
115
|
+
await expect(pool.executor("bash", { command: "pwd" })).resolves.toBe('Error: Tool "bash" is not active in this model turn. Use tool_search and tool_load, then call it on the next turn.');
|
|
116
|
+
expect(execute).not.toHaveBeenCalled();
|
|
117
|
+
});
|
|
118
|
+
it("rejects an unknown name without partially mutating the pool", async () => {
|
|
119
|
+
const pool = createModelControlledToolPool({
|
|
120
|
+
tools: [runtimeTool("read", "Read a file")],
|
|
121
|
+
executor: vi.fn(async () => "ok"),
|
|
122
|
+
});
|
|
123
|
+
const result = await pool.executor("tool_load", {
|
|
124
|
+
names: ["read", "admin_delete_everything"],
|
|
125
|
+
});
|
|
126
|
+
expect(result).toBe('Error: Tool "admin_delete_everything" is not available to this agent.');
|
|
127
|
+
expect(pool.activeToolNames()).toEqual(["tool_list", "tool_search", "tool_load"]);
|
|
128
|
+
});
|
|
129
|
+
it("rejects wildcard loads and malformed batches", async () => {
|
|
130
|
+
const pool = createModelControlledToolPool({
|
|
131
|
+
tools: [runtimeTool("read", "Read a file")],
|
|
132
|
+
executor: vi.fn(async () => "ok"),
|
|
133
|
+
});
|
|
134
|
+
await expect(pool.executor("tool_load", { names: ["*"] })).resolves.toBe('Error: Tool "*" is not available to this agent.');
|
|
135
|
+
await expect(pool.executor("tool_load", { names: [] })).resolves.toBe("Error: tool_load requires at least one exact tool name.");
|
|
136
|
+
await expect(pool.executor("tool_load", { names: "read" })).resolves.toBe("Error: tool_load requires an array of exact tool names.");
|
|
137
|
+
});
|
|
138
|
+
it("enforces load and pool limits atomically", async () => {
|
|
139
|
+
const pool = createModelControlledToolPool({
|
|
140
|
+
tools: [
|
|
141
|
+
runtimeTool("one", "First tool"),
|
|
142
|
+
runtimeTool("two", "Second tool"),
|
|
143
|
+
runtimeTool("three", "Third tool"),
|
|
144
|
+
],
|
|
145
|
+
executor: vi.fn(async () => "ok"),
|
|
146
|
+
maxLoadedTools: 2,
|
|
147
|
+
maxLoadBatch: 2,
|
|
148
|
+
});
|
|
149
|
+
await expect(pool.executor("tool_load", { names: ["one", "two", "three"] })).resolves.toBe("Error: tool_load accepts at most 2 names per call.");
|
|
150
|
+
expect(pool.activeToolNames()).toEqual(["tool_list", "tool_search", "tool_load"]);
|
|
151
|
+
await pool.executor("tool_load", { names: ["one", "two"] });
|
|
152
|
+
await expect(pool.executor("tool_load", { names: ["three"] })).resolves.toBe("Error: Tool pool limit reached (2 loaded tools).");
|
|
153
|
+
expect(pool.activeToolNames()).toEqual([
|
|
154
|
+
"one",
|
|
155
|
+
"two",
|
|
156
|
+
"tool_list",
|
|
157
|
+
"tool_search",
|
|
158
|
+
"tool_load",
|
|
159
|
+
]);
|
|
160
|
+
});
|
|
161
|
+
it("rejects catalog collisions with reserved discovery names", () => {
|
|
162
|
+
expect(() => createModelControlledToolPool({
|
|
163
|
+
tools: [runtimeTool("tool_load", "Host-defined collision")],
|
|
164
|
+
executor: vi.fn(async () => "ok"),
|
|
165
|
+
})).toThrow('Tool catalog contains reserved disclosure name "tool_load".');
|
|
166
|
+
});
|
|
167
|
+
it("keeps state isolated between concurrent run pools", async () => {
|
|
168
|
+
const tools = [runtimeTool("read", "Read a file")];
|
|
169
|
+
const first = createModelControlledToolPool({ tools, executor: vi.fn(async () => "ok") });
|
|
170
|
+
const second = createModelControlledToolPool({ tools, executor: vi.fn(async () => "ok") });
|
|
171
|
+
await first.executor("tool_load", { names: ["read"] });
|
|
172
|
+
expect(first.activeToolNames()).toContain("read");
|
|
173
|
+
expect(second.activeToolNames()).not.toContain("read");
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=tool-disclosure.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-disclosure.test.js","sourceRoot":"","sources":["../../../src/routes/completions/tool-disclosure.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ import type { ChatSessionInjection } from "@polpo-ai/core";
|
|
|
35
35
|
import type { CompletionResolvedModelInfo, ResolvedModelInfo } from "./completions/agent-step-runner.js";
|
|
36
36
|
import type { RunOutputPolicy, RunPreflightPolicy, RuntimeGuardrailRequestPolicy, RuntimeOutputEnforcementMode } from "@polpo-ai/core/guardrails";
|
|
37
37
|
import type { CompletionToolExecutor } from "./completions/tool-guardrails.js";
|
|
38
|
+
import type { ModelControlledToolDisclosureConfig } from "./completions/tool-disclosure.js";
|
|
38
39
|
export { resumeProjectLoopRun } from "./completions/project-loop-runner.js";
|
|
39
40
|
export { buildChatRunInjection, runChatTurnViaRun, type ChatViaRunTurnResult, } from "./completions/chat-via-run-handler.js";
|
|
40
41
|
export { prepareChatCompletionExecution, runConversationTurn, type ConversationTurnResult, type PreparedConversationTurn, } from "./completions/conversation-turn.js";
|
|
@@ -156,6 +157,11 @@ export interface CompletionRouteDeps {
|
|
|
156
157
|
runtimeExecutor?: CompletionToolExecutor;
|
|
157
158
|
cleanup?: () => Promise<void>;
|
|
158
159
|
extraAiTools?: Record<string, any>;
|
|
160
|
+
/**
|
|
161
|
+
* Optional host-controlled progressive disclosure policy. Omitted keeps
|
|
162
|
+
* the historical behavior where every authorized tool is model-visible.
|
|
163
|
+
*/
|
|
164
|
+
disclosure?: ModelControlledToolDisclosureConfig;
|
|
159
165
|
}>;
|
|
160
166
|
/**
|
|
161
167
|
* Optionally create a host resource scope for one project-loop execution.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/routes/completions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,uCAAuC,EAC5C,KAAK,YAAY,EAEjB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,EACV,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/routes/completions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/routes/completions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkBhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAKhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/routes/completions.ts"],"names":[],"mappings":"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"}
|