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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atomix-cli",
3
- "version": "0.1.0",
3
+ "version": "1.1.0",
4
4
  "description": "Working-directory-bound agent CLI built on atomix-core, sharing the semaclaw ecosystem",
5
5
  "license": "MIT",
6
6
  "author": "NingyanZhu <104004333@qq.com>",
@@ -23,6 +23,15 @@
23
23
  "mcp"
24
24
  ],
25
25
  "main": "dist/cli.js",
26
+ "exports": {
27
+ ".": "./dist/cli.js",
28
+ "./session": {
29
+ "types": "./dist/session.d.ts",
30
+ "import": "./dist/session.mjs",
31
+ "require": "./dist/session.js"
32
+ },
33
+ "./package.json": "./package.json"
34
+ },
26
35
  "bin": {
27
36
  "atomix": "./dist/cli.js"
28
37
  },
@@ -34,8 +43,10 @@
34
43
  "node": ">=20"
35
44
  },
36
45
  "scripts": {
37
- "build": "tsc && npm run build:cli && npm run build:tui && chmod +x dist/cli.js",
46
+ "build": "tsc && npm run build:cli && npm run build:tui && npm run build:lib && chmod +x dist/cli.js",
38
47
  "build:cli": "esbuild src/cli.ts --bundle --outfile=dist/cli.js --platform=node --format=cjs --external:@vscode/ripgrep --log-level=warning",
48
+ "build:lib": "esbuild src/sessionEntry.ts --bundle --outfile=dist/session.js --platform=node --format=cjs --external:@vscode/ripgrep --log-level=warning && esbuild src/sessionEntry.ts --bundle --outfile=dist/session.mjs --platform=node --format=esm --external:@vscode/ripgrep --banner:js=\"import { createRequire as __atomixCreateRequire } from 'node:module'; const require = __atomixCreateRequire(import.meta.url);\" --log-level=warning && npm run build:lib:types",
49
+ "build:lib:types": "dts-bundle-generator -o dist/session.d.ts --project tsconfig.json --external-imports atomix-core --no-check --no-banner src/sessionEntry.ts && node scripts/check-session-dts.js",
39
50
  "build:tui": "esbuild src/tui/index.tsx --bundle --outfile=dist/tui.mjs --platform=node --format=esm --external:@vscode/ripgrep --alias:react-devtools-core=./src/tui/devtools-stub.ts --banner:js=\"import { createRequire as __atomixCreateRequire } from 'node:module'; const require = __atomixCreateRequire(import.meta.url);\" --log-level=warning",
40
51
  "typecheck": "tsc",
41
52
  "test": "tsx --test test/*.test.ts",
@@ -51,10 +62,12 @@
51
62
  "@types/react": "^18.3.31",
52
63
  "atomix-core": "file:../atomix-core",
53
64
  "commander": "^12.1.0",
65
+ "dts-bundle-generator": "^9.5.1",
54
66
  "esbuild": "^0.28.1",
55
67
  "ink": "^5.2.1",
56
68
  "react": "^18.3.1",
57
69
  "tsx": "^4.19.0",
58
- "typescript": "^5.6.0"
70
+ "typescript": "^5.6.0",
71
+ "yaml": "^2.9.0"
59
72
  }
60
- }
73
+ }
package/dist/bootstrap.js DELETED
@@ -1,52 +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
- /**
37
- * 进程级隔离引导 —— 必须在任何 sema-core 模块加载前 import(cli.ts 首行)。
38
- *
39
- * sema-core 的所有持久化路径都懒读取 SEMA_ROOT(savePath.ts getSemaRootDir),
40
- * 把它指到 atomix 根目录即可整体隔离:模型配置、会话历史、项目权限白名单、
41
- * 用户级 skills/agents/commands、全局 mcp.json。
42
- * LLM 调用日志默认落 ~/.semaclaw(getLLMLogsDir),用 SEMA_LLM_LOG_ROOT 一并收进来。
43
- */
44
- const fs = __importStar(require("fs"));
45
- const paths_1 = require("./paths");
46
- const root = (0, paths_1.getAtomixRoot)();
47
- fs.mkdirSync(root, { recursive: true });
48
- process.env.SEMA_ROOT = root;
49
- if (!process.env.SEMA_LLM_LOG_ROOT) {
50
- process.env.SEMA_LLM_LOG_ROOT = root;
51
- }
52
- //# sourceMappingURL=bootstrap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,uCAAyB;AACzB,mCAAwC;AAExC,MAAM,IAAI,GAAG,IAAA,qBAAa,GAAE,CAAC;AAC7B,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACvC,CAAC"}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;GAKG;AACH,uBAAqB;AACrB,2CAA6B;AAC7B,mDAAqC;AACrC,yCAAoC;AACpC,mCAA4D;AAE5D,IAAA,yBAAiB,GAAE,CAAC;AAEpB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC3C,MAAM,CAAC,sBAAsB,EAAE,mCAAmC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAsC,EAAE,EAAE;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;IAC7C,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sDAAsD,CAAC;KACnE,QAAQ,CAAC,WAAW,CAAC;KACrB,MAAM,CAAC,KAAK,EAAE,IAAc,EAAE,EAAE;IAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;IAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAA,sBAAc,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACxG,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrF,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7D,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,EAAE,CAAC"}
@@ -1,143 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureModelConfigured = ensureModelConfigured;
4
- exports.addModelWizard = addModelWizard;
5
- exports.modelCommand = modelCommand;
6
- const ui_1 = require("./ui");
7
- /** 模型 profile 标识格式:modelName[provider](sema-core 约定) */
8
- function modelId(modelName, provider) {
9
- return `${modelName}[${provider}]`;
10
- }
11
- /** 确保至少配置了一个模型且 main 指针有效;没有则进入添加向导 */
12
- async function ensureModelConfigured(core, ask) {
13
- const data = await core.getModelData().catch(() => null);
14
- if (data && data.modelList?.length && data.taskConfig?.main)
15
- return true;
16
- console.log((0, ui_1.yellow)('\n尚未配置模型,进入配置向导(配置保存在 ~/.atomix/model.conf)'));
17
- return addModelWizard(core, ask);
18
- }
19
- /** 交互式添加模型 */
20
- async function addModelWizard(core, ask) {
21
- const provider = (await ask(' provider(如 deepseek / openai / anthropic / moonshot): ')).trim() || 'openai';
22
- const baseURL = (await ask(' baseURL: ')).trim();
23
- if (!baseURL) {
24
- console.log((0, ui_1.red)(' baseURL 不能为空'));
25
- return false;
26
- }
27
- const apiKey = (await ask(' apiKey: ')).trim();
28
- if (!apiKey) {
29
- console.log((0, ui_1.red)(' apiKey 不能为空'));
30
- return false;
31
- }
32
- const adaptRaw = (await ask(' 协议适配 adapt [回车=自动推断 / openai / anthropic]: ')).trim();
33
- const adapt = adaptRaw === 'openai' || adaptRaw === 'anthropic' ? adaptRaw : undefined;
34
- // 尝试拉取模型列表辅助选择(失败不阻塞,手动输入即可)
35
- let modelName = '';
36
- try {
37
- const fetched = await core.fetchAvailableModels({ provider, baseURL, apiKey, adapt });
38
- if (fetched.success && fetched.models?.length) {
39
- const list = fetched.models.slice(0, 30);
40
- console.log((0, ui_1.gray)(' 可用模型:'));
41
- list.forEach((m, i) => console.log((0, ui_1.gray)(` ${i + 1}. ${m.id}`)));
42
- const pick = (await ask(' 选择序号或直接输入模型名: ')).trim();
43
- const n = Number(pick);
44
- modelName = Number.isInteger(n) && n >= 1 && n <= list.length ? list[n - 1].id : pick;
45
- }
46
- }
47
- catch {
48
- // 列表拉取失败走手动输入
49
- }
50
- if (!modelName)
51
- modelName = (await ask(' 模型名 modelName: ')).trim();
52
- if (!modelName) {
53
- console.log((0, ui_1.red)(' 模型名不能为空'));
54
- return false;
55
- }
56
- const maxTokens = Number((await ask(' maxTokens [默认 8192]: ')).trim()) || 8192;
57
- const contextLength = Number((await ask(' contextLength [默认 128000]: ')).trim()) || 128000;
58
- console.log((0, ui_1.gray)(' 验证连通性并保存…'));
59
- try {
60
- await core.addModel({ provider, modelName, baseURL, apiKey, maxTokens, contextLength, adapt });
61
- }
62
- catch (e) {
63
- console.log((0, ui_1.red)(` 添加失败:${e instanceof Error ? e.message : String(e)}`));
64
- return false;
65
- }
66
- const id = modelId(modelName, provider);
67
- const data = await core.getModelData();
68
- if (!data.taskConfig?.main || !data.modelList.includes(data.taskConfig.main)) {
69
- // 首个可用模型:main/quick 都指向它
70
- await core.applyTaskModel({ main: id, quick: id });
71
- console.log((0, ui_1.green)(` ✓ 已添加并设为主模型:${id}`));
72
- }
73
- else {
74
- const sw = (await ask(` 设为当前主模型?[y/N]: `)).trim().toLowerCase();
75
- if (sw === 'y' || sw === 'yes')
76
- await core.switchModel(id);
77
- console.log((0, ui_1.green)(` ✓ 已添加:${id}`));
78
- }
79
- return true;
80
- }
81
- async function printModelList(core) {
82
- const data = await core.getModelData().catch(() => null);
83
- if (!data || !data.modelList?.length) {
84
- console.log((0, ui_1.gray)(' (无已配置模型,`/model add` 添加)'));
85
- return;
86
- }
87
- for (const name of data.modelList) {
88
- const marks = [
89
- name === data.taskConfig?.main ? (0, ui_1.green)('main') : '',
90
- name === data.taskConfig?.quick ? (0, ui_1.cyan)('quick') : '',
91
- ]
92
- .filter(Boolean)
93
- .join(' ');
94
- console.log(` ${marks ? '● ' : ' '}${name}${marks ? (0, ui_1.gray)(' ← ') + marks : ''}`);
95
- }
96
- }
97
- /** /model 命令入口(REPL 内与 `atomix model` 子命令共用) */
98
- async function modelCommand(core, args, ask) {
99
- const [sub, ...rest] = args;
100
- const name = rest.join(' ').trim();
101
- try {
102
- switch (sub) {
103
- case undefined:
104
- case 'list':
105
- await printModelList(core);
106
- if (!sub)
107
- console.log((0, ui_1.gray)(' 用法:/model list | add | use <名称> | quick <名称> | del <名称>'));
108
- break;
109
- case 'add':
110
- await addModelWizard(core, ask);
111
- break;
112
- case 'use': {
113
- if (!name)
114
- return console.log((0, ui_1.red)(' 用法:/model use <名称>'));
115
- const r = await core.switchModel(name);
116
- console.log((0, ui_1.green)(` ✓ 主模型 → ${r.taskConfig.main}`));
117
- break;
118
- }
119
- case 'quick': {
120
- if (!name)
121
- return console.log((0, ui_1.red)(' 用法:/model quick <名称>'));
122
- const cur = await core.getModelData();
123
- const r = await core.applyTaskModel({ main: cur.taskConfig.main, quick: name });
124
- console.log((0, ui_1.green)(` ✓ 快速模型 → ${r.taskConfig.quick}`));
125
- break;
126
- }
127
- case 'del': {
128
- if (!name)
129
- return console.log((0, ui_1.red)(' 用法:/model del <名称>'));
130
- await core.delModel(name);
131
- console.log((0, ui_1.green)(` ✓ 已删除:${name}`));
132
- break;
133
- }
134
- default:
135
- console.log((0, ui_1.bold)(` 未知子命令:${sub}`));
136
- console.log((0, ui_1.gray)(' 用法:/model list | add | use <名称> | quick <名称> | del <名称>'));
137
- }
138
- }
139
- catch (e) {
140
- console.log((0, ui_1.red)(` 模型操作失败:${e instanceof Error ? e.message : String(e)}`));
141
- }
142
- }
143
- //# sourceMappingURL=modelWizard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modelWizard.js","sourceRoot":"","sources":["../src/modelWizard.ts"],"names":[],"mappings":"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"}
package/dist/oneshot.js DELETED
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runPrint = runPrint;
4
- /**
5
- * 一次性执行模式(atomix -p "prompt")
6
- *
7
- * 参照 semaclaw IsolatedRunner.runOneShot 的模式裁剪:无人值守,跳过全部权限,
8
- * 到达 idle 后输出最终回复并退出。进度信息走 stderr,stdout 只有最终文本,
9
- * 便于管道/脚本消费(也是未来 semaclaw dispatch 派发执行的接口形态,dev-plan §7)。
10
- */
11
- const sema_core_1 = require("sema-core");
12
- const tools_1 = require("./tools");
13
- const quiet_1 = require("./quiet");
14
- const ui_1 = require("./ui");
15
- const MAIN = 'main';
16
- const DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
17
- async function runPrint(prompt, cwd, timeoutMs = DEFAULT_TIMEOUT_MS) {
18
- const core = new sema_core_1.SemaCore({
19
- workingDir: cwd,
20
- logLevel: (0, quiet_1.atomixLogLevel)(),
21
- stream: false,
22
- useTools: tools_1.ATOMIX_TOOLS,
23
- skipFileEditPermission: true,
24
- skipBashExecPermission: true,
25
- skipSkillPermission: true,
26
- skipMCPToolPermission: true,
27
- systemPrompt: 'You are Atomix, a CLI coding agent bound to the current working directory.',
28
- });
29
- const md = await core.getModelData().catch(() => null);
30
- if (!md || !md.modelList?.length || !md.taskConfig?.main) {
31
- console.error((0, ui_1.red)('未配置模型:先运行 `atomix model add`'));
32
- return 1;
33
- }
34
- await new Promise((resolve) => {
35
- core.once('session:ready', () => resolve());
36
- void core.createSession();
37
- });
38
- core.on('tool:execution:complete', (d) => {
39
- console.error((0, ui_1.gray)((0, ui_1.truncate)(` ✓ ${d.title}${d.summary ? ' — ' + d.summary : ''}`, 160)));
40
- });
41
- const texts = [];
42
- let sawProcessing = false;
43
- const exitCode = await new Promise((resolve) => {
44
- let done = false;
45
- const finish = (code, msg) => {
46
- if (done)
47
- return;
48
- done = true;
49
- clearTimeout(timer);
50
- if (msg)
51
- console.error((0, ui_1.red)(msg));
52
- resolve(code);
53
- };
54
- const timer = setTimeout(() => finish(2, `超时(${timeoutMs / 1000}s)`), timeoutMs);
55
- core.on('message:complete', (d) => {
56
- if (d.agentId === MAIN && d.content.trim())
57
- texts.push(d.content);
58
- });
59
- core.on('state:update', (d) => {
60
- if (d.state === 'processing')
61
- sawProcessing = true;
62
- else if (d.state === 'idle' && sawProcessing)
63
- finish(0);
64
- });
65
- core.on('session:error', (d) => {
66
- finish(1, `会话错误 [${d.type}] ${d.error?.message ?? d.error?.code ?? ''}`);
67
- });
68
- core.processUserInput(prompt);
69
- });
70
- if (exitCode === 0)
71
- process.stdout.write((texts[texts.length - 1] ?? '') + '\n');
72
- await core.dispose().catch(() => { });
73
- return exitCode;
74
- }
75
- //# sourceMappingURL=oneshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oneshot.js","sourceRoot":"","sources":["../src/oneshot.ts"],"names":[],"mappings":";;AAqBA,4BA2DC;AAhFD;;;;;;GAMG;AACH,yCAAqC;AAOrC,mCAAuC;AACvC,mCAAyC;AACzC,6BAA2C;AAE3C,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,GAAW,EAAE,SAAS,GAAG,kBAAkB;IACxF,MAAM,IAAI,GAAG,IAAI,oBAAQ,CAAC;QACxB,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,IAAA,sBAAc,GAAE;QAC1B,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,oBAAY;QACtB,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,IAAI;QAC5B,mBAAmB,EAAE,IAAI;QACzB,qBAAqB,EAAE,IAAI;QAC3B,YAAY,EAAE,4EAA4E;KAC3F,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,IAAA,QAAG,EAAC,8BAA8B,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAA4B,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE;QAClE,OAAO,CAAC,KAAK,CAAC,IAAA,SAAI,EAAC,IAAA,aAAQ,EAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAY,EAAE,EAAE;YAC5C,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,GAAG;gBAAE,OAAO,CAAC,KAAK,CAAC,IAAA,QAAG,EAAC,GAAG,CAAC,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAEjF,IAAI,CAAC,EAAE,CAAsB,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE;YACrD,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAkB,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7C,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY;gBAAE,aAAa,GAAG,IAAI,CAAC;iBAC9C,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,aAAa;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAmB,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;YAC/C,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACjF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/paths.js DELETED
@@ -1,53 +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.getAtomixRoot = getAtomixRoot;
37
- const os = __importStar(require("os"));
38
- const path = __importStar(require("path"));
39
- /**
40
- * atomix 持久化根目录(应用层独立域,见 dev-plan §2)。
41
- * 可通过环境变量 ATOMIX_ROOT 覆盖,默认 ~/.atomix。
42
- *
43
- * 该目录同时作为 sema-core 的 SEMA_ROOT(见 bootstrap.ts),从而使
44
- * model.conf / history / projects.conf / 用户级 skills|agents|commands / mcp.json
45
- * 全部落入 atomix 独立域,与 semaclaw、sema-code 互不干扰。
46
- */
47
- function getAtomixRoot() {
48
- const custom = process.env.ATOMIX_ROOT;
49
- if (custom)
50
- return path.resolve(custom);
51
- return path.join(os.homedir(), '.atomix');
52
- }
53
- //# sourceMappingURL=paths.js.map
package/dist/paths.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sCAIC;AAfD,uCAAyB;AACzB,2CAA6B;AAE7B;;;;;;;GAOG;AACH,SAAgB,aAAa;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC"}
package/dist/quiet.js DELETED
@@ -1,81 +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.atomixLogLevel = atomixLogLevel;
37
- exports.quietSemaCoreLogs = quietSemaCoreLogs;
38
- /**
39
- * 提前压制 sema-core 构造期日志。
40
- *
41
- * sema-core 只在 createSession 时才应用 config.logLevel(SemaEngine.initialize:610),
42
- * SemaSession 构造函数的 INFO 日志在此之前就已打印;而 setLogLevel 未从包入口导出,
43
- * 只能按绝对路径直取 dist/util/log 模块。
44
- * —— M0 权宜方案,已列入 M2 core patch 清单:从 sema-core 入口导出 setLogLevel。
45
- *
46
- * 调试时可用 ATOMIX_LOG=debug|info|warn|error 打开日志(同时作用于 SemaCore config)。
47
- */
48
- const path = __importStar(require("path"));
49
- const VALID = ['none', 'debug', 'info', 'warn', 'error'];
50
- function atomixLogLevel() {
51
- const env = process.env.ATOMIX_LOG;
52
- return env && VALID.includes(env) ? env : 'none';
53
- }
54
- function quietSemaCoreLogs(level = atomixLogLevel()) {
55
- try {
56
- // eslint-disable-next-line @typescript-eslint/no-require-imports
57
- const logMod = require(path.join(path.dirname(require.resolve('sema-core')), 'util', 'log.js'));
58
- logMod.setLogLevel?.(level);
59
- }
60
- catch {
61
- // 拿不到就让它打日志,不影响功能
62
- }
63
- if (level === 'none')
64
- filterSemaDebugConsole();
65
- }
66
- /**
67
- * sema-core 的 SemaSession.start / SemaEngine.createSession 里有一批绕过 logger 的
68
- * 裸 console.log 调试输出(形如 "[SemaSession:engine-xxx] awaiting configPromise..."),
69
- * logLevel 压不住,按前缀定向过滤。
70
- * —— M0 权宜方案,已列入 M2 core patch 清单:上游移除或改走 logDebug。
71
- */
72
- function filterSemaDebugConsole() {
73
- const orig = console.log.bind(console);
74
- console.log = (...args) => {
75
- const first = args[0];
76
- if (typeof first === 'string' && /^\[Sema(Session|Engine)[:\]]/.test(first))
77
- return;
78
- orig(...args);
79
- };
80
- }
81
- //# sourceMappingURL=quiet.js.map
package/dist/quiet.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"quiet.js","sourceRoot":"","sources":["../src/quiet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,wCAGC;AAED,8CAWC;AAhCD;;;;;;;;;GASG;AACH,2CAA6B;AAI7B,MAAM,KAAK,GAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3E,SAAgB,cAAc;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAwC,CAAC;IACjE,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAwB,cAAc,EAAE;IACxE,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAE7F,CAAC;QACF,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,IAAI,KAAK,KAAK,MAAM;QAAE,sBAAsB,EAAE,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QACpF,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}