neoctl 0.2.0 → 0.2.1

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 (112) hide show
  1. package/README.md +20 -9
  2. package/dist/context/compaction.d.ts +3 -0
  3. package/dist/context/compaction.js +231 -40
  4. package/dist/context/compaction.js.map +1 -1
  5. package/dist/context/prompts.js +4 -4
  6. package/dist/context/prompts.js.map +1 -1
  7. package/dist/core/commands.d.ts +66 -0
  8. package/dist/core/commands.js +151 -0
  9. package/dist/core/commands.js.map +1 -0
  10. package/dist/core/context-metrics.d.ts +5 -2
  11. package/dist/core/context-metrics.js +85 -9
  12. package/dist/core/context-metrics.js.map +1 -1
  13. package/dist/core/image-registry.d.ts +42 -0
  14. package/dist/core/image-registry.js +128 -0
  15. package/dist/core/image-registry.js.map +1 -0
  16. package/dist/core/message-pipeline.d.ts +6 -0
  17. package/dist/core/message-pipeline.js +12 -0
  18. package/dist/core/message-pipeline.js.map +1 -1
  19. package/dist/core/query-engine.d.ts +3 -5
  20. package/dist/core/query-engine.js +35 -48
  21. package/dist/core/query-engine.js.map +1 -1
  22. package/dist/core/query.d.ts +1 -5
  23. package/dist/core/query.js +21 -8
  24. package/dist/core/query.js.map +1 -1
  25. package/dist/core/runtime.d.ts +59 -0
  26. package/dist/core/runtime.js +161 -0
  27. package/dist/core/runtime.js.map +1 -0
  28. package/dist/core/state.d.ts +6 -7
  29. package/dist/core/state.js +2 -0
  30. package/dist/core/state.js.map +1 -1
  31. package/dist/index.d.ts +14 -10
  32. package/dist/index.js +14 -10
  33. package/dist/index.js.map +1 -1
  34. package/dist/model/anthropic-adapter.d.ts +30 -0
  35. package/dist/model/anthropic-adapter.js +106 -0
  36. package/dist/model/anthropic-adapter.js.map +1 -0
  37. package/dist/model/anthropic-mapper.d.ts +13 -0
  38. package/dist/model/anthropic-mapper.js +482 -0
  39. package/dist/model/anthropic-mapper.js.map +1 -0
  40. package/dist/model/config.d.ts +8 -2
  41. package/dist/model/config.js +24 -1
  42. package/dist/model/config.js.map +1 -1
  43. package/dist/model/model-gateway.js +1 -1
  44. package/dist/model/model-gateway.js.map +1 -1
  45. package/dist/model/openai-mappers.js +1 -1
  46. package/dist/model/openai-mappers.js.map +1 -1
  47. package/dist/model/provider-factory.js +17 -0
  48. package/dist/model/provider-factory.js.map +1 -1
  49. package/dist/model/smoke-anthropic-mapper.d.ts +1 -0
  50. package/dist/model/smoke-anthropic-mapper.js +85 -0
  51. package/dist/model/smoke-anthropic-mapper.js.map +1 -0
  52. package/dist/repl/index.js +77 -70
  53. package/dist/repl/index.js.map +1 -1
  54. package/dist/repl/markdown-renderer.d.ts +19 -0
  55. package/dist/repl/markdown-renderer.js +58 -3
  56. package/dist/repl/markdown-renderer.js.map +1 -1
  57. package/dist/repl/transcript-flush.d.ts +6 -0
  58. package/dist/repl/transcript-flush.js +54 -0
  59. package/dist/repl/transcript-flush.js.map +1 -0
  60. package/dist/repl/transcript-format.d.ts +16 -0
  61. package/dist/repl/transcript-format.js +199 -0
  62. package/dist/repl/transcript-format.js.map +1 -0
  63. package/dist/server/agent-manager.d.ts +56 -0
  64. package/dist/server/agent-manager.js +171 -0
  65. package/dist/server/agent-manager.js.map +1 -0
  66. package/dist/server/connection-manager.d.ts +18 -0
  67. package/dist/server/connection-manager.js +52 -0
  68. package/dist/server/connection-manager.js.map +1 -0
  69. package/dist/server/event-mapper.d.ts +4 -0
  70. package/dist/server/event-mapper.js +31 -0
  71. package/dist/server/event-mapper.js.map +1 -0
  72. package/dist/server/query-runtime.d.ts +29 -0
  73. package/dist/server/query-runtime.js +61 -0
  74. package/dist/server/query-runtime.js.map +1 -0
  75. package/dist/server/rpc-router.d.ts +24 -0
  76. package/dist/server/rpc-router.js +165 -0
  77. package/dist/server/rpc-router.js.map +1 -0
  78. package/dist/server/rpc-types.d.ts +92 -0
  79. package/dist/server/rpc-types.js +2 -0
  80. package/dist/server/rpc-types.js.map +1 -0
  81. package/dist/server/ws-server.d.ts +22 -0
  82. package/dist/server/ws-server.js +84 -0
  83. package/dist/server/ws-server.js.map +1 -0
  84. package/dist/session/session-export.d.ts +0 -1
  85. package/dist/session/session-export.js +1 -2
  86. package/dist/session/session-export.js.map +1 -1
  87. package/dist/skills/skill-tool.js +1 -1
  88. package/dist/skills/skill-tool.js.map +1 -1
  89. package/dist/tasks/task-record.d.ts +50 -0
  90. package/dist/tasks/task-record.js +50 -0
  91. package/dist/tasks/task-record.js.map +1 -0
  92. package/dist/tasks/task-store.d.ts +9 -23
  93. package/dist/tasks/task-store.js +2 -37
  94. package/dist/tasks/task-store.js.map +1 -1
  95. package/dist/tasks/task-tools.d.ts +3 -18
  96. package/dist/tasks/task-tools.js +9 -89
  97. package/dist/tasks/task-tools.js.map +1 -1
  98. package/dist/tips.js +6 -6
  99. package/dist/tips.js.map +1 -1
  100. package/dist/tools/builtins/exec-tool.js +2 -2
  101. package/dist/tools/builtins/exec-tool.js.map +1 -1
  102. package/dist/tools/builtins/image-loader-tool.d.ts +22 -0
  103. package/dist/tools/builtins/image-loader-tool.js +235 -0
  104. package/dist/tools/builtins/image-loader-tool.js.map +1 -0
  105. package/dist/types/messages.d.ts +0 -1
  106. package/dist/types/messages.js.map +1 -1
  107. package/dist/web/html.js +3 -4
  108. package/dist/web/html.js.map +1 -1
  109. package/dist/web/index.d.ts +11 -5
  110. package/dist/web/index.js +68 -28
  111. package/dist/web/index.js.map +1 -1
  112. package/package.json +3 -1
package/README.md CHANGED
@@ -48,7 +48,7 @@ npm run standalone
48
48
  - Windows:`%APPDATA%\neo\.env`
49
49
  - macOS/Linux:`~/.config/neo/.env`
50
50
 
51
- 可以运行 `/login` 交互式填写并保存,也可以手动编辑。推荐格式是:`MODEL_PROVIDER` 只选择当前供应者;供应者专属的 key、base URL、model 分别写在 `OPENAI_*` / `DEEPSEEK_*` / `KIMI_*` 下;跨供应者共用的运行参数保留 `MODEL_*`。
51
+ 可以运行 `/login` 交互式填写并保存,也可以手动编辑。推荐格式是:`MODEL_PROVIDER` 只选择当前供应者;供应者专属的 key、base URL、model 分别写在 `OPENAI_*` / `ANTHROPIC_*` / `DEEPSEEK_*` / `KIMI_*` 下;跨供应者共用的运行参数保留 `MODEL_*`。
52
52
 
53
53
  ```env
54
54
  # Active provider
@@ -61,6 +61,13 @@ OPENAI_MODEL=gpt-5.5
61
61
  OPENAI_FALLBACK_MODEL=
62
62
  OPENAI_ENDPOINT=auto
63
63
 
64
+ # Anthropic provider settings
65
+ ANTHROPIC_API_KEY=your-anthropic-api-key
66
+ ANTHROPIC_BASE_URL=https://api.anthropic.com
67
+ ANTHROPIC_MODEL=claude-sonnet-4-6
68
+ ANTHROPIC_FALLBACK_MODEL=
69
+ ANTHROPIC_VERSION=2023-06-01
70
+
64
71
  # DeepSeek provider settings
65
72
  DEEPSEEK_API_KEY=your-deepseek-api-key
66
73
  DEEPSEEK_BASE_URL=https://api.deepseek.com
@@ -101,6 +108,7 @@ npm run smoke:session # 会话持久化冒烟测试
101
108
  npm run smoke:agents # 子代理/任务冒烟测试
102
109
  npm run smoke:skills # skill 模块冒烟测试
103
110
  npm run smoke:responses # OpenAI Responses mapper 冒烟测试
111
+ npm run smoke:anthropic # Anthropic Messages mapper 冒烟测试
104
112
  npm run smoke:deepseek # DeepSeek Chat mapper 冒烟测试
105
113
  npm run smoke:openai -- "Say pong"
106
114
  ```
@@ -197,9 +205,11 @@ src/
197
205
 
198
206
  ## 模型层
199
207
 
200
- 模型访问通过 `ModelGateway` 抽象。当前内置 provider 包括 OpenAI、DeepSeek 与 Kimi:
208
+ 模型访问通过 `ModelGateway` 抽象。当前内置 provider 包括 OpenAI、Anthropic、DeepSeek 与 Kimi:
201
209
 
202
210
  - `openai-adapter.ts`:端点选择、认证、超时、重试、Responses→Chat fallback。
211
+ - `anthropic-adapter.ts`:Anthropic Messages API provider,默认 `https://api.anthropic.com/v1/messages`,使用 `x-api-key` 与 `anthropic-version` 请求头。
212
+ - `anthropic-mapper.ts`:Anthropic Messages 请求、tool use / tool result、thinking、SSE 流事件归一化。
203
213
  - `deepseek-adapter.ts`:DeepSeek OpenAI 格式 Chat Completions,默认 `https://api.deepseek.com/chat/completions`,支持 `reasoning_content` 到 thinking 事件的归一化。
204
214
  - `kimi-adapter.ts`:Kimi/Moonshot OpenAI 兼容 Chat Completions,默认 `https://api.moonshot.cn/v1/chat/completions`,支持 `reasoning_content` 到 thinking 事件的归一化。
205
215
  - `openai-responses-mapper.ts`:Responses API 请求和流事件归一化。
@@ -212,12 +222,13 @@ src/
212
222
 
213
223
  | 变量 | 说明 |
214
224
  | --- | --- |
215
- | `MODEL_PROVIDER` | `openai`、`deepseek` 或 `kimi` |
216
- | `OPENAI_API_KEY` / `DEEPSEEK_API_KEY` / `KIMI_API_KEY` | 供应者专属 API Key;只读取当前 `MODEL_PROVIDER` 对应的一组变量;Kimi 也兼容 `MOONSHOT_API_KEY` |
217
- | `OPENAI_BASE_URL` / `DEEPSEEK_BASE_URL` / `KIMI_BASE_URL` | 供应者专属服务地址;DeepSeek 默认 `https://api.deepseek.com`,Kimi 默认 `https://api.moonshot.cn/v1`;国际站 key 使用 `https://api.moonshot.ai/v1` |
218
- | `OPENAI_MODEL` / `DEEPSEEK_MODEL` / `KIMI_MODEL` | 供应者专属默认模型;OpenAI 默认 `gpt-5.5`,DeepSeek 默认 `deepseek-chat`,Kimi 默认 `kimi-k2.6` |
219
- | `OPENAI_FALLBACK_MODEL` / `DEEPSEEK_FALLBACK_MODEL` / `KIMI_FALLBACK_MODEL` | 供应者专属 fallback model |
220
- | `OPENAI_ENDPOINT` | OpenAI 专用,`responses`、`chat` 或 `auto`;DeepSeek 与 Kimi 固定使用 Chat Completions |
225
+ | `MODEL_PROVIDER` | `openai`、`anthropic`、`deepseek` 或 `kimi` |
226
+ | `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` / `DEEPSEEK_API_KEY` / `KIMI_API_KEY` | 供应者专属 API Key;只读取当前 `MODEL_PROVIDER` 对应的一组变量;Kimi 也兼容 `MOONSHOT_API_KEY` |
227
+ | `OPENAI_BASE_URL` / `ANTHROPIC_BASE_URL` / `DEEPSEEK_BASE_URL` / `KIMI_BASE_URL` | 供应者专属服务地址;Anthropic 默认 `https://api.anthropic.com`,DeepSeek 默认 `https://api.deepseek.com`,Kimi 默认 `https://api.moonshot.cn/v1`;国际站 key 使用 `https://api.moonshot.ai/v1` |
228
+ | `OPENAI_MODEL` / `ANTHROPIC_MODEL` / `DEEPSEEK_MODEL` / `KIMI_MODEL` | 供应者专属默认模型;OpenAI 默认 `gpt-5.5`,Anthropic 默认 `claude-sonnet-4-6`,DeepSeek 默认 `deepseek-chat`,Kimi 默认 `kimi-k2.6` |
229
+ | `OPENAI_FALLBACK_MODEL` / `ANTHROPIC_FALLBACK_MODEL` / `DEEPSEEK_FALLBACK_MODEL` / `KIMI_FALLBACK_MODEL` | 供应者专属 fallback model |
230
+ | `OPENAI_ENDPOINT` | OpenAI 专用,`responses`、`chat` 或 `auto`;Anthropic 固定使用 Messages API;DeepSeek 与 Kimi 固定使用 Chat Completions |
231
+ | `ANTHROPIC_VERSION` | Anthropic 专用 API version header,默认 `2023-06-01` |
221
232
  | `MODEL_REASONING_EFFORT` | 共享运行设置:`none`、`minimal`、`low`、`medium`、`high`、`xhigh`、`max` |
222
233
  | `MODEL_REASONING_SUMMARY` | `auto`、`concise`、`detailed` |
223
234
  | `MODEL_MAX_OUTPUT_TOKENS` | 默认最大输出 token,未设置时为 800 |
@@ -566,7 +577,7 @@ import { createAgentTool } from "neoctl/agents/agent-tool";
566
577
 
567
578
  ## 当前边界
568
579
 
569
- - 模型 provider 配置类型目前内置 OpenAI、DeepSeek 与 Kimi provider。
580
+ - 模型 provider 配置类型目前内置 OpenAI、Anthropic、DeepSeek 与 Kimi provider。
570
581
  - `src/safety` 是 permission、sandbox、audit 的接口边界;默认 REPL 没有强制沙箱策略。
571
582
  - `src/skills` 已实现工具与 catalog,但默认 REPL 未装配 skill catalog。
572
583
  - `isolation=worktree/remote` 在 AgentTool schema 中保留为接口形态,当前本地实现主要通过 `cwd` 和独立消息上下文隔离。
@@ -10,6 +10,7 @@ export interface ContextBudgetOptions {
10
10
  microCompactTriggerRatio?: number;
11
11
  snipCompactTriggerRatio?: number;
12
12
  keepRecentMessages?: number;
13
+ keepRecentTokenBudget?: number;
13
14
  keepRecentToolResults?: number;
14
15
  summaryMaxChars?: number;
15
16
  compactModel?: string;
@@ -21,6 +22,8 @@ export interface CompactionResult {
21
22
  summary?: string;
22
23
  changed: boolean;
23
24
  reason?: CompactionReason;
25
+ charsFreed?: number;
26
+ /** @deprecated Use charsFreed instead. Alias kept for backward compatibility. */
24
27
  tokensFreed?: number;
25
28
  }
26
29
  export interface Compactor {
@@ -1,4 +1,6 @@
1
1
  import { createTextMessage } from "../types/messages.js";
2
+ import { estimateTextTokens } from "../core/context-metrics.js";
3
+ import { buildImageRegistry, extractRegistryFromBoundary, mergeImageRegistries, formatImageRegistryForContext } from "../core/image-registry.js";
2
4
  export const CLEARED_TOOL_RESULT_CONTENT = "[Old tool result content cleared]";
3
5
  export class DeterministicCompactor {
4
6
  async compact(messages, options = {}) {
@@ -44,9 +46,9 @@ export class ModelDrivenCompactor {
44
46
  return { messages: [...messages], changed: false, reason: "none" };
45
47
  }
46
48
  async manualCompact(messages, options = {}) {
47
- const keepRecentMessages = options.keepRecentMessages ?? 8;
48
- const recent = messages.slice(-keepRecentMessages);
49
- const older = messages.slice(0, Math.max(0, messages.length - keepRecentMessages));
49
+ const splitIndex = computeKeepRecentSplit(messages, options);
50
+ const recent = messages.slice(splitIndex);
51
+ const older = messages.slice(0, splitIndex);
50
52
  if (older.length === 0)
51
53
  return { messages: [...messages], changed: false, reason: "none" };
52
54
  try {
@@ -62,9 +64,9 @@ export class ModelDrivenCompactor {
62
64
  }
63
65
  async reactiveCompact(messages, error, options = {}) {
64
66
  const micro = microCompactIfNeeded(messages, options);
65
- const keepRecentMessages = options.keepRecentMessages ?? 8;
66
- const recent = micro.messages.slice(-keepRecentMessages);
67
- const older = micro.messages.slice(0, Math.max(0, micro.messages.length - keepRecentMessages));
67
+ const splitIndex = computeKeepRecentSplit(micro.messages, options);
68
+ const recent = micro.messages.slice(splitIndex);
69
+ const older = micro.messages.slice(0, splitIndex);
68
70
  try {
69
71
  const summary = await this.summarizeWithModel(older, buildReactiveCompactInstruction(error), options);
70
72
  const reactive = buildCompactionResult(micro.messages, recent, summary, "reactive_compact", true);
@@ -79,10 +81,11 @@ export class ModelDrivenCompactor {
79
81
  if (!shouldCompactForBudget(messages, options, options.autoCompactMaxChars ?? 50000)) {
80
82
  return { messages: [...messages], changed: false, reason: "none" };
81
83
  }
82
- const maxChars = options.autoCompactMaxChars ?? 50000;
83
- const keepRecentMessages = options.keepRecentMessages ?? 8;
84
- const recent = messages.slice(-keepRecentMessages);
85
- const older = messages.slice(0, Math.max(0, messages.length - keepRecentMessages));
84
+ const splitIndex = computeKeepRecentSplit(messages, options);
85
+ const recent = messages.slice(splitIndex);
86
+ const older = messages.slice(0, splitIndex);
87
+ if (older.length === 0)
88
+ return { messages: [...messages], changed: false, reason: "none" };
86
89
  try {
87
90
  const summary = await this.summarizeWithModel(older, AUTO_COMPACT_INSTRUCTIONS, options);
88
91
  return buildCompactionResult(messages, recent, summary, "autocompact", true);
@@ -142,20 +145,22 @@ export function snipCompactIfNeeded(messages, options = {}) {
142
145
  const triggerRatio = options.snipCompactTriggerRatio ?? 0.98;
143
146
  if (!shouldCompactForBudget(messages, options, maxChars, triggerRatio))
144
147
  return { messages: [...messages], changed: false, reason: "none" };
145
- const keepRecentMessages = options.keepRecentMessages ?? 6;
146
148
  const head = messages.slice(0, 1).filter((message) => !message.metadata?.compactBoundary);
147
- const tailStart = Math.max(head.length, messages.length - keepRecentMessages);
149
+ const tailStart = Math.max(head.length, computeKeepRecentSplit(messages, options, options.keepRecentMessages ?? 6));
148
150
  const tail = messages.slice(tailStart);
149
151
  const removed = messages.slice(head.length, tailStart);
150
152
  const summary = buildHistorySummary(removed, options.summaryMaxChars ?? 3000);
151
- const boundary = createCompactionBoundaryMessage(`Snipped older conversation for context budget.\n\n${summary}`, "snip", false);
153
+ const imageRegistry = buildMergedImageRegistry(messages);
154
+ const boundary = createCompactionBoundaryMessage(`Snipped older conversation for context budget.\n\n${summary}`, "snip", false, imageRegistry);
152
155
  const compacted = [...head, boundary, ...tail];
156
+ const freed = Math.max(0, estimateMessagesChars(messages) - estimateMessagesChars(compacted));
153
157
  return {
154
158
  messages: compacted,
155
159
  summary,
156
160
  changed: true,
157
161
  reason: "snip",
158
- tokensFreed: Math.max(0, estimateMessagesChars(messages) - estimateMessagesChars(compacted)),
162
+ charsFreed: freed,
163
+ tokensFreed: freed,
159
164
  };
160
165
  }
161
166
  export function microCompactIfNeeded(messages, options = {}) {
@@ -196,24 +201,42 @@ export function microCompactIfNeeded(messages, options = {}) {
196
201
  });
197
202
  if (!changed)
198
203
  return { messages: [...messages], changed: false, reason: "none" };
204
+ const freed = Math.max(0, estimateMessagesChars(messages) - estimateMessagesChars(compacted));
199
205
  return {
200
206
  messages: compacted,
201
207
  summary: `Cleared ${cleared} older tool result content block(s); kept the latest ${keepRecentToolResults}.`,
202
208
  changed: true,
203
209
  reason: "microcompact",
204
- tokensFreed: Math.max(0, estimateMessagesChars(messages) - estimateMessagesChars(compacted)),
210
+ charsFreed: freed,
211
+ tokensFreed: freed,
205
212
  };
206
213
  }
207
214
  export function autoCompactIfNeeded(messages, options = {}) {
208
215
  const maxChars = options.autoCompactMaxChars ?? 50000;
209
216
  if (!shouldCompactForBudget(messages, options, maxChars))
210
217
  return { messages: [...messages], changed: false, reason: "none" };
211
- const keepRecentMessages = options.keepRecentMessages ?? 8;
212
- const recent = messages.slice(-keepRecentMessages);
213
- const older = messages.slice(0, Math.max(0, messages.length - keepRecentMessages));
218
+ const splitIndex = computeKeepRecentSplit(messages, options);
219
+ const recent = messages.slice(splitIndex);
220
+ const older = messages.slice(0, splitIndex);
221
+ if (older.length === 0)
222
+ return { messages: [...messages], changed: false, reason: "none" };
214
223
  const summary = buildHistorySummary(older, options.summaryMaxChars ?? 5000);
215
224
  return buildCompactionResult(messages, recent, summary, "autocompact", false);
216
225
  }
226
+ function computeKeepRecentSplit(messages, options, fallbackCount) {
227
+ const tokenBudget = options.keepRecentTokenBudget;
228
+ const keepCount = fallbackCount ?? options.keepRecentMessages ?? 8;
229
+ if (!tokenBudget)
230
+ return Math.max(0, messages.length - keepCount);
231
+ let tokens = 0;
232
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
233
+ const msgTokens = estimateTextTokens(serializeMessage(messages[i]));
234
+ if (tokens + msgTokens > tokenBudget && i < messages.length - 1)
235
+ return i + 1;
236
+ tokens += msgTokens;
237
+ }
238
+ return 0;
239
+ }
217
240
  function shouldCompactForBudget(messages, options, fallbackMaxChars, triggerRatioOverride) {
218
241
  if (options.contextWindowTokens && options.estimatedInputTokens !== undefined) {
219
242
  const triggerRatio = triggerRatioOverride ?? options.autoCompactTriggerRatio ?? 0.92;
@@ -222,18 +245,18 @@ function shouldCompactForBudget(messages, options, fallbackMaxChars, triggerRati
222
245
  return estimateMessagesChars(messages) > fallbackMaxChars;
223
246
  }
224
247
  function manualCompactWithSummary(messages, options) {
225
- const keepRecentMessages = options.keepRecentMessages ?? 8;
226
- const recent = messages.slice(-keepRecentMessages);
227
- const older = messages.slice(0, Math.max(0, messages.length - keepRecentMessages));
248
+ const splitIndex = computeKeepRecentSplit(messages, options);
249
+ const recent = messages.slice(splitIndex);
250
+ const older = messages.slice(0, splitIndex);
228
251
  if (older.length === 0)
229
252
  return { messages: [...messages], changed: false, reason: "none" };
230
253
  const summary = buildHistorySummary(older, options.summaryMaxChars ?? 6000);
231
254
  return buildCompactionResult(messages, recent, summary || "No older messages were available to summarize.", "manualcompact", false);
232
255
  }
233
256
  function reactiveCompactWithSummary(messages, heading, options) {
234
- const keepRecentMessages = options.keepRecentMessages ?? 8;
235
- const recent = messages.slice(-keepRecentMessages);
236
- const older = messages.slice(0, Math.max(0, messages.length - keepRecentMessages));
257
+ const splitIndex = computeKeepRecentSplit(messages, options);
258
+ const recent = messages.slice(splitIndex);
259
+ const older = messages.slice(0, splitIndex);
237
260
  const summary = buildHistorySummary(older, options.summaryMaxChars ?? 6000);
238
261
  return buildCompactionResult(messages, recent, `${heading}\n\n${summary || "No older messages were available to summarize."}`, "reactive_compact", false);
239
262
  }
@@ -241,47 +264,113 @@ function pureCompactWithSanitizedSummary(messages, options) {
241
264
  if (messages.length === 0)
242
265
  return { messages: [], changed: false, reason: "none" };
243
266
  const summary = buildPureSummary(messages, options.summaryMaxChars ?? 4000);
244
- const boundary = createCompactionBoundaryMessage(`Pure compacted conversation after a transport/WAF risk block.\n\n${summary}`, "purecompact", false);
267
+ const imageRegistry = buildMergedImageRegistry(messages);
268
+ const boundary = createCompactionBoundaryMessage(`Pure compacted conversation after a transport/WAF risk block.\n\n${summary}`, "purecompact", false, imageRegistry);
269
+ const freed = Math.max(0, estimateMessagesChars(messages) - estimateMessagesChars([boundary]));
245
270
  return {
246
271
  messages: [boundary],
247
272
  summary,
248
273
  changed: true,
249
274
  reason: "purecompact",
250
- tokensFreed: Math.max(0, estimateMessagesChars(messages) - estimateMessagesChars([boundary])),
275
+ charsFreed: freed,
276
+ tokensFreed: freed,
251
277
  };
252
278
  }
279
+ function extractPersistentFacts(messages) {
280
+ const facts = [];
281
+ for (const message of messages) {
282
+ if (message.metadata?.compactBoundary) {
283
+ const text = extractText(message);
284
+ const existingFacts = text.match(/(?<=Persistent facts:\n)([\s\S]*?)(?=\n(?:Working context:|<\/compact_state>))/);
285
+ if (existingFacts) {
286
+ for (const line of existingFacts[1].split("\n")) {
287
+ const trimmed = line.trim();
288
+ if (trimmed && trimmed !== "- ...summary truncated...")
289
+ facts.push(trimmed);
290
+ }
291
+ }
292
+ continue;
293
+ }
294
+ for (const block of message.blocks) {
295
+ if (block.type === "text") {
296
+ const text = block.text;
297
+ if (message.role === "user") {
298
+ if (/\b(must|require|constraint|never|always|important|rule)\b/i.test(text)) {
299
+ facts.push(`- User constraint: ${text.replace(/\s+/g, " ").trim().slice(0, 200)}`);
300
+ }
301
+ }
302
+ if (/\b(error|fail|exception|bug)\b/i.test(text) && message.role !== "progress") {
303
+ const errorLine = text.split("\n").find((l) => /error|fail|exception|bug/i.test(l));
304
+ if (errorLine)
305
+ facts.push(`- Error encountered: ${errorLine.trim().slice(0, 200)}`);
306
+ }
307
+ if (/\b(decide|chosen|approach|architecture|design|agreed)\b/i.test(text) && message.role === "assistant") {
308
+ facts.push(`- Decision: ${text.replace(/\s+/g, " ").trim().slice(0, 200)}`);
309
+ }
310
+ }
311
+ if (block.type === "tool_result" && !block.ok) {
312
+ facts.push(`- Failed tool: ${block.name} (${serializeToolOutput(block.output).slice(0, 150)})`);
313
+ }
314
+ }
315
+ }
316
+ return dedupeLines(facts).slice(0, 30);
317
+ }
253
318
  function buildCompactionResult(originalMessages, recentMessages, summary, reason, modelDriven) {
254
319
  const label = reason === "autocompact"
255
320
  ? "Auto compacted earlier conversation."
256
321
  : reason === "manualcompact"
257
322
  ? "Manually compacted earlier conversation."
258
323
  : "Reactive compacted earlier conversation.";
259
- const boundary = createCompactionBoundaryMessage(`${label}\n\n${summary}`, reason, modelDriven);
324
+ const persistentFacts = extractPersistentFacts(originalMessages);
325
+ const layeredSummary = persistentFacts.length > 0
326
+ ? `Persistent facts:\n${persistentFacts.join("\n")}\n\nWorking context:\n${summary}`
327
+ : summary;
328
+ const imageRegistry = buildMergedImageRegistry(originalMessages);
329
+ const boundary = createCompactionBoundaryMessage(`${label}\n\n${layeredSummary}`, reason, modelDriven, imageRegistry);
260
330
  const compacted = [boundary, ...recentMessages];
331
+ const freed = Math.max(0, estimateMessagesChars(originalMessages) - estimateMessagesChars(compacted));
261
332
  return {
262
333
  messages: compacted,
263
- summary,
334
+ summary: layeredSummary,
264
335
  changed: true,
265
336
  reason,
266
- tokensFreed: Math.max(0, estimateMessagesChars(originalMessages) - estimateMessagesChars(compacted)),
337
+ charsFreed: freed,
338
+ tokensFreed: freed,
267
339
  };
268
340
  }
341
+ function buildMergedImageRegistry(messages) {
342
+ const previousRegistry = extractRegistryFromBoundary(messages);
343
+ const currentRegistry = buildImageRegistry(messages);
344
+ return previousRegistry
345
+ ? mergeImageRegistries(previousRegistry, currentRegistry)
346
+ : currentRegistry;
347
+ }
269
348
  function mergeResults(results, reason) {
270
349
  const changedResults = results.filter((result) => result.changed);
271
350
  const last = changedResults[changedResults.length - 1] ?? results[results.length - 1];
351
+ const freed = changedResults.reduce((total, result) => total + (result.charsFreed ?? result.tokensFreed ?? 0), 0);
272
352
  return {
273
353
  messages: last.messages,
274
354
  summary: changedResults.map((result) => result.summary).filter(Boolean).join("\n\n") || undefined,
275
355
  changed: changedResults.length > 0,
276
356
  reason,
277
- tokensFreed: changedResults.reduce((total, result) => total + (result.tokensFreed ?? 0), 0),
357
+ charsFreed: freed,
358
+ tokensFreed: freed,
278
359
  };
279
360
  }
280
- function createCompactionBoundaryMessage(summary, reason, modelDriven) {
361
+ function createCompactionBoundaryMessage(summary, reason, modelDriven, imageRegistry) {
362
+ const registryText = imageRegistry && imageRegistry.images.length > 0
363
+ ? `\n\n${formatImageRegistryForContext(imageRegistry)}`
364
+ : "";
281
365
  return {
282
- ...createTextMessage("system", renderInternalContinuationState(summary, reason)),
366
+ ...createTextMessage("system", renderInternalContinuationState(summary + registryText, reason)),
283
367
  isMeta: true,
284
- metadata: { compactBoundary: true, compactionReason: reason, modelDriven },
368
+ metadata: {
369
+ compactBoundary: true,
370
+ compactionReason: reason,
371
+ modelDriven,
372
+ ...(imageRegistry && imageRegistry.images.length > 0 ? { imageRegistry } : {}),
373
+ },
285
374
  };
286
375
  }
287
376
  function renderInternalContinuationState(summary, reason) {
@@ -300,16 +389,114 @@ function normalizeSummaryForInternalState(summary) {
300
389
  .join("\n")
301
390
  .trim();
302
391
  }
392
+ function scoreMessageImportance(message) {
393
+ let score = 1;
394
+ if (message.metadata?.compactBoundary)
395
+ return 0;
396
+ if (message.role === "user")
397
+ score += 3;
398
+ if (message.role === "system")
399
+ score += 2;
400
+ for (const block of message.blocks) {
401
+ if (block.type === "text") {
402
+ const text = block.text.toLowerCase();
403
+ if (/\b(error|fail|exception|panic|crash|bug)\b/.test(text))
404
+ score += 3;
405
+ if (/\b(must|require|constraint|important|critical|never|always)\b/.test(text))
406
+ score += 2;
407
+ if (/\b(decide|chosen|approach|plan|architecture|design)\b/.test(text))
408
+ score += 2;
409
+ if (/\b(todo|pending|remaining|next step|blocked)\b/.test(text))
410
+ score += 2;
411
+ }
412
+ if (block.type === "tool_result") {
413
+ if (!block.ok)
414
+ score += 3;
415
+ const output = serializeToolOutput(block.output);
416
+ if (/\b(error|fail|permission denied|not found)\b/i.test(output))
417
+ score += 2;
418
+ }
419
+ if (block.type === "tool_use")
420
+ score += 1;
421
+ }
422
+ return score;
423
+ }
424
+ function extractStructuredToolResult(block) {
425
+ const output = serializeToolOutput(block.output);
426
+ const status = block.ok ? "ok" : "error";
427
+ const toolName = block.name;
428
+ if (toolName.includes("exec") || toolName.includes("shell") || toolName.includes("bash")) {
429
+ const exitMatch = output.match(/exit[_ ]?code[:\s]*(\d+)/i);
430
+ const exitCode = exitMatch ? exitMatch[1] : (block.ok ? "0" : "non-zero");
431
+ const errorLines = output.split("\n").filter((line) => /error|fail|warning|denied/i.test(line)).slice(0, 3);
432
+ const errorSummary = errorLines.length > 0 ? ` key_output: ${errorLines.join("; ").slice(0, 200)}` : "";
433
+ return `${toolName}(${status}, exit=${exitCode}${errorSummary})`;
434
+ }
435
+ if (toolName.includes("read") || toolName.includes("write") || toolName.includes("edit") || toolName.includes("file")) {
436
+ const pathMatch = output.match(/(?:path|file)[:\s]*["']?([^\s"']+)/i);
437
+ const path = pathMatch ? pathMatch[1] : "";
438
+ return `${toolName}(${status}${path ? `, path=${path}` : ""}, ${output.length} chars)`;
439
+ }
440
+ if (toolName.includes("search") || toolName.includes("grep") || toolName.includes("find")) {
441
+ const matchCount = (output.match(/\n/g) || []).length;
442
+ return `${toolName}(${status}, ~${matchCount} matches, ${output.length} chars)`;
443
+ }
444
+ if (output.length <= 200)
445
+ return `${toolName}(${status}): ${output}`;
446
+ return `${toolName}(${status}, ${output.length} chars): ${output.slice(0, 150)}...`;
447
+ }
303
448
  function buildHistorySummary(messages, maxChars) {
304
449
  if (messages.length === 0)
305
450
  return "";
306
- const lines = messages.map((message) => {
307
- const text = serializeMessageForSummary(message).replace(/\s+/g, " ").trim();
308
- return `- ${message.role}: ${text.slice(0, 500)}`;
309
- });
310
- const joined = lines.join("\n");
451
+ const scored = messages.map((message) => ({
452
+ message,
453
+ importance: scoreMessageImportance(message),
454
+ }));
455
+ scored.sort((a, b) => b.importance - a.importance);
456
+ const highPriorityLines = [];
457
+ const lowPriorityLines = [];
458
+ for (const { message, importance } of scored) {
459
+ const line = buildSmartMessageSummary(message);
460
+ if (importance >= 4)
461
+ highPriorityLines.push(line);
462
+ else
463
+ lowPriorityLines.push(line);
464
+ }
465
+ const sections = [];
466
+ if (highPriorityLines.length > 0) {
467
+ sections.push("Key context:\n" + highPriorityLines.join("\n"));
468
+ }
469
+ if (lowPriorityLines.length > 0) {
470
+ sections.push("Other activity:\n" + lowPriorityLines.join("\n"));
471
+ }
472
+ const joined = sections.join("\n\n");
311
473
  return joined.length > maxChars ? `${joined.slice(0, maxChars)}\n- ...summary truncated...` : joined;
312
474
  }
475
+ function buildSmartMessageSummary(message) {
476
+ const parts = [];
477
+ for (const block of message.blocks) {
478
+ if (block.type === "text") {
479
+ const text = block.text.replace(/\s+/g, " ").trim();
480
+ parts.push(text.length > 400 ? `${text.slice(0, 400)}...` : text);
481
+ }
482
+ else if (block.type === "image") {
483
+ const label = block.label ? `"${block.label}"` : "unlabeled";
484
+ const stored = block.storage?.path ? `, stored at ${block.storage.path}` : "";
485
+ parts.push(`[image: ${label}, ${block.mimeType}${stored}]`);
486
+ }
487
+ else if (block.type === "tool_result") {
488
+ parts.push(extractStructuredToolResult(block));
489
+ }
490
+ else if (block.type === "tool_use") {
491
+ const input = typeof block.input === "string" ? block.input : JSON.stringify(block.input);
492
+ parts.push(`${block.name}(${input.slice(0, 120)})`);
493
+ }
494
+ else if (block.type === "thinking") {
495
+ parts.push("[thinking omitted]");
496
+ }
497
+ }
498
+ return `- ${message.role}: ${parts.join(" | ")}`;
499
+ }
313
500
  function buildPureSummary(messages, maxChars) {
314
501
  const userLines = [];
315
502
  const assistantLines = [];
@@ -440,8 +627,12 @@ function serializeMessageForSummary(message) {
440
627
  function serializeBlock(block) {
441
628
  if (block.type === "text")
442
629
  return block.text;
443
- if (block.type === "image")
444
- return block.label ?? `[image ${block.mimeType}]`;
630
+ if (block.type === "image") {
631
+ const estimatedBytes = Math.floor(block.data.length * 0.75);
632
+ const tiles = Math.max(1, Math.ceil(estimatedBytes / 200_000));
633
+ const estimatedTokenEquivalentChars = tiles * 85 * 4;
634
+ return `${"x".repeat(estimatedTokenEquivalentChars)}`;
635
+ }
445
636
  if (block.type === "thinking")
446
637
  return `thinking: ${block.text}`;
447
638
  if (block.type === "tool_use")
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/context/compaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/context/compaction.ts"],"names":[],"mappings":"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"}