specweave 3.1.4 → 3.1.6
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/.claude-plugin/marketplace.json +2 -2
- package/README.md +4 -5
- package/bin/specweave.js +18 -1
- package/dist/dashboard/assets/index-B4Xv671Q.css +1 -0
- package/dist/dashboard/assets/index-VnHjeVmH.js +16 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/src/cli/commands/card.d.ts.map +1 -1
- package/dist/src/cli/commands/card.js +15 -10
- package/dist/src/cli/commands/card.js.map +1 -1
- package/dist/src/cli/commands/complete.d.ts.map +1 -1
- package/dist/src/cli/commands/complete.js +6 -0
- package/dist/src/cli/commands/complete.js.map +1 -1
- package/dist/src/cli/commands/create-increment.d.ts.map +1 -1
- package/dist/src/cli/commands/create-increment.js +4 -0
- package/dist/src/cli/commands/create-increment.js.map +1 -1
- package/dist/src/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/src/cli/commands/dashboard.js +2 -0
- package/dist/src/cli/commands/dashboard.js.map +1 -1
- package/dist/src/cli/commands/gc.d.ts +5 -1
- package/dist/src/cli/commands/gc.d.ts.map +1 -1
- package/dist/src/cli/commands/gc.js +19 -2
- package/dist/src/cli/commands/gc.js.map +1 -1
- package/dist/src/cli/commands/jev-helpers.d.ts +12 -4
- package/dist/src/cli/commands/jev-helpers.d.ts.map +1 -1
- package/dist/src/cli/commands/jev-helpers.js +22 -13
- package/dist/src/cli/commands/jev-helpers.js.map +1 -1
- package/dist/src/cli/commands/pickup.d.ts.map +1 -1
- package/dist/src/cli/commands/pickup.js +8 -4
- package/dist/src/cli/commands/pickup.js.map +1 -1
- package/dist/src/cli/commands/require-increment.d.ts +18 -0
- package/dist/src/cli/commands/require-increment.d.ts.map +1 -0
- package/dist/src/cli/commands/require-increment.js +75 -0
- package/dist/src/cli/commands/require-increment.js.map +1 -0
- package/dist/src/cli/commands/small-fix.d.ts +14 -0
- package/dist/src/cli/commands/small-fix.d.ts.map +1 -0
- package/dist/src/cli/commands/small-fix.js +52 -0
- package/dist/src/cli/commands/small-fix.js.map +1 -0
- package/dist/src/cli/commands/verify.d.ts.map +1 -1
- package/dist/src/cli/commands/verify.js +3 -0
- package/dist/src/cli/commands/verify.js.map +1 -1
- package/dist/src/core/config/types.d.ts +7 -0
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/hooks/handlers/pre-compact.d.ts.map +1 -1
- package/dist/src/core/hooks/handlers/pre-compact.js +4 -1
- package/dist/src/core/hooks/handlers/pre-compact.js.map +1 -1
- package/dist/src/core/hooks/handlers/pre-tool-use.d.ts +5 -2
- package/dist/src/core/hooks/handlers/pre-tool-use.d.ts.map +1 -1
- package/dist/src/core/hooks/handlers/pre-tool-use.js +16 -3
- package/dist/src/core/hooks/handlers/pre-tool-use.js.map +1 -1
- package/dist/src/core/hooks/handlers/require-increment.d.ts +40 -0
- package/dist/src/core/hooks/handlers/require-increment.d.ts.map +1 -0
- package/dist/src/core/hooks/handlers/require-increment.js +123 -0
- package/dist/src/core/hooks/handlers/require-increment.js.map +1 -0
- package/dist/src/core/increment/completion-validator.d.ts +6 -2
- package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
- package/dist/src/core/increment/completion-validator.js +16 -9
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/session/checkpoint-retention.d.ts +45 -0
- package/dist/src/core/session/checkpoint-retention.d.ts.map +1 -0
- package/dist/src/core/session/checkpoint-retention.js +187 -0
- package/dist/src/core/session/checkpoint-retention.js.map +1 -0
- package/dist/src/core/session/checkpoint-worker.js +5 -0
- package/dist/src/core/session/checkpoint-worker.js.map +1 -1
- package/dist/src/core/session/pickup.d.ts +2 -0
- package/dist/src/core/session/pickup.d.ts.map +1 -1
- package/dist/src/core/session/pickup.js +4 -3
- package/dist/src/core/session/pickup.js.map +1 -1
- package/dist/src/core/session/work-handoff.d.ts.map +1 -1
- package/dist/src/core/session/work-handoff.js +6 -3
- package/dist/src/core/session/work-handoff.js.map +1 -1
- package/dist/src/core/tasks/ledger.d.ts +7 -0
- package/dist/src/core/tasks/ledger.d.ts.map +1 -1
- package/dist/src/core/tasks/ledger.js +20 -4
- package/dist/src/core/tasks/ledger.js.map +1 -1
- package/dist/src/core/tasks/verify-runner.d.ts +1 -1
- package/dist/src/core/tasks/verify-runner.d.ts.map +1 -1
- package/dist/src/core/tasks/verify-runner.js +5 -13
- package/dist/src/core/tasks/verify-runner.js.map +1 -1
- package/dist/src/core/tasks/work-session.d.ts +58 -0
- package/dist/src/core/tasks/work-session.d.ts.map +1 -0
- package/dist/src/core/tasks/work-session.js +88 -0
- package/dist/src/core/tasks/work-session.js.map +1 -0
- package/dist/src/dashboard/server/dashboard-server.d.ts.map +1 -1
- package/dist/src/dashboard/server/dashboard-server.js +2 -0
- package/dist/src/dashboard/server/dashboard-server.js.map +1 -1
- package/dist/src/dashboard/server/data/plan-timeline.d.ts +40 -0
- package/dist/src/dashboard/server/data/plan-timeline.d.ts.map +1 -0
- package/dist/src/dashboard/server/data/plan-timeline.js +259 -0
- package/dist/src/dashboard/server/data/plan-timeline.js.map +1 -0
- package/dist/src/dashboard/server/data/work-projection.d.ts.map +1 -1
- package/dist/src/dashboard/server/data/work-projection.js +7 -2
- package/dist/src/dashboard/server/data/work-projection.js.map +1 -1
- package/dist/src/dashboard/server/routes/plan-routes.d.ts +4 -0
- package/dist/src/dashboard/server/routes/plan-routes.d.ts.map +1 -0
- package/dist/src/dashboard/server/routes/plan-routes.js +19 -0
- package/dist/src/dashboard/server/routes/plan-routes.js.map +1 -0
- package/dist/src/dashboard/work-types.d.ts +81 -0
- package/dist/src/dashboard/work-types.d.ts.map +1 -1
- package/dist/src/utils/find-project-root.d.ts +2 -0
- package/dist/src/utils/find-project-root.d.ts.map +1 -1
- package/dist/src/utils/find-project-root.js +8 -1
- package/dist/src/utils/find-project-root.js.map +1 -1
- package/dist/src/utils/main-checkout.d.ts +30 -0
- package/dist/src/utils/main-checkout.d.ts.map +1 -0
- package/dist/src/utils/main-checkout.js +74 -0
- package/dist/src/utils/main-checkout.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/hooks/run-worker.mjs +42 -5
- package/plugins/specweave/hooks/run.mjs +101 -6
- package/src/templates/AGENTS.md.template +1 -1
- package/src/templates/environments/minimal/README.md +3 -3
- package/src/templates/environments/progressive/README.md +5 -6
- package/src/templates/environments/standard/README.md +4 -4
- package/dist/dashboard/assets/index-BFPKNEDz.css +0 -1
- package/dist/dashboard/assets/index-DVaY9gOX.js +0 -13
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>SpecWeave Dashboard</title>
|
|
7
7
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'%3E%3Ctitle%3ESpecWithCode%3C/title%3E%3Crect width='64' height='64' rx='14.4' fill='%235B6CFF'/%3E%3Csvg x='12.8' y='12.8' width='38.4' height='38.4' viewBox='10 10 80 80'%3E%3Cpath fill='%23FFFFFF' d='M29 10H60L78 28V83Q78 90 71 90H29Q22 90 22 83V17Q22 10 29 10Z'/%3E%3Cpath fill='%23AAACB2' d='M60 10V24Q60 28 64 28H78Z'/%3E%3Cpath fill='%230B1020' d='M38.703 41.051L50.703 52.051A4 4 0 0 1 50.703 57.949L38.703 68.949A4 4 0 0 1 33.297 63.051L42.080 55L33.297 46.949A4 4 0 0 1 38.703 41.051ZM54 62H64A4 4 0 0 1 64 70H54A4 4 0 0 1 54 62Z'/%3E%3C/svg%3E%3C/svg%3E" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-VnHjeVmH.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B4Xv671Q.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body class="antialiased">
|
|
12
12
|
<div id="root"></div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,kDAAkD;AAClD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqExH;AAED,6CAA6C;AAC7C,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBvG"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { execFileSync } from 'child_process';
|
|
18
18
|
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
19
|
+
import { gitCheckoutFor } from '../../utils/main-checkout.js';
|
|
19
20
|
import { clampCardLine, getAgentId } from '../../core/tasks/ledger.js';
|
|
20
21
|
import { incrementCards, readOriginUrl, renderChecklist } from '../../core/tasks/cards.js';
|
|
21
22
|
import { resolveIncrement, readLeaseHours, IncrementResolutionError } from '../../core/tasks/resolve-increment.js';
|
|
@@ -34,8 +35,10 @@ export async function cardCommand(action, a, b, opts = {}) {
|
|
|
34
35
|
}
|
|
35
36
|
const cwd = opts.cwd ?? process.cwd();
|
|
36
37
|
const projectRoot = resolveEffectiveRoot(cwd);
|
|
38
|
+
// Cards live with the plan; the branch is the start directory's own checkout (a thread's worktree).
|
|
39
|
+
const gitRoot = gitCheckoutFor(cwd, projectRoot);
|
|
37
40
|
const agent = opts.agent ?? getAgentId();
|
|
38
|
-
const branch = opts.branch ?? currentBranch(
|
|
41
|
+
const branch = opts.branch ?? currentBranch(gitRoot);
|
|
39
42
|
const file = branchCardsPath(projectRoot, branch);
|
|
40
43
|
if (action === 'add') {
|
|
41
44
|
const text = [a, b].filter(Boolean).join(' ').trim() || opts.line?.trim();
|
|
@@ -56,7 +59,7 @@ export async function cardCommand(action, a, b, opts = {}) {
|
|
|
56
59
|
return 1;
|
|
57
60
|
if (inc)
|
|
58
61
|
return taskCommand('list', inc.id, undefined, opts);
|
|
59
|
-
out(renderChecklist(branchCards(file, cardOpts(
|
|
62
|
+
out(renderChecklist(branchCards(file, cardOpts(gitRoot)), branchHeader(branch)));
|
|
60
63
|
return 0;
|
|
61
64
|
}
|
|
62
65
|
if (!a) {
|
|
@@ -85,7 +88,7 @@ export async function cardCommand(action, a, b, opts = {}) {
|
|
|
85
88
|
event.link = opts.link.trim();
|
|
86
89
|
if (action === 'done') {
|
|
87
90
|
event.e = 'done';
|
|
88
|
-
const sha = headSha(
|
|
91
|
+
const sha = headSha(gitRoot);
|
|
89
92
|
event.evidence = [opts.evidence?.trim(), opts.link?.trim(), sha ? `HEAD ${sha}` : undefined].filter(Boolean).join('\n') || 'card done';
|
|
90
93
|
}
|
|
91
94
|
else if (action === 'wait') {
|
|
@@ -93,7 +96,7 @@ export async function cardCommand(action, a, b, opts = {}) {
|
|
|
93
96
|
event.note = (opts.reason ?? opts.note ?? opts.line ?? 'waiting').trim();
|
|
94
97
|
}
|
|
95
98
|
appendBranchEvent(file, event);
|
|
96
|
-
const card = branchCards(file, cardOpts(
|
|
99
|
+
const card = branchCards(file, cardOpts(gitRoot)).find((c) => c.id === cardId);
|
|
97
100
|
const wanted = { start: 'doing', done: 'done', wait: 'waiting' }[action];
|
|
98
101
|
if (card?.state !== wanted) {
|
|
99
102
|
err(`${cardId} is ${card?.state ?? 'unknown'}: another agent holds it, or it is already finished`);
|
|
@@ -106,7 +109,9 @@ export async function cardCommand(action, a, b, opts = {}) {
|
|
|
106
109
|
export async function cardsCommand(incrementId, opts = {}) {
|
|
107
110
|
const out = (s) => process.stdout.write(s + '\n');
|
|
108
111
|
const err = (s) => process.stderr.write(s + '\n');
|
|
109
|
-
const
|
|
112
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
113
|
+
const projectRoot = resolveEffectiveRoot(cwd);
|
|
114
|
+
const gitRoot = gitCheckoutFor(cwd, projectRoot);
|
|
110
115
|
const inc = boundIncrement(projectRoot, incrementId, err);
|
|
111
116
|
if (inc === null)
|
|
112
117
|
return 1;
|
|
@@ -115,12 +120,12 @@ export async function cardsCommand(incrementId, opts = {}) {
|
|
|
115
120
|
if (inc) {
|
|
116
121
|
const title = readTitle(inc.dir);
|
|
117
122
|
header = `${inc.id}${title ? ` ${title}` : ''}`;
|
|
118
|
-
cards = incrementCards(inc.dir, { ...cardOpts(
|
|
123
|
+
cards = incrementCards(inc.dir, { ...cardOpts(gitRoot), leaseHours: readLeaseHours(projectRoot) });
|
|
119
124
|
}
|
|
120
125
|
else {
|
|
121
|
-
const branch = opts.branch ?? currentBranch(
|
|
126
|
+
const branch = opts.branch ?? currentBranch(gitRoot);
|
|
122
127
|
header = branchHeader(branch);
|
|
123
|
-
cards = branchCards(branchCardsPath(projectRoot, branch), cardOpts(
|
|
128
|
+
cards = branchCards(branchCardsPath(projectRoot, branch), cardOpts(gitRoot));
|
|
124
129
|
}
|
|
125
130
|
out(opts.json ? JSON.stringify({ increment: inc?.id ?? null, header, cards }, null, 2) : renderChecklist(cards, header));
|
|
126
131
|
return 0;
|
|
@@ -146,8 +151,8 @@ function boundIncrement(projectRoot, id, err) {
|
|
|
146
151
|
function branchHeader(branch) {
|
|
147
152
|
return `Cards on ${branch ?? 'no branch'}`;
|
|
148
153
|
}
|
|
149
|
-
function cardOpts(
|
|
150
|
-
return { origin: readOriginUrl(
|
|
154
|
+
function cardOpts(gitRoot) {
|
|
155
|
+
return { origin: readOriginUrl(gitRoot) };
|
|
151
156
|
}
|
|
152
157
|
function rel(root, p) {
|
|
153
158
|
return p.startsWith(root) ? p.slice(root.length + 1) : p;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/cli/commands/card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAoB,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAa,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,wBAAwB,EAA0B,MAAM,uCAAuC,CAAC;AAC3I,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACjK,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AAQjE,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAClE,MAAM,WAAW,GAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAE5F,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,CAAU,EAAE,CAAU,EAAE,OAA2B,EAAE;IACrG,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,wBAAwB,MAAM,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/cli/commands/card.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/complete.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/complete.ts"],"names":[],"mappings":"AAQA,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAiFf"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { detectSessionId } from '../../core/tasks/ledger.js';
|
|
3
|
+
import { recordIncrementWork } from '../../core/tasks/work-session.js';
|
|
1
4
|
import { completeIncrement } from '../../core/increment/status-commands.js';
|
|
2
5
|
import { resolveIncrementId } from '../../utils/resolve-increment-id.js';
|
|
3
6
|
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
@@ -73,6 +76,9 @@ export async function completeCommand(incrementId, moreIds = [], options = {}) {
|
|
|
73
76
|
catch (err) {
|
|
74
77
|
console.error(`Error completing "${resolved}": ${err instanceof Error ? err.message : String(err)}`);
|
|
75
78
|
}
|
|
79
|
+
if (success) {
|
|
80
|
+
recordIncrementWork(path.join(projectRoot, '.specweave', 'increments', resolved), { e: 'complete' }, { sessionId: detectSessionId() });
|
|
81
|
+
}
|
|
76
82
|
results.push({ id, resolved, success });
|
|
77
83
|
}
|
|
78
84
|
// Print summary for batch mode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../../src/cli/commands/complete.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../../src/cli/commands/complete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-increment.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/create-increment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"create-increment.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/create-increment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,WAAW,sBAAsB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2H3F"}
|
|
@@ -19,6 +19,8 @@ import { readConfig } from '../../core/config/config-manager.js';
|
|
|
19
19
|
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
20
20
|
import { slugify } from '../../utils/string-utils.js';
|
|
21
21
|
import { supersedeIncrement, setParentIncrement } from '../../core/tasks/supersede.js';
|
|
22
|
+
import { detectSessionId } from '../../core/tasks/ledger.js';
|
|
23
|
+
import { recordIncrementWork } from '../../core/tasks/work-session.js';
|
|
22
24
|
export async function createIncrementCommand(options) {
|
|
23
25
|
const { id, title, board, type, priority, json = false, projectRoot: rawProjectRoot, parallel = false, supersedes, parent, withPlan = false, planned = false, } = options;
|
|
24
26
|
if (id && options.autoId) {
|
|
@@ -82,6 +84,8 @@ export async function createIncrementCommand(options) {
|
|
|
82
84
|
const finalId = autoId
|
|
83
85
|
? path.basename(result.incrementPath)
|
|
84
86
|
: resolvedId;
|
|
87
|
+
// The SpecWithCode thread and the agent session now work on this increment.
|
|
88
|
+
recordIncrementWork(result.incrementPath, { e: 'create' }, { sessionId: detectSessionId() });
|
|
85
89
|
// Relationships: --supersedes abandons the old increment, --parent links up.
|
|
86
90
|
const relations = [];
|
|
87
91
|
const record = (result) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-increment.js","sourceRoot":"","sources":["../../../../src/cli/commands/create-increment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-increment.js","sourceRoot":"","sources":["../../../../src/cli/commands/create-increment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CpF;AAqDD,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,gCAAgC;AAChC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
|
@@ -44,6 +44,7 @@ export async function dashboardCommand(options = {}) {
|
|
|
44
44
|
console.log(chalk.bold.green(' SpecWeave Dashboard'));
|
|
45
45
|
console.log(chalk.dim(' ────────────────────'));
|
|
46
46
|
console.log(` ${chalk.cyan('URL:')} ${chalk.underline(url)}`);
|
|
47
|
+
console.log(` ${chalk.cyan('Timeline:')} ${chalk.underline(`http://localhost:${existing.port}/timeline?project=${projectSlug}`)}`);
|
|
47
48
|
console.log(` ${chalk.dim('Already running (PID ' + existing.pid + ')')}`);
|
|
48
49
|
console.log('');
|
|
49
50
|
if (options.browser !== false) {
|
|
@@ -72,6 +73,7 @@ async function startNewDashboard(projectRoot, options) {
|
|
|
72
73
|
console.log(chalk.bold.green(' SpecWeave Dashboard'));
|
|
73
74
|
console.log(chalk.dim(' ────────────────────'));
|
|
74
75
|
console.log(` ${chalk.cyan('URL:')} ${chalk.underline(url)}`);
|
|
76
|
+
console.log(` ${chalk.cyan('Timeline:')} ${chalk.underline(`${instance.url}/timeline?project=${projectSlug}`)}`);
|
|
75
77
|
console.log(` ${chalk.cyan('Project:')} ${projectRoot}`);
|
|
76
78
|
console.log(` ${chalk.cyan('PID:')} ${process.pid}`);
|
|
77
79
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
* CLI command: gc
|
|
3
3
|
*
|
|
4
4
|
* Purges known junk from .specweave/state/ (dry-run by default, --yes to delete),
|
|
5
|
-
*
|
|
5
|
+
* reports .worktrees size and nested .specweave/ directories, and expires
|
|
6
|
+
* session checkpoints under ~/.specweave/checkpoints (same rule as the daily
|
|
7
|
+
* background prune; also only with --yes).
|
|
6
8
|
*/
|
|
7
9
|
export interface GcCommandOptions {
|
|
8
10
|
yes?: boolean;
|
|
9
11
|
json?: boolean;
|
|
10
12
|
projectRoot?: string;
|
|
13
|
+
/** Home holding `.specweave/checkpoints` (tests). */
|
|
14
|
+
home?: string;
|
|
11
15
|
}
|
|
12
16
|
export declare function gcCommand(options?: GcCommandOptions): Promise<void>;
|
|
13
17
|
//# sourceMappingURL=gc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/gc.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/gc.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE7E"}
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
* CLI command: gc
|
|
3
3
|
*
|
|
4
4
|
* Purges known junk from .specweave/state/ (dry-run by default, --yes to delete),
|
|
5
|
-
*
|
|
5
|
+
* reports .worktrees size and nested .specweave/ directories, and expires
|
|
6
|
+
* session checkpoints under ~/.specweave/checkpoints (same rule as the daily
|
|
7
|
+
* background prune; also only with --yes).
|
|
6
8
|
*/
|
|
7
9
|
import * as path from 'path';
|
|
8
10
|
import chalk from 'chalk';
|
|
9
11
|
import { findEffectiveRoot } from '../../utils/find-project-root.js';
|
|
10
12
|
import { purgeState, findNestedSpecweaveDirs, worktreesSize, formatBytes, } from '../../core/state/state-gc.js';
|
|
13
|
+
import { checkpointsDirectory } from '../../core/session/session-checkpoint.js';
|
|
14
|
+
import { CHECKPOINT_RETENTION_DAYS, pruneCheckpoints } from '../../core/session/checkpoint-retention.js';
|
|
11
15
|
// NOTE: user-facing command output; console.* is intentional here.
|
|
12
16
|
export async function gcCommand(options = {}) {
|
|
13
17
|
// An explicit --project-root is the caller's responsibility. Otherwise resolve
|
|
@@ -31,8 +35,10 @@ export async function gcCommand(options = {}) {
|
|
|
31
35
|
const result = purgeState(stateDir, { apply: !!options.yes });
|
|
32
36
|
const worktrees = worktreesSize(projectRoot);
|
|
33
37
|
const nested = findNestedSpecweaveDirs(projectRoot);
|
|
38
|
+
const checkpointsDir = checkpointsDirectory(options.home);
|
|
39
|
+
const checkpoints = pruneCheckpoints(checkpointsDir, { apply: !!options.yes });
|
|
34
40
|
if (options.json) {
|
|
35
|
-
console.log(JSON.stringify({ ...result, worktreesBytes: worktrees, nestedSpecweaveDirs: nested }, null, 2));
|
|
41
|
+
console.log(JSON.stringify({ ...result, worktreesBytes: worktrees, nestedSpecweaveDirs: nested, checkpoints: { dir: checkpointsDir, ...checkpoints } }, null, 2));
|
|
36
42
|
return;
|
|
37
43
|
}
|
|
38
44
|
const entries = result.applied ? result.deleted : result.candidates;
|
|
@@ -50,6 +56,17 @@ export async function gcCommand(options = {}) {
|
|
|
50
56
|
}
|
|
51
57
|
console.log('');
|
|
52
58
|
console.log(`.worktrees/: ${worktrees === 0 ? chalk.dim('absent') : formatBytes(worktrees)}`);
|
|
59
|
+
const pending = checkpoints.pendingHandoffs ? `, ${checkpoints.pendingHandoffs} with a pending handoff` : '';
|
|
60
|
+
const kept = chalk.dim(`(${checkpoints.kept} kept${pending})`);
|
|
61
|
+
if (checkpoints.sessions === 0 && checkpoints.pointers === 0) {
|
|
62
|
+
console.log(`Session checkpoints: nothing older than ${CHECKPOINT_RETENTION_DAYS} days ${kept}`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const ptrs = checkpoints.pointers ? ` and ${checkpoints.pointers} Studio pointer${checkpoints.pointers === 1 ? '' : 's'}` : '';
|
|
66
|
+
const verbC = checkpoints.applied ? 'deleted' : 'reclaimable';
|
|
67
|
+
console.log(`Session checkpoints: ${checkpoints.sessions} older than ${CHECKPOINT_RETENTION_DAYS} days${ptrs}, ${formatBytes(checkpoints.bytes)} ${verbC} ${kept}`);
|
|
68
|
+
}
|
|
69
|
+
console.log(chalk.dim(` ${checkpointsDir}`));
|
|
53
70
|
if (nested.length > 0) {
|
|
54
71
|
console.log('');
|
|
55
72
|
console.log(chalk.yellow(`Nested .specweave/ directories (${nested.length}) — reported only, never deleted:`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../../../src/cli/commands/gc.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../../../src/cli/commands/gc.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,9 +47,17 @@ export declare function projectSettingsPath(projectRoot: string): string;
|
|
|
47
47
|
* resolves its own plugin root from `import.meta.url`, so an absolute path is
|
|
48
48
|
* all it needs.
|
|
49
49
|
*/
|
|
50
|
-
export declare function jevHookCommand(root?: string): string;
|
|
51
|
-
/**
|
|
52
|
-
|
|
50
|
+
export declare function jevHookCommand(root?: string, scope?: HookScope): string;
|
|
51
|
+
/**
|
|
52
|
+
* `user`: the entry sits in `~/.claude/settings.json` and so runs in every
|
|
53
|
+
* project; the launcher passes it at once unless an opted-in project's marker
|
|
54
|
+
* is found (and defers to that project's own entry when Claude loaded it).
|
|
55
|
+
*/
|
|
56
|
+
export type HookScope = 'project' | 'user';
|
|
57
|
+
/** Matcher of the required-increment guard's PreToolUse group. */
|
|
58
|
+
export declare const EDIT_HOOK_MATCHER = "Edit|Write|MultiEdit|NotebookEdit";
|
|
59
|
+
/** Is the SpecWeave PreToolUse hook registered for `matcher` (default: the Jev Bash guard) right now? */
|
|
60
|
+
export declare function readProjectHook(projectRoot: string, matcher?: string): ProjectHookState;
|
|
53
61
|
/**
|
|
54
62
|
* Register or remove the Jev Bash guard in `<projectRoot>/.claude/settings.json`.
|
|
55
63
|
*
|
|
@@ -63,7 +71,7 @@ export declare function readProjectHook(projectRoot: string): ProjectHookState;
|
|
|
63
71
|
* A settings.json that is missing or malformed is never overwritten blind: a
|
|
64
72
|
* malformed file comes back as `{ error }` and is left exactly as it was.
|
|
65
73
|
*/
|
|
66
|
-
export declare function setProjectHook(projectRoot: string, on: boolean, packageDir?: string): ProjectHookState;
|
|
74
|
+
export declare function setProjectHook(projectRoot: string, on: boolean, packageDir?: string, matcher?: string, scope?: HookScope): ProjectHookState;
|
|
67
75
|
export interface SkillEntry {
|
|
68
76
|
name: string;
|
|
69
77
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jev-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/jev-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAIL,SAAS,EAKT,SAAS,EAGT,KAAK,IAAI,EACT,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAEjC,uFAAuF;AACvF,eAAO,MAAM,IAAI;;;;;IAKf,mFAAmF;;CAE3E,CAAC;AAEX,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAaxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAoC1F;AAED,wEAAwE;AACxE,wBAAgB,WAAW,IAAI,MAAM,CAcpC;AAsBD,MAAM,WAAW,gBAAgB;IAC/B,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6CAA6C;AAC7C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAsB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"jev-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/jev-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,12 +127,12 @@ export function projectSettingsPath(projectRoot) {
|
|
|
127
127
|
* resolves its own plugin root from `import.meta.url`, so an absolute path is
|
|
128
128
|
* all it needs.
|
|
129
129
|
*/
|
|
130
|
-
export function jevHookCommand(root = packageRoot()) {
|
|
131
|
-
return `node "${path.join(root, HOOK_REL)}" ${HOOK_EVENT}`;
|
|
130
|
+
export function jevHookCommand(root = packageRoot(), scope) {
|
|
131
|
+
return `node "${path.join(root, HOOK_REL)}" ${HOOK_EVENT}${scope === 'user' ? ' --scope user' : ''}`;
|
|
132
132
|
}
|
|
133
133
|
/** One hook entry, exactly as written into settings.json. */
|
|
134
|
-
function jevHookEntry(root) {
|
|
135
|
-
return { type: 'command', command: jevHookCommand(root), timeout: HOOK_TIMEOUT };
|
|
134
|
+
function jevHookEntry(root, scope) {
|
|
135
|
+
return { type: 'command', command: jevHookCommand(root, scope), timeout: HOOK_TIMEOUT };
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
138
|
* Ours? Matched on the launcher path + event rather than on the whole string, so
|
|
@@ -165,13 +165,23 @@ function readSettings(file) {
|
|
|
165
165
|
return { error: `${file} could not be read: ${messageOf(error)}` };
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
/**
|
|
169
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Our launcher under `matcher`. Each guard owns one matcher group (the Jev Bash
|
|
170
|
+
* guard `Bash`, the required-increment guard {@link EDIT_HOOK_MATCHER}), so
|
|
171
|
+
* switching one never touches the other.
|
|
172
|
+
*/
|
|
173
|
+
function isOurGroup(group, matcher) {
|
|
174
|
+
return (group?.matcher ?? HOOK_MATCHER) === matcher && (group?.hooks ?? []).some((hook) => isJevHookCommand(hook?.command));
|
|
175
|
+
}
|
|
176
|
+
/** Matcher of the required-increment guard's PreToolUse group. */
|
|
177
|
+
export const EDIT_HOOK_MATCHER = 'Edit|Write|MultiEdit|NotebookEdit';
|
|
178
|
+
/** Is the SpecWeave PreToolUse hook registered for `matcher` (default: the Jev Bash guard) right now? */
|
|
179
|
+
export function readProjectHook(projectRoot, matcher = HOOK_MATCHER) {
|
|
170
180
|
const file = projectSettingsPath(projectRoot);
|
|
171
181
|
const read = readSettings(file);
|
|
172
182
|
if ('error' in read)
|
|
173
183
|
return { path: file, present: false, error: read.error };
|
|
174
|
-
const present = preToolUseGroups(read.settings).some((group) => (group
|
|
184
|
+
const present = preToolUseGroups(read.settings).some((group) => isOurGroup(group, matcher));
|
|
175
185
|
return { path: file, present };
|
|
176
186
|
}
|
|
177
187
|
/**
|
|
@@ -187,7 +197,7 @@ export function readProjectHook(projectRoot) {
|
|
|
187
197
|
* A settings.json that is missing or malformed is never overwritten blind: a
|
|
188
198
|
* malformed file comes back as `{ error }` and is left exactly as it was.
|
|
189
199
|
*/
|
|
190
|
-
export function setProjectHook(projectRoot, on, packageDir = packageRoot()) {
|
|
200
|
+
export function setProjectHook(projectRoot, on, packageDir = packageRoot(), matcher = HOOK_MATCHER, scope = 'project') {
|
|
191
201
|
const file = projectSettingsPath(projectRoot);
|
|
192
202
|
const read = readSettings(file);
|
|
193
203
|
if ('error' in read)
|
|
@@ -202,8 +212,7 @@ export function setProjectHook(projectRoot, on, packageDir = packageRoot()) {
|
|
|
202
212
|
const next = [];
|
|
203
213
|
for (const group of groups) {
|
|
204
214
|
const entries = Array.isArray(group?.hooks) ? group.hooks : [];
|
|
205
|
-
|
|
206
|
-
if (!mine) {
|
|
215
|
+
if (!isOurGroup(group, matcher)) {
|
|
207
216
|
next.push(group);
|
|
208
217
|
continue;
|
|
209
218
|
}
|
|
@@ -213,8 +222,8 @@ export function setProjectHook(projectRoot, on, packageDir = packageRoot()) {
|
|
|
213
222
|
placed = true;
|
|
214
223
|
next.push({
|
|
215
224
|
...group,
|
|
216
|
-
matcher
|
|
217
|
-
hooks: entries.map((hook) => (isJevHookCommand(hook?.command) ? jevHookEntry(packageDir) : hook)),
|
|
225
|
+
matcher,
|
|
226
|
+
hooks: entries.map((hook) => (isJevHookCommand(hook?.command) ? jevHookEntry(packageDir, scope) : hook)),
|
|
218
227
|
});
|
|
219
228
|
continue;
|
|
220
229
|
}
|
|
@@ -223,7 +232,7 @@ export function setProjectHook(projectRoot, on, packageDir = packageRoot()) {
|
|
|
223
232
|
next.push({ ...group, hooks: kept });
|
|
224
233
|
}
|
|
225
234
|
if (on && !placed) {
|
|
226
|
-
next.push({ matcher
|
|
235
|
+
next.push({ matcher, hooks: [jevHookEntry(packageDir, scope)] });
|
|
227
236
|
changed = true;
|
|
228
237
|
}
|
|
229
238
|
if (next.length > 0)
|