forgedock 1.1.2 → 1.1.3
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/bin/engine/phases.mjs +8 -6
- package/bin/runner.mjs +3 -2
- package/commands/autopilot.md +510 -425
- package/commands/deploy-pr.md +485 -0
- package/commands/fix-ci.md +577 -0
- package/commands/recover-orphans.md +576 -0
- package/docs/CI.md +14 -0
- package/docs/eval/README.md +7 -4
- package/docs/site/command-reference.md +49 -0
- package/package.json +1 -1
- package/packages/protocol/src/parse.js +27 -2
package/bin/engine/phases.mjs
CHANGED
|
@@ -51,9 +51,10 @@ export const PHASES = [
|
|
|
51
51
|
command: "work-on/build/context",
|
|
52
52
|
entryCondition: (s) => s.committed.includes("investigate"),
|
|
53
53
|
async reconcile(state, io) {
|
|
54
|
-
// Idempotent resume: FORGE:CONTEXT
|
|
54
|
+
// Idempotent resume: FORGE:CONTEXT:COMPLETE present → skip the LLM re-run.
|
|
55
|
+
// Bare FORGE:CONTEXT matches a partial/interrupted annotation — require :COMPLETE.
|
|
55
56
|
const m = await issueMarkers(state.issue, io);
|
|
56
|
-
return has(m, "FORGE:CONTEXT") ? { satisfied: true } : { satisfied: false };
|
|
57
|
+
return has(m, "FORGE:CONTEXT:COMPLETE") ? { satisfied: true } : { satisfied: false };
|
|
57
58
|
},
|
|
58
59
|
async detectOutcome(state, io) {
|
|
59
60
|
const m = await issueMarkers(state.issue, io);
|
|
@@ -67,15 +68,16 @@ export const PHASES = [
|
|
|
67
68
|
command: "work-on/build/architect",
|
|
68
69
|
entryCondition: (s) => s.committed.includes("context"),
|
|
69
70
|
async reconcile(state, io) {
|
|
70
|
-
// Idempotent resume: FORGE:ARCHITECT
|
|
71
|
+
// Idempotent resume: FORGE:ARCHITECT:COMPLETE present → skip the LLM re-run.
|
|
72
|
+
// Bare FORGE:ARCHITECT matches a partial/interrupted annotation — require :COMPLETE.
|
|
71
73
|
const m = await issueMarkers(state.issue, io);
|
|
72
|
-
return has(m, "FORGE:ARCHITECT") ? { satisfied: true } : { satisfied: false };
|
|
74
|
+
return has(m, "FORGE:ARCHITECT:COMPLETE") ? { satisfied: true } : { satisfied: false };
|
|
73
75
|
},
|
|
74
76
|
async detectOutcome(state, io) {
|
|
75
77
|
const m = await issueMarkers(state.issue, io);
|
|
76
|
-
return has(m, "FORGE:ARCHITECT")
|
|
78
|
+
return has(m, "FORGE:ARCHITECT:COMPLETE")
|
|
77
79
|
? { status: "committed", outputs: {} }
|
|
78
|
-
: { status: "failed", detail: "no FORGE:ARCHITECT" };
|
|
80
|
+
: { status: "failed", detail: "no FORGE:ARCHITECT:COMPLETE" };
|
|
79
81
|
},
|
|
80
82
|
},
|
|
81
83
|
{
|
package/bin/runner.mjs
CHANGED
|
@@ -759,7 +759,7 @@ export async function runCommand(opts = {}) {
|
|
|
759
759
|
|
|
760
760
|
if (dryRun) {
|
|
761
761
|
logger.log(renderDryRun({ spec, systemPrompt, userMessage, model, maxIterations }));
|
|
762
|
-
return { status: "dry-run", command: spec.name, args, specPath: spec.path };
|
|
762
|
+
return { status: "dry-run", command: spec.name, args, specPath: spec.path, model };
|
|
763
763
|
}
|
|
764
764
|
|
|
765
765
|
if (!apiKey) {
|
|
@@ -857,6 +857,7 @@ export async function runCommand(opts = {}) {
|
|
|
857
857
|
iterations,
|
|
858
858
|
stopReason: response.stop_reason,
|
|
859
859
|
usage,
|
|
860
|
+
model,
|
|
860
861
|
};
|
|
861
862
|
}
|
|
862
863
|
|
|
@@ -892,5 +893,5 @@ export async function runCommand(opts = {}) {
|
|
|
892
893
|
usage,
|
|
893
894
|
}),
|
|
894
895
|
);
|
|
895
|
-
return { status: "max-iterations", command: spec.name, iterations, usage };
|
|
896
|
+
return { status: "max-iterations", command: spec.name, iterations, usage, model };
|
|
896
897
|
}
|