superpowers-manager 0.9.0 → 0.9.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.
|
@@ -182,12 +182,20 @@ async function runBuild(input, env, log) {
|
|
|
182
182
|
? "cannot copy upstream manifest into candidate"
|
|
183
183
|
: "cannot copy fallback manifest into candidate");
|
|
184
184
|
}
|
|
185
|
-
let plan;
|
|
186
185
|
let sourceRoot;
|
|
187
186
|
let realCandidateRoot;
|
|
188
187
|
try {
|
|
189
188
|
sourceRoot = await realpath(upstreamRoot);
|
|
190
189
|
realCandidateRoot = await realpath(candidateRoot);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Kept out of the classification catch below, which re-emits its cause:
|
|
193
|
+
// a raw realpath error would carry Node's wording onto stderr.
|
|
194
|
+
log.appendText("stderr", `cannot resolve hook roots: ${upstreamRoot}, ${candidateRoot}`);
|
|
195
|
+
fail("build-failed", "failed to prepare upstream Codex hooks");
|
|
196
|
+
}
|
|
197
|
+
let plan;
|
|
198
|
+
try {
|
|
191
199
|
const manifest = await readManifest(candidateManifest);
|
|
192
200
|
plan = await classifyHooks(manifest, manifestSource, sourceRoot);
|
|
193
201
|
}
|
|
@@ -240,7 +240,24 @@ async function validateMaterializedDestination(destination, candidateRoot) {
|
|
|
240
240
|
throw hookError(message);
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
|
+
// The `hook materialization failed:` site in src/harnesses/codex/adapter.ts
|
|
244
|
+
// re-emits this module's messages, so a raw cp/copyFile/mkdir/readlink/symlink
|
|
245
|
+
// error must not escape: its message carries Node's own wording. Only an
|
|
246
|
+
// errno-shaped code is interpolated, matching
|
|
247
|
+
// `src/harnesses/codex/adapter.ts::const detail =`.
|
|
243
248
|
export async function materializeHooks(plan, sourceRoot, candidateRoot) {
|
|
249
|
+
try {
|
|
250
|
+
await copyHookFiles(plan, sourceRoot, candidateRoot);
|
|
251
|
+
}
|
|
252
|
+
catch (cause) {
|
|
253
|
+
if (cause instanceof SafetyError && cause.module === "hooks")
|
|
254
|
+
throw cause;
|
|
255
|
+
const code = cause?.code ?? "";
|
|
256
|
+
const detail = /^E[A-Z0-9]+$/.test(code) ? `: ${code}` : "";
|
|
257
|
+
throw hookError(`cannot copy upstream hooks from ${sourceRoot} into ${candidateRoot}${detail}`, cause);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
async function copyHookFiles(plan, sourceRoot, candidateRoot) {
|
|
244
261
|
if (plan.copyHooksSubtree) {
|
|
245
262
|
const sourceHooks = resolve(sourceRoot, "hooks");
|
|
246
263
|
const candidateHooks = resolve(candidateRoot, "hooks");
|
package/package.json
CHANGED
|
@@ -1,30 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "superpowers-manager",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Install obra/superpowers directly from upstream for Codex, Pi, OpenCode, and Claude Code. Stay on a known-good release or commit, try a branch, and upgrade when you choose.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"superpowers",
|
|
7
7
|
"obra-superpowers",
|
|
8
8
|
"agent-skills",
|
|
9
|
+
"skills",
|
|
10
|
+
"ai-agent",
|
|
9
11
|
"ai-coding-agent",
|
|
10
12
|
"coding-agent",
|
|
11
13
|
"agent-harness",
|
|
12
|
-
"codex",
|
|
13
|
-
"codex-plugin",
|
|
14
|
-
"plugin-manager",
|
|
15
14
|
"cli",
|
|
16
15
|
"installer",
|
|
17
16
|
"updater",
|
|
17
|
+
"plugin-manager",
|
|
18
|
+
"version-manager",
|
|
19
|
+
"version-pinning",
|
|
20
|
+
"codex",
|
|
21
|
+
"openai-codex",
|
|
22
|
+
"codex-plugin",
|
|
23
|
+
"codex-skills",
|
|
18
24
|
"pi",
|
|
19
25
|
"pi-coding-agent",
|
|
26
|
+
"pi-skills",
|
|
20
27
|
"opencode",
|
|
28
|
+
"opencode-plugin",
|
|
29
|
+
"opencode-skills",
|
|
30
|
+
"claude",
|
|
21
31
|
"claude-code",
|
|
22
32
|
"claude-code-plugin",
|
|
23
|
-
"
|
|
33
|
+
"claude-code-skills"
|
|
24
34
|
],
|
|
25
35
|
"license": "MIT",
|
|
26
36
|
"type": "module",
|
|
27
|
-
"packageManager": "pnpm@12.
|
|
37
|
+
"packageManager": "pnpm@12.6.0",
|
|
28
38
|
"scripts": {
|
|
29
39
|
"lint": "oxlint src/ tests/",
|
|
30
40
|
"format": "prettier --write src/ tests/",
|