atomix-cli 0.1.0 → 1.1.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.
package/dist/repl.js DELETED
@@ -1,385 +0,0 @@
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.startRepl = startRepl;
37
- /**
38
- * atomix 交互 REPL(M0:readline 版;M1 迁移 React Ink)
39
- *
40
- * SemaCore 单目录模式:agentDataDir 缺省 = workingDir = cwd,
41
- * 人设即项目的 AGENT.md / CLAUDE.md(dev-plan §1.1)。
42
- *
43
- * 事件 → 渲染映射见 dev-plan §4。
44
- */
45
- const readline = __importStar(require("readline"));
46
- const sema_core_1 = require("sema-core");
47
- const tools_1 = require("./tools");
48
- const paths_1 = require("./paths");
49
- const quiet_1 = require("./quiet");
50
- const modelWizard_1 = require("./modelWizard");
51
- const ui_1 = require("./ui");
52
- const MAIN = 'main';
53
- const VERSION = '0.1.0';
54
- async function startRepl(cwd) {
55
- const core = new sema_core_1.SemaCore({
56
- workingDir: cwd,
57
- logLevel: (0, quiet_1.atomixLogLevel)(),
58
- stream: true,
59
- useTools: tools_1.ATOMIX_TOOLS,
60
- skipFileEditPermission: false, // 交互模式下文件编辑必须过权限卡
61
- systemPrompt: 'You are Atomix, a CLI coding agent bound to the current working directory.',
62
- });
63
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
64
- let rlClosed = false;
65
- let shuttingDown = false;
66
- // stdin EOF(管道输入耗尽 / Ctrl+D)→ 优雅退出;已关闭后 ask 挂起等待 shutdown 收尾
67
- rl.on('close', () => {
68
- rlClosed = true;
69
- if (!shuttingDown)
70
- void shutdown();
71
- });
72
- // type-ahead 缓冲:没有 pending question 时(会话初始化/处理中)用户敲的行
73
- // 会走 'line' 事件而非 question 回调,缓冲起来供下一次 ask 消费,避免静默丢失
74
- const typeAhead = [];
75
- rl.on('line', (l) => typeAhead.push(l));
76
- const ask = (q) => new Promise((resolve) => {
77
- if (rlClosed)
78
- return; // 永不 resolve,进程随 shutdown 退出
79
- const buffered = typeAhead.shift();
80
- if (buffered !== undefined) {
81
- process.stdout.write(q + buffered + '\n');
82
- resolve(buffered);
83
- return;
84
- }
85
- rl.question(q, resolve);
86
- });
87
- // ===== 会话状态 =====
88
- let processing = false;
89
- let prompting = false;
90
- let thinkingShown = false;
91
- let thinkingEnabled = false;
92
- let mode = 'Agent';
93
- let sessionId = '';
94
- let lastUsage = null;
95
- // ===== 中断:Esc 中断当前轮,Ctrl+C 处理中=中断 / 空闲=退出 =====
96
- readline.emitKeypressEvents(process.stdin);
97
- if (process.stdin.isTTY)
98
- process.stdin.setRawMode(true);
99
- process.stdin.on('keypress', (_str, key) => {
100
- if (key?.name === 'escape' && processing)
101
- core.interruptSession();
102
- });
103
- rl.on('SIGINT', () => {
104
- if (processing)
105
- core.interruptSession();
106
- else
107
- void shutdown();
108
- });
109
- async function shutdown() {
110
- shuttingDown = true;
111
- console.log((0, ui_1.gray)('\nbye'));
112
- if (!rlClosed)
113
- rl.close();
114
- try {
115
- await core.dispose();
116
- }
117
- catch {
118
- // 一次性资源,失败可忽略
119
- }
120
- process.exit(0);
121
- }
122
- // ===== 事件 → 渲染 =====
123
- core.on('state:update', ({ state }) => {
124
- processing = state === 'processing';
125
- if (state === 'idle')
126
- setTimeout(() => void promptLoop(), 50);
127
- });
128
- core.on('message:thinking:chunk', ({ delta }) => {
129
- if (!thinkingShown) {
130
- process.stdout.write((0, ui_1.gray)('\n✻ thinking '));
131
- thinkingShown = true;
132
- }
133
- process.stdout.write((0, ui_1.dim)((0, ui_1.gray)(delta || '')));
134
- });
135
- core.on('message:text:chunk', ({ delta }) => {
136
- if (thinkingShown) {
137
- process.stdout.write('\n');
138
- thinkingShown = false;
139
- }
140
- process.stdout.write(delta || '');
141
- });
142
- core.on('message:complete', (d) => {
143
- if (d.agentId !== MAIN)
144
- return;
145
- thinkingShown = false;
146
- process.stdout.write('\n');
147
- });
148
- core.on('tool:execution:complete', (d) => {
149
- const sub = d.agentId !== MAIN ? `[${d.agentId.slice(0, 6)}] ` : '';
150
- console.log((0, ui_1.gray)((0, ui_1.truncate)(` ✓ ${sub}${d.title}${d.summary ? ' — ' + d.summary : ''}`, 160)));
151
- });
152
- core.on('tool:execution:error', (d) => {
153
- console.log((0, ui_1.red)((0, ui_1.truncate)(` ✗ ${d.toolName}: ${d.content}`, 300)));
154
- });
155
- // 权限卡:Edit/Write 的 content 是结构化 patch,按 diff 着色渲染
156
- core.on('tool:permission:request', async (d) => {
157
- console.log('\n' + (0, ui_1.yellow)(`⚠ 权限请求 · ${d.toolName}`) + (d.title ? ` ${(0, ui_1.bold)(d.title)}` : ''));
158
- console.log((0, ui_1.renderPermissionContent)(d.content));
159
- const ans = (await ask((0, ui_1.yellow)(' [y=同意一次 / a=项目内始终允许 / n=拒绝 / 其他文本=反馈]: '))).trim();
160
- const map = { '': 'agree', y: 'agree', yes: 'agree', a: 'allow', n: 'refuse', no: 'refuse' };
161
- core.respondToToolPermission({ toolName: d.toolName, selected: map[ans.toLowerCase()] ?? ans });
162
- });
163
- // AskUser:单/多选选择器 + 自由文本
164
- core.on('ask:question:request', async (d) => {
165
- const answers = {};
166
- for (const q of d.questions) {
167
- console.log('\n' + (0, ui_1.cyan)(`? ${q.header ? `[${q.header}] ` : ''}${q.question}`));
168
- q.options.forEach((o, i) => console.log(` ${i + 1}. ${o.label}` + (o.description ? (0, ui_1.gray)(' — ' + o.description) : '')));
169
- const hint = q.multiSelect ? '序号(逗号多选)或自由文本' : '序号或自由文本';
170
- const raw = (await ask((0, ui_1.cyan)(` 回答 [${hint}]: `))).trim();
171
- const picks = raw
172
- .split(',')
173
- .map((s) => s.trim())
174
- .filter(Boolean)
175
- .map((p) => {
176
- const n = Number(p);
177
- return Number.isInteger(n) && n >= 1 && n <= q.options.length ? q.options[n - 1].label : p;
178
- });
179
- answers[q.question] = picks.join(',') || raw;
180
- }
181
- core.respondToAskQuestion({ agentId: d.agentId, answers });
182
- });
183
- // FormUI:逐字段问答式降级渲染(editable_table 保留默认行)
184
- core.on('form:request', async (d) => {
185
- console.log('\n' + (0, ui_1.cyan)(`▤ 表单 · ${d.title}`));
186
- const values = {};
187
- for (const f of d.fields) {
188
- if (f.type === 'static_text') {
189
- console.log((0, ui_1.gray)(' ' + f.text));
190
- continue;
191
- }
192
- const label = `${f.label}${f.required ? '*' : ''}`;
193
- switch (f.type) {
194
- case 'select':
195
- case 'radio': {
196
- f.options.forEach((o, i) => console.log(` ${i + 1}. ${o.label}`));
197
- const raw = (await ask((0, ui_1.cyan)(` ${label} [序号]: `))).trim();
198
- const n = Number(raw);
199
- values[f.key] =
200
- Number.isInteger(n) && n >= 1 && n <= f.options.length ? f.options[n - 1].value : (f.default ?? raw);
201
- break;
202
- }
203
- case 'multiselect': {
204
- f.options.forEach((o, i) => console.log(` ${i + 1}. ${o.label}`));
205
- const raw = (await ask((0, ui_1.cyan)(` ${label} [序号,逗号多选]: `))).trim();
206
- values[f.key] = raw
207
- .split(',')
208
- .map((s) => Number(s.trim()))
209
- .filter((n) => Number.isInteger(n) && n >= 1 && n <= f.options.length)
210
- .map((n) => f.options[n - 1].value);
211
- break;
212
- }
213
- case 'checkbox': {
214
- const raw = (await ask((0, ui_1.cyan)(` ${label} [y/n,默认 ${f.default ? 'y' : 'n'}]: `))).trim().toLowerCase();
215
- values[f.key] = raw ? raw === 'y' || raw === 'yes' : !!f.default;
216
- break;
217
- }
218
- case 'number':
219
- case 'slider': {
220
- const raw = (await ask((0, ui_1.cyan)(` ${label} [数字${f.default !== undefined ? `,默认 ${f.default}` : ''}]: `))).trim();
221
- values[f.key] = raw === '' ? f.default : Number(raw);
222
- break;
223
- }
224
- case 'editable_table': {
225
- console.log((0, ui_1.gray)(' (终端暂不支持表格编辑,保留默认行)'));
226
- values[f.key] = f.rows ?? [];
227
- break;
228
- }
229
- default: {
230
- // text / textarea / date
231
- const def = f.default;
232
- const raw = await ask((0, ui_1.cyan)(` ${label}${def ? ` [默认 ${def}]` : ''}: `));
233
- values[f.key] = raw.trim() === '' ? (def ?? '') : raw;
234
- }
235
- }
236
- }
237
- core.respondToForm({ agentId: d.agentId, values, submitted: true });
238
- });
239
- // Plan 退出确认
240
- core.on('plan:exit:request', async (d) => {
241
- console.log('\n' + (0, ui_1.magenta)(`▣ 计划就绪 · ${d.planFilePath}`));
242
- console.log((0, ui_1.gray)((0, ui_1.truncate)(d.planContent, 3000)));
243
- console.log(` 1. ${d.options.startEditing}\n 2. ${d.options.clearContextAndStart}`);
244
- const raw = (await ask((0, ui_1.magenta)(' 选择 [1/2]: '))).trim();
245
- core.respondToPlanExit({ agentId: d.agentId, selected: raw === '2' ? 'clearContextAndStart' : 'startEditing' });
246
- mode = 'Agent';
247
- });
248
- core.on('todos:update', (todos) => {
249
- if (!todos?.length)
250
- return;
251
- console.log((0, ui_1.gray)(' ┄ todos'));
252
- for (const t of todos) {
253
- const mark = t.status === 'completed' ? (0, ui_1.green)('☑') : t.status === 'in_progress' ? (0, ui_1.yellow)('◐') : (0, ui_1.gray)('☐');
254
- console.log(` ${mark} ${t.status === 'in_progress' ? t.activeForm : t.content}`);
255
- }
256
- });
257
- core.on('conversation:usage', (d) => {
258
- lastUsage = d.usage;
259
- });
260
- core.on('compact:start', (d) => {
261
- console.log((0, ui_1.gray)(`\n⟳ 上下文压缩中…(${d.messageCount} 条消息)`));
262
- });
263
- core.on('compact:exec', (d) => {
264
- if (d.errMsg)
265
- console.log((0, ui_1.red)(`⟳ 压缩失败:${d.errMsg}`));
266
- else
267
- console.log((0, ui_1.gray)(`⟳ 压缩完成 ${d.tokenBefore} → ${d.tokenCompact} tokens(压缩至 ${Math.round(d.compactRate * 100)}%)`));
268
- });
269
- core.on('task:agent:start', (d) => {
270
- console.log((0, ui_1.gray)(` ⧉ 子代理 ${d.subagent_type} 启动 — ${d.description}`));
271
- });
272
- core.on('task:agent:end', (d) => {
273
- console.log((0, ui_1.gray)(` ⧉ 子代理结束 [${d.status}] ${d.content}`));
274
- });
275
- core.on('session:interrupted', (d) => {
276
- if (d.agentId === MAIN)
277
- console.log((0, ui_1.yellow)('\n⏹ 已中断'));
278
- });
279
- core.on('session:error', (d) => {
280
- console.log((0, ui_1.red)(`\n✗ 会话错误 [${d.type}] ${d.error?.message ?? d.error?.code ?? ''}`));
281
- });
282
- // ===== 输入循环 =====
283
- function promptStr() {
284
- const usage = (0, ui_1.usageIndicator)(lastUsage);
285
- const planTag = mode === 'Plan' ? (0, ui_1.magenta)(' [plan]') : '';
286
- return `\n${(0, ui_1.cyan)('atomix')}${usage ? ' ' + usage : ''}${planTag} ${(0, ui_1.gray)('❯')} `;
287
- }
288
- async function promptLoop() {
289
- if (prompting || processing)
290
- return;
291
- prompting = true;
292
- const input = (await ask(promptStr())).trim();
293
- prompting = false;
294
- await handleInput(input);
295
- }
296
- function printHelp() {
297
- console.log((0, ui_1.gray)([
298
- ' /help 本帮助',
299
- ' /model [子命令] 模型配置(list | add | use | quick | del)',
300
- ' /status 会话状态(模型 / context 用量 / 模式)',
301
- ' /tools 工具列表',
302
- ' /thinking [on|off] 思考模式开关',
303
- ' /plan /agent 切换 Plan / Agent 模式',
304
- ' /clear /compact 清空 / 压缩上下文(core 系统命令)',
305
- ' /exit 退出',
306
- ' @文件路径 引用文件;其余输入直接发给 agent;Esc 中断当前轮',
307
- ].join('\n')));
308
- }
309
- async function handleInput(input) {
310
- if (!input)
311
- return void promptLoop();
312
- const [cmd, ...rest] = input.split(/\s+/);
313
- switch (cmd) {
314
- case '/exit':
315
- case '/quit':
316
- case '/q':
317
- return shutdown();
318
- case '/help':
319
- printHelp();
320
- return void promptLoop();
321
- case '/model':
322
- await (0, modelWizard_1.modelCommand)(core, rest, ask);
323
- return void promptLoop();
324
- case '/status': {
325
- const md = await core.getModelData().catch(() => null);
326
- console.log((0, ui_1.gray)(` session ${sessionId}`));
327
- console.log((0, ui_1.gray)(` cwd ${cwd}`));
328
- console.log((0, ui_1.gray)(` model main=${md?.taskConfig.main ?? '-'} quick=${md?.taskConfig.quick ?? '-'}`));
329
- console.log((0, ui_1.gray)(` context ${lastUsage ? `${lastUsage.useTokens} / ${lastUsage.maxTokens} tokens` : '-'}`));
330
- console.log((0, ui_1.gray)(` mode ${mode} thinking=${thinkingEnabled ? 'on' : 'off'}`));
331
- return void promptLoop();
332
- }
333
- case '/tools': {
334
- core.getToolInfos().forEach((t) => console.log((0, ui_1.gray)(` ${t.status === 'enable' ? '●' : '○'} ${t.name}`)));
335
- return void promptLoop();
336
- }
337
- case '/thinking': {
338
- thinkingEnabled = rest[0] ? rest[0] === 'on' : !thinkingEnabled;
339
- core.updateThinking(thinkingEnabled);
340
- console.log((0, ui_1.gray)(` thinking ${thinkingEnabled ? 'on' : 'off'}`));
341
- return void promptLoop();
342
- }
343
- case '/plan':
344
- mode = 'Plan';
345
- core.updateAgentMode('Plan');
346
- console.log((0, ui_1.magenta)(' 已切换 Plan 模式(只读规划,完成后确认进入编辑)'));
347
- return void promptLoop();
348
- case '/agent':
349
- mode = 'Agent';
350
- core.updateAgentMode('Agent');
351
- console.log((0, ui_1.gray)(' 已切换 Agent 模式'));
352
- return void promptLoop();
353
- default:
354
- // 含 /clear /compact(core 系统命令)与 ~/.atomix/commands、<cwd>/.sema/commands 自定义命令
355
- core.processUserInput(input);
356
- }
357
- }
358
- // ===== 启动 =====
359
- console.log((0, ui_1.bold)('◆ atomix') + (0, ui_1.gray)(` v${VERSION}`));
360
- console.log((0, ui_1.gray)(` cwd ${cwd}`));
361
- console.log((0, ui_1.gray)(` root ${(0, paths_1.getAtomixRoot)()}`));
362
- const ok = await (0, modelWizard_1.ensureModelConfigured)(core, ask);
363
- if (!ok) {
364
- console.log((0, ui_1.red)('未完成模型配置,退出。'));
365
- rl.close();
366
- process.exit(1);
367
- }
368
- const md = await core.getModelData();
369
- console.log((0, ui_1.gray)(` model ${md.taskConfig.main}`));
370
- await new Promise((resolve) => {
371
- core.once('session:ready', (d) => {
372
- sessionId = d.sessionId;
373
- lastUsage = d.usage;
374
- if (d.projectInputHistory?.length) {
375
- // readline history:最近的在前
376
- rl.history = [...d.projectInputHistory].reverse();
377
- }
378
- resolve();
379
- });
380
- void core.createSession();
381
- });
382
- console.log((0, ui_1.gray)(` session ${sessionId} 就绪,/help 查看命令,Esc 中断,Ctrl+C 退出`));
383
- void promptLoop();
384
- }
385
- //# sourceMappingURL=repl.js.map
package/dist/repl.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
package/dist/tools.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ATOMIX_TOOLS = void 0;
4
- /**
5
- * atomix 工具白名单 = sema-core 全部内置工具去掉 LaunchUI。
6
- *
7
- * LaunchUI 是面向 web 工作台(workbench 面板)的展示型工具,终端没有渲染面,
8
- * 直接从白名单排除(dev-plan §4)。FormUI 保留——终端可渲染其大部分字段类型。
9
- *
10
- * 注意:sema-core 无运行时工具注册 API,此列表需与其 getBuiltinTools() 保持同步
11
- * (src/tools/base/tools.ts),升级 vendor 包时检查。
12
- */
13
- exports.ATOMIX_TOOLS = [
14
- 'Bash',
15
- 'Glob',
16
- 'Grep',
17
- 'Read',
18
- 'Write',
19
- 'Edit',
20
- 'TodoWrite',
21
- 'Skill',
22
- 'Task',
23
- 'NotebookEdit',
24
- 'AskUser',
25
- 'FormUI',
26
- 'ToolSearch',
27
- ];
28
- //# sourceMappingURL=tools.js.map
package/dist/tools.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACU,QAAA,YAAY,GAAG;IAC1B,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,MAAM;IACN,cAAc;IACd,SAAS;IACT,QAAQ;IACR,YAAY;CACb,CAAC"}
package/dist/ui.js DELETED
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dim = exports.bold = exports.cyan = exports.magenta = exports.blue = exports.yellow = exports.green = exports.red = exports.gray = void 0;
4
- exports.truncate = truncate;
5
- exports.colorizeDiff = colorizeDiff;
6
- exports.formatContent = formatContent;
7
- exports.renderPermissionContent = renderPermissionContent;
8
- exports.usageIndicator = usageIndicator;
9
- const wrap = (code) => (s) => `\x1b[${code}m${s}\x1b[0m`;
10
- exports.gray = wrap('90');
11
- exports.red = wrap('31');
12
- exports.green = wrap('32');
13
- exports.yellow = wrap('33');
14
- exports.blue = wrap('34');
15
- exports.magenta = wrap('35');
16
- exports.cyan = wrap('36');
17
- exports.bold = wrap('1');
18
- exports.dim = wrap('2');
19
- function truncate(s, n) {
20
- if (s.length <= n)
21
- return s;
22
- return s.slice(0, n) + (0, exports.gray)(` …(+${s.length - n} chars)`);
23
- }
24
- /** 对 diff 风格文本按行着色(+ 绿 / - 红),并统一缩进 */
25
- function colorizeDiff(text, indent = ' ') {
26
- return text
27
- .split('\n')
28
- .map((line) => {
29
- if (line.startsWith('+'))
30
- return indent + (0, exports.green)(line);
31
- if (line.startsWith('-'))
32
- return indent + (0, exports.red)(line);
33
- return indent + (0, exports.gray)(line);
34
- })
35
- .join('\n');
36
- }
37
- /** 权限/工具内容通用格式化:对象转 JSON,超长截断 */
38
- function formatContent(content, maxLen = 3000) {
39
- const text = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
40
- return truncate(text, maxLen);
41
- }
42
- /**
43
- * 权限卡内容渲染:
44
- * - Edit/Write 的 content 是 { type, patch: [{lines}], diffText } 结构 → 按 diff 着色渲染
45
- * - 其他字符串(如 Bash 命令说明,可能含 diff 行)→ 整体 diff 着色
46
- * - 兜底:JSON 展示
47
- */
48
- function renderPermissionContent(content, maxLen = 4000) {
49
- if (typeof content === 'string')
50
- return colorizeDiff(truncate(content, maxLen));
51
- const patch = content.patch;
52
- if (Array.isArray(patch) && patch.length) {
53
- const rendered = patch
54
- .map((hunk) => {
55
- const header = (0, exports.gray)(` @@ ${hunk.oldStart ?? ''} → ${hunk.newStart ?? ''} @@`);
56
- const body = colorizeDiff((hunk.lines ?? []).filter((l) => !l.startsWith('\\')).join('\n'), ' ');
57
- return `${header}\n${body}`;
58
- })
59
- .join('\n');
60
- return truncate(rendered, maxLen);
61
- }
62
- const diffText = content.diffText;
63
- if (typeof diffText === 'string' && diffText.trim())
64
- return colorizeDiff(truncate(diffText, maxLen));
65
- return (0, exports.gray)(' ' + formatContent(content, maxLen).split('\n').join('\n '));
66
- }
67
- /**
68
- * context 用量指示:百分比 + 颜色分档。
69
- * sema-core 自动压缩阈值为 contextLength 的 75%(compact.ts),
70
- * >=70% 红色预警(接近触发压缩),>=45% 黄色,其余灰色。
71
- */
72
- function usageIndicator(usage) {
73
- if (!usage || !usage.maxTokens)
74
- return '';
75
- const pct = Math.min(100, Math.round((usage.useTokens / usage.maxTokens) * 100));
76
- const text = `ctx ${pct}%`;
77
- if (pct >= 70)
78
- return (0, exports.red)(text);
79
- if (pct >= 45)
80
- return (0, exports.yellow)(text);
81
- return (0, exports.gray)(text);
82
- }
83
- //# sourceMappingURL=ui.js.map
package/dist/ui.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}