@shgroup/opencode-serenity-plugin 0.2.2 → 0.3.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.
Files changed (68) hide show
  1. package/README.md +78 -150
  2. package/dist/activation.js +6 -6
  3. package/dist/activation.js.map +1 -1
  4. package/dist/ccc-status.d.ts +13 -0
  5. package/dist/ccc-status.d.ts.map +1 -0
  6. package/dist/ccc-status.js +70 -0
  7. package/dist/ccc-status.js.map +1 -0
  8. package/dist/config-schema.d.ts +1 -1
  9. package/dist/errors.d.ts +3 -3
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +7 -7
  12. package/dist/errors.js.map +1 -1
  13. package/dist/fs/file-system-tool.d.ts.map +1 -1
  14. package/dist/fs/file-system-tool.js +98 -8
  15. package/dist/fs/file-system-tool.js.map +1 -1
  16. package/dist/fs/resolve-path.d.ts +8 -8
  17. package/dist/fs/resolve-path.d.ts.map +1 -1
  18. package/dist/fs/resolve-path.js +9 -9
  19. package/dist/fs/resolve-path.js.map +1 -1
  20. package/dist/hooks/compacting.js +5 -5
  21. package/dist/hooks/compacting.js.map +1 -1
  22. package/dist/hooks/shell-env.d.ts +6 -6
  23. package/dist/hooks/shell-env.d.ts.map +1 -1
  24. package/dist/hooks/shell-env.js +12 -10
  25. package/dist/hooks/shell-env.js.map +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/init/init-wizard.d.ts +1 -1
  31. package/dist/init/init-wizard.js +9 -9
  32. package/dist/init/init-wizard.js.map +1 -1
  33. package/dist/msm.d.ts +3 -3
  34. package/dist/msm.d.ts.map +1 -1
  35. package/dist/msm.js +24 -22
  36. package/dist/msm.js.map +1 -1
  37. package/dist/session/session-tool.js +2 -2
  38. package/dist/session/session-tool.js.map +1 -1
  39. package/dist/skills/install-skill.js +4 -4
  40. package/dist/skills/install-skill.js.map +1 -1
  41. package/dist/skills/template-loader.d.ts +2 -2
  42. package/dist/skills/template-loader.d.ts.map +1 -1
  43. package/dist/skills/template-loader.js +4 -3
  44. package/dist/skills/template-loader.js.map +1 -1
  45. package/dist/tui.js +5 -5
  46. package/dist/tui.js.map +1 -1
  47. package/dist/types/index.d.ts +3 -3
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/index.js +1 -1
  50. package/dist/types/index.js.map +1 -1
  51. package/dist/util/init.d.ts +6 -6
  52. package/dist/util/init.d.ts.map +1 -1
  53. package/dist/util/init.js +9 -9
  54. package/dist/util/init.js.map +1 -1
  55. package/dist/util/msm-call.js +3 -3
  56. package/dist/util/msm-call.js.map +1 -1
  57. package/dist/util/msm-exec-runtime.d.ts.map +1 -1
  58. package/dist/util/msm-exec-runtime.js +11 -0
  59. package/dist/util/msm-exec-runtime.js.map +1 -1
  60. package/dist/util/path.d.ts +4 -4
  61. package/dist/util/path.d.ts.map +1 -1
  62. package/dist/util/path.js +6 -6
  63. package/dist/util/path.js.map +1 -1
  64. package/dist/util/serenity-file.d.ts +6 -6
  65. package/dist/util/serenity-file.d.ts.map +1 -1
  66. package/dist/util/serenity-file.js +7 -7
  67. package/dist/util/serenity-file.js.map +1 -1
  68. package/package.json +2 -2
package/README.md CHANGED
@@ -1,199 +1,127 @@
1
1
  # @shgroup/opencode-serenity-plugin
2
2
 
3
- > **v0.2.0**Serenity 认知基础设施的 [OpenCode](https://github.com/open-code-ai/opencode) 平台插件层。
3
+ > **Serenity(宁静号)** OpenCode Agent 提供受控工作空间的插件。
4
4
  >
5
- > 提供 MSM 工具调用框架(`msm_list` / `msm_exec` / `msm_admin`)、
6
- > 安全文件系统操作(`file_system`)、会话管理(`session_tool`),
7
- > 以及 TUI slash command(`/serenity-init`、bash 开关)。
8
- >
9
- > 源码:[github.com/tellmewhattodo/opencode-serenity-plugin](https://github.com/tellmewhattodo/opencode-serenity-plugin)
5
+ > 安装后,Agent 自动获得安全文件操作、可审计命令执行、工作会话追踪等能力。
6
+ > 所有这些能力被限定在一个有明确边界的"认知容器"内——根内自由,根外隔离。
10
7
 
11
8
  ---
12
9
 
13
- ## 安装
14
-
15
- ### 前置条件
10
+ ## 这是什么
16
11
 
17
- | 条件 | 要求 |
18
- |------|------|
19
- | Node.js | >= 20 |
20
- | 包管理器 | pnpm |
21
- | OpenCode 版本 | >= 1.16 |
12
+ Serenity 是一个 [OpenCode](https://github.com/open-code-ai/opencode) 平台插件。它的核心资产是**认知容器**(Cognitive Container):
22
13
 
23
- ### 标准安装(推荐)
14
+ | 概念 | 是什么 | 怎么用 |
15
+ |------|--------|--------|
16
+ | 认知容器 | 一个 `.serenity` 标记的 git 目录。Agent 在该目录内拥有受控的工作权限。 | 每个项目创建一个。`home-serenity/` 是家庭管理用,`my-project-serenity/` 是开发用。 |
17
+ | 本插件 | 认知容器的"蓝图"。定义了容器有什么能力、遵守什么约束。 | `npm install` + `install`,一次配置,所有容器共用。 |
24
18
 
25
- ```bash
26
- npm install @shgroup/opencode-serenity-plugin
27
- npx opencode-serenity-plugin install
28
- ```
29
-
30
- ### 从源码构建(贡献者用)
31
-
32
- ```bash
33
- git clone git@github.com:tellmewhattodo/opencode-serenity-plugin.git
34
- cd opencode-serenity-plugin
35
- pnpm install
36
- pnpm build
37
- npx opencode-serenity-plugin install
38
- ```
19
+ 类比:插件是操作系统,认知容器是用户目录——装一次 OS,在各个目录下工作。
39
20
 
40
- `install` 命令的结果:
21
+ ### 为什么需要认知容器
41
22
 
42
- | 配置目标 | 写入位置 | 作用 |
43
- |---------|----------|------|
44
- | 项目级 | 当前目录 `opencode.json` | 注册 5 个自定义工具(`msm_list` / `msm_exec` / `msm_admin` / `file_system` / `session_tool`) |
45
- | 全局级 | `~/.config/opencode/tui.json` | 注册 slash command(`/serenity-init`、`/serenity-bash-on/off/status`) |
23
+ OpenCode Agent 原生的 `bash`、`read`、`edit`、`write` 可以访问整个文件系统。Serenity 加上一层边界:
46
24
 
47
- ### 手动配置
25
+ | 无 Serenity | 有 Serenity |
26
+ |-------------|------------|
27
+ | Agent 可以读写任何路径 | 读写限制在容器根内(P3 权限二分) |
28
+ | `bash` 执行不可审计 | `msm_exec` 执行可追踪、可审查 |
29
+ | 没有工作记录 | 每次多步工作自动创建 SESSION |
30
+ | 没有上下文持久化 | SKILL.md 自动注入 Agent 对话 |
48
31
 
49
- 当 `install` 命令不可用或不适用时,手动编辑:
32
+ ---
50
33
 
51
- ```jsonc
52
- // opencode.json(项目根)
53
- {
54
- "plugin": [
55
- "file:///absolute/path/to/opencode-serenity-plugin/dist/index.js"
56
- ]
57
- }
34
+ ## 三个硬约束
58
35
 
59
- // ~/.config/opencode/tui.json(全局,slash command 可见性)
60
- {
61
- "plugin": [
62
- "file:///absolute/path/to/opencode-serenity-plugin/dist/tui.js"
63
- ]
64
- }
65
- ```
36
+ 每个认知容器遵守三条原则,由插件自动执行:
66
37
 
67
- ### 快速验证
38
+ | # | 原则 | 含义 | 谁执行 |
39
+ |---|------|------|--------|
40
+ | P1 | **有根** | 容器有且仅有一个 `.serenity` 标记的根目录 | `file_system` 工具 |
41
+ | P2 | **git 管** | 根目录必须在 git 管理下,所有变更可追溯 | 激活检查 + `msm_admin` 自动 commit |
42
+ | P3 | **权限二分** | 根内完全读写,根外零权限 | `permission-guards` hook(RR5) |
68
43
 
69
- 插件加载后在 opencode 中查询:
44
+ ---
70
45
 
71
- ```
72
- msm_list
73
- ```
46
+ ## 6 个工具
74
47
 
75
- 期待输出包含以下注册项:
48
+ 安装后 Agent 获得以下工具,替代裸 bash 和原生文件操作:
76
49
 
77
- | 名称 | 技能 | 类别 | 描述 |
78
- |------|------|------|------|
79
- | `msm_list` | serenity-plugin | mech | List all available MSM |
80
- | `msm_exec` | serenity-plugin | mech | Execute a registered MSM |
81
- | `msm_admin` | serenity-plugin | mech | Register or deregister an MSM |
82
- | `file_system` | serenity-plugin | mech | Serenity file-system utility |
83
- | `session_tool` | serenity-plugin | semi-mech | Session lifecycle management |
50
+ | 工具 | 作用 |
51
+ |------|------|
52
+ | `msm_list` | 查看当前容器已注册的可执行操作(MSM)。**任何 shell 操作前先调这个。** |
53
+ | `msm_exec` | 容器唯一标准执行路径。替代裸 bash。自动注入 `SERENITY_ROOT` / `SERENITY_CCC` / `SERENITY_VERSION` 到子进程。 |
54
+ | `msm_admin` | 向容器注册新的 MSM。注册表变更自动 git commit。 |
55
+ | `file_system` | 安全文件操作。12 个子命令:`root` / `resolve` / `exists` / `list` / `tree` / `relative` / `mkdir` / `rm` / `mv` / `cp` / `touch` / `append`。写操作限定在容器根内。 |
56
+ | `session_tool` | 工作会话全周期管理。`create` / `list` / `show` / `health` / `qa` / `archive` / `summary`。 |
57
+ | `ccc_status` | 容器健康检查。验证 P1(`.serenity` 存在)、P2(git 仓库)、P3(`opencode.json` 配置完整)。 |
84
58
 
85
- ### 开发期快速迭代
59
+ ---
86
60
 
87
- 修改源码后不需要重复 clone:
61
+ ## 安装
88
62
 
89
63
  ```bash
90
- pnpm build # 仅编译
91
- npx opencode-serenity-plugin install # 重新写入配置
92
- # 或使用 serenity-plugin-develop-kit MSM 自动执行 typecheck → test → build → install
64
+ # 前置:Node >= 20,OpenCode >= 1.16
65
+ npm install @shgroup/opencode-serenity-plugin
66
+ npx opencode-serenity-plugin install
93
67
  ```
94
68
 
95
- ---
96
-
97
- ## 功能清单
98
-
99
- ### 5 个 OpenCode 自定义工具
100
-
101
- | 工具名 | 类别 | 职责 |
102
- |--------|------|------|
103
- | `msm_list` | mech | 查询 `mech-registry.json`,列出所有已注册 MSM 及其描述。`msm_exec` 的前置查询步骤。 |
104
- | `msm_exec` | mech | 执行已注册 MSM。参数 `msm_name` + `args: string[]`。替代裸 bash 的安全命令入口。 |
105
- | `msm_admin` | mech | 注册/注销 MSM。单 tool + `action` enum(`register` / `deregister`)。注册表变更自动 git commit。 |
106
- | `file_system` | mech | 安全文件系统操作。10 个子命令:`root` / `resolve` / `exists` / `list` / `relative` / `mkdir` / `rm` / `mv` / `cp` / `touch`。所有写操作限制在 `.serenity` 根目录内,保护 `.serenity` 标记文件和根目录自身不被删除。 |
107
- | `session_tool` | semi-mech | 会话生命周期管理。7 个子命令:`list` / `show` / `create` / `health` / `archive` / `summary` / `qa`。管理 `AGENT_SESSIONS/` 目录下的会话记录。 |
108
-
109
- ### 系统 Hook
69
+ `install` 写入两处配置:
110
70
 
111
- | Hook | 执行时机 | 职责 |
112
- |---------|----------|------|
113
- | `tool.execute.before` | 每个工具调用前 | 路径守卫:`read`/`edit`/`write`/`grep`/`glob`/`webfetch``path` 参数强制在 `cwdRoot` 内(含 symlink 防御)。bash 静默拒绝开关:被禁用时 AI 收到 `"bash is disabled by user, use msm instead"`。 |
114
- | `experimental.chat.system.transform` | 新 session 首次激活 | 注入 `/.opencode/skills/<实例名>/SKILL.md` 全文到 system prompt 末尾。 |
115
- | `experimental.session.compacting` | 压缩事件 | 注入 serenity 关键状态(实例名、路径、激活状态)。 |
116
- | `experimental.tool.definition` | 工具定义阶段 | 向 `task` 工具描述注入精简 serenity context(使 subagent 也能感知 serenity 环境)。 |
117
- | `shell.env` | shell 执行前 | 注入环境变量 `HOME_SERENITY_ROOT`(实例根路径)、`SERENITY_INSTANCE`(实例名)。 |
118
- | `event: permission.asked` | 权限弹窗触发时 | cwdRoot 内文件操作自动回复 `always`。 |
119
-
120
- ### TUI Slash Command
121
-
122
- | 命令 | 作用 |
123
- |------|------|
124
- | `/serenity-init` | 将当前 git 仓库初始化为 serenity 实例:创建 `/.serenity` + `git commit -m "chore: initialize serenity (instance: <name>)"`。 |
125
- | `/serenity-bash-on` | 启用 bash 工具。 |
126
- | `/serenity-bash-off` | 禁用 bash 工具。AI 对 bash 的任何调用收到 `"bash is disabled by user, use msm instead"` 错误。 |
127
- | `/serenity-bash-status` | 显示当前 bash 启用/禁用状态。 |
71
+ | 目标 | 路径 | 作用 |
72
+ |------|------|------|
73
+ | 项目级 | 当前目录 `opencode.json` | 注册 6 个工具 |
74
+ | 全局级 | `~/.config/opencode/tui.json` | 注册 `/serenity-init` slash command |
128
75
 
129
76
  ---
130
77
 
131
- ## 开发指南
132
-
133
- ### 标准开发循环
78
+ ## 创建认知容器
134
79
 
135
80
  ```bash
136
- pnpm typecheck # 编译检查,零 LLM 推理
137
- pnpm test # 执行全部 382 个测试(vitest)
138
- pnpm build # 编译到 dist/
139
- pnpm opencode-serenity-plugin install # 安装到当前 project
140
- ```
81
+ # 1. 进入 git 管理的目录
82
+ mkdir my-project && cd my-project && git init
141
83
 
142
- 推荐使用 `serenity-plugin-develop-kit` MSM 工具自动执行上述 4 步(typecheck → test → build → install),遇非零即停,提供完整审计可追溯性。
84
+ # 2. OpenCode 中输入
85
+ /serenity-init
86
+ ```
143
87
 
144
- ### 测试架构
88
+ TUI 会询问容器前缀(如 `my-project`)和一句话描述。确认后自动创建:
145
89
 
146
- ```bash
147
- pnpm test # 全部 382 个测试
148
- pnpm test -- --watch # 监视模式
149
- pnpm test tests/msm.test.ts # 单文件测试
90
+ ```
91
+ my-project-serenity/
92
+ ├── .serenity ← 容器标记文件
93
+ ├── AGENT_SESSIONS/ 工作会话记录
94
+ ├── .opencode/skills/
95
+ │ └── my-project-serenity/
96
+ │ ├── SKILL.md ← 容器主入口文档
97
+ │ └── references/
98
+ │ └── mech-registry.json
150
99
  ```
151
100
 
152
- 测试文件按模块分组于 `tests/`:
101
+ 初始化后立即可用:
153
102
 
154
- | 文件 | 用例数 | 覆盖范围 |
155
- |------|--------|---------|
156
- | `tests/msm.test.ts` | — | MSM 工具(list/exec/admin) |
157
- | `tests/fs-file-system-tool.test.ts` | 40 | 全部 10 个文件系统子命令 + 安全边界 |
158
- | `tests/util-*.test.ts` | — | 各 util 函数(init / serenity-file / log 等) |
159
- | `tests/session-*.test.ts` | — | 会话管理各子命令 |
160
- | `tests/hooks/*.test.ts` | — | Hook 行为(permission-guards / compacting /
161
- tool-definition / auto-reply) |
162
- | `tests/tui*.test.ts` | — | TUI slash command |
163
- | `tests/errors.test.ts` | — | 错误类层级 |
103
+ ```
104
+ msm_list # 查看已注册 MSM
105
+ ccc_status # 验证容器健康状态
106
+ session_tool create --desc "my-first-task"
107
+ file_system tree --path src/
108
+ ```
164
109
 
165
110
  ---
166
111
 
167
- ## 架构模型:Template-Instance
112
+ ## 概念模型(深入阅读)
113
+
114
+ 如果你关心"为什么这样设计",Serenity 的底层模型是 **ACC/CCC 分层**:
168
115
 
169
116
  ```
170
- opencode-serenity-plugin ← template(持久源,source of truth
171
- build + install
172
- serenity 实例目录(如 home-serenity/) ← instance(可重建的下游 artifact)
117
+ ACC (Abstract Cognitive Container) → 本插件(持久源,定义"什么是容器"
118
+ └── CCC (Concrete Cognitive Container) → 每个 `xxx-serenity/` 目录(可操作实例,可从 ACC 重建)
173
119
  ```
174
120
 
175
- | 角色 | 特征 |
176
- |------|------|
177
- | **template**(plugin 仓) | durable,不可替代,GitHub 发布源 |
178
- | **instance**(serenity 目录) | replicable,可删除后重新 build + install |
179
- | **关系** | 单向模板→实例。不存在"双真源防漂移"。修改 plugin 后必须重新 build + install。 |
180
-
181
- ---
182
-
183
- ## 关联文档
121
+ 关系:ACC 是蓝图,CCC 是建筑。修改插件(ACC) build + install → 所有 CCC 自动获得新能力。
184
122
 
185
- | 主题 | 文档路径 |
186
- |------|---------|
187
- | 范围层(RR1-RR7,终版) | [`docs/requirements-v0-scope.md`](docs/requirements-v0-scope.md) |
188
- | 架构设计(两阶段 init + 模块分解) | [`docs/architecture-v0.md`](docs/architecture-v0.md) |
189
- | 接口契约(6 契约 + 13 错误类) | [`docs/contract-v0.md`](docs/contract-v0.md) |
190
- | RR7 Init 实施记录 | [`docs/rr7-init-design.md`](docs/rr7-init-design.md) |
191
- | 重构方向(v1.11-v1.17) | [`docs/refactor-direction-v1.11.md`](docs/refactor-direction-v1.11.md) |
192
- | v0.1 候选实施(3/3 实施) | [`docs/v0.1-candidates.md`](docs/v0.1-candidates.md) |
193
- | MSM 自包含 RFC(S028) | [`docs/plugin-self-contained-msm-v1.md`](docs/plugin-self-contained-msm-v1.md) |
194
- | 设计方案索引(S031) | `AGENT_SESSIONS/2026-05-17--S031--plugin-next-round-requirements/SESSION.md` |
123
+ 日常使用时不需要这些术语——"Serenity" 或"认知容器"就够了。
195
124
 
196
125
  ---
197
126
 
198
- > **版本**: v0.1.0 (2026-06-15)
199
- > **作者**: yh + 宁静号 Agent
127
+ **版本**: v0.2.2
@@ -60,9 +60,9 @@ export function tryActivateSync(input, getClient) {
60
60
  */
61
61
  async function activateAsync(cwdRoot, getClient) {
62
62
  // RR1 — 读 /.serenity
63
- let instanceName;
63
+ let cccName;
64
64
  try {
65
- instanceName = readSerenityFile(cwdRoot);
65
+ cccName = readSerenityFile(cwdRoot);
66
66
  }
67
67
  catch (err) {
68
68
  const detail = err instanceof Error ? err.message : String(err);
@@ -71,8 +71,8 @@ async function activateAsync(cwdRoot, getClient) {
71
71
  // RR2 — 验证 SKILL.md
72
72
  let skillPath;
73
73
  try {
74
- skillPath = buildSkillPath(cwdRoot, instanceName);
75
- validateSkillExists(skillPath, cwdRoot, instanceName);
74
+ skillPath = buildSkillPath(cwdRoot, cccName);
75
+ validateSkillExists(skillPath, cwdRoot, cccName);
76
76
  }
77
77
  catch (err) {
78
78
  const detail = err instanceof Error ? err.message : String(err);
@@ -93,7 +93,7 @@ async function activateAsync(cwdRoot, getClient) {
93
93
  const state = Object.freeze({
94
94
  activated: true,
95
95
  cwdRoot,
96
- instanceName,
96
+ cccName,
97
97
  skillPath,
98
98
  skillContent,
99
99
  });
@@ -101,7 +101,7 @@ async function activateAsync(cwdRoot, getClient) {
101
101
  markReady();
102
102
  // v1.5 init-check:plugin 启动时自检 opencode.json 关键配置
103
103
  // 只 warn,不 patch
104
- checkSerenityConfig(cwdRoot, instanceName);
104
+ checkSerenityConfig(cwdRoot, cccName);
105
105
  // v1.7 config-patch:自动改主仓 opencode.json 让 cwdRoot 内 read/edit = allow
106
106
  // 用户 m0649 决定"全自动"——plugin 启动即生效(用户需重启 opencode 应用改动)
107
107
  if (getClient) {
@@ -1 +1 @@
1
- {"version":3,"file":"activation.js","sourceRoot":"","sources":["../src/activation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activation.js","sourceRoot":"","sources":["../src/activation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,yBAAyB,GAE1B,MAAM,wBAAwB,CAAC;AAahC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,SAAqB;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5B,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAErD,qBAAqB;IACrB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,YAAY,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,qCAAqC;IACrC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAC5B,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,2BAA2B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAE,kDAAkD;QAC5F,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,SAAqB;IACjE,qBAAqB;IACrB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,oBAAoB;IACpB,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,gDAAgD;IAChD,wCAAwC;IACxC,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,4DAA4D,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,4BAA4B;IAC5B,MAAM,KAAK,GAAkB,MAAM,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,IAAI;QACf,OAAO;QACP,OAAO;QACP,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,SAAS,EAAE,CAAC;IAEZ,kDAAkD;IAClD,iBAAiB;IACjB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtC,sEAAsE;IACtE,sDAAsD;IACtD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3D,IAAI,CAAC;oBACH,OAAO,SAAS,EAAwB,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,EAAE;oBACzD,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,uCAAuC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,QAAgB;IACxD,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvD,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ccc-status.ts — CCC status check tool (v0.3)
3
+ *
4
+ * Validates the three CCC principles:
5
+ * P1: .serenity file exists and is non-empty
6
+ * P2: root is inside a git repository
7
+ * P3: opencode.json plugin configuration is present
8
+ *
9
+ * Output is a JSON status report.
10
+ */
11
+ import { type ToolDefinition } from '@opencode-ai/plugin';
12
+ export declare const cccStatusTool: ToolDefinition;
13
+ //# sourceMappingURL=ccc-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ccc-status.d.ts","sourceRoot":"","sources":["../src/ccc-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOhE,eAAO,MAAM,aAAa,EAAE,cA0D1B,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * ccc-status.ts — CCC status check tool (v0.3)
3
+ *
4
+ * Validates the three CCC principles:
5
+ * P1: .serenity file exists and is non-empty
6
+ * P2: root is inside a git repository
7
+ * P3: opencode.json plugin configuration is present
8
+ *
9
+ * Output is a JSON status report.
10
+ */
11
+ import { existsSync } from 'node:fs';
12
+ import { resolve } from 'node:path';
13
+ import { tool } from '@opencode-ai/plugin';
14
+ import { findSerenityRoot } from './fs/resolve-path.js';
15
+ import { getState, ensureReady } from './state.js';
16
+ import pkg from '../package.json' with { type: 'json' };
17
+ const VERSION = pkg.version;
18
+ export const cccStatusTool = tool({
19
+ description: `CCC status health check (v${VERSION}). Validates three CCC principles: ` +
20
+ 'P1 (rooted — .serenity exists), P2 (git-managed), P3 (binary permissions — opencode.json present). ' +
21
+ 'Returns a JSON status report with pass/fail per principle.',
22
+ args: {},
23
+ execute: async (_input, ctx) => {
24
+ await ensureReady();
25
+ const state = getState();
26
+ const root = findSerenityRoot(ctx.directory);
27
+ // P1: .serenity file exists and is non-empty
28
+ const serenityPath = resolve(root, '.serenity');
29
+ const p1Pass = existsSync(serenityPath);
30
+ // Note: .serenity content is already validated during activation
31
+ // P2: git-managed — the state.activated implies git check passed
32
+ // (RR6 in activation.ts verifies git repo)
33
+ const p2Pass = state.activated;
34
+ // P3: opencode.json with plugin config
35
+ const opencodeJsonPath = resolve(root, 'opencode.json');
36
+ let p3Pass = false;
37
+ let p3Detail = '';
38
+ if (existsSync(opencodeJsonPath)) {
39
+ // Simple check: file exists. Full parse is done by activation.
40
+ p3Pass = true;
41
+ p3Detail = 'opencode.json found';
42
+ }
43
+ else {
44
+ p3Detail = 'opencode.json not found at CCC root';
45
+ }
46
+ const allPass = p1Pass && p2Pass && p3Pass;
47
+ const report = {
48
+ ccc: state.cccName,
49
+ root,
50
+ version: VERSION,
51
+ status: allPass ? 'healthy' : 'degraded',
52
+ principles: {
53
+ P1_rooted: {
54
+ pass: p1Pass,
55
+ detail: p1Pass ? '.serenity marker found' : '.serenity marker missing',
56
+ },
57
+ P2_git_managed: {
58
+ pass: p2Pass,
59
+ detail: p2Pass ? 'git repository verified' : 'not in a git repository',
60
+ },
61
+ P3_binary_permissions: {
62
+ pass: p3Pass,
63
+ detail: p3Detail,
64
+ },
65
+ },
66
+ };
67
+ return JSON.stringify(report, null, 2);
68
+ },
69
+ });
70
+ //# sourceMappingURL=ccc-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ccc-status.js","sourceRoot":"","sources":["../src/ccc-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAuB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAmB,IAAI,CAAC;IAChD,WAAW,EACT,6BAA6B,OAAO,qCAAqC;QACzE,qGAAqG;QACrG,4DAA4D;IAC9D,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE7C,6CAA6C;QAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,iEAAiE;QAEjE,iEAAiE;QACjE,2CAA2C;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;QAE/B,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjC,+DAA+D;YAC/D,MAAM,GAAG,IAAI,CAAC;YACd,QAAQ,GAAG,qBAAqB,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,qCAAqC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;QAE3C,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,KAAK,CAAC,OAAO;YAClB,IAAI;YACJ,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;YACxC,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B;iBACvE;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB;iBACvE;gBACD,qBAAqB,EAAE;oBACrB,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF,CAAC,CAAC"}
@@ -253,8 +253,8 @@ export declare const pluginConfigSchema: z.ZodObject<{
253
253
  disabled_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
254
254
  disabled_msms: z.ZodOptional<z.ZodArray<z.ZodString>>;
255
255
  msm_exec_format: z.ZodOptional<z.ZodEnum<{
256
- text: "text";
257
256
  json: "json";
257
+ text: "text";
258
258
  }>>;
259
259
  msm_exec_log: z.ZodOptional<z.ZodString>;
260
260
  msm_exec_timeout_ms: z.ZodOptional<z.ZodNumber>;
package/dist/errors.d.ts CHANGED
@@ -26,9 +26,9 @@ export declare class SerenityFileNotFoundError extends SerenityError {
26
26
  export declare class SerenityFileEmptyError extends SerenityError {
27
27
  constructor(path: string);
28
28
  }
29
- /** RR2 违反:.opencode/skills/<instanceName>/SKILL.md 不存在 */
29
+ /** RR2 违反:.opencode/skills/<cccName>/SKILL.md 不存在 */
30
30
  export declare class SkillNotFoundError extends SerenityError {
31
- constructor(cwdRoot: string, instanceName: string);
31
+ constructor(cwdRoot: string, cccName: string);
32
32
  }
33
33
  /** msm_exec 失败:MSM 不在注册表中 */
34
34
  export declare class MsmNotRegisteredError extends SerenityError {
@@ -68,7 +68,7 @@ export declare class InitGitCommitError extends SerenityError {
68
68
  constructor(reason: string);
69
69
  }
70
70
  /** v1.10 RR7:用户输入的 prefix 不是 kebab-case */
71
- export declare class InvalidInstanceNameError extends SerenityError {
71
+ export declare class InvalidCccNameError extends SerenityError {
72
72
  constructor(name: string);
73
73
  }
74
74
  /** msm_exec 失败:path-arg 解析为 cwdRoot 之外的路径(v0.1-2 path escape guard)*/
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kCAAkC;AAClC,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,+BAA+B;AAC/B,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,GAAG,EAAE,MAAM;CAIxB;AAED,8BAA8B;AAC9B,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,8BAA8B;AAC9B,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,IAAI,EAAE,MAAM;CAIzB;AAED,0DAA0D;AAC1D,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAIlD;AAED,6BAA6B;AAC7B,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,4BAA4B;AAC5B,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAI/C;AAED,gCAAgC;AAChC,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,sCAAsC;AACtC,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD;AAED,yCAAyC;AACzC,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAW9E;AAED,+CAA+C;AAC/C,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,MAAM,EAAE,MAAM;CAI3B;AAED,2CAA2C;AAC3C,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,IAAI,EAAE,MAAM;CAOzB;AAED,sEAAsE;AACtE,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAO9E;AAED,kEAAkE;AAClE,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAO9F;AAED,iCAAiC;AACjC,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,6BAA6B;AAC7B,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kCAAkC;AAClC,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,+BAA+B;AAC/B,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,GAAG,EAAE,MAAM;CAIxB;AAED,8BAA8B;AAC9B,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,8BAA8B;AAC9B,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,IAAI,EAAE,MAAM;CAIzB;AAED,qDAAqD;AACrD,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7C;AAED,6BAA6B;AAC7B,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,4BAA4B;AAC5B,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAI/C;AAED,gCAAgC;AAChC,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,OAAO,EAAE,MAAM;CAI5B;AAED,sCAAsC;AACtC,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD;AAED,yCAAyC;AACzC,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAW9E;AAED,+CAA+C;AAC/C,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,MAAM,EAAE,MAAM;CAI3B;AAED,2CAA2C;AAC3C,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,IAAI,EAAE,MAAM;CAOzB;AAED,sEAAsE;AACtE,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAO9E;AAED,kEAAkE;AAClE,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAO9F;AAED,iCAAiC;AACjC,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,6BAA6B;AAC7B,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js CHANGED
@@ -34,14 +34,14 @@ export class SerenityFileNotFoundError extends SerenityError {
34
34
  /** /.serenity 文件存在但内容为空或无效 */
35
35
  export class SerenityFileEmptyError extends SerenityError {
36
36
  constructor(path) {
37
- super(`/.serenity file at "${path}" is empty or contains only whitespace; expected a non-empty instance name`);
37
+ super(`/.serenity file at "${path}" is empty or contains only whitespace; expected a non-empty CCC name`);
38
38
  this.name = 'SerenityFileEmptyError';
39
39
  }
40
40
  }
41
- /** RR2 违反:.opencode/skills/<instanceName>/SKILL.md 不存在 */
41
+ /** RR2 违反:.opencode/skills/<cccName>/SKILL.md 不存在 */
42
42
  export class SkillNotFoundError extends SerenityError {
43
- constructor(cwdRoot, instanceName) {
44
- super(`SKILL.md not found at "${cwdRoot}/.opencode/skills/${instanceName}/SKILL.md"; serenity plugin requires RR2 (the instance skill must exist)`);
43
+ constructor(cwdRoot, cccName) {
44
+ super(`SKILL.md not found at "${cwdRoot}/.opencode/skills/${cccName}/SKILL.md"; serenity plugin requires RR2 (the CCC skill must exist)`);
45
45
  this.name = 'SkillNotFoundError';
46
46
  }
47
47
  }
@@ -111,11 +111,11 @@ export class InitGitCommitError extends SerenityError {
111
111
  }
112
112
  }
113
113
  /** v1.10 RR7:用户输入的 prefix 不是 kebab-case */
114
- export class InvalidInstanceNameError extends SerenityError {
114
+ export class InvalidCccNameError extends SerenityError {
115
115
  constructor(name) {
116
- super(`Invalid serenity prefix "${name}"; must be kebab-case ` +
116
+ super(`Invalid CCC prefix "${name}"; must be kebab-case ` +
117
117
  `(lowercase a-z, 0-9, dashes; no leading or trailing dash)`);
118
- this.name = 'InvalidInstanceNameError';
118
+ this.name = 'InvalidCccNameError';
119
119
  }
120
120
  }
121
121
  /** msm_exec 失败:path-arg 解析为 cwdRoot 之外的路径(v0.1-2 path escape guard)*/
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-system-tool.d.ts","sourceRoot":"","sources":["../../src/fs/file-system-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsFhE,eAAO,MAAM,cAAc,EAAE,cA4Q3B,CAAC"}
1
+ {"version":3,"file":"file-system-tool.d.ts","sourceRoot":"","sources":["../../src/fs/file-system-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsFhE,eAAO,MAAM,cAAc,EAAE,cA4W3B,CAAC"}