skyloom 1.16.2 → 1.18.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 +15 -3
- package/dist/cli/loom_chat.d.ts.map +1 -1
- package/dist/cli/loom_chat.js +17 -0
- package/dist/cli/loom_chat.js.map +1 -1
- package/dist/cli/main.js +37 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/core/agent.d.ts +2 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +21 -5
- package/dist/core/agent.js.map +1 -1
- package/dist/core/bgproc.d.ts +59 -0
- package/dist/core/bgproc.d.ts.map +1 -0
- package/dist/core/bgproc.js +135 -0
- package/dist/core/bgproc.js.map +1 -0
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +20 -0
- package/dist/core/commands.js.map +1 -1
- package/dist/core/diagnostics.d.ts +39 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +206 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/diff.d.ts +31 -0
- package/dist/core/diff.d.ts.map +1 -0
- package/dist/core/diff.js +82 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/envcontext.d.ts +25 -0
- package/dist/core/envcontext.d.ts.map +1 -0
- package/dist/core/envcontext.js +112 -0
- package/dist/core/envcontext.js.map +1 -0
- package/dist/core/factory.d.ts +2 -0
- package/dist/core/factory.d.ts.map +1 -1
- package/dist/core/factory.js +35 -2
- package/dist/core/factory.js.map +1 -1
- package/dist/core/patch.d.ts +59 -0
- package/dist/core/patch.d.ts.map +1 -0
- package/dist/core/patch.js +220 -0
- package/dist/core/patch.js.map +1 -0
- package/dist/core/protocol.d.ts +11 -0
- package/dist/core/protocol.d.ts.map +1 -0
- package/dist/core/protocol.js +39 -0
- package/dist/core/protocol.js.map +1 -0
- package/dist/core/sandbox.d.ts +1 -0
- package/dist/core/sandbox.d.ts.map +1 -1
- package/dist/core/sandbox.js +1 -0
- package/dist/core/sandbox.js.map +1 -1
- package/dist/core/search.d.ts +41 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +156 -0
- package/dist/core/search.js.map +1 -0
- package/dist/core/security.d.ts +22 -2
- package/dist/core/security.d.ts.map +1 -1
- package/dist/core/security.js +55 -24
- package/dist/core/security.js.map +1 -1
- package/dist/core/skill.d.ts +4 -0
- package/dist/core/skill.d.ts.map +1 -1
- package/dist/core/skill.js +1 -0
- package/dist/core/skill.js.map +1 -1
- package/dist/core/subagent.d.ts +75 -0
- package/dist/core/subagent.d.ts.map +1 -0
- package/dist/core/subagent.js +287 -0
- package/dist/core/subagent.js.map +1 -0
- package/dist/core/tool.d.ts +23 -1
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +95 -30
- package/dist/core/tool.js.map +1 -1
- package/dist/plugins/loader.d.ts +49 -8
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +129 -16
- package/dist/plugins/loader.js.map +1 -1
- package/dist/tools/builtin.d.ts.map +1 -1
- package/dist/tools/builtin.js +183 -17
- package/dist/tools/builtin.js.map +1 -1
- package/dist/tools/spawn.d.ts +23 -0
- package/dist/tools/spawn.d.ts.map +1 -0
- package/dist/tools/spawn.js +77 -0
- package/dist/tools/spawn.js.map +1 -0
- package/docs/OPTIMIZATION_PLAN.md +21 -4
- package/package.json +1 -1
- package/src/cli/loom_chat.ts +11 -0
- package/src/cli/main.ts +31 -1
- package/src/core/agent.ts +20 -5
- package/src/core/bgproc.ts +153 -0
- package/src/core/commands.ts +20 -0
- package/src/core/diagnostics.ts +178 -0
- package/src/core/diff.ts +98 -0
- package/src/core/envcontext.ts +79 -0
- package/src/core/factory.ts +31 -2
- package/src/core/patch.ts +176 -0
- package/src/core/protocol.ts +36 -0
- package/src/core/sandbox.ts +1 -1
- package/src/core/search.ts +138 -0
- package/src/core/security.ts +63 -21
- package/src/core/skill.ts +1 -1
- package/src/core/subagent.ts +272 -0
- package/src/core/tool.ts +101 -31
- package/src/plugins/loader.ts +145 -18
- package/src/tools/builtin.ts +167 -17
- package/src/tools/spawn.ts +92 -0
- package/tests/bgproc.test.ts +65 -0
- package/tests/diagnostics.test.ts +86 -0
- package/tests/edit_diff.test.ts +102 -0
- package/tests/envcontext.test.ts +67 -0
- package/tests/patch.test.ts +128 -0
- package/tests/plugins.test.ts +84 -0
- package/tests/protocol.test.ts +27 -0
- package/tests/search.test.ts +87 -0
- package/tests/security.test.ts +87 -0
- package/tests/subagent.test.ts +211 -0
- package/tests/tool.test.ts +120 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Subagents — general-purpose, user-definable agents spawned with an ISOLATED
|
|
4
|
+
* context to handle one focused, self-contained task (the `spawn_agent` tool).
|
|
5
|
+
*
|
|
6
|
+
* This mirrors Claude Code's Task tool / opencode subagents: an orchestrator
|
|
7
|
+
* spins up a child agent that has its own fresh memory and a (optionally
|
|
8
|
+
* restricted) tool set, runs it to completion, and gets back only the child's
|
|
9
|
+
* final report — keeping the parent's context clean.
|
|
10
|
+
*
|
|
11
|
+
* Definitions come from three places (later wins on name collision):
|
|
12
|
+
* 1. built-in: general-purpose, explore
|
|
13
|
+
* 2. user: ~/.claude/agents/ (Claude Code compatible), ~/.skyloom/agents/
|
|
14
|
+
* 3. project: <cwd>/.claude/agents/, <cwd>/.sky/agents/
|
|
15
|
+
*
|
|
16
|
+
* Each file is `<root>/<name>.md` with Claude Code compatible YAML frontmatter
|
|
17
|
+
* (name / description / tools / model). The body is the subagent's system
|
|
18
|
+
* prompt. `tools` accepts Claude names (Read, Grep, Bash…) — they're aliased to
|
|
19
|
+
* sky's registry names. Omitting `tools` grants the full inherited tool set.
|
|
20
|
+
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.GenericSubagent = exports.READ_ONLY_TOOLS = void 0;
|
|
56
|
+
exports.subagentDirs = subagentDirs;
|
|
57
|
+
exports.parseSubagentFile = parseSubagentFile;
|
|
58
|
+
exports.loadSubagentDefinitions = loadSubagentDefinitions;
|
|
59
|
+
exports.runSubagent = runSubagent;
|
|
60
|
+
const fs = __importStar(require("fs"));
|
|
61
|
+
const os = __importStar(require("os"));
|
|
62
|
+
const path = __importStar(require("path"));
|
|
63
|
+
const yaml_1 = require("yaml");
|
|
64
|
+
const agent_1 = require("./agent");
|
|
65
|
+
const tool_1 = require("./tool");
|
|
66
|
+
const skill_1 = require("./skill");
|
|
67
|
+
const skill_2 = require("./skill");
|
|
68
|
+
const logger_1 = require("./logger");
|
|
69
|
+
const log = (0, logger_1.getLogger)('subagent');
|
|
70
|
+
/** Read-only tools for the `explore` subagent — search/read, never mutate. */
|
|
71
|
+
exports.READ_ONLY_TOOLS = [
|
|
72
|
+
'read_file', 'list_directory', 'tree', 'file_search', 'code_search', 'grep',
|
|
73
|
+
'web_search', 'fetch_page', 'http_get',
|
|
74
|
+
'git_status', 'git_diff', 'git_log',
|
|
75
|
+
'system_info',
|
|
76
|
+
];
|
|
77
|
+
const BUILTIN_DEFS = [
|
|
78
|
+
{
|
|
79
|
+
name: 'general-purpose',
|
|
80
|
+
description: '通用子智能体 — 研究复杂问题、搜索代码、执行多步任务。当你不确定一两次能否定位答案时,把搜索/调研整段交给它。',
|
|
81
|
+
systemPrompt: '你是一个通用子智能体,擅长把一个目标拆成步骤并用工具逐一推进:搜索、阅读、分析、必要时修改,然后汇报。' +
|
|
82
|
+
'独立完成任务,不要反问;遇到歧义就合理假设并说明。最终回复要完整自洽 —— 编排者只看得到这一条。',
|
|
83
|
+
tools: null,
|
|
84
|
+
source: 'builtin',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'explore',
|
|
88
|
+
description: '只读探索子智能体 — 在大量文件/目录中做广度搜索,只读不写。需要"扫一遍代码库定位某物"且只要结论时用它。',
|
|
89
|
+
systemPrompt: '你是一个只读探索子智能体。你的工作是在代码库/网络中快速定位信息并给出结论,绝不修改任何文件。' +
|
|
90
|
+
'优先用 grep / code_search / file_search / tree 做广度扫描,读取关键片段而非整文件。' +
|
|
91
|
+
'汇报时给出精确的文件路径与行号(file_path:line),以及一段简明结论。',
|
|
92
|
+
tools: exports.READ_ONLY_TOOLS,
|
|
93
|
+
source: 'builtin',
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
/** User/project subagent definition roots, lowest precedence first. */
|
|
97
|
+
function subagentDirs(cwd = process.cwd()) {
|
|
98
|
+
return [
|
|
99
|
+
path.join(os.homedir(), '.claude', 'agents'),
|
|
100
|
+
path.join(os.homedir(), '.skyloom', 'agents'),
|
|
101
|
+
path.join(cwd, '.claude', 'agents'),
|
|
102
|
+
path.join(cwd, '.sky', 'agents'),
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
function parseToolsField(raw) {
|
|
106
|
+
let list = null;
|
|
107
|
+
if (Array.isArray(raw)) {
|
|
108
|
+
list = raw.filter((t) => typeof t === 'string');
|
|
109
|
+
}
|
|
110
|
+
else if (typeof raw === 'string') {
|
|
111
|
+
const trimmed = raw.trim();
|
|
112
|
+
if (!trimmed || trimmed === '*' || trimmed.toLowerCase() === 'all')
|
|
113
|
+
return null;
|
|
114
|
+
list = trimmed.split(',').map((t) => t.trim()).filter(Boolean);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return null; // omitted → inherit all
|
|
118
|
+
}
|
|
119
|
+
if (!list || list.length === 0)
|
|
120
|
+
return null;
|
|
121
|
+
// Normalize Claude names → sky names, dedupe preserving order
|
|
122
|
+
const seen = new Set();
|
|
123
|
+
const out = [];
|
|
124
|
+
for (const t of list.map(skill_2.normalizeClaudeToolName)) {
|
|
125
|
+
if (!seen.has(t)) {
|
|
126
|
+
seen.add(t);
|
|
127
|
+
out.push(t);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
/** Parse a single `<name>.md` subagent definition file. */
|
|
133
|
+
function parseSubagentFile(filePath) {
|
|
134
|
+
let text;
|
|
135
|
+
try {
|
|
136
|
+
text = fs.readFileSync(filePath, 'utf8');
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
let fm = {};
|
|
142
|
+
let body = text;
|
|
143
|
+
const m = text.match(/^---\s*\n(.*?)\n---\s*\n?(.*)/s);
|
|
144
|
+
if (m) {
|
|
145
|
+
try {
|
|
146
|
+
fm = (0, yaml_1.parse)(m[1]) || {};
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
fm = {};
|
|
150
|
+
}
|
|
151
|
+
body = m[2];
|
|
152
|
+
}
|
|
153
|
+
const fileBase = path.basename(filePath).replace(/\.md$/i, '');
|
|
154
|
+
const name = (typeof fm.name === 'string' && fm.name.trim()) ? fm.name.trim() : fileBase;
|
|
155
|
+
if (!name)
|
|
156
|
+
return null;
|
|
157
|
+
const description = (typeof fm.description === 'string' && fm.description.trim())
|
|
158
|
+
? fm.description.trim()
|
|
159
|
+
: `自定义子智能体 ${name}`;
|
|
160
|
+
const model = (typeof fm.model === 'string' && fm.model.trim()) ? fm.model.trim() : undefined;
|
|
161
|
+
return {
|
|
162
|
+
name,
|
|
163
|
+
description,
|
|
164
|
+
systemPrompt: body.trim() || `你是 ${name} 子智能体。${description}`,
|
|
165
|
+
tools: parseToolsField(fm.tools),
|
|
166
|
+
model,
|
|
167
|
+
source: filePath,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Load all subagent definitions: built-ins overlaid by user then project files.
|
|
172
|
+
* Cheap enough to call per spawn so edits to definition files apply live.
|
|
173
|
+
*/
|
|
174
|
+
function loadSubagentDefinitions(cwd = process.cwd()) {
|
|
175
|
+
const map = new Map();
|
|
176
|
+
for (const d of BUILTIN_DEFS)
|
|
177
|
+
map.set(d.name, d);
|
|
178
|
+
for (const dir of subagentDirs(cwd)) {
|
|
179
|
+
let entries;
|
|
180
|
+
try {
|
|
181
|
+
if (!fs.existsSync(dir))
|
|
182
|
+
continue;
|
|
183
|
+
entries = fs.readdirSync(dir);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
for (const entry of entries) {
|
|
189
|
+
if (!entry.toLowerCase().endsWith('.md'))
|
|
190
|
+
continue;
|
|
191
|
+
const def = parseSubagentFile(path.join(dir, entry));
|
|
192
|
+
if (def)
|
|
193
|
+
map.set(def.name, def);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return map;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* A generic agent built from a SubagentDefinition. Reuses the full BaseAgent
|
|
200
|
+
* reasoning loop but supplies its own identity block (the team-persona block
|
|
201
|
+
* would crash for a non-team name).
|
|
202
|
+
*/
|
|
203
|
+
class GenericSubagent extends agent_1.BaseAgent {
|
|
204
|
+
constructor(def, config, llm, bus, toolRegistry, skillRegistry, runtimeName) {
|
|
205
|
+
super(config, llm, bus, toolRegistry, skillRegistry);
|
|
206
|
+
this.name = runtimeName;
|
|
207
|
+
this.displayName = def.name;
|
|
208
|
+
this.emoji = '◇';
|
|
209
|
+
this.specialty = def.description;
|
|
210
|
+
this.systemPrompt = def.systemPrompt;
|
|
211
|
+
this._subDef = def;
|
|
212
|
+
}
|
|
213
|
+
runtimeIdentityBlock() {
|
|
214
|
+
const lang = this.config.llm?.language || 'zh';
|
|
215
|
+
if (lang === 'en') {
|
|
216
|
+
return `\n\n## Who You Are\nYou are the **${this._subDef.name}** subagent — ${this._subDef.description}\nYou run in an ISOLATED context spawned by an orchestrator for one focused, self-contained task. The orchestrator sees ONLY your final message, never your intermediate steps. So your final message must be a COMPLETE, self-contained report: what you found, what you did, and concrete results (file paths, code, answers). Be thorough; do not ask follow-up questions — make reasonable assumptions and act.`;
|
|
217
|
+
}
|
|
218
|
+
return `\n\n## 你是谁\n你是 **${this._subDef.name}** 子智能体 —— ${this._subDef.description}\n你运行在编排者派生的**隔离上下文**中,负责一个聚焦、自洽的任务。编排者只能看到你的最终回复,看不到任何中间步骤。因此你的最终回复必须是一份**完整、自洽的报告**:你发现了什么、做了什么、以及具体结果(文件路径、代码、答案)。要彻底;不要反问,合理假设后直接行动。`;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.GenericSubagent = GenericSubagent;
|
|
222
|
+
let _spawnSeq = 0;
|
|
223
|
+
/**
|
|
224
|
+
* Run a subagent to completion in an isolated context and return its final
|
|
225
|
+
* report. Creates an ephemeral on-disk memory in a temp dir and removes it
|
|
226
|
+
* afterward, so nothing leaks into the parent agent or the user's ~/.skyloom.
|
|
227
|
+
*/
|
|
228
|
+
async function runSubagent(opts) {
|
|
229
|
+
const { def, task, config, llm, bus, baseToolRegistry, baseSkillRegistry, onStatus } = opts;
|
|
230
|
+
const safe = def.name.replace(/[^A-Za-z0-9_-]/g, '_').slice(0, 24) || 'sub';
|
|
231
|
+
const runtimeName = `sub-${safe}-${Date.now().toString(36)}-${(_spawnSeq++).toString(36)}`;
|
|
232
|
+
// Filtered tool registry (allowlist), never carrying spawn_agent (no recursion).
|
|
233
|
+
const reg = new tool_1.ToolRegistry();
|
|
234
|
+
reg.merge(baseToolRegistry);
|
|
235
|
+
if (def.tools !== null) {
|
|
236
|
+
const allow = new Set(def.tools);
|
|
237
|
+
for (const n of reg.listNames()) {
|
|
238
|
+
if (!allow.has(n))
|
|
239
|
+
reg.unregister(n);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
reg.unregister('spawn_agent');
|
|
243
|
+
reg.unregister('delegate_to');
|
|
244
|
+
const skills = new skill_1.SkillRegistry();
|
|
245
|
+
skills.merge(baseSkillRegistry);
|
|
246
|
+
let tmpDir;
|
|
247
|
+
try {
|
|
248
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sky-sub-'));
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
return `[spawn_agent error] could not create isolated workspace: ${e}`;
|
|
252
|
+
}
|
|
253
|
+
const subConfig = {
|
|
254
|
+
...config,
|
|
255
|
+
agents: {
|
|
256
|
+
...(config?.agents || {}),
|
|
257
|
+
[runtimeName]: def.model ? { model: def.model } : {},
|
|
258
|
+
},
|
|
259
|
+
memory: {
|
|
260
|
+
...(config?.memory || {}),
|
|
261
|
+
dbPath: path.join(tmpDir, 'mem'),
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
const agent = new GenericSubagent(def, subConfig, llm, bus, reg, skills, runtimeName);
|
|
265
|
+
try {
|
|
266
|
+
await agent.init();
|
|
267
|
+
if (onStatus)
|
|
268
|
+
onStatus(`spawn ${def.name}…`);
|
|
269
|
+
const report = await agent.chat(task, onStatus || undefined);
|
|
270
|
+
return report || '(subagent produced no output)';
|
|
271
|
+
}
|
|
272
|
+
catch (e) {
|
|
273
|
+
log.warn('subagent_run_failed', { agent: def.name, error: String(e) });
|
|
274
|
+
return `[spawn_agent error] subagent '${def.name}' failed: ${e}`;
|
|
275
|
+
}
|
|
276
|
+
finally {
|
|
277
|
+
try {
|
|
278
|
+
await agent.close();
|
|
279
|
+
}
|
|
280
|
+
catch { /* ignore */ }
|
|
281
|
+
try {
|
|
282
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
283
|
+
}
|
|
284
|
+
catch { /* ignore */ }
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=subagent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/core/subagent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DH,oCAOC;AAwBD,8CA6BC;AAMD,0DAiBC;AA4CD,kCA+DC;AA3PD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,+BAA0C;AAE1C,mCAAoC;AAGpC,iCAAsC;AACtC,mCAAwC;AACxC,mCAAkD;AAClD,qCAAqC;AAErC,MAAM,GAAG,GAAG,IAAA,kBAAS,EAAC,UAAU,CAAC,CAAC;AAiBlC,8EAA8E;AACjE,QAAA,eAAe,GAAG;IAC7B,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM;IAC3E,YAAY,EAAE,YAAY,EAAE,UAAU;IACtC,YAAY,EAAE,UAAU,EAAE,SAAS;IACnC,aAAa;CACd,CAAC;AAEF,MAAM,YAAY,GAAyB;IACzC;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0DAA0D;QACvE,YAAY,EACV,qDAAqD;YACrD,mDAAmD;QACrD,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,SAAS;KAClB;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wDAAwD;QACrE,YAAY,EACV,iDAAiD;YACjD,gEAAgE;YAChE,2CAA2C;QAC7C,KAAK,EAAE,uBAAe;QACtB,MAAM,EAAE,SAAS;KAClB;CACF,CAAC;AAEF,uEAAuE;AACvE,SAAgB,YAAY,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACtD,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,IAAI,GAAoB,IAAI,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAChF,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACvC,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,+BAAuB,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2DAA2D;AAC3D,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,EAAE,GAAwB,EAAE,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC;QACN,IAAI,CAAC;YAAC,EAAE,GAAG,IAAA,YAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,EAAE,GAAG,EAAE,CAAC;QAAC,CAAC;QACtD,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzF,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,KAAK,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC/E,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE;QACvB,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,OAAO;QACL,IAAI;QACJ,WAAW;QACX,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,SAAS,WAAW,EAAE;QAC7D,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC;QAChC,KAAK;QACL,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,YAAY;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACnD,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACrD,IAAI,GAAG;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAa,eAAgB,SAAQ,iBAAS;IAG5C,YACE,GAAuB,EACvB,MAAW,EACX,GAAc,EACd,GAAe,EACf,YAA0B,EAC1B,aAA4B,EAC5B,WAAmB;QAEnB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;IAES,oBAAoB;QAC5B,MAAM,IAAI,GAAI,IAAI,CAAC,MAAc,CAAC,GAAG,EAAE,QAAQ,IAAI,IAAI,CAAC;QACxD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,qCAAqC,IAAI,CAAC,OAAO,CAAC,IAAI,iBAAiB,IAAI,CAAC,OAAO,CAAC,WAAW,qZAAqZ,CAAC;QAC9f,CAAC;QACD,OAAO,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,IAAI,CAAC,OAAO,CAAC,WAAW,0IAA0I,CAAC;IAC/N,CAAC;CACF;AA5BD,0CA4BC;AAED,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,IASjC;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE5F,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAE3F,iFAAiF;IACjF,MAAM,GAAG,GAAG,IAAI,mBAAY,EAAE,CAAC;IAC/B,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC9B,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,qBAAa,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEhC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,4DAA4D,CAAC,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,GAAG,MAAM;QACT,MAAM,EAAE;YACN,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;YACzB,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;SACrD;QACD,MAAM,EAAE;YACN,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;SACjC;KACF,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAEtF,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,QAAQ;YAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;QAC7D,OAAO,MAAM,IAAI,+BAA+B,CAAC;IACnD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,iCAAiC,GAAG,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC;IACnE,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC;YAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
|
package/dist/core/tool.d.ts
CHANGED
|
@@ -38,6 +38,14 @@ export interface ToolDefinition {
|
|
|
38
38
|
*/
|
|
39
39
|
idempotent?: boolean;
|
|
40
40
|
timeout?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Optional output guard: inspect the handler's result and return an error
|
|
43
|
+
* message if it's not valid (else null/undefined). A non-null return makes
|
|
44
|
+
* the call fail — routed through the same retry + circuit-breaker path as a
|
|
45
|
+
* thrown error — so a tool/plugin can reject malformed output instead of
|
|
46
|
+
* passing garbage back to the model as "success".
|
|
47
|
+
*/
|
|
48
|
+
validateOutput?: (result: string, params: Record<string, unknown>) => string | null | undefined;
|
|
41
49
|
}
|
|
42
50
|
/** Order-stable JSON key so {a,b} and {b,a} hash to the same cache/dedup key. */
|
|
43
51
|
export declare function stableStringify(value: unknown): string;
|
|
@@ -90,7 +98,21 @@ export declare class ToolRegistry extends EventEmitter {
|
|
|
90
98
|
*/
|
|
91
99
|
has(toolName: string): boolean;
|
|
92
100
|
/**
|
|
93
|
-
* Validate tool
|
|
101
|
+
* Validate tool inputs against the declared schema AND return coerced args:
|
|
102
|
+
* required-field presence, per-param type coercion (string<->number/bool,
|
|
103
|
+
* JSON-string -> array/object), and enum membership. Returning the coerced
|
|
104
|
+
* params means the handler receives clean, typed values (the model often
|
|
105
|
+
* sends "5" / "true" / a JSON string), and rejecting malformed input before
|
|
106
|
+
* execution gives the model a precise, actionable error to retry against.
|
|
107
|
+
*/
|
|
108
|
+
validateAndCoerce(toolName: string, params: Record<string, unknown>): {
|
|
109
|
+
ok: boolean;
|
|
110
|
+
error?: string;
|
|
111
|
+
params?: Record<string, unknown>;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Validate tool parameters (legacy boolean/message form; delegates to
|
|
115
|
+
* validateAndCoerce).
|
|
94
116
|
*/
|
|
95
117
|
validateParameters(toolName: string, params: Record<string, unknown>): [boolean, string];
|
|
96
118
|
/**
|
package/dist/core/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tool.js
CHANGED
|
@@ -86,16 +86,22 @@ function coerceValue(value, targetType) {
|
|
|
86
86
|
if (targetType === "object" && typeof value === "object") {
|
|
87
87
|
return [true, value];
|
|
88
88
|
}
|
|
89
|
+
// string target accepts scalars (number/boolean) by stringifying them —
|
|
90
|
+
// the model sometimes sends 5 where a string id is expected.
|
|
91
|
+
if (targetType === "string" && (typeof value === "number" || typeof value === "boolean")) {
|
|
92
|
+
return [true, String(value)];
|
|
93
|
+
}
|
|
89
94
|
// Lenient coercion from string
|
|
90
95
|
if (typeof value === "string") {
|
|
91
96
|
const stripped = value.trim();
|
|
92
97
|
if (targetType === "integer" || targetType === "number") {
|
|
93
|
-
|
|
98
|
+
// Number() handles ints and floats uniformly; parseInt truncated floats
|
|
99
|
+
// ("3.5" -> 3), silently corrupting numeric args.
|
|
100
|
+
if (stripped === "")
|
|
101
|
+
return [false, value];
|
|
102
|
+
const num = Number(stripped);
|
|
94
103
|
if (!isNaN(num))
|
|
95
|
-
return [true, num];
|
|
96
|
-
const float = parseFloat(stripped);
|
|
97
|
-
if (!isNaN(float))
|
|
98
|
-
return [true, float];
|
|
104
|
+
return [true, targetType === "integer" ? Math.trunc(num) : num];
|
|
99
105
|
return [false, value];
|
|
100
106
|
}
|
|
101
107
|
if (targetType === "boolean") {
|
|
@@ -107,14 +113,40 @@ function coerceValue(value, targetType) {
|
|
|
107
113
|
return [false, value];
|
|
108
114
|
}
|
|
109
115
|
if (targetType === "array") {
|
|
116
|
+
// The model often sends a JSON-encoded array string for array params.
|
|
117
|
+
if (stripped.startsWith("[")) {
|
|
118
|
+
try {
|
|
119
|
+
const parsed = JSON.parse(stripped);
|
|
120
|
+
if (Array.isArray(parsed))
|
|
121
|
+
return [true, parsed];
|
|
122
|
+
}
|
|
123
|
+
catch { /* fall through */ }
|
|
124
|
+
}
|
|
110
125
|
if (stripped.includes(",")) {
|
|
111
126
|
return [true, stripped.split(",").map((s) => s.trim())];
|
|
112
127
|
}
|
|
113
128
|
return [true, [value]];
|
|
114
129
|
}
|
|
130
|
+
if (targetType === "object") {
|
|
131
|
+
try {
|
|
132
|
+
const parsed = JSON.parse(stripped);
|
|
133
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed))
|
|
134
|
+
return [true, parsed];
|
|
135
|
+
}
|
|
136
|
+
catch { /* not JSON */ }
|
|
137
|
+
return [false, value];
|
|
138
|
+
}
|
|
115
139
|
}
|
|
116
140
|
return [false, value];
|
|
117
141
|
}
|
|
142
|
+
/** Describe a value's runtime type for an error message. */
|
|
143
|
+
function describeType(v) {
|
|
144
|
+
if (v === null)
|
|
145
|
+
return "null";
|
|
146
|
+
if (Array.isArray(v))
|
|
147
|
+
return "array";
|
|
148
|
+
return typeof v;
|
|
149
|
+
}
|
|
118
150
|
/**
|
|
119
151
|
* Tool registry and executor
|
|
120
152
|
*/
|
|
@@ -197,28 +229,52 @@ class ToolRegistry extends events_1.EventEmitter {
|
|
|
197
229
|
return this.tools.has(toolName);
|
|
198
230
|
}
|
|
199
231
|
/**
|
|
200
|
-
* Validate tool
|
|
232
|
+
* Validate tool inputs against the declared schema AND return coerced args:
|
|
233
|
+
* required-field presence, per-param type coercion (string<->number/bool,
|
|
234
|
+
* JSON-string -> array/object), and enum membership. Returning the coerced
|
|
235
|
+
* params means the handler receives clean, typed values (the model often
|
|
236
|
+
* sends "5" / "true" / a JSON string), and rejecting malformed input before
|
|
237
|
+
* execution gives the model a precise, actionable error to retry against.
|
|
201
238
|
*/
|
|
202
|
-
|
|
239
|
+
validateAndCoerce(toolName, params) {
|
|
203
240
|
const tool = this.tools.get(toolName);
|
|
204
|
-
if (!tool)
|
|
205
|
-
return
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
241
|
+
if (!tool)
|
|
242
|
+
return { ok: false, error: `Tool ${toolName} not found` };
|
|
243
|
+
if (!tool.parameters || tool.parameters.length === 0)
|
|
244
|
+
return { ok: true, params };
|
|
245
|
+
const out = { ...params };
|
|
210
246
|
for (const param of tool.parameters) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
const [valid] = coerceValue(params[param.name], param.type);
|
|
216
|
-
if (!valid) {
|
|
217
|
-
return [false, `Invalid type for parameter ${param.name}: expected ${param.type}`];
|
|
247
|
+
const has = param.name in params && params[param.name] !== null && params[param.name] !== undefined;
|
|
248
|
+
if (!has) {
|
|
249
|
+
if (param.required) {
|
|
250
|
+
return { ok: false, error: `Missing required parameter '${param.name}' (expected ${param.type}).` };
|
|
218
251
|
}
|
|
252
|
+
continue;
|
|
219
253
|
}
|
|
254
|
+
const [valid, coerced] = coerceValue(params[param.name], param.type);
|
|
255
|
+
if (!valid) {
|
|
256
|
+
return {
|
|
257
|
+
ok: false,
|
|
258
|
+
error: `Invalid type for parameter '${param.name}': expected ${param.type}, got ${describeType(params[param.name])}.`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (param.enum && param.enum.length > 0 && !param.enum.includes(String(coerced))) {
|
|
262
|
+
return {
|
|
263
|
+
ok: false,
|
|
264
|
+
error: `Invalid value for parameter '${param.name}': '${String(coerced)}' is not allowed. Valid values: ${param.enum.join(", ")}.`,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
out[param.name] = coerced;
|
|
220
268
|
}
|
|
221
|
-
return
|
|
269
|
+
return { ok: true, params: out };
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Validate tool parameters (legacy boolean/message form; delegates to
|
|
273
|
+
* validateAndCoerce).
|
|
274
|
+
*/
|
|
275
|
+
validateParameters(toolName, params) {
|
|
276
|
+
const r = this.validateAndCoerce(toolName, params);
|
|
277
|
+
return [r.ok, r.error || ""];
|
|
222
278
|
}
|
|
223
279
|
/**
|
|
224
280
|
* Execute a tool with retry support
|
|
@@ -241,6 +297,17 @@ class ToolRegistry extends events_1.EventEmitter {
|
|
|
241
297
|
error: `Tool ${toolName} is temporarily unavailable (circuit breaker open)`,
|
|
242
298
|
};
|
|
243
299
|
}
|
|
300
|
+
// Validate + coerce inputs against the schema BEFORE cache/execute, so the
|
|
301
|
+
// handler and the cache key both use clean, typed values.
|
|
302
|
+
const validated = this.validateAndCoerce(toolName, params);
|
|
303
|
+
if (!validated.ok) {
|
|
304
|
+
return {
|
|
305
|
+
success: false,
|
|
306
|
+
result: "",
|
|
307
|
+
error: validated.error,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
params = validated.params;
|
|
244
311
|
// Check cache
|
|
245
312
|
if (tool.cacheable) {
|
|
246
313
|
const cacheKey = stableStringify(params);
|
|
@@ -254,15 +321,6 @@ class ToolRegistry extends events_1.EventEmitter {
|
|
|
254
321
|
};
|
|
255
322
|
}
|
|
256
323
|
}
|
|
257
|
-
// Validate parameters
|
|
258
|
-
const [valid, error] = this.validateParameters(toolName, params);
|
|
259
|
-
if (!valid) {
|
|
260
|
-
return {
|
|
261
|
-
success: false,
|
|
262
|
-
result: "",
|
|
263
|
-
error,
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
324
|
// Execute with retries
|
|
267
325
|
const maxRetries = tool.maxRetries ?? DEFAULT_RETRIES;
|
|
268
326
|
const retryDelay = (tool.retryDelay ?? DEFAULT_RETRY_DELAY) * 1000;
|
|
@@ -294,6 +352,13 @@ class ToolRegistry extends events_1.EventEmitter {
|
|
|
294
352
|
if (timer)
|
|
295
353
|
clearTimeout(timer);
|
|
296
354
|
}
|
|
355
|
+
// Output guard: a non-null message means the result is invalid. Throw so
|
|
356
|
+
// it flows through the same retry + breaker path as any other failure.
|
|
357
|
+
if (tool.validateOutput) {
|
|
358
|
+
const outErr = tool.validateOutput(result, params);
|
|
359
|
+
if (outErr)
|
|
360
|
+
throw new Error(`invalid tool output: ${outErr}`);
|
|
361
|
+
}
|
|
297
362
|
const duration = Date.now() - startTime;
|
|
298
363
|
// Cache result
|
|
299
364
|
if (tool.cacheable) {
|
package/dist/core/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"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"}
|