specforge-mcp 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/engine/context-budget/checkpoint.d.ts +8 -0
  2. package/dist/engine/context-budget/checkpoint.d.ts.map +1 -0
  3. package/dist/engine/context-budget/checkpoint.js +79 -0
  4. package/dist/engine/context-budget/checkpoint.js.map +1 -0
  5. package/dist/engine/context-budget/compressor.d.ts +20 -0
  6. package/dist/engine/context-budget/compressor.d.ts.map +1 -0
  7. package/dist/engine/context-budget/compressor.js +122 -0
  8. package/dist/engine/context-budget/compressor.js.map +1 -0
  9. package/dist/engine/context-budget/index.d.ts +5 -0
  10. package/dist/engine/context-budget/index.d.ts.map +1 -0
  11. package/dist/engine/context-budget/index.js +6 -0
  12. package/dist/engine/context-budget/index.js.map +1 -0
  13. package/dist/engine/context-budget/optimizer.d.ts +8 -0
  14. package/dist/engine/context-budget/optimizer.d.ts.map +1 -0
  15. package/dist/engine/context-budget/optimizer.js +87 -0
  16. package/dist/engine/context-budget/optimizer.js.map +1 -0
  17. package/dist/engine/context-budget/tracker.d.ts +19 -0
  18. package/dist/engine/context-budget/tracker.d.ts.map +1 -0
  19. package/dist/engine/context-budget/tracker.js +113 -0
  20. package/dist/engine/context-budget/tracker.js.map +1 -0
  21. package/dist/storage/checkpoint-store.d.ts +12 -0
  22. package/dist/storage/checkpoint-store.d.ts.map +1 -0
  23. package/dist/storage/checkpoint-store.js +85 -0
  24. package/dist/storage/checkpoint-store.js.map +1 -0
  25. package/dist/tools/context-budget.d.ts +3 -0
  26. package/dist/tools/context-budget.d.ts.map +1 -0
  27. package/dist/tools/context-budget.js +131 -0
  28. package/dist/tools/context-budget.js.map +1 -0
  29. package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts.map +1 -1
  30. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +36 -1
  31. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -1
  32. package/dist/tools/schemas/index.d.ts +1 -1
  33. package/dist/tools/schemas/index.d.ts.map +1 -1
  34. package/dist/tools/schemas/index.js +1 -1
  35. package/dist/tools/schemas/index.js.map +1 -1
  36. package/dist/tools/schemas/infra.d.ts +8 -0
  37. package/dist/tools/schemas/infra.d.ts.map +1 -1
  38. package/dist/tools/schemas/infra.js +3 -0
  39. package/dist/tools/schemas/infra.js.map +1 -1
  40. package/dist/types/context-budget.d.ts +90 -0
  41. package/dist/types/context-budget.d.ts.map +1 -0
  42. package/dist/types/context-budget.js +3 -0
  43. package/dist/types/context-budget.js.map +1 -0
  44. package/dist/types/index.d.ts +1 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/dist/types/index.js +1 -0
  47. package/dist/types/index.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/i18n/messages/en.json +6 -0
  50. package/src/i18n/messages/es.json +6 -0
  51. package/src/i18n/messages/pt.json +6 -0
@@ -0,0 +1,8 @@
1
+ import type { ContextBudgetStatus, SessionCheckpoint } from '../../types/index.js';
2
+ /** Build a session checkpoint from available data. */
3
+ export declare function generateCheckpoint(projectId: string, contextUsage: ContextBudgetStatus, options?: Partial<Omit<SessionCheckpoint, 'timestamp' | 'projectId' | 'contextUsage'>>): SessionCheckpoint;
4
+ /** Format a checkpoint as human-readable Markdown. */
5
+ export declare function formatCheckpoint(cp: SessionCheckpoint): string;
6
+ /** Extract a one-line summary from a checkpoint. */
7
+ export declare function parseCheckpointSummary(cp: SessionCheckpoint): string;
8
+ //# sourceMappingURL=checkpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/engine/context-budget/checkpoint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAa9B,sDAAsD;AACtD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,mBAAmB,EACjC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,GACrF,iBAAiB,CAcnB;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,GAAG,MAAM,CA0D9D;AAED,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,iBAAiB,GAAG,MAAM,CAYpE"}
@@ -0,0 +1,79 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Defaults
3
+ // ---------------------------------------------------------------------------
4
+ const EMPTY_GIT = { staged: [], unstaged: [], branch: 'unknown' };
5
+ const EMPTY_PIPELINE = { typecheck: false, lint: false, tests: false };
6
+ // ---------------------------------------------------------------------------
7
+ // Public API
8
+ // ---------------------------------------------------------------------------
9
+ /** Build a session checkpoint from available data. */
10
+ export function generateCheckpoint(projectId, contextUsage, options) {
11
+ return {
12
+ timestamp: new Date().toISOString(),
13
+ projectId,
14
+ summary: options?.summary ?? buildAutoSummary(contextUsage),
15
+ decisions: options?.decisions ?? [],
16
+ filesModified: options?.filesModified ?? [],
17
+ filesRead: options?.filesRead ?? [],
18
+ specsInProgress: options?.specsInProgress ?? [],
19
+ pendingWork: options?.pendingWork ?? [],
20
+ gitStatus: options?.gitStatus ?? EMPTY_GIT,
21
+ pipelineStatus: options?.pipelineStatus ?? EMPTY_PIPELINE,
22
+ contextUsage,
23
+ };
24
+ }
25
+ /** Format a checkpoint as human-readable Markdown. */
26
+ export function formatCheckpoint(cp) {
27
+ const lines = [
28
+ `# Session Checkpoint`,
29
+ '',
30
+ `**Project:** ${cp.projectId}`,
31
+ `**Timestamp:** ${cp.timestamp}`,
32
+ `**Context usage:** ${String(cp.contextUsage.percentUsed)}% (${cp.contextUsage.alertLevel})`,
33
+ '',
34
+ `## Summary`,
35
+ cp.summary,
36
+ '',
37
+ ];
38
+ if (cp.decisions.length > 0) {
39
+ lines.push('## Decisions', ...cp.decisions.map((d) => `- ${d}`), '');
40
+ }
41
+ if (cp.filesModified.length > 0) {
42
+ lines.push('## Files Modified', ...cp.filesModified.map((f) => `- ${f}`), '');
43
+ }
44
+ if (cp.filesRead.length > 0) {
45
+ lines.push('## Files Read', ...cp.filesRead.map((f) => `- ${f}`), '');
46
+ }
47
+ if (cp.specsInProgress.length > 0) {
48
+ lines.push('## Specs In Progress', ...cp.specsInProgress.map((s) => `- ${s}`), '');
49
+ }
50
+ if (cp.pendingWork.length > 0) {
51
+ lines.push('## Pending Work', ...cp.pendingWork.map((w) => `- ${w}`), '');
52
+ }
53
+ lines.push('## Git Status', `Branch: ${cp.gitStatus.branch}`, `Staged: ${cp.gitStatus.staged.length > 0 ? cp.gitStatus.staged.join(', ') : 'none'}`, `Unstaged: ${cp.gitStatus.unstaged.length > 0 ? cp.gitStatus.unstaged.join(', ') : 'none'}`, '', '## Pipeline', `- Typecheck: ${cp.pipelineStatus.typecheck ? 'PASS' : 'PENDING'}`, `- Lint: ${cp.pipelineStatus.lint ? 'PASS' : 'PENDING'}`, `- Tests: ${cp.pipelineStatus.tests ? 'PASS' : 'PENDING'}`, '', '## Context Usage', `- Tokens used: ${String(cp.contextUsage.tokensEstimatedUsed)}`, `- Tokens available: ${String(cp.contextUsage.tokensEstimatedAvailable)}`, `- Operations: ${String(cp.contextUsage.operationCount)}`);
54
+ if (cp.contextUsage.topConsumers.length > 0) {
55
+ lines.push('- Top consumers:', ...cp.contextUsage.topConsumers.map((c) => ` - ${c.tool}: ${String(c.tokens)} tokens`));
56
+ }
57
+ return lines.join('\n');
58
+ }
59
+ /** Extract a one-line summary from a checkpoint. */
60
+ export function parseCheckpointSummary(cp) {
61
+ const parts = [
62
+ `${String(cp.contextUsage.percentUsed)}% context`,
63
+ `${String(cp.contextUsage.operationCount)} ops`,
64
+ ];
65
+ if (cp.filesModified.length > 0) {
66
+ parts.push(`${String(cp.filesModified.length)} files modified`);
67
+ }
68
+ if (cp.specsInProgress.length > 0) {
69
+ parts.push(`specs: ${cp.specsInProgress.join(', ')}`);
70
+ }
71
+ return parts.join(' | ');
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // Internal helpers
75
+ // ---------------------------------------------------------------------------
76
+ function buildAutoSummary(usage) {
77
+ return `Auto-checkpoint at ${String(usage.percentUsed)}% context usage (${String(usage.operationCount)} operations, ${String(usage.tokensEstimatedUsed)} tokens estimated).`;
78
+ }
79
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../../src/engine/context-budget/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ResponseVerbosity } from '../../types/index.js';
2
+ /**
3
+ * Determine the effective verbosity level, auto-degrading when context
4
+ * pressure exceeds the configured threshold.
5
+ */
6
+ export declare function getEffectiveVerbosity(requested: ResponseVerbosity, percentUsed: number, autoCompressThreshold: number): {
7
+ verbosity: ResponseVerbosity;
8
+ autoCompressed: boolean;
9
+ };
10
+ /**
11
+ * Check whether the current context usage warrants auto-compression.
12
+ */
13
+ export declare function shouldAutoCompress(percentUsed: number, threshold: number): boolean;
14
+ /**
15
+ * Compress a tool response text based on the target verbosity level.
16
+ * - compact: strip code blocks, collapse bullet lists, shorten sections
17
+ * - minimal: return only first paragraph + structured summary
18
+ */
19
+ export declare function compressResponse(text: string, targetVerbosity: ResponseVerbosity): string;
20
+ //# sourceMappingURL=compressor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../../src/engine/context-budget/compressor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAM9D;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,GAC5B;IAAE,SAAS,EAAE,iBAAiB,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAY3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAElF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,GAAG,MAAM,CAUzF"}
@@ -0,0 +1,122 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Public API
3
+ // ---------------------------------------------------------------------------
4
+ /**
5
+ * Determine the effective verbosity level, auto-degrading when context
6
+ * pressure exceeds the configured threshold.
7
+ */
8
+ export function getEffectiveVerbosity(requested, percentUsed, autoCompressThreshold) {
9
+ const fraction = percentUsed / 100;
10
+ if (fraction < autoCompressThreshold) {
11
+ return { verbosity: requested, autoCompressed: false };
12
+ }
13
+ const degraded = degradeVerbosity(requested);
14
+ return {
15
+ verbosity: degraded,
16
+ autoCompressed: degraded !== requested,
17
+ };
18
+ }
19
+ /**
20
+ * Check whether the current context usage warrants auto-compression.
21
+ */
22
+ export function shouldAutoCompress(percentUsed, threshold) {
23
+ return percentUsed / 100 >= threshold;
24
+ }
25
+ /**
26
+ * Compress a tool response text based on the target verbosity level.
27
+ * - compact: strip code blocks, collapse bullet lists, shorten sections
28
+ * - minimal: return only first paragraph + structured summary
29
+ */
30
+ export function compressResponse(text, targetVerbosity) {
31
+ if (targetVerbosity === 'full') {
32
+ return text;
33
+ }
34
+ if (targetVerbosity === 'compact') {
35
+ return compactCompress(text);
36
+ }
37
+ return minimalCompress(text);
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // Internal helpers
41
+ // ---------------------------------------------------------------------------
42
+ function degradeVerbosity(current) {
43
+ if (current === 'full') {
44
+ return 'compact';
45
+ }
46
+ if (current === 'compact') {
47
+ return 'minimal';
48
+ }
49
+ return 'minimal';
50
+ }
51
+ /** Compact: remove code blocks, trim long lists, keep structure. */
52
+ function compactCompress(text) {
53
+ let result = text;
54
+ // Remove fenced code blocks
55
+ result = result.replace(/```[\s\S]*?```/g, '[code block omitted for brevity]');
56
+ // Collapse long bullet lists (>5 items) to first 3 + count
57
+ result = collapseListItems(result);
58
+ return result;
59
+ }
60
+ /** Minimal: extract first meaningful paragraph only. */
61
+ function minimalCompress(text) {
62
+ const lines = text.split('\n');
63
+ const meaningful = [];
64
+ for (const line of lines) {
65
+ const trimmed = line.trim();
66
+ // Skip empty lines and code blocks
67
+ if (trimmed === '' && meaningful.length > 0) {
68
+ break;
69
+ }
70
+ if (trimmed.startsWith('```')) {
71
+ break;
72
+ }
73
+ if (trimmed !== '') {
74
+ meaningful.push(trimmed);
75
+ }
76
+ }
77
+ return meaningful.length > 0 ? meaningful.join('\n') : text.slice(0, 200);
78
+ }
79
+ /** Collapse bullet lists with more than 5 items. */
80
+ function collapseListItems(text) {
81
+ const lines = text.split('\n');
82
+ const result = [];
83
+ let bulletCount = 0;
84
+ let inBulletList = false;
85
+ let totalBullets = 0;
86
+ for (const line of lines) {
87
+ const isBullet = /^\s*[-*]\s/.test(line);
88
+ if (isBullet) {
89
+ if (!inBulletList) {
90
+ inBulletList = true;
91
+ bulletCount = 0;
92
+ totalBullets = countConsecutiveBullets(lines, lines.indexOf(line));
93
+ }
94
+ bulletCount++;
95
+ if (bulletCount <= 3) {
96
+ result.push(line);
97
+ }
98
+ else if (bulletCount === 4 && totalBullets > 5) {
99
+ result.push(` ... and ${String(totalBullets - 3)} more items`);
100
+ }
101
+ }
102
+ else {
103
+ inBulletList = false;
104
+ bulletCount = 0;
105
+ result.push(line);
106
+ }
107
+ }
108
+ return result.join('\n');
109
+ }
110
+ function countConsecutiveBullets(lines, startIndex) {
111
+ let count = 0;
112
+ for (let i = startIndex; i < lines.length; i++) {
113
+ if (/^\s*[-*]\s/.test(lines[i] ?? '')) {
114
+ count++;
115
+ }
116
+ else {
117
+ break;
118
+ }
119
+ }
120
+ return count;
121
+ }
122
+ //# sourceMappingURL=compressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compressor.js","sourceRoot":"","sources":["../../../src/engine/context-budget/compressor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { recordToolCall, getStatus, getWarning, setConfig, getConfig, getSessionOps, resetSession, estimateTokensFromText, DEFAULT_CONFIG, } from './tracker.js';
2
+ export { generateCheckpoint, formatCheckpoint, parseCheckpointSummary } from './checkpoint.js';
3
+ export { analyzeSession, generateDelegationHints, suggestExplorePrompt } from './optimizer.js';
4
+ export { getEffectiveVerbosity, shouldAutoCompress, compressResponse } from './compressor.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/context-budget/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // engine/context-budget/index.ts — Barrel re-exports (SPEC-063)
2
+ export { recordToolCall, getStatus, getWarning, setConfig, getConfig, getSessionOps, resetSession, estimateTokensFromText, DEFAULT_CONFIG, } from './tracker.js';
3
+ export { generateCheckpoint, formatCheckpoint, parseCheckpointSummary } from './checkpoint.js';
4
+ export { analyzeSession, generateDelegationHints, suggestExplorePrompt } from './optimizer.js';
5
+ export { getEffectiveVerbosity, shouldAutoCompress, compressResponse } from './compressor.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/context-budget/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ContextBudgetStatus, ContextOptimizationResult, DelegationHint, SessionOperation } from '../../types/index.js';
2
+ /** Analyze session operations and produce optimization recommendations. */
3
+ export declare function analyzeSession(ops: SessionOperation[], status: ContextBudgetStatus): ContextOptimizationResult;
4
+ /** Generate delegation hints based on session operation patterns. */
5
+ export declare function generateDelegationHints(ops: SessionOperation[]): DelegationHint[];
6
+ /** Build a ready-to-use Explore subagent prompt for batch file reading. */
7
+ export declare function suggestExplorePrompt(files: string[]): string;
8
+ //# sourceMappingURL=optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizer.d.ts","sourceRoot":"","sources":["../../../src/engine/context-budget/optimizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAO9B,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EAAE,EACvB,MAAM,EAAE,mBAAmB,GAC1B,yBAAyB,CAO3B;AAED,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CA6CjF;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAc5D"}
@@ -0,0 +1,87 @@
1
+ import { recommendModel } from '../token-tracker.js';
2
+ // ---------------------------------------------------------------------------
3
+ // Public API
4
+ // ---------------------------------------------------------------------------
5
+ /** Analyze session operations and produce optimization recommendations. */
6
+ export function analyzeSession(ops, status) {
7
+ return {
8
+ currentUsage: status,
9
+ delegationHints: generateDelegationHints(ops),
10
+ filesAlreadyRead: extractFilesRead(ops),
11
+ topTokenConsumers: status.topConsumers,
12
+ };
13
+ }
14
+ /** Generate delegation hints based on session operation patterns. */
15
+ export function generateDelegationHints(ops) {
16
+ const hints = [];
17
+ const toolCounts = countByTool(ops);
18
+ // Repeated reads → suggest Explore subagent
19
+ const readOps = toolCounts.consult_docs ?? 0;
20
+ if (readOps >= 3) {
21
+ hints.push({
22
+ operation: 'consult_docs',
23
+ reason: `Called ${String(readOps)} times — delegate batch lookups to an Explore subagent`,
24
+ suggestedModel: 'haiku',
25
+ });
26
+ }
27
+ // Heavy audit → suggest delegation
28
+ const auditOps = toolCounts.audit ?? 0;
29
+ if (auditOps >= 2) {
30
+ hints.push({
31
+ operation: 'audit',
32
+ reason: `${String(auditOps)} audit calls consume significant context — delegate to a dedicated subagent`,
33
+ suggestedModel: recommendModel('audit'),
34
+ });
35
+ }
36
+ // Many generate_tests calls
37
+ const testOps = toolCounts.generate_tests ?? 0;
38
+ if (testOps >= 2) {
39
+ hints.push({
40
+ operation: 'generate_tests',
41
+ reason: `${String(testOps)} test generation calls — consider batching in a subagent`,
42
+ suggestedModel: 'sonnet',
43
+ });
44
+ }
45
+ // Full-llm operations consuming too much
46
+ const fullLlmOps = ops.filter((op) => op.tokens >= 8000);
47
+ if (fullLlmOps.length >= 3) {
48
+ hints.push({
49
+ operation: 'full-llm-operations',
50
+ reason: `${String(fullLlmOps.length)} heavy operations detected — reduce by delegating to subagents with appropriate models`,
51
+ suggestedModel: 'sonnet',
52
+ });
53
+ }
54
+ return hints;
55
+ }
56
+ /** Build a ready-to-use Explore subagent prompt for batch file reading. */
57
+ export function suggestExplorePrompt(files) {
58
+ if (files.length === 0) {
59
+ return '';
60
+ }
61
+ const fileList = files.map((f) => `- ${f}`).join('\n');
62
+ return [
63
+ 'Read and summarize the following files. For each file, provide:',
64
+ '1. Purpose (one sentence)',
65
+ '2. Key exports (functions, types, constants)',
66
+ '3. Dependencies (imports from other project modules)',
67
+ '',
68
+ 'Files:',
69
+ fileList,
70
+ ].join('\n');
71
+ }
72
+ // ---------------------------------------------------------------------------
73
+ // Internal helpers
74
+ // ---------------------------------------------------------------------------
75
+ function countByTool(ops) {
76
+ const counts = {};
77
+ for (const op of ops) {
78
+ counts[op.tool] = (counts[op.tool] ?? 0) + 1;
79
+ }
80
+ return counts;
81
+ }
82
+ function extractFilesRead(ops) {
83
+ // Tools that typically involve reading files
84
+ const readTools = new Set(['consult_docs', 'audit', 'reverse_engineer', 'detect_drift']);
85
+ return ops.filter((op) => readTools.has(op.tool)).map((op) => op.tool);
86
+ }
87
+ //# sourceMappingURL=optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../src/engine/context-budget/optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ContextBudgetConfig, ContextBudgetStatus, ContextWarning, SessionOperation } from '../../types/index.js';
2
+ export declare const DEFAULT_CONFIG: ContextBudgetConfig;
3
+ /** Record a tool invocation with estimated token consumption. */
4
+ export declare function recordToolCall(tool: string, responseLength?: number): void;
5
+ /** Get the current context budget status. */
6
+ export declare function getStatus(config?: ContextBudgetConfig): ContextBudgetStatus;
7
+ /** Build a context warning if usage exceeds the warning threshold. */
8
+ export declare function getWarning(config?: ContextBudgetConfig): ContextWarning | null;
9
+ /** Update the active configuration. */
10
+ export declare function setConfig(config: Partial<ContextBudgetConfig>): ContextBudgetConfig;
11
+ /** Get the active configuration. */
12
+ export declare function getConfig(): ContextBudgetConfig;
13
+ /** Get the raw session operations list. */
14
+ export declare function getSessionOps(): SessionOperation[];
15
+ /** Reset all session state (for testing or new sessions). */
16
+ export declare function resetSession(): void;
17
+ /** Estimate tokens from text character length (chars × 0.25). */
18
+ export declare function estimateTokensFromText(charCount: number): number;
19
+ //# sourceMappingURL=tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/engine/context-budget/tracker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EAEnB,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAO9B,eAAO,MAAM,cAAc,EAAE,mBAM5B,CAAC;AAaF,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAK1E;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAc3E;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAe9E;AAED,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAGnF;AAED,oCAAoC;AACpC,wBAAgB,SAAS,IAAI,mBAAmB,CAE/C;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,IAAI,gBAAgB,EAAE,CAElD;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAMD,iEAAiE;AACjE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,113 @@
1
+ import { estimateTokensForOperation } from '../token-tracker.js';
2
+ // ---------------------------------------------------------------------------
3
+ // Default configuration
4
+ // ---------------------------------------------------------------------------
5
+ export const DEFAULT_CONFIG = {
6
+ contextWindowSize: 200_000,
7
+ warningThreshold: 0.75,
8
+ criticalThreshold: 0.9,
9
+ autoCompressAbove: 0.75,
10
+ autoCheckpointAbove: 0.9,
11
+ };
12
+ // ---------------------------------------------------------------------------
13
+ // In-memory session state (resets each server restart)
14
+ // ---------------------------------------------------------------------------
15
+ let sessionOps = [];
16
+ let activeConfig = { ...DEFAULT_CONFIG };
17
+ // ---------------------------------------------------------------------------
18
+ // Public API
19
+ // ---------------------------------------------------------------------------
20
+ /** Record a tool invocation with estimated token consumption. */
21
+ export function recordToolCall(tool, responseLength) {
22
+ const estimated = responseLength
23
+ ? estimateTokensFromText(responseLength)
24
+ : estimateTokensForOperation(tool);
25
+ sessionOps.push({ tool, tokens: estimated, timestamp: new Date().toISOString() });
26
+ }
27
+ /** Get the current context budget status. */
28
+ export function getStatus(config) {
29
+ const cfg = config ?? activeConfig;
30
+ const totalUsed = sessionOps.reduce((sum, op) => sum + op.tokens, 0);
31
+ const available = Math.max(0, cfg.contextWindowSize - totalUsed);
32
+ const percent = cfg.contextWindowSize > 0 ? totalUsed / cfg.contextWindowSize : 0;
33
+ return {
34
+ tokensEstimatedUsed: totalUsed,
35
+ tokensEstimatedAvailable: available,
36
+ percentUsed: Math.round(percent * 100),
37
+ alertLevel: getAlertLevel(percent, cfg),
38
+ operationCount: sessionOps.length,
39
+ topConsumers: getTopConsumers(5),
40
+ };
41
+ }
42
+ /** Build a context warning if usage exceeds the warning threshold. */
43
+ export function getWarning(config) {
44
+ const cfg = config ?? activeConfig;
45
+ const status = getStatus(cfg);
46
+ const percent = status.percentUsed / 100;
47
+ if (percent < cfg.warningThreshold) {
48
+ return null;
49
+ }
50
+ const recommendation = getRecommendation(percent, cfg);
51
+ return {
52
+ percentUsed: status.percentUsed,
53
+ tokensRemaining: status.tokensEstimatedAvailable,
54
+ recommendation,
55
+ };
56
+ }
57
+ /** Update the active configuration. */
58
+ export function setConfig(config) {
59
+ activeConfig = { ...activeConfig, ...config };
60
+ return activeConfig;
61
+ }
62
+ /** Get the active configuration. */
63
+ export function getConfig() {
64
+ return { ...activeConfig };
65
+ }
66
+ /** Get the raw session operations list. */
67
+ export function getSessionOps() {
68
+ return [...sessionOps];
69
+ }
70
+ /** Reset all session state (for testing or new sessions). */
71
+ export function resetSession() {
72
+ sessionOps = [];
73
+ activeConfig = { ...DEFAULT_CONFIG };
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // Internal helpers
77
+ // ---------------------------------------------------------------------------
78
+ /** Estimate tokens from text character length (chars × 0.25). */
79
+ export function estimateTokensFromText(charCount) {
80
+ return Math.ceil(charCount * 0.25);
81
+ }
82
+ function getAlertLevel(percent, cfg) {
83
+ if (percent >= cfg.criticalThreshold) {
84
+ return 'red';
85
+ }
86
+ if (percent >= cfg.warningThreshold) {
87
+ return 'orange';
88
+ }
89
+ if (percent >= 0.5) {
90
+ return 'yellow';
91
+ }
92
+ return 'green';
93
+ }
94
+ function getTopConsumers(limit) {
95
+ const byTool = {};
96
+ for (const op of sessionOps) {
97
+ byTool[op.tool] = (byTool[op.tool] ?? 0) + op.tokens;
98
+ }
99
+ return Object.entries(byTool)
100
+ .map(([tool, tokens]) => ({ tool, tokens }))
101
+ .sort((a, b) => b.tokens - a.tokens)
102
+ .slice(0, limit);
103
+ }
104
+ function getRecommendation(percent, cfg) {
105
+ if (percent >= cfg.criticalThreshold) {
106
+ return 'Context nearly exhausted. Generate a checkpoint immediately and start a new session.';
107
+ }
108
+ if (percent >= cfg.warningThreshold) {
109
+ return 'Context pressure high. Delegate remaining work to subagents or reduce response verbosity.';
110
+ }
111
+ return 'Context usage moderate. Consider delegating large reads to subagents.';
112
+ }
113
+ //# sourceMappingURL=tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/engine/context-budget/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SessionCheckpoint, ContextBudgetConfig, CheckpointSummary } from '../types/index.js';
2
+ /** Save a checkpoint to disk. Returns the checkpoint filename (ID). */
3
+ export declare function saveCheckpoint(projectId: string, checkpoint: SessionCheckpoint): Promise<string>;
4
+ /** Load a specific checkpoint or the most recent one. */
5
+ export declare function loadCheckpoint(projectId: string, checkpointId?: string): Promise<SessionCheckpoint | null>;
6
+ /** List available checkpoints with summaries. */
7
+ export declare function listCheckpoints(projectId: string, limit?: number): Promise<CheckpointSummary[]>;
8
+ /** Load the context budget config for a project. */
9
+ export declare function loadConfig(projectId: string): Promise<ContextBudgetConfig | null>;
10
+ /** Save the context budget config for a project. */
11
+ export declare function saveConfig(projectId: string, config: ContextBudgetConfig): Promise<void>;
12
+ //# sourceMappingURL=checkpoint-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-store.d.ts","sourceRoot":"","sources":["../../src/storage/checkpoint-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAmBnG,uEAAuE;AACvE,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,yDAAyD;AACzD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAkBnC;AAED,iDAAiD;AACjD,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkBjG;AAMD,oDAAoD;AACpD,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAEvF;AAED,oDAAoD;AACpD,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9F"}
@@ -0,0 +1,85 @@
1
+ // storage/checkpoint-store.ts — Checkpoint persistence (SPEC-063)
2
+ import { readdir, writeFile, mkdir } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { readJson, writeJson, projectDataDir } from './base-store.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Paths
7
+ // ---------------------------------------------------------------------------
8
+ function checkpointsDir(projectId) {
9
+ return join(projectDataDir(projectId), 'checkpoints');
10
+ }
11
+ function configPath(projectId) {
12
+ return join(projectDataDir(projectId), 'context-budget.json');
13
+ }
14
+ // ---------------------------------------------------------------------------
15
+ // Checkpoint CRUD
16
+ // ---------------------------------------------------------------------------
17
+ /** Save a checkpoint to disk. Returns the checkpoint filename (ID). */
18
+ export async function saveCheckpoint(projectId, checkpoint) {
19
+ const dir = checkpointsDir(projectId);
20
+ await mkdir(dir, { recursive: true });
21
+ const id = checkpoint.timestamp.replace(/[:.]/g, '-');
22
+ const filePath = join(dir, `${id}.json`);
23
+ await writeFile(filePath, JSON.stringify(checkpoint, null, 2), 'utf-8');
24
+ return id;
25
+ }
26
+ /** Load a specific checkpoint or the most recent one. */
27
+ export async function loadCheckpoint(projectId, checkpointId) {
28
+ const dir = checkpointsDir(projectId);
29
+ if (checkpointId) {
30
+ return readJson(join(dir, `${checkpointId}.json`), null);
31
+ }
32
+ // Load most recent
33
+ const files = await listCheckpointFiles(dir);
34
+ if (files.length === 0) {
35
+ return null;
36
+ }
37
+ const latest = files[files.length - 1];
38
+ /* c8 ignore next 3 */
39
+ if (!latest) {
40
+ return null;
41
+ }
42
+ return readJson(join(dir, latest), null);
43
+ }
44
+ /** List available checkpoints with summaries. */
45
+ export async function listCheckpoints(projectId, limit = 10) {
46
+ const dir = checkpointsDir(projectId);
47
+ const files = await listCheckpointFiles(dir);
48
+ const recent = files.slice(-limit);
49
+ const summaries = [];
50
+ for (const file of recent) {
51
+ const cp = await readJson(join(dir, file), null);
52
+ if (cp) {
53
+ summaries.push({
54
+ id: file.replace('.json', ''),
55
+ timestamp: cp.timestamp,
56
+ summary: cp.summary.slice(0, 120),
57
+ });
58
+ }
59
+ }
60
+ return summaries;
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Config persistence
64
+ // ---------------------------------------------------------------------------
65
+ /** Load the context budget config for a project. */
66
+ export async function loadConfig(projectId) {
67
+ return readJson(configPath(projectId), null);
68
+ }
69
+ /** Save the context budget config for a project. */
70
+ export async function saveConfig(projectId, config) {
71
+ await writeJson(configPath(projectId), config);
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // Internal helpers
75
+ // ---------------------------------------------------------------------------
76
+ async function listCheckpointFiles(dir) {
77
+ try {
78
+ const entries = await readdir(dir);
79
+ return entries.filter((f) => f.endsWith('.json')).sort();
80
+ }
81
+ catch {
82
+ return [];
83
+ }
84
+ }
85
+ //# sourceMappingURL=checkpoint-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-store.js","sourceRoot":"","sources":["../../src/storage/checkpoint-store.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtE,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,UAA6B;IAE7B,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,YAAqB;IAErB,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAEtC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,QAAQ,CAA2B,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,mBAAmB;IACnB,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,sBAAsB;IACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAA2B,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;IACjE,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,QAAQ,CAA2B,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,EAAE,EAAE,CAAC;YACP,SAAS,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7B,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,OAAO,QAAQ,CAA6B,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,MAA2B;IAC7E,MAAM,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ContextBudgetInput, ToolResult } from '../types/index.js';
2
+ export declare function handleContextBudget(args: ContextBudgetInput): Promise<ToolResult>;
3
+ //# sourceMappingURL=context-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-budget.d.ts","sourceRoot":"","sources":["../../src/tools/context-budget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAaxE,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBvF"}
@@ -0,0 +1,131 @@
1
+ import { getStatus, getWarning, setConfig, getSessionOps, generateCheckpoint, formatCheckpoint, analyzeSession, suggestExplorePrompt, } from '../engine/context-budget/index.js';
2
+ import * as checkpointStore from '../storage/checkpoint-store.js';
3
+ export async function handleContextBudget(args) {
4
+ switch (args.action) {
5
+ case 'status':
6
+ return handleStatus(args.projectId);
7
+ case 'configure':
8
+ return handleConfigure(args);
9
+ case 'checkpoint':
10
+ return handleCheckpoint(args);
11
+ case 'restore':
12
+ return handleRestore(args.projectId, args.checkpointId);
13
+ case 'list-checkpoints':
14
+ return handleListCheckpoints(args.projectId, args.limit);
15
+ case 'optimize':
16
+ return handleOptimize(args.projectId);
17
+ default:
18
+ return {
19
+ content: [{ type: 'text', text: `Unknown action: ${String(args.action)}` }],
20
+ isError: true,
21
+ };
22
+ }
23
+ }
24
+ async function handleStatus(projectId) {
25
+ const stored = await checkpointStore.loadConfig(projectId);
26
+ if (stored) {
27
+ setConfig(stored);
28
+ }
29
+ const status = getStatus();
30
+ const warning = getWarning();
31
+ const lines = [
32
+ `## Context Budget Status`,
33
+ '',
34
+ `| Metric | Value |`,
35
+ `|--------|-------|`,
36
+ `| Tokens used | ${String(status.tokensEstimatedUsed)} |`,
37
+ `| Tokens available | ${String(status.tokensEstimatedAvailable)} |`,
38
+ `| Usage | ${String(status.percentUsed)}% |`,
39
+ `| Alert level | ${status.alertLevel} |`,
40
+ `| Operations | ${String(status.operationCount)} |`,
41
+ ];
42
+ if (status.topConsumers.length > 0) {
43
+ lines.push('', '### Top Consumers');
44
+ for (const c of status.topConsumers) {
45
+ lines.push(`- **${c.tool}**: ${String(c.tokens)} tokens`);
46
+ }
47
+ }
48
+ if (warning) {
49
+ lines.push('', `> **Warning**: ${warning.recommendation}`);
50
+ }
51
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
52
+ }
53
+ async function handleConfigure(args) {
54
+ const config = setConfig({
55
+ ...(args.contextWindowSize !== undefined && { contextWindowSize: args.contextWindowSize }),
56
+ ...(args.warningThreshold !== undefined && { warningThreshold: args.warningThreshold }),
57
+ ...(args.criticalThreshold !== undefined && { criticalThreshold: args.criticalThreshold }),
58
+ });
59
+ await checkpointStore.saveConfig(args.projectId, config);
60
+ return {
61
+ content: [
62
+ {
63
+ type: 'text',
64
+ text: `Context budget configured. Window: ${String(config.contextWindowSize)} tokens, warning: ${String(config.warningThreshold * 100)}%, critical: ${String(config.criticalThreshold * 100)}%`,
65
+ },
66
+ ],
67
+ };
68
+ }
69
+ async function handleCheckpoint(args) {
70
+ const status = getStatus();
71
+ const cp = generateCheckpoint(args.projectId, status, {
72
+ summary: args.summary,
73
+ decisions: args.decisions,
74
+ filesModified: args.filesModified,
75
+ filesRead: args.filesRead,
76
+ specsInProgress: args.specsInProgress,
77
+ pendingWork: args.pendingWork,
78
+ });
79
+ const id = await checkpointStore.saveCheckpoint(args.projectId, cp);
80
+ const formatted = formatCheckpoint(cp);
81
+ return { content: [{ type: 'text', text: `Checkpoint saved: **${id}**\n\n${formatted}` }] };
82
+ }
83
+ async function handleRestore(projectId, checkpointId) {
84
+ const cp = await checkpointStore.loadCheckpoint(projectId, checkpointId);
85
+ if (!cp) {
86
+ return { content: [{ type: 'text', text: 'No checkpoint found.' }], isError: true };
87
+ }
88
+ const formatted = formatCheckpoint(cp);
89
+ return { content: [{ type: 'text', text: `## Restored Checkpoint\n\n${formatted}` }] };
90
+ }
91
+ async function handleListCheckpoints(projectId, limit) {
92
+ const summaries = await checkpointStore.listCheckpoints(projectId, limit ?? 10);
93
+ if (summaries.length === 0) {
94
+ return { content: [{ type: 'text', text: 'No checkpoints found for this project.' }] };
95
+ }
96
+ const lines = ['## Available Checkpoints', ''];
97
+ for (const s of summaries) {
98
+ lines.push(`- **${s.id}** (${s.timestamp}): ${s.summary}`);
99
+ }
100
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
101
+ }
102
+ function handleOptimize(projectId) {
103
+ const ops = getSessionOps();
104
+ const status = getStatus();
105
+ const result = analyzeSession(ops, status);
106
+ const lines = [
107
+ `## Context Optimization — ${projectId}`,
108
+ '',
109
+ `Current usage: ${String(result.currentUsage.percentUsed)}% (${result.currentUsage.alertLevel})`,
110
+ '',
111
+ ];
112
+ if (result.delegationHints.length > 0) {
113
+ lines.push('### Delegation Suggestions');
114
+ for (const hint of result.delegationHints) {
115
+ lines.push(`- **${hint.operation}**: ${hint.reason} → use \`${hint.suggestedModel}\``);
116
+ }
117
+ lines.push('');
118
+ }
119
+ if (result.filesAlreadyRead.length > 5) {
120
+ lines.push('### Batch Read Suggestion');
121
+ lines.push('Consider delegating file reads to an Explore subagent:');
122
+ lines.push('```');
123
+ lines.push(suggestExplorePrompt(result.filesAlreadyRead));
124
+ lines.push('```');
125
+ }
126
+ if (result.delegationHints.length === 0) {
127
+ lines.push('No optimization suggestions at this time — context usage is efficient.');
128
+ }
129
+ return Promise.resolve({ content: [{ type: 'text', text: lines.join('\n') }] });
130
+ }
131
+ //# sourceMappingURL=context-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-budget.js","sourceRoot":"","sources":["../../src/tools/context-budget.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-infra-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/lifecycle-infra-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuLnE"}
1
+ {"version":3,"file":"lifecycle-infra-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/lifecycle-infra-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBzE;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8NnE"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { t } from '../../i18n/index.js';
3
3
  import { safe } from '../safe-handler.js';
4
- import { DocumentationTypeEnum, GitActionEnum, DevLifecycleCategoryEnum, PMPlatformEnum, PMActionEnum, OrchestrateActionEnum, ManageContextActionEnum, } from '../schemas/index.js';
4
+ import { DocumentationTypeEnum, GitActionEnum, DevLifecycleCategoryEnum, PMPlatformEnum, PMActionEnum, OrchestrateActionEnum, ManageContextActionEnum, ContextBudgetActionEnum, } from '../schemas/index.js';
5
5
  import { handleSuggestTooling } from '../suggest-tooling.js';
6
6
  import { handleGenerateTests } from '../generate-tests.js';
7
7
  import { handleGenerateDocs } from '../generate-docs.js';
@@ -10,6 +10,7 @@ import { handleManageContext } from '../manage-context.js';
10
10
  import { handleManageGit } from '../manage-git.js';
11
11
  import { handleOrchestrate } from '../orchestrate.js';
12
12
  import { handleParadigmReport } from '../paradigm-report.js';
13
+ import { handleContextBudget } from '../context-budget.js';
13
14
  /**
14
15
  * Registers dev lifecycle, infrastructure, and semantic tools (tools 31–38) on the MCP server.
15
16
  */
@@ -155,5 +156,39 @@ export function registerLifecycleInfraTools(server) {
155
156
  },
156
157
  annotations: { readOnlyHint: true },
157
158
  }, safe(async (args) => handleParadigmReport(args)));
159
+ // 39. context_budget
160
+ server.registerTool('context_budget', {
161
+ description: t('tools.context_budget.description'),
162
+ inputSchema: {
163
+ projectId: z.string().describe('Project ID'),
164
+ action: ContextBudgetActionEnum.describe('Context budget action'),
165
+ contextWindowSize: z
166
+ .number()
167
+ .int()
168
+ .min(1000)
169
+ .optional()
170
+ .describe('Context window size in tokens (default: 200000)'),
171
+ warningThreshold: z
172
+ .number()
173
+ .min(0)
174
+ .max(1)
175
+ .optional()
176
+ .describe('Warning threshold 0-1 (default: 0.75)'),
177
+ criticalThreshold: z
178
+ .number()
179
+ .min(0)
180
+ .max(1)
181
+ .optional()
182
+ .describe('Critical threshold 0-1 (default: 0.90)'),
183
+ checkpointId: z.string().optional().describe('Checkpoint ID for restore'),
184
+ limit: z.number().int().min(1).optional().describe('Max checkpoints to list (default: 10)'),
185
+ summary: z.string().optional().describe('Session summary for checkpoint'),
186
+ decisions: z.array(z.string()).optional().describe('Key decisions made during session'),
187
+ filesModified: z.array(z.string()).optional().describe('Files modified in session'),
188
+ filesRead: z.array(z.string()).optional().describe('Files read in session'),
189
+ specsInProgress: z.array(z.string()).optional().describe('Specs currently in progress'),
190
+ pendingWork: z.array(z.string()).optional().describe('Pending work items'),
191
+ },
192
+ }, safe(async (args) => handleContextBudget(args)));
158
193
  }
159
194
  //# sourceMappingURL=lifecycle-infra-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-infra-tools.js","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/lifecycle-infra-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,CAAC,CAAC,mCAAmC,CAAC;QACnD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC7D,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,wBAAwB,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,+BAA+B,CAAC;SAC7C;KACF,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CACjD,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE,CAAC,CAAC,kCAAkC,CAAC;QAClD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SAC3F;KACF,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAChD,CAAC;IAEF,oBAAoB;IACpB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,CAAC,CAAC,iCAAiC,CAAC;QACjD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACpF,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAChD,wEAAwE,CACzE;YACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC7D,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;iBACrD,QAAQ,EAAE;iBACV,QAAQ,CAAC,2DAA2D,CAAC;YACxE,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;iBACvC,QAAQ,EAAE;iBACV,QAAQ,CAAC,gEAAgE,CAAC;YAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SAC3E;KACF,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE,CAAC,CAAC,kCAAkC,CAAC;QAClD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC1D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACpF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACrF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SACpF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAC1C,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,CAAC,CAAC,8BAA8B,CAAC;QAC9C,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC7D,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACzD,YAAY,EAAE,CAAC;qBACZ,IAAI,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;qBAC3C,QAAQ,EAAE;qBACV,QAAQ,CAAC,gDAAgD,CAAC;gBAC7D,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC3C,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBACxC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;gBAC3C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;aAClD,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,6BAA6B,CAAC;SAC3C;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CACtC,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,CAAC,CAAC,+BAA+B,CAAC;QAC/C,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC5E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAClF,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,4CAA4C,CAAC;YACzD,eAAe,EAAE,CAAC;iBACf,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;YAClD,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,mCAAmC,CAAC;YAChD,aAAa,EAAE,CAAC;iBACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;YACpD,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACtB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SAC/E;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CACxC,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,CAAC,CAAC,gCAAgC,CAAC;QAChD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC;YAChD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACjD,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;SAC/C;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CACxC,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,CAAC,CAAC,mCAAmC,CAAC;QACnD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SACtE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lifecycle-infra-tools.js","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/lifecycle-infra-tools.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ export { SupportedLocaleEnum, SpecStatusEnum, SpecTypeEnum, SpecScopeEnum, SpecT
2
2
  export { AuditCategoryEnum, ChecklistFocusEnum, ChallengeSpecFocusEnum } from './analysis.js';
3
3
  export { AgentPlatformEnum, SubAgentFrameworkEnum } from './agents.js';
4
4
  export { DocumentationTypeEnum, GitActionEnum, DevLifecycleCategoryEnum, PMPlatformEnum, PMActionEnum, } from './lifecycle.js';
5
- export { OrchestrateActionEnum, ManageContextActionEnum } from './infra.js';
5
+ export { OrchestrateActionEnum, ManageContextActionEnum, ContextBudgetActionEnum, } from './infra.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -3,5 +3,5 @@ export { SupportedLocaleEnum, SpecStatusEnum, SpecTypeEnum, SpecScopeEnum, SpecT
3
3
  export { AuditCategoryEnum, ChecklistFocusEnum, ChallengeSpecFocusEnum } from './analysis.js';
4
4
  export { AgentPlatformEnum, SubAgentFrameworkEnum } from './agents.js';
5
5
  export { DocumentationTypeEnum, GitActionEnum, DevLifecycleCategoryEnum, PMPlatformEnum, PMActionEnum, } from './lifecycle.js';
6
- export { OrchestrateActionEnum, ManageContextActionEnum } from './infra.js';
6
+ export { OrchestrateActionEnum, ManageContextActionEnum, ContextBudgetActionEnum, } from './infra.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -19,4 +19,12 @@ export declare const ManageContextActionEnum: z.ZodEnum<{
19
19
  save: "save";
20
20
  cleanup: "cleanup";
21
21
  }>;
22
+ export declare const ContextBudgetActionEnum: z.ZodEnum<{
23
+ status: "status";
24
+ checkpoint: "checkpoint";
25
+ configure: "configure";
26
+ restore: "restore";
27
+ "list-checkpoints": "list-checkpoints";
28
+ optimize: "optimize";
29
+ }>;
22
30
  //# sourceMappingURL=infra.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/infra.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAgB/B,CAAC;AACJ,eAAO,MAAM,uBAAuB;;;;;;EAEgC,CAAC"}
1
+ {"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/infra.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAgB/B,CAAC;AACJ,eAAO,MAAM,uBAAuB;;;;;;EAEgC,CAAC;AAErE,eAAO,MAAM,uBAAuB;;;;;;;EAIjC,CAAC"}
@@ -18,4 +18,7 @@ export const OrchestrateActionEnum = z
18
18
  export const ManageContextActionEnum = z
19
19
  .enum(['save', 'load', 'list', 'delete', 'cleanup'])
20
20
  .describe('Context action: save | load | list | delete | cleanup');
21
+ export const ContextBudgetActionEnum = z
22
+ .enum(['status', 'configure', 'checkpoint', 'restore', 'list-checkpoints', 'optimize'])
23
+ .describe('Context budget action: status | configure | checkpoint | restore | list-checkpoints | optimize');
21
24
  //# sourceMappingURL=infra.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"infra.js","sourceRoot":"","sources":["../../../src/tools/schemas/infra.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,IAAI,CAAC;IACJ,UAAU;IACV,WAAW;IACX,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,kBAAkB;IAClB,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;CACV,CAAC;KACD,QAAQ,CACP,6IAA6I,CAC9I,CAAC;AACJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACnD,QAAQ,CAAC,uDAAuD,CAAC,CAAC"}
1
+ {"version":3,"file":"infra.js","sourceRoot":"","sources":["../../../src/tools/schemas/infra.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,IAAI,CAAC;IACJ,UAAU;IACV,WAAW;IACX,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,kBAAkB;IAClB,WAAW;IACX,WAAW;IACX,OAAO;IACP,SAAS;CACV,CAAC;KACD,QAAQ,CACP,6IAA6I,CAC9I,CAAC;AACJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACnD,QAAQ,CAAC,uDAAuD,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;KACtF,QAAQ,CACP,gGAAgG,CACjG,CAAC"}
@@ -0,0 +1,90 @@
1
+ export type ContextBudgetAction = 'status' | 'configure' | 'checkpoint' | 'restore' | 'list-checkpoints' | 'optimize';
2
+ export type ContextAlertLevel = 'green' | 'yellow' | 'orange' | 'red';
3
+ export type ResponseVerbosity = 'full' | 'compact' | 'minimal';
4
+ export interface ContextConsumer {
5
+ tool: string;
6
+ tokens: number;
7
+ }
8
+ export interface ContextBudgetStatus {
9
+ tokensEstimatedUsed: number;
10
+ tokensEstimatedAvailable: number;
11
+ percentUsed: number;
12
+ alertLevel: ContextAlertLevel;
13
+ operationCount: number;
14
+ topConsumers: ContextConsumer[];
15
+ }
16
+ export interface ContextBudgetConfig {
17
+ contextWindowSize: number;
18
+ warningThreshold: number;
19
+ criticalThreshold: number;
20
+ autoCompressAbove: number;
21
+ autoCheckpointAbove: number;
22
+ }
23
+ export interface CheckpointGitStatus {
24
+ staged: string[];
25
+ unstaged: string[];
26
+ branch: string;
27
+ }
28
+ export interface CheckpointPipelineStatus {
29
+ typecheck: boolean;
30
+ lint: boolean;
31
+ tests: boolean;
32
+ }
33
+ export interface SessionCheckpoint {
34
+ timestamp: string;
35
+ projectId: string;
36
+ summary: string;
37
+ decisions: string[];
38
+ filesModified: string[];
39
+ filesRead: string[];
40
+ specsInProgress: string[];
41
+ pendingWork: string[];
42
+ gitStatus: CheckpointGitStatus;
43
+ pipelineStatus: CheckpointPipelineStatus;
44
+ contextUsage: ContextBudgetStatus;
45
+ }
46
+ export interface ContextWarning {
47
+ percentUsed: number;
48
+ tokensRemaining: number;
49
+ recommendation: string;
50
+ autoCompressed?: boolean;
51
+ checkpointPath?: string;
52
+ }
53
+ export interface DelegationHint {
54
+ operation: string;
55
+ reason: string;
56
+ suggestedModel: 'haiku' | 'sonnet' | 'opus';
57
+ promptTemplate?: string;
58
+ }
59
+ export interface ContextOptimizationResult {
60
+ currentUsage: ContextBudgetStatus;
61
+ delegationHints: DelegationHint[];
62
+ filesAlreadyRead: string[];
63
+ topTokenConsumers: ContextConsumer[];
64
+ }
65
+ export interface SessionOperation {
66
+ tool: string;
67
+ tokens: number;
68
+ timestamp: string;
69
+ }
70
+ export interface CheckpointSummary {
71
+ id: string;
72
+ timestamp: string;
73
+ summary: string;
74
+ }
75
+ export interface ContextBudgetInput {
76
+ projectId: string;
77
+ action: ContextBudgetAction;
78
+ contextWindowSize?: number;
79
+ warningThreshold?: number;
80
+ criticalThreshold?: number;
81
+ checkpointId?: string;
82
+ limit?: number;
83
+ summary?: string;
84
+ decisions?: string[];
85
+ filesModified?: string[];
86
+ filesRead?: string[];
87
+ specsInProgress?: string[];
88
+ pendingWork?: string[];
89
+ }
90
+ //# sourceMappingURL=context-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-budget.d.ts","sourceRoot":"","sources":["../../src/types/context-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // SpecForge — Context Budget types (SPEC-063)
2
+ export {};
3
+ //# sourceMappingURL=context-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-budget.js","sourceRoot":"","sources":["../../src/types/context-budget.ts"],"names":[],"mappings":"AAAA,8CAA8C"}
@@ -42,4 +42,5 @@ export * from './multi-agent.js';
42
42
  export * from './ai-native.js';
43
43
  export * from './actuals-tracking.js';
44
44
  export * from './risk.js';
45
+ export * from './context-budget.js';
45
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC"}
@@ -43,4 +43,5 @@ export * from './multi-agent.js';
43
43
  export * from './ai-native.js';
44
44
  export * from './actuals-tracking.js';
45
45
  export * from './risk.js';
46
+ export * from './context-budget.js';
46
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specforge-mcp",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "description": "SpecForge — MCP Server for Spec Driven Development. Manages specs, estimations, reverse engineering, and auto-learning across any language/framework.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -302,6 +302,12 @@
302
302
  },
303
303
  "package_handoff": {
304
304
  "description": "Create a complete instruction package so an AI agent can implement a feature. Includes the objective, acceptance criteria, file list, what is out of scope, and any constraints — everything the agent needs to get started."
305
+ },
306
+ "context_budget": {
307
+ "description": "ALWAYS use this tool to manage context window usage during long sessions. Tracks estimated token consumption, generates session checkpoints for continuity, and provides smart delegation hints. Actions: status (check usage), configure (set thresholds), checkpoint (save session state), restore (load checkpoint), list-checkpoints (show available), optimize (get delegation suggestions). Prevents context exhaustion and work loss.",
308
+ "noCheckpoints": "No checkpoints found for this project",
309
+ "checkpointSaved": "Checkpoint saved: {id}",
310
+ "configUpdated": "Context budget configuration updated"
305
311
  }
306
312
  },
307
313
  "resources": {
@@ -302,6 +302,12 @@
302
302
  },
303
303
  "package_handoff": {
304
304
  "description": "Crear un paquete completo de instrucciones para que un agente de IA implemente una feature. Incluye el objetivo, criterios de aceptación, lista de archivos, qué está fuera de scope y cualquier restricción — todo lo que el agente necesita para empezar."
305
+ },
306
+ "context_budget": {
307
+ "description": "SIEMPRE usa esta herramienta para gestionar el uso de la ventana de contexto en sesiones largas. Rastrea el consumo estimado de tokens, genera checkpoints de sesión para continuidad y proporciona sugerencias inteligentes de delegación. Acciones: status (verificar uso), configure (establecer umbrales), checkpoint (guardar estado de sesión), restore (cargar checkpoint), list-checkpoints (mostrar disponibles), optimize (obtener sugerencias de delegación). Previene agotamiento de contexto y pérdida de trabajo.",
308
+ "noCheckpoints": "No se encontraron checkpoints para este proyecto",
309
+ "checkpointSaved": "Checkpoint guardado: {id}",
310
+ "configUpdated": "Configuración de presupuesto de contexto actualizada"
305
311
  }
306
312
  },
307
313
  "resources": {
@@ -302,6 +302,12 @@
302
302
  },
303
303
  "package_handoff": {
304
304
  "description": "Criar um pacote completo de instruções para um agente de IA implementar uma feature. Inclui o objetivo, critérios de aceitação, lista de arquivos, o que está fora do escopo e quaisquer restrições — tudo que o agente precisa para começar."
305
+ },
306
+ "context_budget": {
307
+ "description": "SEMPRE use esta ferramenta para gerenciar o uso da janela de contexto em sessões longas. Rastreia o consumo estimado de tokens, gera checkpoints de sessão para continuidade e fornece sugestões inteligentes de delegação. Ações: status (verificar uso), configure (definir limiares), checkpoint (salvar estado da sessão), restore (carregar checkpoint), list-checkpoints (mostrar disponíveis), optimize (obter sugestões de delegação). Previne esgotamento de contexto e perda de trabalho.",
308
+ "noCheckpoints": "Nenhum checkpoint encontrado para este projeto",
309
+ "checkpointSaved": "Checkpoint salvo: {id}",
310
+ "configUpdated": "Configuração de orçamento de contexto atualizada"
305
311
  }
306
312
  },
307
313
  "resources": {