atomix-cli 0.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 ADDED
@@ -0,0 +1,385 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
package/dist/tools.js ADDED
@@ -0,0 +1,28 @@
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
@@ -0,0 +1 @@
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"}