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.
- package/CHANGELOG.md +62 -0
- package/README.md +18 -14
- package/dist/agent/agent-client.d.ts +28 -6
- package/dist/agent/agent-client.d.ts.map +1 -1
- package/dist/agent/agent-client.js +118 -39
- package/dist/agent/agent-client.js.map +1 -1
- package/dist/agent/agent-pool.d.ts +55 -6
- package/dist/agent/agent-pool.d.ts.map +1 -1
- package/dist/agent/agent-pool.js +120 -20
- package/dist/agent/agent-pool.js.map +1 -1
- package/dist/agent/auto-verifier.d.ts +55 -0
- package/dist/agent/auto-verifier.d.ts.map +1 -0
- package/dist/agent/auto-verifier.js +50 -0
- package/dist/agent/auto-verifier.js.map +1 -0
- package/dist/agent/command-parser.d.ts +37 -0
- package/dist/agent/command-parser.d.ts.map +1 -1
- package/dist/agent/command-parser.js +473 -1
- package/dist/agent/command-parser.js.map +1 -1
- package/dist/agent/context-builder.d.ts +24 -0
- package/dist/agent/context-builder.d.ts.map +1 -0
- package/dist/agent/context-builder.js +197 -0
- package/dist/agent/context-builder.js.map +1 -0
- package/dist/agent/conversation.d.ts +32 -2
- package/dist/agent/conversation.d.ts.map +1 -1
- package/dist/agent/conversation.js +84 -9
- package/dist/agent/conversation.js.map +1 -1
- package/dist/agent/duration.d.ts +24 -0
- package/dist/agent/duration.d.ts.map +1 -0
- package/dist/agent/duration.js +42 -0
- package/dist/agent/duration.js.map +1 -0
- package/dist/agent/file-writing-rules.d.ts +19 -0
- package/dist/agent/file-writing-rules.d.ts.map +1 -0
- package/dist/agent/file-writing-rules.js +31 -0
- package/dist/agent/file-writing-rules.js.map +1 -0
- package/dist/agent/mcp-bridge.js +1 -1
- package/dist/agent/mcp-bridge.js.map +1 -1
- package/dist/agent/orchestrator.d.ts +45 -0
- package/dist/agent/orchestrator.d.ts.map +1 -1
- package/dist/agent/orchestrator.js +140 -3
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/parser-adapter.d.ts +17 -0
- package/dist/agent/parser-adapter.d.ts.map +1 -1
- package/dist/agent/parser-adapter.js +311 -7
- package/dist/agent/parser-adapter.js.map +1 -1
- package/dist/agent/predictive-gate.d.ts.map +1 -1
- package/dist/agent/predictive-gate.js +4 -1
- package/dist/agent/predictive-gate.js.map +1 -1
- package/dist/agent/provider-cooldown.d.ts.map +1 -1
- package/dist/agent/provider-cooldown.js +3 -2
- package/dist/agent/provider-cooldown.js.map +1 -1
- package/dist/agent/providers-manager.d.ts +5 -0
- package/dist/agent/providers-manager.d.ts.map +1 -1
- package/dist/agent/providers-manager.js +119 -8
- package/dist/agent/providers-manager.js.map +1 -1
- package/dist/agent/repo-map.d.ts +18 -1
- package/dist/agent/repo-map.d.ts.map +1 -1
- package/dist/agent/repo-map.js +144 -54
- package/dist/agent/repo-map.js.map +1 -1
- package/dist/agent/retry.js +1 -2
- package/dist/agent/retry.js.map +1 -1
- package/dist/agent/single-agent.d.ts +13 -0
- package/dist/agent/single-agent.d.ts.map +1 -1
- package/dist/agent/single-agent.js +225 -37
- package/dist/agent/single-agent.js.map +1 -1
- package/dist/agent/skills.d.ts.map +1 -1
- package/dist/agent/skills.js +2 -1
- package/dist/agent/skills.js.map +1 -1
- package/dist/agent/subagent.js +2 -2
- package/dist/agent/subagent.js.map +1 -1
- package/dist/agent/task-router.d.ts +46 -0
- package/dist/agent/task-router.d.ts.map +1 -0
- package/dist/agent/task-router.js +352 -0
- package/dist/agent/task-router.js.map +1 -0
- package/dist/agent/telemetry.d.ts +29 -1
- package/dist/agent/telemetry.d.ts.map +1 -1
- package/dist/agent/telemetry.js +29 -11
- package/dist/agent/telemetry.js.map +1 -1
- package/dist/agent/tool-definitions.d.ts +3 -0
- package/dist/agent/tool-definitions.d.ts.map +1 -0
- package/dist/agent/tool-definitions.js +519 -0
- package/dist/agent/tool-definitions.js.map +1 -0
- package/dist/agent/tool-executor.d.ts +6 -1
- package/dist/agent/tool-executor.d.ts.map +1 -1
- package/dist/agent/tool-executor.js +99 -553
- package/dist/agent/tool-executor.js.map +1 -1
- package/dist/agent/tools/command-tools.d.ts +6 -0
- package/dist/agent/tools/command-tools.d.ts.map +1 -0
- package/dist/agent/tools/command-tools.js +104 -0
- package/dist/agent/tools/command-tools.js.map +1 -0
- package/dist/agent/tools/file-tools.d.ts +15 -0
- package/dist/agent/tools/file-tools.d.ts.map +1 -0
- package/dist/agent/tools/file-tools.js +551 -0
- package/dist/agent/tools/file-tools.js.map +1 -0
- package/dist/agent/tools/todo-tools.d.ts +3 -0
- package/dist/agent/tools/todo-tools.d.ts.map +1 -0
- package/dist/agent/tools/todo-tools.js +70 -0
- package/dist/agent/tools/todo-tools.js.map +1 -0
- package/dist/agent/web-impl.d.ts.map +1 -1
- package/dist/agent/web-impl.js +45 -0
- package/dist/agent/web-impl.js.map +1 -1
- package/dist/agent/worker-agent.d.ts +3 -1
- package/dist/agent/worker-agent.d.ts.map +1 -1
- package/dist/agent/worker-agent.js +56 -16
- package/dist/agent/worker-agent.js.map +1 -1
- package/dist/config.d.ts +253 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +81 -1
- package/dist/config.js.map +1 -1
- package/dist/git/git-manager.d.ts +33 -2
- package/dist/git/git-manager.d.ts.map +1 -1
- package/dist/git/git-manager.js +111 -15
- package/dist/git/git-manager.js.map +1 -1
- package/dist/git/git-ops.d.ts.map +1 -1
- package/dist/git/git-ops.js +2 -1
- package/dist/git/git-ops.js.map +1 -1
- package/dist/index.js +89 -8
- package/dist/index.js.map +1 -1
- package/dist/lsp/lsp-manager.js +1 -1
- package/dist/lsp/lsp-manager.js.map +1 -1
- package/dist/model-outcomes.d.ts.map +1 -1
- package/dist/model-outcomes.js +2 -1
- package/dist/model-outcomes.js.map +1 -1
- package/dist/planner.d.ts +0 -9
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +0 -9
- package/dist/planner.js.map +1 -1
- package/dist/project-memory.d.ts +12 -1
- package/dist/project-memory.d.ts.map +1 -1
- package/dist/project-memory.js +8 -6
- package/dist/project-memory.js.map +1 -1
- package/dist/runtime/loop-mitigation.d.ts +119 -0
- package/dist/runtime/loop-mitigation.d.ts.map +1 -0
- package/dist/runtime/loop-mitigation.js +192 -0
- package/dist/runtime/loop-mitigation.js.map +1 -0
- package/dist/runtime/os-sandbox.d.ts +100 -0
- package/dist/runtime/os-sandbox.d.ts.map +1 -0
- package/dist/runtime/os-sandbox.js +246 -0
- package/dist/runtime/os-sandbox.js.map +1 -0
- package/dist/runtime/run-inventory.d.ts +17 -0
- package/dist/runtime/run-inventory.d.ts.map +1 -0
- package/dist/runtime/run-inventory.js +49 -0
- package/dist/runtime/run-inventory.js.map +1 -0
- package/dist/runtime/session-snapshots.d.ts +52 -2
- package/dist/runtime/session-snapshots.d.ts.map +1 -1
- package/dist/runtime/session-snapshots.js +76 -1
- package/dist/runtime/session-snapshots.js.map +1 -1
- package/dist/runtime/staging.d.ts.map +1 -1
- package/dist/runtime/staging.js +4 -1
- package/dist/runtime/staging.js.map +1 -1
- package/dist/runtime/task-session.d.ts +14 -0
- package/dist/runtime/task-session.d.ts.map +1 -1
- package/dist/runtime/task-session.js +26 -0
- package/dist/runtime/task-session.js.map +1 -1
- package/dist/setup-wizard.d.ts +11 -3
- package/dist/setup-wizard.d.ts.map +1 -1
- package/dist/setup-wizard.js +113 -15
- package/dist/setup-wizard.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/commands/context-commands.d.ts +7 -0
- package/dist/ui/commands/context-commands.d.ts.map +1 -0
- package/dist/ui/commands/context-commands.js +241 -0
- package/dist/ui/commands/context-commands.js.map +1 -0
- package/dist/ui/commands/index.d.ts +3 -0
- package/dist/ui/commands/index.d.ts.map +1 -0
- package/dist/ui/commands/index.js +46 -0
- package/dist/ui/commands/index.js.map +1 -0
- package/dist/ui/commands/info-commands.d.ts +15 -0
- package/dist/ui/commands/info-commands.d.ts.map +1 -0
- package/dist/ui/commands/info-commands.js +122 -0
- package/dist/ui/commands/info-commands.js.map +1 -0
- package/dist/ui/commands/model-commands.d.ts +5 -0
- package/dist/ui/commands/model-commands.d.ts.map +1 -0
- package/dist/ui/commands/model-commands.js +417 -0
- package/dist/ui/commands/model-commands.js.map +1 -0
- package/dist/ui/commands/session-commands.d.ts +5 -0
- package/dist/ui/commands/session-commands.d.ts.map +1 -0
- package/dist/ui/commands/session-commands.js +154 -0
- package/dist/ui/commands/session-commands.js.map +1 -0
- package/dist/ui/commands/task-commands.d.ts +8 -0
- package/dist/ui/commands/task-commands.d.ts.map +1 -0
- package/dist/ui/commands/task-commands.js +152 -0
- package/dist/ui/commands/task-commands.js.map +1 -0
- package/dist/ui/commands/types.d.ts +46 -0
- package/dist/ui/commands/types.d.ts.map +1 -0
- package/dist/ui/commands/types.js +2 -0
- package/dist/ui/commands/types.js.map +1 -0
- package/dist/ui/commands/workspace-commands.d.ts +8 -0
- package/dist/ui/commands/workspace-commands.d.ts.map +1 -0
- package/dist/ui/commands/workspace-commands.js +131 -0
- package/dist/ui/commands/workspace-commands.js.map +1 -0
- package/dist/ui/loading-animation.d.ts +24 -0
- package/dist/ui/loading-animation.d.ts.map +1 -0
- package/dist/ui/loading-animation.js +123 -0
- package/dist/ui/loading-animation.js.map +1 -0
- package/dist/ui/markdown-stream.js +2 -2
- package/dist/ui/markdown-stream.js.map +1 -1
- package/dist/ui/prompt.d.ts +7 -0
- package/dist/ui/prompt.d.ts.map +1 -1
- package/dist/ui/prompt.js +461 -1143
- package/dist/ui/prompt.js.map +1 -1
- package/dist/ui/render-primitives.d.ts +6 -0
- package/dist/ui/render-primitives.d.ts.map +1 -1
- package/dist/ui/render-primitives.js +30 -13
- package/dist/ui/render-primitives.js.map +1 -1
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +2 -0
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/session-header.d.ts +13 -0
- package/dist/ui/session-header.d.ts.map +1 -1
- package/dist/ui/session-header.js +6 -0
- package/dist/ui/session-header.js.map +1 -1
- package/package.json +22 -4
- package/scripts/check-vendor-wasm.js +55 -0
- package/vendor/tree-sitter-bash.wasm +0 -0
- package/vendor/tree-sitter-go.wasm +0 -0
- package/vendor/tree-sitter-javascript.wasm +0 -0
- package/vendor/tree-sitter-python.wasm +0 -0
- package/vendor/tree-sitter-rust.wasm +0 -0
- package/vendor/tree-sitter-tsx.wasm +0 -0
- package/vendor/tree-sitter-typescript.wasm +0 -0
- 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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,
|
|
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
|
-
|
|
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
|
-
|
|
202
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,oBAAoB,GAA4B;IACpD,gCAAgC;IAChC,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC/B,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,kBAAkB;IAClB,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,0BAA0B;IACnD,CAAC,eAAe,EAAE,KAAK,CAAC;IACxB,YAAY;IACZ,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,UAAU;IACV,CAAC,gBAAgB,EAAE,OAAO,CAAC;IAC3B,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,CAAC,aAAa,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,CAAC,aAAa,EAAE,OAAO,CAAC;IACxB,SAAS;IACT,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,eAAe;IACf,CAAC,aAAa,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,kDAAkD;AAClD,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAEtC,uDAAuD;AACvD,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAgC;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,qBAAqB,GAAG,wBAAwB,CAAC;IACpE,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,oBAAoB,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,GAAG,wBAAwB,CAAC;IACnE,CAAC;IACD,OAAO,qBAAqB,GAAG,wBAAwB,CAAC;AAC1D,CAAC;AAED,yEAAyE;AACzE,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAEzC,iFAAiF;AACjF,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,yEAAyE;AACzE,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAEpC,yDAAyD;AACzD,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEA8B2C,CAAC;AAErE,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,OAAO,CACjB,+EAA+E,EAC/E,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAkB,EAAE,CAAC;IAC5B,cAAc,CAAS;IACvB,OAAO,GAAW,EAAE,CAAC;IACrB,YAAY,GAAW,qBAAqB,CAAC;IAC7C,mBAAmB,GAA2D,IAAI,CAAC;IAC3F;;;;;OAKG;IACK,aAAa,GAAW,CAAC,CAAC;IAC1B,gBAAgB,GAAW,CAAC,CAAC;IAErC,YAAY,iBAAyB,wBAAwB;QAC3D,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,8EAA8E;IAC9E,6BAA6B;IAC7B,8EAA8E;IAE9E;;;OAGG;IACH,eAAe,CAAC,KAAa;QAC3B,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,GAAG,KAAK,GAAG,wBAAwB,CAAC;gBACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,qBAAqB,GAAG,wBAAwB,CAAC;IACvE,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,+DAA+D;IAC/D,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E;;;;;OAKG;IACK,cAAc,CAAC,IAAY,EAAE,KAAqB;QACxD,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,OAAoB;QAChD,OAAO,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EACnD,CAAC,CACF,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,aAAa,GAAG,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,MAAc;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;OAOG;IACH,mBAAmB,CACjB,QAAoC,EACpC,OAAe,EACf,MAAc;QAEd,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,YAAoB,EAAE,WAAmB;QACjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1D,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClG,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,gBAAgB,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;IAC5E,CAAC;IAED,8EAA8E;IAC9E,gCAAgC;IAChC,8EAA8E;IAE9E;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,SAAiB,EAAE,KAAqB;QAUpD,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM;YACrC,MAAM,EAAE;gBACN,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;SACF,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E;;;OAGG;IACH,OAAO,CAAC,WAAmB,EAAE,iBAAyB;QACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,EAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,CACvE,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,OAAoB;QAC7B,IAAI,gBAAgB,GAAuC,IAAI,CAAC;QAChE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;QACrC,CAAC;QAED,MAAM,SAAS,GAAG;YAChB,GAAG,OAAO;YACV,OAAO,EAAE,gBAAgB;SAC1B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAE9E;;;OAGG;IACH,WAAW;QACT,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,sCAAsC,IAAI,CAAC,OAAO,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mEAAmE;IACnE,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,+DAA+D;IAC/D,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAE9E;;;OAGG;IACH,gBAAgB;QACd,OACE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,cAAc;YAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,oBAAoB,EAC1C,CAAC;YACD,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpC,aAAa,GAAG,CAAC,CAAC;oBAClB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,oBAAoB,EAAE,CAAC;gBAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;QAEnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;gBACrF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC;oBACvD,uBAAuB,QAAQ,MAAM,qBAAqB,yBAAyB,CAAC;gBACtF,UAAU,IAAI,QAAQ,GAAG,qBAAqB,CAAC;YACjD,CAAC;YACD,qDAAqD;YACrD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/C,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBAChC,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,qBAAqB,GAAG,CAAC,EAAE,CAAC;wBACvF,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC9C,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,GAAG,MAAM,CAAC;wBACvF,UAAU,IAAI,QAAQ,GAAG,qBAAqB,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC;IACpE,CAAC;IAED,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAE9E,kDAAkD;IAClD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,8EAA8E;IAC9E,iDAAiD;IACjD,8EAA8E;IAE9E,sEAAsE;IACtE,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,QAAuB;QACnC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,8EAA8E;IAC9E,6BAA6B;IAC7B,8EAA8E;IAE9E,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,YAAqB,EAAE,WAAoB;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAE9D,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;YAChC,uEAAuE;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC5E,+DAA+D;YAC/D,OAAO,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9C,CAAC;QAED,uCAAuC;QACvC,OAAO,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC3D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CAAC,MAAmB,EAAE,KAAa;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE3C,qDAAqD;QACrD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,+CAA+C;QAC/C,0EAA0E;QAC1E,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAEtE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,SAAS;aAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClD,OAAO,gBAAgB,GAAG,CAAC,YAAY,IAAI,SAAS,MAAM,OAAO,EAAE,CAAC;YACtE,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACpC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;QAChD,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,kCAAkC;QAClC,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO;YACzC,CAAC,CAAC,qIAAqI,IAAI,CAAC,OAAO,2BAA2B;YAC9K,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,GAAG,sBAAsB,0EAA0E,gBAAgB,EAAE,CAAC;QAE/I,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC;gBACE;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,gKAAgK;iBAC1K;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,qDAAqD,gBAAgB,OAAO,gBAAgB,EAAE;iBACxG;aACF,EACD,KAAK,EACL,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC,MAAM,CAAC,EAAE,CACxF,CAAC;YAEF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAE9C,wDAAwD;YACxD,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;YAE9B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9E,IAAI,CAAC,mBAAmB,GAAG;gBACzB,cAAc;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;aACrD,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClH,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAAC,KAAU;QACtC,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;eACjC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;eAC9B,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC;eACvC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;eAC/B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;eAC3B,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;eAC9B,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;eACjC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;eAC7E,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAuBD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,OAAO,cAAc;IACzB,MAAM,CAAC,cAAc;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,YAAiC,EACjC,KAAa,EACb,aAAuB,EACvB,UAAsF,EACtF,SAAkB,EAClB,KAAc;QAEd,MAAM,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,IAAI,GAAgB;YACxB,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO,EAAE,YAAY,CAAC,aAAa,EAAE;YACrC,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE;YAClC,aAAa;YACb,UAAU;YACV,KAAK;SACN,CAAC;QACF,gEAAgE;QAChE,oEAAoE;QACpE,MAAM,GAAG,GAAG,GAAG,QAAQ,MAAM,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,OAAO,GAA+I,EAAE,CAAC;QAC/J,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1D,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;wBAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;wBAC5C,OAAO,CAAC,IAAI,CAAC;4BACX,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;4BACjC,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,IAAI,CAAC;4BAC/C,KAAK,EAAE,IAAI,CAAC,KAAK;yBAClB,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC,gDAAgD,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,8CAA8C,GAAG,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,EAAU;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,aAAa,CAAC,EAAU,EAAE,KAAyB;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,GAAG,GAAG,GAAG,QAAQ,MAAM,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -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"}
|