fixo-cli 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fixo-cli might be problematic. Click here for more details.

Files changed (222) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +18 -14
  3. package/dist/agent/agent-client.d.ts +28 -6
  4. package/dist/agent/agent-client.d.ts.map +1 -1
  5. package/dist/agent/agent-client.js +118 -39
  6. package/dist/agent/agent-client.js.map +1 -1
  7. package/dist/agent/agent-pool.d.ts +55 -6
  8. package/dist/agent/agent-pool.d.ts.map +1 -1
  9. package/dist/agent/agent-pool.js +120 -20
  10. package/dist/agent/agent-pool.js.map +1 -1
  11. package/dist/agent/auto-verifier.d.ts +55 -0
  12. package/dist/agent/auto-verifier.d.ts.map +1 -0
  13. package/dist/agent/auto-verifier.js +50 -0
  14. package/dist/agent/auto-verifier.js.map +1 -0
  15. package/dist/agent/command-parser.d.ts +37 -0
  16. package/dist/agent/command-parser.d.ts.map +1 -1
  17. package/dist/agent/command-parser.js +473 -1
  18. package/dist/agent/command-parser.js.map +1 -1
  19. package/dist/agent/context-builder.d.ts +24 -0
  20. package/dist/agent/context-builder.d.ts.map +1 -0
  21. package/dist/agent/context-builder.js +197 -0
  22. package/dist/agent/context-builder.js.map +1 -0
  23. package/dist/agent/conversation.d.ts +32 -2
  24. package/dist/agent/conversation.d.ts.map +1 -1
  25. package/dist/agent/conversation.js +84 -9
  26. package/dist/agent/conversation.js.map +1 -1
  27. package/dist/agent/duration.d.ts +24 -0
  28. package/dist/agent/duration.d.ts.map +1 -0
  29. package/dist/agent/duration.js +42 -0
  30. package/dist/agent/duration.js.map +1 -0
  31. package/dist/agent/file-writing-rules.d.ts +19 -0
  32. package/dist/agent/file-writing-rules.d.ts.map +1 -0
  33. package/dist/agent/file-writing-rules.js +31 -0
  34. package/dist/agent/file-writing-rules.js.map +1 -0
  35. package/dist/agent/mcp-bridge.js +1 -1
  36. package/dist/agent/mcp-bridge.js.map +1 -1
  37. package/dist/agent/orchestrator.d.ts +45 -0
  38. package/dist/agent/orchestrator.d.ts.map +1 -1
  39. package/dist/agent/orchestrator.js +140 -3
  40. package/dist/agent/orchestrator.js.map +1 -1
  41. package/dist/agent/parser-adapter.d.ts +17 -0
  42. package/dist/agent/parser-adapter.d.ts.map +1 -1
  43. package/dist/agent/parser-adapter.js +311 -7
  44. package/dist/agent/parser-adapter.js.map +1 -1
  45. package/dist/agent/predictive-gate.d.ts.map +1 -1
  46. package/dist/agent/predictive-gate.js +4 -1
  47. package/dist/agent/predictive-gate.js.map +1 -1
  48. package/dist/agent/provider-cooldown.d.ts.map +1 -1
  49. package/dist/agent/provider-cooldown.js +3 -2
  50. package/dist/agent/provider-cooldown.js.map +1 -1
  51. package/dist/agent/providers-manager.d.ts +5 -0
  52. package/dist/agent/providers-manager.d.ts.map +1 -1
  53. package/dist/agent/providers-manager.js +119 -8
  54. package/dist/agent/providers-manager.js.map +1 -1
  55. package/dist/agent/repo-map.d.ts +18 -1
  56. package/dist/agent/repo-map.d.ts.map +1 -1
  57. package/dist/agent/repo-map.js +144 -54
  58. package/dist/agent/repo-map.js.map +1 -1
  59. package/dist/agent/retry.js +1 -2
  60. package/dist/agent/retry.js.map +1 -1
  61. package/dist/agent/single-agent.d.ts +13 -0
  62. package/dist/agent/single-agent.d.ts.map +1 -1
  63. package/dist/agent/single-agent.js +225 -37
  64. package/dist/agent/single-agent.js.map +1 -1
  65. package/dist/agent/skills.d.ts.map +1 -1
  66. package/dist/agent/skills.js +2 -1
  67. package/dist/agent/skills.js.map +1 -1
  68. package/dist/agent/subagent.js +2 -2
  69. package/dist/agent/subagent.js.map +1 -1
  70. package/dist/agent/task-router.d.ts +46 -0
  71. package/dist/agent/task-router.d.ts.map +1 -0
  72. package/dist/agent/task-router.js +352 -0
  73. package/dist/agent/task-router.js.map +1 -0
  74. package/dist/agent/telemetry.d.ts +29 -1
  75. package/dist/agent/telemetry.d.ts.map +1 -1
  76. package/dist/agent/telemetry.js +29 -11
  77. package/dist/agent/telemetry.js.map +1 -1
  78. package/dist/agent/tool-definitions.d.ts +3 -0
  79. package/dist/agent/tool-definitions.d.ts.map +1 -0
  80. package/dist/agent/tool-definitions.js +519 -0
  81. package/dist/agent/tool-definitions.js.map +1 -0
  82. package/dist/agent/tool-executor.d.ts +6 -1
  83. package/dist/agent/tool-executor.d.ts.map +1 -1
  84. package/dist/agent/tool-executor.js +99 -553
  85. package/dist/agent/tool-executor.js.map +1 -1
  86. package/dist/agent/tools/command-tools.d.ts +6 -0
  87. package/dist/agent/tools/command-tools.d.ts.map +1 -0
  88. package/dist/agent/tools/command-tools.js +104 -0
  89. package/dist/agent/tools/command-tools.js.map +1 -0
  90. package/dist/agent/tools/file-tools.d.ts +15 -0
  91. package/dist/agent/tools/file-tools.d.ts.map +1 -0
  92. package/dist/agent/tools/file-tools.js +551 -0
  93. package/dist/agent/tools/file-tools.js.map +1 -0
  94. package/dist/agent/tools/todo-tools.d.ts +3 -0
  95. package/dist/agent/tools/todo-tools.d.ts.map +1 -0
  96. package/dist/agent/tools/todo-tools.js +70 -0
  97. package/dist/agent/tools/todo-tools.js.map +1 -0
  98. package/dist/agent/web-impl.d.ts.map +1 -1
  99. package/dist/agent/web-impl.js +45 -0
  100. package/dist/agent/web-impl.js.map +1 -1
  101. package/dist/agent/worker-agent.d.ts +3 -1
  102. package/dist/agent/worker-agent.d.ts.map +1 -1
  103. package/dist/agent/worker-agent.js +56 -16
  104. package/dist/agent/worker-agent.js.map +1 -1
  105. package/dist/config.d.ts +253 -1
  106. package/dist/config.d.ts.map +1 -1
  107. package/dist/config.js +81 -1
  108. package/dist/config.js.map +1 -1
  109. package/dist/git/git-manager.d.ts +33 -2
  110. package/dist/git/git-manager.d.ts.map +1 -1
  111. package/dist/git/git-manager.js +111 -15
  112. package/dist/git/git-manager.js.map +1 -1
  113. package/dist/git/git-ops.d.ts.map +1 -1
  114. package/dist/git/git-ops.js +2 -1
  115. package/dist/git/git-ops.js.map +1 -1
  116. package/dist/index.js +89 -8
  117. package/dist/index.js.map +1 -1
  118. package/dist/lsp/lsp-manager.js +1 -1
  119. package/dist/lsp/lsp-manager.js.map +1 -1
  120. package/dist/model-outcomes.d.ts.map +1 -1
  121. package/dist/model-outcomes.js +2 -1
  122. package/dist/model-outcomes.js.map +1 -1
  123. package/dist/planner.d.ts +0 -9
  124. package/dist/planner.d.ts.map +1 -1
  125. package/dist/planner.js +0 -9
  126. package/dist/planner.js.map +1 -1
  127. package/dist/project-memory.d.ts +12 -1
  128. package/dist/project-memory.d.ts.map +1 -1
  129. package/dist/project-memory.js +8 -6
  130. package/dist/project-memory.js.map +1 -1
  131. package/dist/runtime/loop-mitigation.d.ts +119 -0
  132. package/dist/runtime/loop-mitigation.d.ts.map +1 -0
  133. package/dist/runtime/loop-mitigation.js +192 -0
  134. package/dist/runtime/loop-mitigation.js.map +1 -0
  135. package/dist/runtime/os-sandbox.d.ts +100 -0
  136. package/dist/runtime/os-sandbox.d.ts.map +1 -0
  137. package/dist/runtime/os-sandbox.js +246 -0
  138. package/dist/runtime/os-sandbox.js.map +1 -0
  139. package/dist/runtime/run-inventory.d.ts +17 -0
  140. package/dist/runtime/run-inventory.d.ts.map +1 -0
  141. package/dist/runtime/run-inventory.js +49 -0
  142. package/dist/runtime/run-inventory.js.map +1 -0
  143. package/dist/runtime/session-snapshots.d.ts +52 -2
  144. package/dist/runtime/session-snapshots.d.ts.map +1 -1
  145. package/dist/runtime/session-snapshots.js +76 -1
  146. package/dist/runtime/session-snapshots.js.map +1 -1
  147. package/dist/runtime/staging.d.ts.map +1 -1
  148. package/dist/runtime/staging.js +4 -1
  149. package/dist/runtime/staging.js.map +1 -1
  150. package/dist/runtime/task-session.d.ts +14 -0
  151. package/dist/runtime/task-session.d.ts.map +1 -1
  152. package/dist/runtime/task-session.js +26 -0
  153. package/dist/runtime/task-session.js.map +1 -1
  154. package/dist/setup-wizard.d.ts +11 -3
  155. package/dist/setup-wizard.d.ts.map +1 -1
  156. package/dist/setup-wizard.js +113 -15
  157. package/dist/setup-wizard.js.map +1 -1
  158. package/dist/types.d.ts +8 -0
  159. package/dist/types.d.ts.map +1 -1
  160. package/dist/ui/commands/context-commands.d.ts +7 -0
  161. package/dist/ui/commands/context-commands.d.ts.map +1 -0
  162. package/dist/ui/commands/context-commands.js +241 -0
  163. package/dist/ui/commands/context-commands.js.map +1 -0
  164. package/dist/ui/commands/index.d.ts +3 -0
  165. package/dist/ui/commands/index.d.ts.map +1 -0
  166. package/dist/ui/commands/index.js +46 -0
  167. package/dist/ui/commands/index.js.map +1 -0
  168. package/dist/ui/commands/info-commands.d.ts +15 -0
  169. package/dist/ui/commands/info-commands.d.ts.map +1 -0
  170. package/dist/ui/commands/info-commands.js +122 -0
  171. package/dist/ui/commands/info-commands.js.map +1 -0
  172. package/dist/ui/commands/model-commands.d.ts +5 -0
  173. package/dist/ui/commands/model-commands.d.ts.map +1 -0
  174. package/dist/ui/commands/model-commands.js +417 -0
  175. package/dist/ui/commands/model-commands.js.map +1 -0
  176. package/dist/ui/commands/session-commands.d.ts +5 -0
  177. package/dist/ui/commands/session-commands.d.ts.map +1 -0
  178. package/dist/ui/commands/session-commands.js +154 -0
  179. package/dist/ui/commands/session-commands.js.map +1 -0
  180. package/dist/ui/commands/task-commands.d.ts +8 -0
  181. package/dist/ui/commands/task-commands.d.ts.map +1 -0
  182. package/dist/ui/commands/task-commands.js +152 -0
  183. package/dist/ui/commands/task-commands.js.map +1 -0
  184. package/dist/ui/commands/types.d.ts +46 -0
  185. package/dist/ui/commands/types.d.ts.map +1 -0
  186. package/dist/ui/commands/types.js +2 -0
  187. package/dist/ui/commands/types.js.map +1 -0
  188. package/dist/ui/commands/workspace-commands.d.ts +8 -0
  189. package/dist/ui/commands/workspace-commands.d.ts.map +1 -0
  190. package/dist/ui/commands/workspace-commands.js +131 -0
  191. package/dist/ui/commands/workspace-commands.js.map +1 -0
  192. package/dist/ui/loading-animation.d.ts +24 -0
  193. package/dist/ui/loading-animation.d.ts.map +1 -0
  194. package/dist/ui/loading-animation.js +123 -0
  195. package/dist/ui/loading-animation.js.map +1 -0
  196. package/dist/ui/markdown-stream.js +2 -2
  197. package/dist/ui/markdown-stream.js.map +1 -1
  198. package/dist/ui/prompt.d.ts +7 -0
  199. package/dist/ui/prompt.d.ts.map +1 -1
  200. package/dist/ui/prompt.js +461 -1143
  201. package/dist/ui/prompt.js.map +1 -1
  202. package/dist/ui/render-primitives.d.ts +6 -0
  203. package/dist/ui/render-primitives.d.ts.map +1 -1
  204. package/dist/ui/render-primitives.js +30 -13
  205. package/dist/ui/render-primitives.js.map +1 -1
  206. package/dist/ui/render.d.ts.map +1 -1
  207. package/dist/ui/render.js +2 -0
  208. package/dist/ui/render.js.map +1 -1
  209. package/dist/ui/session-header.d.ts +13 -0
  210. package/dist/ui/session-header.d.ts.map +1 -1
  211. package/dist/ui/session-header.js +6 -0
  212. package/dist/ui/session-header.js.map +1 -1
  213. package/package.json +22 -4
  214. package/scripts/check-vendor-wasm.js +55 -0
  215. package/vendor/tree-sitter-bash.wasm +0 -0
  216. package/vendor/tree-sitter-go.wasm +0 -0
  217. package/vendor/tree-sitter-javascript.wasm +0 -0
  218. package/vendor/tree-sitter-python.wasm +0 -0
  219. package/vendor/tree-sitter-rust.wasm +0 -0
  220. package/vendor/tree-sitter-tsx.wasm +0 -0
  221. package/vendor/tree-sitter-typescript.wasm +0 -0
  222. package/vendor/tree-sitter.wasm +0 -0
@@ -0,0 +1,197 @@
1
+ /**
2
+ * context-builder.ts — Phase 3.2 automatic LSP-driven context.
3
+ *
4
+ * Before: `lsp_find_references` was a model-callable tool. The agent
5
+ * had to *think* to call it before editing a function — meaning that
6
+ * unless the prompt explicitly asked for "find all callers", the
7
+ * model would happily rename `foo()` in one file and leave the three
8
+ * other call sites broken.
9
+ *
10
+ * After: when the agent is about to edit a known set of files
11
+ * (user-pinned via /select, or planner-identified as mutation
12
+ * targets), this module proactively asks the LSP for the references
13
+ * of each top-level symbol and prepends a compact "Cross-file
14
+ * references" block to the first system prompt. The model now sees
15
+ * the call sites without having to think to ask.
16
+ *
17
+ * Graceful degradation:
18
+ * - No LSP server on $PATH (typescript-language-server / pyright /
19
+ * gopls / rust-analyzer) → returns empty string, scan continues.
20
+ * - Target file doesn't exist → skip, no error.
21
+ * - Parser adapter unavailable → skip the symbol pre-extraction
22
+ * step; the function caller falls back to silent no-op.
23
+ * - LSP call times out or errors → skip that target, continue.
24
+ *
25
+ * In all failure modes the caller can prepend the returned string
26
+ * unconditionally; an empty string is a clean no-op for the system
27
+ * prompt.
28
+ */
29
+ import fs from 'node:fs';
30
+ import path from 'node:path';
31
+ import { ParserFactory, languageIdFromExtension, } from './parser-adapter.js';
32
+ /** Default caps tuned to keep the context block compact. */
33
+ const MAX_SYMBOLS_PER_FILE = 4;
34
+ const MAX_REFS_PER_SYMBOL = 6;
35
+ const MAX_TARGETS = 8;
36
+ const MAX_LSP_WAIT_MS = 1500;
37
+ /**
38
+ * Build a markdown block describing cross-file references for the
39
+ * given targets. Returns an empty string when no targets, no LSP
40
+ * support, or no references were found — making this safe to splice
41
+ * unconditionally into a system prompt.
42
+ *
43
+ * `getLspManager` is taken as a callable rather than imported
44
+ * directly so this module stays out of the tool-executor's import
45
+ * cycle and is testable with a stub.
46
+ */
47
+ export async function gatherReferencesForTargets(cwd, targets, getLspManager) {
48
+ if (targets.length === 0)
49
+ return '';
50
+ const limited = targets.slice(0, MAX_TARGETS);
51
+ const lsp = getLspManager();
52
+ if (!lsp)
53
+ return '';
54
+ // Load the parser adapter once. Used for symbol-line lookup when
55
+ // the caller didn't pre-specify symbols.
56
+ let adapter = null;
57
+ try {
58
+ adapter = await ParserFactory.getParser();
59
+ }
60
+ catch {
61
+ // safe: parser unavailable → we can still proceed if the caller
62
+ // pre-specified explicit symbols, otherwise we'll produce nothing.
63
+ adapter = null;
64
+ }
65
+ const blocks = [];
66
+ for (const target of limited) {
67
+ if (!fs.existsSync(target.file))
68
+ continue;
69
+ const ext = path.extname(target.file);
70
+ const language = languageIdFromExtension(ext);
71
+ if (language === 'generic')
72
+ continue;
73
+ let symbolsForTarget = [];
74
+ if (target.symbols && target.symbols.length > 0) {
75
+ symbolsForTarget = target.symbols.slice(0, MAX_SYMBOLS_PER_FILE).map((name) => ({
76
+ name,
77
+ line: locateSymbolLine(target.file, name) ?? 1,
78
+ }));
79
+ }
80
+ else if (adapter) {
81
+ try {
82
+ if (adapter.name === 'tree-sitter') {
83
+ // The parser may not have pre-loaded this language yet.
84
+ // We load it best-effort; failure just means the regex
85
+ // extractor runs instead.
86
+ const ts = adapter;
87
+ if (ts.loadLanguage)
88
+ await ts.loadLanguage(language);
89
+ }
90
+ const source = fs.readFileSync(target.file, 'utf-8');
91
+ const symbols = adapter.extractSymbols(source, language);
92
+ symbolsForTarget = pickTopSymbols(symbols).map((s) => ({ name: s.name, line: s.line }));
93
+ }
94
+ catch {
95
+ // safe: this target gets no symbols → skipped below
96
+ continue;
97
+ }
98
+ }
99
+ else {
100
+ continue;
101
+ }
102
+ if (symbolsForTarget.length === 0)
103
+ continue;
104
+ const fileRel = path.relative(cwd, target.file) || target.file;
105
+ const symbolLines = [];
106
+ for (const sym of symbolsForTarget) {
107
+ const refs = await callWithTimeout(lsp.findReferences(target.file, sym.line - 1, 0), MAX_LSP_WAIT_MS);
108
+ const formatted = formatReferences(cwd, target.file, refs);
109
+ if (formatted.length === 0)
110
+ continue;
111
+ symbolLines.push(`- \`${sym.name}\` (${fileRel}:${sym.line}) → ${formatted.slice(0, MAX_REFS_PER_SYMBOL).join(', ')}`);
112
+ }
113
+ if (symbolLines.length > 0) {
114
+ blocks.push(`### ${fileRel}\n${symbolLines.join('\n')}`);
115
+ }
116
+ }
117
+ if (blocks.length === 0)
118
+ return '';
119
+ return [
120
+ '## Cross-file references (LSP-derived, auto-collected)',
121
+ 'These are symbols defined in files this run is likely to mutate, with their other call sites. Update all sites when renaming or changing a signature.',
122
+ '',
123
+ ...blocks,
124
+ ].join('\n');
125
+ }
126
+ /* ──────────────────────── Helpers ──────────────────────── */
127
+ /** Pick the most likely "important" symbols: exported first, then by source order. */
128
+ function pickTopSymbols(symbols) {
129
+ const exported = symbols.filter((s) => s.exported);
130
+ const pool = exported.length > 0 ? exported : symbols;
131
+ return pool.slice(0, MAX_SYMBOLS_PER_FILE);
132
+ }
133
+ /** Find the 1-based line where `symbolName` is declared. Returns null on miss. */
134
+ function locateSymbolLine(filePath, symbolName) {
135
+ try {
136
+ const content = fs.readFileSync(filePath, 'utf-8');
137
+ const lines = content.split('\n');
138
+ // Look for a word boundary match preceded by a likely declaration
139
+ // keyword. This is a heuristic — the LSP only needs a line/column
140
+ // anywhere inside the identifier to resolve references.
141
+ const re = new RegExp(`\\b${escapeRegExp(symbolName)}\\b`);
142
+ for (let i = 0; i < lines.length; i++) {
143
+ if (re.test(lines[i]))
144
+ return i + 1;
145
+ }
146
+ }
147
+ catch {
148
+ // safe: file unreadable → no line, caller skips
149
+ }
150
+ return null;
151
+ }
152
+ function escapeRegExp(s) {
153
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
154
+ }
155
+ function formatReferences(cwd, originFile, refs) {
156
+ if (!Array.isArray(refs))
157
+ return [];
158
+ const seen = new Set();
159
+ const out = [];
160
+ for (const ref of refs) {
161
+ if (!ref?.uri || !ref.range?.start)
162
+ continue;
163
+ let abs = ref.uri;
164
+ if (abs.startsWith('file://'))
165
+ abs = decodeURIComponent(abs.slice(7));
166
+ // Skip the origin file itself — those references are local and
167
+ // already obvious to the model from the file it's about to edit.
168
+ if (path.resolve(abs) === path.resolve(originFile))
169
+ continue;
170
+ const rel = path.relative(cwd, abs) || abs;
171
+ const key = `${rel}:${ref.range.start.line + 1}`;
172
+ if (seen.has(key))
173
+ continue;
174
+ seen.add(key);
175
+ out.push(key);
176
+ }
177
+ return out;
178
+ }
179
+ async function callWithTimeout(promise, ms) {
180
+ let timer = null;
181
+ try {
182
+ return await Promise.race([
183
+ promise,
184
+ new Promise((resolve) => {
185
+ timer = setTimeout(() => resolve(null), ms);
186
+ }),
187
+ ]);
188
+ }
189
+ catch {
190
+ return null;
191
+ }
192
+ finally {
193
+ if (timer)
194
+ clearTimeout(timer);
195
+ }
196
+ }
197
+ //# sourceMappingURL=context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/agent/context-builder.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,11 @@ import type { AgentClient } from './agent-client.js';
17
17
  * tokens (predictive gate, budget planner) can use the answer directly.
18
18
  */
19
19
  export declare function resolveModelContextLimit(model: string | undefined | null): number;
20
+ /**
21
+ * Strips known model-special tokens from user content or tool results.
22
+ * Prevents prompt-injection-style early termination or role switching.
23
+ */
24
+ export declare function sanitizeUserContent(text: string): string;
20
25
  export declare class ConversationManager {
21
26
  private history;
22
27
  private maxTokenBudget;
@@ -26,9 +31,11 @@ export declare class ConversationManager {
26
31
  /**
27
32
  * When set (>0), `getTotalTokens()` returns this value instead of
28
33
  * summing the history. Used by `--resume` so the restored session
29
- * shows the same token count the user saw at save time.
34
+ * shows the same token count the user saw at save time. It is also
35
+ * used to cache the provider-reported total tokens for accurate UI.
30
36
  */
31
37
  private tokenOverride;
38
+ private lastSystemTokens;
32
39
  constructor(maxTokenBudget?: number);
33
40
  /**
34
41
  * Auto-configure the context budget based on the model being used.
@@ -55,8 +62,14 @@ export declare class ConversationManager {
55
62
  private estimateMessageTokens;
56
63
  /**
57
64
  * Calculate the total estimated token count across the entire history.
65
+ * Includes system prompt and summary tokens if known.
58
66
  */
59
67
  getTotalTokens(): number;
68
+ /**
69
+ * Update the UI's understanding of our token usage by feeding back
70
+ * the exact count reported by the LLM provider.
71
+ */
72
+ setProviderReportedTokens(tokens: number): void;
60
73
  /**
61
74
  * Restore the conversation from a previously-saved snapshot. Replaces
62
75
  * the entire history, summary, and token override atomically. The
@@ -169,6 +182,12 @@ export interface SessionData {
169
182
  completion_tokens: number;
170
183
  total_tokens: number;
171
184
  };
185
+ /**
186
+ * User-chosen human-readable label. Distinct from `summary`
187
+ * (auto-derived) and `sessionId` (durable). Renames keep the
188
+ * filename and sessionId stable so resume URLs stay valid.
189
+ */
190
+ label?: string;
172
191
  }
173
192
  export declare class SessionManager {
174
193
  static getSessionsDir(): string;
@@ -176,7 +195,7 @@ export declare class SessionManager {
176
195
  prompt_tokens: number;
177
196
  completion_tokens: number;
178
197
  total_tokens: number;
179
- }, sessionId?: string): string;
198
+ }, sessionId?: string, label?: string): string;
180
199
  static listSessions(): Array<{
181
200
  sessionId: string;
182
201
  timestamp: string;
@@ -184,7 +203,18 @@ export declare class SessionManager {
184
203
  messageCount: number;
185
204
  summary: string;
186
205
  totalTokens: number;
206
+ label?: string;
187
207
  }>;
188
208
  static loadSession(id: string): SessionData;
209
+ /**
210
+ * Atomically updates the `label` field of an existing session
211
+ * file. The on-disk filename (the session id) stays unchanged so
212
+ * existing /resume invocations keep working after a rename.
213
+ *
214
+ * Returns true on success, false if the session does not exist.
215
+ * Throws if the label fails validation — callers should pre-validate
216
+ * via {@link isValidSessionLabel} for a cleaner UX message.
217
+ */
218
+ static renameSession(id: string, label: string | undefined): boolean;
189
219
  }
190
220
  //# sourceMappingURL=conversation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/agent/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/agent/conversation.ts"],"names":[],"mappings":"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"}
@@ -110,6 +110,18 @@ Rules:
110
110
  - Preserve exact file paths, commands, error strings, and identifiers.
111
111
  - Do not mention the summary process or that context was compacted.`;
112
112
  // ---------------------------------------------------------------------------
113
+ // Sanitization
114
+ // ---------------------------------------------------------------------------
115
+ /**
116
+ * Strips known model-special tokens from user content or tool results.
117
+ * Prevents prompt-injection-style early termination or role switching.
118
+ */
119
+ export function sanitizeUserContent(text) {
120
+ if (!text)
121
+ return text;
122
+ return text.replace(/<\|(?:endoftext|im_start|im_end|fim_[a-zA-Z0-9_]+|user|assistant|system)\|>/gi, '[SPECIAL_TOKEN_REMOVED]');
123
+ }
124
+ // ---------------------------------------------------------------------------
113
125
  // ConversationManager
114
126
  // ---------------------------------------------------------------------------
115
127
  export class ConversationManager {
@@ -121,9 +133,11 @@ export class ConversationManager {
121
133
  /**
122
134
  * When set (>0), `getTotalTokens()` returns this value instead of
123
135
  * summing the history. Used by `--resume` so the restored session
124
- * shows the same token count the user saw at save time.
136
+ * shows the same token count the user saw at save time. It is also
137
+ * used to cache the provider-reported total tokens for accurate UI.
125
138
  */
126
139
  tokenOverride = 0;
140
+ lastSystemTokens = 0;
127
141
  constructor(maxTokenBudget = DEFAULT_MAX_TOKEN_BUDGET) {
128
142
  this.maxTokenBudget = maxTokenBudget;
129
143
  }
@@ -174,11 +188,21 @@ export class ConversationManager {
174
188
  }
175
189
  /**
176
190
  * Calculate the total estimated token count across the entire history.
191
+ * Includes system prompt and summary tokens if known.
177
192
  */
178
193
  getTotalTokens() {
179
194
  if (this.tokenOverride > 0)
180
195
  return this.tokenOverride;
181
- return this.history.reduce((sum, msg) => sum + this.estimateMessageTokens(msg), 0);
196
+ const historyTokens = this.history.reduce((sum, msg) => sum + this.estimateMessageTokens(msg), 0);
197
+ const summaryTokens = this.summary ? this.estimateTokens(this.summary) : 0;
198
+ return historyTokens + this.lastSystemTokens + summaryTokens;
199
+ }
200
+ /**
201
+ * Update the UI's understanding of our token usage by feeding back
202
+ * the exact count reported by the LLM provider.
203
+ */
204
+ setProviderReportedTokens(tokens) {
205
+ this.tokenOverride = Math.max(0, tokens);
182
206
  }
183
207
  /**
184
208
  * Restore the conversation from a previously-saved snapshot. Replaces
@@ -198,11 +222,13 @@ export class ConversationManager {
198
222
  * This is what actually matters for context overflow detection.
199
223
  */
200
224
  estimateNextRequestTokens(systemPrompt, userMessage) {
201
- const systemTokens = this.estimateTokens(systemPrompt);
202
- const historyTokens = this.getTotalTokens();
225
+ this.lastSystemTokens = this.estimateTokens(systemPrompt);
226
+ // Explicitly recalculate from history rather than calling getTotalTokens()
227
+ // to bypass tokenOverride, which may represent a stale provider report.
228
+ const historyTokens = this.history.reduce((sum, msg) => sum + this.estimateMessageTokens(msg), 0);
203
229
  const userTokens = this.estimateTokens(userMessage);
204
230
  const summaryTokens = this.summary ? this.estimateTokens(this.summary) : 0;
205
- return systemTokens + summaryTokens + historyTokens + userTokens;
231
+ return this.lastSystemTokens + summaryTokens + historyTokens + userTokens;
206
232
  }
207
233
  // ---------------------------------------------------------------------------
208
234
  // Budget enforcement (Pillar 4)
@@ -227,6 +253,7 @@ export class ConversationManager {
227
253
  const { messages, report } = enforcer.enforce(this.history, { maxTokens, model });
228
254
  if (report.actions[0] !== 'none') {
229
255
  this.history = messages;
256
+ this.tokenOverride = 0;
230
257
  }
231
258
  return {
232
259
  trimmed: report.actions[0] !== 'none',
@@ -247,7 +274,7 @@ export class ConversationManager {
247
274
  * conversational turn, then prune if the budget is exceeded.
248
275
  */
249
276
  addTurn(userMessage, assistantResponse) {
250
- this.history.push({ role: 'user', content: userMessage }, { role: 'assistant', content: assistantResponse });
277
+ this.history.push({ role: 'user', content: sanitizeUserContent(userMessage) }, { role: 'assistant', content: sanitizeUserContent(assistantResponse) });
251
278
  this.pruneToFitBudget();
252
279
  }
253
280
  /**
@@ -255,7 +282,26 @@ export class ConversationManager {
255
282
  * non-standard messages), then prune if the budget is exceeded.
256
283
  */
257
284
  addMessage(message) {
258
- this.history.push(message);
285
+ let sanitizedContent = null;
286
+ if (typeof message.content === 'string') {
287
+ sanitizedContent = sanitizeUserContent(message.content);
288
+ }
289
+ else if (Array.isArray(message.content)) {
290
+ sanitizedContent = message.content.map(block => {
291
+ if (block.type === 'text') {
292
+ return { ...block, text: sanitizeUserContent(block.text) };
293
+ }
294
+ return block;
295
+ });
296
+ }
297
+ else {
298
+ sanitizedContent = message.content;
299
+ }
300
+ const sanitized = {
301
+ ...message,
302
+ content: sanitizedContent,
303
+ };
304
+ this.history.push(sanitized);
259
305
  this.pruneToFitBudget();
260
306
  }
261
307
  // ---------------------------------------------------------------------------
@@ -486,7 +532,7 @@ export class SessionManager {
486
532
  }
487
533
  return dir;
488
534
  }
489
- static saveSession(conversation, model, modifiedFiles, tokenUsage, sessionId) {
535
+ static saveSession(conversation, model, modifiedFiles, tokenUsage, sessionId, label) {
490
536
  const id = sessionId || crypto.randomUUID();
491
537
  const dir = this.getSessionsDir();
492
538
  const filePath = path.join(dir, `session_${id}.json`);
@@ -498,8 +544,13 @@ export class SessionManager {
498
544
  summary: conversation.getSummary(),
499
545
  modifiedFiles,
500
546
  tokenUsage,
547
+ label,
501
548
  };
502
- fs.writeFileSync(filePath, JSON.stringify(data, null, 2), { encoding: 'utf-8', mode: 0o600 });
549
+ // Atomic write: tmp + rename, matching the snapshot writer so a
550
+ // mid-write Ctrl+C never leaves a half-written session file behind.
551
+ const tmp = `${filePath}.tmp`;
552
+ fs.writeFileSync(tmp, JSON.stringify(data, null, 2), { encoding: 'utf-8', mode: 0o600 });
553
+ fs.renameSync(tmp, filePath);
503
554
  return id;
504
555
  }
505
556
  static listSessions() {
@@ -519,6 +570,7 @@ export class SessionManager {
519
570
  messageCount: data.history.length,
520
571
  summary: data.summary,
521
572
  totalTokens: data.tokenUsage?.total_tokens || 0,
573
+ label: data.label,
522
574
  });
523
575
  }
524
576
  catch (err) {
@@ -543,5 +595,28 @@ export class SessionManager {
543
595
  const raw = fs.readFileSync(filePath, 'utf-8');
544
596
  return JSON.parse(raw);
545
597
  }
598
+ /**
599
+ * Atomically updates the `label` field of an existing session
600
+ * file. The on-disk filename (the session id) stays unchanged so
601
+ * existing /resume invocations keep working after a rename.
602
+ *
603
+ * Returns true on success, false if the session does not exist.
604
+ * Throws if the label fails validation — callers should pre-validate
605
+ * via {@link isValidSessionLabel} for a cleaner UX message.
606
+ */
607
+ static renameSession(id, label) {
608
+ const dir = this.getSessionsDir();
609
+ const filePath = path.join(dir, `session_${id}.json`);
610
+ if (!fs.existsSync(filePath))
611
+ return false;
612
+ const raw = fs.readFileSync(filePath, 'utf-8');
613
+ const data = JSON.parse(raw);
614
+ const cleaned = label?.trim();
615
+ data.label = cleaned && cleaned.length > 0 ? cleaned : undefined;
616
+ const tmp = `${filePath}.tmp`;
617
+ fs.writeFileSync(tmp, JSON.stringify(data, null, 2), { encoding: 'utf-8', mode: 0o600 });
618
+ fs.renameSync(tmp, filePath);
619
+ return true;
620
+ }
546
621
  }
547
622
  //# sourceMappingURL=conversation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/agent/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/agent/conversation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * duration.ts — Human-readable formatting for millisecond durations
3
+ * surfaced in user-facing messages (cooldown errors, telemetry
4
+ * summaries, status bar tooltips).
5
+ *
6
+ * The previous CLI showed raw `134555ms` in messages like
7
+ * "Provider 'zen' is in cooldown for 134555ms"
8
+ * which forced the user to mentally divide. This helper turns that
9
+ * into "2m 14s" or "45s" or "1h 3m" — exactly the granularity humans
10
+ * read durations at.
11
+ */
12
+ /**
13
+ * Format a millisecond duration as a compact human-readable string.
14
+ *
15
+ * formatDuration(750) → "750ms"
16
+ * formatDuration(45_000) → "45s"
17
+ * formatDuration(134_555) → "2m 14s"
18
+ * formatDuration(3_750_000) → "1h 2m"
19
+ *
20
+ * Returns `"0ms"` for non-finite or negative values rather than
21
+ * throwing, so it is always safe to interpolate into error strings.
22
+ */
23
+ export declare function formatDuration(ms: number): string;
24
+ //# sourceMappingURL=duration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/agent/duration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAkBjD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * duration.ts — Human-readable formatting for millisecond durations
3
+ * surfaced in user-facing messages (cooldown errors, telemetry
4
+ * summaries, status bar tooltips).
5
+ *
6
+ * The previous CLI showed raw `134555ms` in messages like
7
+ * "Provider 'zen' is in cooldown for 134555ms"
8
+ * which forced the user to mentally divide. This helper turns that
9
+ * into "2m 14s" or "45s" or "1h 3m" — exactly the granularity humans
10
+ * read durations at.
11
+ */
12
+ /**
13
+ * Format a millisecond duration as a compact human-readable string.
14
+ *
15
+ * formatDuration(750) → "750ms"
16
+ * formatDuration(45_000) → "45s"
17
+ * formatDuration(134_555) → "2m 14s"
18
+ * formatDuration(3_750_000) → "1h 2m"
19
+ *
20
+ * Returns `"0ms"` for non-finite or negative values rather than
21
+ * throwing, so it is always safe to interpolate into error strings.
22
+ */
23
+ export function formatDuration(ms) {
24
+ if (!Number.isFinite(ms) || ms < 0)
25
+ return '0ms';
26
+ if (ms < 1000)
27
+ return `${Math.round(ms)}ms`;
28
+ const totalSeconds = Math.round(ms / 1000);
29
+ const hours = Math.floor(totalSeconds / 3600);
30
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
31
+ const seconds = totalSeconds % 60;
32
+ if (hours > 0) {
33
+ // For multi-hour spans we drop seconds — humans read "1h 3m",
34
+ // not "1h 3m 47s".
35
+ return minutes > 0 ? `${hours}h ${minutes}m` : `${hours}h`;
36
+ }
37
+ if (minutes > 0) {
38
+ return seconds > 0 ? `${minutes}m ${seconds}s` : `${minutes}m`;
39
+ }
40
+ return `${seconds}s`;
41
+ }
42
+ //# sourceMappingURL=duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../src/agent/duration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;IAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAElC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,8DAA8D;QAC9D,mBAAmB;QACnB,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;IACjE,CAAC;IACD,OAAO,GAAG,OAAO,GAAG,CAAC;AACvB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * file-writing-rules.ts — Shared system-prompt fragment that steers
3
+ * the LLM toward the sanctioned write tools and away from shell-based
4
+ * file mutation.
5
+ *
6
+ * The shell sandbox (see `command-parser.ts` → `extractWriteTargets`)
7
+ * already rejects `cat > file`, `sed -i`, `tee`, `mv` into platform
8
+ * paths, `python3 -c "open(...,'w')"`, and heredoc smuggling. But a
9
+ * rejection still costs a turn and an approval prompt. This block
10
+ * tells the model up-front not to try, so the typical session never
11
+ * floods the user with security warnings the way Test 1 in the log
12
+ * did.
13
+ *
14
+ * Keep this fragment short: every agent persona that gets tool
15
+ * access (single-agent, code worker, test worker) pastes it into
16
+ * its system prompt.
17
+ */
18
+ export declare const FILE_WRITING_RULES_BLOCK: string;
19
+ //# sourceMappingURL=file-writing-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-writing-rules.d.ts","sourceRoot":"","sources":["../../src/agent/file-writing-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,QAYzB,CAAC"}