dino-spec 13.6.0 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/dino-hud.js +1 -1
- package/bin/dino.js +1 -1
- package/dist/core/agents/context-isolation.js +26 -26
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
- package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.js +246 -0
- package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
- package/dist/core/context/budget-thresholds.d.ts +167 -0
- package/dist/core/context/budget-thresholds.d.ts.map +1 -0
- package/dist/core/context/budget-thresholds.js +234 -0
- package/dist/core/context/budget-thresholds.js.map +1 -0
- package/dist/core/context/compaction-engine.d.ts +193 -0
- package/dist/core/context/compaction-engine.d.ts.map +1 -0
- package/dist/core/context/compaction-engine.js +376 -0
- package/dist/core/context/compaction-engine.js.map +1 -0
- package/dist/core/context/index.d.ts +7 -3
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +22 -3
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/output-persistence.d.ts +142 -0
- package/dist/core/context/output-persistence.d.ts.map +1 -0
- package/dist/core/context/output-persistence.js +242 -0
- package/dist/core/context/output-persistence.js.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
- package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
- package/dist/core/environment/index.d.ts +8 -0
- package/dist/core/environment/index.d.ts.map +1 -0
- package/dist/core/environment/index.js +7 -0
- package/dist/core/environment/index.js.map +1 -0
- package/dist/core/environment/pre-verify.d.ts +63 -0
- package/dist/core/environment/pre-verify.d.ts.map +1 -0
- package/dist/core/environment/pre-verify.js +221 -0
- package/dist/core/environment/pre-verify.js.map +1 -0
- package/dist/core/environment/types.d.ts +37 -0
- package/dist/core/environment/types.d.ts.map +1 -0
- package/dist/core/environment/types.js +5 -0
- package/dist/core/environment/types.js.map +1 -0
- package/dist/core/intelligence/context-budget.d.ts +10 -5
- package/dist/core/intelligence/context-budget.d.ts.map +1 -1
- package/dist/core/intelligence/context-budget.js +12 -5
- package/dist/core/intelligence/context-budget.js.map +1 -1
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
- package/dist/mcp/dynamic-updates.d.ts +167 -0
- package/dist/mcp/dynamic-updates.d.ts.map +1 -0
- package/dist/mcp/dynamic-updates.js +313 -0
- package/dist/mcp/dynamic-updates.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +5 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/registry.d.ts +4 -4
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +16 -16
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
- package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/environment.test.js +219 -0
- package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
- package/dist/mcp/tools/environment.d.ts +27 -0
- package/dist/mcp/tools/environment.d.ts.map +1 -0
- package/dist/mcp/tools/environment.js +97 -0
- package/dist/mcp/tools/environment.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +13 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/output-persistence.d.ts +44 -0
- package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
- package/dist/mcp/tools/output-persistence.js +208 -0
- package/dist/mcp/tools/output-persistence.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +27 -2
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget-thresholds.js","sourceRoot":"","sources":["../../../src/core/context/budget-thresholds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto Compaction Engine - v14.0.0
|
|
3
|
+
*
|
|
4
|
+
* Automatic context compaction that triggers when context usage
|
|
5
|
+
* exceeds configurable thresholds. Extracts decisions, blockers,
|
|
6
|
+
* and progress to structured format for persistence.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Configurable auto-compact threshold (default: 75%)
|
|
10
|
+
* - Integration with ContextBudgetTracker
|
|
11
|
+
* - Structured JSON output preserving decisions/learnings
|
|
12
|
+
* - CLI command support: dino compact --auto
|
|
13
|
+
*
|
|
14
|
+
* Reference: Anthropic context engineering best practices
|
|
15
|
+
*/
|
|
16
|
+
import { type CompactionResult, type SessionSection } from '../intelligence/session-compactor.js';
|
|
17
|
+
/**
|
|
18
|
+
* Decision extracted from session
|
|
19
|
+
*/
|
|
20
|
+
export interface ExtractedDecision {
|
|
21
|
+
/** Decision text */
|
|
22
|
+
text: string;
|
|
23
|
+
/** Topic/area the decision relates to */
|
|
24
|
+
topic: string;
|
|
25
|
+
/** What was chosen */
|
|
26
|
+
choice: string;
|
|
27
|
+
/** Why it was chosen */
|
|
28
|
+
rationale?: string;
|
|
29
|
+
/** When the decision was made */
|
|
30
|
+
timestamp?: string;
|
|
31
|
+
/** Type of decision */
|
|
32
|
+
type: 'decision' | 'choice' | 'approach';
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Blocker extracted from session
|
|
36
|
+
*/
|
|
37
|
+
export interface ExtractedBlocker {
|
|
38
|
+
/** Blocker text */
|
|
39
|
+
text: string;
|
|
40
|
+
/** When the blocker was added */
|
|
41
|
+
addedAt?: string;
|
|
42
|
+
/** Current status */
|
|
43
|
+
status: 'active' | 'resolved';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Progress entry extracted from session
|
|
47
|
+
*/
|
|
48
|
+
export interface ExtractedProgress {
|
|
49
|
+
/** Progress signal text */
|
|
50
|
+
text: string;
|
|
51
|
+
/** Signal type */
|
|
52
|
+
type: string;
|
|
53
|
+
/** When it occurred */
|
|
54
|
+
timestamp: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Structured compaction output
|
|
58
|
+
*/
|
|
59
|
+
export interface StructuredCompaction {
|
|
60
|
+
/** Extracted decisions */
|
|
61
|
+
decisions: ExtractedDecision[];
|
|
62
|
+
/** Extracted blockers */
|
|
63
|
+
blockers: ExtractedBlocker[];
|
|
64
|
+
/** Extracted progress signals */
|
|
65
|
+
progress: ExtractedProgress[];
|
|
66
|
+
/** When compaction occurred */
|
|
67
|
+
timestamp: string;
|
|
68
|
+
/** Session identifier */
|
|
69
|
+
sessionId: string;
|
|
70
|
+
/** Original token count */
|
|
71
|
+
originalTokens: number;
|
|
72
|
+
/** Tokens recovered by compaction */
|
|
73
|
+
tokensRecovered: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Compaction engine result
|
|
77
|
+
*/
|
|
78
|
+
export interface CompactionEngineResult {
|
|
79
|
+
/** Whether compaction was triggered */
|
|
80
|
+
triggered: boolean;
|
|
81
|
+
/** Whether compaction was executed */
|
|
82
|
+
executed: boolean;
|
|
83
|
+
/** Reason for trigger or skip */
|
|
84
|
+
reason: string;
|
|
85
|
+
/** Structured compaction data (if executed) */
|
|
86
|
+
structuredOutput?: StructuredCompaction;
|
|
87
|
+
/** Compaction result from session-compactor (if executed) */
|
|
88
|
+
compactionResult?: CompactionResult;
|
|
89
|
+
/** Output file path (if persisted) */
|
|
90
|
+
outputPath?: string;
|
|
91
|
+
/** Current context usage percentage */
|
|
92
|
+
usagePercent: number;
|
|
93
|
+
/** Current token count */
|
|
94
|
+
currentTokens: number;
|
|
95
|
+
/** Effective limit */
|
|
96
|
+
limit: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Compaction engine options
|
|
100
|
+
*/
|
|
101
|
+
export interface CompactionEngineOptions {
|
|
102
|
+
/** Threshold for auto-compaction (0-1, default: 0.75) */
|
|
103
|
+
threshold?: number;
|
|
104
|
+
/** Token limit to use */
|
|
105
|
+
limit?: number;
|
|
106
|
+
/** Force compaction regardless of threshold */
|
|
107
|
+
force?: boolean;
|
|
108
|
+
/** Project directory */
|
|
109
|
+
projectDir?: string;
|
|
110
|
+
/** Whether to persist structured output */
|
|
111
|
+
persistOutput?: boolean;
|
|
112
|
+
/** Custom session ID */
|
|
113
|
+
sessionId?: string;
|
|
114
|
+
/** Skip actual compaction (dry run) */
|
|
115
|
+
dryRun?: boolean;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Default auto-compact threshold (75%)
|
|
119
|
+
* Lower than warning threshold to provide headroom
|
|
120
|
+
*/
|
|
121
|
+
export declare const AUTO_COMPACT_THRESHOLD = 0.75;
|
|
122
|
+
/**
|
|
123
|
+
* Directory for compacted outputs
|
|
124
|
+
*/
|
|
125
|
+
export declare const COMPACT_OUTPUT_DIR = ".dino/compacted";
|
|
126
|
+
/**
|
|
127
|
+
* Feature flag for auto-compaction
|
|
128
|
+
*/
|
|
129
|
+
export declare const AUTO_COMPACT_FEATURE_FLAG = "enableAutoCompaction";
|
|
130
|
+
/**
|
|
131
|
+
* Check if auto-compaction should trigger
|
|
132
|
+
*
|
|
133
|
+
* @param currentTokens Current token count
|
|
134
|
+
* @param limit Token limit
|
|
135
|
+
* @param threshold Threshold percentage (0-1)
|
|
136
|
+
* @returns Whether compaction should trigger
|
|
137
|
+
*/
|
|
138
|
+
export declare function shouldAutoCompact(currentTokens: number, limit?: number, threshold?: number): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Calculate usage percentage
|
|
141
|
+
*/
|
|
142
|
+
export declare function getUsagePercent(currentTokens: number, limit: number): number;
|
|
143
|
+
/**
|
|
144
|
+
* Extract structured decisions from session sections
|
|
145
|
+
*/
|
|
146
|
+
export declare function extractDecisions(sections: SessionSection[]): ExtractedDecision[];
|
|
147
|
+
/**
|
|
148
|
+
* Extract structured blockers from session sections
|
|
149
|
+
*/
|
|
150
|
+
export declare function extractBlockers(sections: SessionSection[]): ExtractedBlocker[];
|
|
151
|
+
/**
|
|
152
|
+
* Extract structured progress from session sections
|
|
153
|
+
*/
|
|
154
|
+
export declare function extractProgress(sections: SessionSection[]): ExtractedProgress[];
|
|
155
|
+
/**
|
|
156
|
+
* Generate session ID from timestamp
|
|
157
|
+
*/
|
|
158
|
+
export declare function generateSessionId(): string;
|
|
159
|
+
/**
|
|
160
|
+
* Create structured compaction output
|
|
161
|
+
*/
|
|
162
|
+
export declare function createStructuredCompaction(sections: SessionSection[], originalTokens: number, tokensRecovered: number, sessionId?: string): StructuredCompaction;
|
|
163
|
+
/**
|
|
164
|
+
* Persist structured compaction to disk
|
|
165
|
+
*/
|
|
166
|
+
export declare function persistStructuredCompaction(compaction: StructuredCompaction, projectDir?: string): Promise<string>;
|
|
167
|
+
/**
|
|
168
|
+
* List persisted compactions
|
|
169
|
+
*/
|
|
170
|
+
export declare function listCompactions(projectDir?: string): Promise<StructuredCompaction[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Run auto-compaction engine
|
|
173
|
+
*
|
|
174
|
+
* This is the main entry point for the compaction engine.
|
|
175
|
+
* It checks if compaction should trigger based on current context usage
|
|
176
|
+
* and executes compaction with structured output if needed.
|
|
177
|
+
*/
|
|
178
|
+
export declare function runAutoCompaction(options?: CompactionEngineOptions): Promise<CompactionEngineResult>;
|
|
179
|
+
/**
|
|
180
|
+
* Format compaction engine result for display
|
|
181
|
+
*/
|
|
182
|
+
export declare function formatCompactionEngineResult(result: CompactionEngineResult): string;
|
|
183
|
+
/**
|
|
184
|
+
* Get compaction engine statistics
|
|
185
|
+
*/
|
|
186
|
+
export declare function getCompactionEngineStats(projectDir?: string): Promise<{
|
|
187
|
+
compactionCount: number;
|
|
188
|
+
totalTokensRecovered: number;
|
|
189
|
+
totalDecisionsExtracted: number;
|
|
190
|
+
totalBlockersExtracted: number;
|
|
191
|
+
latestCompaction: string | null;
|
|
192
|
+
}>;
|
|
193
|
+
//# sourceMappingURL=compaction-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction-engine.d.ts","sourceRoot":"","sources":["../../../src/core/context/compaction-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto Compaction Engine - v14.0.0
|
|
3
|
+
*
|
|
4
|
+
* Automatic context compaction that triggers when context usage
|
|
5
|
+
* exceeds configurable thresholds. Extracts decisions, blockers,
|
|
6
|
+
* and progress to structured format for persistence.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Configurable auto-compact threshold (default: 75%)
|
|
10
|
+
* - Integration with ContextBudgetTracker
|
|
11
|
+
* - Structured JSON output preserving decisions/learnings
|
|
12
|
+
* - CLI command support: dino compact --auto
|
|
13
|
+
*
|
|
14
|
+
* Reference: Anthropic context engineering best practices
|
|
15
|
+
*/
|
|
16
|
+
import { join } from 'path';
|
|
17
|
+
import { FileSystem } from '../../utils/file-system.js';
|
|
18
|
+
import { compactSession, getCompactionStats, parseSessionSections, extractArchitecturalDecisions, } from '../intelligence/session-compactor.js';
|
|
19
|
+
import { getEffectiveLimit, } from './budget-thresholds.js';
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// Constants
|
|
22
|
+
// =============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Default auto-compact threshold (75%)
|
|
25
|
+
* Lower than warning threshold to provide headroom
|
|
26
|
+
*/
|
|
27
|
+
export const AUTO_COMPACT_THRESHOLD = 0.75;
|
|
28
|
+
/**
|
|
29
|
+
* Directory for compacted outputs
|
|
30
|
+
*/
|
|
31
|
+
export const COMPACT_OUTPUT_DIR = '.dino/compacted';
|
|
32
|
+
/**
|
|
33
|
+
* Feature flag for auto-compaction
|
|
34
|
+
*/
|
|
35
|
+
export const AUTO_COMPACT_FEATURE_FLAG = 'enableAutoCompaction';
|
|
36
|
+
// =============================================================================
|
|
37
|
+
// Core Functions
|
|
38
|
+
// =============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Check if auto-compaction should trigger
|
|
41
|
+
*
|
|
42
|
+
* @param currentTokens Current token count
|
|
43
|
+
* @param limit Token limit
|
|
44
|
+
* @param threshold Threshold percentage (0-1)
|
|
45
|
+
* @returns Whether compaction should trigger
|
|
46
|
+
*/
|
|
47
|
+
export function shouldAutoCompact(currentTokens, limit = 200_000, threshold = AUTO_COMPACT_THRESHOLD) {
|
|
48
|
+
const usagePercent = currentTokens / limit;
|
|
49
|
+
return usagePercent >= threshold;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Calculate usage percentage
|
|
53
|
+
*/
|
|
54
|
+
export function getUsagePercent(currentTokens, limit) {
|
|
55
|
+
return Math.round((currentTokens / limit) * 100);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Extract topic from decision text
|
|
59
|
+
*/
|
|
60
|
+
function extractTopic(text) {
|
|
61
|
+
// Try to extract topic from common patterns
|
|
62
|
+
const patterns = [
|
|
63
|
+
/(?:for|regarding|about)\s+(.+?)(?:\.|,|$)/i,
|
|
64
|
+
/^(.+?):\s*/,
|
|
65
|
+
/(?:decided|chose|selected)\s+(?:to\s+)?(?:use\s+)?(.+?)(?:\s+(?:for|because|over|instead))/i,
|
|
66
|
+
];
|
|
67
|
+
for (const pattern of patterns) {
|
|
68
|
+
const match = text.match(pattern);
|
|
69
|
+
if (match && match[1]) {
|
|
70
|
+
const topic = match[1].trim();
|
|
71
|
+
if (topic.length > 5 && topic.length < 100) {
|
|
72
|
+
return topic;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Fallback: use first 50 chars
|
|
77
|
+
const clean = text.replace(/^- /, '').trim();
|
|
78
|
+
return clean.length > 50 ? clean.substring(0, 47) + '...' : clean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extract choice from decision text
|
|
82
|
+
*/
|
|
83
|
+
function extractChoice(text) {
|
|
84
|
+
const patterns = [
|
|
85
|
+
/(?:chose|selected|went\s+with|using|use)\s+(.+?)(?:\s+(?:over|instead|because|for)|$)/i,
|
|
86
|
+
/decided\s+to\s+(.+?)(?:\.|,|$)/i,
|
|
87
|
+
/approach:\s*(.+?)(?:\.|$)/i,
|
|
88
|
+
];
|
|
89
|
+
for (const pattern of patterns) {
|
|
90
|
+
const match = text.match(pattern);
|
|
91
|
+
if (match && match[1]) {
|
|
92
|
+
return match[1].trim();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return text.replace(/^- /, '').trim();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Extract rationale from decision text
|
|
99
|
+
*/
|
|
100
|
+
function extractRationale(text) {
|
|
101
|
+
const patterns = [
|
|
102
|
+
/because\s+(.+?)(?:\.|$)/i,
|
|
103
|
+
/due\s+to\s+(.+?)(?:\.|$)/i,
|
|
104
|
+
/since\s+(.+?)(?:\.|$)/i,
|
|
105
|
+
];
|
|
106
|
+
for (const pattern of patterns) {
|
|
107
|
+
const match = text.match(pattern);
|
|
108
|
+
if (match && match[1]) {
|
|
109
|
+
return match[1].trim();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Extract structured decisions from session sections
|
|
116
|
+
*/
|
|
117
|
+
export function extractDecisions(sections) {
|
|
118
|
+
const decisions = [];
|
|
119
|
+
for (const section of sections) {
|
|
120
|
+
if (section.name.toLowerCase().includes('notes')) {
|
|
121
|
+
const rawDecisions = extractArchitecturalDecisions(section.lines);
|
|
122
|
+
for (const decision of rawDecisions) {
|
|
123
|
+
decisions.push({
|
|
124
|
+
text: decision.text,
|
|
125
|
+
topic: extractTopic(decision.text),
|
|
126
|
+
choice: extractChoice(decision.text),
|
|
127
|
+
rationale: extractRationale(decision.text),
|
|
128
|
+
timestamp: decision.timestamp,
|
|
129
|
+
type: decision.type,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return decisions;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Extract structured blockers from session sections
|
|
138
|
+
*/
|
|
139
|
+
export function extractBlockers(sections) {
|
|
140
|
+
const blockers = [];
|
|
141
|
+
for (const section of sections) {
|
|
142
|
+
if (section.name.toLowerCase().includes('blocker')) {
|
|
143
|
+
for (const line of section.lines) {
|
|
144
|
+
const text = line.replace(/^- /, '').trim();
|
|
145
|
+
if (text && text !== '_No active blockers._') {
|
|
146
|
+
// Try to extract timestamp
|
|
147
|
+
const timestampMatch = text.match(/^(\d{4}-\d{2}-\d{2}|\d{2}:\d{2})/);
|
|
148
|
+
blockers.push({
|
|
149
|
+
text: text.replace(/^\d{4}-\d{2}-\d{2}\s*:?\s*/, '').replace(/^\d{2}:\d{2}\s*:?\s*/, ''),
|
|
150
|
+
addedAt: timestampMatch?.[1],
|
|
151
|
+
status: 'active',
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return blockers;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Extract structured progress from session sections
|
|
161
|
+
*/
|
|
162
|
+
export function extractProgress(sections) {
|
|
163
|
+
const progress = [];
|
|
164
|
+
for (const section of sections) {
|
|
165
|
+
if (section.name.toLowerCase().includes('progress')) {
|
|
166
|
+
for (const line of section.lines) {
|
|
167
|
+
// Parse format: "- TIMESTAMP: TYPE - message"
|
|
168
|
+
const match = line.match(/^- ([\d\-\s:]+):\s*(\S+)\s*-\s*(.+)$/);
|
|
169
|
+
if (match) {
|
|
170
|
+
progress.push({
|
|
171
|
+
text: match[3].trim(),
|
|
172
|
+
type: match[2],
|
|
173
|
+
timestamp: match[1].trim(),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return progress;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Generate session ID from timestamp
|
|
183
|
+
*/
|
|
184
|
+
export function generateSessionId() {
|
|
185
|
+
return new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create structured compaction output
|
|
189
|
+
*/
|
|
190
|
+
export function createStructuredCompaction(sections, originalTokens, tokensRecovered, sessionId) {
|
|
191
|
+
return {
|
|
192
|
+
decisions: extractDecisions(sections),
|
|
193
|
+
blockers: extractBlockers(sections),
|
|
194
|
+
progress: extractProgress(sections),
|
|
195
|
+
timestamp: new Date().toISOString(),
|
|
196
|
+
sessionId: sessionId || generateSessionId(),
|
|
197
|
+
originalTokens,
|
|
198
|
+
tokensRecovered,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Persist structured compaction to disk
|
|
203
|
+
*/
|
|
204
|
+
export async function persistStructuredCompaction(compaction, projectDir = process.cwd()) {
|
|
205
|
+
const outputDir = join(projectDir, COMPACT_OUTPUT_DIR);
|
|
206
|
+
await FileSystem.createDirectory(outputDir);
|
|
207
|
+
const filename = `${compaction.sessionId}.json`;
|
|
208
|
+
const outputPath = join(outputDir, filename);
|
|
209
|
+
await FileSystem.writeJson(outputPath, compaction);
|
|
210
|
+
return join(COMPACT_OUTPUT_DIR, filename);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* List persisted compactions
|
|
214
|
+
*/
|
|
215
|
+
export async function listCompactions(projectDir = process.cwd()) {
|
|
216
|
+
const outputDir = join(projectDir, COMPACT_OUTPUT_DIR);
|
|
217
|
+
if (!(await FileSystem.exists(outputDir))) {
|
|
218
|
+
return [];
|
|
219
|
+
}
|
|
220
|
+
const files = await FileSystem.listDirectory(outputDir);
|
|
221
|
+
const compactions = [];
|
|
222
|
+
for (const file of files) {
|
|
223
|
+
if (file.endsWith('.json')) {
|
|
224
|
+
const data = await FileSystem.readJsonSafe(join(outputDir, file));
|
|
225
|
+
if (data) {
|
|
226
|
+
compactions.push(data);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Sort by timestamp (newest first)
|
|
231
|
+
compactions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
232
|
+
return compactions;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Run auto-compaction engine
|
|
236
|
+
*
|
|
237
|
+
* This is the main entry point for the compaction engine.
|
|
238
|
+
* It checks if compaction should trigger based on current context usage
|
|
239
|
+
* and executes compaction with structured output if needed.
|
|
240
|
+
*/
|
|
241
|
+
export async function runAutoCompaction(options = {}) {
|
|
242
|
+
const { threshold = AUTO_COMPACT_THRESHOLD, limit: customLimit, force = false, projectDir = process.cwd(), persistOutput = true, sessionId, dryRun = false, } = options;
|
|
243
|
+
// Get effective limit (200K is the default Claude context window)
|
|
244
|
+
const limit = customLimit || getEffectiveLimit(200_000);
|
|
245
|
+
// Get current session stats
|
|
246
|
+
const stats = await getCompactionStats(projectDir);
|
|
247
|
+
const usagePercent = getUsagePercent(stats.currentTokens, limit);
|
|
248
|
+
// Check if compaction should trigger
|
|
249
|
+
const shouldTrigger = force || shouldAutoCompact(stats.currentTokens, limit, threshold);
|
|
250
|
+
if (!shouldTrigger) {
|
|
251
|
+
return {
|
|
252
|
+
triggered: false,
|
|
253
|
+
executed: false,
|
|
254
|
+
reason: `Context usage (${usagePercent}%) below threshold (${Math.round(threshold * 100)}%)`,
|
|
255
|
+
usagePercent,
|
|
256
|
+
currentTokens: stats.currentTokens,
|
|
257
|
+
limit,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
// Dry run mode - return what would happen
|
|
261
|
+
if (dryRun) {
|
|
262
|
+
const sessionPath = join(projectDir, '.dino', 'session.md');
|
|
263
|
+
const content = await FileSystem.readFileSafe(sessionPath);
|
|
264
|
+
const sections = content ? parseSessionSections(content) : [];
|
|
265
|
+
return {
|
|
266
|
+
triggered: true,
|
|
267
|
+
executed: false,
|
|
268
|
+
reason: 'Dry run - compaction not executed',
|
|
269
|
+
structuredOutput: createStructuredCompaction(sections, stats.currentTokens, stats.currentTokens - stats.estimatedAfterCompaction, sessionId),
|
|
270
|
+
usagePercent,
|
|
271
|
+
currentTokens: stats.currentTokens,
|
|
272
|
+
limit,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// Read session content before compaction for structured output
|
|
276
|
+
const sessionPath = join(projectDir, '.dino', 'session.md');
|
|
277
|
+
const content = await FileSystem.readFileSafe(sessionPath);
|
|
278
|
+
const sections = content ? parseSessionSections(content) : [];
|
|
279
|
+
// Execute compaction
|
|
280
|
+
const compactionResult = await compactSession(projectDir, {
|
|
281
|
+
preserveDecisions: true,
|
|
282
|
+
archive: true,
|
|
283
|
+
});
|
|
284
|
+
// Create structured output
|
|
285
|
+
const structuredOutput = createStructuredCompaction(sections, compactionResult.originalTokens, compactionResult.originalTokens - compactionResult.compactedTokens, sessionId);
|
|
286
|
+
// Persist structured output if enabled
|
|
287
|
+
let outputPath;
|
|
288
|
+
if (persistOutput) {
|
|
289
|
+
outputPath = await persistStructuredCompaction(structuredOutput, projectDir);
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
triggered: true,
|
|
293
|
+
executed: true,
|
|
294
|
+
reason: force
|
|
295
|
+
? 'Forced compaction'
|
|
296
|
+
: `Context usage (${usagePercent}%) exceeded threshold (${Math.round(threshold * 100)}%)`,
|
|
297
|
+
structuredOutput,
|
|
298
|
+
compactionResult,
|
|
299
|
+
outputPath,
|
|
300
|
+
usagePercent,
|
|
301
|
+
currentTokens: stats.currentTokens,
|
|
302
|
+
limit,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Format compaction engine result for display
|
|
307
|
+
*/
|
|
308
|
+
export function formatCompactionEngineResult(result) {
|
|
309
|
+
const lines = [];
|
|
310
|
+
if (!result.triggered) {
|
|
311
|
+
lines.push('## Auto-Compaction: Not Triggered');
|
|
312
|
+
lines.push('');
|
|
313
|
+
lines.push(result.reason);
|
|
314
|
+
lines.push('');
|
|
315
|
+
lines.push(`- Current usage: ${result.usagePercent}%`);
|
|
316
|
+
lines.push(`- Token count: ${result.currentTokens.toLocaleString()} / ${result.limit.toLocaleString()}`);
|
|
317
|
+
return lines.join('\n');
|
|
318
|
+
}
|
|
319
|
+
if (!result.executed) {
|
|
320
|
+
lines.push('## Auto-Compaction: Dry Run');
|
|
321
|
+
lines.push('');
|
|
322
|
+
lines.push(result.reason);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
lines.push('## Auto-Compaction: Executed');
|
|
326
|
+
lines.push('');
|
|
327
|
+
lines.push(result.reason);
|
|
328
|
+
}
|
|
329
|
+
lines.push('');
|
|
330
|
+
lines.push('### Context Usage');
|
|
331
|
+
lines.push(`- Before: ${result.currentTokens.toLocaleString()} tokens (${result.usagePercent}%)`);
|
|
332
|
+
if (result.compactionResult) {
|
|
333
|
+
lines.push(`- After: ${result.compactionResult.compactedTokens.toLocaleString()} tokens`);
|
|
334
|
+
lines.push(`- Reduction: ${result.compactionResult.reductionPercent}%`);
|
|
335
|
+
lines.push(`- Archived items: ${result.compactionResult.archivedItems}`);
|
|
336
|
+
}
|
|
337
|
+
if (result.structuredOutput) {
|
|
338
|
+
lines.push('');
|
|
339
|
+
lines.push('### Extracted Content');
|
|
340
|
+
lines.push(`- Decisions: ${result.structuredOutput.decisions.length}`);
|
|
341
|
+
lines.push(`- Blockers: ${result.structuredOutput.blockers.length}`);
|
|
342
|
+
lines.push(`- Progress signals: ${result.structuredOutput.progress.length}`);
|
|
343
|
+
lines.push(`- Tokens recovered: ~${result.structuredOutput.tokensRecovered.toLocaleString()}`);
|
|
344
|
+
}
|
|
345
|
+
if (result.outputPath) {
|
|
346
|
+
lines.push('');
|
|
347
|
+
lines.push(`Structured output saved to: ${result.outputPath}`);
|
|
348
|
+
}
|
|
349
|
+
return lines.join('\n');
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Get compaction engine statistics
|
|
353
|
+
*/
|
|
354
|
+
export async function getCompactionEngineStats(projectDir = process.cwd()) {
|
|
355
|
+
const compactions = await listCompactions(projectDir);
|
|
356
|
+
if (compactions.length === 0) {
|
|
357
|
+
return {
|
|
358
|
+
compactionCount: 0,
|
|
359
|
+
totalTokensRecovered: 0,
|
|
360
|
+
totalDecisionsExtracted: 0,
|
|
361
|
+
totalBlockersExtracted: 0,
|
|
362
|
+
latestCompaction: null,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
const totalTokensRecovered = compactions.reduce((sum, c) => sum + c.tokensRecovered, 0);
|
|
366
|
+
const totalDecisionsExtracted = compactions.reduce((sum, c) => sum + c.decisions.length, 0);
|
|
367
|
+
const totalBlockersExtracted = compactions.reduce((sum, c) => sum + c.blockers.length, 0);
|
|
368
|
+
return {
|
|
369
|
+
compactionCount: compactions.length,
|
|
370
|
+
totalTokensRecovered,
|
|
371
|
+
totalDecisionsExtracted,
|
|
372
|
+
totalBlockersExtracted,
|
|
373
|
+
latestCompaction: compactions[0].timestamp,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
//# sourceMappingURL=compaction-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction-engine.js","sourceRoot":"","sources":["../../../src/core/context/compaction-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,GAK9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAgHhC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAEhE,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,aAAqB,EACrB,QAAgB,OAAO,EACvB,YAAoB,sBAAsB;IAE1C,MAAM,YAAY,GAAG,aAAa,GAAG,KAAK,CAAC;IAC3C,OAAO,YAAY,IAAI,SAAS,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,aAAqB,EAAE,KAAa;IAClE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,4CAA4C;IAC5C,MAAM,QAAQ,GAAG;QACf,4CAA4C;QAC5C,YAAY;QACZ,6FAA6F;KAC9F,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,QAAQ,GAAG;QACf,wFAAwF;QACxF,iCAAiC;QACjC,4BAA4B;KAC7B,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,QAAQ,GAAG;QACf,0BAA0B;QAC1B,2BAA2B;QAC3B,wBAAwB;KACzB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA0B;IACzD,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,6BAA6B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAElE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAClC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACpC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC1C,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAA0B;IACxD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;oBAC7C,2BAA2B;oBAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBAEtE,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;wBACxF,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;wBAC5B,MAAM,EAAE,QAAQ;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAA0B;IACxD,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,8CAA8C;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACjE,IAAI,KAAK,EAAE,CAAC;oBACV,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBACrB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACd,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAA0B,EAC1B,cAAsB,EACtB,eAAuB,EACvB,SAAkB;IAElB,OAAO;QACL,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QACrC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;QACnC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;QACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,SAAS,IAAI,iBAAiB,EAAE;QAC3C,cAAc;QACd,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAgC,EAChC,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACvD,MAAM,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,GAAG,UAAU,CAAC,SAAS,OAAO,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE7C,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEnD,OAAO,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAEvD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,YAAY,CACxC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CACtB,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACT,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxB,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAClE,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAmC,EAAE;IAErC,MAAM,EACJ,SAAS,GAAG,sBAAsB,EAClC,KAAK,EAAE,WAAW,EAClB,KAAK,GAAG,KAAK,EACb,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAC1B,aAAa,GAAG,IAAI,EACpB,SAAS,EACT,MAAM,GAAG,KAAK,GACf,GAAG,OAAO,CAAC;IAEZ,kEAAkE;IAClE,MAAM,KAAK,GAAG,WAAW,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExD,4BAA4B;IAC5B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAEjE,qCAAqC;IACrC,MAAM,aAAa,GAAG,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAExF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,kBAAkB,YAAY,uBAAuB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI;YAC5F,YAAY;YACZ,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,KAAK;SACN,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,mCAAmC;YAC3C,gBAAgB,EAAE,0BAA0B,CAC1C,QAAQ,EACR,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,wBAAwB,EACpD,SAAS,CACV;YACD,YAAY;YACZ,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,KAAK;SACN,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9D,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE;QACxD,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,gBAAgB,GAAG,0BAA0B,CACjD,QAAQ,EACR,gBAAgB,CAAC,cAAc,EAC/B,gBAAgB,CAAC,cAAc,GAAG,gBAAgB,CAAC,eAAe,EAClE,SAAS,CACV,CAAC;IAEF,uCAAuC;IACvC,IAAI,UAA8B,CAAC;IACnC,IAAI,aAAa,EAAE,CAAC;QAClB,UAAU,GAAG,MAAM,2BAA2B,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;YACX,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,kBAAkB,YAAY,0BAA0B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI;QAC3F,gBAAgB;QAChB,gBAAgB;QAChB,UAAU;QACV,YAAY;QACZ,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAA8B;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACzG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,YAAY,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;IAElG,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,aAAqB,OAAO,CAAC,GAAG,EAAE;IAQlC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAEtD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,eAAe,EAAE,CAAC;YAClB,oBAAoB,EAAE,CAAC;YACvB,uBAAuB,EAAE,CAAC;YAC1B,sBAAsB,EAAE,CAAC;YACzB,gBAAgB,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5F,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE1F,OAAO;QACL,eAAe,EAAE,WAAW,CAAC,MAAM;QACnC,oBAAoB;QACpB,uBAAuB;QACvB,sBAAsB;QACtB,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Context Management Module -
|
|
2
|
+
* Context Management Module - v14.0.0
|
|
3
3
|
*
|
|
4
4
|
* Tools for managing context window efficiently.
|
|
5
5
|
* Includes tool result protection, clearing recommendations,
|
|
6
6
|
* just-in-time context retrieval, automated clearing,
|
|
7
7
|
* summarization before clearing (v9.6.0), lazy context
|
|
8
|
-
* loading (v10.1.0), auto-lazy context (v12.5.0),
|
|
9
|
-
* auto context engineering (v13.3.0)
|
|
8
|
+
* loading (v10.1.0), auto-lazy context (v12.5.0),
|
|
9
|
+
* auto context engineering (v13.3.0), and
|
|
10
|
+
* optimized budget thresholds (v14.0.0).
|
|
10
11
|
*/
|
|
11
12
|
export { type ProtectionLevel, type ToolCategory, type ProtectionResult, TOOL_PROTECTION_RULES, DEFAULT_RECENCY_THRESHOLD, shouldProtectToolResult, getProtectionSummary, getAlwaysProtectedTools, formatProtectionRules, estimateClearingSavings, } from './tool-protection.js';
|
|
12
13
|
export { type ContextDemandType, type DemandSignal, type JITLoadResult, detectDemandSignals, extractKeywords, loadContextJIT, formatAsReminder, calculateRelevanceScore, shouldInjectContext, } from './demand-detector.js';
|
|
@@ -24,4 +25,7 @@ export { type ColdResource, calculateColdnessScore, getColdResources, isFileCold
|
|
|
24
25
|
export { type UnloadResult, type AutoUnloadResult, type AutoUnloadOptions, UNLOAD_THRESHOLD_START, UNLOAD_THRESHOLD_AGGRESSIVE, shouldAutoUnload, calculateBudgetPressure, getUnloadAggressiveness, selectResourcesToUnload, executeAutoUnload, formatAutoUnloadResult, formatUnloadDecision, } from './auto-unload-engine.js';
|
|
25
26
|
export { type AutoInjectionResult, type AutoInjectionOptions, shouldAutoInject, executeAutoInjection, hasDemandSignals, getDemandSummary, formatAutoInjectionResult, formatDemandSignals, } from './auto-injection-engine.js';
|
|
26
27
|
export { type HealthStatus, type ContextHealthReport, type HealthCheckOptions, calculateStalenessScore, calculateRedundancyScore, calculateFragmentationScore, calculateAgeDistribution, calculateRotIndex, getHealthStatus, generateRecommendations, executeHealthCheck, calculateFocusFragmentationScore, calculateFocusDistribution, formatHealthReport, formatHealthStatus, } from './context-health.js';
|
|
28
|
+
export { type ThresholdConfig, type ThresholdLevel, type ThresholdResult, OPTIMIZED_BUDGET_THRESHOLDS, LEGACY_BUDGET_THRESHOLDS, DEFAULT_SAFETY_MARGIN, DEFAULT_THRESHOLD_CONFIG, getThresholdLevel, calculateThresholdResult, loadThresholdConfig, isLegacyThresholds, getThresholdRecommendations, formatThresholdResult, calculateSafeCapacity, getEffectiveLimit, } from './budget-thresholds.js';
|
|
29
|
+
export { type PersistedOutput, type OutputPersistenceResult, type PersistenceOptions, OUTPUT_SIZE_THRESHOLD, OUTPUT_DIR, OUTPUT_RETENTION_DAYS, shouldPersist, persistOutput, readPersistedOutput, getOutputMetadata, listPersistedOutputs, cleanupExpiredOutputs, getPersistedOutputsStats, generateContentHash, generateOutputFilename, createFileReference, parseFileReference, formatPersistenceResult, } from './output-persistence.js';
|
|
30
|
+
export { type ExtractedDecision, type ExtractedBlocker, type ExtractedProgress, type StructuredCompaction, type CompactionEngineResult, type CompactionEngineOptions, AUTO_COMPACT_THRESHOLD, COMPACT_OUTPUT_DIR, AUTO_COMPACT_FEATURE_FLAG, shouldAutoCompact, getUsagePercent, generateSessionId, extractDecisions, extractBlockers, extractProgress, createStructuredCompaction, persistStructuredCompaction, listCompactions, runAutoCompaction, formatCompactionEngineResult, getCompactionEngineStats, } from './compaction-engine.js';
|
|
27
31
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":"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"}
|