hstack 0.7.1 → 0.17.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/CHANGELOG.md +308 -0
- package/README.md +90 -154
- package/VERSION +1 -1
- package/dist/commands/doctor.js +69 -9
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +7 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.js +17 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/descriptions.js +160 -0
- package/dist/lib/descriptions.js.map +1 -0
- package/dist/lib/diff.js +1 -1
- package/dist/lib/git.js +16 -0
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/wire.js +274 -142
- package/dist/lib/wire.js.map +1 -1
- package/dist/manifest.js +49 -22
- package/dist/manifest.js.map +1 -1
- package/package.json +4 -3
- package/template/.claude/agents/adversarial-reviewer.md +42 -98
- package/template/.claude/agents/app-architect.md +44 -133
- package/template/.claude/agents/data-architect.md +46 -127
- package/template/.claude/agents/test-strategist.md +39 -109
- package/template/.claude/skills/hstack-adr-new/SKILL.md +23 -100
- package/template/.claude/skills/hstack-adversarial-review/SKILL.md +47 -174
- package/template/.claude/skills/hstack-adversarial-review/references/finding-categories.md +134 -0
- package/template/.claude/skills/hstack-app-architecture/SKILL.md +43 -95
- package/template/.claude/skills/hstack-commit/SKILL.md +28 -97
- package/template/.claude/skills/hstack-data-architecture/SKILL.md +34 -82
- package/template/.claude/skills/hstack-promote/SKILL.md +55 -0
- package/template/.claude/skills/hstack-story/SKILL.md +58 -0
- package/template/.claude/skills/hstack-test-audit/SKILL.md +64 -0
- package/template/.claude/skills/hstack-wrap/SKILL.md +48 -0
- package/template/.claude/skills/hstack-wrap/references/pr-description.md +45 -0
- package/template/KERNEL.md +167 -0
- package/template/templates/adr.md +9 -18
- package/template/templates/app-architecture.md +38 -50
- package/template/templates/data-architecture.md +39 -93
- package/template/templates/infrastructure.md +54 -148
- package/template/templates/roadmap.md +35 -0
- package/template/templates/story.md +7 -13
- package/template/templates/tech-debt.md +2 -37
- package/template/templates/tech-stack.md +2 -12
- package/template/.claude/agents/data-specialist.md +0 -126
- package/template/.claude/agents/implementer.md +0 -154
- package/template/.claude/agents/kernel-fit-analyst.md +0 -190
- package/template/.claude/agents/planner.md +0 -110
- package/template/.claude/agents/product-discovery.md +0 -165
- package/template/.claude/agents/product-manager.md +0 -111
- package/template/.claude/agents/researcher.md +0 -123
- package/template/.claude/agents/security-reviewer.md +0 -123
- package/template/.claude/agents/spec-author.md +0 -123
- package/template/.claude/agents/stack-architect.md +0 -137
- package/template/.claude/agents/ui-ux-briefer.md +0 -105
- package/template/.claude/agents/verifier.md +0 -113
- package/template/.claude/skills/hstack-branch/SKILL.md +0 -103
- package/template/.claude/skills/hstack-brownfield-init/SKILL.md +0 -158
- package/template/.claude/skills/hstack-change-new/SKILL.md +0 -111
- package/template/.claude/skills/hstack-change-plan/SKILL.md +0 -119
- package/template/.claude/skills/hstack-configure/SKILL.md +0 -126
- package/template/.claude/skills/hstack-coord/SKILL.md +0 -131
- package/template/.claude/skills/hstack-data-review/SKILL.md +0 -132
- package/template/.claude/skills/hstack-finalize/SKILL.md +0 -159
- package/template/.claude/skills/hstack-flag/SKILL.md +0 -138
- package/template/.claude/skills/hstack-greenfield-init/SKILL.md +0 -175
- package/template/.claude/skills/hstack-help/SKILL.md +0 -179
- package/template/.claude/skills/hstack-implement/SKILL.md +0 -185
- package/template/.claude/skills/hstack-kernel-fit-promote/SKILL.md +0 -164
- package/template/.claude/skills/hstack-kernel-fit-scan/SKILL.md +0 -197
- package/template/.claude/skills/hstack-kernel-fit-triage/SKILL.md +0 -159
- package/template/.claude/skills/hstack-module-spec/SKILL.md +0 -105
- package/template/.claude/skills/hstack-product-discovery/SKILL.md +0 -101
- package/template/.claude/skills/hstack-research/SKILL.md +0 -145
- package/template/.claude/skills/hstack-scaffold/SKILL.md +0 -140
- package/template/.claude/skills/hstack-security-review/SKILL.md +0 -133
- package/template/.claude/skills/hstack-ship/SKILL.md +0 -129
- package/template/.claude/skills/hstack-stack-decide/SKILL.md +0 -108
- package/template/.claude/skills/hstack-story-draft/SKILL.md +0 -119
- package/template/.claude/skills/hstack-tech-debt-new/SKILL.md +0 -122
- package/template/.claude/skills/hstack-tech-debt-resolve/SKILL.md +0 -158
- package/template/.claude/skills/hstack-tech-debt-stale/SKILL.md +0 -113
- package/template/.claude/skills/hstack-tech-debt-wontfix/SKILL.md +0 -104
- package/template/.claude/skills/hstack-telemetry/SKILL.md +0 -98
- package/template/.claude/skills/hstack-test-plan/SKILL.md +0 -182
- package/template/.claude/skills/hstack-ui-brief/SKILL.md +0 -108
- package/template/.claude/skills/hstack-verify/SKILL.md +0 -150
- package/template/CLAUDE.md +0 -443
- package/template/scripts/coord/coord_scan.py +0 -681
- package/template/scripts/telemetry/__init__.py +0 -6
- package/template/scripts/telemetry/insights/__init__.py +0 -0
- package/template/scripts/telemetry/insights/contract_drift.py +0 -137
- package/template/scripts/telemetry/insights/kernel_fit.py +0 -438
- package/template/scripts/telemetry/insights/overengineering.py +0 -115
- package/template/scripts/telemetry/insights/quality_outcomes.py +0 -131
- package/template/scripts/telemetry/insights/token_economics.py +0 -129
- package/template/scripts/telemetry/insights/workflow_shape.py +0 -198
- package/template/scripts/telemetry/parsers/__init__.py +0 -0
- package/template/scripts/telemetry/parsers/bodies.py +0 -87
- package/template/scripts/telemetry/parsers/commits.py +0 -219
- package/template/scripts/telemetry/parsers/frontmatter.py +0 -322
- package/template/scripts/telemetry/parsers/transcripts.py +0 -181
- package/template/scripts/telemetry/render.py +0 -395
- package/template/scripts/telemetry/report.py +0 -138
- package/template/scripts/telemetry/run_kernel_fit.py +0 -91
- package/template/templates/adversarial-review.md +0 -54
- package/template/templates/bootstrap.md +0 -105
- package/template/templates/change-spec.md +0 -82
- package/template/templates/ci-cd.md +0 -27
- package/template/templates/coord-message.md +0 -55
- package/template/templates/data-review.md +0 -54
- package/template/templates/discovery/brainstorm.md +0 -69
- package/template/templates/discovery/forcing-questions.md +0 -76
- package/template/templates/discovery/project-brief.md +0 -53
- package/template/templates/figma-handoff.md +0 -38
- package/template/templates/glossary.md +0 -20
- package/template/templates/hardening-checklist.md +0 -73
- package/template/templates/incident-runbook.md +0 -57
- package/template/templates/kernel-fit-finding.md +0 -63
- package/template/templates/kernel-fit-flag.md +0 -52
- package/template/templates/module-spec.md +0 -49
- package/template/templates/mvp-scope.md +0 -34
- package/template/templates/persona.md +0 -38
- package/template/templates/plan.md +0 -49
- package/template/templates/product-brief.md +0 -56
- package/template/templates/security-review.md +0 -63
- package/template/templates/telemetry-sidecar.md +0 -184
- package/template/templates/test-plan.md +0 -119
- package/template/templates/threat-model.md +0 -54
- package/template/templates/ui-brief.md +0 -49
- package/template/templates/verification.md +0 -63
- package/template/templates/vision.md +0 -34
package/dist/lib/wire.js
CHANGED
|
@@ -1,26 +1,46 @@
|
|
|
1
1
|
import fs from "fs-extra";
|
|
2
|
-
import { resolve, relative, dirname } from "node:path";
|
|
2
|
+
import { resolve, relative, dirname, join } from "node:path";
|
|
3
3
|
import { readdir, symlink, readlink, lstat, unlink } from "node:fs/promises";
|
|
4
4
|
import { diffFramework } from "./diff.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export const GITIGNORE_TELEMETRY_LINE = "**/.telemetry/";
|
|
8
|
-
export const GITIGNORE_KERNEL_FIT_FLAGS_LINE = "hstack/kernel-fit/flags/";
|
|
9
|
-
export const GITIGNORE_SESSION_STATE_LINE = "hstack/.session-state/";
|
|
5
|
+
import { gitMove } from "./git.js";
|
|
6
|
+
import { FRAMEWORK_PATHS, LEGACY_FRAMEWORK_PATHS, LEGACY_SCRIPTS_DIR, } from "../manifest.js";
|
|
10
7
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
8
|
+
* ADR-0010: the consumer-side kernel lives at `hstack/KERNEL.md`, not
|
|
9
|
+
* `hstack/CLAUDE.md`. Claude Code loads a file named `CLAUDE.md` twice — once
|
|
10
|
+
* via the `@`-import in the consumer's root `CLAUDE.md` (at launch) and again
|
|
11
|
+
* via nested-`CLAUDE.md` discovery (on the first read of any file under
|
|
12
|
+
* `hstack/`). Discovery keys on the literal filename, so renaming the file
|
|
13
|
+
* leaves the import as the single load path. Filename only — nothing about the
|
|
14
|
+
* kernel's authority, content, or precedence changes.
|
|
15
|
+
*/
|
|
16
|
+
export const KERNEL_FILENAME = "KERNEL.md";
|
|
17
|
+
/** Pre-ADR-0010 filename. Retained for the `update` migration and `doctor`. */
|
|
18
|
+
export const LEGACY_KERNEL_FILENAME = "CLAUDE.md";
|
|
19
|
+
export const KERNEL_IMPORT_LINE = "> **Engineering workflow:** all changes in this repo are governed by hstack. See @hstack/KERNEL.md.";
|
|
20
|
+
/** Idempotency probe for the kernel-import line in the consumer's root CLAUDE.md. */
|
|
21
|
+
export const KERNEL_IMPORT_PROBE = "@hstack/KERNEL.md";
|
|
22
|
+
/**
|
|
23
|
+
* The pre-ADR-0010 import, and the only form `update` rewrites in place: an
|
|
24
|
+
* unambiguous `@`-import of the old path, replaced substring-for-substring so
|
|
25
|
+
* the rest of an engineer-owned file survives verbatim.
|
|
26
|
+
*/
|
|
27
|
+
export const LEGACY_KERNEL_IMPORT_PROBE = "@hstack/CLAUDE.md";
|
|
28
|
+
/**
|
|
29
|
+
* Any surviving mention of the old kernel path. Deliberately wider than what
|
|
30
|
+
* `update` rewrites: a hand-edited line (backticked, `@` dropped, a relative
|
|
31
|
+
* prefix) is never rewritten, so `doctor` has to keep flagging it.
|
|
32
|
+
*/
|
|
33
|
+
export const LEGACY_KERNEL_PATH_PROBE = "hstack/CLAUDE.md";
|
|
34
|
+
/**
|
|
35
|
+
* The coord-notification hooks (ADR-0007) the installer wired into consumers
|
|
36
|
+
* before v0.17 — a coord scan at SessionStart and on every UserPromptSubmit.
|
|
37
|
+
* The machinery they called is gone, so `hstack update` removes them.
|
|
38
|
+
*
|
|
39
|
+
* This probe is the ownership boundary, and it is deliberately narrow: hstack
|
|
40
|
+
* removes a hook entry only when its command names hstack's own coord script.
|
|
41
|
+
* Everything else in `.claude/settings.json` belongs to the engineer.
|
|
16
42
|
*/
|
|
17
|
-
export const COORD_HOOK_COMMAND = 'python3 "$CLAUDE_PROJECT_DIR"/hstack/scripts/coord/coord_scan.py hook';
|
|
18
|
-
/** Idempotency probe: any existing hook command containing this substring
|
|
19
|
-
* counts as "already wired" (survives cosmetic command edits). */
|
|
20
43
|
export const COORD_HOOK_PROBE = "scripts/coord/coord_scan.py";
|
|
21
|
-
export const COORD_HOOK_EVENTS = ["SessionStart", "UserPromptSubmit"];
|
|
22
|
-
/** Generous cap for branch-heavy machines; the scan is typically <1s. */
|
|
23
|
-
export const COORD_HOOK_TIMEOUT_S = 15;
|
|
24
44
|
/**
|
|
25
45
|
* Compute the full plan for `hstack init` against `consumerRoot`,
|
|
26
46
|
* using `templateDir` as the source of framework files.
|
|
@@ -59,45 +79,9 @@ export async function planInit(consumerRoot, templateDir, packageVersion) {
|
|
|
59
79
|
file: resolve(consumerRoot, "CLAUDE.md"),
|
|
60
80
|
line: KERNEL_IMPORT_LINE,
|
|
61
81
|
createIfMissing: true,
|
|
62
|
-
matchOn:
|
|
63
|
-
});
|
|
64
|
-
// 5. Append telemetry gitignore line (create if missing)
|
|
65
|
-
actions.push({
|
|
66
|
-
kind: "append-line",
|
|
67
|
-
file: resolve(consumerRoot, ".gitignore"),
|
|
68
|
-
line: GITIGNORE_TELEMETRY_LINE,
|
|
69
|
-
createIfMissing: true,
|
|
70
|
-
});
|
|
71
|
-
// 5b. Append kernel-fit flags gitignore line (per ADR-0005 — pins are
|
|
72
|
-
// derivative signal, mirroring the `.telemetry/` decision in ADR-0004).
|
|
73
|
-
// Findings under hstack/kernel-fit/findings/ remain committed; only the
|
|
74
|
-
// flags/ subtree is gitignored.
|
|
75
|
-
actions.push({
|
|
76
|
-
kind: "append-line",
|
|
77
|
-
file: resolve(consumerRoot, ".gitignore"),
|
|
78
|
-
line: GITIGNORE_KERNEL_FIT_FLAGS_LINE,
|
|
79
|
-
createIfMissing: true,
|
|
80
|
-
});
|
|
81
|
-
// 5c. Append session-state gitignore line. The kernel's Resumability section
|
|
82
|
-
// declared hstack/.session-state/ git-ignored, but the installer never wired
|
|
83
|
-
// it until ADR-0006 (the coord ack cursor made the gap load-bearing) — repos
|
|
84
|
-
// installed before this may have committed session-state files; `hstack
|
|
85
|
-
// doctor` users should verify.
|
|
86
|
-
actions.push({
|
|
87
|
-
kind: "append-line",
|
|
88
|
-
file: resolve(consumerRoot, ".gitignore"),
|
|
89
|
-
line: GITIGNORE_SESSION_STATE_LINE,
|
|
90
|
-
createIfMissing: true,
|
|
91
|
-
});
|
|
92
|
-
// 5d. Merge the coord-notification hook entries into .claude/settings.json
|
|
93
|
-
// (per ADR-0007 — sessions get alerted about unread coord-messages without
|
|
94
|
-
// the engineer hand-carrying the nudge). Merge-only; engineer-owned settings
|
|
95
|
-
// are never touched.
|
|
96
|
-
actions.push({
|
|
97
|
-
kind: "merge-hooks",
|
|
98
|
-
file: resolve(consumerRoot, ".claude", "settings.json"),
|
|
82
|
+
matchOn: KERNEL_IMPORT_PROBE,
|
|
99
83
|
});
|
|
100
|
-
//
|
|
84
|
+
// 5. Stamp the installed-version marker so update can compare later.
|
|
101
85
|
actions.push({
|
|
102
86
|
kind: "write-version",
|
|
103
87
|
to: resolve(consumerRoot, "hstack", "VERSION"),
|
|
@@ -108,12 +92,25 @@ export async function planInit(consumerRoot, templateDir, packageVersion) {
|
|
|
108
92
|
/**
|
|
109
93
|
* Compute the full plan for `hstack update` against `consumerRoot`.
|
|
110
94
|
* Diffs framework files in template/ vs the consumer's hstack/, plus
|
|
111
|
-
* the .claude/ symlink delta, plus idempotent CLAUDE.md
|
|
95
|
+
* the .claude/ symlink delta, plus the idempotent CLAUDE.md
|
|
112
96
|
* line checks, plus the VERSION marker stamp.
|
|
113
97
|
*/
|
|
114
98
|
export async function planUpdate(consumerRoot, templateDir, packageVersion) {
|
|
115
99
|
const actions = [];
|
|
116
100
|
const consumerHstack = resolve(consumerRoot, "hstack");
|
|
101
|
+
// 0. ADR-0010 kernel rename. Planned first on purpose: it rewrites the
|
|
102
|
+
// import line the append-line check below probes for, so running it
|
|
103
|
+
// afterwards would leave the repo with two import lines.
|
|
104
|
+
if (kernelFilenameNeedsMigration(await kernelFilenameState(consumerRoot))) {
|
|
105
|
+
actions.push({ kind: "migrate-kernel-filename", consumerRoot });
|
|
106
|
+
}
|
|
107
|
+
// 0b. v0.17 legacy paths. Planned before the file diff for the same reason
|
|
108
|
+
// the rename is: these paths left FRAMEWORK_PATHS, so the diff below is
|
|
109
|
+
// blind to them and only this action can take them back.
|
|
110
|
+
const legacyRelpaths = await legacyPathsPresent(consumerRoot);
|
|
111
|
+
if (legacyRelpaths.length > 0) {
|
|
112
|
+
actions.push({ kind: "remove-legacy-paths", consumerRoot, relpaths: legacyRelpaths });
|
|
113
|
+
}
|
|
117
114
|
// 1. File-level diff for framework paths.
|
|
118
115
|
const fileDiffs = await diffFramework(templateDir, consumerHstack, FRAMEWORK_PATHS);
|
|
119
116
|
for (const d of fileDiffs) {
|
|
@@ -159,32 +156,16 @@ export async function planUpdate(consumerRoot, templateDir, packageVersion) {
|
|
|
159
156
|
file: resolve(consumerRoot, "CLAUDE.md"),
|
|
160
157
|
line: KERNEL_IMPORT_LINE,
|
|
161
158
|
createIfMissing: true,
|
|
162
|
-
matchOn:
|
|
163
|
-
});
|
|
164
|
-
// 5. .gitignore telemetry line — idempotent re-check.
|
|
165
|
-
actions.push({
|
|
166
|
-
kind: "append-line",
|
|
167
|
-
file: resolve(consumerRoot, ".gitignore"),
|
|
168
|
-
line: GITIGNORE_TELEMETRY_LINE,
|
|
169
|
-
createIfMissing: true,
|
|
170
|
-
});
|
|
171
|
-
// 5b. .gitignore kernel-fit flags line — idempotent re-check (per ADR-0005).
|
|
172
|
-
actions.push({
|
|
173
|
-
kind: "append-line",
|
|
174
|
-
file: resolve(consumerRoot, ".gitignore"),
|
|
175
|
-
line: GITIGNORE_KERNEL_FIT_FLAGS_LINE,
|
|
176
|
-
createIfMissing: true,
|
|
177
|
-
});
|
|
178
|
-
// 5c. .gitignore session-state line — idempotent re-check (per ADR-0006).
|
|
179
|
-
actions.push({
|
|
180
|
-
kind: "append-line",
|
|
181
|
-
file: resolve(consumerRoot, ".gitignore"),
|
|
182
|
-
line: GITIGNORE_SESSION_STATE_LINE,
|
|
183
|
-
createIfMissing: true,
|
|
159
|
+
matchOn: KERNEL_IMPORT_PROBE,
|
|
184
160
|
});
|
|
185
|
-
//
|
|
161
|
+
// 5. Coord-notification hooks — removed, not merged (v0.17).
|
|
162
|
+
// Nothing is added to a consumer's .gitignore any more: the `**/.telemetry/`,
|
|
163
|
+
// `hstack/kernel-fit/flags/` and `hstack/.session-state/` lines the installer
|
|
164
|
+
// used to write are gone with the machinery that produced those directories.
|
|
165
|
+
// Lines already in a consumer's .gitignore stay — hstack never edits an
|
|
166
|
+
// engineer's file to unsay something it once said.
|
|
186
167
|
actions.push({
|
|
187
|
-
kind: "
|
|
168
|
+
kind: "remove-coord-hooks",
|
|
188
169
|
file: resolve(consumerRoot, ".claude", "settings.json"),
|
|
189
170
|
});
|
|
190
171
|
// 6. VERSION marker.
|
|
@@ -195,80 +176,187 @@ export async function planUpdate(consumerRoot, templateDir, packageVersion) {
|
|
|
195
176
|
});
|
|
196
177
|
return actions;
|
|
197
178
|
}
|
|
198
|
-
function
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
});
|
|
179
|
+
export async function kernelFilenameState(consumerRoot) {
|
|
180
|
+
const legacyKernelFile = await fs.pathExists(resolve(consumerRoot, "hstack", LEGACY_KERNEL_FILENAME));
|
|
181
|
+
const rootClaudeMd = resolve(consumerRoot, "CLAUDE.md");
|
|
182
|
+
const content = (await fs.pathExists(rootClaudeMd))
|
|
183
|
+
? await fs.readFile(rootClaudeMd, "utf8")
|
|
184
|
+
: "";
|
|
185
|
+
const legacyImport = content.includes(LEGACY_KERNEL_IMPORT_PROBE);
|
|
186
|
+
return {
|
|
187
|
+
legacyKernelFile,
|
|
188
|
+
legacyImport,
|
|
189
|
+
legacyImportUnrewritable: !legacyImport && content.includes(LEGACY_KERNEL_PATH_PROBE),
|
|
190
|
+
};
|
|
211
191
|
}
|
|
212
|
-
|
|
192
|
+
/** True when `update` has migration work it can actually perform. */
|
|
193
|
+
export function kernelFilenameNeedsMigration(s) {
|
|
194
|
+
return s.legacyKernelFile || s.legacyImport;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Move the kernel to its ADR-0010 name and repoint the consumer's import line.
|
|
198
|
+
* Both halves are deliberately in one action so they land in one commit: a repo
|
|
199
|
+
* with the file renamed but the import still pointing at the old path has no
|
|
200
|
+
* kernel in context at all.
|
|
201
|
+
*/
|
|
202
|
+
async function migrateKernelFilename(consumerRoot) {
|
|
203
|
+
const legacyRel = join("hstack", LEGACY_KERNEL_FILENAME);
|
|
204
|
+
const kernelRel = join("hstack", KERNEL_FILENAME);
|
|
205
|
+
const legacyAbs = resolve(consumerRoot, legacyRel);
|
|
206
|
+
const kernelAbs = resolve(consumerRoot, kernelRel);
|
|
207
|
+
if (await fs.pathExists(legacyAbs)) {
|
|
208
|
+
if (await fs.pathExists(kernelAbs)) {
|
|
209
|
+
// Half-migrated repo. KERNEL.md is authoritative and installer-owned
|
|
210
|
+
// (update overwrites it from the template either way), so the stale copy
|
|
211
|
+
// goes — leaving it in place would keep the double-load bug alive.
|
|
212
|
+
await fs.remove(legacyAbs);
|
|
213
|
+
console.error(`hstack: removed stale ${legacyRel} — ${kernelRel} is already present and is the kernel (ADR-0010).`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const renamed = await gitMove(consumerRoot, legacyRel, kernelRel);
|
|
217
|
+
console.error(`hstack: ${renamed ? "git mv" : "moved"} ${legacyRel} -> ${kernelRel} (ADR-0010).`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const rootClaudeMd = resolve(consumerRoot, "CLAUDE.md");
|
|
221
|
+
if (!(await fs.pathExists(rootClaudeMd)))
|
|
222
|
+
return;
|
|
223
|
+
const content = await fs.readFile(rootClaudeMd, "utf8");
|
|
224
|
+
if (content.includes(LEGACY_KERNEL_IMPORT_PROBE)) {
|
|
225
|
+
// Substring swap, not a line rewrite: everything the engineer wrote around
|
|
226
|
+
// the import — their own prose, their own ordering — survives verbatim.
|
|
227
|
+
await fs.writeFile(rootClaudeMd, content.split(LEGACY_KERNEL_IMPORT_PROBE).join(KERNEL_IMPORT_PROBE));
|
|
228
|
+
console.error(`hstack: rewrote the kernel import in CLAUDE.md -> ${KERNEL_IMPORT_PROBE} (ADR-0010).`);
|
|
229
|
+
}
|
|
230
|
+
else if (content.includes(LEGACY_KERNEL_PATH_PROBE)) {
|
|
231
|
+
console.error(`hstack: CLAUDE.md mentions ${LEGACY_KERNEL_PATH_PROBE} but not as an \`${LEGACY_KERNEL_IMPORT_PROBE}\` import — left untouched. ` +
|
|
232
|
+
`hstack never rewrites a hand-edited import. Point it at \`${KERNEL_IMPORT_PROBE}\` yourself; \`hstack doctor\` will keep flagging it until you do.`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Which of the pre-v0.17 framework paths are still on disk in this consumer.
|
|
237
|
+
* Returns paths relative to `<consumer>/hstack/`, in manifest order.
|
|
238
|
+
*/
|
|
239
|
+
export async function legacyPathsPresent(consumerRoot) {
|
|
240
|
+
const hstackDir = resolve(consumerRoot, "hstack");
|
|
241
|
+
const present = [];
|
|
242
|
+
for (const rel of LEGACY_FRAMEWORK_PATHS) {
|
|
243
|
+
if (await fs.pathExists(resolve(hstackDir, rel)))
|
|
244
|
+
present.push(rel);
|
|
245
|
+
}
|
|
246
|
+
return present;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Remove the pre-v0.17 paths, then `hstack/scripts/` if it came out empty.
|
|
250
|
+
*
|
|
251
|
+
* `fs.remove` is a no-op on a path that is already gone, so a re-run after a
|
|
252
|
+
* partial failure finishes the job rather than erroring.
|
|
253
|
+
*/
|
|
254
|
+
async function removeLegacyPaths(consumerRoot, relpaths) {
|
|
255
|
+
const hstackDir = resolve(consumerRoot, "hstack");
|
|
256
|
+
for (const rel of relpaths) {
|
|
257
|
+
await fs.remove(resolve(hstackDir, rel));
|
|
258
|
+
}
|
|
259
|
+
const scriptsDir = resolve(hstackDir, LEGACY_SCRIPTS_DIR);
|
|
260
|
+
if (await fs.pathExists(scriptsDir)) {
|
|
261
|
+
const left = await readdir(scriptsDir).catch(() => null);
|
|
262
|
+
if (left !== null && left.length === 0)
|
|
263
|
+
await fs.remove(scriptsDir);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/** True when this hook command is one hstack installed and therefore owns. */
|
|
267
|
+
function isCoordHookCommand(h) {
|
|
268
|
+
const command = h?.command;
|
|
269
|
+
return typeof command === "string" && command.includes(COORD_HOOK_PROBE);
|
|
270
|
+
}
|
|
271
|
+
function matcherHasCoordHook(matcher) {
|
|
272
|
+
const inner = matcher?.hooks;
|
|
273
|
+
return Array.isArray(inner) && inner.some(isCoordHookCommand);
|
|
274
|
+
}
|
|
275
|
+
/** Parse the settings file, or say why it cannot be touched. */
|
|
276
|
+
async function readSettings(file) {
|
|
213
277
|
if (!(await fs.pathExists(file)))
|
|
214
|
-
return
|
|
215
|
-
let
|
|
278
|
+
return { ok: true, settings: {} };
|
|
279
|
+
let parsed;
|
|
216
280
|
try {
|
|
217
281
|
const raw = await fs.readFile(file, "utf8");
|
|
218
|
-
|
|
282
|
+
parsed = raw.trim() === "" ? {} : JSON.parse(raw);
|
|
219
283
|
}
|
|
220
284
|
catch {
|
|
221
|
-
return
|
|
285
|
+
return { ok: false };
|
|
222
286
|
}
|
|
223
|
-
if (typeof
|
|
224
|
-
return
|
|
287
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
288
|
+
return { ok: false };
|
|
225
289
|
}
|
|
226
|
-
const hooks =
|
|
227
|
-
if (hooks !== undefined &&
|
|
228
|
-
|
|
290
|
+
const hooks = parsed.hooks;
|
|
291
|
+
if (hooks !== undefined &&
|
|
292
|
+
(typeof hooks !== "object" || hooks === null || Array.isArray(hooks))) {
|
|
293
|
+
return { ok: false };
|
|
229
294
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
295
|
+
return { ok: true, settings: parsed };
|
|
296
|
+
}
|
|
297
|
+
export async function coordHooksState(file) {
|
|
298
|
+
const read = await readSettings(file);
|
|
299
|
+
if (!read.ok)
|
|
300
|
+
return "invalid";
|
|
301
|
+
const hooks = read.settings.hooks;
|
|
302
|
+
if (!hooks)
|
|
303
|
+
return "absent";
|
|
304
|
+
for (const matchers of Object.values(hooks)) {
|
|
305
|
+
if (!Array.isArray(matchers))
|
|
233
306
|
return "invalid";
|
|
234
|
-
if (
|
|
235
|
-
return "
|
|
307
|
+
if (matchers.some(matcherHasCoordHook))
|
|
308
|
+
return "present";
|
|
236
309
|
}
|
|
237
|
-
return "
|
|
310
|
+
return "absent";
|
|
238
311
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
312
|
+
/**
|
|
313
|
+
* Take back the coord hook entries hstack installed (ADR-0007), and nothing
|
|
314
|
+
* else. A matcher is dropped only once its own `hooks` array is empty, an event
|
|
315
|
+
* only once it has no matchers left, and the `hooks` key only once it is empty
|
|
316
|
+
* — an engineer's SessionStart hook sitting next to hstack's survives all
|
|
317
|
+
* three. Everything outside `hooks` is untouched.
|
|
318
|
+
*/
|
|
319
|
+
async function removeCoordHooks(file) {
|
|
320
|
+
const read = await readSettings(file);
|
|
321
|
+
if (!read.ok) {
|
|
244
322
|
// Never rewrite an unparseable engineer-owned file, and never abort the
|
|
245
323
|
// rest of the plan over it — warn and let `hstack doctor` keep flagging it.
|
|
246
|
-
console.error(`hstack:
|
|
324
|
+
console.error(`hstack: left the coord notification hooks in place — ${file} is not a parseable JSON settings object. Remove the \`${COORD_HOOK_PROBE}\` entries by hand.`);
|
|
247
325
|
return;
|
|
248
326
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
for (const event of COORD_HOOK_EVENTS) {
|
|
257
|
-
if (eventHasCoordHook(hooks, event))
|
|
327
|
+
const settings = read.settings;
|
|
328
|
+
const hooks = settings.hooks;
|
|
329
|
+
if (!hooks)
|
|
330
|
+
return;
|
|
331
|
+
let removed = 0;
|
|
332
|
+
for (const [event, matchers] of Object.entries(hooks)) {
|
|
333
|
+
if (!Array.isArray(matchers))
|
|
258
334
|
continue;
|
|
259
|
-
const
|
|
260
|
-
matchers
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
335
|
+
const keptMatchers = [];
|
|
336
|
+
for (const matcher of matchers) {
|
|
337
|
+
if (!matcherHasCoordHook(matcher)) {
|
|
338
|
+
keptMatchers.push(matcher);
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
const inner = matcher.hooks;
|
|
342
|
+
const keptInner = inner.filter((h) => !isCoordHookCommand(h));
|
|
343
|
+
removed += inner.length - keptInner.length;
|
|
344
|
+
if (keptInner.length > 0) {
|
|
345
|
+
keptMatchers.push({ ...matcher, hooks: keptInner });
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (keptMatchers.length > 0)
|
|
349
|
+
hooks[event] = keptMatchers;
|
|
350
|
+
else
|
|
351
|
+
delete hooks[event];
|
|
269
352
|
}
|
|
353
|
+
if (removed === 0)
|
|
354
|
+
return;
|
|
355
|
+
if (Object.keys(hooks).length === 0)
|
|
356
|
+
delete settings.hooks;
|
|
270
357
|
await fs.ensureDir(dirname(file));
|
|
271
358
|
await fs.writeFile(file, JSON.stringify(settings, null, 2) + "\n");
|
|
359
|
+
console.error(`hstack: removed ${removed} coord notification hook ${removed === 1 ? "entry" : "entries"} from ${file} (ADR-0007 machinery removed in v0.17).`);
|
|
272
360
|
}
|
|
273
361
|
/**
|
|
274
362
|
* Filter out actions that would be no-ops at execute time (e.g., a symlink
|
|
@@ -280,6 +368,11 @@ async function mergeCoordHooks(file) {
|
|
|
280
368
|
*/
|
|
281
369
|
export async function pruneNoopActions(actions, packageVersion) {
|
|
282
370
|
const out = [];
|
|
371
|
+
// The ADR-0010 migration rewrites the import line before the append-line
|
|
372
|
+
// action runs, so a legacy import is "already wired" for pruning purposes —
|
|
373
|
+
// without this, update would list a phantom CLAUDE.md append and doctor would
|
|
374
|
+
// report a wiring error on top of the kernel-filename finding.
|
|
375
|
+
const migrating = actions.some((a) => a.kind === "migrate-kernel-filename");
|
|
283
376
|
for (const a of actions) {
|
|
284
377
|
if (a.kind === "symlink") {
|
|
285
378
|
const stat = await lstat(a.to).catch(() => null);
|
|
@@ -296,6 +389,11 @@ export async function pruneNoopActions(actions, packageVersion) {
|
|
|
296
389
|
const probe = a.matchOn ?? a.line;
|
|
297
390
|
if (content.includes(probe))
|
|
298
391
|
continue;
|
|
392
|
+
if (migrating &&
|
|
393
|
+
probe === KERNEL_IMPORT_PROBE &&
|
|
394
|
+
content.includes(LEGACY_KERNEL_IMPORT_PROBE)) {
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
299
397
|
}
|
|
300
398
|
}
|
|
301
399
|
else if (a.kind === "write-version") {
|
|
@@ -306,9 +404,9 @@ export async function pruneNoopActions(actions, packageVersion) {
|
|
|
306
404
|
continue;
|
|
307
405
|
}
|
|
308
406
|
}
|
|
309
|
-
else if (a.kind === "
|
|
310
|
-
// "invalid" is kept so
|
|
311
|
-
if ((await coordHooksState(a.file)) === "
|
|
407
|
+
else if (a.kind === "remove-coord-hooks") {
|
|
408
|
+
// "invalid" is kept so doctor can surface it.
|
|
409
|
+
if ((await coordHooksState(a.file)) === "absent")
|
|
312
410
|
continue;
|
|
313
411
|
}
|
|
314
412
|
out.push(a);
|
|
@@ -356,8 +454,14 @@ export function renderPlan(actions, consumerRoot) {
|
|
|
356
454
|
return ` unlink ${rel(a.to, consumerRoot)}`;
|
|
357
455
|
case "append-line":
|
|
358
456
|
return ` check ${rel(a.file, consumerRoot)} (idempotent append)`;
|
|
359
|
-
case "
|
|
360
|
-
return ` hooks ${rel(a.file, consumerRoot)} (coord notification hooks, ADR-0007)`;
|
|
457
|
+
case "remove-coord-hooks":
|
|
458
|
+
return ` hooks ${rel(a.file, consumerRoot)} (remove the coord notification hooks, ADR-0007)`;
|
|
459
|
+
case "remove-legacy-paths":
|
|
460
|
+
return a.relpaths
|
|
461
|
+
.map((r) => ` rm hstack/${r} (removed in v0.17)`)
|
|
462
|
+
.join("\n");
|
|
463
|
+
case "migrate-kernel-filename":
|
|
464
|
+
return ` move hstack/${LEGACY_KERNEL_FILENAME} -> hstack/${KERNEL_FILENAME} + CLAUDE.md import line (ADR-0010)`;
|
|
361
465
|
case "write-version":
|
|
362
466
|
return ` write ${rel(a.to, consumerRoot)} (${a.version})`;
|
|
363
467
|
}
|
|
@@ -399,7 +503,7 @@ export async function validatePlan(actions) {
|
|
|
399
503
|
}
|
|
400
504
|
}
|
|
401
505
|
}
|
|
402
|
-
if (a.kind === "
|
|
506
|
+
if (a.kind === "remove-coord-hooks") {
|
|
403
507
|
if ((await coordHooksState(a.file)) === "invalid") {
|
|
404
508
|
blockers.push(`${a.file} exists but is not a parseable JSON settings object (or its hooks key has an unexpected shape). ` +
|
|
405
509
|
`Fix it manually, then re-run — hstack never rewrites an unparseable settings file.`);
|
|
@@ -423,6 +527,12 @@ export async function executePlan(actions) {
|
|
|
423
527
|
break;
|
|
424
528
|
case "remove-file":
|
|
425
529
|
await fs.remove(a.to);
|
|
530
|
+
// Removing every SKILL.md under a deleted skill leaves the skill's
|
|
531
|
+
// directory behind, and an empty `hstack/.claude/skills/hstack-ship/`
|
|
532
|
+
// reads as a skill that is still installed. `relpath` is a suffix of
|
|
533
|
+
// `to`, so what precedes it is the consumer's hstack root — the
|
|
534
|
+
// boundary the prune must not walk past.
|
|
535
|
+
await pruneEmptyDirs(dirname(a.to), a.to.slice(0, a.to.length - a.relpath.length));
|
|
426
536
|
break;
|
|
427
537
|
case "symlink": {
|
|
428
538
|
const stat = await lstat(a.to).catch(() => null);
|
|
@@ -445,8 +555,14 @@ export async function executePlan(actions) {
|
|
|
445
555
|
case "append-line":
|
|
446
556
|
await appendLineIdempotent(a.file, a.line, a.createIfMissing, a.matchOn);
|
|
447
557
|
break;
|
|
448
|
-
case "
|
|
449
|
-
await
|
|
558
|
+
case "remove-coord-hooks":
|
|
559
|
+
await removeCoordHooks(a.file);
|
|
560
|
+
break;
|
|
561
|
+
case "remove-legacy-paths":
|
|
562
|
+
await removeLegacyPaths(a.consumerRoot, a.relpaths);
|
|
563
|
+
break;
|
|
564
|
+
case "migrate-kernel-filename":
|
|
565
|
+
await migrateKernelFilename(a.consumerRoot);
|
|
450
566
|
break;
|
|
451
567
|
case "write-version":
|
|
452
568
|
await fs.ensureDir(dirname(a.to));
|
|
@@ -455,6 +571,22 @@ export async function executePlan(actions) {
|
|
|
455
571
|
}
|
|
456
572
|
}
|
|
457
573
|
}
|
|
574
|
+
/**
|
|
575
|
+
* Walk up from `dir`, removing directories that came out empty, and stop at
|
|
576
|
+
* `stopAt` (exclusive) or at the first directory that still holds something.
|
|
577
|
+
* A directory the engineer dropped a file into is never touched.
|
|
578
|
+
*/
|
|
579
|
+
async function pruneEmptyDirs(dir, stopAt) {
|
|
580
|
+
const boundary = resolve(stopAt);
|
|
581
|
+
let current = resolve(dir);
|
|
582
|
+
while (current !== boundary && current.startsWith(boundary)) {
|
|
583
|
+
const entries = await readdir(current).catch(() => null);
|
|
584
|
+
if (entries === null || entries.length > 0)
|
|
585
|
+
return;
|
|
586
|
+
await fs.remove(current);
|
|
587
|
+
current = dirname(current);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
458
590
|
async function appendLineIdempotent(file, line, createIfMissing, matchOn) {
|
|
459
591
|
const exists = await fs.pathExists(file);
|
|
460
592
|
if (!exists && !createIfMissing)
|
package/dist/lib/wire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/lib/wire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/lib/wire.ts"],"names":[],"mappings":"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"}
|