aura-code 0.10.2 → 0.10.3
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/dist/agent/compactor.d.ts +26 -4
- package/dist/agent/compactor.js +57 -63
- package/dist/agent/compactor.js.map +1 -1
- package/dist/agent/context.d.ts +1 -0
- package/dist/agent/context.js +3 -2
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/loop.js +36 -0
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/system-prompt.js +9 -16
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/tiered-context.d.ts +36 -0
- package/dist/agent/tiered-context.js +234 -0
- package/dist/agent/tiered-context.js.map +1 -0
- package/dist/cli/command-palette.js +2 -0
- package/dist/cli/command-palette.js.map +1 -1
- package/dist/cli/diamond.d.ts +1 -3
- package/dist/cli/diamond.js +52 -29
- package/dist/cli/diamond.js.map +1 -1
- package/dist/cli/help-data.js +1 -0
- package/dist/cli/help-data.js.map +1 -1
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tui.js +61 -31
- package/dist/cli/tui.js.map +1 -1
- package/dist/providers/anthropic.d.ts +1 -0
- package/dist/providers/anthropic.js +15 -3
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.js +9 -2
- package/dist/providers/factory.js.map +1 -1
- package/dist/tools/gmail-tool.js +3 -3
- package/dist/tools/gmail-tool.js.map +1 -1
- package/dist/tools/index.js +12 -12
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/telegram-bot.js +43 -7
- package/dist/tools/telegram-bot.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isTieredStrategyEnabled = isTieredStrategyEnabled;
|
|
37
|
+
exports.resolveSummaryModel = resolveSummaryModel;
|
|
38
|
+
exports.compactHistoryTiered = compactHistoryTiered;
|
|
39
|
+
/**
|
|
40
|
+
* Tiered context strategy — ANCHOR + FACT-LOG + TAIL.
|
|
41
|
+
*
|
|
42
|
+
* Alternative to compactor.ts's escalating-recap strategy, gated behind
|
|
43
|
+
* AURA_CONTEXT_STRATEGY=tiered so it can be A/B-compared against the default
|
|
44
|
+
* rather than shipped as a silent replacement (see isTieredStrategyEnabled).
|
|
45
|
+
*
|
|
46
|
+
* - ANCHOR: history[0] (the original task) — never touched.
|
|
47
|
+
* - TAIL: verbatim recent turns, sized identically to the default strategy
|
|
48
|
+
* (computeTailBoundary / RETENTION_RATIO from compactor.ts) so the two
|
|
49
|
+
* strategies fire at the same trigger and keep the same amount of raw
|
|
50
|
+
* recent context — the only variable being compared is what happens to
|
|
51
|
+
* the middle.
|
|
52
|
+
* - FACT LOG: everything between anchor and tail, reduced to 1-3 bullet
|
|
53
|
+
* facts per turn (file changed, decision made, value set, command run +
|
|
54
|
+
* result). Bullets are stored in an on-disk sidecar (one JSON file per
|
|
55
|
+
* session, independent of the session's own history blob) and are
|
|
56
|
+
* strictly append-only: each compaction pass only asks the summary model
|
|
57
|
+
* to bullet-ize the newly-aged-out turns and appends the result — it never
|
|
58
|
+
* re-summarizes the existing log. That keeps the rendered fact-log message
|
|
59
|
+
* a stable-prefix-plus-appended-suffix across calls, which is what lets a
|
|
60
|
+
* cache breakpoint placed after it actually hit.
|
|
61
|
+
* - Summarization runs on a separate, cheap/fast model (see
|
|
62
|
+
* resolveSummaryModel), not the session's main model, so the compaction
|
|
63
|
+
* pass itself doesn't eat the token savings it's trying to create.
|
|
64
|
+
*/
|
|
65
|
+
const fs = __importStar(require("fs"));
|
|
66
|
+
const path = __importStar(require("path"));
|
|
67
|
+
const factory_js_1 = require("../providers/factory.js");
|
|
68
|
+
const env_js_1 = require("../util/env.js");
|
|
69
|
+
const compactor_js_1 = require("./compactor.js");
|
|
70
|
+
/** Marker prefixing the rendered fact-log placeholder message in `history`. */
|
|
71
|
+
const FACT_LOG_MARKER = '[Context fact log';
|
|
72
|
+
function isTieredStrategyEnabled() {
|
|
73
|
+
return (0, env_js_1.getEnv)('AURA_CONTEXT_STRATEGY') === 'tiered';
|
|
74
|
+
}
|
|
75
|
+
function isFactLogMessage(msg) {
|
|
76
|
+
return msg.role === 'assistant' && msg.content.startsWith(FACT_LOG_MARKER);
|
|
77
|
+
}
|
|
78
|
+
const EMPTY_LOG = { compactionCount: 0, bullets: [] };
|
|
79
|
+
/** In-memory fallback for ephemeral sessions (no sessionPath to persist to).
|
|
80
|
+
* Keyed by history array identity, matching compactHistory's in-place-mutate
|
|
81
|
+
* contract (the array reference is stable for the life of a run). */
|
|
82
|
+
const memoryLogs = new WeakMap();
|
|
83
|
+
function sidecarPath(sessionPath) {
|
|
84
|
+
return sessionPath.replace(/\.json$/, '') + '.factlog.json';
|
|
85
|
+
}
|
|
86
|
+
function loadFactLog(sessionPath, history) {
|
|
87
|
+
if (!sessionPath)
|
|
88
|
+
return memoryLogs.get(history) ?? EMPTY_LOG;
|
|
89
|
+
try {
|
|
90
|
+
const raw = fs.readFileSync(sidecarPath(sessionPath), 'utf8');
|
|
91
|
+
return JSON.parse(raw);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return EMPTY_LOG;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function saveFactLog(sessionPath, history, log) {
|
|
98
|
+
if (!sessionPath) {
|
|
99
|
+
memoryLogs.set(history, log);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const target = sidecarPath(sessionPath);
|
|
103
|
+
const dir = path.dirname(target);
|
|
104
|
+
if (!fs.existsSync(dir))
|
|
105
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
106
|
+
fs.writeFileSync(target, JSON.stringify(log, null, 2), 'utf8');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Cheap/fast model used for middle-compression, resolved in priority order:
|
|
110
|
+
* 1. AURA_CONTEXT_SUMMARY_MODEL — fully user-overridable (any model id
|
|
111
|
+
* the main session could use: Sonnet, Opus, Fable, local Ollama, ...).
|
|
112
|
+
* 2. deepseek-v4-flash, if DEEPSEEK_API_KEY is set — the recommended
|
|
113
|
+
* default this feature was built and tested against.
|
|
114
|
+
* 3. AURA_FALLBACK_MODEL (first entry if comma-separated).
|
|
115
|
+
* 4. The session's own main model, as a last resort (still correct, just
|
|
116
|
+
* not "cheap" — better than failing compaction).
|
|
117
|
+
*/
|
|
118
|
+
function resolveSummaryModel(mainModel) {
|
|
119
|
+
const override = (0, env_js_1.getEnv)('AURA_CONTEXT_SUMMARY_MODEL');
|
|
120
|
+
if (override)
|
|
121
|
+
return override;
|
|
122
|
+
if ((0, env_js_1.getApiKey)('DEEPSEEK_API_KEY'))
|
|
123
|
+
return 'deepseek-v4-flash';
|
|
124
|
+
const fallback = (0, env_js_1.getEnv)('AURA_FALLBACK_MODEL');
|
|
125
|
+
if (fallback)
|
|
126
|
+
return fallback.split(',')[0].trim();
|
|
127
|
+
return mainModel;
|
|
128
|
+
}
|
|
129
|
+
let summaryProviderCache;
|
|
130
|
+
function getSummaryProvider(mainModel) {
|
|
131
|
+
const model = resolveSummaryModel(mainModel);
|
|
132
|
+
if (summaryProviderCache?.model === model)
|
|
133
|
+
return summaryProviderCache.provider;
|
|
134
|
+
const provider = (0, factory_js_1.createProvider)({ model });
|
|
135
|
+
summaryProviderCache = { model, provider };
|
|
136
|
+
return provider;
|
|
137
|
+
}
|
|
138
|
+
const BULLET_SYSTEM = [
|
|
139
|
+
'You compress coding-session turns into a durable fact log.',
|
|
140
|
+
'For each turn given, write 1-3 markdown bullets ("- ..."), each a concrete standalone fact:',
|
|
141
|
+
'a file changed, a decision made, a value/config set, or a command run and its result.',
|
|
142
|
+
'Be specific — file names, exact values, exit codes. No generic advice, no headers, no prose.',
|
|
143
|
+
'Output ONLY bullet lines, one per line, in the same order as the turns given.',
|
|
144
|
+
].join(' ');
|
|
145
|
+
/** Fuller per-message transcript line than compactor's summariseMessage —
|
|
146
|
+
* the summary model gets more raw material to extract concrete facts from. */
|
|
147
|
+
function renderTurn(msg) {
|
|
148
|
+
switch (msg.role) {
|
|
149
|
+
case 'user':
|
|
150
|
+
return `User: ${msg.content.slice(0, 400)}`;
|
|
151
|
+
case 'assistant': {
|
|
152
|
+
const text = msg.content ? `Assistant: ${msg.content.slice(0, 400)}` : '';
|
|
153
|
+
const calls = msg.toolCalls?.length
|
|
154
|
+
? `Called: ${msg.toolCalls.map(c => `${c.name}(${JSON.stringify(c.input).slice(0, 200)})`).join(', ')}`
|
|
155
|
+
: '';
|
|
156
|
+
return [text, calls].filter(Boolean).join('\n') || 'Assistant: (no content)';
|
|
157
|
+
}
|
|
158
|
+
case 'tool_result':
|
|
159
|
+
return msg.results
|
|
160
|
+
.map(r => `Result[${r.name}]${r.isError ? ' (error)' : ''}: ${(r.content ?? '').slice(0, 400)}`)
|
|
161
|
+
.join('\n');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async function summarizeTurns(turns, mainModel) {
|
|
165
|
+
if (turns.length === 0)
|
|
166
|
+
return [];
|
|
167
|
+
const provider = getSummaryProvider(mainModel);
|
|
168
|
+
const transcript = turns.map((t, i) => `--- turn ${i + 1} (${t.role}) ---\n${renderTurn(t)}`).join('\n\n');
|
|
169
|
+
const response = await provider.complete(BULLET_SYSTEM, [{ role: 'user', content: transcript }], []);
|
|
170
|
+
const lines = response.text.split('\n').map(l => l.trim()).filter(l => l.startsWith('- '));
|
|
171
|
+
return lines.length > 0 ? lines : [`- ${turns.length} turns compacted (summary model returned no bullets)`];
|
|
172
|
+
}
|
|
173
|
+
function renderFactLog(log) {
|
|
174
|
+
return {
|
|
175
|
+
role: 'assistant',
|
|
176
|
+
content: [
|
|
177
|
+
`${FACT_LOG_MARKER}: ${log.bullets.length} facts from earlier turns.]`,
|
|
178
|
+
...log.bullets,
|
|
179
|
+
].join('\n'),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Tiered counterpart to compactor.ts's compactHistory. Same trigger contract
|
|
184
|
+
* (mutates `history` in place, fires on the same escalating threshold) but
|
|
185
|
+
* async — the middle-compression bullet pass is an LLM call on the cheap
|
|
186
|
+
* summary model.
|
|
187
|
+
*
|
|
188
|
+
* `extras` is accepted for call-site symmetry with compactHistory but
|
|
189
|
+
* intentionally unused here: affectHint/executiveDigest are transient
|
|
190
|
+
* per-call advisories, not historical facts, so they don't belong in an
|
|
191
|
+
* append-only fact log.
|
|
192
|
+
*/
|
|
193
|
+
async function compactHistoryTiered(history, totalTokens, model, sessionPath,
|
|
194
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
195
|
+
extras) {
|
|
196
|
+
const log = loadFactLog(sessionPath, history);
|
|
197
|
+
const window = (0, factory_js_1.getContextWindow)(model) ?? compactor_js_1.DEFAULT_WINDOW;
|
|
198
|
+
const threshold = Math.floor(window * (0, compactor_js_1.thresholdRatio)(log.compactionCount));
|
|
199
|
+
if (totalTokens < threshold)
|
|
200
|
+
return { compacted: false };
|
|
201
|
+
if (history.length <= 3)
|
|
202
|
+
return { compacted: false };
|
|
203
|
+
const keepFrom = (0, compactor_js_1.computeTailBoundary)(history, window);
|
|
204
|
+
const middle = history.slice(1, keepFrom);
|
|
205
|
+
// The existing fact-log placeholder (if any) sits at the front of `middle`
|
|
206
|
+
// after a prior pass — its content is already captured in `log`, so it's
|
|
207
|
+
// dropped rather than re-summarized (that's the incremental guarantee).
|
|
208
|
+
const newTurns = middle.filter(msg => !isFactLogMessage(msg));
|
|
209
|
+
if (newTurns.length === 0)
|
|
210
|
+
return { compacted: false };
|
|
211
|
+
const newBullets = await summarizeTurns(newTurns, model);
|
|
212
|
+
const updatedLog = {
|
|
213
|
+
compactionCount: log.compactionCount + 1,
|
|
214
|
+
bullets: [...log.bullets, ...newBullets],
|
|
215
|
+
};
|
|
216
|
+
saveFactLog(sessionPath, history, updatedLog);
|
|
217
|
+
const placeholder = renderFactLog(updatedLog);
|
|
218
|
+
const preserved = [history[0], placeholder, ...history.slice(keepFrom)];
|
|
219
|
+
history.length = 0;
|
|
220
|
+
for (const msg of preserved)
|
|
221
|
+
history.push(msg);
|
|
222
|
+
const afterTokens = (0, compactor_js_1.countText)(placeholder.content) + preserved.slice(2).reduce((sum, m) => sum + (0, compactor_js_1.countMessage)(m), 0) + (0, compactor_js_1.countMessage)(history[0]);
|
|
223
|
+
return {
|
|
224
|
+
compacted: true,
|
|
225
|
+
metrics: {
|
|
226
|
+
strategy: 'tiered',
|
|
227
|
+
beforeTokens: totalTokens,
|
|
228
|
+
afterTokens,
|
|
229
|
+
compactionCount: updatedLog.compactionCount,
|
|
230
|
+
newBullets: newBullets.length,
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=tiered-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiered-context.js","sourceRoot":"","sources":["../../src/agent/tiered-context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,0DAEC;AAwDD,kDAOC;AA8ED,oDAgDC;AA3OD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,uCAAyB;AACzB,2CAA6B;AAE7B,wDAA2E;AAC3E,2CAAmD;AACnD,iDAQwB;AAExB,+EAA+E;AAC/E,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,SAAgB,uBAAuB;IACrC,OAAO,IAAA,eAAM,EAAC,uBAAuB,CAAC,KAAK,QAAQ,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAmB;IAC3C,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC7E,CAAC;AAUD,MAAM,SAAS,GAAY,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAE/D;;sEAEsE;AACtE,MAAM,UAAU,GAAG,IAAI,OAAO,EAA6B,CAAC;AAE5D,SAAS,WAAW,CAAC,WAAmB;IACtC,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,WAA+B,EAAE,OAAyB;IAC7E,IAAI,CAAC,WAAW;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,WAA+B,EAAE,OAAyB,EAAE,GAAY;IAC3F,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,4BAA4B,CAAC,CAAC;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,IAAA,kBAAS,EAAC,kBAAkB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAC;IAC/C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,IAAI,oBAA0E,CAAC;AAE/E,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,oBAAoB,EAAE,KAAK,KAAK,KAAK;QAAE,OAAO,oBAAoB,CAAC,QAAQ,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAA,2BAAc,EAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,oBAAoB,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,4DAA4D;IAC5D,6FAA6F;IAC7F,uFAAuF;IACvF,8FAA8F;IAC9F,+EAA+E;CAChF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;+EAC+E;AAC/E,SAAS,UAAU,CAAC,GAAmB;IACrC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,SAAS,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM;gBACjC,CAAC,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvG,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC;QAC/E,CAAC;QACD,KAAK,aAAa;YAChB,OAAO,GAAG,CAAC,OAAO;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;iBAC/F,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAuB,EAAE,SAAiB;IACtE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3G,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,sDAAsD,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,GAAG,eAAe,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,6BAA6B;YACtE,GAAG,GAAG,CAAC,OAAO;SACf,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAUD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,oBAAoB,CACxC,OAAyB,EACzB,WAAmB,EACnB,KAAa,EACb,WAA+B;AAC/B,6DAA6D;AAC7D,MAAyB;IAEzB,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAA,6BAAgB,EAAC,KAAK,CAAC,IAAI,6BAAc,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAE3E,IAAI,WAAW,GAAG,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,IAAA,kCAAmB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAEvD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzD,MAAM,UAAU,GAAY;QAC1B,eAAe,EAAE,GAAG,CAAC,eAAe,GAAG,CAAC;QACxC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;KACzC,CAAC;IACF,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,IAAA,wBAAS,EAAC,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAA,2BAAY,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAA,2BAAY,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhJ,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE;YACP,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,WAAW;YACzB,WAAW;YACX,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,UAAU,EAAE,UAAU,CAAC,MAAM;SAC9B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -60,6 +60,8 @@ exports.PALETTE_COMMANDS = [
|
|
|
60
60
|
{ id: ':q', label: 'Quit', description: 'Exit Aura', category: 'System' },
|
|
61
61
|
{ id: ':context', label: 'Context health', description: 'Token usage dashboard', category: 'System' },
|
|
62
62
|
{ id: ':doctor', label: 'Doctor', description: 'Run health checks', category: 'System' },
|
|
63
|
+
{ id: ':compact', label: 'Force compact', description: 'Manual context compaction (alias: :compress)', category: 'System' },
|
|
64
|
+
{ id: ':compress', label: 'Force compress', description: 'Manual context compaction (alias: :compact)', category: 'System' },
|
|
63
65
|
];
|
|
64
66
|
/**
|
|
65
67
|
* Fuzzy-match a query against a command's label + id.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../src/cli/command-palette.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../src/cli/command-palette.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/diamond.d.ts
CHANGED
|
@@ -35,9 +35,7 @@ export declare function gradientStopFor(row: number, total: number): chalk.Chalk
|
|
|
35
35
|
* shading is applied at render time by styleGemRow, not baked in here.
|
|
36
36
|
*/
|
|
37
37
|
export declare const GEM: string[];
|
|
38
|
-
|
|
39
|
-
export declare const GEM_WIDTH: number;
|
|
40
|
-
/** The gem's styled Nth row, or null if out of range — for compositing beside other columns. */
|
|
38
|
+
export declare const GEM_WIDTH = 0;
|
|
41
39
|
export declare function gemRow(i: number): string | null;
|
|
42
40
|
export interface BannerInfo {
|
|
43
41
|
version: string;
|
package/dist/cli/diamond.js
CHANGED
|
@@ -111,32 +111,21 @@ function gradientStopFor(row, total) {
|
|
|
111
111
|
* so the point renders cleanly on every terminal font; per-row 3D facet
|
|
112
112
|
* shading is applied at render time by styleGemRow, not baked in here.
|
|
113
113
|
*/
|
|
114
|
-
exports.GEM = [
|
|
115
|
-
|
|
116
|
-
' ████████ ', // crown
|
|
117
|
-
' ██████████ ', // crown → girdle
|
|
118
|
-
'████████████', // girdle (widest)
|
|
119
|
-
' █████████ ', // pavilion
|
|
120
|
-
' ███████ ', // pavilion
|
|
121
|
-
' █████ ', // pavilion
|
|
122
|
-
' ███ ', // pavilion, narrowing to the point
|
|
123
|
-
' █ ', // point
|
|
124
|
-
];
|
|
125
|
-
/** Column width of one gem row (all rows share the same padded width). */
|
|
126
|
-
exports.GEM_WIDTH = exports.GEM[0].length;
|
|
127
|
-
/** The gem's styled Nth row, or null if out of range — for compositing beside other columns. */
|
|
114
|
+
exports.GEM = [];
|
|
115
|
+
exports.GEM_WIDTH = 0;
|
|
128
116
|
function gemRow(i) {
|
|
129
|
-
|
|
130
|
-
return row === undefined ? null : styleGemRow(row, FACET_SHADES);
|
|
117
|
+
return null;
|
|
131
118
|
}
|
|
132
119
|
const LOGO = [
|
|
133
|
-
'
|
|
134
|
-
'
|
|
135
|
-
'
|
|
136
|
-
'
|
|
137
|
-
'
|
|
138
|
-
'
|
|
139
|
-
'
|
|
120
|
+
' ██▓▒▒ ',
|
|
121
|
+
' ███▓▒▒▒ ',
|
|
122
|
+
' █████╗ ██╗ ██╗██████╗ █████╗ ████▓▒▒▒▒ ██████╗ ██████╗ ██████╗ ███████╗',
|
|
123
|
+
'██╔══██╗██║ ██║██╔══██╗██╔══██╗ █████▓▒▒▒▒▒ ██╔════╝██╔═══██╗██╔══██╗██╔════╝',
|
|
124
|
+
'███████║██║ ██║██████╔╝███████║ ████▓▒▒▒▒ ██║ ██║ ██║██║ ██║█████╗ ',
|
|
125
|
+
'██╔══██║██║ ██║██╔══██╗██╔══██║ ███▓▒▒▒ ██║ ██║ ██║██║ ██║██╔══╝ ',
|
|
126
|
+
'██║ ██║╚██████╔╝██║ ██║██║ ██║ ██▓▒▒ ╚██████╗╚██████╔╝██████╔╝███████╗',
|
|
127
|
+
'╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ █▓▒ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝',
|
|
128
|
+
' ▓ '
|
|
140
129
|
];
|
|
141
130
|
// Shade zones for 3D faceted diamond: [leftFace, midFace, shadowFace].
|
|
142
131
|
// Light comes from top-left, so left face is brightest.
|
|
@@ -150,7 +139,7 @@ function clearToTop() {
|
|
|
150
139
|
}
|
|
151
140
|
/** A ruby-gradient horizontal rule spanning the terminal width (capped). */
|
|
152
141
|
function rule() {
|
|
153
|
-
const width = Math.
|
|
142
|
+
const width = Math.max(10, process.stdout.columns ?? 80);
|
|
154
143
|
return gradient('─'.repeat(width));
|
|
155
144
|
}
|
|
156
145
|
/**
|
|
@@ -185,6 +174,37 @@ function gemBlockLines(indent) {
|
|
|
185
174
|
function renderGemBlock(indent) {
|
|
186
175
|
gemBlockLines(indent).forEach(line => console.log(line));
|
|
187
176
|
}
|
|
177
|
+
const logoColors = ['#ff8c00', '#ff1493', '#dc143c', '#6d1322'];
|
|
178
|
+
function hexToRgb(hex) {
|
|
179
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
180
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
181
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
182
|
+
return { r, g, b };
|
|
183
|
+
}
|
|
184
|
+
function styleLogoRow(str) {
|
|
185
|
+
if (str.length === 0)
|
|
186
|
+
return str;
|
|
187
|
+
let out = '';
|
|
188
|
+
const len = str.length;
|
|
189
|
+
for (let i = 0; i < len; i++) {
|
|
190
|
+
const progress = i / Math.max(1, len - 1);
|
|
191
|
+
const scaled = progress * (logoColors.length - 1);
|
|
192
|
+
const index = Math.floor(scaled);
|
|
193
|
+
const factor = scaled - index;
|
|
194
|
+
if (index >= logoColors.length - 1) {
|
|
195
|
+
out += chalk_1.default.hex(logoColors[logoColors.length - 1]).bold(str[i]);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
const c1 = hexToRgb(logoColors[index]);
|
|
199
|
+
const c2 = hexToRgb(logoColors[index + 1]);
|
|
200
|
+
const r = Math.round(c1.r + (c2.r - c1.r) * factor);
|
|
201
|
+
const g = Math.round(c1.g + (c2.g - c1.g) * factor);
|
|
202
|
+
const b = Math.round(c1.b + (c2.b - c1.b) * factor);
|
|
203
|
+
out += chalk_1.default.rgb(r, g, b).bold(str[i]);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|
|
188
208
|
/**
|
|
189
209
|
* The banner's fully-styled lines, one string per terminal row:
|
|
190
210
|
* - Brilliant-cut gem centered above the wordmark, each row faceted
|
|
@@ -196,12 +216,15 @@ function renderGemBlock(indent) {
|
|
|
196
216
|
* from scroll mode) — the alt screen has no scrollback to recover it from.
|
|
197
217
|
*/
|
|
198
218
|
function buildBannerLines(info) {
|
|
199
|
-
|
|
200
|
-
const
|
|
201
|
-
|
|
219
|
+
// Push 3 empty strings to move the logo down by 2 extra rows from the top edge
|
|
220
|
+
const lines = ['', '', ''];
|
|
221
|
+
if (exports.GEM && exports.GEM.length > 0) {
|
|
222
|
+
const gemIndent = Math.floor((LOGO[0].length - exports.GEM[0].length) / 2);
|
|
223
|
+
lines.push(...gemBlockLines(gemIndent), '');
|
|
224
|
+
}
|
|
202
225
|
LOGO.forEach(row => {
|
|
203
|
-
|
|
204
|
-
lines.push(
|
|
226
|
+
// Add 2 spaces for left padding
|
|
227
|
+
lines.push(' ' + styleLogoRow(row));
|
|
205
228
|
});
|
|
206
229
|
lines.push('');
|
|
207
230
|
const meta = [
|
package/dist/cli/diamond.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diamond.js","sourceRoot":"","sources":["../../src/cli/diamond.ts"],"names":[],"mappings":";;;;;;AAwDA,4BAYC;AAGD,oCAYC;AAOD,0CAGC;
|
|
1
|
+
{"version":3,"file":"diamond.js","sourceRoot":"","sources":["../../src/cli/diamond.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/help-data.js
CHANGED
|
@@ -62,6 +62,7 @@ exports.HELP_TEXT = [
|
|
|
62
62
|
' :approve off Re-enable confirmation for destructive commands',
|
|
63
63
|
'',
|
|
64
64
|
' ── Context / Stats ──────────────────────────────',
|
|
65
|
+
' :compact, :compress Force compaction now (reuses auto-compaction logic)',
|
|
65
66
|
' :context Show loaded project context',
|
|
66
67
|
' :graph Show codebase knowledge graph summary',
|
|
67
68
|
' :graph refresh Reload graph from graphify-out/graph.json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-data.js","sourceRoot":"","sources":["../../src/cli/help-data.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,SAAS,GAAG;IACvB,EAAE;IACF,qDAAqD;IACrD,gDAAgD;IAChD,mDAAmD;IACnD,qDAAqD;IACrD,2DAA2D;IAC3D,+DAA+D;IAC/D,8DAA8D;IAC9D,uEAAuE;IACvE,yDAAyD;IACzD,kDAAkD;IAClD,EAAE;IACF,qDAAqD;IACrD,sDAAsD;IACtD,sDAAsD;IACtD,qDAAqD;IACrD,6EAA6E;IAC7E,2DAA2D;IAC3D,EAAE;IACF,sDAAsD;IACtD,oDAAoD;IACpD,8DAA8D;IAC9D,gCAAgC;IAChC,2DAA2D;IAC3D,uDAAuD;IACvD,6CAA6C;IAC7C,kDAAkD;IAClD,iDAAiD;IACjD,0CAA0C;IAC1C,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,qEAAqE;IACrE,EAAE;IACF,sDAAsD;IACtD,0EAA0E;IAC1E,gFAAgF;IAChF,oEAAoE;IACpE,4EAA4E;IAC5E,gFAAgF;IAChF,4EAA4E;IAC5E,sEAAsE;IACtE,gDAAgD;IAChD,iFAAiF;IACjF,EAAE;IACF,sDAAsD;IACtD,iFAAiF;IACjF,EAAE;IACF,sDAAsD;IACtD,8EAA8E;IAC9E,2DAA2D;IAC3D,2EAA2E;IAC3E,EAAE;IACF,qDAAqD;IACrD,uDAAuD;IACvD,iEAAiE;IACjE,qEAAqE;IACrE,sDAAsD;IACtD,kEAAkE;IAClE,kFAAkF;IAClF,yDAAyD;IACzD,gEAAgE;IAChE,+EAA+E;IAC/E,wDAAwD;IACxD,EAAE;IACF,qDAAqD;IACrD,gCAAgC;IAChC,EAAE;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"help-data.js","sourceRoot":"","sources":["../../src/cli/help-data.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,SAAS,GAAG;IACvB,EAAE;IACF,qDAAqD;IACrD,gDAAgD;IAChD,mDAAmD;IACnD,qDAAqD;IACrD,2DAA2D;IAC3D,+DAA+D;IAC/D,8DAA8D;IAC9D,uEAAuE;IACvE,yDAAyD;IACzD,kDAAkD;IAClD,EAAE;IACF,qDAAqD;IACrD,sDAAsD;IACtD,sDAAsD;IACtD,qDAAqD;IACrD,6EAA6E;IAC7E,2DAA2D;IAC3D,EAAE;IACF,sDAAsD;IACtD,oDAAoD;IACpD,8DAA8D;IAC9D,gCAAgC;IAChC,2DAA2D;IAC3D,uDAAuD;IACvD,6CAA6C;IAC7C,kDAAkD;IAClD,iDAAiD;IACjD,0CAA0C;IAC1C,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,qEAAqE;IACrE,EAAE;IACF,sDAAsD;IACtD,0EAA0E;IAC1E,gFAAgF;IAChF,oEAAoE;IACpE,4EAA4E;IAC5E,gFAAgF;IAChF,4EAA4E;IAC5E,sEAAsE;IACtE,gDAAgD;IAChD,iFAAiF;IACjF,EAAE;IACF,sDAAsD;IACtD,iFAAiF;IACjF,EAAE;IACF,sDAAsD;IACtD,8EAA8E;IAC9E,2DAA2D;IAC3D,2EAA2E;IAC3E,EAAE;IACF,qDAAqD;IACrD,+EAA+E;IAC/E,uDAAuD;IACvD,iEAAiE;IACjE,qEAAqE;IACrE,sDAAsD;IACtD,kEAAkE;IAClE,kFAAkF;IAClF,yDAAyD;IACzD,gEAAgE;IAChE,+EAA+E;IAC/E,wDAAwD;IACxD,EAAE;IACF,qDAAqD;IACrD,gCAAgC;IAChC,EAAE;CACH,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1663,6 +1663,33 @@ async function handleReplCommand(input, c) {
|
|
|
1663
1663
|
return { handled: true };
|
|
1664
1664
|
}
|
|
1665
1665
|
// ── Model / API commands ─────────────────────────────────────────────────
|
|
1666
|
+
if (input === ':compact' || input === ':compress') {
|
|
1667
|
+
const { compactHistory, estimateContextTokens, getRecapGeneration } = await Promise.resolve().then(() => __importStar(require('../agent/compactor.js')));
|
|
1668
|
+
const { getContextWindow } = await Promise.resolve().then(() => __importStar(require('../providers/factory.js')));
|
|
1669
|
+
const history = c.chatState.activeChatHistory;
|
|
1670
|
+
if (history.length <= 1) {
|
|
1671
|
+
console.log(chalk_1.default.hex('#d4903a')('\n Nothing to compact — history is empty or has only the task.\n'));
|
|
1672
|
+
return { handled: true };
|
|
1673
|
+
}
|
|
1674
|
+
const model = c.providerConfig.model;
|
|
1675
|
+
const beforeTokens = estimateContextTokens('', history);
|
|
1676
|
+
const window = getContextWindow(model) ?? 128_000;
|
|
1677
|
+
const generation = getRecapGeneration(history);
|
|
1678
|
+
// Force compaction by passing totalTokens = Infinity so the threshold check is bypassed.
|
|
1679
|
+
const compacted = compactHistory(history, Infinity, model);
|
|
1680
|
+
if (!compacted) {
|
|
1681
|
+
console.log(chalk_1.default.hex('#d4903a')('\n Compaction had no effect — history is already minimal.\n'));
|
|
1682
|
+
return { handled: true };
|
|
1683
|
+
}
|
|
1684
|
+
const afterTokens = estimateContextTokens('', history);
|
|
1685
|
+
const saved = beforeTokens > 0 ? ((1 - afterTokens / beforeTokens) * 100).toFixed(0) : '0';
|
|
1686
|
+
const newGen = getRecapGeneration(history);
|
|
1687
|
+
console.log(chalk_1.default.hex('#5a9e6e')(`\n ✓ Context compacted: ${beforeTokens.toLocaleString()} → ${afterTokens.toLocaleString()} tokens ` +
|
|
1688
|
+
chalk_1.default.hex('#5a9e6e')(`(-${saved}%)`) +
|
|
1689
|
+
` · gen ${generation}→${newGen} · window ${(window / 1000).toFixed(0)}k\n`));
|
|
1690
|
+
c.healthTracker.recordCompaction(beforeTokens, afterTokens, newGen);
|
|
1691
|
+
return { handled: true, newHistory: [...history] };
|
|
1692
|
+
}
|
|
1666
1693
|
if (input === ':context') {
|
|
1667
1694
|
console.log(chalk_1.default.hex(diamond_js_1.TEXT_DIM_HEX)(`\n Project: ${c.ctx.name} · ${c.ctx.language} · ${c.ctx.framework}`));
|
|
1668
1695
|
console.log(chalk_1.default.hex(diamond_js_1.FAINT_HEX)(` Root: ${c.ctx.root}\n`));
|