@vextlabs/theron-cli 0.3.0 → 0.4.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/dist/api.d.ts +8 -0
- package/dist/api.js +3 -0
- package/dist/api.js.map +1 -1
- package/dist/auth.js +51 -1
- package/dist/auth.js.map +1 -1
- package/dist/banner.js +3 -2
- package/dist/banner.js.map +1 -1
- package/dist/checkpoints.d.ts +32 -0
- package/dist/checkpoints.js +61 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/index.js +59 -4
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +61 -0
- package/dist/input.js +574 -0
- package/dist/input.js.map +1 -0
- package/dist/profiles/index.js +5 -0
- package/dist/profiles/index.js.map +1 -1
- package/dist/profiles/methodologies/operate_domains.d.ts +8 -0
- package/dist/profiles/methodologies/operate_domains.js +1239 -0
- package/dist/profiles/methodologies/operate_domains.js.map +1 -0
- package/dist/profiles/seeds.js +57 -36
- package/dist/profiles/seeds.js.map +1 -1
- package/dist/receipt.d.ts +17 -0
- package/dist/receipt.js +46 -0
- package/dist/receipt.js.map +1 -0
- package/dist/render.d.ts +4 -1
- package/dist/render.js +95 -28
- package/dist/render.js.map +1 -1
- package/dist/repl.d.ts +8 -1
- package/dist/repl.js +420 -62
- package/dist/repl.js.map +1 -1
- package/dist/sessions.d.ts +14 -0
- package/dist/sessions.js +100 -0
- package/dist/sessions.js.map +1 -1
- package/dist/ship.d.ts +2 -0
- package/dist/ship.js +62 -0
- package/dist/ship.js.map +1 -0
- package/dist/skills/catalog.d.ts +13 -0
- package/dist/skills/catalog.js +86 -0
- package/dist/skills/catalog.js.map +1 -0
- package/dist/tools/bash.js +81 -14
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.js +21 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/glob.js +4 -1
- package/dist/tools/glob.js.map +1 -1
- package/dist/tools/grep.d.ts +5 -0
- package/dist/tools/grep.js +101 -2
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.d.ts +22 -0
- package/dist/tools/index.js +177 -41
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ls.d.ts +3 -0
- package/dist/tools/ls.js +23 -12
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/multiedit.d.ts +12 -0
- package/dist/tools/multiedit.js +79 -0
- package/dist/tools/multiedit.js.map +1 -0
- package/dist/tools/stoa.d.ts +1 -1
- package/dist/tools/stoa.js +7 -3
- package/dist/tools/stoa.js.map +1 -1
- package/dist/tools/task.d.ts +9 -0
- package/dist/tools/task.js +166 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todowrite.d.ts +12 -0
- package/dist/tools/todowrite.js +38 -0
- package/dist/tools/todowrite.js.map +1 -0
- package/dist/tools/webfetch.d.ts +6 -0
- package/dist/tools/webfetch.js +98 -0
- package/dist/tools/webfetch.js.map +1 -0
- package/dist/tools/websearch.d.ts +7 -0
- package/dist/tools/websearch.js +83 -0
- package/dist/tools/websearch.js.map +1 -0
- package/dist/tools/write.js +17 -1
- package/dist/tools/write.js.map +1 -1
- package/dist/verifiers/confidence_marked.d.ts +2 -0
- package/dist/verifiers/confidence_marked.js +49 -0
- package/dist/verifiers/confidence_marked.js.map +1 -0
- package/dist/verifiers/disclaimer_gate.d.ts +2 -0
- package/dist/verifiers/disclaimer_gate.js +57 -0
- package/dist/verifiers/disclaimer_gate.js.map +1 -0
- package/dist/verifiers/index.d.ts +5 -0
- package/dist/verifiers/index.js +20 -7
- package/dist/verifiers/index.js.map +1 -1
- package/dist/verifiers/lint.js +4 -3
- package/dist/verifiers/lint.js.map +1 -1
- package/dist/verifiers/promoted_kernels.d.ts +8 -0
- package/dist/verifiers/promoted_kernels.js +190 -0
- package/dist/verifiers/promoted_kernels.js.map +1 -0
- package/dist/verifiers/source_gate.js +2 -3
- package/dist/verifiers/source_gate.js.map +1 -1
- package/dist/verifiers/test_smoke.js +30 -0
- package/dist/verifiers/test_smoke.js.map +1 -1
- package/dist/verifiers/types.d.ts +3 -0
- package/package.json +4 -2
- package/skills/README.md +123 -0
- package/skills/ab-test.md +89 -0
- package/skills/api-design.md +175 -0
- package/skills/architecture-design.md +185 -0
- package/skills/business-case.md +77 -0
- package/skills/causal-inference.md +77 -0
- package/skills/clinical-guideline.md +98 -0
- package/skills/code-review.md +98 -0
- package/skills/cold-outreach.md +268 -0
- package/skills/competitive-teardown.md +223 -0
- package/skills/component-spec.md +121 -0
- package/skills/content-calendar.md +280 -0
- package/skills/contract-review.md +155 -0
- package/skills/data-analysis.md +187 -0
- package/skills/debug.md +91 -0
- package/skills/design-audit.md +121 -0
- package/skills/differential-diagnosis.md +79 -0
- package/skills/discovery-call.md +206 -0
- package/skills/edit-pass.md +80 -0
- package/skills/engineering-calc.md +101 -0
- package/skills/estimate.md +70 -0
- package/skills/experiment-design.md +105 -0
- package/skills/fact-check.md +82 -0
- package/skills/financial-model.md +104 -0
- package/skills/grant-proposal.md +93 -0
- package/skills/harmony-analysis.md +93 -0
- package/skills/hypothesis-generation.md +99 -0
- package/skills/incident-response.md +134 -0
- package/skills/interview-loop.md +62 -0
- package/skills/job-scorecard.md +92 -0
- package/skills/kb-article.md +174 -0
- package/skills/launch-plan.md +85 -0
- package/skills/lease-review.md +93 -0
- package/skills/lesson-plan.md +198 -0
- package/skills/literature-review.md +69 -0
- package/skills/market-entry.md +137 -0
- package/skills/market-sizing.md +159 -0
- package/skills/meta-analysis.md +140 -0
- package/skills/migrate.md +117 -0
- package/skills/optimize.md +88 -0
- package/skills/options-strategy.md +166 -0
- package/skills/peer-review.md +96 -0
- package/skills/pentest-plan.md +193 -0
- package/skills/pitch-review.md +132 -0
- package/skills/plan.md +88 -0
- package/skills/policy-brief.md +124 -0
- package/skills/positioning.md +192 -0
- package/skills/postmortem.md +168 -0
- package/skills/prd.md +105 -0
- package/skills/prioritize.md +162 -0
- package/skills/proof.md +91 -0
- package/skills/property-underwrite.md +159 -0
- package/skills/recipe-develop.md +109 -0
- package/skills/red-team.md +142 -0
- package/skills/refactor.md +58 -0
- package/skills/reflection-session.md +115 -0
- package/skills/regulatory-compliance.md +136 -0
- package/skills/reproduce.md +87 -0
- package/skills/runbook.md +344 -0
- package/skills/security-audit.md +154 -0
- package/skills/seo-brief.md +201 -0
- package/skills/sql-query.md +161 -0
- package/skills/story-craft.md +163 -0
- package/skills/tdd.md +59 -0
- package/skills/term-sheet.md +298 -0
- package/skills/theory-of-change.md +88 -0
- package/skills/threat-model.md +104 -0
- package/skills/ticket-triage.md +200 -0
- package/skills/tolerance-analysis.md +149 -0
- package/skills/training-program.md +151 -0
- package/skills/translate.md +64 -0
- package/skills/unit-economics.md +238 -0
- package/skills/valuation.md +112 -0
- package/skills/write-tests.md +77 -0
package/dist/tools/index.js
CHANGED
|
@@ -11,7 +11,18 @@ import { execBash } from "./bash.js";
|
|
|
11
11
|
import { execGlob } from "./glob.js";
|
|
12
12
|
import { execGrep } from "./grep.js";
|
|
13
13
|
import { execLs } from "./ls.js";
|
|
14
|
+
import { execMultiEdit } from "./multiedit.js";
|
|
15
|
+
import { execWebFetch } from "./webfetch.js";
|
|
16
|
+
import { execWebSearch } from "./websearch.js";
|
|
17
|
+
import { execTask } from "./task.js";
|
|
18
|
+
import { execTodoWrite } from "./todowrite.js";
|
|
14
19
|
import { execStoa, STOA_TOOL_DESCRIBE, STOA_TOOL_SCHEMA } from "./stoa.js";
|
|
20
|
+
import { buildLocalToolSchemas, MUTATING_LOCAL_TOOLS } from "@vextlabs/theron-agent-sdk";
|
|
21
|
+
let _loadedSkills = [];
|
|
22
|
+
/** Called by repl.ts after loadAllMarkdownSkills() resolves. */
|
|
23
|
+
export function setLoadedSkills(skills) {
|
|
24
|
+
_loadedSkills = skills;
|
|
25
|
+
}
|
|
15
26
|
export const TOOL_REGISTRY = {
|
|
16
27
|
Read: {
|
|
17
28
|
name: "Read",
|
|
@@ -64,125 +75,250 @@ export const TOOL_REGISTRY = {
|
|
|
64
75
|
execute: (args, ctx) => execStoa(args, ctx),
|
|
65
76
|
describe: STOA_TOOL_DESCRIBE,
|
|
66
77
|
},
|
|
78
|
+
MultiEdit: {
|
|
79
|
+
name: "MultiEdit",
|
|
80
|
+
confirmPolicy: "always",
|
|
81
|
+
execute: (args, ctx) => execMultiEdit(args, ctx),
|
|
82
|
+
describe: (args) => `MultiEdit ${args.file_path}`,
|
|
83
|
+
},
|
|
84
|
+
WebFetch: {
|
|
85
|
+
name: "WebFetch",
|
|
86
|
+
confirmPolicy: "never",
|
|
87
|
+
execute: (args, ctx) => execWebFetch(args, ctx),
|
|
88
|
+
describe: (args) => `Fetching ${args.url}`,
|
|
89
|
+
},
|
|
90
|
+
WebSearch: {
|
|
91
|
+
name: "WebSearch",
|
|
92
|
+
confirmPolicy: "never",
|
|
93
|
+
execute: (args, ctx) => execWebSearch(args, ctx),
|
|
94
|
+
describe: (args) => `Searching: ${args.query}`,
|
|
95
|
+
},
|
|
96
|
+
Task: {
|
|
97
|
+
name: "Task",
|
|
98
|
+
confirmPolicy: "always",
|
|
99
|
+
execute: (args, ctx) => execTask(args, ctx),
|
|
100
|
+
describe: (args) => `Task: ${args.description || args.prompt?.slice(0, 60)}`,
|
|
101
|
+
},
|
|
102
|
+
TodoWrite: {
|
|
103
|
+
name: "TodoWrite",
|
|
104
|
+
confirmPolicy: "never",
|
|
105
|
+
execute: (args, ctx) => execTodoWrite(args, ctx),
|
|
106
|
+
describe: () => `Updating todo list`,
|
|
107
|
+
},
|
|
108
|
+
ToolSearch: {
|
|
109
|
+
name: "ToolSearch",
|
|
110
|
+
confirmPolicy: "never",
|
|
111
|
+
execute: async (args, ctx) => {
|
|
112
|
+
const query = typeof args.query === "string" ? args.query.trim() : "";
|
|
113
|
+
if (!query)
|
|
114
|
+
return "[error] query is required.";
|
|
115
|
+
if (!ctx.apiUrl)
|
|
116
|
+
return "[error] apiUrl not configured.";
|
|
117
|
+
try {
|
|
118
|
+
const res = await fetch(`${ctx.apiUrl.replace(/\/$/, "")}/api/tools/search?q=${encodeURIComponent(query)}&surface=cli`, {
|
|
119
|
+
headers: ctx.apiKey ? { authorization: `Bearer ${ctx.apiKey}` } : {},
|
|
120
|
+
signal: AbortSignal.timeout(10_000),
|
|
121
|
+
});
|
|
122
|
+
if (!res.ok)
|
|
123
|
+
return `[error] /api/tools/search returned ${res.status}.`;
|
|
124
|
+
const data = (await res.json());
|
|
125
|
+
if (!data.tools || data.tools.length === 0) {
|
|
126
|
+
return `No tools found matching "${query}".`;
|
|
127
|
+
}
|
|
128
|
+
const lines = data.tools.map((t) => `- ${t.name}: ${t.description}`);
|
|
129
|
+
return `Found ${data.tools.length} tool(s) matching "${query}":\n${lines.join("\n")}\n\nCall the tool by name in your next turn.`;
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
return `[error] ToolSearch failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
describe: (args) => `Searching tools: ${args.query}`,
|
|
136
|
+
},
|
|
137
|
+
/** Skill — look up an installed CLI skill by name and return its body so the
|
|
138
|
+
* model can see the instruction pack and use it in-context. Skills are
|
|
139
|
+
* user-defined packs stored in ~/.theron/skills/ or .theron/skills/. */
|
|
140
|
+
Skill: {
|
|
141
|
+
name: "Skill",
|
|
142
|
+
confirmPolicy: "never",
|
|
143
|
+
execute: async (args) => {
|
|
144
|
+
const name = typeof args.name === "string" ? args.name.toLowerCase().trim() : "";
|
|
145
|
+
if (!name) {
|
|
146
|
+
if (_loadedSkills.length === 0)
|
|
147
|
+
return "No skills are currently loaded. Add SKILL.md files to ~/.theron/skills/ or .theron/skills/.";
|
|
148
|
+
const list = _loadedSkills.map((s) => `- ${s.name}: ${s.description}`).join("\n");
|
|
149
|
+
return `Loaded skills:\n${list}`;
|
|
150
|
+
}
|
|
151
|
+
const skill = _loadedSkills.find((s) => s.name === name);
|
|
152
|
+
if (!skill) {
|
|
153
|
+
const available = _loadedSkills.length > 0
|
|
154
|
+
? _loadedSkills.map((s) => s.name).join(", ")
|
|
155
|
+
: "(none)";
|
|
156
|
+
return `[error] Skill '${name}' not found. Available: ${available}`;
|
|
157
|
+
}
|
|
158
|
+
const toolNote = skill.allowedTools && skill.allowedTools.length > 0
|
|
159
|
+
? `\n\nPrefer these tools for this skill: ${skill.allowedTools.join(", ")}`
|
|
160
|
+
: "";
|
|
161
|
+
const extra = typeof args.args === "string" && args.args.trim() ? `\n\nArgs: ${args.args.trim()}` : "";
|
|
162
|
+
return `Skill: ${skill.name}\nSource: ${skill.source}\n\n${skill.body}${toolNote}${extra}`;
|
|
163
|
+
},
|
|
164
|
+
describe: (args) => `Skill: ${args.name ?? "(list)"}`,
|
|
165
|
+
},
|
|
67
166
|
};
|
|
167
|
+
// The 7 shared local-tool schemas come from the canonical contract in
|
|
168
|
+
// @vextlabs/theron-agent-sdk (single source of truth, shared with theron-vscode).
|
|
169
|
+
// The CLI supplies its own surface-specific descriptions; Stoa is CLI-only.
|
|
68
170
|
export const TOOL_SCHEMAS = [
|
|
171
|
+
...buildLocalToolSchemas({
|
|
172
|
+
Read: "Read a file from the user's local working directory. Returns the file contents as text. Use offset/limit to page through large files (1-indexed lines). Errors if the path is outside the repo or doesn't exist.",
|
|
173
|
+
Write: "Write a file to the user's local working directory. Creates or overwrites. Asks the user for confirmation before each write unless --yes is passed.",
|
|
174
|
+
Edit: "Replace an exact substring in a file. old_string must appear EXACTLY ONCE (or set replace_all=true). The CLI shows a diff and asks for confirmation unless --yes.",
|
|
175
|
+
Bash: "Run a shell command in the user's working directory. Returns stdout + stderr + exit code. Asks for confirmation unless --yes. Has a default 120s timeout.",
|
|
176
|
+
Glob: "Find files by glob pattern. Returns paths sorted by mtime descending. Use to locate files when you don't know exact names.",
|
|
177
|
+
Grep: "Search file contents with a regex. Returns matching lines with file:line prefixes. Use for 'where is this defined' / 'who calls X' questions.",
|
|
178
|
+
LS: "List files and directories in a path (single level, not recursive).",
|
|
179
|
+
}),
|
|
180
|
+
STOA_TOOL_SCHEMA,
|
|
69
181
|
{
|
|
70
182
|
type: "function",
|
|
71
183
|
function: {
|
|
72
|
-
name: "
|
|
73
|
-
description: "
|
|
184
|
+
name: "MultiEdit",
|
|
185
|
+
description: "Apply multiple exact-substring replacements to a single file in one atomic operation. All edits are validated before any write occurs — a missing or ambiguous old_string fails the entire batch early. Use when you need to make several related edits to one file.",
|
|
74
186
|
parameters: {
|
|
75
187
|
type: "object",
|
|
76
188
|
properties: {
|
|
77
|
-
file_path: { type: "string", description: "Absolute or
|
|
78
|
-
|
|
79
|
-
|
|
189
|
+
file_path: { type: "string", description: "Absolute or cwd-relative path to the file." },
|
|
190
|
+
edits: {
|
|
191
|
+
type: "array",
|
|
192
|
+
description: "Ordered list of edits. Applied in sequence; each edit sees the result of the previous ones.",
|
|
193
|
+
items: {
|
|
194
|
+
type: "object",
|
|
195
|
+
properties: {
|
|
196
|
+
old_string: { type: "string", description: "Exact substring to replace. Must be unique (or set replace_all=true)." },
|
|
197
|
+
new_string: { type: "string", description: "Replacement text." },
|
|
198
|
+
replace_all: { type: "boolean", description: "Replace all occurrences (default false)." },
|
|
199
|
+
},
|
|
200
|
+
required: ["old_string", "new_string"],
|
|
201
|
+
},
|
|
202
|
+
},
|
|
80
203
|
},
|
|
81
|
-
required: ["file_path"],
|
|
204
|
+
required: ["file_path", "edits"],
|
|
82
205
|
},
|
|
83
206
|
},
|
|
84
207
|
},
|
|
85
208
|
{
|
|
86
209
|
type: "function",
|
|
87
210
|
function: {
|
|
88
|
-
name: "
|
|
89
|
-
description: "
|
|
211
|
+
name: "WebFetch",
|
|
212
|
+
description: "Fetch a URL and return its text content (HTML stripped to prose). 15s timeout. Content is truncated to maxBytes. file://, localhost, and private IP ranges are rejected.",
|
|
90
213
|
parameters: {
|
|
91
214
|
type: "object",
|
|
92
215
|
properties: {
|
|
93
|
-
|
|
94
|
-
content: { type: "string", description: "Full file contents — overwrites whatever was there." },
|
|
216
|
+
url: { type: "string", description: "The URL to fetch (http: or https: only)." },
|
|
95
217
|
},
|
|
96
|
-
required: ["
|
|
218
|
+
required: ["url"],
|
|
97
219
|
},
|
|
98
220
|
},
|
|
99
221
|
},
|
|
100
222
|
{
|
|
101
223
|
type: "function",
|
|
102
224
|
function: {
|
|
103
|
-
name: "
|
|
104
|
-
description: "
|
|
225
|
+
name: "WebSearch",
|
|
226
|
+
description: "Search the web via DuckDuckGo and return the top results as title + URL pairs. No API key required.",
|
|
105
227
|
parameters: {
|
|
106
228
|
type: "object",
|
|
107
229
|
properties: {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
new_string: { type: "string" },
|
|
111
|
-
replace_all: { type: "boolean", default: false },
|
|
230
|
+
query: { type: "string", description: "The search query." },
|
|
231
|
+
max_results: { type: "number", description: "Maximum results to return (default 10, max 20)." },
|
|
112
232
|
},
|
|
113
|
-
required: ["
|
|
233
|
+
required: ["query"],
|
|
114
234
|
},
|
|
115
235
|
},
|
|
116
236
|
},
|
|
117
237
|
{
|
|
118
238
|
type: "function",
|
|
119
239
|
function: {
|
|
120
|
-
name: "
|
|
121
|
-
description: "
|
|
240
|
+
name: "Task",
|
|
241
|
+
description: "Spawn a bounded read-only research subagent. The subagent can only use Read/Grep/Glob/LS — no writes, no shell, no web. Times out after timeout_seconds (default 300). Use for parallel investigation or complex read-only research.",
|
|
122
242
|
parameters: {
|
|
123
243
|
type: "object",
|
|
124
244
|
properties: {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
245
|
+
description: { type: "string", description: "Short label for the task (shown in terminal)." },
|
|
246
|
+
prompt: { type: "string", description: "The full prompt to send the subagent." },
|
|
247
|
+
timeout_seconds: { type: "number", description: "Aggregate wall-clock timeout (default 300)." },
|
|
128
248
|
},
|
|
129
|
-
required: ["
|
|
249
|
+
required: ["description", "prompt"],
|
|
130
250
|
},
|
|
131
251
|
},
|
|
132
252
|
},
|
|
133
253
|
{
|
|
134
254
|
type: "function",
|
|
135
255
|
function: {
|
|
136
|
-
name: "
|
|
137
|
-
description: "
|
|
256
|
+
name: "TodoWrite",
|
|
257
|
+
description: "Maintain a structured task list for the current session. Replaces the full list with the provided array. Each item has content (string), status (pending/in_progress/completed), and optional activeForm.",
|
|
138
258
|
parameters: {
|
|
139
259
|
type: "object",
|
|
140
260
|
properties: {
|
|
141
|
-
|
|
142
|
-
|
|
261
|
+
todos: {
|
|
262
|
+
type: "array",
|
|
263
|
+
items: {
|
|
264
|
+
type: "object",
|
|
265
|
+
properties: {
|
|
266
|
+
content: { type: "string" },
|
|
267
|
+
status: { type: "string", enum: ["pending", "in_progress", "completed"] },
|
|
268
|
+
activeForm: { type: "string" },
|
|
269
|
+
},
|
|
270
|
+
required: ["content", "status"],
|
|
271
|
+
},
|
|
272
|
+
},
|
|
143
273
|
},
|
|
144
|
-
required: ["
|
|
274
|
+
required: ["todos"],
|
|
145
275
|
},
|
|
146
276
|
},
|
|
147
277
|
},
|
|
148
278
|
{
|
|
149
279
|
type: "function",
|
|
150
280
|
function: {
|
|
151
|
-
name: "
|
|
152
|
-
description: "Search
|
|
281
|
+
name: "ToolSearch",
|
|
282
|
+
description: "Search for available tools by keyword. Returns matching tool names and descriptions. Use this when you need a tool that isn't in the base set (Read, Write, Edit, Bash, Glob, Grep, LS, Stoa). The returned tools can be called by name in the next turn.",
|
|
153
283
|
parameters: {
|
|
154
284
|
type: "object",
|
|
155
285
|
properties: {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
286
|
+
query: {
|
|
287
|
+
type: "string",
|
|
288
|
+
description: "Search query — a keyword or phrase describing what you want to do (e.g. 'send email', 'create calendar event', 'search trademark').",
|
|
289
|
+
},
|
|
160
290
|
},
|
|
161
|
-
required: ["
|
|
291
|
+
required: ["query"],
|
|
162
292
|
},
|
|
163
293
|
},
|
|
164
294
|
},
|
|
165
295
|
{
|
|
166
296
|
type: "function",
|
|
167
297
|
function: {
|
|
168
|
-
name: "
|
|
169
|
-
description: "
|
|
298
|
+
name: "Skill",
|
|
299
|
+
description: "Look up an installed CLI skill by name and return its instruction body. Skills are user-defined instruction packs stored in ~/.theron/skills/ or .theron/skills/. Omit 'name' to list all loaded skills.",
|
|
170
300
|
parameters: {
|
|
171
301
|
type: "object",
|
|
172
302
|
properties: {
|
|
173
|
-
|
|
303
|
+
name: {
|
|
304
|
+
type: "string",
|
|
305
|
+
description: "Skill slug (e.g. 'deep-research'). Omit to list all.",
|
|
306
|
+
},
|
|
307
|
+
args: {
|
|
308
|
+
type: "string",
|
|
309
|
+
description: "Optional arguments appended to the skill body.",
|
|
310
|
+
},
|
|
174
311
|
},
|
|
175
312
|
},
|
|
176
313
|
},
|
|
177
314
|
},
|
|
178
|
-
STOA_TOOL_SCHEMA,
|
|
179
315
|
];
|
|
180
316
|
/** Tool names that can MUTATE the user's machine or hit a real SaaS.
|
|
181
317
|
* Plan mode hard-denies these at the executor (see repl.ts) so no write
|
|
182
318
|
* can run even with --yes. Stoa is included because its caps cause real
|
|
183
319
|
* side effects; Bash because a shell can write/delete. */
|
|
184
320
|
export const MUTATING_TOOLS = new Set([
|
|
185
|
-
|
|
321
|
+
...MUTATING_LOCAL_TOOLS, "Stoa", "MultiEdit", "Task",
|
|
186
322
|
]);
|
|
187
323
|
/** The read-only subset of TOOL_SCHEMAS sent to the model in plan mode.
|
|
188
324
|
* Filtering the schema makes the model LESS likely to even attempt a
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,sEAAsE;AACtE,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,gDAAgD;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,sEAAsE;AACtE,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,gDAAgD;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAWzF,IAAI,aAAa,GAAkB,EAAE,CAAC;AACtC,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AA6CD,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAA8D,EAAE,GAAG,CAAC;QACrG,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE;KAChD;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,IAA8C,EAAE,GAAG,CAAC;QACtF,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE;KAChD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAA4F,EAAE,GAAG,CAAC;QACnI,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE;KAChD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAmE,EAAE,GAAG,CAAC;QAC1G,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAa,IAAI,CAAC,WAAsB,IAAK,IAAI,CAAC,OAAkB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;KACzG;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAA0C,EAAE,GAAG,CAAC;QACjF,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;KAC3C;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAqF,EAAE,GAAG,CAAC;QAC5H,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAU,IAAI,CAAC,OAAkB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;KACvE;IACD,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAyB,EAAE,GAAG,CAAC;QAC9D,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAY,IAAI,CAAC,IAAe,IAAI,GAAG,EAAE;KAC9D;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,gEAAgE;QAChE,+DAA+D;QAC/D,oDAAoD;QACpD,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAuD,EAAE,GAAG,CAAC;QAC9F,QAAQ,EAAE,kBAAkB;KAC7B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAA8G,EAAE,GAAG,CAAC;QAC1J,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE;KAClD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,IAAuB,EAAE,GAAG,CAAC;QAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE;KAC3C;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAA+C,EAAE,GAAG,CAAC;QAC3F,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE;KAC/C;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAyE,EAAE,GAAG,CAAC;QAChH,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAU,IAAI,CAAC,WAAsB,IAAK,IAAI,CAAC,MAAiB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;KACrG;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAAmH,EAAE,GAAG,CAAC;QAC/J,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB;KACrC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,KAAK;gBAAE,OAAO,4BAA4B,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,OAAO,gCAAgC,CAAC;YACzD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAC9F;oBACE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;oBACpE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;iBACpC,CACF,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,OAAO,sCAAsC,GAAG,CAAC,MAAM,GAAG,CAAC;gBACxE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkF,CAAC;gBACjH,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,4BAA4B,KAAK,IAAI,CAAC;gBAC/C,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAChC,CAAC;gBACF,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,sBAAsB,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAAC;YACpI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,IAAI,CAAC,KAAK,EAAE;KACrD;IACD;;6EAEyE;IACzE,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,OAAO;QACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,6FAA6F,CAAC;gBACrI,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClF,OAAO,mBAAmB,IAAI,EAAE,CAAC;YACnC,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;oBACxC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7C,CAAC,CAAC,QAAQ,CAAC;gBACb,OAAO,kBAAkB,IAAI,2BAA2B,SAAS,EAAE,CAAC;YACtE,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAClE,CAAC,CAAC,0CAA0C,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3E,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,OAAO,UAAU,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC;QAC7F,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;KACtD;CACF,CAAC;AAEF,sEAAsE;AACtE,kFAAkF;AAClF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC,GAAG,qBAAqB,CAAC;QACvB,IAAI,EAAE,kNAAkN;QACxN,KAAK,EAAE,qJAAqJ;QAC5J,IAAI,EAAE,mKAAmK;QACzK,IAAI,EAAE,2JAA2J;QACjK,IAAI,EAAE,4HAA4H;QAClI,IAAI,EAAE,+IAA+I;QACrJ,EAAE,EAAE,qEAAqE;KAC1E,CAAC;IACF,gBAAgB;IAChB;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,sQAAsQ;YACnR,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;oBACxF,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,6FAA6F;wBAC1G,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE;gCACpH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gCAChE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0CAA0C,EAAE;6BAC1F;4BACD,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;yBACvC;qBACF;iBACF;gBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;aACjC;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,0KAA0K;YACvL,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;iBACjF;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,qGAAqG;YAClH,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;oBAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;iBAChG;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,sOAAsO;YACnP,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;oBAC7F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;oBAChF,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;iBAChG;gBACD,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;aACpC;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,2MAA2M;YACxN,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE;gCACzE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC/B;4BACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;yBAChC;qBACF;iBACF;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,2PAA2P;YACxQ,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,qIAAqI;qBACnJ;iBACF;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,0MAA0M;YACvN,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sDAAsD;qBACpE;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,gDAAgD;qBAC9D;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF;;;2DAG2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,GAAG,oBAAoB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CACrD,CAAC,CAAC;AAEH;;wEAEwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAc,YAAY,CAAC,MAAM,CACjE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC5C,CAAC"}
|
package/dist/tools/ls.d.ts
CHANGED
package/dist/tools/ls.js
CHANGED
|
@@ -1,23 +1,34 @@
|
|
|
1
|
-
// LS tool —
|
|
1
|
+
// LS tool — directory listing with optional dotfile and recursive support.
|
|
2
2
|
import { promises as fs } from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
export async function execLs(args, ctx) {
|
|
5
5
|
const target = args.path
|
|
6
6
|
? (path.isAbsolute(args.path) ? args.path : path.resolve(ctx.cwd, args.path))
|
|
7
7
|
: ctx.cwd;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
catch (err) {
|
|
13
|
-
return `[error] Cannot list ${target}: ${err instanceof Error ? err.message : String(err)}`;
|
|
14
|
-
}
|
|
8
|
+
const showHidden = args.show_hidden === true;
|
|
9
|
+
const recursive = args.recursive === true;
|
|
10
|
+
const maxDepth = (args.depth != null && args.depth >= 0) ? args.depth : (recursive ? 3 : 1);
|
|
15
11
|
const lines = [];
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
async function walk(dir, depth, prefix) {
|
|
13
|
+
let entries;
|
|
14
|
+
try {
|
|
15
|
+
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
lines.push(`${prefix}[error] Cannot list ${dir}: ${err instanceof Error ? err.message : String(err)}`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
for (const e of entries) {
|
|
22
|
+
if (!showHidden && e.name.startsWith("."))
|
|
23
|
+
continue;
|
|
24
|
+
const isDir = e.isDirectory();
|
|
25
|
+
lines.push(`${prefix}${isDir ? "d" : "-"} ${e.name}${isDir ? "/" : ""}`);
|
|
26
|
+
if (isDir && recursive && depth < maxDepth) {
|
|
27
|
+
await walk(path.join(dir, e.name), depth + 1, prefix + " ");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
20
30
|
}
|
|
31
|
+
await walk(target, 1, "");
|
|
21
32
|
if (lines.length === 0)
|
|
22
33
|
return `${target} is empty.`;
|
|
23
34
|
return `${target}\n${lines.join("\n")}`;
|
package/dist/tools/ls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/tools/ls.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/tools/ls.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,GAAgB;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI;QACtB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACZ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IAC1C,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,KAAa,EAAE,MAAc;QAC5D,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,uBAAuB,GAAG,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpD,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzE,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,YAAY,CAAC;IACrD,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ToolContext } from "./index.js";
|
|
2
|
+
interface SingleEdit {
|
|
3
|
+
old_string: string;
|
|
4
|
+
new_string: string;
|
|
5
|
+
replace_all?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface MultiEditArgs {
|
|
8
|
+
file_path: string;
|
|
9
|
+
edits: SingleEdit[];
|
|
10
|
+
}
|
|
11
|
+
export declare function execMultiEdit(args: MultiEditArgs, ctx: ToolContext): Promise<string>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// MultiEdit tool — applies a sequence of exact-substring replacements to a
|
|
2
|
+
// single file in one operation, reading once and writing once. Mirrors the
|
|
3
|
+
// semantics of edit.ts but batches multiple edits. Fails early on the first
|
|
4
|
+
// missing/ambiguous old_string so no partial writes occur.
|
|
5
|
+
import { promises as fs } from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import { sha256Hex, receiptLocalAction } from "../receipt.js";
|
|
8
|
+
import { pushCheckpoint } from "../checkpoints.js";
|
|
9
|
+
function countOccurrences(haystack, needle) {
|
|
10
|
+
if (!needle)
|
|
11
|
+
return 0;
|
|
12
|
+
let count = 0;
|
|
13
|
+
let from = 0;
|
|
14
|
+
while (true) {
|
|
15
|
+
const idx = haystack.indexOf(needle, from);
|
|
16
|
+
if (idx < 0)
|
|
17
|
+
return count;
|
|
18
|
+
count += 1;
|
|
19
|
+
from = idx + needle.length;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export async function execMultiEdit(args, ctx) {
|
|
23
|
+
if (!Array.isArray(args.edits) || args.edits.length === 0) {
|
|
24
|
+
return "[error] edits must be a non-empty array.";
|
|
25
|
+
}
|
|
26
|
+
const target = path.isAbsolute(args.file_path)
|
|
27
|
+
? args.file_path
|
|
28
|
+
: path.resolve(ctx.cwd, args.file_path);
|
|
29
|
+
let original;
|
|
30
|
+
try {
|
|
31
|
+
original = await fs.readFile(target, "utf-8");
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return `[error] Cannot read ${target}: ${err instanceof Error ? err.message : String(err)}`;
|
|
35
|
+
}
|
|
36
|
+
// Snapshot pre-edit content for /rewind.
|
|
37
|
+
try {
|
|
38
|
+
pushCheckpoint(target, original);
|
|
39
|
+
}
|
|
40
|
+
catch { /* never throws */ }
|
|
41
|
+
// Validate ALL edits before touching the file (fail-early).
|
|
42
|
+
let text = original;
|
|
43
|
+
for (let i = 0; i < args.edits.length; i++) {
|
|
44
|
+
const ed = args.edits[i];
|
|
45
|
+
if (ed.old_string === ed.new_string) {
|
|
46
|
+
return `[error] Edit ${i + 1}: old_string === new_string — nothing to change.`;
|
|
47
|
+
}
|
|
48
|
+
const count = countOccurrences(text, ed.old_string);
|
|
49
|
+
if (count === 0) {
|
|
50
|
+
return `[error] Edit ${i + 1}: old_string not found in ${target}.`;
|
|
51
|
+
}
|
|
52
|
+
if (count > 1 && !ed.replace_all) {
|
|
53
|
+
return `[error] Edit ${i + 1}: old_string appears ${count} times. Make it unique or set replace_all=true.`;
|
|
54
|
+
}
|
|
55
|
+
// Apply edit in sequence so subsequent edits see earlier changes.
|
|
56
|
+
if (ed.replace_all) {
|
|
57
|
+
text = text.split(ed.old_string).join(ed.new_string);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const idx = text.indexOf(ed.old_string);
|
|
61
|
+
text = text.slice(0, idx) + ed.new_string + text.slice(idx + ed.old_string.length);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Write once.
|
|
65
|
+
const preSha256 = sha256Hex(original);
|
|
66
|
+
await fs.writeFile(target, text, "utf-8");
|
|
67
|
+
const postSha256 = sha256Hex(text);
|
|
68
|
+
const totalReplacements = args.edits.length;
|
|
69
|
+
const baseResult = `MultiEdit applied ${totalReplacements} edit${totalReplacements === 1 ? "" : "s"} to ${target}.`;
|
|
70
|
+
// Mint a STOA receipt for this multi-edit.
|
|
71
|
+
const verifyUrl = await receiptLocalAction(ctx.apiUrl, ctx.apiKey, "local_multiedit", {
|
|
72
|
+
path: target,
|
|
73
|
+
edit_count: totalReplacements,
|
|
74
|
+
pre_sha256: preSha256,
|
|
75
|
+
post_sha256: postSha256,
|
|
76
|
+
}).catch(() => null);
|
|
77
|
+
return verifyUrl ? baseResult + "\nsigned -- verify: " + verifyUrl : baseResult;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=multiedit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiedit.js","sourceRoot":"","sources":["../../src/tools/multiedit.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/stoa.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ interface StoaArgs {
|
|
|
7
7
|
* spec in the Stoa registry. */
|
|
8
8
|
input: Record<string, unknown>;
|
|
9
9
|
}
|
|
10
|
-
export declare function execStoa(args: StoaArgs,
|
|
10
|
+
export declare function execStoa(args: StoaArgs, ctx: ToolContext): Promise<string>;
|
|
11
11
|
export declare const STOA_TOOL_DESCRIBE: (args: Record<string, unknown>) => string;
|
|
12
12
|
/** OpenAI-compatible function tool def for the Stoa cap proxy. */
|
|
13
13
|
export declare const STOA_TOOL_SCHEMA: {
|
package/dist/tools/stoa.js
CHANGED
|
@@ -15,24 +15,28 @@
|
|
|
15
15
|
// (the CLI displays whatever signature the server provides), so a
|
|
16
16
|
// caller has an auditable record of "Theron did this, here's the proof."
|
|
17
17
|
const DEFAULT_BASE = process.env.THERON_STOA_BASE ?? "https://theron.tryvext.com";
|
|
18
|
-
export async function execStoa(args,
|
|
18
|
+
export async function execStoa(args, ctx) {
|
|
19
19
|
if (typeof args.cap !== "string" || !args.cap.startsWith("urn:stoa:cap:")) {
|
|
20
20
|
throw new Error(`invalid cap URN: ${args.cap}`);
|
|
21
21
|
}
|
|
22
22
|
if (typeof args.input !== "object" || args.input === null) {
|
|
23
23
|
throw new Error("input must be an object");
|
|
24
24
|
}
|
|
25
|
-
const
|
|
25
|
+
const base = ctx.apiUrl || DEFAULT_BASE;
|
|
26
|
+
const url = `${base.replace(/\/$/, "")}/v1/cap`;
|
|
26
27
|
const envelope = {
|
|
27
28
|
stoa: "1",
|
|
28
29
|
cap: args.cap,
|
|
29
30
|
input: args.input,
|
|
30
31
|
};
|
|
32
|
+
const headers = { "content-type": "application/json" };
|
|
33
|
+
if (ctx.apiKey)
|
|
34
|
+
headers["authorization"] = `Bearer ${ctx.apiKey}`;
|
|
31
35
|
let response;
|
|
32
36
|
try {
|
|
33
37
|
response = await fetch(url, {
|
|
34
38
|
method: "POST",
|
|
35
|
-
headers
|
|
39
|
+
headers,
|
|
36
40
|
body: JSON.stringify(envelope),
|
|
37
41
|
});
|
|
38
42
|
}
|
package/dist/tools/stoa.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stoa.js","sourceRoot":"","sources":["../../src/tools/stoa.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,qEAAqE;AACrE,iEAAiE;AACjE,iEAAiE;AACjE,EAAE;AACF,kCAAkC;AAClC,qEAAqE;AACrE,gEAAgE;AAChE,6BAA6B;AAC7B,oEAAoE;AACpE,oDAAoD;AACpD,iEAAiE;AACjE,sEAAsE;AACtE,6EAA6E;AAwB7E,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,4BAA4B,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"stoa.js","sourceRoot":"","sources":["../../src/tools/stoa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ToolContext } from "./index.js";
|
|
2
|
+
interface TaskArgs {
|
|
3
|
+
description: string;
|
|
4
|
+
prompt: string;
|
|
5
|
+
/** Aggregate timeout in seconds across all turns (default 300). */
|
|
6
|
+
timeout_seconds?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function execTask(args: TaskArgs, ctx: ToolContext): Promise<string>;
|
|
9
|
+
export {};
|