@visorcraft/idlehands 2.3.3 → 2.3.5

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 (37) hide show
  1. package/dist/agent/exec-helpers.js +93 -0
  2. package/dist/agent/exec-helpers.js.map +1 -1
  3. package/dist/agent/file-prefetch.js +196 -0
  4. package/dist/agent/file-prefetch.js.map +1 -0
  5. package/dist/agent/index.js +54 -0
  6. package/dist/agent/index.js.map +1 -0
  7. package/dist/agent/predictive-compaction.js +139 -0
  8. package/dist/agent/predictive-compaction.js.map +1 -0
  9. package/dist/agent/query-classifier-fast.js +174 -0
  10. package/dist/agent/query-classifier-fast.js.map +1 -0
  11. package/dist/agent/read-ahead-buffer.js +260 -0
  12. package/dist/agent/read-ahead-buffer.js.map +1 -0
  13. package/dist/agent/response-cache.js +23 -4
  14. package/dist/agent/response-cache.js.map +1 -1
  15. package/dist/agent/schema-optimizer.js +228 -0
  16. package/dist/agent/schema-optimizer.js.map +1 -0
  17. package/dist/agent/tool-calls.js +25 -0
  18. package/dist/agent/tool-calls.js.map +1 -1
  19. package/dist/agent/tool-loop-guard.js +38 -8
  20. package/dist/agent/tool-loop-guard.js.map +1 -1
  21. package/dist/agent.js +207 -26
  22. package/dist/agent.js.map +1 -1
  23. package/dist/bot/confirm-telegram.js +21 -2
  24. package/dist/bot/confirm-telegram.js.map +1 -1
  25. package/dist/bot/discord.js +5 -5
  26. package/dist/bot/discord.js.map +1 -1
  27. package/dist/bot/session-manager.js +6 -6
  28. package/dist/bot/session-manager.js.map +1 -1
  29. package/dist/bot/ux/action-dispatcher.js +222 -0
  30. package/dist/bot/ux/action-dispatcher.js.map +1 -0
  31. package/dist/history.js +196 -0
  32. package/dist/history.js.map +1 -1
  33. package/dist/tui/controller.js +2 -0
  34. package/dist/tui/controller.js.map +1 -1
  35. package/dist/upgrade.js +3 -3
  36. package/dist/upgrade.js.map +1 -1
  37. package/package.json +1 -1
@@ -321,4 +321,97 @@ export function extractLogFilePath(command) {
321
321
  }
322
322
  return null;
323
323
  }
324
+ /**
325
+ * Extract the target file path from a cat/head/tail command.
326
+ * Used to look up cached content when the model falls back to shell
327
+ * commands after read_file is poisoned (deadlock prevention).
328
+ * Returns the file path or null if not a simple file read command.
329
+ */
330
+ export function extractFilePathFromReadCommand(command) {
331
+ let cmd = String(command || '').trim();
332
+ if (!cmd)
333
+ return null;
334
+ // Strip leading cd && chains
335
+ cmd = cmd.replace(/^(\s*cd\s+[^;&|]+\s*(?:&&|;)\s*)+/i, '').trim();
336
+ if (!cmd)
337
+ return null;
338
+ // cat FILE (no pipes)
339
+ const catMatch = cmd.match(/^\s*cat\s+(\S+)\s*$/i);
340
+ if (catMatch) {
341
+ return catMatch[1].replace(/['"]/g, '');
342
+ }
343
+ // head -N FILE or head -n N FILE
344
+ const headMatch = cmd.match(/^\s*head\s+(?:-n?\s*)?\d+\s+(\S+)\s*$/i);
345
+ if (headMatch) {
346
+ return headMatch[1].replace(/['"]/g, '');
347
+ }
348
+ // tail -N FILE (no pipes)
349
+ const tailMatch = cmd.match(/^\s*tail\s+(?:-n?\s*)?\d+\s+(\S+)\s*$/i);
350
+ if (tailMatch) {
351
+ return tailMatch[1].replace(/['"]/g, '');
352
+ }
353
+ // cat FILE | head -N (pagination pattern)
354
+ const catPipeMatch = cmd.match(/^\s*cat\s+(\S+)\s*\|\s*head/i);
355
+ if (catPipeMatch) {
356
+ return catPipeMatch[1].replace(/['"]/g, '');
357
+ }
358
+ return null;
359
+ }
360
+ /**
361
+ * Normalize test commands for loop detection.
362
+ * Extracts the test framework and filter/target so that running the same test
363
+ * repeatedly with different output options is detected as a loop.
364
+ *
365
+ * Examples:
366
+ * "php artisan test --filter=FooTest 2>&1 | tail -20" → "php artisan test --filter=FooTest"
367
+ * "npm test -- --grep=\"bar\"" → "npm test --grep=\"bar\""
368
+ * "pytest tests/test_foo.py -v" → "pytest tests/test_foo.py"
369
+ * "go test ./... -run TestBar" → "go test -run TestBar"
370
+ *
371
+ * Returns the normalized command or the original if not a recognized test command.
372
+ */
373
+ export function normalizeTestCommandForSig(command) {
374
+ let cmd = String(command || "").trim();
375
+ if (!cmd)
376
+ return null;
377
+ // Strip leading cd && chains
378
+ cmd = cmd.replace(/^(\s*cd\s+[^;&|]+\s*(?:&&|;)\s*)+/i, "").trim();
379
+ if (!cmd)
380
+ return null;
381
+ // First apply the general exec normalization (strips tail/head/grep pipes)
382
+ cmd = normalizeExecCommandForSig(cmd);
383
+ // PHP/Laravel: php artisan test --filter=X
384
+ const phpMatch = cmd.match(/^\s*(php\s+artisan\s+test)\s+(--filter[=\s]+\S+)/i);
385
+ if (phpMatch) {
386
+ return `${phpMatch[1]} ${phpMatch[2]}`.trim();
387
+ }
388
+ // PHPUnit: phpunit --filter X or vendor/bin/phpunit --filter X
389
+ const phpunitMatch = cmd.match(/^\s*((?:vendor\/bin\/)?phpunit)\s+.*?(--filter[=\s]+\S+)/i);
390
+ if (phpunitMatch) {
391
+ return `${phpunitMatch[1]} ${phpunitMatch[2]}`.trim();
392
+ }
393
+ // Jest/npm test: npm test -- --grep="X" or npx jest --testNamePattern=X
394
+ const npmTestMatch = cmd.match(/^\s*(npm\s+test|npx\s+jest)\s+.*?(--(?:grep|testNamePattern|testPathPattern)[=\s]+\S+)/i);
395
+ if (npmTestMatch) {
396
+ return `${npmTestMatch[1]} ${npmTestMatch[2]}`.trim();
397
+ }
398
+ // Pytest: pytest path/test.py or pytest -k "pattern"
399
+ const pytestMatch = cmd.match(/^\s*(pytest)\s+(?:.*?(-k\s+\S+)|(\S+\.py\b))/i);
400
+ if (pytestMatch) {
401
+ const target = pytestMatch[2] || pytestMatch[3];
402
+ return `pytest ${target}`.trim();
403
+ }
404
+ // Go test: go test ./... -run TestX
405
+ const goTestMatch = cmd.match(/^\s*(go\s+test)\s+.*?(-run\s+\S+)/i);
406
+ if (goTestMatch) {
407
+ return `${goTestMatch[1]} ${goTestMatch[2]}`.trim();
408
+ }
409
+ // Cargo test: cargo test test_name
410
+ const cargoMatch = cmd.match(/^\s*(cargo\s+test)\s+(\S+)/i);
411
+ if (cargoMatch && !cargoMatch[2].startsWith("-")) {
412
+ return `${cargoMatch[1]} ${cargoMatch[2]}`.trim();
413
+ }
414
+ // Not a recognized test command
415
+ return null;
416
+ }
324
417
  //# sourceMappingURL=exec-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec-helpers.js","sourceRoot":"","sources":["../../src/agent/exec-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec-helpers.js","sourceRoot":"","sources":["../../src/agent/exec-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * File Prefetch Module
3
+ *
4
+ * Speculatively pre-fetches files that are likely to be needed in upcoming
5
+ * tool calls, reducing latency by overlapping I/O with computation.
6
+ *
7
+ * Use cases:
8
+ * - When edit_file is called, prefetch the file content
9
+ * - When multiple read_file calls are pending, batch-prefetch them
10
+ * - When list_dir returns files, prefetch likely-to-be-read files
11
+ */
12
+ import fs from 'node:fs/promises';
13
+ import path from 'node:path';
14
+ export class FilePrefetcher {
15
+ cache = new Map();
16
+ pending = new Map();
17
+ maxEntries;
18
+ maxFileSize;
19
+ ttlMs;
20
+ // Runtime stats
21
+ hits = 0;
22
+ misses = 0;
23
+ prefetches = 0;
24
+ evictions = 0;
25
+ constructor(opts) {
26
+ this.maxEntries = opts?.maxEntries ?? 50;
27
+ this.maxFileSize = opts?.maxFileSize ?? 512 * 1024;
28
+ this.ttlMs = opts?.ttlMs ?? 30000;
29
+ }
30
+ /**
31
+ * Get cached file content if available and fresh.
32
+ * Returns null on miss or stale entry.
33
+ */
34
+ async get(absPath) {
35
+ const entry = this.cache.get(absPath);
36
+ if (!entry) {
37
+ this.misses++;
38
+ return null;
39
+ }
40
+ // Check TTL
41
+ if (Date.now() - entry.fetchedAt > this.ttlMs) {
42
+ this.cache.delete(absPath);
43
+ this.misses++;
44
+ return null;
45
+ }
46
+ // Check mtime for invalidation
47
+ try {
48
+ const stat = await fs.stat(absPath);
49
+ if (stat.mtimeMs !== entry.mtime) {
50
+ this.cache.delete(absPath);
51
+ this.misses++;
52
+ return null;
53
+ }
54
+ }
55
+ catch {
56
+ this.cache.delete(absPath);
57
+ this.misses++;
58
+ return null;
59
+ }
60
+ this.hits++;
61
+ return entry.content;
62
+ }
63
+ /**
64
+ * Trigger prefetch for a file path. Non-blocking.
65
+ * Returns immediately, fetches in background.
66
+ */
67
+ prefetch(absPath) {
68
+ // Skip if already cached or pending
69
+ if (this.cache.has(absPath) || this.pending.has(absPath))
70
+ return;
71
+ const fetchPromise = this.fetchAndCache(absPath);
72
+ this.pending.set(absPath, fetchPromise);
73
+ fetchPromise.finally(() => this.pending.delete(absPath));
74
+ }
75
+ /**
76
+ * Prefetch multiple files in parallel.
77
+ */
78
+ prefetchMany(paths) {
79
+ for (const p of paths) {
80
+ this.prefetch(p);
81
+ }
82
+ }
83
+ /**
84
+ * Prefetch files likely to be edited based on tool calls.
85
+ * Analyzes pending tool calls and prefetches relevant files.
86
+ */
87
+ prefetchForToolCalls(toolCalls, cwd) {
88
+ const pathsToFetch = new Set();
89
+ for (const tc of toolCalls) {
90
+ const { name, args } = tc;
91
+ // Edit tools: prefetch the file being edited
92
+ if ((name === 'edit_file' || name === 'write_file' || name === 'insert_file') &&
93
+ typeof args.path === 'string') {
94
+ const absPath = path.isAbsolute(args.path) ? args.path : path.join(cwd, args.path);
95
+ pathsToFetch.add(absPath);
96
+ }
97
+ // read_files: prefetch all paths
98
+ if (name === 'read_files' && Array.isArray(args.paths)) {
99
+ for (const p of args.paths) {
100
+ if (typeof p === 'string') {
101
+ const absPath = path.isAbsolute(p) ? p : path.join(cwd, p);
102
+ pathsToFetch.add(absPath);
103
+ }
104
+ }
105
+ }
106
+ // apply_patch: prefetch all files in the patch
107
+ if (name === 'apply_patch' && Array.isArray(args.files)) {
108
+ for (const f of args.files) {
109
+ if (typeof f === 'string') {
110
+ const absPath = path.isAbsolute(f) ? f : path.join(cwd, f);
111
+ pathsToFetch.add(absPath);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ this.prefetchMany([...pathsToFetch]);
117
+ }
118
+ /**
119
+ * Wait for a pending prefetch to complete.
120
+ */
121
+ async waitFor(absPath) {
122
+ const pending = this.pending.get(absPath);
123
+ if (pending) {
124
+ const entry = await pending;
125
+ return entry?.content ?? null;
126
+ }
127
+ return this.get(absPath);
128
+ }
129
+ async fetchAndCache(absPath) {
130
+ try {
131
+ const stat = await fs.stat(absPath);
132
+ // Skip if too large
133
+ if (stat.size > this.maxFileSize)
134
+ return null;
135
+ // Skip if not a regular file
136
+ if (!stat.isFile())
137
+ return null;
138
+ const content = await fs.readFile(absPath, 'utf8');
139
+ const entry = {
140
+ content,
141
+ mtime: stat.mtimeMs,
142
+ fetchedAt: Date.now(),
143
+ size: stat.size,
144
+ };
145
+ // Evict if over capacity
146
+ if (this.cache.size >= this.maxEntries) {
147
+ this.evictOldest();
148
+ }
149
+ this.cache.set(absPath, entry);
150
+ this.prefetches++;
151
+ return entry;
152
+ }
153
+ catch {
154
+ return null;
155
+ }
156
+ }
157
+ evictOldest() {
158
+ let oldestKey = null;
159
+ let oldestTime = Infinity;
160
+ for (const [key, entry] of this.cache) {
161
+ if (entry.fetchedAt < oldestTime) {
162
+ oldestTime = entry.fetchedAt;
163
+ oldestKey = key;
164
+ }
165
+ }
166
+ if (oldestKey) {
167
+ this.cache.delete(oldestKey);
168
+ this.evictions++;
169
+ }
170
+ }
171
+ /**
172
+ * Invalidate a cached entry (e.g., after write).
173
+ */
174
+ invalidate(absPath) {
175
+ this.cache.delete(absPath);
176
+ }
177
+ /**
178
+ * Clear all cached entries.
179
+ */
180
+ clear() {
181
+ this.cache.clear();
182
+ }
183
+ /**
184
+ * Get prefetch statistics.
185
+ */
186
+ stats() {
187
+ return {
188
+ hits: this.hits,
189
+ misses: this.misses,
190
+ prefetches: this.prefetches,
191
+ evictions: this.evictions,
192
+ hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,
193
+ };
194
+ }
195
+ }
196
+ //# sourceMappingURL=file-prefetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-prefetch.js","sourceRoot":"","sources":["../../src/agent/file-prefetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Agent module barrel file - re-exports all agent submodules.
3
+ *
4
+ * Organization:
5
+ * - capture.ts: Session capture/logging
6
+ * - client-pool.ts: Provider connection pooling
7
+ * - compaction-scoring.ts: Message compaction heuristics
8
+ * - context-budget.ts: Context window management
9
+ * - conversation-branch.ts: Conversation threading
10
+ * - exec-helpers.ts: Shell command parsing/normalization
11
+ * - formatting.ts: Output formatting utilities
12
+ * - prompt-builder.ts: System prompt construction
13
+ * - query-classifier.ts: Query type classification
14
+ * - resilient-provider.ts: Provider failover
15
+ * - response-cache.ts: Response caching
16
+ * - review-artifact.ts: Code review utilities
17
+ * - semantic-search.ts: Embedding-based search
18
+ * - session-utils.ts: Session state utilities
19
+ * - subagent-context.ts: Sub-agent management
20
+ * - tool-calls.ts: Tool call parsing/validation
21
+ * - tool-loop-detection.ts: Loop detection algorithms
22
+ * - tool-loop-guard.ts: Loop prevention guardrails
23
+ * - tool-name-alias.ts: Tool name normalization
24
+ * - tool-policy.ts: Tool permission policies
25
+ * - tools-schema.ts: Tool schema generation
26
+ */
27
+ export * from "./capture.js";
28
+ export * from "./client-pool.js";
29
+ export * from "./compaction-scoring.js";
30
+ export * from "./context-budget.js";
31
+ export * from "./conversation-branch.js";
32
+ export * from "./exec-helpers.js";
33
+ export * from "./formatting.js";
34
+ export * from "./prompt-builder.js";
35
+ export * from "./query-classifier.js";
36
+ export * from "./resilient-provider.js";
37
+ export * from "./response-cache.js";
38
+ export * from "./review-artifact.js";
39
+ export * from "./semantic-search.js";
40
+ export * from "./session-utils.js";
41
+ export * from "./subagent-context.js";
42
+ export * from "./tool-calls.js";
43
+ export * from "./tool-loop-detection.js";
44
+ export * from "./tool-loop-guard.js";
45
+ export * from "./tool-name-alias.js";
46
+ export * from "./tool-policy.js";
47
+ export * from "./tools-schema.js";
48
+ // Speed optimization modules
49
+ export * from "./file-prefetch.js";
50
+ export * from "./query-classifier-fast.js";
51
+ export * from "./predictive-compaction.js";
52
+ export * from "./schema-optimizer.js";
53
+ export * from "./read-ahead-buffer.js";
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAElC,6BAA6B;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Predictive Compaction Module
3
+ *
4
+ * Triggers compaction earlier based on token velocity (tokens consumed per turn)
5
+ * rather than waiting until the context window is nearly full.
6
+ *
7
+ * Benefits:
8
+ * - Smoother context management (avoid sudden large compactions)
9
+ * - Better latency (compact during idle periods)
10
+ * - More headroom for tool outputs
11
+ */
12
+ export class PredictiveCompactionTracker {
13
+ turnTokenCounts = [];
14
+ config;
15
+ constructor(config) {
16
+ this.config = {
17
+ contextWindow: config.contextWindow,
18
+ thresholdRatio: config.thresholdRatio ?? 0.75,
19
+ minTurnsHeadroom: config.minTurnsHeadroom ?? 3,
20
+ minVelocityForPrediction: config.minVelocityForPrediction ?? 2000,
21
+ velocitySampleSize: config.velocitySampleSize ?? 5,
22
+ };
23
+ }
24
+ /**
25
+ * Record tokens consumed in a turn.
26
+ */
27
+ recordTurn(tokensConsumed) {
28
+ this.turnTokenCounts.push(tokensConsumed);
29
+ // Keep only recent samples
30
+ if (this.turnTokenCounts.length > this.config.velocitySampleSize * 2) {
31
+ this.turnTokenCounts = this.turnTokenCounts.slice(-this.config.velocitySampleSize);
32
+ }
33
+ }
34
+ /**
35
+ * Calculate current token velocity (avg tokens per turn).
36
+ */
37
+ getVelocity() {
38
+ if (this.turnTokenCounts.length === 0)
39
+ return 0;
40
+ const recentSamples = this.turnTokenCounts.slice(-this.config.velocitySampleSize);
41
+ const sum = recentSamples.reduce((a, b) => a + b, 0);
42
+ return sum / recentSamples.length;
43
+ }
44
+ /**
45
+ * Check if predictive compaction should trigger.
46
+ *
47
+ * @param currentTokens Current context size in tokens
48
+ * @returns Stats and recommendation
49
+ */
50
+ shouldCompact(currentTokens) {
51
+ const velocity = this.getVelocity();
52
+ const threshold = this.config.contextWindow * this.config.thresholdRatio;
53
+ const headroom = threshold - currentTokens;
54
+ // Estimate turns until threshold
55
+ const turnsUntilThreshold = velocity > 0 ? Math.floor(headroom / velocity) : Infinity;
56
+ // Default: no compaction needed
57
+ let shouldCompact = false;
58
+ let reason = 'sufficient headroom';
59
+ // Already over threshold: definitely compact
60
+ if (currentTokens >= threshold) {
61
+ shouldCompact = true;
62
+ reason = 'over threshold';
63
+ }
64
+ // Predictive: compact if we'll hit threshold within minTurnsHeadroom turns
65
+ else if (velocity >= this.config.minVelocityForPrediction &&
66
+ turnsUntilThreshold <= this.config.minTurnsHeadroom) {
67
+ shouldCompact = true;
68
+ reason = `predictive: ${turnsUntilThreshold} turns until threshold at ${Math.round(velocity)} tokens/turn`;
69
+ }
70
+ // High velocity warning zone
71
+ else if (velocity >= this.config.minVelocityForPrediction * 2 && turnsUntilThreshold <= 5) {
72
+ shouldCompact = true;
73
+ reason = `high velocity warning: ${Math.round(velocity)} tokens/turn`;
74
+ }
75
+ return {
76
+ avgTokensPerTurn: Math.round(velocity),
77
+ turnsUntilThreshold: turnsUntilThreshold === Infinity ? -1 : turnsUntilThreshold,
78
+ shouldCompact,
79
+ reason,
80
+ };
81
+ }
82
+ /**
83
+ * Reset tracking (e.g., after compaction or session reset).
84
+ */
85
+ reset() {
86
+ this.turnTokenCounts = [];
87
+ }
88
+ /**
89
+ * Get raw turn history for debugging.
90
+ */
91
+ getTurnHistory() {
92
+ return [...this.turnTokenCounts];
93
+ }
94
+ }
95
+ /**
96
+ * Calculate optimal compaction target size based on velocity.
97
+ *
98
+ * When compacting, we want to leave enough room for several turns
99
+ * at the current velocity, plus some buffer for tool outputs.
100
+ *
101
+ * @param contextWindow Context window size
102
+ * @param velocity Current token velocity
103
+ * @param targetTurns Target turns of headroom (default: 10)
104
+ * @returns Target token count after compaction
105
+ */
106
+ export function calculateCompactionTarget(contextWindow, velocity, targetTurns = 10) {
107
+ const threshold = contextWindow * 0.75;
108
+ const headroomNeeded = velocity * targetTurns;
109
+ const toolBuffer = 5000; // Reserve for tool outputs
110
+ // Target: enough room for targetTurns + tool buffer
111
+ const target = threshold - headroomNeeded - toolBuffer;
112
+ // Don't compact below 20% of context (preserve important history)
113
+ const minTarget = contextWindow * 0.2;
114
+ return Math.max(target, minTarget);
115
+ }
116
+ /**
117
+ * Estimate compaction savings based on message scores.
118
+ *
119
+ * @param messages Messages with scores
120
+ * @param targetReduction Target tokens to remove
121
+ * @returns Indices of messages to drop
122
+ */
123
+ export function selectMessagesForCompaction(messages, targetReduction) {
124
+ // Sort by score ascending (lowest value first)
125
+ const sorted = [...messages].sort((a, b) => a.score - b.score);
126
+ const toRemove = [];
127
+ let removed = 0;
128
+ for (const msg of sorted) {
129
+ if (removed >= targetReduction)
130
+ break;
131
+ // Never remove system messages (score 100) or very recent messages (score > 80)
132
+ if (msg.score >= 80)
133
+ continue;
134
+ toRemove.push(msg.index);
135
+ removed += msg.tokens;
136
+ }
137
+ return toRemove;
138
+ }
139
+ //# sourceMappingURL=predictive-compaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictive-compaction.js","sourceRoot":"","sources":["../../src/agent/predictive-compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0BH,MAAM,OAAO,2BAA2B;IAC9B,eAAe,GAAa,EAAE,CAAC;IAC/B,MAAM,CAAoC;IAElD,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG;YACZ,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC;YAC9C,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,IAAI;YACjE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC;SACnD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,cAAsB;QAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE1C,2BAA2B;QAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,aAAqB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACzE,MAAM,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;QAE3C,iCAAiC;QACjC,MAAM,mBAAmB,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEtF,gCAAgC;QAChC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,MAAM,GAAG,qBAAqB,CAAC;QAEnC,6CAA6C;QAC7C,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;YAC/B,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,GAAG,gBAAgB,CAAC;QAC5B,CAAC;QACD,2EAA2E;aACtE,IACH,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB;YAChD,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EACnD,CAAC;YACD,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,GAAG,eAAe,mBAAmB,6BAA6B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7G,CAAC;QACD,6BAA6B;aACxB,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,GAAG,CAAC,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;YAC1F,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,GAAG,0BAA0B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QACxE,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACtC,mBAAmB,EAAE,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;YAChF,aAAa;YACb,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,aAAqB,EACrB,QAAgB,EAChB,WAAW,GAAG,EAAE;IAEhB,MAAM,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC;IACvC,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,2BAA2B;IAEpD,oDAAoD;IACpD,MAAM,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,CAAC;IAEvD,kEAAkE;IAClE,MAAM,SAAS,GAAG,aAAa,GAAG,GAAG,CAAC;IAEtC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAiE,EACjE,eAAuB;IAEvB,+CAA+C;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,eAAe;YAAE,MAAM;QAEtC,gFAAgF;QAChF,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;YAAE,SAAS;QAE9B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}