common-memory-core 0.2.0 → 0.2.1
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/CHANGELOG.md +23 -0
- package/README.md +15 -11
- package/dist/cli/tui-integrations.d.ts.map +1 -1
- package/dist/cli/tui-integrations.js +69 -60
- package/dist/cli/tui-integrations.js.map +1 -1
- package/dist/cli/tui-prompts.d.ts +3 -1
- package/dist/cli/tui-prompts.d.ts.map +1 -1
- package/dist/cli/tui-prompts.js +21 -11
- package/dist/cli/tui-prompts.js.map +1 -1
- package/dist/cli/tui-settings.d.ts +2 -1
- package/dist/cli/tui-settings.d.ts.map +1 -1
- package/dist/cli/tui-settings.js +185 -77
- package/dist/cli/tui-settings.js.map +1 -1
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +171 -120
- package/dist/cli/tui.js.map +1 -1
- package/docs/releasing.md +5 -5
- package/docs/tui-workbench.md +99 -167
- package/docs/usage.md +15 -8
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.1 — 2026-09-10
|
|
4
|
+
|
|
5
|
+
### Usability
|
|
6
|
+
|
|
7
|
+
- Replace module-oriented TUI navigation with a Chinese task menu: read memory,
|
|
8
|
+
import Markdown, connect assistants, manage permissions, and recover work.
|
|
9
|
+
- Shorten first-time setup and offer optional connection, permission and test steps
|
|
10
|
+
after saving. Remember the last home action and keep cancellation local.
|
|
11
|
+
- Rotate API keys independently of model setup. Replace advanced JSON editing with
|
|
12
|
+
validated, single-setting menus and numeric inputs that preserve unrelated values.
|
|
13
|
+
- Offer an explicit permission flow before Markdown import; retain source attribution
|
|
14
|
+
and distinguish queued material from processed or retained memory.
|
|
15
|
+
- Make Codex/Work technical previews optional, show an export summary before writing,
|
|
16
|
+
and provide installation steps without claiming the assistant is already connected.
|
|
17
|
+
- Use readable empty states, progress and session summaries; retain raw job diagnostics
|
|
18
|
+
for troubleshooting. Fix false configuration-conflict detection from key ordering.
|
|
19
|
+
|
|
20
|
+
### Boundaries
|
|
21
|
+
|
|
22
|
+
- No storage schema, model protocol, host trust or memory authorization changes.
|
|
23
|
+
- Generated bundles still require activation in the actual assistant. No automatic
|
|
24
|
+
permission grant, data migration, or real-model/desktop validation is added.
|
|
25
|
+
|
|
3
26
|
## 0.2.0 — 2026-09-10
|
|
4
27
|
|
|
5
28
|
Initial public v0.2 release under the MIT license. Requires Node 24.x; Linux, macOS
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Common Memory 把长期内容保存在本机的 Markdown 中,通过 Pi 扩展
|
|
|
10
10
|
会话接入和本地 MCP,让助手读取获授权的个人偏好、背景与项目上下文。模型提出维护决定,
|
|
11
11
|
本地 Core 校验后写入;你可以直接查看和编辑文件。
|
|
12
12
|
|
|
13
|
-
**v0.2** · npm 包名 `common-memory-core` · 命令 `common-memory` · MIT 许可证。
|
|
13
|
+
**v0.2.1** · npm 包名 `common-memory-core` · 命令 `common-memory` · MIT 许可证。
|
|
14
14
|
这是早期版本;安装可用不等于所有真实宿主和模型行为均已验证,具体边界见下文。
|
|
15
15
|
|
|
16
16
|
## 一行安装
|
|
@@ -18,7 +18,7 @@ Common Memory 把长期内容保存在本机的 Markdown 中,通过 Pi 扩展
|
|
|
18
18
|
在 **Linux、macOS 或 Windows 的 WSL 终端**中执行(需已安装 **Node.js 24.x**,包含 npm):
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
|
-
npm install -g common-memory-core@0.2.
|
|
21
|
+
npm install -g common-memory-core@0.2.1
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
安装后运行 `common-memory` 打开交互工作台。无需克隆仓库、手动构建或先启动 Pi。
|
|
@@ -27,19 +27,23 @@ npm install -g common-memory-core@0.2.0
|
|
|
27
27
|
安装,或用现有版本管理器切换。上面的一行命令安装 Common Memory,**不会安装 Node 或 WSL**。
|
|
28
28
|
- Windows 用户在 WSL 内安装,不要在原生 PowerShell 中安装另一份 Core。
|
|
29
29
|
- 如遇全局安装权限错误,使用用户级 Node 版本管理器;不建议 `sudo npm install`。
|
|
30
|
-
- 不想全局安装?可用 `npx --yes common-memory-core@0.2.
|
|
30
|
+
- 不想全局安装?可用 `npx --yes common-memory-core@0.2.1` 打开工作台。
|
|
31
31
|
- 本版仍有必需的 Pi **0.84.4** peer 依赖:仅使用 CLI/MCP 也会安装该依赖树,但不会自动启动或配置 Pi。
|
|
32
32
|
|
|
33
33
|
## 第一次使用
|
|
34
34
|
|
|
35
|
-
1.
|
|
36
|
-
|
|
37
|
-
2.
|
|
38
|
-
|
|
39
|
-
3.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
1. **开始设置**:运行 `common-memory`,填写 API 地址、模型,选择 Responses 或
|
|
36
|
+
Chat Completions。密钥可稍后填写;保存后可继续连接助手、测试连接或直接返回首页。
|
|
37
|
+
2. **确认权限**:在「项目与权限」中分别选择能读取、更新的记忆和可发送给模型的材料。
|
|
38
|
+
添加项目不自动授权;导入 Markdown 时,如未授权会引导你先设置,不会自行开启。
|
|
39
|
+
3. **连接助手**:选择「连接 / 管理 AI 助手」,管理 Pi 扩展或生成 Codex / Work / MCP
|
|
40
|
+
接入文件。可按需预览技术内容;生成后按提示在实际助手中安装并信任 Hook。
|
|
41
|
+
**生成配置不等于已经连接**。
|
|
42
|
+
4. **检查结果**:首页直接「查看记忆」或「导入 Markdown」。遇到问题可打开
|
|
43
|
+
「处理未完成任务」;改密钥、代理或测试连接在「模型与设置」,不用重新跑完整设置。
|
|
44
|
+
|
|
45
|
+
上下键选择,Enter 确认,多选用空格,Esc 返回(首页退出)。取消后续步骤不会撤回
|
|
46
|
+
已保存的配置或已排队材料。高级设置按选项、数字逐项修改,不需要编辑 JSON。
|
|
43
47
|
|
|
44
48
|
默认配置位于 `~/.common-memory/config.json`,API Key 保存在同目录的私有 `.env` 中;
|
|
45
49
|
`COMMON_MEMORY_HOME` 可指定其他配置目录。默认长期记忆位于
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-integrations.d.ts","sourceRoot":"","sources":["../../src/cli/tui-integrations.ts"],"names":[],"mappings":"AAIA,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAW3F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"tui-integrations.d.ts","sourceRoot":"","sources":["../../src/cli/tui-integrations.ts"],"names":[],"mappings":"AAIA,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAW3F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAWvE;AA6FD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBxD"}
|
|
@@ -13,125 +13,134 @@ import { attempt, confirm, expandPath, menu, note, terminalText, text, unwrap, v
|
|
|
13
13
|
const packageRoot = fileURLToPath(new URL('../../', import.meta.url));
|
|
14
14
|
export function integrationReadiness(config) {
|
|
15
15
|
return [
|
|
16
|
-
`
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
`
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
'
|
|
24
|
-
'Generated does not mean installed, trusted, connected, or successfully committed.',
|
|
16
|
+
`Node ${process.versions.node} · 配置目录:${configDirectory()}`,
|
|
17
|
+
`记忆存储:${config.dataRoot}`,
|
|
18
|
+
`读取:不需要 API Key · ${config.disclosure.allowedScopes.join(', ')}`,
|
|
19
|
+
`对话捕获:${config.disclosure.allowedProvenance.includes('user_explicit') ? '已授权' : '未授权'}`,
|
|
20
|
+
`AI 理解导入:${config.disclosure.allowedProvenance.includes('agent_observation') ? '已授权' : '未授权'}`,
|
|
21
|
+
`模型密钥:${hasApiKey(config) ? '已配置,未测试' : '未配置,可只读'}`,
|
|
22
|
+
`可更新范围:${config.writableScopes.join(', ') || '无(只读)'}`,
|
|
23
|
+
'以上是本机配置,不代表助手已安装、启用或信任连接。',
|
|
25
24
|
].join('\n');
|
|
26
25
|
}
|
|
27
26
|
async function chooseWorkspaces(config) {
|
|
28
27
|
const projects = listProjects(config);
|
|
29
28
|
if (!projects.length)
|
|
30
29
|
return [];
|
|
31
|
-
return unwrap(await clack.multiselect({ message: '
|
|
32
|
-
options: projects.map(p => ({ value: p.root, label: terminalText(p.name), hint: terminalText(`${p.root} · ${config.disclosure.allowedScopes.includes(`project:${p.id}`) ? '
|
|
30
|
+
return unwrap(await clack.multiselect({ message: '还要让助手读取哪些项目?(空格勾选,可不选;个人记忆另行包含)', required: false,
|
|
31
|
+
options: projects.map(p => ({ value: p.root, label: terminalText(p.name), hint: terminalText(`${p.root} · ${config.disclosure.allowedScopes.includes(`project:${p.id}`) ? '已授权读取' : '尚未授权读取'}`) })), initialValues: [] }));
|
|
33
32
|
}
|
|
34
33
|
async function launchMode() {
|
|
35
34
|
// A WSL terminal does not establish the agent's operating environment.
|
|
36
|
-
const mode = await menu('
|
|
37
|
-
{ value: 'posix', label: '
|
|
38
|
-
{ value: 'wsl', label: '
|
|
35
|
+
const mode = await menu('你的 AI 助手运行在哪里?', [
|
|
36
|
+
{ value: 'posix', label: '和当前终端在同一环境', hint: 'macOS / Linux / WSL 内运行的助手' },
|
|
37
|
+
{ value: 'wsl', label: 'Windows 桌面上', hint: '通过桥接访问当前 WSL 中的记忆' },
|
|
39
38
|
]);
|
|
40
39
|
if (mode === 'posix')
|
|
41
40
|
return { wsl: false, workspaces: [] };
|
|
42
|
-
return { wsl: true, distro: await text('WSL
|
|
41
|
+
return { wsl: true, distro: await text('WSL 发行版名称', process.env.WSL_DISTRO_NAME ?? ''), user: await text('该发行版中的 Linux 用户名'), workspaces: [] };
|
|
43
42
|
}
|
|
44
43
|
async function generateHost(config, client) {
|
|
45
44
|
const options = await launchMode();
|
|
46
45
|
options.workspaces = await chooseWorkspaces(config);
|
|
47
|
-
const output = expandPath(await text('
|
|
46
|
+
const output = expandPath(await text('把接入文件保存到哪个新目录?(不能是已有目录)'));
|
|
48
47
|
const args = ['--mode', options.wsl ? 'windows-wsl' : 'posix', '--output', output, ...options.workspaces.flatMap(w => ['--workspace', w])];
|
|
49
48
|
if (options.wsl) {
|
|
50
49
|
args.push('--distro', options.distro, '--user', options.user);
|
|
51
|
-
const bridge = await text('
|
|
50
|
+
const bridge = await text('Windows 桥接脚本的绝对路径(留空用 wslpath 转换输出目录)', '', true);
|
|
52
51
|
if (bridge)
|
|
53
52
|
args.push('--bridge-path', bridge);
|
|
54
53
|
}
|
|
55
54
|
const prepared = prepareHostBundle(config, args, client);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
note(`助手:${client}\n保存到:${output}\n包含:连接配置、刷新记忆的 Skill${prepared.bundle.bridge ? '、Windows 桥接脚本' : ''}\n只生成文件,不修改助手设置或 Hook 信任。`, '准备接入文件');
|
|
56
|
+
for (;;) {
|
|
57
|
+
const action = await menu('接下来做什么?', [
|
|
58
|
+
{ value: 'save', label: '生成接入文件', hint: '下一步会说明如何安装到助手' },
|
|
59
|
+
{ value: 'config', label: '预览连接配置' },
|
|
60
|
+
{ value: 'skill', label: '预览刷新记忆 Skill' },
|
|
61
|
+
...(prepared.bundle.bridge ? [{ value: 'bridge', label: '预览 Windows 桥接脚本' }] : []),
|
|
62
|
+
{ value: 'back', label: '返回,不生成文件' },
|
|
63
|
+
]);
|
|
64
|
+
if (action === 'back')
|
|
65
|
+
return;
|
|
66
|
+
if (action === 'save')
|
|
67
|
+
break;
|
|
68
|
+
await viewText(action === 'config' ? '连接配置预览' : action === 'skill' ? '刷新记忆 Skill 预览' : 'Windows 桥接预览', action === 'config' ? prepared.bundle.config : action === 'skill' ? prepared.bundle.skill + '\n' + prepared.bundle.policy : prepared.bundle.bridge);
|
|
69
|
+
}
|
|
70
|
+
if (!await confirm(`将接入文件写入 ${output}?`))
|
|
61
71
|
return;
|
|
62
72
|
checkConfigUnchanged(config);
|
|
63
73
|
if (existsSync(output))
|
|
64
|
-
throw new Error('
|
|
74
|
+
throw new Error('这个目录已存在。请选择新目录,不会覆盖已有文件。');
|
|
65
75
|
writeHostBundle(prepared.output, prepared.bundle);
|
|
66
76
|
note([
|
|
67
|
-
|
|
68
|
-
'1.
|
|
69
|
-
|
|
70
|
-
'3.
|
|
71
|
-
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
|
|
76
|
-
].join('\n'), 'Generated — host activation still required');
|
|
77
|
+
`已生成:${output}`,
|
|
78
|
+
'1. 审阅 common-memory.config.toml,合并到实际使用的助手配置。Work 与 Codex 的配置请分开。',
|
|
79
|
+
'2. 将 skills/memory-refresh 放入该助手的 skills 目录;Windows 还需将桥接脚本放到指定路径。',
|
|
80
|
+
'3. 在助手 /hooks 中审阅并信任命令,然后启动新会话。',
|
|
81
|
+
client === 'codex' ? '启动:codex --profile common-memory' : '在 Work 本地 Agent 中选择对应配置;不适用于普通 Chat。',
|
|
82
|
+
'会话内用 /memory-refresh 刷新。回到「查看记忆」和「处理未完成任务」检查结果。',
|
|
83
|
+
'停用请在助手 /hooks 与 MCP 设置中操作,再移除自己安装的配置与 Skill;记忆文件保留。',
|
|
84
|
+
'Node、安装位置、配置目录或项目选择改变后,请生成新的接入文件。',
|
|
85
|
+
].join('\n'), '文件已生成 · 还需在助手中启用');
|
|
77
86
|
}
|
|
78
87
|
async function generateMcp(config) {
|
|
79
88
|
const options = await launchMode();
|
|
80
89
|
options.workspaces = await chooseWorkspaces(config);
|
|
81
90
|
const body = renderMcpConfig(config, options);
|
|
82
|
-
await viewText('MCP
|
|
83
|
-
if (await confirm('
|
|
84
|
-
const output = expandPath(await text('
|
|
91
|
+
await viewText('MCP 配置预览(读取与初始化为独立进程)', body);
|
|
92
|
+
if (await confirm('导出到一个新文件?')) {
|
|
93
|
+
const output = expandPath(await text('新 TOML 文件路径(父目录必须存在)'));
|
|
85
94
|
checkConfigUnchanged(config);
|
|
86
95
|
writeFileSync(output, body, { flag: 'wx', mode: 0o600 });
|
|
87
|
-
clack.log.success(
|
|
96
|
+
clack.log.success(`已导出到 ${terminalText(output)};尚未安装到助手。`);
|
|
88
97
|
}
|
|
89
|
-
note('
|
|
98
|
+
note('将需要的配置块合并到助手的 MCP 设置,读取与初始化保持分离;Codex 应禁用 Init。\n重启助手并检查工具列表。停用请用助手的 MCP 设置,不要删除记忆存储。\n这些模板不会启用 Relay;可信宿主需要通过 CLI 单独配置。', '下一步 · 在助手中启用');
|
|
90
99
|
}
|
|
91
100
|
async function piIntegration() {
|
|
92
|
-
note(
|
|
93
|
-
const action = await menu('Pi
|
|
94
|
-
{ value: '
|
|
95
|
-
{ value: '
|
|
96
|
-
{ value: 'config', label: '
|
|
97
|
-
{ value: 'remove', label: '
|
|
98
|
-
{ value: 'back', label: '
|
|
101
|
+
note('在同一终端环境中使用 Pi 0.84.4,配置目录需保持一致。\n安装不会自动授权记忆。启停与信任交给 Pi 自己管理。', '连接 Pi');
|
|
102
|
+
const action = await menu('想对 Pi 做什么?', [
|
|
103
|
+
{ value: 'install', label: '安装 Common Memory 扩展', hint: '为当前用户登记本地包' },
|
|
104
|
+
{ value: 'list', label: '查看已安装扩展', hint: 'pi list' },
|
|
105
|
+
{ value: 'config', label: '启用 / 停用扩展', hint: '打开 Pi 自己的配置界面' },
|
|
106
|
+
{ value: 'remove', label: '移除扩展', hint: '不会删除记忆' },
|
|
107
|
+
{ value: 'back', label: '返回' },
|
|
99
108
|
]);
|
|
100
109
|
if (action === 'back')
|
|
101
110
|
return;
|
|
102
111
|
if (action === 'install' && !existsSync(join(packageRoot, 'dist/pi-extension/index.js')))
|
|
103
|
-
throw new Error('
|
|
112
|
+
throw new Error('未找到构建产物。请先构建 Common Memory,再安装扩展。');
|
|
104
113
|
const args = ['install', 'remove'].includes(action) ? [action, packageRoot] : [action];
|
|
105
|
-
note(`pi ${args.map(shellQuote).join(' ')}\nCOMMON_MEMORY_HOME=${configDirectory()}\
|
|
106
|
-
if (!await confirm('
|
|
114
|
+
note(`pi ${args.map(shellQuote).join(' ')}\nCOMMON_MEMORY_HOME=${configDirectory()}\n使用 PATH 中的 Pi;安装和移除影响用户配置。Pi 可能要求项目信任。`, '即将交给 Pi 执行');
|
|
115
|
+
if (!await confirm('执行以上 Pi 命令?'))
|
|
107
116
|
return;
|
|
108
117
|
const code = await runInteractiveProcess('pi', args, { ...process.env, COMMON_MEMORY_HOME: configDirectory() });
|
|
109
118
|
if (code !== 0)
|
|
110
|
-
throw new Error(`Pi
|
|
111
|
-
clack.log.success('Pi
|
|
119
|
+
throw new Error(`Pi 命令未完成或已取消(退出码 ${code}),请在 Pi 中检查状态。`);
|
|
120
|
+
clack.log.success('Pi 命令已结束。修改后请重启 Pi,再检查实际的捕获与记忆读取。');
|
|
121
|
+
note('在 Pi 会话中用 /memory-refresh 刷新记忆,/memory-flush 处理队列。', '下一步');
|
|
112
122
|
}
|
|
113
123
|
export async function integrationsScreen() {
|
|
114
124
|
for (;;) {
|
|
115
125
|
const config = loadConfig();
|
|
116
126
|
if (!config)
|
|
117
|
-
throw new Error('
|
|
118
|
-
const action = await menu('
|
|
119
|
-
{ value: '
|
|
120
|
-
{ value: '
|
|
121
|
-
{ value: '
|
|
122
|
-
{ value: '
|
|
123
|
-
{ value: '
|
|
124
|
-
{ value: 'back', label: '
|
|
127
|
+
throw new Error('请先完成模型设置。');
|
|
128
|
+
const action = await menu('要连接哪个 AI 助手?', [
|
|
129
|
+
{ value: 'pi', label: 'Pi', hint: '安装、启停或移除扩展' },
|
|
130
|
+
{ value: 'codex', label: 'Codex', hint: '生成会话与记忆读取配置' },
|
|
131
|
+
{ value: 'work', label: 'ChatGPT Work', hint: '生成本地 Agent 接入文件' },
|
|
132
|
+
{ value: 'mcp', label: '其他 MCP 助手', hint: '预览、导出 stdio 配置' },
|
|
133
|
+
{ value: 'readiness', label: '检查本机接入条件', hint: '不检测助手是否已连接' },
|
|
134
|
+
{ value: 'back', label: '返回' },
|
|
125
135
|
]);
|
|
126
136
|
if (action === 'back')
|
|
127
137
|
return;
|
|
128
138
|
await attempt(async () => {
|
|
129
139
|
if (action === 'readiness')
|
|
130
|
-
note(integrationReadiness(config), '
|
|
140
|
+
note(integrationReadiness(config), '本机接入条件');
|
|
131
141
|
else if (action === 'pi')
|
|
132
142
|
await piIntegration();
|
|
133
143
|
else {
|
|
134
|
-
note(integrationReadiness(config), 'Integration prerequisites');
|
|
135
144
|
if (action === 'mcp')
|
|
136
145
|
await generateMcp(config);
|
|
137
146
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-integrations.js","sourceRoot":"","sources":["../../src/cli/tui-integrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAyB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtE,MAAM,UAAU,oBAAoB,CAAC,MAA0B;IAC7D,OAAO;QACL,
|
|
1
|
+
{"version":3,"file":"tui-integrations.js","sourceRoot":"","sources":["../../src/cli/tui-integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,9 @@ export declare function menu(message: string, options: {
|
|
|
14
14
|
value: string;
|
|
15
15
|
label: string;
|
|
16
16
|
hint?: string;
|
|
17
|
-
}[]): Promise<string>;
|
|
17
|
+
}[], initialValue?: string): Promise<string>;
|
|
18
|
+
/** One numeric field at a time; final configuration still uses the shared validator. */
|
|
19
|
+
export declare function numberInput(message: string, initialValue: number | undefined, min?: number, max?: number, optional?: boolean): Promise<number | undefined>;
|
|
18
20
|
/** Local pagination only, not retrieval. Every line of the selected document remains available. */
|
|
19
21
|
export declare function viewText(title: string, body: string): Promise<void>;
|
|
20
22
|
/** Cancel/error stays inside the current area; a cancelled home menu exits the application. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-prompts.d.ts","sourceRoot":"","sources":["../../src/cli/tui-prompts.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAc,SAAQ,KAAK;;CAEvC;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAG9C;AACD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AACD,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AACD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,IAA2D,CAAC;AAC/G,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,KAAG,IAA0C,CAAC;AAC9E,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AACD,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,SAAK,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhG;AACD,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"tui-prompts.d.ts","sourceRoot":"","sources":["../../src/cli/tui-prompts.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAc,SAAQ,KAAK;;CAEvC;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAG9C;AACD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AACD,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AACD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,IAA2D,CAAC;AAC/G,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,KAAG,IAA0C,CAAC;AAC9E,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AACD,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,SAAK,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhG;AACD,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9I;AAED,wFAAwF;AACxF,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,SAAI,EAAE,GAAG,SAA0B,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO1K;AAED,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezE;AAED,+FAA+F;AAC/F,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E"}
|
package/dist/cli/tui-prompts.js
CHANGED
|
@@ -23,13 +23,23 @@ export function terminalText(value) {
|
|
|
23
23
|
export const note = (body, title) => clack.note(terminalText(body), terminalText(title));
|
|
24
24
|
export const log = (body) => clack.log.info(terminalText(body));
|
|
25
25
|
export async function confirm(message) {
|
|
26
|
-
return unwrap(await clack.confirm({ message: terminalText(message), initialValue: false }));
|
|
26
|
+
return unwrap(await clack.confirm({ message: terminalText(message), active: '确认', inactive: '暂不', initialValue: false }));
|
|
27
27
|
}
|
|
28
28
|
export async function text(message, initialValue = '', optional = false) {
|
|
29
|
-
return unwrap(await clack.text({ message, initialValue, ...(optional ? { defaultValue: '' } : {}), validate: value => optional || value?.trim() ? undefined : '
|
|
29
|
+
return unwrap(await clack.text({ message: terminalText(message), initialValue, ...(optional ? { defaultValue: '' } : {}), validate: value => optional || value?.trim() ? undefined : '请填写内容' })).trim();
|
|
30
30
|
}
|
|
31
|
-
export async function menu(message, options) {
|
|
32
|
-
return unwrap(await clack.select({ message, options: options.map(o => ({ ...o, label: terminalText(o.label), ...(o.hint ? { hint: terminalText(o.hint) } : {}) })), maxItems: 10 }));
|
|
31
|
+
export async function menu(message, options, initialValue) {
|
|
32
|
+
return unwrap(await clack.select({ message: terminalText(message), options: options.map(o => ({ ...o, label: terminalText(o.label), ...(o.hint ? { hint: terminalText(o.hint) } : {}) })), maxItems: 10, ...(initialValue === undefined ? {} : { initialValue }) }));
|
|
33
|
+
}
|
|
34
|
+
/** One numeric field at a time; final configuration still uses the shared validator. */
|
|
35
|
+
export async function numberInput(message, initialValue, min = 1, max = Number.MAX_SAFE_INTEGER, optional = false) {
|
|
36
|
+
const raw = unwrap(await clack.text({ message, initialValue: initialValue === undefined ? '' : String(initialValue), ...(optional ? { defaultValue: '' } : {}), validate: value => {
|
|
37
|
+
if (optional && !value?.trim())
|
|
38
|
+
return;
|
|
39
|
+
const n = Number(value);
|
|
40
|
+
return value?.trim() && Number.isSafeInteger(n) && n >= min && n <= max ? undefined : `请输入 ${min}–${max} 之间的整数`;
|
|
41
|
+
} })).trim();
|
|
42
|
+
return raw ? Number(raw) : undefined;
|
|
33
43
|
}
|
|
34
44
|
/** Local pagination only, not retrieval. Every line of the selected document remains available. */
|
|
35
45
|
export async function viewText(title, body) {
|
|
@@ -38,11 +48,11 @@ export async function viewText(title, body) {
|
|
|
38
48
|
for (;;) {
|
|
39
49
|
const size = Math.max(5, Math.min(30, (process.stdout.rows || 24) - 12));
|
|
40
50
|
const end = Math.min(lines.length, start + size);
|
|
41
|
-
note(lines.slice(start, end).join('\n') || '
|
|
42
|
-
const action = await menu('
|
|
43
|
-
...(end < lines.length ? [{ value: 'next', label: '
|
|
44
|
-
...(start ? [{ value: 'previous', label: '
|
|
45
|
-
{ value: 'back', label: '
|
|
51
|
+
note(lines.slice(start, end).join('\n') || '(暂无内容)', `${title} · 第 ${start + 1}–${end} 行,共 ${lines.length} 行`);
|
|
52
|
+
const action = await menu('阅读', [
|
|
53
|
+
...(end < lines.length ? [{ value: 'next', label: '下一页' }] : []),
|
|
54
|
+
...(start ? [{ value: 'previous', label: '上一页' }] : []),
|
|
55
|
+
{ value: 'back', label: '返回' },
|
|
46
56
|
]);
|
|
47
57
|
if (action === 'back')
|
|
48
58
|
return;
|
|
@@ -56,9 +66,9 @@ export async function attempt(action) {
|
|
|
56
66
|
}
|
|
57
67
|
catch (error) {
|
|
58
68
|
if (error instanceof UserCancelled)
|
|
59
|
-
clack.log.info('
|
|
69
|
+
clack.log.info('已取消这一步,返回菜单。');
|
|
60
70
|
else
|
|
61
|
-
clack.log.error(terminalText(error instanceof Error ? error.message : '
|
|
71
|
+
clack.log.error(terminalText(error instanceof Error ? error.message : '操作未完成,请检查后重试。'));
|
|
62
72
|
}
|
|
63
73
|
}
|
|
64
74
|
//# sourceMappingURL=tui-prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-prompts.js","sourceRoot":"","sources":["../../src/cli/tui-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,gBAAgB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC;CACnE;AACD,MAAM,UAAU,MAAM,CAAI,KAAiB;IACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,aAAa,EAAE,CAAC;IACrD,OAAO,KAAU,CAAC;AACpB,CAAC;AACD,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qIAAqI,CAAC,CAAC;AAC5M,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/G,CAAC;AACD,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,2DAA2D,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAChJ,CAAC;AACD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,KAAa,EAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/G,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tui-prompts.js","sourceRoot":"","sources":["../../src/cli/tui-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,10 @@ export declare function hasApiKey(config: CommonMemoryConfig): boolean;
|
|
|
13
13
|
export declare function statusLines(config: CommonMemoryConfig): string[];
|
|
14
14
|
export declare function showStatus(config: CommonMemoryConfig): void;
|
|
15
15
|
export declare function printStatus(): void;
|
|
16
|
+
export declare function runCredentialsWizard(current: CommonMemoryConfig): Promise<void>;
|
|
16
17
|
export declare function runPermissionsWizard(current: CommonMemoryConfig): Promise<void>;
|
|
17
18
|
export declare function runNetworkWizard(existing?: CommonMemoryConfig | null): Promise<CommonMemoryConfig>;
|
|
18
|
-
/**
|
|
19
|
+
/** Edit one setting per visit; validate the complete result with Core's existing schema. */
|
|
19
20
|
export declare function runAdvancedWizard(current: CommonMemoryConfig): Promise<void>;
|
|
20
21
|
export {};
|
|
21
22
|
//# sourceMappingURL=tui-settings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-settings.d.ts","sourceRoot":"","sources":["../../src/cli/tui-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui-settings.d.ts","sourceRoot":"","sources":["../../src/cli/tui-settings.ts"],"names":[],"mappings":"AAMA,OAAO,EAA8G,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ1K,KAAK,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,eAAO,MAAM,kBAAkB,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAKlF,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAE9E;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAIzF;AAED,wBAAsB,cAAc,CAAC,QAAQ,GAAE,kBAAkB,GAAG,IAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkCpH;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE7D;AAKD,wBAAgB,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAGhE;AACD,wBAAgB,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAkE;AAC9H,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF;AAMD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,GAAE,kBAAkB,GAAG,IAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgCtH;AAED,4FAA4F;AAC5F,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGlF"}
|