@pmelab/gtd 42.0.0 → 44.0.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/.claude-plugin/plugin.json +1 -1
- package/README.md +96 -48
- package/claude/hooks/sketch.ts +1 -1
- package/dist/chunks/{reserved-D7MNY9QJ.mjs → reserved-DJk_6-ju.mjs} +75 -46
- package/dist/chunks/review-X7Jfz0dY.mjs +249 -0
- package/dist/chunks/{steering-oCDdQlpP.mjs → steering-D4LUQ-av.mjs} +95 -12
- package/dist/chunks/{tail-D2o2h5cc.mjs → tail-5w5mxGTq.mjs} +3 -3
- package/dist/gtd.bundle.mjs +488 -30
- package/dist/steering.mjs +2 -2
- package/dist/testkit.mjs +447 -27
- package/dist/web/main.js +42 -13
- package/dist/workflow-kit.mjs +61 -25
- package/dist/workflows/cleanup.mjs +2 -2
- package/dist/workflows/feature.mjs +7 -290
- package/dist/workflows/fix.mjs +3 -3
- package/dist/workflows/review.mjs +27 -7
- package/dist/workflows/rollout.mjs +1 -1
- package/dist/workflows.mjs +287 -161
- package/package.json +1 -1
- package/src/cli/Cli.test.ts +33 -1
- package/src/cli/Cli.ts +70 -6
- package/src/cli/History.ts +15 -0
- package/src/cli/Judges.test.ts +373 -0
- package/src/cli/Judges.ts +624 -0
- package/src/cli/Metrics.ts +3 -16
- package/src/cli/Program.test.ts +3 -1
- package/src/cli/Program.ts +9 -0
- package/src/steering/FORMATS.md +4 -4
- package/src/steering/index.ts +12 -1
- package/src/steering/review.test.ts +107 -0
- package/src/steering/review.ts +159 -9
- package/src/testkit/EmittedScriptRecognizer.ts +0 -14
- package/src/testkit/steps.ts +4 -0
- package/src/workflow-kit/review.test.ts +170 -26
- package/src/workflow-kit/review.ts +95 -19
- package/src/workflows/feature/coverage.ts +1 -1
- package/src/workflows/feature/feature.test.ts +8 -0
- package/src/workflows/feature/feature.ts +2 -2
- package/src/workflows/feature/index.ts +1 -1
- package/src/workflows/feature/lens-review.feature +16 -4
- package/src/workflows/feature/refactor.ts +1 -1
- package/src/workflows/feature/review-answers.feature +179 -0
- package/src/workflows/feature/seam.ts +1 -1
- package/src/workflows/feature/steps.test.ts +2 -76
- package/src/workflows/feature/steps.ts +5 -48
- package/src/workflows/fix/fix.feature +20 -21
- package/src/workflows/index.ts +1 -1
- package/src/workflows/review/review-door.feature +149 -0
- package/src/workflows/review/review.test.ts +1 -73
- package/src/workflows/review/review.ts +34 -6
- package/src/workflows/shared/__fixtures__/feature-collecting-prompt.txt +6 -5
- package/src/workflows/shared/access.test.ts +2 -11
- package/src/workflows/shared/access.ts +0 -2
- package/src/workflows/{feature → shared}/review.test.ts +9 -61
- package/src/workflows/{feature → shared}/review.ts +40 -48
- package/src/workflows/shared/skills.test.ts +2 -0
- package/src/workflows/shared/skills.ts +2 -0
- package/src/workflows/shared/steps.test.ts +64 -2
- package/src/workflows/shared/steps.ts +40 -1
- package/src/workflows/shared/tail.ts +2 -2
- package/src/workflows/shared/text.test.ts +40 -89
- package/src/workflows/shared/text.ts +63 -54
|
@@ -1,16 +1,36 @@
|
|
|
1
|
-
import { start } from "../flows.mjs";
|
|
2
|
-
import { Tt as envDefaults, i as skills, mt as reviewGateBlockedMessage, n as summary, r as access, s as shipped, t as steering, u as gate, wt as defaults } from "../chunks/reserved-
|
|
3
|
-
import { a as refusePendingHandOff
|
|
1
|
+
import { read, refuse, removeScript, run, start } from "../flows.mjs";
|
|
2
|
+
import { C as coder, N as agentWithSkills, Tt as envDefaults, i as skills, mt as reviewGateBlockedMessage, n as summary, pt as reviewFeedbackFixPrompt, q as finisherSystem, r as access, s as shipped, t as steering, u as gate, v as REQUIREMENTS, wt as defaults } from "../chunks/reserved-DJk_6-ju.mjs";
|
|
3
|
+
import { a as refusePendingHandOff } from "../chunks/tail-5w5mxGTq.mjs";
|
|
4
|
+
import { i as reUnwind, t as buildTail } from "../chunks/review-X7Jfz0dY.mjs";
|
|
4
5
|
//#region src/workflows/review/review.ts
|
|
6
|
+
/** Build the concerns a review round collected into `.gtd/REQUIREMENTS.md`, then remove it. */
|
|
7
|
+
const fixFeedback = async () => {
|
|
8
|
+
await agentWithSkills("feedback.fixing", reviewFeedbackFixPrompt(), {
|
|
9
|
+
label: "Fixing your review feedback",
|
|
10
|
+
file: REQUIREMENTS,
|
|
11
|
+
model: coder(),
|
|
12
|
+
system: finisherSystem(),
|
|
13
|
+
allowEmpty: true
|
|
14
|
+
});
|
|
15
|
+
await run("feedback.closing", removeScript([REQUIREMENTS]), { label: "Closing the feedback" });
|
|
16
|
+
};
|
|
5
17
|
/**
|
|
6
|
-
*
|
|
7
|
-
* lap, then the human review
|
|
8
|
-
*
|
|
18
|
+
* The feature's review of everything since `reviewBase` — a green gate, the
|
|
19
|
+
* triaged quality lap, then the human review — with no design phase: a
|
|
20
|
+
* review that asks for changes is fixed in place and reviewed again, until
|
|
21
|
+
* sign-off.
|
|
9
22
|
*/
|
|
10
23
|
const reviewFlow = async () => {
|
|
11
24
|
refusePendingHandOff();
|
|
25
|
+
if (read(".gtd/REQUIREMENTS.md") !== void 0) refuse(`gtd: ${REQUIREMENTS} is left over — finish or remove it before a review.`);
|
|
12
26
|
await gate("review-gate", reviewGateBlockedMessage());
|
|
13
|
-
|
|
27
|
+
const base = start();
|
|
28
|
+
let outcome = await buildTail(base, { green: true });
|
|
29
|
+
while (outcome.verdict === "feedback") {
|
|
30
|
+
await reUnwind(outcome);
|
|
31
|
+
await fixFeedback();
|
|
32
|
+
outcome = await buildTail(base, { lensBase: outcome.base });
|
|
33
|
+
}
|
|
14
34
|
};
|
|
15
35
|
const review = shipped(reviewFlow, { review: {
|
|
16
36
|
args: [{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { agent, changesSince, glob, head, mark, read, refuse, removeScript, run, scope, vars } from "../flows.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { C as coder, Dt as flagMentions, Tt as envDefaults, i as skills, jt as requireFlag, kt as flipProblems, n as summary, o as flagShipped, p as FEEDBACK, r as access, t as steering, u as gate, wt as defaults } from "../chunks/reserved-DJk_6-ju.mjs";
|
|
3
3
|
//#region src/workflows/rollout/rollout.ts
|
|
4
4
|
const flippingPrompt = (name, registry) => `Roll out the release flag "${name}": in ${registry}, set \`defaultOn: true\` on its entry. Change nothing else — no other entry, no other field, no other file, no comments.`;
|
|
5
5
|
const suiteBlockedMessage = () => "The suite is red after the rollout. Fix it by hand — a rollout may only touch the flag's registry entry — then land.";
|