auriga-cli 1.18.5 → 1.20.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 +15 -23
- package/README.zh-CN.md +14 -23
- package/dist/api-types.d.ts +11 -25
- package/dist/apply-handlers.js +11 -9
- package/dist/catalog.d.ts +3 -19
- package/dist/catalog.json +21 -28
- package/dist/cli.js +49 -6
- package/dist/guide.js +10 -9
- package/dist/help.js +1 -1
- package/dist/hooks.js +6 -1
- package/dist/plugins.js +182 -7
- package/dist/scan-catalog.js +11 -87
- package/dist/server.js +1 -1
- package/dist/skills.js +0 -3
- package/dist/state.d.ts +15 -34
- package/dist/state.js +85 -399
- package/dist/utils.d.ts +1 -0
- package/dist/workflow.js +32 -4
- package/package.json +3 -3
package/dist/utils.d.ts
CHANGED
package/dist/workflow.js
CHANGED
|
@@ -34,11 +34,39 @@ export async function installWorkflow(packageRoot, opts) {
|
|
|
34
34
|
const sourceClaude = path.join(packageRoot, langOpt.file);
|
|
35
35
|
const targetClaude = path.join(resolved, "CLAUDE.md");
|
|
36
36
|
const targetAgents = path.join(resolved, "AGENTS.md");
|
|
37
|
-
//
|
|
37
|
+
// Back up an existing CLAUDE.md before overwriting, but never clobber
|
|
38
|
+
// a prior .bak.
|
|
39
|
+
//
|
|
40
|
+
// Two regressions to defend against:
|
|
41
|
+
// 1. F1 (v1.19.0 Slice 0): re-install is the update path now, so a
|
|
42
|
+
// second install must not overwrite the user's pre-auriga .bak with
|
|
43
|
+
// our previous workflow version.
|
|
44
|
+
// 2. Codex adversarial review: if the user later replaces an
|
|
45
|
+
// auriga-managed CLAUDE.md with foreign content (hand-paste, manual
|
|
46
|
+
// edits, etc.) and re-runs install, the foreign content must NOT
|
|
47
|
+
// be silently overwritten just because .bak already exists.
|
|
48
|
+
//
|
|
49
|
+
// Strategy: only consider the file "safe to overwrite without backup"
|
|
50
|
+
// when its bytes match the packaged source (i.e. it's the workflow we
|
|
51
|
+
// installed last time, untouched). Otherwise capture it — to .bak when
|
|
52
|
+
// free, else to a timestamped slot so .bak stays canonical.
|
|
38
53
|
if (fs.existsSync(targetClaude)) {
|
|
39
|
-
const
|
|
40
|
-
fs.
|
|
41
|
-
|
|
54
|
+
const currentBytes = fs.readFileSync(targetClaude);
|
|
55
|
+
const sourceBytes = fs.readFileSync(sourceClaude);
|
|
56
|
+
const diverged = !currentBytes.equals(sourceBytes);
|
|
57
|
+
if (diverged) {
|
|
58
|
+
const bakPath = targetClaude + ".bak";
|
|
59
|
+
if (fs.existsSync(bakPath)) {
|
|
60
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
61
|
+
const stampedPath = `${bakPath}.${stamp}`;
|
|
62
|
+
fs.copyFileSync(targetClaude, stampedPath);
|
|
63
|
+
log.warn(`CLAUDE.md.bak already exists; current CLAUDE.md backed up to ${path.basename(stampedPath)}`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
fs.copyFileSync(targetClaude, bakPath);
|
|
67
|
+
log.warn(`Existing CLAUDE.md backed up to CLAUDE.md.bak`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
42
70
|
}
|
|
43
71
|
fs.copyFileSync(sourceClaude, targetClaude);
|
|
44
72
|
log.ok(`CLAUDE.md copied (${langOpt.label})`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auriga-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "Interactive CLI to install Claude Code harness modules (Workflow, Skills, Recommended Skills, Plugins, Hooks)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"dev": "tsc --watch",
|
|
26
26
|
"start": "node dist/cli.js",
|
|
27
27
|
"pretest": "npm run build",
|
|
28
|
-
"test": "tsc -p tsconfig.test.json && DEV=1 node --test --experimental-test-module-mocks dist-test/tests/hooks.test.js dist-test/tests/hooks-uninstall.test.js dist-test/tests/skills.test.js dist-test/tests/skills-uninstall.test.js dist-test/tests/catalog.test.js dist-test/tests/cli-parse.test.js dist-test/tests/install-nontty.test.js dist-test/tests/plugins.test.js dist-test/tests/plugins-uninstall.test.js dist-test/tests/content-fetch.test.js dist-test/tests/utils.test.js dist-test/tests/guide.test.js dist-test/tests/validators.test.js dist-test/tests/entrypoint.test.js dist-test/tests/state.test.js dist-test/tests/server.test.js dist-test/tests/server-auth.test.js dist-test/tests/server-apply.test.js dist-test/tests/apply-handlers.test.js dist-test/tests/ui-fetch.test.js dist-test/tests/workflow-uninstall.test.js dist-test/tests/tarball-shape.test.js",
|
|
29
|
-
"test:watch": "tsc -p tsconfig.test.json --watch & node --test --watch --experimental-test-module-mocks dist-test/tests/hooks.test.js dist-test/tests/hooks-uninstall.test.js dist-test/tests/skills.test.js dist-test/tests/skills-uninstall.test.js dist-test/tests/catalog.test.js dist-test/tests/cli-parse.test.js dist-test/tests/install-nontty.test.js dist-test/tests/plugins.test.js dist-test/tests/plugins-uninstall.test.js dist-test/tests/content-fetch.test.js dist-test/tests/utils.test.js dist-test/tests/guide.test.js dist-test/tests/validators.test.js dist-test/tests/entrypoint.test.js dist-test/tests/state.test.js dist-test/tests/server.test.js dist-test/tests/server-auth.test.js dist-test/tests/server-apply.test.js dist-test/tests/apply-handlers.test.js dist-test/tests/ui-fetch.test.js dist-test/tests/workflow-uninstall.test.js dist-test/tests/tarball-shape.test.js",
|
|
28
|
+
"test": "tsc -p tsconfig.test.json && DEV=1 node --test --experimental-test-module-mocks dist-test/tests/hooks.test.js dist-test/tests/hooks-uninstall.test.js dist-test/tests/skills.test.js dist-test/tests/skills-uninstall.test.js dist-test/tests/catalog.test.js dist-test/tests/cli-parse.test.js dist-test/tests/install-nontty.test.js dist-test/tests/plugins.test.js dist-test/tests/plugins-uninstall.test.js dist-test/tests/content-fetch.test.js dist-test/tests/utils.test.js dist-test/tests/guide.test.js dist-test/tests/validators.test.js dist-test/tests/entrypoint.test.js dist-test/tests/state.test.js dist-test/tests/server.test.js dist-test/tests/server-auth.test.js dist-test/tests/server-apply.test.js dist-test/tests/apply-handlers.test.js dist-test/tests/ui-fetch.test.js dist-test/tests/workflow-install.test.js dist-test/tests/workflow-uninstall.test.js dist-test/tests/tarball-shape.test.js",
|
|
29
|
+
"test:watch": "tsc -p tsconfig.test.json --watch & node --test --watch --experimental-test-module-mocks dist-test/tests/hooks.test.js dist-test/tests/hooks-uninstall.test.js dist-test/tests/skills.test.js dist-test/tests/skills-uninstall.test.js dist-test/tests/catalog.test.js dist-test/tests/cli-parse.test.js dist-test/tests/install-nontty.test.js dist-test/tests/plugins.test.js dist-test/tests/plugins-uninstall.test.js dist-test/tests/content-fetch.test.js dist-test/tests/utils.test.js dist-test/tests/guide.test.js dist-test/tests/validators.test.js dist-test/tests/entrypoint.test.js dist-test/tests/state.test.js dist-test/tests/server.test.js dist-test/tests/server-auth.test.js dist-test/tests/server-apply.test.js dist-test/tests/apply-handlers.test.js dist-test/tests/ui-fetch.test.js dist-test/tests/workflow-install.test.js dist-test/tests/workflow-uninstall.test.js dist-test/tests/tarball-shape.test.js",
|
|
30
30
|
"pretest:e2e": "npm run build",
|
|
31
31
|
"test:e2e": "tsc -p tsconfig.test.json && node --test dist-test/tests/e2e-install.test.js",
|
|
32
32
|
"pretest:web-ui-e2e": "npm run build && npm --prefix ui ci && npm --prefix ui run build",
|