attocode 0.2.0 → 0.2.2
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.
- package/CHANGELOG.md +111 -1
- package/README.md +7 -0
- package/dist/src/adapters.d.ts +6 -1
- package/dist/src/adapters.d.ts.map +1 -1
- package/dist/src/adapters.js +14 -1
- package/dist/src/adapters.js.map +1 -1
- package/dist/src/agent.d.ts +50 -0
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +734 -316
- package/dist/src/agent.js.map +1 -1
- package/dist/src/defaults.d.ts +1 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +2 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/integrations/agent-registry.d.ts +9 -2
- package/dist/src/integrations/agent-registry.d.ts.map +1 -1
- package/dist/src/integrations/agent-registry.js +30 -4
- package/dist/src/integrations/agent-registry.js.map +1 -1
- package/dist/src/integrations/async-subagent.d.ts +135 -0
- package/dist/src/integrations/async-subagent.d.ts.map +1 -0
- package/dist/src/integrations/async-subagent.js +213 -0
- package/dist/src/integrations/async-subagent.js.map +1 -0
- package/dist/src/integrations/auto-checkpoint.d.ts +98 -0
- package/dist/src/integrations/auto-checkpoint.d.ts.map +1 -0
- package/dist/src/integrations/auto-checkpoint.js +252 -0
- package/dist/src/integrations/auto-checkpoint.js.map +1 -0
- package/dist/src/integrations/budget-pool.d.ts +13 -1
- package/dist/src/integrations/budget-pool.d.ts.map +1 -1
- package/dist/src/integrations/budget-pool.js +17 -0
- package/dist/src/integrations/budget-pool.js.map +1 -1
- package/dist/src/integrations/complexity-classifier.d.ts +86 -0
- package/dist/src/integrations/complexity-classifier.d.ts.map +1 -0
- package/dist/src/integrations/complexity-classifier.js +233 -0
- package/dist/src/integrations/complexity-classifier.js.map +1 -0
- package/dist/src/integrations/delegation-protocol.d.ts +86 -0
- package/dist/src/integrations/delegation-protocol.d.ts.map +1 -0
- package/dist/src/integrations/delegation-protocol.js +127 -0
- package/dist/src/integrations/delegation-protocol.js.map +1 -0
- package/dist/src/integrations/dynamic-budget.d.ts +81 -0
- package/dist/src/integrations/dynamic-budget.d.ts.map +1 -0
- package/dist/src/integrations/dynamic-budget.js +151 -0
- package/dist/src/integrations/dynamic-budget.js.map +1 -0
- package/dist/src/integrations/economics.d.ts +44 -1
- package/dist/src/integrations/economics.d.ts.map +1 -1
- package/dist/src/integrations/economics.js +182 -3
- package/dist/src/integrations/economics.js.map +1 -1
- package/dist/src/integrations/environment-facts.d.ts +52 -0
- package/dist/src/integrations/environment-facts.d.ts.map +1 -0
- package/dist/src/integrations/environment-facts.js +84 -0
- package/dist/src/integrations/environment-facts.js.map +1 -0
- package/dist/src/integrations/index.d.ts +16 -1
- package/dist/src/integrations/index.d.ts.map +1 -1
- package/dist/src/integrations/index.js +31 -1
- package/dist/src/integrations/index.js.map +1 -1
- package/dist/src/integrations/injection-budget.d.ts +71 -0
- package/dist/src/integrations/injection-budget.d.ts.map +1 -0
- package/dist/src/integrations/injection-budget.js +136 -0
- package/dist/src/integrations/injection-budget.js.map +1 -0
- package/dist/src/integrations/mcp-client.d.ts.map +1 -1
- package/dist/src/integrations/mcp-client.js +14 -0
- package/dist/src/integrations/mcp-client.js.map +1 -1
- package/dist/src/integrations/mcp-custom-tools.d.ts +102 -0
- package/dist/src/integrations/mcp-custom-tools.d.ts.map +1 -0
- package/dist/src/integrations/mcp-custom-tools.js +232 -0
- package/dist/src/integrations/mcp-custom-tools.js.map +1 -0
- package/dist/src/integrations/mcp-tool-validator.d.ts +60 -0
- package/dist/src/integrations/mcp-tool-validator.d.ts.map +1 -0
- package/dist/src/integrations/mcp-tool-validator.js +141 -0
- package/dist/src/integrations/mcp-tool-validator.js.map +1 -0
- package/dist/src/integrations/routing.d.ts +2 -1
- package/dist/src/integrations/routing.d.ts.map +1 -1
- package/dist/src/integrations/routing.js.map +1 -1
- package/dist/src/integrations/self-improvement.d.ts +90 -0
- package/dist/src/integrations/self-improvement.d.ts.map +1 -0
- package/dist/src/integrations/self-improvement.js +217 -0
- package/dist/src/integrations/self-improvement.js.map +1 -0
- package/dist/src/integrations/smart-decomposer.d.ts +4 -0
- package/dist/src/integrations/smart-decomposer.d.ts.map +1 -1
- package/dist/src/integrations/smart-decomposer.js +55 -28
- package/dist/src/integrations/smart-decomposer.js.map +1 -1
- package/dist/src/integrations/subagent-output-store.d.ts +91 -0
- package/dist/src/integrations/subagent-output-store.d.ts.map +1 -0
- package/dist/src/integrations/subagent-output-store.js +257 -0
- package/dist/src/integrations/subagent-output-store.js.map +1 -0
- package/dist/src/integrations/swarm/index.d.ts +1 -1
- package/dist/src/integrations/swarm/index.d.ts.map +1 -1
- package/dist/src/integrations/swarm/index.js +1 -1
- package/dist/src/integrations/swarm/index.js.map +1 -1
- package/dist/src/integrations/swarm/model-selector.d.ts +1 -0
- package/dist/src/integrations/swarm/model-selector.d.ts.map +1 -1
- package/dist/src/integrations/swarm/model-selector.js +37 -3
- package/dist/src/integrations/swarm/model-selector.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-config-loader.d.ts +10 -1
- package/dist/src/integrations/swarm/swarm-config-loader.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-config-loader.js +72 -6
- package/dist/src/integrations/swarm/swarm-config-loader.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-event-bridge.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-event-bridge.js +26 -4
- package/dist/src/integrations/swarm/swarm-event-bridge.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-events.d.ts +11 -0
- package/dist/src/integrations/swarm/swarm-events.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-events.js +4 -0
- package/dist/src/integrations/swarm/swarm-events.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-orchestrator.d.ts +11 -0
- package/dist/src/integrations/swarm/swarm-orchestrator.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-orchestrator.js +233 -10
- package/dist/src/integrations/swarm/swarm-orchestrator.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-quality-gate.d.ts +9 -2
- package/dist/src/integrations/swarm/swarm-quality-gate.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-quality-gate.js +128 -11
- package/dist/src/integrations/swarm/swarm-quality-gate.js.map +1 -1
- package/dist/src/integrations/swarm/task-queue.d.ts +11 -1
- package/dist/src/integrations/swarm/task-queue.d.ts.map +1 -1
- package/dist/src/integrations/swarm/task-queue.js +125 -15
- package/dist/src/integrations/swarm/task-queue.js.map +1 -1
- package/dist/src/integrations/swarm/types.d.ts +40 -1
- package/dist/src/integrations/swarm/types.d.ts.map +1 -1
- package/dist/src/integrations/swarm/types.js +6 -1
- package/dist/src/integrations/swarm/types.js.map +1 -1
- package/dist/src/integrations/swarm/worker-pool.d.ts +9 -3
- package/dist/src/integrations/swarm/worker-pool.d.ts.map +1 -1
- package/dist/src/integrations/swarm/worker-pool.js +89 -17
- package/dist/src/integrations/swarm/worker-pool.js.map +1 -1
- package/dist/src/integrations/thinking-strategy.d.ts +52 -0
- package/dist/src/integrations/thinking-strategy.d.ts.map +1 -0
- package/dist/src/integrations/thinking-strategy.js +129 -0
- package/dist/src/integrations/thinking-strategy.js.map +1 -0
- package/dist/src/integrations/tool-recommendation.d.ts +58 -0
- package/dist/src/integrations/tool-recommendation.d.ts.map +1 -0
- package/dist/src/integrations/tool-recommendation.js +215 -0
- package/dist/src/integrations/tool-recommendation.js.map +1 -0
- package/dist/src/integrations/verification-gate.d.ts +80 -0
- package/dist/src/integrations/verification-gate.d.ts.map +1 -0
- package/dist/src/integrations/verification-gate.js +146 -0
- package/dist/src/integrations/verification-gate.js.map +1 -0
- package/dist/src/integrations/work-log.d.ts +87 -0
- package/dist/src/integrations/work-log.d.ts.map +1 -0
- package/dist/src/integrations/work-log.js +275 -0
- package/dist/src/integrations/work-log.js.map +1 -0
- package/dist/src/main.js +5 -4
- package/dist/src/main.js.map +1 -1
- package/dist/src/modes.d.ts +6 -0
- package/dist/src/modes.d.ts.map +1 -1
- package/dist/src/modes.js +73 -2
- package/dist/src/modes.js.map +1 -1
- package/dist/src/providers/adapters/anthropic.d.ts.map +1 -1
- package/dist/src/providers/adapters/anthropic.js +20 -3
- package/dist/src/providers/adapters/anthropic.js.map +1 -1
- package/dist/src/providers/adapters/openrouter.d.ts.map +1 -1
- package/dist/src/providers/adapters/openrouter.js +3 -1
- package/dist/src/providers/adapters/openrouter.js.map +1 -1
- package/dist/src/providers/types.d.ts +4 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/types.js.map +1 -1
- package/dist/src/tools/bash.d.ts +8 -2
- package/dist/src/tools/bash.d.ts.map +1 -1
- package/dist/src/tools/bash.js +14 -1
- package/dist/src/tools/bash.js.map +1 -1
- package/dist/src/tools/coercion.d.ts +14 -0
- package/dist/src/tools/coercion.d.ts.map +1 -0
- package/dist/src/tools/coercion.js +25 -0
- package/dist/src/tools/coercion.js.map +1 -0
- package/dist/src/tools/file.d.ts +2 -2
- package/dist/src/tools/file.d.ts.map +1 -1
- package/dist/src/tools/file.js +2 -1
- package/dist/src/tools/file.js.map +1 -1
- package/dist/src/tools/standard.d.ts +17 -1
- package/dist/src/tools/standard.d.ts.map +1 -1
- package/dist/src/tools/standard.js +64 -11
- package/dist/src/tools/standard.js.map +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +8 -1
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/event-display.d.ts.map +1 -1
- package/dist/src/tui/event-display.js +8 -1
- package/dist/src/tui/event-display.js.map +1 -1
- package/dist/src/types.d.ts +26 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-subagent.js","sourceRoot":"","sources":["../../../src/integrations/async-subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Checkpoint Resumption
|
|
3
|
+
*
|
|
4
|
+
* Saves lightweight checkpoints at key execution points so that
|
|
5
|
+
* work can be recovered if the agent crashes or times out.
|
|
6
|
+
*
|
|
7
|
+
* Key points where checkpoints are saved:
|
|
8
|
+
* - After each tool batch execution
|
|
9
|
+
* - Before LLM calls (so the prompt is recoverable)
|
|
10
|
+
* - After significant state changes (plan approval, mode switch)
|
|
11
|
+
*
|
|
12
|
+
* On startup, detects recent sessions (<5 min) and offers auto-resume.
|
|
13
|
+
*/
|
|
14
|
+
export interface Checkpoint {
|
|
15
|
+
/** Unique checkpoint ID */
|
|
16
|
+
id: string;
|
|
17
|
+
/** Label describing the checkpoint point */
|
|
18
|
+
label: string;
|
|
19
|
+
/** Session ID this checkpoint belongs to */
|
|
20
|
+
sessionId: string;
|
|
21
|
+
/** Timestamp of the checkpoint */
|
|
22
|
+
timestamp: number;
|
|
23
|
+
/** Agent iteration count at this point */
|
|
24
|
+
iteration: number;
|
|
25
|
+
/** Messages up to this point (serialized) */
|
|
26
|
+
messages?: unknown[];
|
|
27
|
+
/** Current objective/task */
|
|
28
|
+
objective?: string;
|
|
29
|
+
/** Current mode */
|
|
30
|
+
mode?: string;
|
|
31
|
+
/** Files modified since last checkpoint */
|
|
32
|
+
filesModified?: string[];
|
|
33
|
+
/** Token usage at this point */
|
|
34
|
+
tokensUsed?: number;
|
|
35
|
+
/** Tool call history summary */
|
|
36
|
+
toolCallSummary?: string;
|
|
37
|
+
/** Custom metadata */
|
|
38
|
+
metadata?: Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
export interface AutoCheckpointConfig {
|
|
41
|
+
/** Directory for checkpoint storage (default: '.agent/checkpoints') */
|
|
42
|
+
checkpointDir: string;
|
|
43
|
+
/** Maximum checkpoints to keep per session (default: 10) */
|
|
44
|
+
maxCheckpointsPerSession: number;
|
|
45
|
+
/** Auto-cleanup checkpoints older than this (ms, default: 3600000 = 1hr) */
|
|
46
|
+
maxAge: number;
|
|
47
|
+
/** Whether checkpointing is enabled (default: true) */
|
|
48
|
+
enabled: boolean;
|
|
49
|
+
/** Minimum interval between checkpoints (ms, default: 30000) */
|
|
50
|
+
minInterval: number;
|
|
51
|
+
}
|
|
52
|
+
export interface ResumeCandidate {
|
|
53
|
+
/** Session ID */
|
|
54
|
+
sessionId: string;
|
|
55
|
+
/** Most recent checkpoint */
|
|
56
|
+
checkpoint: Checkpoint;
|
|
57
|
+
/** Age of the checkpoint in ms */
|
|
58
|
+
ageMs: number;
|
|
59
|
+
/** Number of checkpoints available */
|
|
60
|
+
checkpointCount: number;
|
|
61
|
+
}
|
|
62
|
+
export declare class AutoCheckpointManager {
|
|
63
|
+
private config;
|
|
64
|
+
private lastCheckpointTime;
|
|
65
|
+
private checkpointCount;
|
|
66
|
+
constructor(config?: Partial<AutoCheckpointConfig>);
|
|
67
|
+
/**
|
|
68
|
+
* Save a checkpoint at a key execution point.
|
|
69
|
+
* Respects minInterval to avoid excessive I/O.
|
|
70
|
+
*/
|
|
71
|
+
save(checkpoint: Omit<Checkpoint, 'id' | 'timestamp'>): string | null;
|
|
72
|
+
/**
|
|
73
|
+
* Load a specific checkpoint.
|
|
74
|
+
*/
|
|
75
|
+
load(sessionId: string, checkpointId: string): Checkpoint | null;
|
|
76
|
+
/**
|
|
77
|
+
* Find sessions with recent checkpoints that could be resumed.
|
|
78
|
+
*/
|
|
79
|
+
findResumeCandidates(maxAgeMs?: number): ResumeCandidate[];
|
|
80
|
+
/**
|
|
81
|
+
* Load all checkpoints for a session, sorted by timestamp.
|
|
82
|
+
*/
|
|
83
|
+
loadSessionCheckpoints(sessionId: string): Checkpoint[];
|
|
84
|
+
/**
|
|
85
|
+
* Get a summary of a checkpoint for display.
|
|
86
|
+
*/
|
|
87
|
+
formatCheckpointSummary(checkpoint: Checkpoint): string;
|
|
88
|
+
/**
|
|
89
|
+
* Clean up old checkpoints globally.
|
|
90
|
+
*/
|
|
91
|
+
cleanupAll(): number;
|
|
92
|
+
private cleanupSession;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Create an auto-checkpoint manager.
|
|
96
|
+
*/
|
|
97
|
+
export declare function createAutoCheckpointManager(config?: Partial<AutoCheckpointConfig>): AutoCheckpointManager;
|
|
98
|
+
//# sourceMappingURL=auto-checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-checkpoint.d.ts","sourceRoot":"","sources":["../../../src/integrations/auto-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,wBAAwB,EAAE,MAAM,CAAC;IACjC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;CACzB;AAkBD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAYlD;;;OAGG;IACH,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,MAAM,GAAG,IAAI;IA0CrE;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAUhE;;OAEG;IACH,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IA2C1D;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAwBvD;;OAEG;IACH,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IA2BvD;;OAEG;IACH,UAAU,IAAI,MAAM;IAyCpB,OAAO,CAAC,cAAc;CAiBvB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Checkpoint Resumption
|
|
3
|
+
*
|
|
4
|
+
* Saves lightweight checkpoints at key execution points so that
|
|
5
|
+
* work can be recovered if the agent crashes or times out.
|
|
6
|
+
*
|
|
7
|
+
* Key points where checkpoints are saved:
|
|
8
|
+
* - After each tool batch execution
|
|
9
|
+
* - Before LLM calls (so the prompt is recoverable)
|
|
10
|
+
* - After significant state changes (plan approval, mode switch)
|
|
11
|
+
*
|
|
12
|
+
* On startup, detects recent sessions (<5 min) and offers auto-resume.
|
|
13
|
+
*/
|
|
14
|
+
import { writeFileSync, readFileSync, mkdirSync, existsSync, readdirSync, statSync, unlinkSync } from 'node:fs';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// CONSTANTS
|
|
18
|
+
// =============================================================================
|
|
19
|
+
const DEFAULT_CONFIG = {
|
|
20
|
+
checkpointDir: '.agent/checkpoints',
|
|
21
|
+
maxCheckpointsPerSession: 10,
|
|
22
|
+
maxAge: 3600000, // 1 hour
|
|
23
|
+
enabled: true,
|
|
24
|
+
minInterval: 30000, // 30 seconds
|
|
25
|
+
};
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// AUTO-CHECKPOINT MANAGER
|
|
28
|
+
// =============================================================================
|
|
29
|
+
export class AutoCheckpointManager {
|
|
30
|
+
config;
|
|
31
|
+
lastCheckpointTime = 0;
|
|
32
|
+
checkpointCount = 0;
|
|
33
|
+
constructor(config) {
|
|
34
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
35
|
+
if (this.config.enabled) {
|
|
36
|
+
try {
|
|
37
|
+
mkdirSync(this.config.checkpointDir, { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Directory creation may fail
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Save a checkpoint at a key execution point.
|
|
46
|
+
* Respects minInterval to avoid excessive I/O.
|
|
47
|
+
*/
|
|
48
|
+
save(checkpoint) {
|
|
49
|
+
if (!this.config.enabled)
|
|
50
|
+
return null;
|
|
51
|
+
const now = Date.now();
|
|
52
|
+
if (now - this.lastCheckpointTime < this.config.minInterval) {
|
|
53
|
+
return null; // Too soon since last checkpoint
|
|
54
|
+
}
|
|
55
|
+
const id = `ckpt-${now}-${Math.random().toString(36).slice(2, 6)}`;
|
|
56
|
+
const fullCheckpoint = {
|
|
57
|
+
...checkpoint,
|
|
58
|
+
id,
|
|
59
|
+
timestamp: now,
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
const sessionDir = join(this.config.checkpointDir, checkpoint.sessionId);
|
|
63
|
+
mkdirSync(sessionDir, { recursive: true });
|
|
64
|
+
const filePath = join(sessionDir, `${id}.json`);
|
|
65
|
+
// Don't persist full messages array to save space - just metadata
|
|
66
|
+
const persistable = {
|
|
67
|
+
...fullCheckpoint,
|
|
68
|
+
messages: undefined, // Strip messages to keep checkpoints small
|
|
69
|
+
_messageCount: fullCheckpoint.messages?.length ?? 0,
|
|
70
|
+
};
|
|
71
|
+
writeFileSync(filePath, JSON.stringify(persistable, null, 2), 'utf-8');
|
|
72
|
+
this.lastCheckpointTime = now;
|
|
73
|
+
this.checkpointCount++;
|
|
74
|
+
// Cleanup old checkpoints for this session
|
|
75
|
+
this.cleanupSession(checkpoint.sessionId);
|
|
76
|
+
return id;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Load a specific checkpoint.
|
|
84
|
+
*/
|
|
85
|
+
load(sessionId, checkpointId) {
|
|
86
|
+
try {
|
|
87
|
+
const filePath = join(this.config.checkpointDir, sessionId, `${checkpointId}.json`);
|
|
88
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
89
|
+
return JSON.parse(content);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Find sessions with recent checkpoints that could be resumed.
|
|
97
|
+
*/
|
|
98
|
+
findResumeCandidates(maxAgeMs) {
|
|
99
|
+
const maxAge = maxAgeMs ?? 300000; // Default: 5 minutes
|
|
100
|
+
const now = Date.now();
|
|
101
|
+
const candidates = [];
|
|
102
|
+
try {
|
|
103
|
+
if (!existsSync(this.config.checkpointDir))
|
|
104
|
+
return [];
|
|
105
|
+
const sessions = readdirSync(this.config.checkpointDir);
|
|
106
|
+
for (const sessionId of sessions) {
|
|
107
|
+
const sessionDir = join(this.config.checkpointDir, sessionId);
|
|
108
|
+
try {
|
|
109
|
+
const stat = statSync(sessionDir);
|
|
110
|
+
if (!stat.isDirectory())
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const checkpoints = this.loadSessionCheckpoints(sessionId);
|
|
117
|
+
if (checkpoints.length === 0)
|
|
118
|
+
continue;
|
|
119
|
+
// Most recent checkpoint
|
|
120
|
+
const latest = checkpoints[checkpoints.length - 1];
|
|
121
|
+
const age = now - latest.timestamp;
|
|
122
|
+
if (age <= maxAge) {
|
|
123
|
+
candidates.push({
|
|
124
|
+
sessionId,
|
|
125
|
+
checkpoint: latest,
|
|
126
|
+
ageMs: age,
|
|
127
|
+
checkpointCount: checkpoints.length,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// Directory reading may fail
|
|
134
|
+
}
|
|
135
|
+
// Sort by recency (most recent first)
|
|
136
|
+
return candidates.sort((a, b) => a.ageMs - b.ageMs);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Load all checkpoints for a session, sorted by timestamp.
|
|
140
|
+
*/
|
|
141
|
+
loadSessionCheckpoints(sessionId) {
|
|
142
|
+
const sessionDir = join(this.config.checkpointDir, sessionId);
|
|
143
|
+
const checkpoints = [];
|
|
144
|
+
try {
|
|
145
|
+
if (!existsSync(sessionDir))
|
|
146
|
+
return [];
|
|
147
|
+
const files = readdirSync(sessionDir).filter(f => f.endsWith('.json'));
|
|
148
|
+
for (const file of files) {
|
|
149
|
+
try {
|
|
150
|
+
const content = readFileSync(join(sessionDir, file), 'utf-8');
|
|
151
|
+
checkpoints.push(JSON.parse(content));
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// Skip malformed checkpoints
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return [];
|
|
160
|
+
}
|
|
161
|
+
return checkpoints.sort((a, b) => a.timestamp - b.timestamp);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get a summary of a checkpoint for display.
|
|
165
|
+
*/
|
|
166
|
+
formatCheckpointSummary(checkpoint) {
|
|
167
|
+
const age = Date.now() - checkpoint.timestamp;
|
|
168
|
+
const ageStr = age < 60000
|
|
169
|
+
? `${Math.round(age / 1000)}s ago`
|
|
170
|
+
: `${Math.round(age / 60000)}m ago`;
|
|
171
|
+
const lines = [
|
|
172
|
+
`Session: ${checkpoint.sessionId}`,
|
|
173
|
+
`Checkpoint: ${checkpoint.label} (${ageStr})`,
|
|
174
|
+
`Iteration: ${checkpoint.iteration}`,
|
|
175
|
+
];
|
|
176
|
+
if (checkpoint.objective) {
|
|
177
|
+
lines.push(`Objective: ${checkpoint.objective.slice(0, 100)}`);
|
|
178
|
+
}
|
|
179
|
+
if (checkpoint.tokensUsed) {
|
|
180
|
+
lines.push(`Tokens used: ${checkpoint.tokensUsed}`);
|
|
181
|
+
}
|
|
182
|
+
if (checkpoint.filesModified && checkpoint.filesModified.length > 0) {
|
|
183
|
+
lines.push(`Files modified: ${checkpoint.filesModified.join(', ')}`);
|
|
184
|
+
}
|
|
185
|
+
return lines.join('\n');
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Clean up old checkpoints globally.
|
|
189
|
+
*/
|
|
190
|
+
cleanupAll() {
|
|
191
|
+
let cleaned = 0;
|
|
192
|
+
const now = Date.now();
|
|
193
|
+
try {
|
|
194
|
+
if (!existsSync(this.config.checkpointDir))
|
|
195
|
+
return 0;
|
|
196
|
+
const sessions = readdirSync(this.config.checkpointDir);
|
|
197
|
+
for (const sessionId of sessions) {
|
|
198
|
+
const sessionDir = join(this.config.checkpointDir, sessionId);
|
|
199
|
+
try {
|
|
200
|
+
const stat = statSync(sessionDir);
|
|
201
|
+
if (!stat.isDirectory())
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const checkpoints = this.loadSessionCheckpoints(sessionId);
|
|
208
|
+
for (const ckpt of checkpoints) {
|
|
209
|
+
if (now - ckpt.timestamp > this.config.maxAge) {
|
|
210
|
+
try {
|
|
211
|
+
unlinkSync(join(sessionDir, `${ckpt.id}.json`));
|
|
212
|
+
cleaned++;
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// Deletion may fail
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Directory operations may fail
|
|
223
|
+
}
|
|
224
|
+
return cleaned;
|
|
225
|
+
}
|
|
226
|
+
// ===========================================================================
|
|
227
|
+
// INTERNAL
|
|
228
|
+
// ===========================================================================
|
|
229
|
+
cleanupSession(sessionId) {
|
|
230
|
+
const checkpoints = this.loadSessionCheckpoints(sessionId);
|
|
231
|
+
if (checkpoints.length > this.config.maxCheckpointsPerSession) {
|
|
232
|
+
// Remove oldest checkpoints
|
|
233
|
+
const toRemove = checkpoints.slice(0, checkpoints.length - this.config.maxCheckpointsPerSession);
|
|
234
|
+
const sessionDir = join(this.config.checkpointDir, sessionId);
|
|
235
|
+
for (const ckpt of toRemove) {
|
|
236
|
+
try {
|
|
237
|
+
unlinkSync(join(sessionDir, `${ckpt.id}.json`));
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Deletion may fail
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Create an auto-checkpoint manager.
|
|
248
|
+
*/
|
|
249
|
+
export function createAutoCheckpointManager(config) {
|
|
250
|
+
return new AutoCheckpointManager(config);
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=auto-checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-checkpoint.js","sourceRoot":"","sources":["../../../src/integrations/auto-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAyDjC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,cAAc,GAAyB;IAC3C,aAAa,EAAE,oBAAoB;IACnC,wBAAwB,EAAE,EAAE;IAC5B,MAAM,EAAE,OAAO,EAAE,SAAS;IAC1B,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,KAAK,EAAE,aAAa;CAClC,CAAC;AAEF,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,MAAM,OAAO,qBAAqB;IACxB,MAAM,CAAuB;IAC7B,kBAAkB,GAAG,CAAC,CAAC;IACvB,eAAe,GAAG,CAAC,CAAC;IAE5B,YAAY,MAAsC;QAChD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,UAAgD;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,CAAC,iCAAiC;QAChD,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,cAAc,GAAe;YACjC,GAAG,UAAU;YACb,EAAE;YACF,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YACzE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAEhD,kEAAkE;YAClE,MAAM,WAAW,GAAG;gBAClB,GAAG,cAAc;gBACjB,QAAQ,EAAE,SAAS,EAAE,2CAA2C;gBAChE,aAAa,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;aACpD,CAAC;YAEF,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAEvE,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,2CAA2C;YAC3C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAE1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,SAAiB,EAAE,YAAoB;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,QAAiB;QACpC,MAAM,MAAM,GAAG,QAAQ,IAAI,MAAM,CAAC,CAAC,qBAAqB;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEtD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAExD,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBAC9D,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;wBAAE,SAAS;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAC3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAEvC,yBAAyB;gBACzB,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnD,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;gBAEnC,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;oBAClB,UAAU,CAAC,IAAI,CAAC;wBACd,SAAS;wBACT,UAAU,EAAE,MAAM;wBAClB,KAAK,EAAE,GAAG;wBACV,eAAe,EAAE,WAAW,CAAC,MAAM;qBACpC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;QAED,sCAAsC;QACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,SAAiB;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEvC,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAEvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC9D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC,CAAC;gBACtD,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,UAAsB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC;QAC9C,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK;YACxB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO;YAClC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAEtC,MAAM,KAAK,GAAa;YACtB,YAAY,UAAU,CAAC,SAAS,EAAE;YAClC,eAAe,UAAU,CAAC,KAAK,KAAK,MAAM,GAAG;YAC7C,cAAc,UAAU,CAAC,SAAS,EAAE;SACrC,CAAC;QAEF,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;gBAAE,OAAO,CAAC,CAAC;YAErD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAExD,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBAC9D,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;wBAAE,SAAS;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAC3D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBAC9C,IAAI,CAAC;4BACH,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;4BAChD,OAAO,EAAE,CAAC;wBACZ,CAAC;wBAAC,MAAM,CAAC;4BACP,oBAAoB;wBACtB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8EAA8E;IAC9E,WAAW;IACX,8EAA8E;IAEtE,cAAc,CAAC,SAAiB;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;YAC9D,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACjG,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAE9D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClD,CAAC;gBAAC,MAAM,CAAC;oBACP,oBAAoB;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAsC;IAEtC,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -49,7 +49,8 @@ export interface BudgetPoolStats {
|
|
|
49
49
|
utilization: number;
|
|
50
50
|
}
|
|
51
51
|
export declare class SharedBudgetPool {
|
|
52
|
-
private
|
|
52
|
+
private config;
|
|
53
|
+
private readonly originalMaxPerChild;
|
|
53
54
|
private allocations;
|
|
54
55
|
private totalTokensUsed;
|
|
55
56
|
private totalCostUsed;
|
|
@@ -86,6 +87,17 @@ export declare class SharedBudgetPool {
|
|
|
86
87
|
* Check if the pool has enough budget for at least one more child.
|
|
87
88
|
*/
|
|
88
89
|
hasCapacity(): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Temporarily override maxPerChild for parallel batch spawning.
|
|
92
|
+
* Used by spawnAgentsParallel to divide the pool equally among children
|
|
93
|
+
* instead of each child racing for the full maxPerChild allocation.
|
|
94
|
+
* Must be followed by resetMaxPerChild() in a finally block.
|
|
95
|
+
*/
|
|
96
|
+
setMaxPerChild(maxPerChild: number): void;
|
|
97
|
+
/**
|
|
98
|
+
* Restore maxPerChild to the original value set at construction time.
|
|
99
|
+
*/
|
|
100
|
+
resetMaxPerChild(): void;
|
|
89
101
|
}
|
|
90
102
|
/**
|
|
91
103
|
* Create a budget pool from a parent's total budget.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget-pool.d.ts","sourceRoot":"","sources":["../../../src/integrations/budget-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"budget-pool.d.ts","sourceRoot":"","sources":["../../../src/integrations/budget-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,qEAAqE;IACrE,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,EAAE,gBAAgB;IAKpC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAsCjD;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAcnE;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU9B;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM7C;;OAEG;IACH,QAAQ,IAAI,eAAe;IAa3B;;OAEG;IACH,WAAW,IAAI,OAAO;IAKtB;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,gBAAgB,IAAI,IAAI;CAGzB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,GAAE,MAAa,EAAE,mCAAmC;AACtE,WAAW,GAAE,MAAe,GAC3B,gBAAgB,CAUlB"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
// =============================================================================
|
|
20
20
|
export class SharedBudgetPool {
|
|
21
21
|
config;
|
|
22
|
+
originalMaxPerChild;
|
|
22
23
|
allocations = new Map();
|
|
23
24
|
totalTokensUsed = 0;
|
|
24
25
|
totalCostUsed = 0;
|
|
@@ -27,6 +28,7 @@ export class SharedBudgetPool {
|
|
|
27
28
|
totalCostReserved = 0;
|
|
28
29
|
constructor(config) {
|
|
29
30
|
this.config = config;
|
|
31
|
+
this.originalMaxPerChild = config.maxPerChild;
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Reserve a budget allocation for a child agent.
|
|
@@ -123,6 +125,21 @@ export class SharedBudgetPool {
|
|
|
123
125
|
const committed = Math.max(this.totalTokensUsed, this.totalTokensReserved);
|
|
124
126
|
return (this.config.totalTokens - committed) > 10000; // Minimum 10K tokens
|
|
125
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Temporarily override maxPerChild for parallel batch spawning.
|
|
130
|
+
* Used by spawnAgentsParallel to divide the pool equally among children
|
|
131
|
+
* instead of each child racing for the full maxPerChild allocation.
|
|
132
|
+
* Must be followed by resetMaxPerChild() in a finally block.
|
|
133
|
+
*/
|
|
134
|
+
setMaxPerChild(maxPerChild) {
|
|
135
|
+
this.config.maxPerChild = maxPerChild;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Restore maxPerChild to the original value set at construction time.
|
|
139
|
+
*/
|
|
140
|
+
resetMaxPerChild() {
|
|
141
|
+
this.config.maxPerChild = this.originalMaxPerChild;
|
|
142
|
+
}
|
|
126
143
|
}
|
|
127
144
|
// =============================================================================
|
|
128
145
|
// FACTORY
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget-pool.js","sourceRoot":"","sources":["../../../src/integrations/budget-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA2CH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"budget-pool.js","sourceRoot":"","sources":["../../../src/integrations/budget-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complexity Classifier
|
|
3
|
+
*
|
|
4
|
+
* Heuristic-based task complexity assessment that determines
|
|
5
|
+
* the appropriate execution strategy (agent count, tool budget,
|
|
6
|
+
* swarm mode) without requiring an LLM call.
|
|
7
|
+
*
|
|
8
|
+
* Inspired by Anthropic's multi-agent research system's approach
|
|
9
|
+
* to scaling effort based on task complexity.
|
|
10
|
+
*/
|
|
11
|
+
export type ComplexityTier = 'simple' | 'medium' | 'complex' | 'deep_research';
|
|
12
|
+
export interface ComplexityAssessment {
|
|
13
|
+
/** Classified complexity tier */
|
|
14
|
+
tier: ComplexityTier;
|
|
15
|
+
/** Confidence in the classification (0-1) */
|
|
16
|
+
confidence: number;
|
|
17
|
+
/** Human-readable reasoning */
|
|
18
|
+
reasoning: string;
|
|
19
|
+
/** Recommended execution parameters */
|
|
20
|
+
recommendation: ExecutionRecommendation;
|
|
21
|
+
/** Signals that contributed to the classification */
|
|
22
|
+
signals: ComplexitySignal[];
|
|
23
|
+
}
|
|
24
|
+
export interface ExecutionRecommendation {
|
|
25
|
+
/** Number of agents to use */
|
|
26
|
+
agentCount: {
|
|
27
|
+
min: number;
|
|
28
|
+
max: number;
|
|
29
|
+
};
|
|
30
|
+
/** Tool calls per agent */
|
|
31
|
+
toolCallsPerAgent: {
|
|
32
|
+
min: number;
|
|
33
|
+
max: number;
|
|
34
|
+
};
|
|
35
|
+
/** Whether to use swarm mode */
|
|
36
|
+
useSwarmMode: boolean;
|
|
37
|
+
/** Suggested agent types */
|
|
38
|
+
suggestedAgents: string[];
|
|
39
|
+
/** Budget multiplier relative to standard */
|
|
40
|
+
budgetMultiplier: number;
|
|
41
|
+
/** Whether extended thinking is recommended */
|
|
42
|
+
useExtendedThinking: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface ComplexitySignal {
|
|
45
|
+
name: string;
|
|
46
|
+
value: number;
|
|
47
|
+
weight: number;
|
|
48
|
+
description: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ClassificationContext {
|
|
51
|
+
/** Number of files in the project */
|
|
52
|
+
projectFileCount?: number;
|
|
53
|
+
/** Whether the task references specific files */
|
|
54
|
+
referencesFiles?: boolean;
|
|
55
|
+
/** Previous task in the session (for context) */
|
|
56
|
+
previousTask?: string;
|
|
57
|
+
/** Currently active plan */
|
|
58
|
+
hasActivePlan?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Classify task complexity using heuristic signals.
|
|
62
|
+
* No LLM call needed — fast and deterministic.
|
|
63
|
+
*/
|
|
64
|
+
export declare function classifyComplexity(task: string, context?: ClassificationContext): ComplexityAssessment;
|
|
65
|
+
/**
|
|
66
|
+
* Generate scaling guidance for injection into the agent's system prompt.
|
|
67
|
+
* This follows Anthropic's pattern of embedding scaling rules directly in prompts.
|
|
68
|
+
*/
|
|
69
|
+
export declare function getScalingGuidance(assessment: ComplexityAssessment): string;
|
|
70
|
+
/**
|
|
71
|
+
* Create a complexity classifier with custom thresholds.
|
|
72
|
+
*/
|
|
73
|
+
export declare function createComplexityClassifier(config?: {
|
|
74
|
+
simpleThreshold?: number;
|
|
75
|
+
mediumThreshold?: number;
|
|
76
|
+
complexThreshold?: number;
|
|
77
|
+
}): {
|
|
78
|
+
classify: (task: string, context?: ClassificationContext) => ComplexityAssessment;
|
|
79
|
+
getScalingGuidance: typeof getScalingGuidance;
|
|
80
|
+
thresholds: {
|
|
81
|
+
simple: number;
|
|
82
|
+
medium: number;
|
|
83
|
+
complex: number;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=complexity-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complexity-classifier.d.ts","sourceRoot":"","sources":["../../../src/integrations/complexity-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;AAE/E,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,cAAc,EAAE,uBAAuB,CAAC;IACxC,qDAAqD;IACrD,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,8BAA8B;IAC9B,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,2BAA2B;IAC3B,iBAAiB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,gCAAgC;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA+ED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,oBAAoB,CA2GtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAgC3E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;qBAQoB,MAAM,YAAY,qBAAqB;;;;;;;EAK3D"}
|