@shgroup/opencode-serenity-plugin 0.3.4 → 0.4.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/README.md +98 -78
- package/dist/activation.d.ts.map +1 -1
- package/dist/activation.js +26 -1
- package/dist/activation.js.map +1 -1
- package/dist/config-schema.d.ts +2 -1
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +1 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/git/cc-git-tool.d.ts +19 -0
- package/dist/git/cc-git-tool.d.ts.map +1 -0
- package/dist/git/cc-git-tool.js +170 -0
- package/dist/git/cc-git-tool.js.map +1 -0
- package/dist/git/index.d.ts +2 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +2 -0
- package/dist/git/index.js.map +1 -0
- package/dist/hooks/compacting.d.ts.map +1 -1
- package/dist/hooks/compacting.js +38 -1
- package/dist/hooks/compacting.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/init/init-wizard.d.ts +19 -13
- package/dist/init/init-wizard.d.ts.map +1 -1
- package/dist/init/init-wizard.js +247 -123
- package/dist/init/init-wizard.js.map +1 -1
- package/dist/skills/template-loader.d.ts +3 -1
- package/dist/skills/template-loader.d.ts.map +1 -1
- package/dist/skills/template-loader.js +6 -5
- package/dist/skills/template-loader.js.map +1 -1
- package/dist/state.d.ts +2 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +6 -0
- package/dist/state.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,129 +1,149 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Serenity(宁静号)
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **给 AI 一个它不能逃逸、但可以自由思考的工作空间。**
|
|
4
4
|
>
|
|
5
|
-
>
|
|
6
|
-
> 所有这些能力被限定在一个有明确边界的"认知容器"内——根内自由,根外隔离。
|
|
5
|
+
> 不是安全沙箱,是认知容器。
|
|
7
6
|
|
|
8
7
|
---
|
|
9
8
|
|
|
10
|
-
##
|
|
9
|
+
## 你遇到的可能是同一个问题
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
你用 OpenCode + Claude / DeepSeek 写代码。它很聪明——但聪明也意味着危险。
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|------|--------|--------|
|
|
16
|
-
| 认知容器 | 一个 `.serenity` 标记的 git 目录。Agent 在该目录内拥有受控的工作权限。 | 每个项目创建一个。`home-serenity/` 是家庭管理用,`my-project-serenity/` 是开发用。 |
|
|
17
|
-
| 本插件 | 认知容器的"蓝图"。定义了容器有什么能力、遵守什么约束。 | `npm install` + `install`,一次配置,所有容器共用。 |
|
|
13
|
+
有一天你发现 Agent 改了你不该改的文件。或者它跑了 `rm -rf`。或者三周后你忘了它当时做了什么决策、改了哪些文件、为什么那样改。
|
|
18
14
|
|
|
19
|
-
|
|
15
|
+
你开始犹豫:到底该给它多大权限?
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
Serenity 的回答:**不给权限——给它一个容器。**
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
---
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|-------------|------------|
|
|
27
|
-
| Agent 可以读写任何路径 | 读写限制在容器根内(P3 权限二分) |
|
|
28
|
-
| `bash` 执行不可审计 | `msm_exec` 执行可追踪、可审查 |
|
|
29
|
-
| 没有工作记录 | 每次多步工作自动创建 SESSION |
|
|
30
|
-
| 没有上下文持久化 | SKILL.md 自动注入 Agent 对话 |
|
|
21
|
+
## 认知容器:不是牢笼,是工作室
|
|
31
22
|
|
|
32
|
-
|
|
23
|
+
一个 Serenity 容器是一个 `.serenity` 标记的 git 目录。Agent 在这个目录内:
|
|
33
24
|
|
|
34
|
-
|
|
25
|
+
| 在容器里,它可以 | 出了容器,什么都不能 |
|
|
26
|
+
|------------------|---------------------|
|
|
27
|
+
| 自由读写任何文件 | 读写被硬阻断(P3) |
|
|
28
|
+
| 注册和执行 MSM 工具 | 裸 `bash` 降级为高危后备(D19) |
|
|
29
|
+
| 创建会话、记录决策 | — |
|
|
30
|
+
| 加载技能、自动注入上下文 | — |
|
|
35
31
|
|
|
36
|
-
|
|
32
|
+
类比:你给一个木匠一把钥匙。这把钥匙只能打开**他的工作间**。工作间里有所有他需要的工具。出了门,钥匙失效。
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
|---|------|------|--------|
|
|
40
|
-
| P1 | **有根** | 容器有且仅有一个 `.serenity` 标记的根目录 | `cc-fs` 工具 |
|
|
41
|
-
| P2 | **git 管** | 根目录必须在 git 管理下,所有变更可追溯 | 激活检查 + `msm_admin` 自动 commit |
|
|
42
|
-
| P3 | **权限二分** | 根内完全读写,根外零权限 | `permission-guards` hook(RR5) |
|
|
34
|
+
这不是限制——这是**专注**。
|
|
43
35
|
|
|
44
36
|
---
|
|
45
37
|
|
|
46
|
-
##
|
|
38
|
+
## 为什么不是又一个安全工具
|
|
39
|
+
|
|
40
|
+
Serenity 的边界不止于"禁止写入外部路径"。它建立了一套**可成长的工作环境**:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
你的项目/
|
|
44
|
+
├── .serenity ← 容器标记:这里是边界
|
|
45
|
+
├── AGENT_SESSIONS/ ← 每次多步工作自动生成 SESSION.md
|
|
46
|
+
├── .opencode/skills/ ← 容器专属技能(自动加载到 Agent 对话)
|
|
47
|
+
│ └── mech-registry.json ← 容器专属工具注册表
|
|
48
|
+
└── (你的代码和文件) ← Agent 在此自由工作
|
|
49
|
+
```
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
每当你启动一次多步任务,Agent 自动创建会话记录——目标、决策、进度、产出物。两周后回头看,仍然知道当时发生了什么。
|
|
49
52
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
| `msm_exec` | 容器唯一标准执行路径。替代裸 bash。自动注入 `SERENITY_ROOT` / `SERENITY_CCC` / `SERENITY_VERSION` 到子进程。 |
|
|
54
|
-
| `msm_admin` | 向容器注册新的 MSM。注册表变更自动 git commit。 |
|
|
55
|
-
| `cc-fs` | 安全文件操作。12 个子命令:`root` / `resolve` / `exists` / `list` / `tree` / `relative` / `mkdir` / `rm` / `mv` / `cp` / `touch` / `append`。写操作限定在容器根内。 |
|
|
56
|
-
| `session` | 工作会话全周期管理。`create` / `list` / `show` / `health` / `qa` / `archive` / `summary`。CCCs 应注册 `session-tool` MSM 包装 `session`。 |
|
|
57
|
-
| `cc-ck` | 容器健康检查。验证 P1(`.serenity` 存在)、P2(git 仓库)、P3(`opencode.json` 配置完整)。 |
|
|
58
|
-
| `eap` | EAP 认知质量框架 | 认知容器建立在 EAP 理论基础上——"思维的功能价值与其外部可重建性成正比"。提供完整的诊断方法论和实践指南 |
|
|
59
|
-
| `neat` | Neat 设计协作协议 | EAP 的实践方法论——小步对齐、显式决策、文档驱动。设计/需求对齐时的结构化协作流程 |
|
|
53
|
+
每当你需要一个新的可重复操作,注册一个 MSM——它变成可审计、可追踪、可复现的工具,而不是一段消失在 bash 历史里的命令。
|
|
54
|
+
|
|
55
|
+
**这是一个会随着你的使用而变强的环境。**
|
|
60
56
|
|
|
61
57
|
---
|
|
62
58
|
|
|
63
|
-
##
|
|
59
|
+
## 开箱即用:8 个内置工具
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
安装后 Agent 直接获得以下能力,不用写一行代码:
|
|
62
|
+
|
|
63
|
+
### 核心三角
|
|
64
|
+
|
|
65
|
+
| 工具 | 回答什么问题 |
|
|
66
|
+
|------|-------------|
|
|
67
|
+
| `msm_list` | 当前容器有哪些可执行的操作? |
|
|
68
|
+
| `msm_exec` | 安全执行一个已注册的操作。替代裸 bash。 |
|
|
69
|
+
| `msm_admin` | 为容器注册新操作。自动 git commit。 |
|
|
70
|
+
|
|
71
|
+
### 工作支撑
|
|
72
|
+
|
|
73
|
+
| 工具 | 回答什么问题 |
|
|
74
|
+
|------|-------------|
|
|
75
|
+
| `cc-fs` | 如何在容器内安全地操作文件?(12 个子命令:`root` `resolve` `exists` `list` `tree` `relative` `mkdir` `rm` `mv` `cp` `touch` `append`) |
|
|
76
|
+
| `session` | 多步工作的目标、决策、进度在哪? |
|
|
77
|
+
| `cc-ck` | 容器健康吗?P1 / P2 / P3 还正常吗? |
|
|
70
78
|
|
|
71
|
-
|
|
79
|
+
### 认知质量
|
|
72
80
|
|
|
73
|
-
|
|
|
74
|
-
|
|
75
|
-
|
|
|
76
|
-
|
|
|
81
|
+
| 工具 | 回答什么问题 |
|
|
82
|
+
|------|-------------|
|
|
83
|
+
| `eap` | 如何确保你的表达外部可重建?——完整 EAP 理论框架 |
|
|
84
|
+
| `neat` | 如何小步对齐、显式决策、文档驱动?——结构化协作方法论 |
|
|
85
|
+
|
|
86
|
+
这不是"8 个独立功能"——这是一个**工作系统**。每个工具各司其职,互相引用。
|
|
77
87
|
|
|
78
88
|
---
|
|
79
89
|
|
|
80
|
-
##
|
|
90
|
+
## 开始
|
|
81
91
|
|
|
82
92
|
```bash
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
# 2. 在 OpenCode 中输入
|
|
87
|
-
/serenity-init
|
|
93
|
+
npm install @shgroup/opencode-serenity-plugin
|
|
94
|
+
npx opencode-serenity-plugin install
|
|
88
95
|
```
|
|
89
96
|
|
|
90
|
-
|
|
97
|
+
然后在任何 git 仓库中,输入 slash command:
|
|
91
98
|
|
|
92
99
|
```
|
|
93
|
-
|
|
94
|
-
├── .serenity ← 容器标记文件
|
|
95
|
-
├── AGENT_SESSIONS/ ← 工作会话记录
|
|
96
|
-
├── .opencode/skills/
|
|
97
|
-
│ └── my-project-serenity/
|
|
98
|
-
│ ├── SKILL.md ← 容器主入口文档
|
|
99
|
-
│ └── references/
|
|
100
|
-
│ └── mech-registry.json
|
|
100
|
+
/serenity-init
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
TUI 会问你容器名(如 `my-project`)和一句话描述。确认后自动创建容器骨架——即刻可用。
|
|
104
104
|
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
session create --desc "my-first-task"
|
|
109
|
-
cc-fs tree --path src/
|
|
105
|
+
```bash
|
|
106
|
+
同一个插件可以管理多个容器。家目录一个,工作项目一个,实验一个。
|
|
107
|
+
每个容器独立,互不干扰。
|
|
110
108
|
```
|
|
111
109
|
|
|
112
110
|
---
|
|
113
111
|
|
|
114
|
-
##
|
|
112
|
+
## 它为什么泛用
|
|
115
113
|
|
|
116
|
-
|
|
114
|
+
Serenity 不绑定任何领域。你说它是给什么的?
|
|
115
|
+
|
|
116
|
+
| 场景 | 容器就是 |
|
|
117
|
+
|------|---------|
|
|
118
|
+
| 管理家庭数字系统(服务器、网络、NAS) | 家庭运维中枢 |
|
|
119
|
+
| 开发一个软件项目 | 受控开发环境 |
|
|
120
|
+
| 做 AI 实验、跑模型、记录结果 | 可复现实验舱 |
|
|
121
|
+
| 写字幕、做翻译、处理媒体文件 | 内容工作台 |
|
|
122
|
+
|
|
123
|
+
容器的**形状**取决于你注册什么 MSM、写什么 SKILL.md——Serenity 的**骨架**始终是一样的:边界 + 工具系统 + 会话记录 + 认知质量框架。
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 内在哲学:ACC/CCC 模型
|
|
128
|
+
|
|
129
|
+
如果你关心"为什么这样设计",这里有一张图:
|
|
117
130
|
|
|
118
131
|
```
|
|
119
|
-
ACC (Abstract Cognitive Container)
|
|
120
|
-
|
|
132
|
+
ACC (Abstract Cognitive Container) 本插件
|
|
133
|
+
│ 定义"认知容器应该有什么"
|
|
134
|
+
│ 8 个内置工具 + 6 个安全 hook + TUI
|
|
135
|
+
│
|
|
136
|
+
├── CCC (Concrete Cognitive Container) home-serenity/
|
|
137
|
+
├── CCC my-project-serenity/
|
|
138
|
+
└── CCC experiment-serenity/
|
|
121
139
|
```
|
|
122
140
|
|
|
123
|
-
|
|
141
|
+
ACC 是蓝图,CCC 是建筑。修改蓝图,build + install,所有建筑自动获得新功能。
|
|
142
|
+
|
|
143
|
+
这套模型的理论基础是 **EAP**(Explicit Abstraction Principle,显式抽象原则)——"思维的功能价值与其外部可重建性成正比"。Serenity 的每一个设计决策都从这句话推导而来。
|
|
124
144
|
|
|
125
|
-
|
|
145
|
+
日常使用时不需要这些术语。记住"Serenity"就够了。
|
|
126
146
|
|
|
127
147
|
---
|
|
128
148
|
|
|
129
|
-
**版本**: v0.
|
|
149
|
+
> **版本**: v0.3.4 | **许可**: MIT | **前置**: Node ≥ 20, OpenCode ≥ 1.16
|
package/dist/activation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../src/activation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../src/activation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQvD,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,GAAG,IAAI,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAyBrF"}
|
package/dist/activation.js
CHANGED
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
import { findGitRoot } from './util/git.js';
|
|
19
19
|
import { readSerenityFile } from './util/serenity-file.js';
|
|
20
20
|
import { buildSkillPath, validateSkillExists } from './util/path.js';
|
|
21
|
-
import { readFileSync } from 'node:fs';
|
|
21
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
22
|
+
import { join } from 'node:path';
|
|
22
23
|
import { setState, markReady, markDisabled, getReadyMachine } from './state.js';
|
|
23
24
|
import { log } from './util/log.js';
|
|
24
25
|
import { checkSerenityConfig } from './util/init-check.js';
|
|
@@ -89,6 +90,28 @@ async function activateAsync(cwdRoot, getClient) {
|
|
|
89
90
|
const detail = err instanceof Error ? err.message : String(err);
|
|
90
91
|
log.warn('phase2', 'SKILL.md read failed; will skip system.transform injection', { detail, skillPath });
|
|
91
92
|
}
|
|
93
|
+
// Phase 2 骨架检测 — SKILL.md 含骨架标记 → 需要 Agent 深度访谈
|
|
94
|
+
let needsPhase2 = false;
|
|
95
|
+
let phase2Prompt = null;
|
|
96
|
+
if (skillContent && skillContent.includes('<!-- Phase 2 Agent:')) {
|
|
97
|
+
const promptPath = join(cwdRoot, '.opencode', 'skills', cccName, 'scripts', 'generate-root-skill.prompt.md');
|
|
98
|
+
if (existsSync(promptPath)) {
|
|
99
|
+
try {
|
|
100
|
+
phase2Prompt = readFileSync(promptPath, 'utf8');
|
|
101
|
+
needsPhase2 = true;
|
|
102
|
+
log.info('phase2', 'skeleton detected — Phase 2 interview pending', { promptPath });
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
log.warn('phase2', 'Phase 2 prompt read failed; skipping interview trigger', {
|
|
106
|
+
promptPath,
|
|
107
|
+
error: err instanceof Error ? err.message : String(err),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
log.warn('phase2', 'Phase 2 prompt file missing; skeleton detected but cannot trigger interview', { promptPath });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
92
115
|
// 成功 — 写 state + mark ready
|
|
93
116
|
const state = Object.freeze({
|
|
94
117
|
activated: true,
|
|
@@ -96,6 +119,8 @@ async function activateAsync(cwdRoot, getClient) {
|
|
|
96
119
|
cccName,
|
|
97
120
|
skillPath,
|
|
98
121
|
skillContent,
|
|
122
|
+
needsPhase2,
|
|
123
|
+
phase2Prompt,
|
|
99
124
|
});
|
|
100
125
|
setState(state);
|
|
101
126
|
markReady();
|
package/dist/activation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"activation.js","sourceRoot":"","sources":["../src/activation.ts"],"names":[],"mappings":"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"}
|
package/dist/config-schema.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { z, type ZodError } from 'zod';
|
|
|
30
30
|
*
|
|
31
31
|
* 维护规则:新增 hook 时先在此处加常量,再在 createXxxHooks 工厂里用。
|
|
32
32
|
*/
|
|
33
|
-
export declare const HOOK_NAMES: readonly ["shell.env", "tool.execute.before", "tool.definition", "experimental.chat.system.transform", "experimental.session.compacting"];
|
|
33
|
+
export declare const HOOK_NAMES: readonly ["shell.env", "tool.execute.before", "tool.definition", "experimental.chat.system.transform", "experimental.chat.messages.transform", "experimental.session.compacting"];
|
|
34
34
|
/** hook 名类型(HOOK_NAMES 元素的 union) */
|
|
35
35
|
export type HookName = (typeof HOOK_NAMES)[number];
|
|
36
36
|
/**
|
|
@@ -232,6 +232,7 @@ export type RegistryFile = z.infer<typeof registryFileSchema>;
|
|
|
232
232
|
export declare const hookConfigSchema: z.ZodObject<{
|
|
233
233
|
"tool.execute.before"?: z.ZodOptional<z.ZodBoolean> | undefined;
|
|
234
234
|
"shell.env"?: z.ZodOptional<z.ZodBoolean> | undefined;
|
|
235
|
+
"experimental.chat.messages.transform"?: z.ZodOptional<z.ZodBoolean> | undefined;
|
|
235
236
|
"experimental.chat.system.transform"?: z.ZodOptional<z.ZodBoolean> | undefined;
|
|
236
237
|
"experimental.session.compacting"?: z.ZodOptional<z.ZodBoolean> | undefined;
|
|
237
238
|
"tool.definition"?: z.ZodOptional<z.ZodBoolean> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGvC;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGvC;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,mLAOsB,CAAC;AAE9C,qCAAqC;AACrC,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;mBAYzB,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsC1B,CAAC;AAEH,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,mBAAmB;AACnB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAOjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,gDAAgD;AAChD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB;;;;;;;iBAMuD,CAAC;AAErF,eAAe;AACf,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAwB7B,CAAC;AAEH,eAAe;AACf,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAExD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IACzB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAExC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAE7E;AAID,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAEvF;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAEzE;AAID,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAE3E"}
|
package/dist/config-schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cc-git-tool.ts — CCC git 管理工具(ACC 内置 tool)
|
|
3
|
+
*
|
|
4
|
+
* 提供无 bash 依赖的 git 操作,覆盖最频繁的无风险操作。
|
|
5
|
+
* pull/merge/rebase/conflict resolution 不 Mech 化 — Agent 协调 + bash 人工决策。
|
|
6
|
+
*
|
|
7
|
+
* 子命令:
|
|
8
|
+
* status — git status --porcelain(返回 JSON)
|
|
9
|
+
* commit — git add -A && git commit -m <msg>
|
|
10
|
+
* push — git push origin <current-branch>
|
|
11
|
+
* log — git log --oneline [-n <count>]
|
|
12
|
+
*
|
|
13
|
+
* 冲突约定(设计文档 §8.4):
|
|
14
|
+
* - push 被 non-fast-forward 拒绝时输出 [REJECTED] + 操作建议
|
|
15
|
+
* - push 成功时输出简洁摘要
|
|
16
|
+
*/
|
|
17
|
+
import { type ToolDefinition } from '@opencode-ai/plugin';
|
|
18
|
+
export declare const ccGitTool: ToolDefinition;
|
|
19
|
+
//# sourceMappingURL=cc-git-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-git-tool.d.ts","sourceRoot":"","sources":["../../src/git/cc-git-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA6ChE,eAAO,MAAM,SAAS,EAAE,cAwItB,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cc-git-tool.ts — CCC git 管理工具(ACC 内置 tool)
|
|
3
|
+
*
|
|
4
|
+
* 提供无 bash 依赖的 git 操作,覆盖最频繁的无风险操作。
|
|
5
|
+
* pull/merge/rebase/conflict resolution 不 Mech 化 — Agent 协调 + bash 人工决策。
|
|
6
|
+
*
|
|
7
|
+
* 子命令:
|
|
8
|
+
* status — git status --porcelain(返回 JSON)
|
|
9
|
+
* commit — git add -A && git commit -m <msg>
|
|
10
|
+
* push — git push origin <current-branch>
|
|
11
|
+
* log — git log --oneline [-n <count>]
|
|
12
|
+
*
|
|
13
|
+
* 冲突约定(设计文档 §8.4):
|
|
14
|
+
* - push 被 non-fast-forward 拒绝时输出 [REJECTED] + 操作建议
|
|
15
|
+
* - push 成功时输出简洁摘要
|
|
16
|
+
*/
|
|
17
|
+
import { execFileSync } from 'node:child_process';
|
|
18
|
+
import { tool } from '@opencode-ai/plugin';
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
import { findSerenityRoot } from '../fs/resolve-path.js';
|
|
21
|
+
import pkg from '../../package.json' with { type: 'json' };
|
|
22
|
+
const VERSION = pkg.version;
|
|
23
|
+
const SUBCOMMANDS = ['status', 'commit', 'push', 'log'];
|
|
24
|
+
// ── 内部 helper ──
|
|
25
|
+
function execGit(args, cwd) {
|
|
26
|
+
try {
|
|
27
|
+
const stdout = execFileSync('git', args, {
|
|
28
|
+
cwd,
|
|
29
|
+
encoding: 'utf8',
|
|
30
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
31
|
+
maxBuffer: 1024 * 1024, // 1MB
|
|
32
|
+
});
|
|
33
|
+
return { stdout: stdout.trimEnd(), stderr: '' };
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
const stderr = err.stderr?.toString() || '';
|
|
37
|
+
const stdout = err.stdout?.toString() || '';
|
|
38
|
+
return { stdout: stdout.trimEnd(), stderr: stderr.trimEnd() };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function getCurrentBranch(root) {
|
|
42
|
+
const { stdout } = execGit(['rev-parse', '--abbrev-ref', 'HEAD'], root);
|
|
43
|
+
if (!stdout)
|
|
44
|
+
throw new Error('cc-git: cannot determine current branch');
|
|
45
|
+
return stdout;
|
|
46
|
+
}
|
|
47
|
+
function hasChanges(root) {
|
|
48
|
+
const { stdout } = execGit(['status', '--porcelain'], root);
|
|
49
|
+
return stdout.length > 0;
|
|
50
|
+
}
|
|
51
|
+
function hasRemote(root) {
|
|
52
|
+
const { stdout } = execGit(['remote'], root);
|
|
53
|
+
return stdout.length > 0;
|
|
54
|
+
}
|
|
55
|
+
// ── Tool 定义 ──
|
|
56
|
+
export const ccGitTool = tool({
|
|
57
|
+
description: `Serenity git utility (v${VERSION}). ` +
|
|
58
|
+
`Git operations for the CCC (Concrete Cognitive Container). ` +
|
|
59
|
+
`Subcommands: status (porcelain status), commit (git add -A + commit), push (push to origin), log (oneline history). ` +
|
|
60
|
+
`Use this for git operations when bash is not available. ` +
|
|
61
|
+
`Conflict resolution is NOT automated — use bash for merges and rebases.`,
|
|
62
|
+
args: {
|
|
63
|
+
subcommand: z
|
|
64
|
+
.enum(SUBCOMMANDS)
|
|
65
|
+
.describe('Operation: status (git status --porcelain), ' +
|
|
66
|
+
'commit (git add -A + commit -m <msg>), ' +
|
|
67
|
+
'push (git push origin HEAD), ' +
|
|
68
|
+
'log (git log --oneline)'),
|
|
69
|
+
message: z
|
|
70
|
+
.string()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe('Commit message (required for commit subcommand)'),
|
|
73
|
+
n: z
|
|
74
|
+
.number()
|
|
75
|
+
.int()
|
|
76
|
+
.min(1)
|
|
77
|
+
.max(100)
|
|
78
|
+
.optional()
|
|
79
|
+
.default(10)
|
|
80
|
+
.describe('Number of commits for log subcommand (default: 10, max: 100)'),
|
|
81
|
+
},
|
|
82
|
+
execute: async (input, ctx) => {
|
|
83
|
+
const root = findSerenityRoot(ctx.directory);
|
|
84
|
+
const sub = input.subcommand;
|
|
85
|
+
// ── status ──
|
|
86
|
+
if (sub === 'status') {
|
|
87
|
+
const { stdout } = execGit(['status', '--porcelain'], root);
|
|
88
|
+
// Parse porcelain output
|
|
89
|
+
const lines = stdout ? stdout.split('\n') : [];
|
|
90
|
+
const entries = lines.map((line) => {
|
|
91
|
+
// porcelain format: XY filename (X=staging, Y=worktree)
|
|
92
|
+
const status = line.slice(0, 2).trim() || '??';
|
|
93
|
+
const file = line.slice(3);
|
|
94
|
+
return { status, file };
|
|
95
|
+
});
|
|
96
|
+
return JSON.stringify({
|
|
97
|
+
clean: entries.length === 0,
|
|
98
|
+
files: entries,
|
|
99
|
+
summary: entries.length === 0 ? '(clean)' : `${entries.length} file(s) with changes`,
|
|
100
|
+
}, null, 2);
|
|
101
|
+
}
|
|
102
|
+
// ── commit ──
|
|
103
|
+
if (sub === 'commit') {
|
|
104
|
+
if (!input.message || input.message.trim() === '') {
|
|
105
|
+
throw new Error('cc-git commit: missing required arg "message"');
|
|
106
|
+
}
|
|
107
|
+
if (!hasChanges(root)) {
|
|
108
|
+
return '(nothing to commit — working tree clean)';
|
|
109
|
+
}
|
|
110
|
+
const addResult = execGit(['add', '-A'], root);
|
|
111
|
+
if (addResult.stderr) {
|
|
112
|
+
throw new Error(`cc-git commit: git add failed\n${addResult.stderr}`);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const commitResult = execGit(['commit', '-m', input.message], root);
|
|
116
|
+
if (commitResult.stderr && commitResult.stderr.includes('nothing to commit')) {
|
|
117
|
+
return '(nothing to commit — working tree clean)';
|
|
118
|
+
}
|
|
119
|
+
// git commit outputs to stderr by convention; include both
|
|
120
|
+
const output = commitResult.stdout || commitResult.stderr || 'committed';
|
|
121
|
+
return output.trimEnd();
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const stderr = err.stderr?.toString() || err.message || '';
|
|
125
|
+
throw new Error(`cc-git commit: git commit failed\n${stderr}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// ── push ──
|
|
129
|
+
if (sub === 'push') {
|
|
130
|
+
if (!hasRemote(root)) {
|
|
131
|
+
throw new Error('cc-git push: no remote configured. Add one with:\n' +
|
|
132
|
+
' git remote add origin <url>');
|
|
133
|
+
}
|
|
134
|
+
const branch = getCurrentBranch(root);
|
|
135
|
+
// Check if there are commits to push
|
|
136
|
+
try {
|
|
137
|
+
execGit(['fetch', 'origin', branch], root);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// fetch failure is not fatal — proceed with push
|
|
141
|
+
}
|
|
142
|
+
const { stdout, stderr } = execGit(['push', 'origin', branch], root);
|
|
143
|
+
// Success
|
|
144
|
+
if (!stderr || stderr.includes('->') || stderr === '') {
|
|
145
|
+
return stdout || `Pushed to origin/${branch}`;
|
|
146
|
+
}
|
|
147
|
+
// Non-fast-forward rejection
|
|
148
|
+
if (stderr.includes('non-fast-forward') || stderr.includes('rejected') || stderr.includes('[rejected]')) {
|
|
149
|
+
return `[REJECTED] Push to origin/${branch} was rejected (non-fast-forward).\n\n远程有新的提交,本地落后。操作建议:
|
|
150
|
+
1. 先用 bash: git fetch origin ${branch}
|
|
151
|
+
2. 查看远程变更: git log HEAD..origin/${branch}
|
|
152
|
+
3. 合并或变基: git merge origin/${branch} 或 git rebase origin/${branch}
|
|
153
|
+
4. 有冲突则手动解决后: git add ... && git commit
|
|
154
|
+
5. 再次推送: cc-git push`;
|
|
155
|
+
}
|
|
156
|
+
// Other errors
|
|
157
|
+
throw new Error(`cc-git push failed:\n${stderr}`);
|
|
158
|
+
}
|
|
159
|
+
// ── log ──
|
|
160
|
+
if (sub === 'log') {
|
|
161
|
+
const n = input.n ?? 10;
|
|
162
|
+
const { stdout } = execGit(['log', '--oneline', `-n`, String(n)], root);
|
|
163
|
+
if (!stdout)
|
|
164
|
+
return '(no commits)';
|
|
165
|
+
return stdout;
|
|
166
|
+
}
|
|
167
|
+
throw new Error(`cc-git: unknown subcommand "${sub}"`);
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
//# sourceMappingURL=cc-git-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-git-tool.js","sourceRoot":"","sources":["../../src/git/cc-git-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compacting.d.ts","sourceRoot":"","sources":["../../src/hooks/compacting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"compacting.d.ts","sourceRoot":"","sources":["../../src/hooks/compacting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAkL5D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CA4BzE"}
|