harnessbrew 0.4.0 → 0.5.2
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 +40 -0
- package/README.md +26 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +65 -7
- package/dist/cli.js.map +1 -1
- package/dist/core/doctor.d.ts +22 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +142 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/installations.d.ts +23 -1
- package/dist/core/installations.d.ts.map +1 -1
- package/dist/core/installations.js +48 -12
- package/dist/core/installations.js.map +1 -1
- package/dist/core/target-capabilities.d.ts +28 -0
- package/dist/core/target-capabilities.d.ts.map +1 -0
- package/dist/core/target-capabilities.js +34 -0
- package/dist/core/target-capabilities.js.map +1 -0
- package/dist/core/targets/claude-code.d.ts +3 -0
- package/dist/core/targets/claude-code.d.ts.map +1 -0
- package/dist/core/targets/claude-code.js +60 -0
- package/dist/core/targets/claude-code.js.map +1 -0
- package/dist/core/targets/codex.d.ts +3 -0
- package/dist/core/targets/codex.d.ts.map +1 -0
- package/dist/core/targets/codex.js +64 -0
- package/dist/core/targets/codex.js.map +1 -0
- package/dist/core/targets/planner.d.ts +5 -0
- package/dist/core/targets/planner.d.ts.map +1 -0
- package/dist/core/targets/planner.js +18 -0
- package/dist/core/targets/planner.js.map +1 -0
- package/dist/core/targets/registry.d.ts +4 -0
- package/dist/core/targets/registry.d.ts.map +1 -0
- package/dist/core/targets/registry.js +14 -0
- package/dist/core/targets/registry.js.map +1 -0
- package/dist/core/targets/renderers.d.ts +12 -0
- package/dist/core/targets/renderers.d.ts.map +1 -0
- package/dist/core/targets/renderers.js +157 -0
- package/dist/core/targets/renderers.js.map +1 -0
- package/dist/core/targets/transaction.d.ts +20 -0
- package/dist/core/targets/transaction.d.ts.map +1 -0
- package/dist/core/targets/transaction.js +478 -0
- package/dist/core/targets/transaction.js.map +1 -0
- package/dist/core/targets/types.d.ts +25 -0
- package/dist/core/targets/types.d.ts.map +1 -0
- package/dist/core/targets/types.js +2 -0
- package/dist/core/targets/types.js.map +1 -0
- package/dist/core/targets.d.ts +12 -4
- package/dist/core/targets.d.ts.map +1 -1
- package/dist/core/targets.js +143 -49
- package/dist/core/targets.js.map +1 -1
- package/dist/core/upgrades.d.ts.map +1 -1
- package/dist/core/upgrades.js +60 -17
- package/dist/core/upgrades.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 0.5.2 - 2026-08-13
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- automated publication now passes npm an explicit local tarball path instead of a Git dependency specifier
|
|
10
|
+
- release tests guard the exact artifact handoff between `npm pack` and `npm publish`
|
|
11
|
+
|
|
12
|
+
## 0.5.1 - 2026-08-13
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- npm package metadata now preserves the `harnessbrew` executable mapping in the published tarball
|
|
17
|
+
- package smoke tests run in clean CI environments without requiring an already-populated offline cache
|
|
18
|
+
- release automation checks out and validates the exact release tag, builds one immutable tarball, and publishes that same artifact with provenance
|
|
19
|
+
- release version consistency is now covered by an automated check across package metadata, source, changelog, and Git tags
|
|
20
|
+
|
|
21
|
+
## 0.5.0 - 2026-08-13
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- explicit capability matrix and pure installation planners for OpenAI Codex and Claude Code
|
|
26
|
+
- receipt schema v2 with transactional `symlink-directory`, `symlink-file`, `render-file`, `managed-block`, and `merge-config` operations
|
|
27
|
+
- target-native Agent rendering, Workflow/Prompt-to-Skill projection, managed Instruction installation, and key-owned MCP configuration merging
|
|
28
|
+
- user and project target scopes, including multiple placements of the same Formula on one Target
|
|
29
|
+
- `doctor` integrity diagnostics and `relink` repair commands
|
|
30
|
+
- end-to-end integration coverage across every supported Formula, Target, and scope combination
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Skill installation now links the complete directory so scripts, references, and other relative resources remain available
|
|
35
|
+
- Target identity is now based on Target plus destination instead of Target name alone
|
|
36
|
+
- upgrades regenerate every recorded Target placement and preserve unrelated user configuration
|
|
37
|
+
- MCP Formula entries use a portable JSON model whose credentials reference environment variable names only
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- shared `AGENTS.md`, Codex TOML, and Claude JSON updates preserve user-owned content during link, upgrade, unlink, and rollback
|
|
42
|
+
- modified or missing rendered files, links, managed blocks, and configuration keys are detected before destructive operations
|
|
43
|
+
- Adapter Formula linking now fails explicitly instead of falling back to guessed `${kind}s` directories
|
|
44
|
+
|
|
5
45
|
## 0.4.0 - 2026-08-12
|
|
6
46
|
|
|
7
47
|
### Added
|
package/README.md
CHANGED
|
@@ -11,7 +11,10 @@ HarnessBrew 不托管资产。个人、团队和第三方资产都保存在各
|
|
|
11
11
|
- 解析依赖、循环、缺失项与冲突
|
|
12
12
|
- 按 Git commit 将不可变内容安装到 Cellar
|
|
13
13
|
- 链接到 OpenAI Codex 和 Claude Code
|
|
14
|
-
-
|
|
14
|
+
- 以原生格式投递 Skill、Agent、Workflow、Prompt、Instruction 和 MCP
|
|
15
|
+
- 支持 user/project scope,以及同一 Target 的多实例
|
|
16
|
+
- 通过 Receipt 跟踪文件、配置键、受管区块所有权和 SHA-256 摘要
|
|
17
|
+
- 使用 `doctor` 诊断并通过 `relink` 修复 Target 漂移
|
|
15
18
|
- 检测可用升级,并在升级后保留 Agent target 链接
|
|
16
19
|
- 使用 `Harnessfile` 和 lockfile 在不同设备上复现环境
|
|
17
20
|
- 从 npm 安装并通过 GitHub Release 发布
|
|
@@ -135,6 +138,10 @@ Formula 的目录名称必须与 `name` 一致,目录类型必须与 `kind`
|
|
|
135
138
|
|
|
136
139
|
Git commit 是安装版本的唯一事实来源;Formula 不维护 `.snapshots` 或重复的 `history`。
|
|
137
140
|
|
|
141
|
+
MCP Formula 的入口是统一 JSON。stdio 配置使用 `command`、可选 `args` 和只包含环境变量名称的 `envVars`;HTTP 配置使用 `transport: "http"`、`url`、可选 `bearerTokenEnvVar` 与 `headersFromEnv`。HarnessBrew 不接受入口中的明文 `env` 密钥值。
|
|
142
|
+
|
|
143
|
+
`adapter` Formula 当前是可由 Git/Cellar 管理的扩展包,但内置 Target 不执行它。请使用不带 `--target` 的 `install` 保存;`link` 或 `install --target` 会明确拒绝,直到插件运行时接口开放。
|
|
144
|
+
|
|
138
145
|
## Target
|
|
139
146
|
|
|
140
147
|
当前内置:
|
|
@@ -148,7 +155,7 @@ Git commit 是安装版本的唯一事实来源;Formula 不维护 `.snapshots`
|
|
|
148
155
|
harnessbrew install code-review --target openai-codex
|
|
149
156
|
```
|
|
150
157
|
|
|
151
|
-
|
|
158
|
+
Codex Skill 默认安装到 `~/.agents/skills`,其他 Codex 配置使用 `~/.codex`;Claude Code 使用 `~/.claude`。Skill 以完整目录软链安装,因此 `scripts/`、`references/` 和 `assets/` 等相对资源会与 `SKILL.md` 一起生效。Workflow 和 Prompt 会被投影为带标准 frontmatter 的 Target Skill。Agent 则以统一 Markdown 作为源码:投递到 Codex 时确定性渲染为 `.codex/agents/<name>.toml`,投递到 Claude Code 时渲染为 `.claude/agents/<name>.md`。Instruction 在 Codex 的 `AGENTS.md` 中使用带所有权标记的受管区块,在 Claude Code 中链接为 `.claude/rules/<name>.md`;MCP 分别按 TOML 区块或 JSON 键合并。卸载这些共享配置不会覆盖用户内容。需要隔离安装时可使用:
|
|
152
159
|
|
|
153
160
|
```bash
|
|
154
161
|
harnessbrew install code-review \
|
|
@@ -156,6 +163,18 @@ harnessbrew install code-review \
|
|
|
156
163
|
--target-root /path/to/sandbox/.codex
|
|
157
164
|
```
|
|
158
165
|
|
|
166
|
+
Target 支持用户级与项目级 scope;`--project` 会隐式选择 project scope。同一 Formula 可以同时存在于两个 scope,Receipt 会按实际目标路径分别记录操作:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
harnessbrew link code-review --target openai-codex --scope user
|
|
170
|
+
harnessbrew link code-review --target openai-codex --scope project --project /path/to/repo
|
|
171
|
+
harnessbrew unlink code-review --target openai-codex --scope project --project /path/to/repo
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
项目级 Codex 资产使用项目中的 `.agents/skills`、`.codex/agents`、根 `AGENTS.md` 和 `.codex/config.toml`;Claude Code 使用 `.claude/skills`、`.claude/agents`、`.claude/rules` 和根 `.mcp.json`。当同一 Target 有多个实例时,unlink 必须指定 scope。
|
|
175
|
+
|
|
176
|
+
`harnessbrew doctor [formula]` 会校验 Cellar 文件摘要和每条 Target operation,区分目标缺失与被修改;`harnessbrew relink <formula>` 会在 Cellar 完整的前提下,按 Receipt 记录的 scope/root 强制重建 HarnessBrew 拥有的目标。可用 `--target`、`--scope` 和 `--project` 只修复一个实例。
|
|
177
|
+
|
|
159
178
|
也可以单独管理链接:
|
|
160
179
|
|
|
161
180
|
```bash
|
|
@@ -211,10 +230,12 @@ harnessbrew tap remove <owner/name>
|
|
|
211
230
|
harnessbrew untap <owner/name>
|
|
212
231
|
harnessbrew search [query] [--kind <kind>] [--target <target>]
|
|
213
232
|
harnessbrew info <formula>
|
|
214
|
-
harnessbrew install <formula> [--target <target>] [--target-root <path>]
|
|
233
|
+
harnessbrew install <formula> [--target <target>] [--scope <user|project>] [--project <path>] [--target-root <path>]
|
|
215
234
|
harnessbrew list
|
|
216
|
-
harnessbrew link <formula> --target <target> [--target-root <path>]
|
|
217
|
-
harnessbrew unlink <formula> --target <target> [--force]
|
|
235
|
+
harnessbrew link <formula> --target <target> [--scope <user|project>] [--project <path>] [--target-root <path>]
|
|
236
|
+
harnessbrew unlink <formula> --target <target> [--scope <user|project>] [--project <path>] [--force]
|
|
237
|
+
harnessbrew doctor [formula]
|
|
238
|
+
harnessbrew relink <formula> [--target <target>] [--scope <user|project>] [--project <path>]
|
|
218
239
|
harnessbrew update
|
|
219
240
|
harnessbrew outdated
|
|
220
241
|
harnessbrew upgrade [formula]
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4SD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAAiB,EACrB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ import { bundleCleanup, bundleInstall } from "./core/bundle.js";
|
|
|
8
8
|
import { resolveHarnessHome } from "./core/paths.js";
|
|
9
9
|
import { addTap, listTaps, removeTap, updateTaps } from "./core/taps.js";
|
|
10
10
|
import { VERSION } from "./version.js";
|
|
11
|
+
import { doctor, relinkFormula } from "./core/doctor.js";
|
|
11
12
|
const defaultIO = {
|
|
12
13
|
stdout: (message) => console.log(message),
|
|
13
14
|
stderr: (message) => console.error(message)
|
|
@@ -31,10 +32,17 @@ Commands:
|
|
|
31
32
|
uninstall Safely uninstall a formula
|
|
32
33
|
link Link an installed formula to an Agent target
|
|
33
34
|
unlink Remove a managed target link
|
|
35
|
+
doctor Check Cellar and Target integrity
|
|
36
|
+
relink Rebuild managed Target installations
|
|
34
37
|
update Fetch all registered taps
|
|
35
38
|
outdated List installed formulas with available changes
|
|
36
39
|
upgrade Upgrade formulas while preserving target links
|
|
37
40
|
bundle Rebuild or clean an environment from Harnessfile
|
|
41
|
+
|
|
42
|
+
Target placement options:
|
|
43
|
+
--scope <user|project> Select user or project installation scope
|
|
44
|
+
--project <path> Project root (implies --scope project)
|
|
45
|
+
--target-root <path> Override the target's native root
|
|
38
46
|
`;
|
|
39
47
|
function optionValue(args, name) {
|
|
40
48
|
const index = args.indexOf(name);
|
|
@@ -45,6 +53,26 @@ function optionValue(args, name) {
|
|
|
45
53
|
throw new HarnessBrewError(`Missing value for ${name}.`);
|
|
46
54
|
return value;
|
|
47
55
|
}
|
|
56
|
+
function targetOptions(args) {
|
|
57
|
+
const scopeValue = optionValue(args, "--scope");
|
|
58
|
+
const projectValue = optionValue(args, "--project");
|
|
59
|
+
if (scopeValue !== undefined && scopeValue !== "user" && scopeValue !== "project") {
|
|
60
|
+
throw new HarnessBrewError(`Unsupported target scope: ${scopeValue}`);
|
|
61
|
+
}
|
|
62
|
+
if (scopeValue === "user" && projectValue !== undefined) {
|
|
63
|
+
throw new HarnessBrewError("--project cannot be combined with --scope user.");
|
|
64
|
+
}
|
|
65
|
+
const scope = scopeValue ?? (projectValue === undefined ? "user" : "project");
|
|
66
|
+
const targetRoot = optionValue(args, "--target-root");
|
|
67
|
+
return {
|
|
68
|
+
scope,
|
|
69
|
+
...(targetRoot === undefined ? {} : { root: targetRoot }),
|
|
70
|
+
...(scope === "project" ? { projectRoot: path.resolve(projectValue ?? process.cwd()) } : {})
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function hasTargetPlacementOptions(args) {
|
|
74
|
+
return args.includes("--scope") || args.includes("--project") || args.includes("--target-root");
|
|
75
|
+
}
|
|
48
76
|
async function runTapCommand(args, home, io) {
|
|
49
77
|
const [action = "list", ...rest] = args;
|
|
50
78
|
if (action === "list") {
|
|
@@ -152,10 +180,9 @@ async function execute(args, io, options) {
|
|
|
152
180
|
if (targetValue !== undefined && !builtinTargets.includes(targetValue)) {
|
|
153
181
|
throw new HarnessBrewError(`Unsupported built-in target: ${targetValue}`);
|
|
154
182
|
}
|
|
155
|
-
const targetRoot = optionValue(args, "--target-root");
|
|
156
183
|
const receipts = targetValue === undefined
|
|
157
184
|
? await installFormula(home, name)
|
|
158
|
-
: await installForTarget(home, name, targetValue,
|
|
185
|
+
: await installForTarget(home, name, targetValue, targetOptions(args));
|
|
159
186
|
receipts.forEach((receipt) => io.stdout(`Installed ${receipt.coordinate} at ${receipt.commit.slice(0, 12)}.`));
|
|
160
187
|
return 0;
|
|
161
188
|
}
|
|
@@ -176,23 +203,54 @@ async function execute(args, io, options) {
|
|
|
176
203
|
const name = args[1];
|
|
177
204
|
const targetValue = optionValue(args, "--target");
|
|
178
205
|
if (name === undefined || targetValue === undefined) {
|
|
179
|
-
throw new HarnessBrewError(`Usage: harnessbrew ${command} <formula> --target <target> [--
|
|
206
|
+
throw new HarnessBrewError(`Usage: harnessbrew ${command} <formula> --target <target> [--scope <user|project>] [--project <path>]`);
|
|
180
207
|
}
|
|
181
208
|
if (!builtinTargets.includes(targetValue)) {
|
|
182
209
|
throw new HarnessBrewError(`Unsupported built-in target: ${targetValue}`);
|
|
183
210
|
}
|
|
184
211
|
if (command === "link") {
|
|
185
|
-
await linkFormula(home, name, targetValue,
|
|
186
|
-
...(optionValue(args, "--target-root") === undefined ? {} : { root: optionValue(args, "--target-root") })
|
|
187
|
-
});
|
|
212
|
+
await linkFormula(home, name, targetValue, targetOptions(args));
|
|
188
213
|
io.stdout(`Linked ${name} to ${targetValue}.`);
|
|
189
214
|
}
|
|
190
215
|
else {
|
|
191
|
-
await unlinkFormula(home, name, targetValue,
|
|
216
|
+
await unlinkFormula(home, name, targetValue, {
|
|
217
|
+
...(hasTargetPlacementOptions(args) ? targetOptions(args) : {}),
|
|
218
|
+
force: args.includes("--force")
|
|
219
|
+
});
|
|
192
220
|
io.stdout(`Unlinked ${name} from ${targetValue}.`);
|
|
193
221
|
}
|
|
194
222
|
return 0;
|
|
195
223
|
}
|
|
224
|
+
if (command === "doctor") {
|
|
225
|
+
const name = args[1]?.startsWith("--") === true ? undefined : args[1];
|
|
226
|
+
const report = await doctor(home, name);
|
|
227
|
+
if (report.healthy) {
|
|
228
|
+
io.stdout(`Doctor found no issues across ${report.checked} formula(s).`);
|
|
229
|
+
return 0;
|
|
230
|
+
}
|
|
231
|
+
report.findings.forEach((finding) => io.stderr([
|
|
232
|
+
finding.coordinate,
|
|
233
|
+
finding.kind,
|
|
234
|
+
finding.target,
|
|
235
|
+
finding.destination
|
|
236
|
+
].filter((value) => value !== undefined).join("\t")));
|
|
237
|
+
return 1;
|
|
238
|
+
}
|
|
239
|
+
if (command === "relink") {
|
|
240
|
+
const name = args[1];
|
|
241
|
+
if (name === undefined)
|
|
242
|
+
throw new HarnessBrewError("Usage: harnessbrew relink <formula> [--target <target>]");
|
|
243
|
+
const targetValue = optionValue(args, "--target");
|
|
244
|
+
if (targetValue !== undefined && !builtinTargets.includes(targetValue)) {
|
|
245
|
+
throw new HarnessBrewError(`Unsupported built-in target: ${targetValue}`);
|
|
246
|
+
}
|
|
247
|
+
await relinkFormula(home, name, {
|
|
248
|
+
...(hasTargetPlacementOptions(args) ? targetOptions(args) : {}),
|
|
249
|
+
...(targetValue === undefined ? {} : { target: targetValue })
|
|
250
|
+
});
|
|
251
|
+
io.stdout(`Relinked ${name}${targetValue === undefined ? "" : ` to ${targetValue}`}.`);
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
196
254
|
if (command === "outdated") {
|
|
197
255
|
const outdated = await findOutdated(home);
|
|
198
256
|
outdated.forEach((item) => io.stdout(item.available
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type InstallReceipt } from "./installations.js";
|
|
2
|
+
import { type BuiltinTarget, type LinkOptions } from "./targets.js";
|
|
3
|
+
export type DoctorFindingKind = "cellar-modified" | "target-missing" | "target-modified";
|
|
4
|
+
export interface DoctorFinding {
|
|
5
|
+
coordinate: string;
|
|
6
|
+
kind: DoctorFindingKind;
|
|
7
|
+
message: string;
|
|
8
|
+
target?: string;
|
|
9
|
+
destination?: string;
|
|
10
|
+
operationId?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DoctorReport {
|
|
13
|
+
checked: number;
|
|
14
|
+
healthy: boolean;
|
|
15
|
+
findings: DoctorFinding[];
|
|
16
|
+
}
|
|
17
|
+
export interface RelinkOptions extends LinkOptions {
|
|
18
|
+
target?: BuiltinTarget;
|
|
19
|
+
}
|
|
20
|
+
export declare function doctor(home: string, nameOrCoordinate?: string): Promise<DoctorReport>;
|
|
21
|
+
export declare function relinkFormula(home: string, nameOrCoordinate: string, options?: RelinkOptions): Promise<InstallReceipt>;
|
|
22
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEzF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAsBD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B3F;AAiED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { lstat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { HarnessBrewError } from "./errors.js";
|
|
4
|
+
import { listInstalled, verifyCellarIntegrity, writeReceipt } from "./installations.js";
|
|
5
|
+
import { linkFormula, targetDestination } from "./targets.js";
|
|
6
|
+
import { removeTargetOperation, verifyTargetOperation } from "./targets/transaction.js";
|
|
7
|
+
function matchingReceipts(receipts, nameOrCoordinate) {
|
|
8
|
+
if (nameOrCoordinate === undefined)
|
|
9
|
+
return receipts;
|
|
10
|
+
const matches = nameOrCoordinate.split("/").length === 3
|
|
11
|
+
? receipts.filter((receipt) => receipt.coordinate === nameOrCoordinate)
|
|
12
|
+
: receipts.filter((receipt) => receipt.coordinate.endsWith(`/${nameOrCoordinate}`));
|
|
13
|
+
if (matches.length === 0)
|
|
14
|
+
throw new HarnessBrewError(`Formula is not installed: ${nameOrCoordinate}`);
|
|
15
|
+
if (matches.length > 1)
|
|
16
|
+
throw new HarnessBrewError(`Installed formula name is ambiguous: ${nameOrCoordinate}`);
|
|
17
|
+
return matches;
|
|
18
|
+
}
|
|
19
|
+
async function destinationExists(destination) {
|
|
20
|
+
try {
|
|
21
|
+
await lstat(destination);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error.code === "ENOENT")
|
|
26
|
+
return false;
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export async function doctor(home, nameOrCoordinate) {
|
|
31
|
+
const receipts = matchingReceipts(await listInstalled(home), nameOrCoordinate);
|
|
32
|
+
const findings = [];
|
|
33
|
+
for (const receipt of receipts) {
|
|
34
|
+
try {
|
|
35
|
+
await verifyCellarIntegrity(receipt);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
findings.push({
|
|
39
|
+
coordinate: receipt.coordinate,
|
|
40
|
+
kind: "cellar-modified",
|
|
41
|
+
message: error.message
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
for (const operation of receipt.operations) {
|
|
45
|
+
try {
|
|
46
|
+
await verifyTargetOperation(operation);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const exists = await destinationExists(operation.destination);
|
|
50
|
+
findings.push({
|
|
51
|
+
coordinate: receipt.coordinate,
|
|
52
|
+
kind: exists ? "target-modified" : "target-missing",
|
|
53
|
+
target: operation.target,
|
|
54
|
+
destination: operation.destination,
|
|
55
|
+
operationId: operation.id,
|
|
56
|
+
message: error.message
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { checked: receipts.length, healthy: findings.length === 0, findings };
|
|
62
|
+
}
|
|
63
|
+
function placementSpecified(options) {
|
|
64
|
+
return options.scope !== undefined || options.root !== undefined || options.projectRoot !== undefined;
|
|
65
|
+
}
|
|
66
|
+
function legacyLinkOptions(receipt, operation) {
|
|
67
|
+
const target = operation.target;
|
|
68
|
+
if (receipt.kind === "workflow" || receipt.kind === "prompt") {
|
|
69
|
+
return { root: path.dirname(path.dirname(path.dirname(operation.destination))) };
|
|
70
|
+
}
|
|
71
|
+
if (receipt.kind === "skill" || receipt.kind === "agent") {
|
|
72
|
+
return { root: path.dirname(path.dirname(operation.destination)) };
|
|
73
|
+
}
|
|
74
|
+
if (receipt.kind === "instruction" && target === "claude-code") {
|
|
75
|
+
return { root: path.dirname(path.dirname(operation.destination)) };
|
|
76
|
+
}
|
|
77
|
+
if (receipt.kind === "mcp" && target === "claude-code" && path.basename(operation.destination) === ".claude.json") {
|
|
78
|
+
return {};
|
|
79
|
+
}
|
|
80
|
+
return { root: path.dirname(operation.destination) };
|
|
81
|
+
}
|
|
82
|
+
function operationLinkOptions(receipt, operation, requested) {
|
|
83
|
+
if (operation.scope !== undefined) {
|
|
84
|
+
return {
|
|
85
|
+
scope: operation.scope,
|
|
86
|
+
...(operation.root === undefined ? {} : { root: operation.root }),
|
|
87
|
+
...(operation.projectRoot === undefined ? {} : { projectRoot: operation.projectRoot })
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (requested.target === operation.target && placementSpecified(requested)) {
|
|
91
|
+
return {
|
|
92
|
+
...(requested.scope === undefined ? {} : { scope: requested.scope }),
|
|
93
|
+
...(requested.root === undefined ? {} : { root: requested.root }),
|
|
94
|
+
...(requested.projectRoot === undefined ? {} : { projectRoot: requested.projectRoot })
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return legacyLinkOptions(receipt, operation);
|
|
98
|
+
}
|
|
99
|
+
function selectedOperations(receipt, options) {
|
|
100
|
+
if (options.target === undefined)
|
|
101
|
+
return [...receipt.operations];
|
|
102
|
+
const candidates = receipt.operations.filter((operation) => operation.target === options.target);
|
|
103
|
+
if (candidates.length === 0) {
|
|
104
|
+
throw new HarnessBrewError(`Formula is not linked to ${options.target}: ${receipt.coordinate}`);
|
|
105
|
+
}
|
|
106
|
+
if (!placementSpecified(options)) {
|
|
107
|
+
if (candidates.length > 1) {
|
|
108
|
+
throw new HarnessBrewError(`Formula has multiple ${options.target} installations; specify --scope and --project.`);
|
|
109
|
+
}
|
|
110
|
+
return candidates;
|
|
111
|
+
}
|
|
112
|
+
const destination = targetDestination(receipt, options.target, options);
|
|
113
|
+
const selected = candidates.filter((operation) => operation.destination === destination);
|
|
114
|
+
if (selected.length === 0) {
|
|
115
|
+
throw new HarnessBrewError(`Formula is not linked at the selected ${options.target} scope: ${receipt.coordinate}`);
|
|
116
|
+
}
|
|
117
|
+
return selected;
|
|
118
|
+
}
|
|
119
|
+
export async function relinkFormula(home, nameOrCoordinate, options = {}) {
|
|
120
|
+
const [receipt] = matchingReceipts(await listInstalled(home), nameOrCoordinate);
|
|
121
|
+
if (receipt === undefined)
|
|
122
|
+
throw new HarnessBrewError(`Formula is not installed: ${nameOrCoordinate}`);
|
|
123
|
+
await verifyCellarIntegrity(receipt);
|
|
124
|
+
const selected = selectedOperations(receipt, options);
|
|
125
|
+
if (selected.length === 0)
|
|
126
|
+
throw new HarnessBrewError(`Formula has no target installations: ${receipt.coordinate}`);
|
|
127
|
+
let current = receipt;
|
|
128
|
+
for (const operation of selected) {
|
|
129
|
+
const linkOptions = operationLinkOptions(receipt, operation, options);
|
|
130
|
+
await removeTargetOperation(operation, true);
|
|
131
|
+
current.operations = current.operations.filter((candidate) => candidate.id !== operation.id);
|
|
132
|
+
current.links = current.links.filter((link) => link.path !== operation.destination);
|
|
133
|
+
if (!current.operations.some((candidate) => candidate.target === operation.target)
|
|
134
|
+
&& !current.links.some((link) => link.target === operation.target)) {
|
|
135
|
+
current.targets = current.targets.filter((target) => target !== operation.target);
|
|
136
|
+
}
|
|
137
|
+
await writeReceipt(home, current);
|
|
138
|
+
current = await linkFormula(home, current.coordinate, operation.target, linkOptions);
|
|
139
|
+
}
|
|
140
|
+
return current;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CatalogFormula } from "./formulas.js";
|
|
2
|
+
import type { TargetScope } from "./targets/types.js";
|
|
2
3
|
export interface InstalledFile {
|
|
3
4
|
path: string;
|
|
4
5
|
sha256: string;
|
|
@@ -7,10 +8,29 @@ export interface InstalledLink extends InstalledFile {
|
|
|
7
8
|
source: string;
|
|
8
9
|
target: string;
|
|
9
10
|
}
|
|
11
|
+
export type InstalledOperationType = "symlink-directory" | "symlink-file" | "render-file" | "merge-config" | "managed-block";
|
|
12
|
+
export interface InstalledOperation {
|
|
13
|
+
id: string;
|
|
14
|
+
type: InstalledOperationType;
|
|
15
|
+
target: string;
|
|
16
|
+
destination: string;
|
|
17
|
+
source?: string;
|
|
18
|
+
beforeDigest?: string;
|
|
19
|
+
installedDigest?: string;
|
|
20
|
+
ownedKeys?: string[];
|
|
21
|
+
marker?: string;
|
|
22
|
+
managedPrefix?: string;
|
|
23
|
+
configFormat?: "json" | "toml-block";
|
|
24
|
+
scope?: TargetScope;
|
|
25
|
+
root?: string;
|
|
26
|
+
projectRoot?: string;
|
|
27
|
+
createdDirectories: string[];
|
|
28
|
+
}
|
|
10
29
|
export interface InstallReceipt {
|
|
11
|
-
schemaVersion:
|
|
30
|
+
schemaVersion: 2;
|
|
12
31
|
coordinate: string;
|
|
13
32
|
kind: string;
|
|
33
|
+
description: string;
|
|
14
34
|
tap: string;
|
|
15
35
|
commit: string;
|
|
16
36
|
cellarPath: string;
|
|
@@ -22,6 +42,7 @@ export interface InstallReceipt {
|
|
|
22
42
|
supportedTargets: string[];
|
|
23
43
|
targets: string[];
|
|
24
44
|
links: InstalledLink[];
|
|
45
|
+
operations: InstalledOperation[];
|
|
25
46
|
installedAt: string;
|
|
26
47
|
}
|
|
27
48
|
export interface UninstallOptions {
|
|
@@ -33,6 +54,7 @@ export declare function listInstalled(home: string): Promise<InstallReceipt[]>;
|
|
|
33
54
|
export declare function resolveDependencies(home: string, root: CatalogFormula): Promise<CatalogFormula[]>;
|
|
34
55
|
export declare function installCatalogFormula(home: string, formula: CatalogFormula, requested: boolean): Promise<InstallReceipt>;
|
|
35
56
|
export declare function installFormula(home: string, nameOrCoordinate: string): Promise<InstallReceipt[]>;
|
|
57
|
+
export declare function verifyCellarIntegrity(receipt: InstallReceipt): Promise<void>;
|
|
36
58
|
export declare function verifyReceiptIntegrity(receipt: InstallReceipt): Promise<void>;
|
|
37
59
|
export declare function uninstallFormula(home: string, nameOrCoordinate: string, options?: UninstallOptions): Promise<InstallReceipt>;
|
|
38
60
|
//# sourceMappingURL=installations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installations.d.ts","sourceRoot":"","sources":["../../src/core/installations.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"installations.d.ts","sourceRoot":"","sources":["../../src/core/installations.ts"],"names":[],"mappings":"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"}
|