neoctl 0.2.4 → 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 (129) 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/compaction.js +2 -1
  20. package/dist/context/compaction.js.map +1 -1
  21. package/dist/context/context-manager.d.ts +2 -1
  22. package/dist/context/context-manager.js +24 -11
  23. package/dist/context/context-manager.js.map +1 -1
  24. package/dist/context/prompts.js +4 -0
  25. package/dist/context/prompts.js.map +1 -1
  26. package/dist/context/smoke-context.js +14 -6
  27. package/dist/context/smoke-context.js.map +1 -1
  28. package/dist/core/context-metrics.d.ts +2 -1
  29. package/dist/core/context-metrics.js +3 -1
  30. package/dist/core/context-metrics.js.map +1 -1
  31. package/dist/core/image-registry.js +3 -3
  32. package/dist/core/image-registry.js.map +1 -1
  33. package/dist/core/image-storage.d.ts +14 -0
  34. package/dist/core/image-storage.js +31 -0
  35. package/dist/core/image-storage.js.map +1 -1
  36. package/dist/core/message-pipeline.d.ts +6 -0
  37. package/dist/core/message-pipeline.js +89 -10
  38. package/dist/core/message-pipeline.js.map +1 -1
  39. package/dist/core/prompt-cache-telemetry.d.ts +11 -0
  40. package/dist/core/prompt-cache-telemetry.js +71 -0
  41. package/dist/core/prompt-cache-telemetry.js.map +1 -0
  42. package/dist/core/query-engine.d.ts +3 -1
  43. package/dist/core/query-engine.js +21 -6
  44. package/dist/core/query-engine.js.map +1 -1
  45. package/dist/core/query.d.ts +4 -0
  46. package/dist/core/query.js +28 -5
  47. package/dist/core/query.js.map +1 -1
  48. package/dist/core/run-agent.d.ts +2 -0
  49. package/dist/core/run-agent.js +156 -21
  50. package/dist/core/run-agent.js.map +1 -1
  51. package/dist/core/smoke-core-loop.js +11 -2
  52. package/dist/core/smoke-core-loop.js.map +1 -1
  53. package/dist/index.d.ts +5 -2
  54. package/dist/index.js +5 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/model/anthropic-mapper.js +29 -3
  57. package/dist/model/anthropic-mapper.js.map +1 -1
  58. package/dist/model/config.d.ts +2 -8
  59. package/dist/model/config.js +1 -41
  60. package/dist/model/config.js.map +1 -1
  61. package/dist/model/env.js +6 -11
  62. package/dist/model/env.js.map +1 -1
  63. package/dist/model/model-metadata.json +1 -115
  64. package/dist/model/openai-chat-mapper.js +4 -19
  65. package/dist/model/openai-chat-mapper.js.map +1 -1
  66. package/dist/model/openai-mappers.js +15 -6
  67. package/dist/model/openai-mappers.js.map +1 -1
  68. package/dist/model/provider-factory.js +0 -32
  69. package/dist/model/provider-factory.js.map +1 -1
  70. package/dist/model/smoke-anthropic-mapper.js +6 -2
  71. package/dist/model/smoke-anthropic-mapper.js.map +1 -1
  72. package/dist/repl/commands.d.ts +14 -0
  73. package/dist/repl/commands.js +54 -0
  74. package/dist/repl/commands.js.map +1 -1
  75. package/dist/repl/index.js +1008 -117
  76. package/dist/repl/index.js.map +1 -1
  77. package/dist/secrets/secret-crypto.d.ts +22 -0
  78. package/dist/secrets/secret-crypto.js +58 -0
  79. package/dist/secrets/secret-crypto.js.map +1 -0
  80. package/dist/secrets/secret-redaction.d.ts +8 -0
  81. package/dist/secrets/secret-redaction.js +40 -0
  82. package/dist/secrets/secret-redaction.js.map +1 -0
  83. package/dist/secrets/secret-store.d.ts +28 -0
  84. package/dist/secrets/secret-store.js +158 -0
  85. package/dist/secrets/secret-store.js.map +1 -0
  86. package/dist/secrets/secret-types.d.ts +31 -0
  87. package/dist/secrets/secret-types.js +17 -0
  88. package/dist/secrets/secret-types.js.map +1 -0
  89. package/dist/secrets/smoke-secrets.js +68 -0
  90. package/dist/secrets/smoke-secrets.js.map +1 -0
  91. package/dist/session/session-export.js +2 -1
  92. package/dist/session/session-export.js.map +1 -1
  93. package/dist/skills/skill-filesystem.js +1 -1
  94. package/dist/skills/skill-filesystem.js.map +1 -1
  95. package/dist/skills/skill-tool.js +86 -22
  96. package/dist/skills/skill-tool.js.map +1 -1
  97. package/dist/tools/builtins/exec-tool.d.ts +20 -1
  98. package/dist/tools/builtins/exec-tool.js +167 -29
  99. package/dist/tools/builtins/exec-tool.js.map +1 -1
  100. package/dist/tools/builtins/image-generation-tool.js +22 -4
  101. package/dist/tools/builtins/image-generation-tool.js.map +1 -1
  102. package/dist/tools/builtins/plan-tool.d.ts +1 -0
  103. package/dist/tools/builtins/plan-tool.js +80 -27
  104. package/dist/tools/builtins/plan-tool.js.map +1 -1
  105. package/dist/tools/builtins/secret-tools.d.ts +10 -0
  106. package/dist/tools/builtins/secret-tools.js +75 -0
  107. package/dist/tools/builtins/secret-tools.js.map +1 -0
  108. package/dist/tools/run-tool-use.js +4 -2
  109. package/dist/tools/run-tool-use.js.map +1 -1
  110. package/dist/tools/smoke-tool-system.js +111 -10
  111. package/dist/tools/smoke-tool-system.js.map +1 -1
  112. package/dist/tools/tool.d.ts +4 -0
  113. package/dist/tools/tool.js.map +1 -1
  114. package/dist/types/events.d.ts +17 -0
  115. package/dist/ui/display-message.js +8 -4
  116. package/dist/ui/display-message.js.map +1 -1
  117. package/dist/web/html.js +1 -1
  118. package/dist/web/index.js +34 -56
  119. package/dist/web/index.js.map +1 -1
  120. package/package.json +3 -2
  121. package/dist/model/deepseek-adapter.d.ts +0 -29
  122. package/dist/model/deepseek-adapter.js +0 -108
  123. package/dist/model/deepseek-adapter.js.map +0 -1
  124. package/dist/model/kimi-adapter.d.ts +0 -29
  125. package/dist/model/kimi-adapter.js +0 -108
  126. package/dist/model/kimi-adapter.js.map +0 -1
  127. package/dist/model/smoke-deepseek-mapper.js +0 -65
  128. package/dist/model/smoke-deepseek-mapper.js.map +0 -1
  129. /package/dist/{model/smoke-deepseek-mapper.d.ts → secrets/smoke-secrets.d.ts} +0 -0
@@ -3,7 +3,7 @@ import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { InMemoryAppState } from "../app/app-state.js";
5
5
  import { editTool, writeTool } from "./builtins/edit-tool.js";
6
- import { execTool } from "./builtins/exec-tool.js";
6
+ import { createExecTool, execTool } from "./builtins/exec-tool.js";
7
7
  import { listDirectoryTool, readFileTool } from "./builtins/filesystem-tools.js";
8
8
  import { grepTool } from "./builtins/grep-tool.js";
9
9
  import { createOpenAIImageGenerationTool } from "./builtins/image-generation-tool.js";
@@ -13,6 +13,17 @@ import { planTool } from "./builtins/plan-tool.js";
13
13
  import { ToolRegistry } from "./registry.js";
14
14
  import { runToolUseToMessages } from "./run-tool-use.js";
15
15
  import { runTools } from "./tool-orchestration.js";
16
+ import { TaskStore } from "../tasks/task-store.js";
17
+ class SmokeDetachRegistry {
18
+ handle;
19
+ set(handle) {
20
+ this.handle = handle;
21
+ return () => {
22
+ if (this.handle === handle)
23
+ this.handle = undefined;
24
+ };
25
+ }
26
+ }
16
27
  const smokePassthroughTool = {
17
28
  name: "smoke_passthrough",
18
29
  aliases: ["smoke_pass"],
@@ -122,8 +133,8 @@ async function main() {
122
133
  input: {
123
134
  title: "Smoke plan",
124
135
  items: [
125
- { description: "Register plan tool", status: "completed" },
126
- { description: "Render plan", status: "in_progress" },
136
+ { description: "Register plan tool", status: "completed", subitems: [{ description: "Expose subitems schema", status: "completed" }] },
137
+ { description: "Render plan", status: "in_progress", subitems: [{ description: "Indent nested plan rows", status: "pending" }] },
127
138
  { description: "Validate smoke", status: "pending" },
128
139
  ],
129
140
  },
@@ -139,8 +150,20 @@ async function main() {
139
150
  await fs.writeFile(path.join(recursiveListRoot, ".agent-tasks", "task.json"), "ignored", "utf8");
140
151
  await fs.writeFile(path.join(recursiveListRoot, "visible", "keep.ts"), "export {};", "utf8");
141
152
  const recursiveList = await runToolUseToMessages({ id: "list-recursive", name: "list", input: { path: recursiveListRoot, recursive: true, maxEntries: 20, includeHidden: true } }, context);
142
- const exec = await runToolUseToMessages({ id: "exec", name: "exec", input: { command: "node -e \"console.log(process.cwd()); console.error('warn')\"", timeoutMs: 10000, maxOutputChars: 4000 } }, context);
143
- const execFailure = await runToolUseToMessages({ id: "exec-fail", name: "exec", input: { command: "node -e \"process.exit(7)\"", timeoutMs: 10000 } }, context);
153
+ const exec = await runToolUseToMessages({ id: "exec", name: "exec", input: { command: "node -e \"console.log(process.cwd()); console.error('warn')\"", description: "Verify exec captures stdout, stderr, and cwd", timeoutMs: 10000, maxOutputChars: 4000 } }, context);
154
+ const execFailure = await runToolUseToMessages({ id: "exec-fail", name: "exec", input: { command: "node -e \"process.exit(7)\"", description: "Verify exec reports non-zero exit status", timeoutMs: 10000 } }, context);
155
+ const detachTaskStore = new TaskStore();
156
+ const detachRegistry = new SmokeDetachRegistry();
157
+ const detachTools = new ToolRegistry();
158
+ detachTools.register(createExecTool({ taskStore: detachTaskStore, foregroundDetachRegistry: detachRegistry }));
159
+ const detachContext = { ...context, tools: detachTools };
160
+ const execDetachPromise = runToolUseToMessages({ id: "exec-detach", name: "exec", input: { command: "node -e \"setTimeout(() => console.log('done'), 150)\"", description: "Verify foreground exec can detach to background", timeoutMs: 10000 } }, detachContext);
161
+ for (let i = 0; i < 20 && !detachRegistry.handle; i += 1)
162
+ await new Promise((resolve) => setTimeout(resolve, 10));
163
+ const detachShortcutResult = detachRegistry.handle?.detach();
164
+ const execDetach = await execDetachPromise;
165
+ const execDetachOutput = toolOutput(execDetach[execDetach.length - 1]);
166
+ const execDetachTask = execDetachOutput.task_id ? await detachTaskStore.waitForTerminal(execDetachOutput.task_id, { timeoutMs: 2000 }) : undefined;
144
167
  const editCreate = await runToolUseToMessages({ id: "edit-create", name: "edit", input: { path: path.join(tempDir, "sample.txt"), oldString: "", newString: "alpha\nbeta\nalpha\n" } }, context);
145
168
  const editAmbiguous = await runToolUseToMessages({ id: "edit-ambiguous", name: "edit", input: { path: path.join(tempDir, "sample.txt"), oldString: "alpha", newString: "gamma" } }, context);
146
169
  const editReplaceAll = await runToolUseToMessages({ id: "edit-all", name: "edit", input: { path: path.join(tempDir, "sample.txt"), oldString: "alpha", newString: "gamma", replaceAll: true } }, context);
@@ -167,6 +190,70 @@ async function main() {
167
190
  const imageToolPrompt = JSON.stringify({ name: imageTool.name, description: imageTool.description, schema: imageTool.inputSchema });
168
191
  const imageDefaultValidation = await imageTool.validateInput?.(imageTool.validate?.({ prompt: "smoke" }, context) ?? { prompt: "smoke" }, context);
169
192
  const imageLegacyModelValidation = await imageTool.validateInput?.(imageTool.validate?.({ prompt: "smoke", model: "gpt-image-1" }, context) ?? { prompt: "smoke", model: "gpt-image-1" }, context);
193
+ const imageEditSmokeMessages = [
194
+ {
195
+ id: "image-old",
196
+ role: "assistant",
197
+ createdAt: new Date(0).toISOString(),
198
+ blocks: [{
199
+ type: "image",
200
+ mimeType: "image/png",
201
+ data: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO7Z0ioAAAAASUVORK5CYII=",
202
+ label: "[img#10]",
203
+ }],
204
+ },
205
+ {
206
+ id: "image-new",
207
+ role: "assistant",
208
+ createdAt: new Date(1).toISOString(),
209
+ blocks: [{
210
+ type: "image",
211
+ mimeType: "image/png",
212
+ data: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO7Z0ioAAAAASUVORK5CYII=",
213
+ label: "[img#10]",
214
+ }],
215
+ },
216
+ ];
217
+ const imageEditContext = { ...context, messages: imageEditSmokeMessages };
218
+ const imageEditTool = createOpenAIImageGenerationTool({ apiKey: "test-key", baseUrl: "https://example.test" });
219
+ const originalFetch = globalThis.fetch;
220
+ const seenImageFilenames = [];
221
+ let imageEditRefOutput;
222
+ let imageEditNumberOutput;
223
+ globalThis.fetch = async (_input, init) => {
224
+ const body = init?.body;
225
+ if (!(body instanceof FormData))
226
+ throw new Error("Expected image edit request to use FormData");
227
+ const files = body.getAll("image[]");
228
+ seenImageFilenames.splice(0, seenImageFilenames.length, ...files.map((file) => file instanceof File ? file.name : String(file)));
229
+ return new Response(JSON.stringify({
230
+ data: [{
231
+ b64_json: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO7Z0ioAAAAASUVORK5CYII=",
232
+ }],
233
+ }), {
234
+ status: 200,
235
+ headers: { "Content-Type": "application/json" },
236
+ });
237
+ };
238
+ try {
239
+ const imageEditRefResult = await imageEditTool.call?.({
240
+ mode: "edit",
241
+ prompt: "smoke edit",
242
+ imageRefs: ["img#10"],
243
+ useLatestImage: false,
244
+ }, imageEditContext, {});
245
+ imageEditRefOutput = imageEditRefResult?.output;
246
+ const imageEditNumberResult = await imageEditTool.call?.({
247
+ mode: "edit",
248
+ prompt: "smoke edit",
249
+ imageRefs: ["10"],
250
+ useLatestImage: false,
251
+ }, imageEditContext, {});
252
+ imageEditNumberOutput = imageEditNumberResult?.output;
253
+ }
254
+ finally {
255
+ globalThis.fetch = originalFetch;
256
+ }
170
257
  const planOutput = toolOutput(plan[plan.length - 1]);
171
258
  const writeOutput = toolOutput(write[write.length - 1]);
172
259
  const started = Date.now();
@@ -197,12 +284,21 @@ async function main() {
197
284
  image2OnlyToolName: imageTool.name === "image2" && !imageToolPrompt.includes("draw_image") && !imageToolPrompt.includes("generate_image"),
198
285
  image2DefaultsToGptImage2: imageDefaultValidation?.ok === true && imageDefaultValidation.value.model === "gpt-image-2" && imageToolPrompt.includes("gpt-image-2"),
199
286
  image2RejectsGptImage1: imageLegacyModelValidation?.ok === false && imageLegacyModelValidation.message.includes("gpt-image-2") && !imageToolPrompt.includes("gpt-image-1"),
287
+ image2EditAcceptsBareImgRef: imageEditRefOutput?.sourceImages === 1 &&
288
+ imageEditRefOutput.imageRefs?.[0] === "[img#10]" &&
289
+ seenImageFilenames[0] === "image-2.png",
290
+ image2EditNumericFallbackPrefersLatestMatchingLabel: imageEditNumberOutput?.sourceImages === 1 &&
291
+ imageEditNumberOutput.imageRefs?.[0] === "[img#10]",
200
292
  planOk: toolOk(plan[plan.length - 1]) &&
201
- planOutput.summary === "1/3 completed" &&
202
- planOutput.completed === 1 &&
293
+ planOutput.summary === "2/5 completed" &&
294
+ planOutput.total === 5 &&
295
+ planOutput.completed === 2 &&
203
296
  planOutput.inProgress === 1 &&
204
- planOutput.pending === 1 &&
205
- planOutput.items?.[0]?.status === "completed",
297
+ planOutput.pending === 2 &&
298
+ planOutput.items?.[0]?.status === "completed" &&
299
+ planOutput.items?.[0]?.subitems?.[0]?.status === "completed" &&
300
+ String(planTool.description).includes("split it into subitems") &&
301
+ JSON.stringify(planTool.inputSchema).includes("subitems"),
206
302
  truncatedGrepCounts: truncatedGrepOutput.returnedMatches === 1 &&
207
303
  truncatedGrepOutput.totalMatchesKnown === null &&
208
304
  truncatedGrepOutput.truncated === true,
@@ -228,6 +324,11 @@ async function main() {
228
324
  execFailureRejected: !toolOk(execFailure[execFailure.length - 1]) &&
229
325
  typeof execFailureOutput.exitCode === "number" &&
230
326
  execFailureOutput.exitCode !== 0,
327
+ execDetachOk: detachShortcutResult?.ok === true &&
328
+ toolOk(execDetach[execDetach.length - 1]) &&
329
+ execDetachOutput.status === "async_launched" &&
330
+ execDetachOutput.detachedFromForeground === true &&
331
+ execDetachTask?.status === "completed",
231
332
  editCreateOk: toolOk(editCreate[editCreate.length - 1]) &&
232
333
  editCreateOutput.operation === "create" &&
233
334
  editCreateOutput.replacements === 1 &&
@@ -249,7 +350,7 @@ async function main() {
249
350
  batchConcurrent: elapsedMs < 110,
250
351
  };
251
352
  const ok = Object.values(checks).every(Boolean);
252
- console.log(JSON.stringify({ ok, elapsedMs, checks, counts: { valid: valid.length, invalid: invalid.length, unknown: unknown.length, large: large.length, grep: grep.length, truncatedGrep: truncatedGrep.length, webSearch: webSearch.length, plan: plan.length, contextGrep: contextGrep.length, read: read.length, list: list.length, recursiveList: recursiveList.length, exec: exec.length, execFailure: execFailure.length, editCreate: editCreate.length, editAmbiguous: editAmbiguous.length, editReplaceAll: editReplaceAll.length, editCrlfWithLfOldString: editCrlfWithLfOldString.length, write: write.length, batch: batch.messages.length } }, null, 2));
353
+ console.log(JSON.stringify({ ok, elapsedMs, checks, counts: { valid: valid.length, invalid: invalid.length, unknown: unknown.length, large: large.length, grep: grep.length, truncatedGrep: truncatedGrep.length, webSearch: webSearch.length, plan: plan.length, contextGrep: contextGrep.length, read: read.length, list: list.length, recursiveList: recursiveList.length, exec: exec.length, execFailure: execFailure.length, execDetach: execDetach.length, editCreate: editCreate.length, editAmbiguous: editAmbiguous.length, editReplaceAll: editReplaceAll.length, editCrlfWithLfOldString: editCrlfWithLfOldString.length, write: write.length, batch: batch.messages.length } }, null, 2));
253
354
  if (!ok)
254
355
  process.exitCode = 1;
255
356
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smoke-tool-system.js","sourceRoot":"","sources":["../../src/tools/smoke-tool-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smoke-tool-system.js","sourceRoot":"","sources":["../../src/tools/smoke-tool-system.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { AppStatePort } from "../app/app-state.js";
2
2
  import type { Message, ToolUseRequest } from "../types/messages.js";
3
3
  import type { ContentReplacementRecord, ToolResultMemory } from "../session/tool-result-memory.js";
4
+ import type { SecretRedactionRegistry, SecretResolver } from "../secrets/secret-types.js";
4
5
  export interface JsonSchema {
5
6
  type?: string;
6
7
  properties?: Record<string, JsonSchema>;
@@ -74,6 +75,7 @@ export interface ToolRuntimeOptions {
74
75
  thinkingConfig?: unknown;
75
76
  reasoning?: import("../model/model-gateway.js").ReasoningConfig | null;
76
77
  activeSkill?: ActiveSkillRuntimeState;
78
+ loadedSkillStructures?: Set<string>;
77
79
  isNonInteractiveSession?: boolean;
78
80
  refreshTools?: () => Promise<void> | void;
79
81
  }
@@ -89,6 +91,8 @@ export interface ToolUseContext {
89
91
  requestPrompt?: string;
90
92
  options?: ToolRuntimeOptions;
91
93
  toolResultMemory?: ToolResultMemory;
94
+ secrets?: SecretResolver;
95
+ secretRedactions?: SecretRedactionRegistry;
92
96
  emit(event: ToolProgressEvent): void;
93
97
  recordContentReplacements?(records: ContentReplacementRecord[]): void;
94
98
  appendSystemMessage?(message: Message): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAkJA,MAAM,UAAU,sBAAsB,CAAC,IAAU,EAAE,OAAwB;IACzE,OAAO,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1G,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAsJA,MAAM,UAAU,sBAAsB,CAAC,IAAU,EAAE,OAAwB;IACzE,OAAO,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1G,CAAC"}
@@ -1,6 +1,22 @@
1
1
  import type { TerminalReason } from "../core/state.js";
2
2
  import type { ModelUsage } from "../model/model-gateway.js";
3
3
  import type { Message, ToolUseRequest } from "./messages.js";
4
+ export interface PromptCacheSectionMetric {
5
+ name: string;
6
+ cacheStable: boolean;
7
+ estimatedTokens: number;
8
+ chars: number;
9
+ hash: string;
10
+ }
11
+ export interface PromptCacheDiagnostics {
12
+ systemPromptHash: string;
13
+ toolDefinitionsHash: string;
14
+ messagePrefixHash: string;
15
+ promptSections: PromptCacheSectionMetric[];
16
+ stablePromptTokens: number;
17
+ dynamicPromptTokens: number;
18
+ toolDefinitionTokens: number;
19
+ }
4
20
  export interface ContextMetrics {
5
21
  model?: string;
6
22
  estimatedInputTokens: number;
@@ -10,6 +26,7 @@ export interface ContextMetrics {
10
26
  contextWindowTokens?: number;
11
27
  contextWindowSource: "env" | "known" | "unknown";
12
28
  contextUsageRatio?: number;
29
+ cacheDiagnostics?: PromptCacheDiagnostics;
13
30
  modelMetadata?: {
14
31
  id: string;
15
32
  provider: string;
@@ -1,7 +1,11 @@
1
+ import { resolveImageBlockDataSync } from "../core/image-storage.js";
1
2
  export function imageBlockToDataUrl(block) {
2
- if (block.data.startsWith("data:"))
3
- return block.data;
4
- return `data:${block.mimeType};base64,${block.data}`;
3
+ const data = resolveImageBlockDataSync(block);
4
+ if (!data)
5
+ return "";
6
+ if (data.startsWith("data:"))
7
+ return data;
8
+ return `data:${block.mimeType};base64,${data}`;
5
9
  }
6
10
  export function toDisplayAgentEvent(event, options = {}) {
7
11
  if (event.type !== "message")
@@ -61,7 +65,7 @@ export function toDisplayImageBlock(block, options = {}) {
61
65
  type: "image",
62
66
  label: block.label,
63
67
  mimeType: block.mimeType,
64
- sizeBytes: estimateBase64DecodedBytes(normalizeBase64ImageData(block.data)),
68
+ sizeBytes: estimateBase64DecodedBytes(normalizeBase64ImageData(resolveImageBlockDataSync(block) ?? "")),
65
69
  storagePath: block.storage?.path,
66
70
  };
67
71
  if (imageMode === "metadata-only")
@@ -1 +1 @@
1
- {"version":3,"file":"display-message.js","sourceRoot":"","sources":["../../src/ui/display-message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display-message.js","sourceRoot":"","sources":["../../src/ui/display-message.ts"],"names":[],"mappings":"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"}
package/dist/web/html.js CHANGED
@@ -587,7 +587,7 @@ function renderLoginPanel() {
587
587
  const login = state.login || state.interactive.login;
588
588
  if (!login) { panelEl.innerHTML = '<div class="panel-title">Provider login</div><div class="panel-muted">Login config unavailable.</div>'; return; }
589
589
  const fields = login.fields || [];
590
- panelEl.innerHTML = '<div class="panel-title">Provider login <span class="panel-muted">' + esc(login.envPath || '') + '</span></div><div class="login-grid"><label>Provider</label><select data-login-provider>' + (login.providers || []).map(p => '<option value="' + esc(p) + '" ' + (p === login.provider ? 'selected' : '') + '>' + esc(p) + '</option>').join('') + '</select>' + fields.map(field => '<label>' + esc(field.label) + (field.required ? ' *' : '') + '</label>' + loginFieldControl(field, login.values && login.values[field.key])).join('') + '</div><div class="login-actions"><button data-action="login-save">save</button><button data-action="panel-close">cancel</button></div><div class="panel-muted">Shared runtime fields save as MODEL_*; provider fields save as OPENAI_* / DEEPSEEK_* / KIMI_*.</div>';
590
+ panelEl.innerHTML = '<div class="panel-title">Provider login <span class="panel-muted">' + esc(login.envPath || '') + '</span></div><div class="login-grid"><label>Provider</label><select data-login-provider>' + (login.providers || []).map(p => '<option value="' + esc(p) + '" ' + (p === login.provider ? 'selected' : '') + '>' + esc(p) + '</option>').join('') + '</select>' + fields.map(field => '<label>' + esc(field.label) + (field.required ? ' *' : '') + '</label>' + loginFieldControl(field, login.values && login.values[field.key])).join('') + '</div><div class="login-actions"><button data-action="login-save">save</button><button data-action="panel-close">cancel</button></div><div class="panel-muted">Shared runtime fields save as MODEL_*; provider fields save as OPENAI_* / ANTHROPIC_*.</div>';
591
591
  }
592
592
  function loginFieldControl(field, value) {
593
593
  value = value || '';
package/dist/web/index.js CHANGED
@@ -30,6 +30,7 @@ import { writeSessionMarkdownExport } from "../session/session-export.js";
30
30
  import { WEB_HTML } from "./html.js";
31
31
  import { appTips, formatTipLine, initialTipIndex, tipAt } from "../tips.js";
32
32
  import { openDirectory } from "../open-directory.js";
33
+ import { resolveImageBlockDataSync } from "../core/image-storage.js";
33
34
  const require = createRequire(import.meta.url);
34
35
  const markedPackageDir = path.dirname(require.resolve("marked/package.json"));
35
36
  const highlightPackageDir = path.dirname(require.resolve("@highlightjs/cdn-assets/package.json"));
@@ -198,7 +199,7 @@ function syncImageGenerationTool(runtime, provider) {
198
199
  runtime.tools.register(createOpenAIImageGenerationTool());
199
200
  }
200
201
  function formatCreatedEnvNotice(dotEnvPath) {
201
- return `Created default config file: ${dotEnvPath}\nSet MODEL_PROVIDER and the matching provider section (for example OPENAI_API_KEY, ANTHROPIC_API_KEY, or KIMI_API_KEY), then restart neo.`;
202
+ return `Created default config file: ${dotEnvPath}\nSet MODEL_PROVIDER and the matching provider section (OPENAI_API_KEY or ANTHROPIC_API_KEY), then restart neo.`;
202
203
  }
203
204
  function parseResumeFlag(value) {
204
205
  if (!value)
@@ -443,7 +444,7 @@ export class WebRepl {
443
444
  async saveLogin(providerValue, values) {
444
445
  const provider = parseLoginProvider(providerValue);
445
446
  if (!provider)
446
- return { ok: false, error: "provider must be openai, anthropic, deepseek, or kimi" };
447
+ return { ok: false, error: "provider must be openai or anthropic" };
447
448
  const payload = { ...createLoginFormPayload(this.runtime.envPath, provider), provider, values };
448
449
  const validationError = validateLoginFormPayload(payload);
449
450
  if (validationError)
@@ -788,6 +789,14 @@ export class WebRepl {
788
789
  this.broadcastSync();
789
790
  return;
790
791
  }
792
+ if (command.type === "skill") {
793
+ this.append({ kind: "error", text: "/skill is currently available in the interactive REPL only." });
794
+ return;
795
+ }
796
+ if (command.type === "secret") {
797
+ this.append({ kind: "error", text: "/secret is currently available in the interactive REPL only." });
798
+ return;
799
+ }
791
800
  if (text.trimStart().startsWith("/")) {
792
801
  this.append({ kind: "error", text: `Unknown or incomplete command: ${text.trim()}\nType /help for commands.` });
793
802
  return;
@@ -1026,7 +1035,7 @@ function restoredHistoryLines(runtime) {
1026
1035
  return lines.length;
1027
1036
  };
1028
1037
  for (const message of runtime.engine.getHistoryMessages())
1029
- renderMessage(message, append, undefined, { includeToolUseBlocks: true });
1038
+ renderMessage(message, append, undefined, { includeToolUseBlocks: true, includeThinkingBlocks: false });
1030
1039
  return lines;
1031
1040
  }
1032
1041
  function initialStatus(runtime, metrics = runtime.initialMetrics) {
@@ -1196,11 +1205,11 @@ function currentModelProvider() {
1196
1205
  return parseLoginProvider(process.env.MODEL_PROVIDER) ?? (process.env.ANTHROPIC_API_KEY ? "anthropic" : "openai");
1197
1206
  }
1198
1207
  function parseLoginProvider(value) {
1199
- if (value === "openai" || value === "anthropic" || value === "deepseek" || value === "kimi")
1208
+ if (value === "openai" || value === "anthropic")
1200
1209
  return value;
1201
1210
  return undefined;
1202
1211
  }
1203
- const LOGIN_PROVIDERS = ["openai", "anthropic", "deepseek", "kimi"];
1212
+ const LOGIN_PROVIDERS = ["openai", "anthropic"];
1204
1213
  const SHARED_LOGIN_FIELDS = [
1205
1214
  { key: "reasoningEffort", label: "Reasoning effort", envKey: "MODEL_REASONING_EFFORT", scope: "shared", options: ["", "off", "none", "minimal", "low", "medium", "high", "xhigh", "max"] },
1206
1215
  { key: "reasoningSummary", label: "Reasoning summary", envKey: "MODEL_REASONING_SUMMARY", scope: "shared", options: ["", "auto", "concise", "detailed"] },
@@ -1226,28 +1235,11 @@ const LOGIN_FIELD_DEFINITIONS = {
1226
1235
  { key: "version", label: "Anthropic version", envKey: "ANTHROPIC_VERSION", scope: "provider", placeholder: "2023-06-01" },
1227
1236
  ...SHARED_LOGIN_FIELDS,
1228
1237
  ],
1229
- deepseek: [
1230
- { key: "apiKey", label: "API key", envKey: "DEEPSEEK_API_KEY", scope: "provider", required: true, secret: true, placeholder: "sk-..." },
1231
- { key: "baseUrl", label: "Base URL", envKey: "DEEPSEEK_BASE_URL", scope: "provider", placeholder: "https://api.deepseek.com" },
1232
- { key: "model", label: "Model", envKey: "DEEPSEEK_MODEL", scope: "provider", required: true, placeholder: "deepseek-chat" },
1233
- { key: "fallbackModel", label: "Fallback model", envKey: "DEEPSEEK_FALLBACK_MODEL", scope: "provider" },
1234
- ...SHARED_LOGIN_FIELDS,
1235
- ],
1236
- kimi: [
1237
- { key: "apiKey", label: "API key", envKey: "KIMI_API_KEY", scope: "provider", required: true, secret: true, placeholder: "sk-..." },
1238
- { key: "baseUrl", label: "Base URL", envKey: "KIMI_BASE_URL", scope: "provider", placeholder: "https://api.moonshot.cn/v1" },
1239
- { key: "model", label: "Model", envKey: "KIMI_MODEL", scope: "provider", required: true, placeholder: "kimi-k2.6" },
1240
- { key: "fallbackModel", label: "Fallback model", envKey: "KIMI_FALLBACK_MODEL", scope: "provider" },
1241
- ...SHARED_LOGIN_FIELDS,
1242
- ],
1243
1238
  };
1244
1239
  const DEPRECATED_MODEL_ENV_KEYS = [
1245
1240
  "MODEL_API_KEY", "MODEL_BASE_URL", "MODEL_ID", "MODEL_FALLBACK_ID", "MODEL_ENDPOINT", "OPENAI_PROVIDER",
1246
1241
  "OPENAI_REASONING_EFFORT", "OPENAI_REASONING_SUMMARY", "OPENAI_MAX_OUTPUT_TOKENS", "OPENAI_TIMEOUT_MS", "OPENAI_STREAM_IDLE_TIMEOUT_MS", "OPENAI_MAX_RETRIES",
1247
1242
  "ANTHROPIC_REASONING_EFFORT", "ANTHROPIC_REASONING_SUMMARY", "ANTHROPIC_MAX_OUTPUT_TOKENS", "ANTHROPIC_TIMEOUT_MS", "ANTHROPIC_STREAM_IDLE_TIMEOUT_MS", "ANTHROPIC_MAX_RETRIES",
1248
- "DEEPSEEK_REASONING_EFFORT", "DEEPSEEK_REASONING_SUMMARY", "DEEPSEEK_MAX_OUTPUT_TOKENS", "DEEPSEEK_TIMEOUT_MS", "DEEPSEEK_STREAM_IDLE_TIMEOUT_MS", "DEEPSEEK_MAX_RETRIES",
1249
- "KIMI_REASONING_EFFORT", "KIMI_REASONING_SUMMARY", "KIMI_MAX_OUTPUT_TOKENS", "KIMI_TIMEOUT_MS", "KIMI_STREAM_IDLE_TIMEOUT_MS", "KIMI_MAX_RETRIES",
1250
- "MOONSHOT_REASONING_EFFORT", "MOONSHOT_REASONING_SUMMARY", "MOONSHOT_MAX_OUTPUT_TOKENS", "MOONSHOT_TIMEOUT_MS", "MOONSHOT_STREAM_IDLE_TIMEOUT_MS", "MOONSHOT_MAX_RETRIES",
1251
1243
  ];
1252
1244
  function createLoginFormPayload(envPath, provider) {
1253
1245
  const env = parseEnvFileSafe(envPath);
@@ -1264,12 +1256,6 @@ function loginValuesForProvider(provider, env) {
1264
1256
  const values = {};
1265
1257
  for (const field of LOGIN_FIELD_DEFINITIONS[provider])
1266
1258
  values[field.key] = env[field.envKey] ?? "";
1267
- if (provider === "kimi") {
1268
- values.apiKey ||= env.MOONSHOT_API_KEY ?? process.env.MOONSHOT_API_KEY ?? "";
1269
- values.baseUrl ||= env.MOONSHOT_BASE_URL ?? process.env.MOONSHOT_BASE_URL ?? "";
1270
- values.model ||= env.MOONSHOT_MODEL ?? process.env.MOONSHOT_MODEL ?? "";
1271
- values.fallbackModel ||= env.MOONSHOT_FALLBACK_MODEL ?? process.env.MOONSHOT_FALLBACK_MODEL ?? "";
1272
- }
1273
1259
  if (!values.baseUrl)
1274
1260
  values.baseUrl = defaultBaseUrlForLoginProvider(provider);
1275
1261
  if (!values.model)
@@ -1279,10 +1265,6 @@ function loginValuesForProvider(provider, env) {
1279
1265
  return values;
1280
1266
  }
1281
1267
  function guessLoginProvider(env) {
1282
- if (env.KIMI_API_KEY ?? env.MOONSHOT_API_KEY ?? process.env.KIMI_API_KEY ?? process.env.MOONSHOT_API_KEY)
1283
- return "kimi";
1284
- if (env.DEEPSEEK_API_KEY ?? process.env.DEEPSEEK_API_KEY)
1285
- return "deepseek";
1286
1268
  if (env.ANTHROPIC_API_KEY ?? process.env.ANTHROPIC_API_KEY)
1287
1269
  return "anthropic";
1288
1270
  return currentModelProvider();
@@ -1290,19 +1272,11 @@ function guessLoginProvider(env) {
1290
1272
  function defaultBaseUrlForLoginProvider(provider) {
1291
1273
  if (provider === "anthropic")
1292
1274
  return "https://api.anthropic.com";
1293
- if (provider === "deepseek")
1294
- return "https://api.deepseek.com";
1295
- if (provider === "kimi")
1296
- return "https://api.moonshot.cn/v1";
1297
1275
  return "https://api.openai.com";
1298
1276
  }
1299
1277
  function defaultModelForLoginProvider(provider) {
1300
1278
  if (provider === "anthropic")
1301
1279
  return "claude-sonnet-4-6";
1302
- if (provider === "deepseek")
1303
- return "deepseek-chat";
1304
- if (provider === "kimi")
1305
- return "kimi-k2.6";
1306
1280
  return "gpt-5.5";
1307
1281
  }
1308
1282
  function validateLoginFormPayload(payload) {
@@ -1334,12 +1308,6 @@ function envEntriesForLoginPayload(payload) {
1334
1308
  const value = (payload.values[field.key] ?? "").trim();
1335
1309
  entries[field.envKey] = value || undefined;
1336
1310
  }
1337
- if (payload.provider === "kimi") {
1338
- entries.MOONSHOT_API_KEY = undefined;
1339
- entries.MOONSHOT_BASE_URL = undefined;
1340
- entries.MOONSHOT_MODEL = undefined;
1341
- entries.MOONSHOT_FALLBACK_MODEL = undefined;
1342
- }
1343
1311
  return entries;
1344
1312
  }
1345
1313
  function parseEnvFileSafe(envPath) {
@@ -1361,10 +1329,6 @@ function stripEnvQuotes(value) {
1361
1329
  function modelEnvKeyForProvider(provider) {
1362
1330
  if (provider === "anthropic")
1363
1331
  return "ANTHROPIC_MODEL";
1364
- if (provider === "deepseek")
1365
- return "DEEPSEEK_MODEL";
1366
- if (provider === "kimi")
1367
- return "KIMI_MODEL";
1368
1332
  return "OPENAI_MODEL";
1369
1333
  }
1370
1334
  function envValueForReasoning(reasoning) {
@@ -1485,6 +1449,8 @@ function renderMessage(message, append, activeAssistantId, options = {}) {
1485
1449
  rendered = true;
1486
1450
  }
1487
1451
  else if (block.type === "thinking") {
1452
+ if (options.includeThinkingBlocks === false)
1453
+ continue;
1488
1454
  append(thinkingLine(block.text));
1489
1455
  rendered = true;
1490
1456
  }
@@ -1544,9 +1510,12 @@ function imageLineForBlock(role, block) {
1544
1510
  };
1545
1511
  }
1546
1512
  function imageBlockToDataUrl(block) {
1547
- if (block.data.startsWith("data:"))
1548
- return block.data;
1549
- return `data:${block.mimeType};base64,${block.data}`;
1513
+ const data = resolveImageBlockDataSync(block);
1514
+ if (!data)
1515
+ return "";
1516
+ if (data.startsWith("data:"))
1517
+ return data;
1518
+ return `data:${block.mimeType};base64,${data}`;
1550
1519
  }
1551
1520
  function assistantText(message) {
1552
1521
  const text = message.blocks.filter((block) => block.type === "text").map((block) => block.text).join("");
@@ -1602,7 +1571,8 @@ function thinkingLine(text, live = false) {
1602
1571
  function formatToolUse(toolUse) {
1603
1572
  if (toolUse.name === "plan" && isPlanToolPayload(toolUse.input))
1604
1573
  return { kind: "tool", title: toolTitle(toolUse.name, "running"), bodyTitle: planToolBodyTitle(toolUse.input), text: formatPlanToolPayload(toolUse.input), collapsible: true };
1605
- return { kind: "tool", title: toolTitle(toolUse.name, "running"), text: formatReplData(toolUse.input, 1200), previewStyle: "summary", collapsible: true };
1574
+ const description = toolUse.name === "exec" ? execDescriptionFromInput(toolUse.input) : undefined;
1575
+ return { kind: "tool", title: toolTitle(toolUse.name, "running"), bodyTitle: description, text: formatReplData(toolUse.input, 1200), previewStyle: "summary", collapsible: true };
1606
1576
  }
1607
1577
  function formatToolResultLine(toolName, output, ok) {
1608
1578
  const formatted = formatToolResult(toolName, output, ok);
@@ -1610,11 +1580,18 @@ function formatToolResultLine(toolName, output, ok) {
1610
1580
  }
1611
1581
  function formatToolFinishedWithoutResult(toolUse, ok) {
1612
1582
  const inputText = formatReplData(toolUse.input, 1200);
1613
- return { kind: ok ? "tool" : "error", title: toolTitle(toolUse.name, "finished"), titleStatus: ok ? "success" : "failure", text: inputText ? `${ok ? "finished" : "failed"}\n${inputText}` : ok ? "finished" : "failed", previewStyle: "summary", live: true, pendingReplacement: true, collapsible: true };
1583
+ const description = toolUse.name === "exec" ? execDescriptionFromInput(toolUse.input) : undefined;
1584
+ return { kind: ok ? "tool" : "error", title: toolTitle(toolUse.name, "finished"), bodyTitle: description, titleStatus: ok ? "success" : "failure", text: inputText ? `${ok ? "finished" : "failed"}\n${inputText}` : ok ? "finished" : "failed", previewStyle: "summary", live: true, pendingReplacement: true, collapsible: true };
1614
1585
  }
1615
1586
  function toolTitle(toolName, _phase) {
1616
1587
  return toolName;
1617
1588
  }
1589
+ function execDescriptionFromInput(input) {
1590
+ if (!isRecord(input))
1591
+ return undefined;
1592
+ const description = typeof input.description === "string" ? input.description.trim() : "";
1593
+ return description || undefined;
1594
+ }
1618
1595
  function isPlanToolPayload(value) {
1619
1596
  if (!isRecord(value) || !Array.isArray(value.items))
1620
1597
  return false;
@@ -1707,7 +1684,8 @@ function isExecOutput(value) {
1707
1684
  }
1708
1685
  function formatExecToolResult(output, ok) {
1709
1686
  const status = output.timedOut ? "timed out" : output.exitCode === 0 ? "exit 0" : `exit ${output.exitCode ?? output.signal ?? "unknown"}`;
1710
- const lines = ["exec result", `status: ${status}`, `duration: ${output.durationMs}ms`, `command: ${output.command}`];
1687
+ const description = typeof output.description === "string" ? output.description.trim() : "";
1688
+ const lines = ["exec result", ...(description ? [`purpose: ${description}`] : []), `status: ${status}`, `duration: ${output.durationMs}ms`, `command: ${output.command}`];
1711
1689
  const stdout = typeof output.stdout === "string" ? output.stdout.replace(/\s+$/u, "") : "";
1712
1690
  const stderr = typeof output.stderr === "string" ? output.stderr.replace(/\s+$/u, "") : "";
1713
1691
  if (stdout)