neoctl 0.2.5 → 0.2.6

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 (95) hide show
  1. package/README.md +16 -26
  2. package/dist/agents/agent-activity.d.ts +70 -0
  3. package/dist/agents/agent-activity.js +261 -0
  4. package/dist/agents/agent-activity.js.map +1 -0
  5. package/dist/agents/agent-definition.d.ts +7 -0
  6. package/dist/agents/agent-definition.js +44 -1
  7. package/dist/agents/agent-definition.js.map +1 -1
  8. package/dist/agents/agent-report-tool.d.ts +11 -0
  9. package/dist/agents/agent-report-tool.js +50 -0
  10. package/dist/agents/agent-report-tool.js.map +1 -0
  11. package/dist/agents/agent-tool.d.ts +3 -1
  12. package/dist/agents/agent-tool.js +56 -11
  13. package/dist/agents/agent-tool.js.map +1 -1
  14. package/dist/agents/local-agent-task.d.ts +3 -0
  15. package/dist/agents/local-agent-task.js +2 -0
  16. package/dist/agents/local-agent-task.js.map +1 -1
  17. package/dist/agents/smoke-agents.js +131 -7
  18. package/dist/agents/smoke-agents.js.map +1 -1
  19. package/dist/context/prompts.js +4 -0
  20. package/dist/context/prompts.js.map +1 -1
  21. package/dist/core/query-engine.d.ts +3 -1
  22. package/dist/core/query-engine.js +2 -0
  23. package/dist/core/query-engine.js.map +1 -1
  24. package/dist/core/query.d.ts +4 -0
  25. package/dist/core/query.js +10 -1
  26. package/dist/core/query.js.map +1 -1
  27. package/dist/core/run-agent.d.ts +2 -0
  28. package/dist/core/run-agent.js +156 -21
  29. package/dist/core/run-agent.js.map +1 -1
  30. package/dist/core/smoke-core-loop.js +1 -1
  31. package/dist/core/smoke-core-loop.js.map +1 -1
  32. package/dist/index.d.ts +5 -2
  33. package/dist/index.js +5 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/model/anthropic-mapper.js +27 -2
  36. package/dist/model/anthropic-mapper.js.map +1 -1
  37. package/dist/model/config.d.ts +2 -8
  38. package/dist/model/config.js +1 -41
  39. package/dist/model/config.js.map +1 -1
  40. package/dist/model/env.js +6 -11
  41. package/dist/model/env.js.map +1 -1
  42. package/dist/model/model-metadata.json +1 -115
  43. package/dist/model/openai-chat-mapper.js +4 -19
  44. package/dist/model/openai-chat-mapper.js.map +1 -1
  45. package/dist/model/provider-factory.js +0 -32
  46. package/dist/model/provider-factory.js.map +1 -1
  47. package/dist/model/smoke-anthropic-mapper.js +6 -2
  48. package/dist/model/smoke-anthropic-mapper.js.map +1 -1
  49. package/dist/repl/commands.d.ts +8 -0
  50. package/dist/repl/commands.js +35 -1
  51. package/dist/repl/commands.js.map +1 -1
  52. package/dist/repl/index.js +731 -127
  53. package/dist/repl/index.js.map +1 -1
  54. package/dist/secrets/secret-crypto.d.ts +22 -0
  55. package/dist/secrets/secret-crypto.js +58 -0
  56. package/dist/secrets/secret-crypto.js.map +1 -0
  57. package/dist/secrets/secret-redaction.d.ts +8 -0
  58. package/dist/secrets/secret-redaction.js +40 -0
  59. package/dist/secrets/secret-redaction.js.map +1 -0
  60. package/dist/secrets/secret-store.d.ts +28 -0
  61. package/dist/secrets/secret-store.js +158 -0
  62. package/dist/secrets/secret-store.js.map +1 -0
  63. package/dist/secrets/secret-types.d.ts +31 -0
  64. package/dist/secrets/secret-types.js +17 -0
  65. package/dist/secrets/secret-types.js.map +1 -0
  66. package/dist/secrets/smoke-secrets.js +68 -0
  67. package/dist/secrets/smoke-secrets.js.map +1 -0
  68. package/dist/tools/builtins/exec-tool.d.ts +20 -1
  69. package/dist/tools/builtins/exec-tool.js +164 -29
  70. package/dist/tools/builtins/exec-tool.js.map +1 -1
  71. package/dist/tools/builtins/plan-tool.d.ts +1 -0
  72. package/dist/tools/builtins/plan-tool.js +80 -27
  73. package/dist/tools/builtins/plan-tool.js.map +1 -1
  74. package/dist/tools/builtins/secret-tools.d.ts +10 -0
  75. package/dist/tools/builtins/secret-tools.js +75 -0
  76. package/dist/tools/builtins/secret-tools.js.map +1 -0
  77. package/dist/tools/run-tool-use.js +4 -2
  78. package/dist/tools/run-tool-use.js.map +1 -1
  79. package/dist/tools/smoke-tool-system.js +42 -10
  80. package/dist/tools/smoke-tool-system.js.map +1 -1
  81. package/dist/tools/tool.d.ts +3 -0
  82. package/dist/tools/tool.js.map +1 -1
  83. package/dist/web/html.js +1 -1
  84. package/dist/web/index.js +11 -50
  85. package/dist/web/index.js.map +1 -1
  86. package/package.json +2 -2
  87. package/dist/model/deepseek-adapter.d.ts +0 -29
  88. package/dist/model/deepseek-adapter.js +0 -108
  89. package/dist/model/deepseek-adapter.js.map +0 -1
  90. package/dist/model/kimi-adapter.d.ts +0 -29
  91. package/dist/model/kimi-adapter.js +0 -108
  92. package/dist/model/kimi-adapter.js.map +0 -1
  93. package/dist/model/smoke-deepseek-mapper.js +0 -65
  94. package/dist/model/smoke-deepseek-mapper.js.map +0 -1
  95. /package/dist/{model/smoke-deepseek-mapper.d.ts → secrets/smoke-secrets.d.ts} +0 -0
@@ -9,7 +9,7 @@ export function createExecTool(runtime) {
9
9
  return {
10
10
  name: "exec",
11
11
  aliases: ["shell", "bash", "powershell"],
12
- description: "Execute a shell command in the local workspace with full permissions. Use cwd to choose the working directory and timeoutMs/maxOutputChars to bound long commands. Set background=true to run long-lived commands asynchronously and receive a task_id for later polling.",
12
+ description: "Execute a shell command in the local workspace with full permissions. The required description field is shown to the user and should explain what the command is doing. Use cwd to choose the working directory and timeoutMs/maxOutputChars to bound long commands. Set background=true to run long-lived commands asynchronously and receive a task_id for later polling.",
13
13
  inputSchema: {
14
14
  type: "object",
15
15
  properties: {
@@ -27,10 +27,15 @@ export function createExecTool(runtime) {
27
27
  description: "Additional environment variables for the child process.",
28
28
  additionalProperties: true,
29
29
  },
30
- description: { type: "string", description: "Short human-readable description of the command purpose." },
30
+ envSecrets: {
31
+ type: "object",
32
+ description: "Environment variables whose values are resolved from secret keys at tool runtime. The agent sees keys only; values are never returned.",
33
+ additionalProperties: true,
34
+ },
35
+ description: { type: "string", description: "Required user-facing description of what this command is doing and why it is being run." },
31
36
  background: { type: "boolean", description: "If true, run the command in the background and return immediately with a task_id." },
32
37
  },
33
- required: ["command"],
38
+ required: ["command", "description"],
34
39
  additionalProperties: false,
35
40
  },
36
41
  metadata: {
@@ -51,13 +56,16 @@ export function createExecTool(runtime) {
51
56
  maxOutputChars: record.maxOutputChars ?? 40000,
52
57
  shell: record.shell ?? "auto",
53
58
  env: normalizeEnv(record.env),
54
- description: record.description,
59
+ envSecrets: normalizeEnv(record.envSecrets),
60
+ description: record.description ?? "",
55
61
  background: record.background ?? false,
56
62
  };
57
63
  },
58
64
  validateInput(input) {
59
65
  if (!input.command.trim())
60
66
  return { ok: false, message: "exec.command cannot be empty" };
67
+ if (!input.description.trim())
68
+ return { ok: false, message: "exec.description is required and cannot be empty" };
61
69
  if (!Number.isInteger(input.timeoutMs) || input.timeoutMs < 1 || input.timeoutMs > 600000) {
62
70
  return { ok: false, message: "exec.timeoutMs must be between 1 and 600000" };
63
71
  }
@@ -79,8 +87,10 @@ export function createExecTool(runtime) {
79
87
  return { ok: false, output: { error: `exec.cwd does not exist: ${cwd}` } };
80
88
  if (!cwdStat.isDirectory())
81
89
  return { ok: false, output: { error: `exec.cwd is not a directory: ${cwd}` } };
90
+ const env = await resolveEnvSecrets(input.env, input.envSecrets, context);
91
+ const resolvedInput = { ...input, env };
82
92
  if (input.background) {
83
- return launchBackgroundExec(input, cwd, runtime?.taskStore ?? globalTaskStore);
93
+ return launchBackgroundExec(resolvedInput, cwd, runtime?.taskStore ?? globalTaskStore, context.secretRedactions);
84
94
  }
85
95
  const resolvedShell = resolveShell(input.shell);
86
96
  options.onProgress?.({
@@ -95,9 +105,24 @@ export function createExecTool(runtime) {
95
105
  timeoutMs: input.timeoutMs,
96
106
  maxOutputChars: input.maxOutputChars,
97
107
  shell: resolvedShell,
98
- env: input.env,
108
+ env,
99
109
  abortSignal: context.abortSignal,
110
+ detach: runtime?.foregroundDetachRegistry && runtime?.taskStore
111
+ ? {
112
+ toolUseId: context.toolUseId,
113
+ input,
114
+ taskStore: runtime.taskStore,
115
+ registry: runtime.foregroundDetachRegistry,
116
+ }
117
+ : undefined,
100
118
  });
119
+ if (isDetachedExecOutput(output)) {
120
+ return {
121
+ ok: true,
122
+ output,
123
+ summary: `detached to background task ${output.task_id}`,
124
+ };
125
+ }
101
126
  const ok = output.exitCode === 0 && !output.timedOut;
102
127
  return {
103
128
  ok,
@@ -108,7 +133,7 @@ export function createExecTool(runtime) {
108
133
  };
109
134
  }
110
135
  export const execTool = createExecTool();
111
- function launchBackgroundExec(input, cwd, taskStore) {
136
+ function launchBackgroundExec(input, cwd, taskStore, secretRedactions) {
112
137
  const taskId = `exec_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
113
138
  const agentId = `bg_exec_${Date.now().toString(36)}`;
114
139
  const description = input.description ?? `exec: ${input.command.slice(0, 80)}`;
@@ -134,17 +159,20 @@ function launchBackgroundExec(input, cwd, taskStore) {
134
159
  env: input.env,
135
160
  abortSignal: abortController.signal,
136
161
  }).then((output) => {
137
- const ok = output.exitCode === 0 && !output.timedOut;
162
+ if (isDetachedExecOutput(output))
163
+ return;
164
+ const safeOutput = secretRedactions?.redact(output) ?? output;
165
+ const ok = safeOutput.exitCode === 0 && !safeOutput.timedOut;
138
166
  taskStore.complete(taskId, {
139
167
  agent_id: agentId,
140
168
  agent_type: "exec",
141
- content: summarizeExecOutput(output),
142
- total_duration_ms: output.durationMs,
169
+ content: summarizeExecOutput(safeOutput),
170
+ total_duration_ms: safeOutput.durationMs,
143
171
  total_tool_use_count: 0,
144
172
  });
145
173
  const finished = taskStore.get(taskId);
146
174
  if (finished) {
147
- finished.messages.push(createTextMessage("user", `<task-notification agent_id="${agentId}" task_id="${taskId}" status="${ok ? "completed" : "failed"}" type="exec">\n${summarizeExecOutput(output)}\nstdout: ${output.stdout.slice(0, 2000)}\nstderr: ${output.stderr.slice(0, 2000)}\n</task-notification>`));
175
+ finished.messages.push(createTextMessage("user", `<task-notification agent_id="${agentId}" task_id="${taskId}" status="${ok ? "completed" : "failed"}" type="exec">\n${summarizeExecOutput(safeOutput)}\nstdout: ${safeOutput.stdout.slice(0, 2000)}\nstderr: ${safeOutput.stderr.slice(0, 2000)}\n</task-notification>`));
148
176
  finished.notified = false;
149
177
  taskStore.upsert(finished);
150
178
  }
@@ -170,6 +198,8 @@ function runCommand(options) {
170
198
  const stderr = new OutputAccumulator(options.maxOutputChars);
171
199
  let timedOut = false;
172
200
  let settled = false;
201
+ let detached = false;
202
+ let detachCleanup;
173
203
  return new Promise((resolve, reject) => {
174
204
  const child = spawn(options.shell.file, [...options.shell.args, options.command], {
175
205
  cwd: options.cwd,
@@ -189,38 +219,132 @@ function runCommand(options) {
189
219
  child.kill("SIGTERM");
190
220
  };
191
221
  options.abortSignal?.addEventListener("abort", abort, { once: true });
222
+ const buildOutput = (exitCode, signal) => ({
223
+ command: options.command,
224
+ description: options.description,
225
+ cwd: options.cwd,
226
+ shell: options.shell.requested,
227
+ exitCode,
228
+ signal,
229
+ timedOut,
230
+ durationMs: Date.now() - started,
231
+ stdout: stdout.value(),
232
+ stderr: stderr.value(),
233
+ stdoutTruncated: stdout.truncated,
234
+ stderrTruncated: stderr.truncated,
235
+ outputBytes: {
236
+ stdout: stdout.bytes,
237
+ stderr: stderr.bytes,
238
+ },
239
+ });
240
+ const backgroundAbortController = new AbortController();
241
+ const backgroundAbort = () => {
242
+ timedOut = true;
243
+ child.kill("SIGTERM");
244
+ };
245
+ if (options.detach) {
246
+ detachCleanup = options.detach.registry.set({
247
+ toolUseId: options.detach.toolUseId,
248
+ command: options.command,
249
+ description: options.description,
250
+ cwd: options.cwd,
251
+ startedAt: started,
252
+ detach: () => {
253
+ if (settled)
254
+ return { ok: false, message: "exec command already finished" };
255
+ if (detached)
256
+ return { ok: false, message: "exec command already detached" };
257
+ detached = true;
258
+ options.abortSignal?.removeEventListener("abort", abort);
259
+ backgroundAbortController.signal.addEventListener("abort", backgroundAbort, { once: true });
260
+ const launched = createDetachedExecTask(options.detach, backgroundAbortController);
261
+ detachCleanup?.();
262
+ detachCleanup = undefined;
263
+ resolve(launched.output);
264
+ return { ok: true, message: launched.output.message, taskId: launched.taskId, agentId: launched.agentId };
265
+ },
266
+ });
267
+ }
192
268
  child.stdout?.on("data", (chunk) => stdout.push(chunk.toString("utf8")));
193
269
  child.stderr?.on("data", (chunk) => stderr.push(chunk.toString("utf8")));
194
270
  child.on("error", (error) => {
271
+ settled = true;
195
272
  clearTimeout(timeout);
273
+ detachCleanup?.();
196
274
  options.abortSignal?.removeEventListener("abort", abort);
275
+ backgroundAbortController.signal.removeEventListener("abort", backgroundAbort);
276
+ if (detached && options.detach) {
277
+ options.detach.taskStore.fail(resolveDetachedTaskId(options.detach), error instanceof Error ? error.message : String(error));
278
+ return;
279
+ }
197
280
  reject(error);
198
281
  });
199
282
  child.on("close", (exitCode, signal) => {
200
283
  settled = true;
201
284
  clearTimeout(timeout);
285
+ detachCleanup?.();
202
286
  options.abortSignal?.removeEventListener("abort", abort);
203
- resolve({
204
- command: options.command,
205
- description: options.description,
206
- cwd: options.cwd,
207
- shell: options.shell.requested,
208
- exitCode,
209
- signal,
210
- timedOut,
211
- durationMs: Date.now() - started,
212
- stdout: stdout.value(),
213
- stderr: stderr.value(),
214
- stdoutTruncated: stdout.truncated,
215
- stderrTruncated: stderr.truncated,
216
- outputBytes: {
217
- stdout: stdout.bytes,
218
- stderr: stderr.bytes,
219
- },
220
- });
287
+ backgroundAbortController.signal.removeEventListener("abort", backgroundAbort);
288
+ const output = buildOutput(exitCode, signal);
289
+ if (detached && options.detach) {
290
+ completeDetachedExecTask(options.detach.taskStore, resolveDetachedTaskId(options.detach), output);
291
+ return;
292
+ }
293
+ resolve(output);
221
294
  });
222
295
  });
223
296
  }
297
+ function createDetachedExecTask(detach, abortController) {
298
+ const taskId = `exec_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
299
+ const agentId = `bg_exec_${Date.now().toString(36)}`;
300
+ const description = detach.input.description ?? `exec: ${detach.input.command.slice(0, 80)}`;
301
+ detach.taskId = taskId;
302
+ const task = createLocalAgentTask({
303
+ taskId,
304
+ agentId,
305
+ description,
306
+ prompt: detach.input.command,
307
+ type: "exec",
308
+ abortController,
309
+ });
310
+ detach.taskStore.upsert(task);
311
+ detach.taskStore.markRunning(taskId);
312
+ const output = {
313
+ status: "async_launched",
314
+ detachedFromForeground: true,
315
+ task_id: taskId,
316
+ agent_id: agentId,
317
+ description,
318
+ command: detach.input.command,
319
+ output_file: task.outputFile,
320
+ message: "Foreground command detached to background. Use TaskOutput or TaskGet to check status.",
321
+ };
322
+ return { taskId, agentId, output };
323
+ }
324
+ function resolveDetachedTaskId(detach) {
325
+ if (!detach.taskId)
326
+ throw new Error("Detached exec task was not initialized");
327
+ return detach.taskId;
328
+ }
329
+ function completeDetachedExecTask(taskStore, taskId, output) {
330
+ const ok = output.exitCode === 0 && !output.timedOut;
331
+ taskStore.complete(taskId, {
332
+ agent_id: taskStore.get(taskId)?.agentId ?? "bg_exec",
333
+ agent_type: "exec",
334
+ content: summarizeExecOutput(output),
335
+ total_duration_ms: output.durationMs,
336
+ total_tool_use_count: 0,
337
+ });
338
+ const finished = taskStore.get(taskId);
339
+ if (finished) {
340
+ finished.messages.push(createTextMessage("user", `<task-notification agent_id="${finished.agentId}" task_id="${taskId}" status="${ok ? "completed" : "failed"}" type="exec">\n${summarizeExecOutput(output)}\nstdout: ${output.stdout.slice(0, 2000)}\nstderr: ${output.stderr.slice(0, 2000)}\n</task-notification>`));
341
+ finished.notified = false;
342
+ taskStore.upsert(finished);
343
+ }
344
+ }
345
+ function isDetachedExecOutput(output) {
346
+ return "status" in output && output.status === "async_launched" && output.detachedFromForeground === true;
347
+ }
224
348
  class OutputAccumulator {
225
349
  maxChars;
226
350
  bytes = 0;
@@ -274,6 +398,17 @@ function resolveCwd(cwd, context) {
274
398
  return root;
275
399
  return path.isAbsolute(cwd) ? path.normalize(cwd) : path.resolve(root, cwd);
276
400
  }
401
+ async function resolveEnvSecrets(env, envSecrets, context) {
402
+ const resolved = { ...env };
403
+ for (const [envName, secretKey] of Object.entries(envSecrets)) {
404
+ if (!context.secrets)
405
+ throw new Error(`Secret store is not available; cannot resolve envSecrets.${envName}`);
406
+ const value = await context.secrets.resolve(secretKey);
407
+ context.secretRedactions?.record(secretKey, value);
408
+ resolved[envName] = value;
409
+ }
410
+ return resolved;
411
+ }
277
412
  function normalizeEnv(input) {
278
413
  if (!input || typeof input !== "object" || Array.isArray(input))
279
414
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"exec-tool.js","sourceRoot":"","sources":["../../../src/tools/builtins/exec-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec-tool.js","sourceRoot":"","sources":["../../../src/tools/builtins/exec-tool.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export type PlanItemStatus = "pending" | "in_progress" | "completed";
3
3
  export interface PlanItem {
4
4
  description: string;
5
5
  status: PlanItemStatus;
6
+ subitems?: PlanItem[];
6
7
  }
7
8
  export interface PlanToolInput {
8
9
  items: PlanItem[];
@@ -1,6 +1,33 @@
1
+ const PLAN_ITEM_STATUSES = ["pending", "in_progress", "completed"];
2
+ function planItemSchema(depth = 3) {
3
+ const schema = {
4
+ type: "object",
5
+ properties: {
6
+ description: { type: "string", description: "A concise step description." },
7
+ status: {
8
+ type: "string",
9
+ enum: PLAN_ITEM_STATUSES,
10
+ description: "Current status for this step.",
11
+ },
12
+ },
13
+ required: ["description", "status"],
14
+ additionalProperties: false,
15
+ };
16
+ if (depth > 0) {
17
+ schema.properties = {
18
+ ...schema.properties,
19
+ subitems: {
20
+ type: "array",
21
+ description: "Optional ordered sub-steps for this item. Use these when a main item benefits from being split into smaller, trackable tasks.",
22
+ items: planItemSchema(depth - 1),
23
+ },
24
+ };
25
+ }
26
+ return schema;
27
+ }
1
28
  export const planTool = {
2
29
  name: "plan",
3
- description: "Create or update the current task plan. Use this to make multi-step work visible; mark items completed as they are finished.",
30
+ description: "Create or update the current task plan. Use this to make multi-step work visible; mark items completed as they are finished. When implementing a main plan item, you may reasonably split it into subitems to keep progress more detailed and verifiable.",
4
31
  inputSchema: {
5
32
  type: "object",
6
33
  properties: {
@@ -8,20 +35,8 @@ export const planTool = {
8
35
  note: { type: "string", description: "Optional short note about the current plan update." },
9
36
  items: {
10
37
  type: "array",
11
- description: "Ordered plan items. Include the full current plan each time you update it.",
12
- items: {
13
- type: "object",
14
- properties: {
15
- description: { type: "string", description: "A concise step description." },
16
- status: {
17
- type: "string",
18
- enum: ["pending", "in_progress", "completed"],
19
- description: "Current status for this step.",
20
- },
21
- },
22
- required: ["description", "status"],
23
- additionalProperties: false,
24
- },
38
+ description: "Ordered plan items. Include the full current plan each time you update it. Items may include subitems for finer-grained progress tracking.",
39
+ items: planItemSchema(),
25
40
  },
26
41
  },
27
42
  required: ["items"],
@@ -39,28 +54,66 @@ export const planTool = {
39
54
  validateInput(input) {
40
55
  if (!input.items.length)
41
56
  return { ok: false, message: "plan.items must contain at least one item" };
42
- for (const [index, item] of input.items.entries()) {
43
- if (!item.description.trim())
44
- return { ok: false, message: `plan.items[${index}].description cannot be empty` };
45
- }
57
+ const validationError = validatePlanItems(input.items, "plan.items");
58
+ if (validationError)
59
+ return { ok: false, message: validationError };
46
60
  return { ok: true, value: input };
47
61
  },
48
62
  isConcurrencySafe() {
49
63
  return true;
50
64
  },
51
65
  async call(input) {
52
- const completed = input.items.filter((item) => item.status === "completed").length;
53
- const inProgress = input.items.filter((item) => item.status === "in_progress").length;
54
- const pending = input.items.filter((item) => item.status === "pending").length;
66
+ const counts = countPlanItems(input.items);
55
67
  const output = {
56
68
  ...input,
57
- summary: `${completed}/${input.items.length} completed`,
58
- total: input.items.length,
59
- completed,
60
- inProgress,
61
- pending,
69
+ summary: `${counts.completed}/${counts.total} completed`,
70
+ total: counts.total,
71
+ completed: counts.completed,
72
+ inProgress: counts.inProgress,
73
+ pending: counts.pending,
62
74
  };
63
75
  return { ok: true, output };
64
76
  },
65
77
  };
78
+ function countPlanItems(items) {
79
+ const counts = { total: 0, completed: 0, inProgress: 0, pending: 0 };
80
+ for (const item of items) {
81
+ counts.total += 1;
82
+ if (item.status === "completed")
83
+ counts.completed += 1;
84
+ else if (item.status === "in_progress")
85
+ counts.inProgress += 1;
86
+ else
87
+ counts.pending += 1;
88
+ if (item.subitems?.length) {
89
+ const subitemCounts = countPlanItems(item.subitems);
90
+ counts.total += subitemCounts.total;
91
+ counts.completed += subitemCounts.completed;
92
+ counts.inProgress += subitemCounts.inProgress;
93
+ counts.pending += subitemCounts.pending;
94
+ }
95
+ }
96
+ return counts;
97
+ }
98
+ function validatePlanItems(items, path) {
99
+ if (!Array.isArray(items))
100
+ return `${path} must be an array`;
101
+ for (const [index, item] of items.entries()) {
102
+ const itemPath = `${path}[${index}]`;
103
+ if (!item.description.trim())
104
+ return `${itemPath}.description cannot be empty`;
105
+ if (!PLAN_ITEM_STATUSES.includes(item.status))
106
+ return `${itemPath}.status must be one of pending, in_progress, completed`;
107
+ if (item.subitems !== undefined) {
108
+ if (!Array.isArray(item.subitems))
109
+ return `${itemPath}.subitems must be an array`;
110
+ if (item.subitems.length === 0)
111
+ return `${itemPath}.subitems must contain at least one item when provided`;
112
+ const subitemError = validatePlanItems(item.subitems, `${itemPath}.subitems`);
113
+ if (subitemError)
114
+ return subitemError;
115
+ }
116
+ }
117
+ return undefined;
118
+ }
66
119
  //# sourceMappingURL=plan-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-tool.js","sourceRoot":"","sources":["../../../src/tools/builtins/plan-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-tool.js","sourceRoot":"","sources":["../../../src/tools/builtins/plan-tool.ts"],"names":[],"mappings":"AAwBA,MAAM,kBAAkB,GAAqB,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AAErF,SAAS,cAAc,CAAC,KAAK,GAAG,CAAC;IAC/B,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;YAC3E,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,+BAA+B;aAC7C;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;QACnC,oBAAoB,EAAE,KAAK;KAC5B,CAAC;IACF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,CAAC,UAAU,GAAG;YAClB,GAAG,MAAM,CAAC,UAAU;YACpB,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,+HAA+H;gBAC5I,KAAK,EAAE,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;aACjC;SACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAwB;IAC3C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,2PAA2P;IACxQ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAC5E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;YAC3F,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,4IAA4I;gBACzJ,KAAK,EAAE,cAAc,EAAE;aACxB;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,oBAAoB,EAAE,KAAK;KAC5B;IACD,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE;IAC1H,QAAQ,CAAC,KAAc;QACrB,MAAM,MAAM,GAAG,KAAsB,CAAC;QACtC,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;IACJ,CAAC;IACD,aAAa,CAAC,KAAK;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;QACpG,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,eAAe;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IACD,iBAAiB;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAmB;YAC7B,GAAG,KAAK;YACR,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,YAAY;YACxD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC;AASF,SAAS,cAAc,CAAC,KAA0B;IAChD,MAAM,MAAM,GAAe,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACjF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;aAClD,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;YAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;;YAC1D,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC;YACpC,MAAM,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC;YAC5C,MAAM,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC;YAC9C,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAsC,EAAE,IAAY;IAC7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,IAAI,mBAAmB,CAAC;IAC7D,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE,OAAO,GAAG,QAAQ,8BAA8B,CAAC;QAC/E,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,GAAG,QAAQ,wDAAwD,CAAC;QAC1H,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO,GAAG,QAAQ,4BAA4B,CAAC;YAClF,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,GAAG,QAAQ,wDAAwD,CAAC;YAC3G,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,WAAW,CAAC,CAAC;YAC9E,IAAI,YAAY;gBAAE,OAAO,YAAY,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Tool } from "../tool.js";
2
+ export declare const secretListTool: Tool<Record<string, never>>;
3
+ export declare const secretInfoTool: Tool<{
4
+ key: string;
5
+ }>;
6
+ export declare const secretRequestTool: Tool<{
7
+ key: string;
8
+ reason?: string;
9
+ }>;
10
+ export declare function createSecretTools(): Tool<any>[];
@@ -0,0 +1,75 @@
1
+ function requireSecrets(context) {
2
+ if (!context.secrets)
3
+ throw new Error("Secret store is not available in this runtime.");
4
+ return context.secrets;
5
+ }
6
+ function normalizeReason(value) {
7
+ return typeof value === "string" && value.trim() ? value.trim().slice(0, 500) : undefined;
8
+ }
9
+ export const secretListTool = {
10
+ name: "secret_list",
11
+ description: "List available secret keys, statuses, and value lengths. Secret values are never returned.",
12
+ inputSchema: { type: "object", properties: {}, additionalProperties: false },
13
+ metadata: { readOnly: true, concurrent: true, visible: true },
14
+ async execute(_input, context) {
15
+ const secrets = await requireSecrets(context).list();
16
+ return { ok: true, output: { secrets } };
17
+ },
18
+ };
19
+ export const secretInfoTool = {
20
+ name: "secret_info",
21
+ description: "Inspect one secret key's existence, status, and value length. Secret values are never returned.",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: { key: { type: "string", description: "Secret key to inspect." } },
25
+ required: ["key"],
26
+ additionalProperties: false,
27
+ },
28
+ metadata: { readOnly: true, concurrent: true, visible: true },
29
+ validate(input) {
30
+ const raw = input;
31
+ if (typeof raw.key !== "string" || !raw.key.trim())
32
+ throw new Error("key is required");
33
+ return { key: raw.key.trim() };
34
+ },
35
+ async execute(input, context) {
36
+ const info = await requireSecrets(context).info(input.key);
37
+ return { ok: true, output: info ? { exists: true, ...info } : { exists: false, key: input.key } };
38
+ },
39
+ };
40
+ export const secretRequestTool = {
41
+ name: "secret_request",
42
+ description: "Create an empty secret placeholder by key so the user can fill it later in REPL. Non-interactive; never asks for or returns a secret value.",
43
+ inputSchema: {
44
+ type: "object",
45
+ properties: {
46
+ key: { type: "string", description: "Secret key to request, e.g. github_token." },
47
+ reason: { type: "string", description: "Why this secret is needed." },
48
+ },
49
+ required: ["key"],
50
+ additionalProperties: false,
51
+ },
52
+ metadata: { readOnly: false, concurrent: false, visible: true },
53
+ validate(input) {
54
+ const raw = input;
55
+ if (typeof raw.key !== "string" || !raw.key.trim())
56
+ throw new Error("key is required");
57
+ return { key: raw.key.trim(), reason: normalizeReason(raw.reason) };
58
+ },
59
+ async execute(input, context) {
60
+ const meta = await requireSecrets(context).requestEmpty(input.key, { reason: input.reason, requestedBy: "agent" });
61
+ return {
62
+ ok: true,
63
+ output: {
64
+ ...meta,
65
+ message: meta.status === "set"
66
+ ? "Secret already exists."
67
+ : `Secret placeholder is empty. Fill it in REPL with: /secret set ${meta.key} <value>`,
68
+ },
69
+ };
70
+ },
71
+ };
72
+ export function createSecretTools() {
73
+ return [secretListTool, secretInfoTool, secretRequestTool];
74
+ }
75
+ //# sourceMappingURL=secret-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-tools.js","sourceRoot":"","sources":["../../../src/tools/builtins/secret-tools.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { createTextMessage, createToolResultMessage } from "../types/messages.js";
2
2
  import { validateJsonSchema } from "./schema.js";
3
+ import { redactWithRegistry } from "../secrets/secret-redaction.js";
3
4
  export async function runToolUse(request, context, options = {}) {
4
5
  const tool = context.tools.get(request.name) ?? context.tools.getByAlias?.(request.name);
5
6
  if (!tool) {
@@ -36,8 +37,9 @@ export async function runToolUse(request, context, options = {}) {
36
37
  parentMessage: options.parentMessage,
37
38
  onProgress,
38
39
  });
39
- const output = await processToolOutput(tool, request, result, contextWithToolUseId);
40
- const resultMessage = tool.renderToolResultMessage?.(result, request) ?? createToolResultMessage(request, result.ok, output);
40
+ const output = redactWithRegistry(contextWithToolUseId.secretRedactions, await processToolOutput(tool, request, result, contextWithToolUseId));
41
+ const safeResult = { ...result, output: redactWithRegistry(contextWithToolUseId.secretRedactions, result.output), summary: redactWithRegistry(contextWithToolUseId.secretRedactions, result.summary) };
42
+ const resultMessage = tool.renderToolResultMessage?.(safeResult, request) ?? createToolResultMessage(request, safeResult.ok, output);
41
43
  updates.push({ message: resultMessage, context: result.contextModifier?.(contextWithToolUseId) });
42
44
  for (const message of result.newMessages ?? []) {
43
45
  updates.push({ message });