plumbbob 0.10.3 → 0.11.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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +108 -51
- package/dist/cli-core.js +8 -4
- package/dist/lib/agents.js +2 -2
- package/dist/lib/buildlog.js +22 -0
- package/dist/lib/check.js +76 -6
- package/dist/lib/git.js +60 -5
- package/dist/lib/notice.js +140 -0
- package/dist/lib/orient.js +467 -8
- package/dist/lib/sidecar.js +28 -0
- package/dist/verbs/abandon.js +25 -8
- package/dist/verbs/agent.js +63 -31
- package/dist/verbs/build.js +25 -9
- package/dist/verbs/check.js +8 -3
- package/dist/verbs/checkpoint.js +130 -32
- package/dist/verbs/finish.js +33 -9
- package/dist/verbs/handoff.js +506 -63
- package/dist/verbs/park.js +11 -5
- package/dist/verbs/revert.js +16 -5
- package/dist/verbs/spike.js +61 -22
- package/dist/verbs/start.js +56 -17
- package/dist/verbs/use.js +26 -16
- package/package.json +1 -1
- package/skills/abandon/SKILL.md +2 -1
- package/skills/build/SKILL.md +117 -35
- package/skills/finish/SKILL.md +19 -8
- package/skills/park/SKILL.md +15 -1
- package/skills/plan/SKILL.md +59 -1
- package/skills/recover/SKILL.md +3 -2
- package/skills/revert/SKILL.md +2 -1
- package/skills/spike/SKILL.md +3 -2
- package/skills/status/SKILL.md +13 -5
- package/skills/verify/SKILL.md +127 -31
- package/templates/build-log.md +4 -3
package/dist/verbs/finish.js
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
// offers the artifact, it does not wall the door. The git footprint stays
|
|
8
8
|
// additive: one forward commit under the Conventional `chore(<scope>): finish`
|
|
9
9
|
// subject, with the `plumbbob finish` identifier riding a marker line at the head
|
|
10
|
-
// of the body so `git log --grep plumbbob` still finds it.
|
|
10
|
+
// of the body so `git log --grep plumbbob` still finds it. The turn's forward
|
|
11
|
+
// pointer is printed here rather than by `handoff`, the one ending handoff
|
|
12
|
+
// cannot render: finish has just cleared the session it would read from.
|
|
11
13
|
import { appendFileSync, existsSync, readFileSync, rmSync } from 'node:fs';
|
|
12
14
|
import { join } from 'node:path';
|
|
13
15
|
import { commit, findRepoRoot, isDirty, stageAll } from "../lib/git.js";
|
|
@@ -15,6 +17,11 @@ import { readCommitBody } from "../lib/commitbody.js";
|
|
|
15
17
|
import { buildScope, checkpointsPath, clearTick, hasSession, intentPath, readStats, refreshExcludes, reportPath, resolveBuild, seamPath, setGrant, sidecarDir, spikePath, stepPath, } from "../lib/sidecar.js";
|
|
16
18
|
import { conventionalSubject, withMarker } from "../lib/commitmsg.js";
|
|
17
19
|
import { parseBuildScope } from "../lib/intent.js";
|
|
20
|
+
import { advisory, ending, notice, transition } from "../lib/notice.js";
|
|
21
|
+
// The pointer finish leaves the turn on. Every other one is `handoff`'s, but a
|
|
22
|
+
// finished session has no state left to render from, and past a closed build
|
|
23
|
+
// the only move is framing the next goal.
|
|
24
|
+
const NEXT_UP = '**Next Up**: Nothing planned - /plumbbob:plan';
|
|
18
25
|
/**
|
|
19
26
|
* Close out the active build: report tail, final commit, control-state cleanup.
|
|
20
27
|
*
|
|
@@ -26,7 +33,7 @@ import { parseBuildScope } from "../lib/intent.js";
|
|
|
26
33
|
export function finish(cwd, args = []) {
|
|
27
34
|
const root = findRepoRoot(cwd);
|
|
28
35
|
if (root === null || !hasSession(root)) {
|
|
29
|
-
process.stderr.write(
|
|
36
|
+
process.stderr.write(notice({ fact: 'no active session', remedy: 'plumbbob start "<title>"' }));
|
|
30
37
|
return 1;
|
|
31
38
|
}
|
|
32
39
|
// Checked before any of finish's writes: appendCheckpointShas/appendStats
|
|
@@ -39,14 +46,11 @@ export function finish(cwd, args = []) {
|
|
|
39
46
|
return 1;
|
|
40
47
|
}
|
|
41
48
|
const { build: slug } = resolveBuild(root, args);
|
|
42
|
-
|
|
49
|
+
const reported = existsSync(reportPath(root, slug));
|
|
50
|
+
if (reported) {
|
|
43
51
|
appendCheckpointShas(root, slug);
|
|
44
52
|
appendStats(root, slug);
|
|
45
53
|
}
|
|
46
|
-
else {
|
|
47
|
-
process.stderr.write('plumbbob: note — no report.md found; finishing without one ' +
|
|
48
|
-
'(/plumbbob:finish normally writes the report first). No gate — D9 (finish-no-gate).\n');
|
|
49
|
-
}
|
|
50
54
|
// The final commit: stage the report just written plus the build folder's tail
|
|
51
55
|
// (a step's commit sweeps its own bookkeeping along with the work, so the last
|
|
52
56
|
// step's `checkpoints` line lands one commit late and finish absorbs it) and
|
|
@@ -74,9 +78,29 @@ export function finish(cwd, args = []) {
|
|
|
74
78
|
clearTick(root, slug);
|
|
75
79
|
setGrant(root, null);
|
|
76
80
|
rmSync(join(sidecarDir(root), 'STATE'), { force: true });
|
|
81
|
+
// The whole ending in the fixed order: the lead line, the advisory that
|
|
82
|
+
// qualifies it (finishing without a report is guidance, never a gate; the
|
|
83
|
+
// session is already closed by the time it prints), and the pointer, which is
|
|
84
|
+
// the turn's last text. finish renders that pointer itself: it just cleared
|
|
85
|
+
// the session `handoff` would read one from.
|
|
77
86
|
const where = slug === null ? '.plumbbob/' : `.plumbbob/builds/${slug}/`;
|
|
78
|
-
process.stdout.write(
|
|
79
|
-
|
|
87
|
+
process.stdout.write(ending({
|
|
88
|
+
lead: transition({
|
|
89
|
+
label: 'Session',
|
|
90
|
+
fact: 'finished',
|
|
91
|
+
detail: [sha.slice(0, 9), `${where} rides your branch into the PR`],
|
|
92
|
+
}),
|
|
93
|
+
advisories: reported
|
|
94
|
+
? []
|
|
95
|
+
: [
|
|
96
|
+
advisory({
|
|
97
|
+
fact: 'no report.md found',
|
|
98
|
+
detail: ['finished without one', 'no gate here by design'],
|
|
99
|
+
remedy: '/plumbbob:finish normally writes the report first',
|
|
100
|
+
}),
|
|
101
|
+
],
|
|
102
|
+
pointer: NEXT_UP,
|
|
103
|
+
}));
|
|
80
104
|
return 0;
|
|
81
105
|
}
|
|
82
106
|
/**
|