@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.
Files changed (32) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/routes/completions/agent-step-runner.d.ts.map +1 -1
  5. package/dist/routes/completions/agent-step-runner.js +33 -4
  6. package/dist/routes/completions/agent-step-runner.js.map +1 -1
  7. package/dist/routes/completions/agent-step-runner.test.js +77 -0
  8. package/dist/routes/completions/agent-step-runner.test.js.map +1 -1
  9. package/dist/routes/completions/chat-handler.d.ts +4 -0
  10. package/dist/routes/completions/chat-handler.d.ts.map +1 -1
  11. package/dist/routes/completions/chat-handler.js +4 -2
  12. package/dist/routes/completions/chat-handler.js.map +1 -1
  13. package/dist/routes/completions/chat-via-run-handler.d.ts.map +1 -1
  14. package/dist/routes/completions/chat-via-run-handler.js +2 -0
  15. package/dist/routes/completions/chat-via-run-handler.js.map +1 -1
  16. package/dist/routes/completions/chat-via-run-handler.test.js +117 -0
  17. package/dist/routes/completions/chat-via-run-handler.test.js.map +1 -1
  18. package/dist/routes/completions/conversation-turn.d.ts.map +1 -1
  19. package/dist/routes/completions/conversation-turn.js +35 -1
  20. package/dist/routes/completions/conversation-turn.js.map +1 -1
  21. package/dist/routes/completions/tool-disclosure.d.ts +44 -0
  22. package/dist/routes/completions/tool-disclosure.d.ts.map +1 -0
  23. package/dist/routes/completions/tool-disclosure.js +330 -0
  24. package/dist/routes/completions/tool-disclosure.js.map +1 -0
  25. package/dist/routes/completions/tool-disclosure.test.d.ts +2 -0
  26. package/dist/routes/completions/tool-disclosure.test.d.ts.map +1 -0
  27. package/dist/routes/completions/tool-disclosure.test.js +176 -0
  28. package/dist/routes/completions/tool-disclosure.test.js.map +1 -0
  29. package/dist/routes/completions.d.ts +6 -0
  30. package/dist/routes/completions.d.ts.map +1 -1
  31. package/dist/routes/completions.js.map +1 -1
  32. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool-disclosure.test.d.ts.map
@@ -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":"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"}
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":"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"}
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/routes/completions.ts"],"names":[],"mappings":"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"}