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/docs/tui-workbench.md
CHANGED
|
@@ -1,173 +1,105 @@
|
|
|
1
1
|
# Common Memory 交互工作台
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- [Command Line Interface Guidelines](https://clig.dev):人类优先但保留组合能力;
|
|
13
|
-
仅在 TTY 提示;明确确认危险操作;取消不能伪装成功。
|
|
14
|
-
- [Lazygit 导航](https://lazygit.dev/docs)及[项目快捷键](https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Keybindings_en.md):
|
|
15
|
-
以当前对象和任务组织操作,导航/上下文动作可发现。借鉴分区和逐层进入,
|
|
16
|
-
**不**照搬 Git 面板、快捷键数量或 Undo 能力。
|
|
17
|
-
- [Clack Prompts](https://bomb.sh/docs/clack/packages/prompts):沿用 select、
|
|
18
|
-
multiselect、text、password、confirm 和 cancel。API 与取消键同时核对了本地
|
|
19
|
-
已安装的 `@clack/prompts` 类型声明和 `@clack/core` 实现。
|
|
20
|
-
- [Codex Hooks](https://learn.chatgpt.com/docs/hooks):非托管 Hook 必须通过宿主
|
|
21
|
-
`/hooks` 检查和信任;多个来源的 Hook 可以同时运行,生成文件不等于启用。
|
|
22
|
-
- [MCP stdio](https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/stdio):
|
|
23
|
-
stdout 只能传协议消息,不能混入 TUI 提示。
|
|
24
|
-
- Pi 官方安装包中的完整 `README.md`、`docs/packages.md`:本地 package 使用
|
|
25
|
-
`pi install <path>`/`pi remove <path>`;`pi list` 检查注册,`pi config` 管理资源。
|
|
26
|
-
工作台交给 Pi 自己执行这些命令,不实现另一套 Pi settings/trust 编辑器。
|
|
27
|
-
|
|
28
|
-
阅读本仓库 `AGENTS.md`、README、[架构](03-target-architecture.md)、
|
|
29
|
-
[会话接入](session-integration.md)和 CLI/MCP/Pi/宿主适配代码后,确认以下边界:
|
|
30
|
-
Markdown 是事实来源;Runtime SQLite 是持久队列,不是可重建索引;TUI 不增加
|
|
31
|
-
写权限、检索、跨项目读取、导入的用户证据地位或 MCP capabilities。
|
|
32
|
-
|
|
33
|
-
## 原入口清单与归属
|
|
34
|
-
|
|
35
|
-
| 原入口 | 性质 | 工作台位置/保留理由 |
|
|
36
|
-
| --- | --- | --- |
|
|
37
|
-
| 无参数 TUI:Status/API/Network | 人类入口 | 改为完整 Home 和六个任务分区 |
|
|
38
|
-
| `config`、`config --network` | 人类表单快捷入口 | Settings;保留直接表单快捷方式,非 TTY 明确失败 |
|
|
39
|
-
| `status`、`show` | 人类+自动化 | Overview、Memory;保留脚本输出,查看走同一业务函数 |
|
|
40
|
-
| `import` | 人类+自动化 | Memory 导入向导;仍调用同一 Writer 入队/处理路径 |
|
|
41
|
-
| `project register/list/remove` | 人类+自动化 | Projects & permissions;CLI 参数和注册语义保留 |
|
|
42
|
-
| `retry`、`flush` | 运维+自动化 | Maintenance;保留脚本退出码、正常退避和租约行为 |
|
|
43
|
-
| `network-test` | 显式诊断+自动化 | Settings;用户确认后才发合成请求 |
|
|
44
|
-
| `mcp-config` | 配置生成+自动化 | Integrations 预览/导出;继续提供 stdout TOML |
|
|
45
|
-
| `codex-config`、`work-config` | 配置生成+自动化 | Integrations 预览/导出 bundle,CLI 继续支持无人值守生成 |
|
|
46
|
-
| `mcp` | **机器协议** | 保留独立 stdio,固定 relay/init/read;不得显示 TUI |
|
|
47
|
-
| `codex-hook`、`work-hook` | **宿主 Hook 协议** | 保留 JSON stdin/stdout、持久 inbox 和宿主身份 |
|
|
48
|
-
| `session-drain` | **机器消费者**+显式恢复 | 保留 detached 使用;工作台可前台启动同一入口并等待结果 |
|
|
49
|
-
| `session-refresh` | **宿主身份相关操作** | 保留显式 Skill 命令;不能由 TUI 用 cwd 猜测活动会话 |
|
|
50
|
-
| Pi Extension、`memory_read`、`/memory-flush`、`/memory-refresh` | **宿主生命周期/会话内交互** | 保留原生入口;外部工作台不能替换它们的会话上下文 |
|
|
51
|
-
| Codex/Work 的 `/hooks`、宿主 MCP 设置 | **宿主所有的信任和启停** | 工作台提供安装/停用说明,不修改 trust store |
|
|
52
|
-
| 本地 `config.json`、private `.env`、Canonical Markdown | 用户所有的文件 | 不隐藏、不迁移、不删除;设置表单复用配置验证和私有文件写入 |
|
|
53
|
-
|
|
54
|
-
没有删除已有命令;CLI 和 TUI 是同一产品的两种操作方式。
|
|
55
|
-
|
|
56
|
-
## 最终信息架构
|
|
3
|
+
`common-memory` 在交互终端打开中文任务菜单。v0.2.1 参考本机 search-boost 的
|
|
4
|
+
`lib/installer/tui.mjs`、`index.mjs`、`keys-wizard.mjs`,以及 CodeGraph v1.6.0 的
|
|
5
|
+
`dist/installer/index.js`:首页先问用户要做什么;按当前任务询问必要参数;完成后
|
|
6
|
+
指出下一步。不照搬它们的授权默认值或宿主配置写入方式。
|
|
7
|
+
|
|
8
|
+
沿用已安装的 Clack select、multiselect、text、password、confirm 和分页查看,
|
|
9
|
+
没有新增界面依赖、全屏渲染框架、后台服务或第二份业务实现。
|
|
10
|
+
|
|
11
|
+
## 入口与操作路径
|
|
57
12
|
|
|
58
13
|
```text
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
├─
|
|
65
|
-
|
|
66
|
-
│
|
|
67
|
-
├─
|
|
68
|
-
│ ├─
|
|
69
|
-
│ └─
|
|
70
|
-
├─
|
|
71
|
-
|
|
72
|
-
│ ├─
|
|
73
|
-
│ ├─
|
|
74
|
-
│ ├─
|
|
75
|
-
│
|
|
76
|
-
├─
|
|
77
|
-
│
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
└─ Settings
|
|
81
|
-
├─ model、显式 API 模式、可选密钥更新
|
|
82
|
-
├─ network、proxy、CA;单独确认的合成连通测试
|
|
83
|
-
├─ 授权(复用同一表单)
|
|
84
|
-
└─ advanced:输出/thinking 参数、调度/cache/字节限制、切换 dataRoot
|
|
14
|
+
未配置:开始设置 → API 地址、模型、接口、可选密钥 → 确认保存
|
|
15
|
+
└─ 连接助手 / 测试模型 / 调整权限 / 返回首页
|
|
16
|
+
|
|
17
|
+
首页:想做什么?
|
|
18
|
+
├─ 查看记忆 → 个人 / 已登记项目 → 文档、文件位置
|
|
19
|
+
├─ 导入 Markdown → 必要时引导授权 → 文件、范围、来源、处理方式 → 确认
|
|
20
|
+
├─ 连接 / 管理 AI 助手
|
|
21
|
+
│ ├─ Pi → 交给 Pi 自己安装、查看、启停、移除
|
|
22
|
+
│ ├─ Codex / Work → 运行环境、项目、新目录 → 摘要、可选预览 → 生成
|
|
23
|
+
│ ├─ 其他 MCP 助手 → 环境、项目 → 配置预览、可选导出
|
|
24
|
+
│ └─ 检查本机接入条件(不检测助手是否已连接)
|
|
25
|
+
├─ 项目与权限 → 添加项目、项目详情、移除登记、独立授权
|
|
26
|
+
├─ 模型与设置
|
|
27
|
+
│ ├─ 更换模型 / API 地址
|
|
28
|
+
│ ├─ 单独设置 / 更换 API Key,或更换凭据环境变量
|
|
29
|
+
│ ├─ 代理 / 网络 / CA
|
|
30
|
+
│ ├─ 测试模型连接(确认后发送合成请求,不含记忆)
|
|
31
|
+
│ ├─ 权限
|
|
32
|
+
│ └─ 高级设置 → 输出、思考、处理节奏、容量、存储目录
|
|
33
|
+
├─ 处理未完成任务 → 整理队列、失败诊断 / 重试、恢复交接、会话摘要
|
|
34
|
+
└─ 查看运行状态 → 本地进度、刷新、配置与存储路径详情
|
|
85
35
|
```
|
|
86
36
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
##
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- `tests/cli/
|
|
148
|
-
|
|
149
|
-
- `tests/cli/
|
|
150
|
-
|
|
151
|
-
- `
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
本次结果(Node 24.20.0):
|
|
158
|
-
|
|
159
|
-
- 完整 gate 通过:typecheck、63 个源文件边界检查、35 个测试文件/425 项测试、build。
|
|
160
|
-
- tarball consumer 通过:typed consumer、维护 prompt asset、Writer、Pi load、CLI startup。
|
|
161
|
-
- 构建产物的真实 Linux PTY 冒烟通过:Home→Overview→Memory、授权文档分页、
|
|
162
|
-
终端 resize、逐层 Esc 返回和正常退出;确认未创建 SQLite、未改变 Markdown。
|
|
163
|
-
- `git diff --check` 通过。没有调用真实模型,也没有安装/修改用户生产宿主配置。
|
|
164
|
-
- 首次全量 gate 暴露了预览测试的分页断言错误,已修正;另一个既有网络测试依赖
|
|
165
|
-
`.invalid` 必然 DNS 失败,但此环境实测解析成 `198.18.0.87`。测试改为受控
|
|
166
|
-
`dns.lookup` 返回 ENOTFOUND,仍经过真实 NetworkClient 的错误处理;生产网络
|
|
167
|
-
代码未因该测试改变。复验全部通过。现有 TLS-IP 弃用和 SOCKS5 实验性警告仍存在。
|
|
168
|
-
|
|
169
|
-
尚未覆盖:真实 Desktop UI 的信任、宿主配置合并后的端到端启用;本次 Linux
|
|
170
|
-
终端检查不证明 Windows/macOS 真机体验或 CI。宿主安装和存活状态不做猜测,
|
|
171
|
-
必须在宿主核验。不存在统一的一键暂停所有消费者/撤销已披露记忆的能力。
|
|
172
|
-
已损坏或不支持版本的配置仍 fail closed,需要先在文件中修复;没有静默重置或
|
|
173
|
-
迁移。高级参数仍是受校验 JSON 表单,不是每个参数独立控件。
|
|
37
|
+
首次设置不再要求填写环境变量名和存储路径,沿用默认值;后续分别在密钥和高级
|
|
38
|
+
设置中修改。保存后提供可选的后续步骤,不自动调用模型或启动助手。默认只授权
|
|
39
|
+
个人记忆和用户表达,其他材料与项目仍需明确授权。
|
|
40
|
+
|
|
41
|
+
高级设置不再要求编辑 JSON。每次修改一项,显示当前值与新值,确认后调用原配置
|
|
42
|
+
验证器保存。输出长度可留空恢复接口默认;思考选项按 Responses / Chat 区分,
|
|
43
|
+
切换互斥参数时清除旧项;会话暂存可恢复内置默认值。其他配置及私有秘密保持不变。
|
|
44
|
+
|
|
45
|
+
## 导航与结果反馈
|
|
46
|
+
|
|
47
|
+
- 上下键选择、Enter 确认、多选 Space;每个分区有明确返回选项。
|
|
48
|
+
- 表单 Esc/Ctrl+C 取消当前操作;分区菜单取消回到调用它的菜单;首页取消退出。
|
|
49
|
+
高级设置的返回回到设置分区。首页记住刚才使用的入口。
|
|
50
|
+
- 保存、授权、导入、模型请求、重试、导出与宿主命令均有明确确认,默认不执行。
|
|
51
|
+
取消后续步骤不撤回已经保存的设置或已经排队的材料,不承诺 Undo。
|
|
52
|
+
- 首页不展开路径、队列、授权术语或多段说明;只有显式查看状态才打开已有 Runtime。
|
|
53
|
+
- 空记忆说明如何开始;导入缺权限时提供打开权限表单的入口,不自动增加授权。
|
|
54
|
+
授权保存后重新读取配置,仍未允许导入时不入队。
|
|
55
|
+
- 导入结果区分排队、处理完成和实际保留;失败给出检查入口,不将等待或取消当成功。
|
|
56
|
+
- Codex/Work 先显示将生成什么、写到哪里;技术配置、Skill、桥接可按需分页预览,
|
|
57
|
+
不再要求逐个读完才能生成。生成后明确说明如何在实际助手中安装和启用。
|
|
58
|
+
|
|
59
|
+
## 保持的边界
|
|
60
|
+
|
|
61
|
+
Canonical Markdown 是事实来源;SQLite 是持久队列、租约与来源存储,不是可重建
|
|
62
|
+
索引。TUI 使用 `operations.ts`、现有 import/flush/network-test、配置验证器和
|
|
63
|
+
接入生成器,不增加 Core 写权限、检索、跨项目读取或宿主信任能力。
|
|
64
|
+
|
|
65
|
+
读取使用与消费者相同的授权范围:个人记忆加所选已登记项目,与授权范围取交集。
|
|
66
|
+
文档是本次读取的分页快照,重新打开「查看记忆」刷新。可以查看文件目录,在自己的
|
|
67
|
+
编辑器中修改 Markdown;界面不新增写入接口。终端控制字符可见转义,原文不变。
|
|
68
|
+
|
|
69
|
+
项目登记、允许读取/发送、允许写入、允许发送的材料类型分别处理。AI 理解和导入
|
|
70
|
+
文档始终保留来源,不成为用户声明,不能单独作为遗忘用户来源内容的依据。
|
|
71
|
+
更改授权不热撤销已运行客户端,需要重启。长时间表单保存前比较配置是否已变化,
|
|
72
|
+
按对象内容比较,不把 JSON 键顺序变化误判为并发编辑;这不是跨文件原子事务或锁。
|
|
73
|
+
|
|
74
|
+
切换存储是选择另一份 store,不复制、合并或删除旧数据;先停写端,切换后重新生成
|
|
75
|
+
受影响的接入文件。密钥和配置是独立私有文件,不承诺跨文件提交原子性。
|
|
76
|
+
|
|
77
|
+
Runtime 不存在时查看状态不创建它。已存在时沿用 RuntimeStore 的打开路径,可能
|
|
78
|
+
执行已有的幂等 schema 初始化,不宣称数据库只读模式。记忆读取与 MCP read 仍不打开
|
|
79
|
+
SQLite。会话摘要只显示 ID、计数和交接状态;任务诊断不含聊天正文或模型响应正文。
|
|
80
|
+
|
|
81
|
+
Pi 的 package/settings/trust 交给 PATH 中的官方 `pi` 命令,采用参数数组、继承终端
|
|
82
|
+
并固定当前 COMMON_MEMORY_HOME,不拼接 shell。不推测真实宿主是否已经捕获或读取。
|
|
83
|
+
Codex/Work/MCP 只生成或导出配置,不修改宿主信任。WSL 环境不用于猜测助手运行位置。
|
|
84
|
+
新 bundle 目录和导出文件不覆盖已有目标,底层写入失败可能留下部分新文件。
|
|
85
|
+
|
|
86
|
+
`/memory-refresh` 和 Pi 原生命令仍属于实际会话;TUI 不用 cwd 猜测会话身份。
|
|
87
|
+
恢复交接前台运行同一 `session-drain` 入口;Ctrl+C 停止当前消费者,持久工作可恢复。
|
|
88
|
+
flush 不封正在进行的会话尾批;完整十次交互或实际退出才交接。
|
|
89
|
+
|
|
90
|
+
自动化 CLI、stdio MCP、JSON Hook 和 detached 消费者入口不变。非 TTY 不打开菜单;
|
|
91
|
+
直接配置表单明确报错。损坏配置不静默重置。CLI 技术状态输出不因中文界面改动而改变。
|
|
92
|
+
|
|
93
|
+
## 验证入口
|
|
94
|
+
|
|
95
|
+
- `tests/cli/tui.test.ts`:脚本化 prompt + 临时真实配置/文件,覆盖导航、取消、首页
|
|
96
|
+
焦点、首次引导、独立密钥、导入授权、逐项高级设置、存储不迁移和接入导出。
|
|
97
|
+
- `tests/cli/workbench-entries.test.ts`:非 TTY/CLI、协议错误通道、范围隔离、无正文
|
|
98
|
+
诊断、bundle 冲突/符号链接和生成结果一致性。
|
|
99
|
+
- `tests/cli/network-test.test.ts`:合成连接测试、取消、清理。
|
|
100
|
+
- `node scripts/verify.mjs`:Node 24.x 下类型、边界、全量测试和构建。
|
|
101
|
+
- `npm run test:consumer` / `npm run test:published`:隔离安装的本地/registry 包验证。
|
|
102
|
+
|
|
103
|
+
真实终端体验需另做 PTY 检查;脚本化 prompt 测试不证明终端显示效果。Linux 检查不
|
|
104
|
+
替代 macOS/Windows CI、真实 Desktop UI 信任流程或真实模型质量验证。历史验证记录
|
|
105
|
+
不能作为本次版本通过的证据。发布与平台边界见 [releasing.md](releasing.md)。
|
package/docs/usage.md
CHANGED
|
@@ -165,16 +165,23 @@ Research, explicit environment limits and acceptance evidence:
|
|
|
165
165
|
|
|
166
166
|
## Interactive workbench
|
|
167
167
|
|
|
168
|
-
Run **`common-memory`** in a terminal.
|
|
168
|
+
Run **`common-memory`** in a terminal. The Chinese task menu leads to:
|
|
169
169
|
|
|
170
|
-
|
|
|
170
|
+
| Menu | Tasks |
|
|
171
171
|
| --- | --- |
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
172
|
+
| 查看记忆 | Browse authorized documents with pagination; locate the Markdown files |
|
|
173
|
+
| 导入 Markdown | Import local Markdown; offer an explicit permission form if needed, never auto-grant |
|
|
174
|
+
| 连接 / 管理 AI 助手 | Pi's own manager; Codex/Work export summary and optional technical previews; MCP preview/export |
|
|
175
|
+
| 项目与权限 | Register/view/remove projects; independently manage reads, writes and material types |
|
|
176
|
+
| 模型与设置 | Model/API, independent key rotation, network/CA, synthetic connection test, individual advanced settings |
|
|
177
|
+
| 处理未完成任务 | Job diagnostics and retry; readable session summaries; queue processing and handoff recovery |
|
|
178
|
+
| 查看运行状态 | Local queue health; optional configuration and actual storage-path details |
|
|
179
|
+
|
|
180
|
+
First-time setup asks for the API address, model, API type and optional key, then offers
|
|
181
|
+
connection, permission and test steps that can be skipped. Advanced settings use menus
|
|
182
|
+
and numeric fields rather than JSON editing; each confirmed edit preserves unrelated
|
|
183
|
+
settings. The home menu remembers the last action. Saving a step is not undone by
|
|
184
|
+
cancelling a later step.
|
|
178
185
|
|
|
179
186
|
Use arrows and Enter, Space for multi-select, and Back to return. Esc/Ctrl+C cancels a
|
|
180
187
|
form; cancellation at Home exits. Pending work remains durable. No model call is made
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "common-memory-core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "User-owned Markdown memory with durable maintenance, Pi integration and local stdio MCP access.",
|
|
6
6
|
"repository": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"test:fixtures": "vitest run tests/v2",
|
|
57
57
|
"test:recovery": "vitest run tests/v2",
|
|
58
58
|
"test:consumer": "node scripts/consumer-smoke.mjs",
|
|
59
|
-
"test:published": "node scripts/consumer-smoke.mjs --registry-version 0.2.
|
|
59
|
+
"test:published": "node scripts/consumer-smoke.mjs --registry-version 0.2.1",
|
|
60
60
|
"test:remote-contract": "vitest run tests/memory-manager",
|
|
61
61
|
"prepack": "npm run build",
|
|
62
62
|
"release:check": "node scripts/check-release.mjs",
|