@wildorder/nightshift 0.2.0 → 0.3.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/dist/cli.js +23 -0
- package/dist/cli.js.map +1 -1
- package/dist/decision-ledger.d.ts +68 -0
- package/dist/decision-ledger.d.ts.map +1 -0
- package/dist/decision-ledger.js +108 -0
- package/dist/decision-ledger.js.map +1 -0
- package/dist/decision.d.ts +59 -0
- package/dist/decision.d.ts.map +1 -0
- package/dist/decision.js +0 -0
- package/dist/decision.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +76 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +95 -0
- package/dist/manifest.js.map +1 -0
- package/dist/run-program.d.ts +72 -0
- package/dist/run-program.d.ts.map +1 -0
- package/dist/run-program.js +482 -0
- package/dist/run-program.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -9,6 +9,8 @@ import { ALL_TARGETS, DEFAULT_TARGETS, detectTargets, doctor, installSkills, ove
|
|
|
9
9
|
import { installArgv, planSkillInstall } from "./install-wizard.js";
|
|
10
10
|
import { packageVersion } from "./package-assets.js";
|
|
11
11
|
import { createProjectManifest } from "./project-manifest.js";
|
|
12
|
+
import { loadConfig } from "./config.js";
|
|
13
|
+
import { runProgram } from "./run-program.js";
|
|
12
14
|
const SCOPES = ["user", "project", "both"];
|
|
13
15
|
function parseScope(value) {
|
|
14
16
|
const scope = value.trim().toLowerCase();
|
|
@@ -209,6 +211,27 @@ withSkillOptions(program
|
|
|
209
211
|
console.log("setup complete; run /init-project from your agent to continue");
|
|
210
212
|
}
|
|
211
213
|
});
|
|
214
|
+
program
|
|
215
|
+
.command("run")
|
|
216
|
+
.description("Run a planned program to termination: build every workstream, journal " +
|
|
217
|
+
"every decision, park failures, and write the run report")
|
|
218
|
+
.argument("<program-id>", "Program ID from /plan-program")
|
|
219
|
+
.option("--cwd <path>", "Project directory", process.cwd())
|
|
220
|
+
.action(async (programId, options) => {
|
|
221
|
+
const { config } = await loadConfig(resolve(options.cwd));
|
|
222
|
+
const result = await runProgram({
|
|
223
|
+
cwd: options.cwd,
|
|
224
|
+
programId,
|
|
225
|
+
config,
|
|
226
|
+
});
|
|
227
|
+
const built = result.workstreams.filter((entry) => entry.outcome.status === "complete" ||
|
|
228
|
+
entry.outcome.status === "skipped").length;
|
|
229
|
+
console.log(`\n${built} of ${result.workstreams.length} workstreams built; ` +
|
|
230
|
+
`${result.escalations.length} decision(s) escalated for you.`);
|
|
231
|
+
console.log(`read the run report: ${result.reportPath}`);
|
|
232
|
+
if (!result.complete)
|
|
233
|
+
process.exitCode = 1;
|
|
234
|
+
});
|
|
212
235
|
program
|
|
213
236
|
.command("doctor")
|
|
214
237
|
.description("Verify packaged assets and print the resolved skills root for each target")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,MAAM,EACN,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAEpD,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,CAAE,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,KAAuB,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,QAAkB;IAChD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAYD,uDAAuD;AACvD,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,OAAO;SACX,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC1D,MAAM,CACL,qBAAqB,EACrB,4BAA4B,eAAe,4BAA4B,CACxE;SACA,MAAM,CACL,iBAAiB,EACjB,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CACzD;SACA,MAAM,CACL,sBAAsB,EACtB,6CAA6C,EAC7C,OAAO,EACP,EAAE,CACH;SACA,MAAM,CAAC,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC;SAC7D,MAAM,CAAC,OAAO,EAAE,4CAA4C,EAAE,KAAK,CAAC;SACpE,MAAM,CACL,SAAS,EACT,mEAAmE,CACpE;SACA,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CACT,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,QAAQ,CACT,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAC5B,OAA4B,EAC5B,OAAgB;IAEhB,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;QAClC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;YAC/B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,yEAAyE;QACzE,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,KAAK;YACjD,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,KAAK;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK;KACN,CAAC,CAAC;IACH,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,MAA2B;IAChD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,iCAAiC,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CACV,gBAAgB,IAAI,uHAAuH,CAC5I,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CACV,gBAAgB,IAAI,qEAAqE,CAC1F,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC;QAC1E,OAAO,CAAC,IAAI,CACV,WAAW,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,SAAS,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,CACrH,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CACV,qFAAqF,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,yEAAyE;IACvE,0CAA0C,CAC7C;KACA,OAAO,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC;AAEnC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC;KACpE,MAAM,CACL,iBAAiB,EACjB,+EAA+E,CAChF;KACA,MAAM,CACL,6BAA6B,EAC7B,kEAAkE,CACnE;KACA,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC1D,MAAM,CACL,qBAAqB,EACrB,oHAAoH,CACrH;KACA,MAAM,CACL,KAAK,EAAE,OAMN,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;AAC5E,CAAC,CACF,CAAC;AAEJ,gBAAgB,CACd,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CACV,sEAAsE,CACvE,CACJ,CAAC,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,OAAgB,EAAE,EAAE;IAChE,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,gBAAgB,CACd,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CACV,gFAAgF,CACjF,CACJ;KACE,MAAM,CACL,gBAAgB,EAChB,0CAA0C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAChH;KACA,MAAM,CACL,mBAAmB,EACnB,sEAAsE,CACvE;KACA,MAAM,CACL,KAAK,EACH,OAAoE,EACpE,OAAgB,EAChB,EAAE;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CACT,oDAAoD,QAAQ,CAAC,IAAI,IAAI,CACtE,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CACV,WAAW,QAAQ,CAAC,eAAe,gEAAgE,CACpG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GACX,OAAO,CAAC,EAAE,KAAK,SAAS;YACtB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC5B,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CACT,wDAAwD,OAAO,EAAE,CAClE,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAChC,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,KAAK,CACjB,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,EAAE;gBACxD,iBAAiB,EAAE,mBAAmB,CAAC,IAAI,CAAC;aAC7C,CAAC,EACF,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CAChE,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CACF,CAAC;QACF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACX,GAAG,OAAO,uDAAuD,OAAO,8EAA8E,CACvJ,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,mEAAmE;IACnE,mEAAmE;IACnE,wEAAwE;IACxE,mCAAmC;IACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,eAAe,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAChC,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,CAAC,QAAQ,EAChB;gBACE,QAAQ;gBACR,GAAG,WAAW,CACZ,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EACzB,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,KAAK,CAChD;aACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CACnD,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CACF,CAAC;QACF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACV,2EAA2E,CAC5E;KACA,MAAM,CACL,sBAAsB,EACtB,6CAA6C,EAC7C,OAAO,EACP,EAAE,CACH;KACA,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;QACnC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QAC3D,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,QAAQ,MAAM,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CACT,qDAAqD,eAAe,CAClE,WAAW,CAAC,CAAC,CAAC,IAAI,QAAQ,CAC3B,gCAAgC,CAClC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { DecisionBlock } from "./decision.js";
|
|
2
|
+
/**
|
|
3
|
+
* The decision ledger: an append-only JSONL journal per program, the durable
|
|
4
|
+
* record of every judgment call a run made, who reviewed it, and what a
|
|
5
|
+
* human overrode. Only the runner writes it; agents receive projections in
|
|
6
|
+
* their briefs and the human reads it through the run report.
|
|
7
|
+
*
|
|
8
|
+
* Authority is a chain, never a dialogue: human > decider > implementer
|
|
9
|
+
* default. A later event with more authority supersedes an earlier one; no
|
|
10
|
+
* event is ever rewritten or removed. Reads are fail-open — a missing or
|
|
11
|
+
* partially corrupt journal degrades to what could be read, never to a
|
|
12
|
+
* blocked run — because the ledger explains work, it does not gate it.
|
|
13
|
+
*/
|
|
14
|
+
export declare const LEDGER_SCHEMA_VERSION = 1;
|
|
15
|
+
interface EventBase {
|
|
16
|
+
at: string;
|
|
17
|
+
/** Stable decision identity from {@link decisionFingerprint}. */
|
|
18
|
+
id: string;
|
|
19
|
+
}
|
|
20
|
+
export type LedgerEvent = (EventBase & {
|
|
21
|
+
kind: "decision-recorded";
|
|
22
|
+
workstream: string;
|
|
23
|
+
decision: DecisionBlock;
|
|
24
|
+
/** Commit the tree was at before the deciding attempt started. */
|
|
25
|
+
baseCommit?: string;
|
|
26
|
+
decidedBy: "implementer";
|
|
27
|
+
}) | (EventBase & {
|
|
28
|
+
kind: "decision-reviewed";
|
|
29
|
+
verdict: "ratify" | "escalate";
|
|
30
|
+
rationale: string;
|
|
31
|
+
reviewedBy: "decider";
|
|
32
|
+
}) | (EventBase & {
|
|
33
|
+
kind: "decision-human";
|
|
34
|
+
/** The option label the human settled on. */
|
|
35
|
+
chosen: string;
|
|
36
|
+
reason: string;
|
|
37
|
+
});
|
|
38
|
+
export type DecisionStatus = "unratified" | "ratified" | "escalated" | "human-decided";
|
|
39
|
+
export interface DecisionRecord {
|
|
40
|
+
id: string;
|
|
41
|
+
workstream: string;
|
|
42
|
+
decision: DecisionBlock;
|
|
43
|
+
baseCommit?: string;
|
|
44
|
+
status: DecisionStatus;
|
|
45
|
+
/** Present when a decider reviewed it. */
|
|
46
|
+
reviewRationale?: string;
|
|
47
|
+
/** Present when a human decided; overrides the block's `chosen`. */
|
|
48
|
+
humanChosen?: string;
|
|
49
|
+
humanReason?: string;
|
|
50
|
+
/** True when the agent claimed the choice is costly to undo. */
|
|
51
|
+
oneWay: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface DecisionLedgerView {
|
|
54
|
+
decisions: DecisionRecord[];
|
|
55
|
+
/** Journal lines that could not be read; reported, never fatal. */
|
|
56
|
+
corrupt: number;
|
|
57
|
+
}
|
|
58
|
+
export declare function ledgerPath(root: string, programId: string): string;
|
|
59
|
+
export declare function appendLedgerEvents(root: string, programId: string, events: LedgerEvent[]): Promise<void>;
|
|
60
|
+
export declare function reduceLedgerEvents(events: LedgerEvent[]): DecisionLedgerView;
|
|
61
|
+
/**
|
|
62
|
+
* Read and reduce the journal. Fail-open: a missing file is an empty ledger,
|
|
63
|
+
* and an unreadable line is counted rather than thrown — the ledger explains
|
|
64
|
+
* work, it never blocks it.
|
|
65
|
+
*/
|
|
66
|
+
export declare function readDecisionLedger(root: string, programId: string): Promise<DecisionLedgerView>;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=decision-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-ledger.d.ts","sourceRoot":"","sources":["../src/decision-ledger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GACnB,CAAC,SAAS,GAAG;IACX,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC,GACF,CAAC,SAAS,GAAG;IACX,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC,GACF,CAAC,SAAS,GAAG;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEP,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,UAAU,GACV,WAAW,GACX,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,CA8C5E;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CA0B7B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { appendFile, mkdir, readFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* The decision ledger: an append-only JSONL journal per program, the durable
|
|
5
|
+
* record of every judgment call a run made, who reviewed it, and what a
|
|
6
|
+
* human overrode. Only the runner writes it; agents receive projections in
|
|
7
|
+
* their briefs and the human reads it through the run report.
|
|
8
|
+
*
|
|
9
|
+
* Authority is a chain, never a dialogue: human > decider > implementer
|
|
10
|
+
* default. A later event with more authority supersedes an earlier one; no
|
|
11
|
+
* event is ever rewritten or removed. Reads are fail-open — a missing or
|
|
12
|
+
* partially corrupt journal degrades to what could be read, never to a
|
|
13
|
+
* blocked run — because the ledger explains work, it does not gate it.
|
|
14
|
+
*/
|
|
15
|
+
export const LEDGER_SCHEMA_VERSION = 1;
|
|
16
|
+
export function ledgerPath(root, programId) {
|
|
17
|
+
return join(resolve(root), "docs", "programs", `${programId}-decisions.jsonl`);
|
|
18
|
+
}
|
|
19
|
+
export async function appendLedgerEvents(root, programId, events) {
|
|
20
|
+
if (events.length === 0)
|
|
21
|
+
return;
|
|
22
|
+
const path = ledgerPath(root, programId);
|
|
23
|
+
await mkdir(dirname(path), { recursive: true });
|
|
24
|
+
const lines = events
|
|
25
|
+
.map((event) => JSON.stringify({ schemaVersion: LEDGER_SCHEMA_VERSION, ...event }))
|
|
26
|
+
.join("\n");
|
|
27
|
+
await appendFile(path, `${lines}\n`, "utf8");
|
|
28
|
+
}
|
|
29
|
+
export function reduceLedgerEvents(events) {
|
|
30
|
+
const byId = new Map();
|
|
31
|
+
for (const event of events) {
|
|
32
|
+
if (event.kind === "decision-recorded") {
|
|
33
|
+
const existing = byId.get(event.id);
|
|
34
|
+
// A re-recorded decision (retry, resumed run) refreshes the block but
|
|
35
|
+
// keeps any higher-authority outcome already on the record.
|
|
36
|
+
byId.set(event.id, {
|
|
37
|
+
id: event.id,
|
|
38
|
+
workstream: event.workstream,
|
|
39
|
+
decision: event.decision,
|
|
40
|
+
...(event.baseCommit === undefined
|
|
41
|
+
? {}
|
|
42
|
+
: { baseCommit: event.baseCommit }),
|
|
43
|
+
status: existing?.status ?? "unratified",
|
|
44
|
+
...(existing?.reviewRationale === undefined
|
|
45
|
+
? {}
|
|
46
|
+
: { reviewRationale: existing.reviewRationale }),
|
|
47
|
+
...(existing?.humanChosen === undefined
|
|
48
|
+
? {}
|
|
49
|
+
: { humanChosen: existing.humanChosen }),
|
|
50
|
+
...(existing?.humanReason === undefined
|
|
51
|
+
? {}
|
|
52
|
+
: { humanReason: existing.humanReason }),
|
|
53
|
+
oneWay: event.decision.reversible === false,
|
|
54
|
+
});
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const record = byId.get(event.id);
|
|
58
|
+
if (!record)
|
|
59
|
+
continue;
|
|
60
|
+
if (event.kind === "decision-reviewed") {
|
|
61
|
+
// Human authority already on the record outranks a decider review.
|
|
62
|
+
if (record.status === "human-decided")
|
|
63
|
+
continue;
|
|
64
|
+
record.status = event.verdict === "ratify" ? "ratified" : "escalated";
|
|
65
|
+
record.reviewRationale = event.rationale;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
record.status = "human-decided";
|
|
69
|
+
record.humanChosen = event.chosen;
|
|
70
|
+
record.humanReason = event.reason;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { decisions: [...byId.values()], corrupt: 0 };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Read and reduce the journal. Fail-open: a missing file is an empty ledger,
|
|
77
|
+
* and an unreadable line is counted rather than thrown — the ledger explains
|
|
78
|
+
* work, it never blocks it.
|
|
79
|
+
*/
|
|
80
|
+
export async function readDecisionLedger(root, programId) {
|
|
81
|
+
let raw;
|
|
82
|
+
try {
|
|
83
|
+
raw = await readFile(ledgerPath(root, programId), "utf8");
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return { decisions: [], corrupt: 0 };
|
|
87
|
+
}
|
|
88
|
+
const events = [];
|
|
89
|
+
let corrupt = 0;
|
|
90
|
+
for (const line of raw.split(/\r?\n/u)) {
|
|
91
|
+
if (line.trim() === "")
|
|
92
|
+
continue;
|
|
93
|
+
try {
|
|
94
|
+
const parsed = JSON.parse(line);
|
|
95
|
+
if (typeof parsed.kind !== "string" || typeof parsed.id !== "string") {
|
|
96
|
+
corrupt += 1;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
events.push(parsed);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
corrupt += 1;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const view = reduceLedgerEvents(events);
|
|
106
|
+
return { ...view, corrupt };
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=decision-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-ledger.js","sourceRoot":"","sources":["../src/decision-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* The decision block: how an agent surfaces a judgment call it made while
|
|
4
|
+
* working. Decisions are the unit the whole system is organized around —
|
|
5
|
+
* they are journaled to the ledger with the commit that preceded them,
|
|
6
|
+
* reviewed by the decider, reported to the human, and reversible by replay.
|
|
7
|
+
*
|
|
8
|
+
* The agent CLAIMS reversibility; it does not get to classify the door.
|
|
9
|
+
* `reversible: false` is a signal that the runner treats as one-way (schema
|
|
10
|
+
* migrations, public API shapes, deletions), and the decider or a human can
|
|
11
|
+
* disagree in either direction. Absent means two-way, because most decisions
|
|
12
|
+
* are, and because the cost of misclassifying a two-way door as one-way is a
|
|
13
|
+
* needless escalation while the reverse is a journaled, replayable mistake.
|
|
14
|
+
*/
|
|
15
|
+
declare const decisionOptionSchema: z.ZodObject<{
|
|
16
|
+
label: z.ZodString;
|
|
17
|
+
description: z.ZodOptional<z.ZodString>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
declare const decisionBlockSchema: z.ZodObject<{
|
|
20
|
+
title: z.ZodString;
|
|
21
|
+
context: z.ZodString;
|
|
22
|
+
options: z.ZodArray<z.ZodObject<{
|
|
23
|
+
label: z.ZodString;
|
|
24
|
+
description: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
chosen: z.ZodString;
|
|
27
|
+
rationale: z.ZodString;
|
|
28
|
+
reversible: z.ZodOptional<z.ZodBoolean>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export type DecisionOption = z.infer<typeof decisionOptionSchema>;
|
|
31
|
+
export type DecisionBlock = z.infer<typeof decisionBlockSchema>;
|
|
32
|
+
export interface ParsedDecisions {
|
|
33
|
+
decisions: DecisionBlock[];
|
|
34
|
+
/**
|
|
35
|
+
* Malformed blocks, described. Never fatal: a decision an agent garbled is
|
|
36
|
+
* still visible here and in the raw log, and failing verified work over a
|
|
37
|
+
* formatting slip trades a real result for a cosmetic one. These land in
|
|
38
|
+
* the run report so a human sees what the machine could not read.
|
|
39
|
+
*/
|
|
40
|
+
errors: string[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Every fenced ```decision block in an agent's output, in order. A block
|
|
44
|
+
* whose JSON is malformed, whose shape is wrong, or whose `chosen` names no
|
|
45
|
+
* option is reported in `errors` rather than dropped silently.
|
|
46
|
+
*/
|
|
47
|
+
export declare function extractDecisions(output: string): ParsedDecisions;
|
|
48
|
+
/**
|
|
49
|
+
* Stable identity for a decision: the same judgment call re-surfaced by a
|
|
50
|
+
* retry or a resumed run lands on the same ledger entry instead of a
|
|
51
|
+
* duplicate. Chosen option is deliberately not part of the identity — a
|
|
52
|
+
* replay that picks the other option is the same decision, decided
|
|
53
|
+
* differently.
|
|
54
|
+
*/
|
|
55
|
+
export declare function decisionFingerprint(workstream: string, decision: Pick<DecisionBlock, "title">): string;
|
|
56
|
+
/** The contract text, composed into every implementer brief. */
|
|
57
|
+
export declare function decisionContract(): string;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=decision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,oBAAoB;;;iBAGxB,CAAC;AAEH,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAOvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAsChE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GACrC,MAAM,CAKR;AAiCD,gEAAgE;AAChE,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
package/dist/decision.js
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAgBH,MAAM,aAAa,GAAG,2CAA2C,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE9D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAEhD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,qCAAsC,KAAe,CAAC,OAAO,EAAE,CAChE,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;iBACvE,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;YACpE,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,aAAa,QAAQ,CAAC,KAAK,YAAY,QAAQ,CAAC,MAAM,oCAAoC,CAC3F,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,QAAsC;IAEtC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SAC9D,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhB,CAAC,IAAI,EAAE,CAAC;AAET,gEAAgE;AAChE,MAAM,UAAU,gBAAgB;IAC9B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ export * from "./project-manifest.js";
|
|
|
7
7
|
export * from "./program-memory.js";
|
|
8
8
|
export * from "./worktree-guard.js";
|
|
9
9
|
export * from "./detect-package-manager.js";
|
|
10
|
+
export * from "./decision.js";
|
|
11
|
+
export * from "./decision-ledger.js";
|
|
12
|
+
export * from "./manifest.js";
|
|
13
|
+
export * from "./run-program.js";
|
|
10
14
|
export * from "./init-project.js";
|
|
11
15
|
export * from "./install-skills.js";
|
|
12
16
|
export * from "./install-prefs.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,10 @@ export * from "./project-manifest.js";
|
|
|
7
7
|
export * from "./program-memory.js";
|
|
8
8
|
export * from "./worktree-guard.js";
|
|
9
9
|
export * from "./detect-package-manager.js";
|
|
10
|
+
export * from "./decision.js";
|
|
11
|
+
export * from "./decision-ledger.js";
|
|
12
|
+
export * from "./manifest.js";
|
|
13
|
+
export * from "./run-program.js";
|
|
10
14
|
export * from "./init-project.js";
|
|
11
15
|
export * from "./install-skills.js";
|
|
12
16
|
export * from "./install-prefs.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* The program manifest: the single canonical home for success criteria, the
|
|
4
|
+
* workstream roster, dependencies, and scope. `/plan-program` writes it; the
|
|
5
|
+
* runner reads it and writes workstream status back. Narrative belongs in
|
|
6
|
+
* the program document, never here — one canonical home per fact.
|
|
7
|
+
*/
|
|
8
|
+
export declare const WORKSTREAM_STATUSES: readonly ["not_started", "in_progress", "complete", "failed", "parked"];
|
|
9
|
+
export type WorkstreamStatus = (typeof WORKSTREAM_STATUSES)[number];
|
|
10
|
+
declare const workstreamSchema: z.ZodObject<{
|
|
11
|
+
id: z.ZodString;
|
|
12
|
+
name: z.ZodString;
|
|
13
|
+
taskFile: z.ZodString;
|
|
14
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
15
|
+
not_started: "not_started";
|
|
16
|
+
in_progress: "in_progress";
|
|
17
|
+
complete: "complete";
|
|
18
|
+
failed: "failed";
|
|
19
|
+
parked: "parked";
|
|
20
|
+
}>>;
|
|
21
|
+
size: z.ZodOptional<z.ZodString>;
|
|
22
|
+
scope: z.ZodOptional<z.ZodObject<{
|
|
23
|
+
summary: z.ZodString;
|
|
24
|
+
includes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
25
|
+
excludes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
26
|
+
}, z.core.$strip>>;
|
|
27
|
+
dependencies: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
28
|
+
packages: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
declare const manifestSchema: z.ZodObject<{
|
|
31
|
+
program: z.ZodObject<{
|
|
32
|
+
id: z.ZodString;
|
|
33
|
+
name: z.ZodString;
|
|
34
|
+
description: z.ZodOptional<z.ZodString>;
|
|
35
|
+
status: z.ZodOptional<z.ZodString>;
|
|
36
|
+
created: z.ZodOptional<z.ZodString>;
|
|
37
|
+
executionMode: z.ZodOptional<z.ZodEnum<{
|
|
38
|
+
atomic: "atomic";
|
|
39
|
+
orchestrated: "orchestrated";
|
|
40
|
+
}>>;
|
|
41
|
+
executionModeReason: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.core.$loose>;
|
|
43
|
+
successCriteria: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
44
|
+
id: z.ZodString;
|
|
45
|
+
description: z.ZodString;
|
|
46
|
+
}, z.core.$loose>>>;
|
|
47
|
+
packages: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
48
|
+
workstreams: z.ZodArray<z.ZodObject<{
|
|
49
|
+
id: z.ZodString;
|
|
50
|
+
name: z.ZodString;
|
|
51
|
+
taskFile: z.ZodString;
|
|
52
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
53
|
+
not_started: "not_started";
|
|
54
|
+
in_progress: "in_progress";
|
|
55
|
+
complete: "complete";
|
|
56
|
+
failed: "failed";
|
|
57
|
+
parked: "parked";
|
|
58
|
+
}>>;
|
|
59
|
+
size: z.ZodOptional<z.ZodString>;
|
|
60
|
+
scope: z.ZodOptional<z.ZodObject<{
|
|
61
|
+
summary: z.ZodString;
|
|
62
|
+
includes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
63
|
+
excludes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
64
|
+
}, z.core.$strip>>;
|
|
65
|
+
dependencies: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
66
|
+
packages: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
67
|
+
}, z.core.$loose>>;
|
|
68
|
+
outOfScope: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
69
|
+
}, z.core.$loose>;
|
|
70
|
+
export type Workstream = z.infer<typeof workstreamSchema>;
|
|
71
|
+
export type ProgramManifest = z.infer<typeof manifestSchema>;
|
|
72
|
+
export declare function manifestPath(root: string, programId: string): string;
|
|
73
|
+
export declare function loadManifest(root: string, programId: string): Promise<ProgramManifest>;
|
|
74
|
+
export declare function saveManifest(root: string, programId: string, manifest: ProgramManifest): Promise<void>;
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,eAAO,MAAM,mBAAmB,yEAMtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAQpE,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iBASpB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBV,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAyC1B;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
/**
|
|
5
|
+
* The program manifest: the single canonical home for success criteria, the
|
|
6
|
+
* workstream roster, dependencies, and scope. `/plan-program` writes it; the
|
|
7
|
+
* runner reads it and writes workstream status back. Narrative belongs in
|
|
8
|
+
* the program document, never here — one canonical home per fact.
|
|
9
|
+
*/
|
|
10
|
+
export const WORKSTREAM_STATUSES = [
|
|
11
|
+
"not_started",
|
|
12
|
+
"in_progress",
|
|
13
|
+
"complete",
|
|
14
|
+
"failed",
|
|
15
|
+
"parked",
|
|
16
|
+
];
|
|
17
|
+
const scopeSchema = z.object({
|
|
18
|
+
summary: z.string().min(1),
|
|
19
|
+
includes: z.array(z.string()).default([]),
|
|
20
|
+
excludes: z.array(z.string()).default([]),
|
|
21
|
+
});
|
|
22
|
+
const workstreamSchema = z.object({
|
|
23
|
+
id: z.string().min(1),
|
|
24
|
+
name: z.string().min(1),
|
|
25
|
+
taskFile: z.string().min(1),
|
|
26
|
+
status: z.enum(WORKSTREAM_STATUSES).default("not_started"),
|
|
27
|
+
size: z.string().optional(),
|
|
28
|
+
scope: scopeSchema.optional(),
|
|
29
|
+
dependencies: z.array(z.string()).default([]),
|
|
30
|
+
packages: z.array(z.string()).default([]),
|
|
31
|
+
});
|
|
32
|
+
const manifestSchema = z
|
|
33
|
+
.object({
|
|
34
|
+
program: z
|
|
35
|
+
.object({
|
|
36
|
+
id: z.string().min(1),
|
|
37
|
+
name: z.string().min(1),
|
|
38
|
+
description: z.string().optional(),
|
|
39
|
+
status: z.string().optional(),
|
|
40
|
+
created: z.string().optional(),
|
|
41
|
+
executionMode: z.enum(["atomic", "orchestrated"]).optional(),
|
|
42
|
+
executionModeReason: z.string().optional(),
|
|
43
|
+
})
|
|
44
|
+
.loose(),
|
|
45
|
+
successCriteria: z
|
|
46
|
+
.array(z.object({ id: z.string().min(1), description: z.string().min(1) }).loose())
|
|
47
|
+
.default([]),
|
|
48
|
+
packages: z.array(z.record(z.string(), z.unknown())).default([]),
|
|
49
|
+
workstreams: z.array(workstreamSchema.loose()).min(1),
|
|
50
|
+
outOfScope: z.array(z.string()).default([]),
|
|
51
|
+
})
|
|
52
|
+
.loose();
|
|
53
|
+
export function manifestPath(root, programId) {
|
|
54
|
+
return join(resolve(root), "docs", "programs", `${programId}-manifest.json`);
|
|
55
|
+
}
|
|
56
|
+
export async function loadManifest(root, programId) {
|
|
57
|
+
const path = manifestPath(root, programId);
|
|
58
|
+
let raw;
|
|
59
|
+
try {
|
|
60
|
+
raw = await readFile(path, "utf8");
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
throw new Error(`No manifest at ${path}. Plan the program first with /plan-program.`);
|
|
64
|
+
}
|
|
65
|
+
let parsed;
|
|
66
|
+
try {
|
|
67
|
+
parsed = JSON.parse(raw);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new Error(`${path} is not valid JSON: ${error.message}`, {
|
|
71
|
+
cause: error,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const result = manifestSchema.safeParse(parsed);
|
|
75
|
+
if (!result.success) {
|
|
76
|
+
const issues = result.error.issues
|
|
77
|
+
.map((issue) => `${issue.path.join(".") || "(root)"}: ${issue.message}`)
|
|
78
|
+
.join("; ");
|
|
79
|
+
throw new Error(`${path} is invalid: ${issues}`);
|
|
80
|
+
}
|
|
81
|
+
const manifest = result.data;
|
|
82
|
+
const ids = new Set(manifest.workstreams.map(({ id }) => id));
|
|
83
|
+
for (const workstream of manifest.workstreams) {
|
|
84
|
+
for (const dependency of workstream.dependencies) {
|
|
85
|
+
if (!ids.has(dependency)) {
|
|
86
|
+
throw new Error(`${path}: ${workstream.id} depends on unknown workstream "${dependency}"`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return manifest;
|
|
91
|
+
}
|
|
92
|
+
export async function saveManifest(root, programId, manifest) {
|
|
93
|
+
await writeFile(manifestPath(root, programId), `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type AgentRunner, type VerifyRunner } from "./agent-runner.js";
|
|
2
|
+
import type { NightshiftConfig } from "./config.js";
|
|
3
|
+
import { type DecisionRecord } from "./decision-ledger.js";
|
|
4
|
+
import { type Workstream } from "./manifest.js";
|
|
5
|
+
/**
|
|
6
|
+
* Git operations the runner needs, injectable so tests drive a real
|
|
7
|
+
* temporary repository or a fake. The runner owns commits — workstream
|
|
8
|
+
* agents are instructed never to commit — and every decision is anchored to
|
|
9
|
+
* the commit that preceded it so a human can replay from there.
|
|
10
|
+
*/
|
|
11
|
+
export interface GitOps {
|
|
12
|
+
isRepository(cwd: string): Promise<boolean>;
|
|
13
|
+
currentCommit(cwd: string): Promise<string | undefined>;
|
|
14
|
+
/** Stages everything and commits; undefined result means nothing to commit. */
|
|
15
|
+
commitAll(cwd: string, message: string): Promise<string | undefined>;
|
|
16
|
+
diffSince(cwd: string, commit: string): Promise<string>;
|
|
17
|
+
}
|
|
18
|
+
export declare const defaultGitOps: GitOps;
|
|
19
|
+
export interface RunProgramOptions {
|
|
20
|
+
cwd: string;
|
|
21
|
+
programId: string;
|
|
22
|
+
config: NightshiftConfig;
|
|
23
|
+
agentRunner?: AgentRunner;
|
|
24
|
+
verifyRunner?: VerifyRunner;
|
|
25
|
+
git?: GitOps;
|
|
26
|
+
log?: (line: string) => void;
|
|
27
|
+
now?: () => Date;
|
|
28
|
+
}
|
|
29
|
+
export type WorkstreamOutcome = {
|
|
30
|
+
status: "complete";
|
|
31
|
+
commit?: string;
|
|
32
|
+
} | {
|
|
33
|
+
status: "failed";
|
|
34
|
+
reason: string;
|
|
35
|
+
} | {
|
|
36
|
+
status: "parked";
|
|
37
|
+
reason: string;
|
|
38
|
+
} | {
|
|
39
|
+
status: "skipped";
|
|
40
|
+
reason: string;
|
|
41
|
+
};
|
|
42
|
+
export interface WorkstreamResult {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
outcome: WorkstreamOutcome;
|
|
46
|
+
summary?: string;
|
|
47
|
+
decisionIds: string[];
|
|
48
|
+
/** Decision blocks the agent garbled; surfaced, never fatal. */
|
|
49
|
+
decisionErrors: string[];
|
|
50
|
+
}
|
|
51
|
+
export interface RunProgramResult {
|
|
52
|
+
programId: string;
|
|
53
|
+
/** True when every workstream is complete. */
|
|
54
|
+
complete: boolean;
|
|
55
|
+
workstreams: WorkstreamResult[];
|
|
56
|
+
escalations: DecisionRecord[];
|
|
57
|
+
reportPath: string;
|
|
58
|
+
}
|
|
59
|
+
/** Every workstream in the transitive downstream cone of the given ids. */
|
|
60
|
+
export declare function downstreamCone(workstreams: readonly Workstream[], rootIds: readonly string[]): Set<string>;
|
|
61
|
+
/**
|
|
62
|
+
* The decide-and-continue runner.
|
|
63
|
+
*
|
|
64
|
+
* A run always terminates: either everything built, or the failures are
|
|
65
|
+
* parked with a diagnosis while everything outside their downstream cones
|
|
66
|
+
* built anyway. Decisions agents surface are journaled with the commit that
|
|
67
|
+
* preceded them, reviewed by the decider when one is configured, and
|
|
68
|
+
* reported — the run never stops to ask. The runner owns commits, runs the
|
|
69
|
+
* verify commands itself, and writes the run report last, whatever happened.
|
|
70
|
+
*/
|
|
71
|
+
export declare function runProgram(options: RunProgramOptions): Promise<RunProgramResult>;
|
|
72
|
+
//# sourceMappingURL=run-program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-program.d.ts","sourceRoot":"","sources":["../src/run-program.ts"],"names":[],"mappings":"AAIA,OAAO,EAQL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOjE,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAIvB;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxD,+EAA+E;IAC/E,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,aAAa,EAAE,MA6C3B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gEAAgE;IAChE,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAgJD,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,GAAG,CAAC,MAAM,CAAC,CAeb;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAiT3B"}
|
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { promisify } from "node:util";
|
|
5
|
+
import { defaultAgentRunner, defaultVerifyRunner, describeAgent, resolveAgent, resolveDeciderAgent, resolveRecoveryAgent, tail, } from "./agent-runner.js";
|
|
6
|
+
import { resolveSummary, summaryContract } from "./agent-summary.js";
|
|
7
|
+
import { decisionContract, decisionFingerprint, extractDecisions, } from "./decision.js";
|
|
8
|
+
import { appendLedgerEvents, readDecisionLedger, } from "./decision-ledger.js";
|
|
9
|
+
import { findCycles, stableTopologicalOrder } from "./graph.js";
|
|
10
|
+
import { loadManifest, saveManifest, } from "./manifest.js";
|
|
11
|
+
const execFileAsync = promisify(execFile);
|
|
12
|
+
export const defaultGitOps = {
|
|
13
|
+
async isRepository(cwd) {
|
|
14
|
+
try {
|
|
15
|
+
await execFileAsync("git", ["rev-parse", "--is-inside-work-tree"], { cwd });
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
async currentCommit(cwd) {
|
|
23
|
+
try {
|
|
24
|
+
const { stdout } = await execFileAsync("git", ["rev-parse", "HEAD"], { cwd });
|
|
25
|
+
return stdout.trim();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
async commitAll(cwd, message) {
|
|
32
|
+
await execFileAsync("git", ["add", "-A"], { cwd });
|
|
33
|
+
try {
|
|
34
|
+
await execFileAsync("git", ["commit", "-m", message], { cwd });
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const output = String(error.stdout ?? "");
|
|
38
|
+
// An empty commit is not a failure; anything else is.
|
|
39
|
+
if (/nothing to commit|nothing added to commit/u.test(output)) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
return this.currentCommit(cwd);
|
|
45
|
+
},
|
|
46
|
+
async diffSince(cwd, commit) {
|
|
47
|
+
try {
|
|
48
|
+
const { stdout } = await execFileAsync("git", ["diff", commit, "--", ".", ":!docs/programs"], { cwd, maxBuffer: 10 * 1024 * 1024 });
|
|
49
|
+
return stdout;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return "";
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
const DIFF_LIMIT = 20_000;
|
|
57
|
+
function implementerBrief(manifest, workstream, spec, priorFailure) {
|
|
58
|
+
const roster = manifest.workstreams
|
|
59
|
+
.map((entry) => {
|
|
60
|
+
const scope = entry.scope?.summary ?? entry.name;
|
|
61
|
+
return `- ${entry.id} ${entry.name}: ${scope}`;
|
|
62
|
+
})
|
|
63
|
+
.join("\n");
|
|
64
|
+
return [
|
|
65
|
+
`# Workstream ${workstream.id}: ${workstream.name}`,
|
|
66
|
+
"",
|
|
67
|
+
`Program: ${manifest.program.id} — ${manifest.program.name}`,
|
|
68
|
+
"",
|
|
69
|
+
"You are implementing exactly one workstream of a larger program. The",
|
|
70
|
+
"full roster, so you know what exists and do not rebuild another",
|
|
71
|
+
"workstream's work (conform only to your declared dependencies):",
|
|
72
|
+
"",
|
|
73
|
+
roster,
|
|
74
|
+
"",
|
|
75
|
+
...(priorFailure
|
|
76
|
+
? [
|
|
77
|
+
"## Previous attempt failed",
|
|
78
|
+
"",
|
|
79
|
+
"A previous attempt at this workstream failed. Its diagnosis:",
|
|
80
|
+
"",
|
|
81
|
+
priorFailure,
|
|
82
|
+
"",
|
|
83
|
+
"Start from the diagnosis; the working tree may already contain",
|
|
84
|
+
"partial work from that attempt.",
|
|
85
|
+
"",
|
|
86
|
+
]
|
|
87
|
+
: []),
|
|
88
|
+
"## Specification",
|
|
89
|
+
"",
|
|
90
|
+
spec.trim(),
|
|
91
|
+
"",
|
|
92
|
+
"## Rules",
|
|
93
|
+
"",
|
|
94
|
+
"- Never commit; the runner owns commits and commits only verified work.",
|
|
95
|
+
"- Follow the repository's AGENTS.md if present.",
|
|
96
|
+
"- Run the project's checks yourself as you work; the runner verifies",
|
|
97
|
+
" independently afterwards and your claim of success is never trusted",
|
|
98
|
+
" without it.",
|
|
99
|
+
"",
|
|
100
|
+
decisionContract(),
|
|
101
|
+
"",
|
|
102
|
+
summaryContract(),
|
|
103
|
+
].join("\n");
|
|
104
|
+
}
|
|
105
|
+
function deciderBrief(manifest, record, diff) {
|
|
106
|
+
const clippedDiff = diff.length > DIFF_LIMIT
|
|
107
|
+
? `${diff.slice(0, DIFF_LIMIT)}\n… (diff clipped at ${DIFF_LIMIT} characters)`
|
|
108
|
+
: diff;
|
|
109
|
+
return [
|
|
110
|
+
"# Review one decision",
|
|
111
|
+
"",
|
|
112
|
+
`Program: ${manifest.program.id} — ${manifest.program.name}`,
|
|
113
|
+
`Workstream: ${record.workstream}`,
|
|
114
|
+
"",
|
|
115
|
+
"An implementing agent made the judgment call below and continued. Your",
|
|
116
|
+
"job is to review that one decision — not the code style, not the whole",
|
|
117
|
+
"diff — from the program's point of view. You never edit anything.",
|
|
118
|
+
"",
|
|
119
|
+
"```json",
|
|
120
|
+
JSON.stringify(record.decision, null, 2),
|
|
121
|
+
"```",
|
|
122
|
+
"",
|
|
123
|
+
"The work that resulted:",
|
|
124
|
+
"",
|
|
125
|
+
"```diff",
|
|
126
|
+
clippedDiff.trim() === "" ? "(no diff available)" : clippedDiff,
|
|
127
|
+
"```",
|
|
128
|
+
"",
|
|
129
|
+
"Reply with exactly one verdict block:",
|
|
130
|
+
"",
|
|
131
|
+
"```verdict",
|
|
132
|
+
"{",
|
|
133
|
+
' "verdict": "ratify" | "escalate",',
|
|
134
|
+
' "rationale": "One or two sentences, written for the human who reads the run report."',
|
|
135
|
+
"}",
|
|
136
|
+
"```",
|
|
137
|
+
"",
|
|
138
|
+
"Ratify when the choice is defensible — it does not have to be the one",
|
|
139
|
+
"you would have made. Escalate when the choice materially affects",
|
|
140
|
+
"user-visible behavior, data, or a public contract AND you believe the",
|
|
141
|
+
"human would plausibly choose differently; say what you would ask them.",
|
|
142
|
+
"One review, one verdict: this is a judgment, not a dialogue.",
|
|
143
|
+
].join("\n");
|
|
144
|
+
}
|
|
145
|
+
function extractVerdict(output) {
|
|
146
|
+
const matches = [...output.matchAll(/```verdict[^\S\r\n]*\r?\n([\s\S]*?)```/gu)];
|
|
147
|
+
for (const match of matches.reverse()) {
|
|
148
|
+
try {
|
|
149
|
+
const parsed = JSON.parse(match[1] ?? "");
|
|
150
|
+
if ((parsed.verdict === "ratify" || parsed.verdict === "escalate") &&
|
|
151
|
+
typeof parsed.rationale === "string") {
|
|
152
|
+
return { verdict: parsed.verdict, rationale: parsed.rationale };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Try an earlier block.
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
async function invokeAgent(runner, agent, prompt, cwd) {
|
|
162
|
+
return runner({
|
|
163
|
+
command: agent.command,
|
|
164
|
+
args: agent.args,
|
|
165
|
+
prompt,
|
|
166
|
+
promptMode: agent.promptMode,
|
|
167
|
+
cwd,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/** Every workstream in the transitive downstream cone of the given ids. */
|
|
171
|
+
export function downstreamCone(workstreams, rootIds) {
|
|
172
|
+
const cone = new Set(rootIds);
|
|
173
|
+
let grew = true;
|
|
174
|
+
while (grew) {
|
|
175
|
+
grew = false;
|
|
176
|
+
for (const workstream of workstreams) {
|
|
177
|
+
if (cone.has(workstream.id))
|
|
178
|
+
continue;
|
|
179
|
+
if (workstream.dependencies.some((dependency) => cone.has(dependency))) {
|
|
180
|
+
cone.add(workstream.id);
|
|
181
|
+
grew = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (const id of rootIds)
|
|
186
|
+
cone.delete(id);
|
|
187
|
+
return cone;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* The decide-and-continue runner.
|
|
191
|
+
*
|
|
192
|
+
* A run always terminates: either everything built, or the failures are
|
|
193
|
+
* parked with a diagnosis while everything outside their downstream cones
|
|
194
|
+
* built anyway. Decisions agents surface are journaled with the commit that
|
|
195
|
+
* preceded them, reviewed by the decider when one is configured, and
|
|
196
|
+
* reported — the run never stops to ask. The runner owns commits, runs the
|
|
197
|
+
* verify commands itself, and writes the run report last, whatever happened.
|
|
198
|
+
*/
|
|
199
|
+
export async function runProgram(options) {
|
|
200
|
+
const root = resolve(options.cwd);
|
|
201
|
+
const config = options.config;
|
|
202
|
+
const agentRunner = options.agentRunner ?? defaultAgentRunner;
|
|
203
|
+
const verifyRunner = options.verifyRunner ?? defaultVerifyRunner;
|
|
204
|
+
const git = options.git ?? defaultGitOps;
|
|
205
|
+
const log = options.log ?? ((line) => console.log(line));
|
|
206
|
+
const now = options.now ?? (() => new Date());
|
|
207
|
+
const manifest = await loadManifest(root, options.programId);
|
|
208
|
+
const resolvedAgent = resolveAgent(config);
|
|
209
|
+
if (!resolvedAgent) {
|
|
210
|
+
throw new Error("No implementer configured. Set the `agent` block in nightshift.config.json.");
|
|
211
|
+
}
|
|
212
|
+
const agent = resolvedAgent;
|
|
213
|
+
const recovery = resolveRecoveryAgent(config);
|
|
214
|
+
const decider = resolveDeciderAgent(config);
|
|
215
|
+
log(`implementer: ${describeAgent(agent)}`);
|
|
216
|
+
log(decider
|
|
217
|
+
? `decider: ${describeAgent(decider)}`
|
|
218
|
+
: "decider: none configured — implementer defaults will stand unratified");
|
|
219
|
+
const cycles = findCycles(manifest.workstreams);
|
|
220
|
+
if (cycles.length > 0) {
|
|
221
|
+
// A cyclic graph cannot be ordered; this is a planning defect, not a
|
|
222
|
+
// decision the runner can take. Terminate with the diagnosis.
|
|
223
|
+
throw new Error(`Dependency cycle(s) in the manifest: ${cycles
|
|
224
|
+
.map((cycle) => cycle.join(" -> "))
|
|
225
|
+
.join("; ")}. Re-plan with /plan-program.`);
|
|
226
|
+
}
|
|
227
|
+
const isRepository = await git.isRepository(root);
|
|
228
|
+
if (!isRepository) {
|
|
229
|
+
log("warning: not a git repository — commits, decision anchors, and replay are unavailable");
|
|
230
|
+
}
|
|
231
|
+
const ordered = stableTopologicalOrder(manifest.workstreams);
|
|
232
|
+
const results = [];
|
|
233
|
+
const blocked = new Set();
|
|
234
|
+
for (const workstream of ordered) {
|
|
235
|
+
if (workstream.status === "complete") {
|
|
236
|
+
results.push({
|
|
237
|
+
id: workstream.id,
|
|
238
|
+
name: workstream.name,
|
|
239
|
+
outcome: { status: "skipped", reason: "already complete" },
|
|
240
|
+
decisionIds: [],
|
|
241
|
+
decisionErrors: [],
|
|
242
|
+
});
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
if (blocked.has(workstream.id)) {
|
|
246
|
+
workstream.status = "parked";
|
|
247
|
+
results.push({
|
|
248
|
+
id: workstream.id,
|
|
249
|
+
name: workstream.name,
|
|
250
|
+
outcome: {
|
|
251
|
+
status: "parked",
|
|
252
|
+
reason: "an upstream dependency failed; parked, not attempted",
|
|
253
|
+
},
|
|
254
|
+
decisionIds: [],
|
|
255
|
+
decisionErrors: [],
|
|
256
|
+
});
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
const result = await runWorkstream(workstream);
|
|
260
|
+
results.push(result);
|
|
261
|
+
if (result.outcome.status === "failed") {
|
|
262
|
+
// Failure isolation: park the downstream cone, keep building the rest.
|
|
263
|
+
for (const id of downstreamCone(manifest.workstreams, [workstream.id])) {
|
|
264
|
+
blocked.add(id);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const ledger = await readDecisionLedger(root, options.programId);
|
|
269
|
+
const escalations = ledger.decisions.filter((decision) => decision.status === "escalated");
|
|
270
|
+
const complete = results.every((result) => result.outcome.status === "complete" ||
|
|
271
|
+
result.outcome.status === "skipped");
|
|
272
|
+
manifest.program.status = complete ? "complete" : "partial";
|
|
273
|
+
await saveManifest(root, options.programId, manifest);
|
|
274
|
+
const reportPath = join(root, "docs", "programs", `${options.programId}-run-report.md`);
|
|
275
|
+
await writeFile(reportPath, renderRunReport(manifest, results, ledger.decisions, escalations, now()), "utf8");
|
|
276
|
+
if (isRepository) {
|
|
277
|
+
await git.commitAll(root, `nightshift(${options.programId}): run report and decision ledger`);
|
|
278
|
+
}
|
|
279
|
+
log(`run report: ${reportPath}`);
|
|
280
|
+
return {
|
|
281
|
+
programId: options.programId,
|
|
282
|
+
complete,
|
|
283
|
+
workstreams: results,
|
|
284
|
+
escalations,
|
|
285
|
+
reportPath,
|
|
286
|
+
};
|
|
287
|
+
async function runWorkstream(workstream) {
|
|
288
|
+
const base = {
|
|
289
|
+
id: workstream.id,
|
|
290
|
+
name: workstream.name,
|
|
291
|
+
outcome: { status: "failed", reason: "not attempted" },
|
|
292
|
+
decisionIds: [],
|
|
293
|
+
decisionErrors: [],
|
|
294
|
+
};
|
|
295
|
+
let spec;
|
|
296
|
+
try {
|
|
297
|
+
spec = await readFile(join(root, workstream.taskFile), "utf8");
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
base.outcome = {
|
|
301
|
+
status: "parked",
|
|
302
|
+
reason: `spec not found at ${workstream.taskFile}`,
|
|
303
|
+
};
|
|
304
|
+
return base;
|
|
305
|
+
}
|
|
306
|
+
workstream.status = "in_progress";
|
|
307
|
+
await saveManifest(root, options.programId, manifest);
|
|
308
|
+
const baseCommit = isRepository
|
|
309
|
+
? await git.currentCommit(root)
|
|
310
|
+
: undefined;
|
|
311
|
+
let priorFailure;
|
|
312
|
+
const attempts = [
|
|
313
|
+
{ agent, label: "implementer" },
|
|
314
|
+
];
|
|
315
|
+
if (recovery && !recovery.borrowedImplementer) {
|
|
316
|
+
attempts.push({ agent: recovery.agent, label: "recovery" });
|
|
317
|
+
}
|
|
318
|
+
for (const [index, attempt] of attempts.entries()) {
|
|
319
|
+
log(`${workstream.id} ${workstream.name}: ${attempt.label} attempt`);
|
|
320
|
+
const brief = implementerBrief(manifest, workstream, spec, priorFailure);
|
|
321
|
+
const invocation = await invokeAgent(agentRunner, attempt.agent, brief, root);
|
|
322
|
+
const summary = resolveSummary(invocation.output);
|
|
323
|
+
base.summary = summary.text;
|
|
324
|
+
const parsed = extractDecisions(invocation.output);
|
|
325
|
+
base.decisionErrors.push(...parsed.errors);
|
|
326
|
+
await journalDecisions(workstream, parsed.decisions, baseCommit);
|
|
327
|
+
base.decisionIds = parsed.decisions.map((decision) => decisionFingerprint(workstream.id, decision));
|
|
328
|
+
const failure = await verifyAttempt(invocation.exitCode);
|
|
329
|
+
if (failure === undefined) {
|
|
330
|
+
workstream.status = "complete";
|
|
331
|
+
await saveManifest(root, options.programId, manifest);
|
|
332
|
+
let commit;
|
|
333
|
+
if (isRepository) {
|
|
334
|
+
commit = await git.commitAll(root, `nightshift(${options.programId}): ${workstream.id} ${workstream.name}`);
|
|
335
|
+
}
|
|
336
|
+
await reviewDecisions(workstream, parsed.decisions, baseCommit);
|
|
337
|
+
base.outcome = {
|
|
338
|
+
status: "complete",
|
|
339
|
+
...(commit === undefined ? {} : { commit }),
|
|
340
|
+
};
|
|
341
|
+
return base;
|
|
342
|
+
}
|
|
343
|
+
priorFailure = failure;
|
|
344
|
+
log(`${workstream.id}: ${attempt.label} attempt failed — ${failure}`);
|
|
345
|
+
if (index === attempts.length - 1) {
|
|
346
|
+
workstream.status = "failed";
|
|
347
|
+
await saveManifest(root, options.programId, manifest);
|
|
348
|
+
// The work stays in the tree for a resume; decisions made on the way
|
|
349
|
+
// to a failure are still journaled and still reviewable.
|
|
350
|
+
await reviewDecisions(workstream, parsed.decisions, baseCommit);
|
|
351
|
+
base.outcome = { status: "failed", reason: failure };
|
|
352
|
+
return base;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return base;
|
|
356
|
+
}
|
|
357
|
+
/** Undefined means the attempt verified clean; otherwise the diagnosis. */
|
|
358
|
+
async function verifyAttempt(agentExitCode) {
|
|
359
|
+
if (agentExitCode !== 0) {
|
|
360
|
+
return `agent exited with code ${agentExitCode}`;
|
|
361
|
+
}
|
|
362
|
+
for (const [name, command] of Object.entries(config.verify)) {
|
|
363
|
+
const result = await verifyRunner(command, root);
|
|
364
|
+
if (result.exitCode !== 0) {
|
|
365
|
+
return `verify \`${name}\` (${command}) exited ${result.exitCode}:\n${tail(result.output, 1500)}`;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return undefined;
|
|
369
|
+
}
|
|
370
|
+
async function journalDecisions(workstream, decisions, baseCommit) {
|
|
371
|
+
const events = decisions.map((decision) => ({
|
|
372
|
+
kind: "decision-recorded",
|
|
373
|
+
at: now().toISOString(),
|
|
374
|
+
id: decisionFingerprint(workstream.id, decision),
|
|
375
|
+
workstream: workstream.id,
|
|
376
|
+
decision,
|
|
377
|
+
...(baseCommit === undefined ? {} : { baseCommit }),
|
|
378
|
+
decidedBy: "implementer",
|
|
379
|
+
}));
|
|
380
|
+
await appendLedgerEvents(root, options.programId, events);
|
|
381
|
+
for (const decision of decisions) {
|
|
382
|
+
log(`${workstream.id} decision: ${decision.title} -> ${decision.chosen}`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Post-hoc review: the decider sees each decision with the diff it
|
|
387
|
+
* produced. One decision, one invocation, one verdict — a judgment, not a
|
|
388
|
+
* dialogue. No decider configured means defaults stand unratified, which
|
|
389
|
+
* the report says plainly.
|
|
390
|
+
*/
|
|
391
|
+
async function reviewDecisions(workstream, decisions, baseCommit) {
|
|
392
|
+
if (!decider || decisions.length === 0)
|
|
393
|
+
return;
|
|
394
|
+
const diff = isRepository && baseCommit !== undefined
|
|
395
|
+
? await git.diffSince(root, baseCommit)
|
|
396
|
+
: "";
|
|
397
|
+
for (const decision of decisions) {
|
|
398
|
+
const id = decisionFingerprint(workstream.id, decision);
|
|
399
|
+
const brief = deciderBrief(manifest, { workstream: workstream.id, decision }, diff);
|
|
400
|
+
const invocation = await invokeAgent(agentRunner, decider, brief, root);
|
|
401
|
+
const verdict = extractVerdict(invocation.output);
|
|
402
|
+
if (invocation.exitCode !== 0 || verdict === undefined) {
|
|
403
|
+
// Fail open: an unreviewable decision stays unratified and the
|
|
404
|
+
// report says so; it never blocks the run.
|
|
405
|
+
log(`${workstream.id} decision ${id}: decider produced no verdict; left unratified`);
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
await appendLedgerEvents(root, options.programId, [
|
|
409
|
+
{
|
|
410
|
+
kind: "decision-reviewed",
|
|
411
|
+
at: now().toISOString(),
|
|
412
|
+
id,
|
|
413
|
+
verdict: verdict.verdict,
|
|
414
|
+
rationale: verdict.rationale,
|
|
415
|
+
reviewedBy: "decider",
|
|
416
|
+
},
|
|
417
|
+
]);
|
|
418
|
+
log(`${workstream.id} decision ${id}: ${verdict.verdict}`);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
function renderRunReport(manifest, results, decisions, escalations, at) {
|
|
423
|
+
const built = results.filter((result) => result.outcome.status === "complete" ||
|
|
424
|
+
result.outcome.status === "skipped").length;
|
|
425
|
+
const lines = [
|
|
426
|
+
`# Run report: ${manifest.program.name} (${manifest.program.id})`,
|
|
427
|
+
"",
|
|
428
|
+
`_${at.toISOString()}_`,
|
|
429
|
+
"",
|
|
430
|
+
`**Outcome: ${built} of ${results.length} workstreams built.**`,
|
|
431
|
+
"",
|
|
432
|
+
];
|
|
433
|
+
if (escalations.length > 0) {
|
|
434
|
+
lines.push("## Needs your attention", "", "The decider reviewed these choices and believes you might decide", "differently. Each is anchored to the commit before it was made:", "");
|
|
435
|
+
for (const record of escalations) {
|
|
436
|
+
lines.push(`### ${record.decision.title} (${record.id})`, "", `- **Workstream:** ${record.workstream}`, `- **Chosen:** ${record.decision.chosen}`, `- **Decider says:** ${record.reviewRationale ?? "(no rationale recorded)"}`, ...(record.baseCommit
|
|
437
|
+
? [`- **To revisit:** roll back to \`${record.baseCommit}\` and re-run.`]
|
|
438
|
+
: []), "");
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
const failures = results.filter((result) => result.outcome.status === "failed" || result.outcome.status === "parked");
|
|
442
|
+
if (failures.length > 0) {
|
|
443
|
+
lines.push("## Not built", "");
|
|
444
|
+
for (const result of failures) {
|
|
445
|
+
const reason = result.outcome.status === "failed" || result.outcome.status === "parked"
|
|
446
|
+
? result.outcome.reason
|
|
447
|
+
: "";
|
|
448
|
+
lines.push(`### ${result.id} ${result.name} — ${result.outcome.status}`, "", reason, "", `Retry after fixing: \`npx --yes @wildorder/nightshift run ${manifest.program.id}\``, "(completed workstreams are skipped automatically).", "");
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
lines.push("## Workstreams", "");
|
|
452
|
+
for (const result of results) {
|
|
453
|
+
lines.push(`- **${result.id} ${result.name}** — ${result.outcome.status}`);
|
|
454
|
+
if (result.summary) {
|
|
455
|
+
lines.push(` - ${result.summary.replace(/\s+/gu, " ").trim()}`);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
lines.push("");
|
|
459
|
+
if (decisions.length > 0) {
|
|
460
|
+
lines.push("## Decisions made along the way", "", "Every judgment call an agent surfaced, with its review status.", "Anything here can be revisited: roll back to the anchor commit and", "re-run, or just say which option you want changed.", "");
|
|
461
|
+
for (const record of decisions) {
|
|
462
|
+
const alternatives = record.decision.options
|
|
463
|
+
.filter((option) => option.label !== record.decision.chosen)
|
|
464
|
+
.map((option) => option.label)
|
|
465
|
+
.join(", ");
|
|
466
|
+
lines.push(`### ${record.decision.title} (${record.id}) — ${record.status}`, "", `- **Workstream:** ${record.workstream}${record.oneWay ? " · **one-way door**" : ""}`, `- **Context:** ${record.decision.context}`, `- **Chosen:** ${record.decision.chosen} — ${record.decision.rationale}`, `- **Alternatives:** ${alternatives === "" ? "(none listed)" : alternatives}`, ...(record.reviewRationale
|
|
467
|
+
? [`- **Decider:** ${record.reviewRationale}`]
|
|
468
|
+
: []), ...(record.baseCommit
|
|
469
|
+
? [`- **Anchor commit:** \`${record.baseCommit}\``]
|
|
470
|
+
: []), "");
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
else {
|
|
474
|
+
lines.push("## Decisions made along the way", "", "None surfaced.", "");
|
|
475
|
+
}
|
|
476
|
+
const decisionErrors = results.flatMap((result) => result.decisionErrors);
|
|
477
|
+
if (decisionErrors.length > 0) {
|
|
478
|
+
lines.push("## Decision blocks the runner could not read", "", ...decisionErrors.map((error) => `- ${error}`), "");
|
|
479
|
+
}
|
|
480
|
+
return lines.join("\n");
|
|
481
|
+
}
|
|
482
|
+
//# sourceMappingURL=run-program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-program.js","sourceRoot":"","sources":["../src/run-program.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wildorder/nightshift",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "The crew that builds while you're gone: walk-away, CI-dispatched engineering programs with a decision ledger instead of gates",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|