harnery 0.19.0 → 0.20.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/commands/supervisor.d.ts.map +1 -1
- package/dist/commands/supervisor.js +21 -1
- package/dist/core/supervisor/index.d.ts +1 -1
- package/dist/core/supervisor/index.d.ts.map +1 -1
- package/dist/core/supervisor/index.js +1 -1
- package/dist/core/supervisor/plan-api.d.ts +7 -0
- package/dist/core/supervisor/plan-api.d.ts.map +1 -1
- package/dist/core/supervisor/plan-api.js +17 -1
- package/dist/core/supervisor/plan-read.d.ts.map +1 -1
- package/dist/core/supervisor/plan-read.js +4 -0
- package/dist/core/supervisor/plan-types.d.ts +2 -2
- package/dist/core/supervisor/plan-types.d.ts.map +1 -1
- package/dist/core/supervisor/planning.d.ts +7 -0
- package/dist/core/supervisor/planning.d.ts.map +1 -1
- package/dist/core/supervisor/planning.js +136 -51
- package/dist/core/supervisor/state.d.ts +2 -1
- package/dist/core/supervisor/state.d.ts.map +1 -1
- package/dist/core/supervisor/state.js +4 -1
- package/dist/core/workflow/types.d.ts +3 -0
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/core/workflow/validate.d.ts +3 -2
- package/dist/core/workflow/validate.d.ts.map +1 -1
- package/dist/core/workflow/validate.js +23 -2
- package/package.json +1 -1
- package/src/commands/supervisor.ts +32 -0
- package/src/core/supervisor/index.ts +5 -1
- package/src/core/supervisor/plan-api.ts +27 -1
- package/src/core/supervisor/plan-read.ts +4 -0
- package/src/core/supervisor/plan-types.ts +2 -0
- package/src/core/supervisor/planning.ts +154 -52
- package/src/core/supervisor/state.ts +7 -1
- package/src/core/workflow/types.ts +3 -0
- package/src/core/workflow/validate.ts +26 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/commands/supervisor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/commands/supervisor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAsEnD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAgGnF"}
|
|
@@ -4,7 +4,7 @@ import { workflowSubscriptionOnly } from "../core/config.js";
|
|
|
4
4
|
import { createBuiltinHarnessRegistry } from "../core/harnesses/index.js";
|
|
5
5
|
import { findCoordRoot } from "../core/hooks/resolve/coord-root.js";
|
|
6
6
|
import { loadPolicyFile } from "../core/policy/index.js";
|
|
7
|
-
import { approveSupervisorPlan, configureSupervisorService, createSupervisor, listSupervisors, readSupervisor, readSupervisorPlan, readSupervisorServiceConfig, readSupervisorServiceStatus, rejectSupervisorPlan, requestSupervisorServiceStop, runSupervisor, runSupervisorServiceDaemon, spawnSupervisorService, supervisorServiceLogPath, } from "../core/supervisor/index.js";
|
|
7
|
+
import { approveSupervisorPlan, configureSupervisorService, createSupervisor, listSupervisors, readSupervisor, readSupervisorPlan, readSupervisorServiceConfig, readSupervisorServiceStatus, rejectSupervisorPlan, requestSupervisorServiceStop, retrySupervisorPlan, runSupervisor, runSupervisorServiceDaemon, spawnSupervisorService, supervisorServiceLogPath, } from "../core/supervisor/index.js";
|
|
8
8
|
export function registerSupervisorCommand(program, emit) {
|
|
9
9
|
const registry = createBuiltinHarnessRegistry();
|
|
10
10
|
const supervisor = program
|
|
@@ -159,6 +159,23 @@ function registerPlanCommand(supervisor, emit) {
|
|
|
159
159
|
}), opts.json, emit);
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
|
+
plan
|
|
163
|
+
.command("retry <goal-id> <plan-id>")
|
|
164
|
+
.description("Attach bounded guidance and authorize a new attempt after plan attention.")
|
|
165
|
+
.requiredOption("--reason <text>", "Guidance for the next planner attempt")
|
|
166
|
+
.option("--actor <name>", "Actor recorded on the retry request")
|
|
167
|
+
.option("--json", "Emit the plan outcome as JSON")
|
|
168
|
+
.action((goalId, planId, opts) => {
|
|
169
|
+
withSupervisorRoot(emit, (coordRoot) => {
|
|
170
|
+
emitPlanOutcome(retrySupervisorPlan({
|
|
171
|
+
coordRoot,
|
|
172
|
+
goalId,
|
|
173
|
+
planId,
|
|
174
|
+
actor: opts.actor,
|
|
175
|
+
reason: opts.reason,
|
|
176
|
+
}), opts.json, emit);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
162
179
|
}
|
|
163
180
|
function registerServiceCommand(supervisor, registry, emit) {
|
|
164
181
|
const service = supervisor
|
|
@@ -555,6 +572,9 @@ function emitSupervisor(record, json, emit, detail = false) {
|
|
|
555
572
|
}
|
|
556
573
|
if (projection.pending_plan_id)
|
|
557
574
|
lines.push(`pending plan: ${projection.pending_plan_id}`);
|
|
575
|
+
if (projection.attention_plan_id) {
|
|
576
|
+
lines.push(`attention plan: ${projection.attention_plan_id}`);
|
|
577
|
+
}
|
|
558
578
|
}
|
|
559
579
|
if (record.intent.mission) {
|
|
560
580
|
lines.push(`mission: ${record.intent.mission.objective}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { approveSupervisorPlan, rejectSupervisorPlan } from "./plan-api.js";
|
|
1
|
+
export { approveSupervisorPlan, rejectSupervisorPlan, retrySupervisorPlan, } from "./plan-api.js";
|
|
2
2
|
export { readSupervisorPlan, readSupervisorPlanReviewReceipt, readSupervisorPlans, } from "./plan-read.js";
|
|
3
3
|
export { type CreateSupervisorPlanTemplateInput, type CreateSupervisorReplanningInput, MAX_SUPERVISOR_PLAN_REVIEWERS, MAX_SUPERVISOR_PLAN_REVISION_ROUNDS, SUPERVISOR_PLAN_SCHEMA_VERSION, type SupervisorPlanEvent, type SupervisorPlanEventType, type SupervisorPlanHistory, type SupervisorPlanMilestone, type SupervisorPlanOutcome, type SupervisorPlanProposal, type SupervisorPlanRecord, type SupervisorPlanRequest, type SupervisorPlanReviewFinding, type SupervisorPlanReviewReceipt, type SupervisorPlanReviewReviewer, type SupervisorPlanReviewRound, type SupervisorPlanReviewStatus, type SupervisorPlanReviewSummary, type SupervisorPlanReviewVerdict, type SupervisorPlanStatus, type SupervisorPlanTemplate, type SupervisorPlanWorkSpec, type SupervisorReplanningPolicy, } from "./plan-types.js";
|
|
4
4
|
export { type RunSupervisorInput, runSupervisor, type SupervisorDispatchOutcome, type SupervisorRunReport, type SupervisorStopReason, } from "./runner.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,+BAA+B,EAC/B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,iCAAiC,EACtC,KAAK,+BAA+B,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EACvB,aAAa,EACb,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,+BAA+B,EACpC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,yBAAyB,EACzB,wCAAwC,EACxC,yCAAyC,EACzC,wCAAwC,EACxC,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,gCAAgC,EAChC,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { approveSupervisorPlan, rejectSupervisorPlan } from "./plan-api.js";
|
|
1
|
+
export { approveSupervisorPlan, rejectSupervisorPlan, retrySupervisorPlan, } from "./plan-api.js";
|
|
2
2
|
export { readSupervisorPlan, readSupervisorPlanReviewReceipt, readSupervisorPlans, } from "./plan-read.js";
|
|
3
3
|
export { MAX_SUPERVISOR_PLAN_REVIEWERS, MAX_SUPERVISOR_PLAN_REVISION_ROUNDS, SUPERVISOR_PLAN_SCHEMA_VERSION, } from "./plan-types.js";
|
|
4
4
|
export { runSupervisor, } from "./runner.js";
|
|
@@ -13,4 +13,11 @@ export declare function rejectSupervisorPlan(input: {
|
|
|
13
13
|
actor?: string;
|
|
14
14
|
reason: string;
|
|
15
15
|
}): SupervisorPlanOutcome;
|
|
16
|
+
export declare function retrySupervisorPlan(input: {
|
|
17
|
+
coordRoot: string;
|
|
18
|
+
goalId: string;
|
|
19
|
+
planId: string;
|
|
20
|
+
actor?: string;
|
|
21
|
+
reason: string;
|
|
22
|
+
}): SupervisorPlanOutcome;
|
|
16
23
|
//# sourceMappingURL=plan-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-api.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/plan-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-api.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/plan-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQ7D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,qBAAqB,CAcxB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,CAcxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,CAcxB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { applySupervisorPlanProposal, rejectSupervisorPlanProposal } from "./planning.js";
|
|
1
|
+
import { applySupervisorPlanProposal, rejectSupervisorPlanProposal, retrySupervisorPlanProposal, } from "./planning.js";
|
|
2
2
|
import { acquireSupervisorLease, readSupervisorIgnoringLease } from "./state.js";
|
|
3
3
|
export function approveSupervisorPlan(input) {
|
|
4
4
|
const actor = input.actor?.trim() || `supervisor:${input.goalId}`;
|
|
@@ -32,3 +32,19 @@ export function rejectSupervisorPlan(input) {
|
|
|
32
32
|
release();
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
export function retrySupervisorPlan(input) {
|
|
36
|
+
const actor = input.actor?.trim() || `supervisor:${input.goalId}`;
|
|
37
|
+
const release = acquireSupervisorLease(input.coordRoot, input.goalId);
|
|
38
|
+
try {
|
|
39
|
+
return retrySupervisorPlanProposal({
|
|
40
|
+
coordRoot: input.coordRoot,
|
|
41
|
+
record: readSupervisorIgnoringLease(input.coordRoot, input.goalId),
|
|
42
|
+
planId: input.planId,
|
|
43
|
+
actor,
|
|
44
|
+
reason: input.reason,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
release();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-read.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/plan-read.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,qBAAqB,EAE1B,KAAK,oBAAoB,EAGzB,KAAK,2BAA2B,EAMjC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-read.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/plan-read.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,qBAAqB,EAE1B,KAAK,oBAAoB,EAGzB,KAAK,2BAA2B,EAMjC,MAAM,iBAAiB,CAAC;AAyBzB,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,GACzB,qBAAqB,CAwEvB;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,oBAAoB,CAsBtB;AAED,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,2BAA2B,GAAG,SAAS,CAWzC"}
|
|
@@ -21,6 +21,7 @@ const EVENT_TYPES = new Set([
|
|
|
21
21
|
"plan.applied",
|
|
22
22
|
"plan.completed",
|
|
23
23
|
"plan.rejected",
|
|
24
|
+
"plan.retry_requested",
|
|
24
25
|
"plan.attention",
|
|
25
26
|
"plan.failed",
|
|
26
27
|
]);
|
|
@@ -152,6 +153,9 @@ function deriveStatus(coordRoot, events, proposal) {
|
|
|
152
153
|
if (latest?.event === "plan.rejected") {
|
|
153
154
|
return { status: "rejected", work_ids: [], reason: latest.reason };
|
|
154
155
|
}
|
|
156
|
+
if (latest?.event === "plan.retry_requested") {
|
|
157
|
+
return { status: "retry_requested", work_ids: [], reason: latest.reason };
|
|
158
|
+
}
|
|
155
159
|
if (latest?.event === "plan.attention") {
|
|
156
160
|
return { status: "attention", work_ids: [], reason: latest.reason };
|
|
157
161
|
}
|
|
@@ -73,7 +73,7 @@ export interface SupervisorPlanProposal {
|
|
|
73
73
|
milestone?: SupervisorPlanMilestone;
|
|
74
74
|
proposed_at: string;
|
|
75
75
|
}
|
|
76
|
-
export type SupervisorPlanEventType = "plan.awaiting_approval" | "plan.resumed" | "plan.reviewed" | "plan.proposed" | "plan.applied" | "plan.completed" | "plan.rejected" | "plan.attention" | "plan.failed";
|
|
76
|
+
export type SupervisorPlanEventType = "plan.awaiting_approval" | "plan.resumed" | "plan.reviewed" | "plan.proposed" | "plan.applied" | "plan.completed" | "plan.rejected" | "plan.retry_requested" | "plan.attention" | "plan.failed";
|
|
77
77
|
export type SupervisorPlanReviewStatus = "passed" | "revision_exhausted" | "attention" | "failed";
|
|
78
78
|
export type SupervisorPlanReviewVerdict = "approve" | "revise" | "attention";
|
|
79
79
|
export interface SupervisorPlanReviewFinding {
|
|
@@ -122,7 +122,7 @@ export interface SupervisorPlanEvent {
|
|
|
122
122
|
root_work_id?: string;
|
|
123
123
|
work_ids?: string[];
|
|
124
124
|
}
|
|
125
|
-
export type SupervisorPlanStatus = "interrupted" | "awaiting_approval" | "resumable" | "proposed" | "applied" | "completed" | "rejected" | "attention" | "failed";
|
|
125
|
+
export type SupervisorPlanStatus = "interrupted" | "awaiting_approval" | "resumable" | "proposed" | "applied" | "completed" | "rejected" | "retry_requested" | "attention" | "failed";
|
|
126
126
|
export interface SupervisorPlanRecord {
|
|
127
127
|
request: SupervisorPlanRequest;
|
|
128
128
|
proposal?: SupervisorPlanProposal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-types.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/plan-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plan-types.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/plan-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,4 +23,11 @@ export declare function rejectSupervisorPlanProposal(input: {
|
|
|
23
23
|
actor: string;
|
|
24
24
|
reason: string;
|
|
25
25
|
}): SupervisorPlanOutcome;
|
|
26
|
+
export declare function retrySupervisorPlanProposal(input: {
|
|
27
|
+
coordRoot: string;
|
|
28
|
+
record: SupervisorRecord;
|
|
29
|
+
planId: string;
|
|
30
|
+
actor: string;
|
|
31
|
+
reason: string;
|
|
32
|
+
}): SupervisorPlanOutcome;
|
|
26
33
|
//# sourceMappingURL=planning.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/planning.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/planning.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,UAAU,EAQhB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAIL,KAAK,qBAAqB,EAU3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAUnD,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CA+LhC;AAuLD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,qBAAqB,CAsHxB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,CAYxB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,CA4CxB"}
|
|
@@ -10,6 +10,7 @@ const TEMPLATE_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
|
10
10
|
const MAX_RECORD_BYTES = 256 * 1024;
|
|
11
11
|
const MAX_EVENTS_BYTES = 512 * 1024;
|
|
12
12
|
const MAX_REASON = 2_000;
|
|
13
|
+
const PROPOSAL_ROOT_RULE = "proposal.root names one newly proposed work key using a root-capable template; it does not preserve or repeat active_root, which is context only";
|
|
13
14
|
export async function runSupervisorPlanner(input) {
|
|
14
15
|
const coordRoot = resolve(input.coordRoot);
|
|
15
16
|
const policy = input.record.intent.replanning;
|
|
@@ -401,6 +402,44 @@ export function rejectSupervisorPlanProposal(input) {
|
|
|
401
402
|
});
|
|
402
403
|
return outcome(readSupervisorPlan(input.coordRoot, input.goalId, input.planId));
|
|
403
404
|
}
|
|
405
|
+
export function retrySupervisorPlanProposal(input) {
|
|
406
|
+
const policy = input.record.intent.replanning;
|
|
407
|
+
if (!policy) {
|
|
408
|
+
throw new Error(`supervisor ${input.record.intent.id} does not allow replanning`);
|
|
409
|
+
}
|
|
410
|
+
const reason = bounded(input.reason, "plan retry reason", MAX_REASON);
|
|
411
|
+
const history = readSupervisorPlans(input.coordRoot, input.record.intent.id, input.record.intent.root_work_id);
|
|
412
|
+
const latest = history.latest;
|
|
413
|
+
if (!latest || latest.request.id !== input.planId) {
|
|
414
|
+
throw new Error(`supervisor plan ${input.planId} is not the latest plan`);
|
|
415
|
+
}
|
|
416
|
+
const triggerFingerprint = supervisorGraphFingerprint({
|
|
417
|
+
rootWorkId: history.active_root_work_id,
|
|
418
|
+
generation: history.generation,
|
|
419
|
+
work: input.record.work,
|
|
420
|
+
});
|
|
421
|
+
if (latest.request.trigger_fingerprint !== triggerFingerprint ||
|
|
422
|
+
latest.request.prior_root_work_id !== history.active_root_work_id) {
|
|
423
|
+
throw new Error(`supervisor plan ${input.planId} no longer matches the active graph`);
|
|
424
|
+
}
|
|
425
|
+
if (history.completed) {
|
|
426
|
+
throw new Error(`supervisor ${input.record.intent.id} mission is already complete`);
|
|
427
|
+
}
|
|
428
|
+
if (latest.status === "retry_requested")
|
|
429
|
+
return outcome(latest);
|
|
430
|
+
if (latest.status !== "attention") {
|
|
431
|
+
throw new Error(`supervisor plan ${input.planId} cannot be retried from ${latest.status}`);
|
|
432
|
+
}
|
|
433
|
+
if (history.plans.length >= policy.max_replans) {
|
|
434
|
+
throw new Error(`supervisor ${input.record.intent.id} exhausted its ${policy.max_replans} replans`);
|
|
435
|
+
}
|
|
436
|
+
appendPlanEvent(input.coordRoot, input.record.intent.id, input.planId, {
|
|
437
|
+
event: "plan.retry_requested",
|
|
438
|
+
actor: input.actor,
|
|
439
|
+
reason,
|
|
440
|
+
});
|
|
441
|
+
return outcome(readSupervisorPlan(input.coordRoot, input.record.intent.id, input.planId));
|
|
442
|
+
}
|
|
404
443
|
function createPlanRequest(coordRoot, record, sequence, triggerFingerprint, trigger) {
|
|
405
444
|
const policy = record.intent.replanning;
|
|
406
445
|
if (!policy)
|
|
@@ -439,7 +478,7 @@ function plannerScript(coordRoot, record, planId, trigger) {
|
|
|
439
478
|
: "Return decision=apply with a replacement immutable root graph, or decision=attention when human judgment is required.",
|
|
440
479
|
"Never claim mission completion unless the frozen mission acceptance is met. Never request a workflow outside the frozen template catalog.",
|
|
441
480
|
"Dependencies may name an active work ID or an earlier key in your proposed work array.",
|
|
442
|
-
|
|
481
|
+
`Every proposed item must be reachable from root. ${PROPOSAL_ROOT_RULE}.`,
|
|
443
482
|
"Work keys are lowercase identifiers no longer than 32 characters. Keep titles within 200 characters, objectives within 4000 characters, and each acceptance criterion within 500 characters.",
|
|
444
483
|
`Plan id: ${planId}`,
|
|
445
484
|
`Planning trigger: ${trigger}`,
|
|
@@ -484,7 +523,7 @@ function plannerScript(coordRoot, record, planId, trigger) {
|
|
|
484
523
|
: null,
|
|
485
524
|
})))}`,
|
|
486
525
|
].join("\n\n");
|
|
487
|
-
const schema = planProposalSchema(record);
|
|
526
|
+
const schema = planProposalSchema(record, trigger);
|
|
488
527
|
return [
|
|
489
528
|
`export const meta = ${JSON.stringify({ name: `replan-${planId}` })};`,
|
|
490
529
|
"export default async ({ agent, stage }) => {",
|
|
@@ -507,27 +546,35 @@ function plannerReviewScript(record, planId, initialCandidate, trigger) {
|
|
|
507
546
|
const review = policy?.review;
|
|
508
547
|
if (!policy || !review)
|
|
509
548
|
throw new Error(`supervisor ${record.intent.id} does not review plans`);
|
|
510
|
-
const proposalSchema = planProposalSchema(record);
|
|
549
|
+
const proposalSchema = planProposalSchema(record, trigger);
|
|
511
550
|
const reviewerSchema = {
|
|
512
551
|
type: "object",
|
|
513
552
|
properties: {
|
|
514
553
|
verdict: { type: "string", enum: ["approve", "revise", "attention"] },
|
|
515
|
-
rationale: { type: "string" },
|
|
554
|
+
rationale: { type: "string", minLength: 1, maxLength: MAX_REASON },
|
|
516
555
|
findings: {
|
|
517
556
|
type: "array",
|
|
557
|
+
maxItems: 50,
|
|
518
558
|
items: {
|
|
519
559
|
type: "object",
|
|
520
560
|
properties: {
|
|
521
|
-
code: {
|
|
561
|
+
code: {
|
|
562
|
+
type: "string",
|
|
563
|
+
minLength: 1,
|
|
564
|
+
maxLength: 100,
|
|
565
|
+
pattern: "^[a-z][a-z0-9._-]*$",
|
|
566
|
+
},
|
|
522
567
|
severity: { type: "string", enum: ["blocking", "advisory"] },
|
|
523
|
-
summary: { type: "string" },
|
|
524
|
-
recommendation: { type: "string" },
|
|
568
|
+
summary: { type: "string", minLength: 1, maxLength: 1_000 },
|
|
569
|
+
recommendation: { type: "string", minLength: 1, maxLength: 1_000 },
|
|
525
570
|
},
|
|
526
571
|
required: ["code", "severity", "summary", "recommendation"],
|
|
572
|
+
additionalProperties: false,
|
|
527
573
|
},
|
|
528
574
|
},
|
|
529
575
|
},
|
|
530
576
|
required: ["verdict", "rationale", "findings"],
|
|
577
|
+
additionalProperties: false,
|
|
531
578
|
};
|
|
532
579
|
return [
|
|
533
580
|
`export const meta = ${JSON.stringify({ name: `review-${planId}` })};`,
|
|
@@ -544,6 +591,7 @@ function plannerReviewScript(record, planId, initialCandidate, trigger) {
|
|
|
544
591
|
mission: record.intent.mission ?? null,
|
|
545
592
|
original_root: record.intent.root_work_id,
|
|
546
593
|
active_root: record.projection.root_work_id,
|
|
594
|
+
proposal_root_rule: PROPOSAL_ROOT_RULE,
|
|
547
595
|
templates: policy.templates,
|
|
548
596
|
})};`,
|
|
549
597
|
` let candidate = ${JSON.stringify(initialCandidate)};`,
|
|
@@ -561,6 +609,7 @@ function plannerReviewScript(record, planId, initialCandidate, trigger) {
|
|
|
561
609
|
" 'Review this bounded supervisor plan candidate independently.',",
|
|
562
610
|
" 'Return approve only when the candidate is complete, scoped, and satisfies the goal context.',",
|
|
563
611
|
" 'Return revise for blocking defects. Return attention when human judgment is required.',",
|
|
612
|
+
" 'Apply proposal_root_rule exactly; never require proposal.root to equal active_root.',",
|
|
564
613
|
" 'Goal context: ' + JSON.stringify(goalContext),",
|
|
565
614
|
" 'Candidate: ' + JSON.stringify(candidate)",
|
|
566
615
|
" ].join('\\n\\n');",
|
|
@@ -579,6 +628,7 @@ function plannerReviewScript(record, planId, initialCandidate, trigger) {
|
|
|
579
628
|
" const revisionPrompt = [",
|
|
580
629
|
" 'Revise this supervisor plan candidate. Return a complete replacement candidate, not a patch.',",
|
|
581
630
|
" 'Do not merge reviewer text mechanically; satisfy the blocking findings within the frozen goal and template constraints.',",
|
|
631
|
+
" 'Apply proposal_root_rule exactly; never require proposal.root to equal active_root.',",
|
|
582
632
|
" 'Goal context: ' + JSON.stringify(goalContext),",
|
|
583
633
|
" 'Current candidate: ' + JSON.stringify(candidate),",
|
|
584
634
|
" 'Reviewer findings: ' + JSON.stringify(reviewersOut)",
|
|
@@ -893,61 +943,96 @@ function hasReviewRecoveryEvidence(coordRoot, goalId, planId) {
|
|
|
893
943
|
return (existsSync(reviewReceiptPath(coordRoot, goalId, planId)) ||
|
|
894
944
|
existsSync(join(coordRoot, ".harnery", "workflows", reviewWorkflowRunId(planId), "proof.json")));
|
|
895
945
|
}
|
|
896
|
-
function planProposalSchema(record) {
|
|
946
|
+
function planProposalSchema(record, trigger) {
|
|
897
947
|
const policy = record.intent.replanning;
|
|
898
948
|
if (!policy)
|
|
899
949
|
throw new Error(`supervisor ${record.intent.id} does not allow replanning`);
|
|
900
|
-
|
|
950
|
+
const rationale = { type: "string", minLength: 1, maxLength: MAX_REASON };
|
|
951
|
+
const workItem = {
|
|
901
952
|
type: "object",
|
|
902
953
|
properties: {
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
954
|
+
key: { type: "string", pattern: "^[a-z][a-z0-9-]{0,31}$", maxLength: 32 },
|
|
955
|
+
title: { type: "string", minLength: 1, maxLength: 200 },
|
|
956
|
+
objective: { type: "string", minLength: 1, maxLength: 4_000 },
|
|
957
|
+
acceptance: {
|
|
958
|
+
type: "array",
|
|
959
|
+
maxItems: 50,
|
|
960
|
+
items: { type: "string", minLength: 1, maxLength: 500 },
|
|
906
961
|
},
|
|
907
|
-
|
|
908
|
-
root: { type: "string", maxLength: 32 },
|
|
909
|
-
work: {
|
|
962
|
+
dependencies: {
|
|
910
963
|
type: "array",
|
|
911
|
-
maxItems:
|
|
912
|
-
items: {
|
|
913
|
-
type: "object",
|
|
914
|
-
properties: {
|
|
915
|
-
key: { type: "string", pattern: "^[a-z][a-z0-9-]{0,31}$", maxLength: 32 },
|
|
916
|
-
title: { type: "string", minLength: 1, maxLength: 200 },
|
|
917
|
-
objective: { type: "string", minLength: 1, maxLength: 4_000 },
|
|
918
|
-
acceptance: {
|
|
919
|
-
type: "array",
|
|
920
|
-
maxItems: 50,
|
|
921
|
-
items: { type: "string", minLength: 1, maxLength: 500 },
|
|
922
|
-
},
|
|
923
|
-
dependencies: {
|
|
924
|
-
type: "array",
|
|
925
|
-
maxItems: 50,
|
|
926
|
-
items: { type: "string", minLength: 1, maxLength: 100 },
|
|
927
|
-
},
|
|
928
|
-
template: { type: "string", enum: Object.keys(policy.templates), maxLength: 64 },
|
|
929
|
-
},
|
|
930
|
-
required: ["key", "title", "objective", "acceptance", "dependencies", "template"],
|
|
931
|
-
},
|
|
964
|
+
maxItems: 50,
|
|
965
|
+
items: { type: "string", minLength: 1, maxLength: 100 },
|
|
932
966
|
},
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
967
|
+
template: { type: "string", enum: Object.keys(policy.templates), maxLength: 64 },
|
|
968
|
+
},
|
|
969
|
+
required: ["key", "title", "objective", "acceptance", "dependencies", "template"],
|
|
970
|
+
additionalProperties: false,
|
|
971
|
+
};
|
|
972
|
+
const milestone = {
|
|
973
|
+
type: "object",
|
|
974
|
+
properties: {
|
|
975
|
+
sequence: {
|
|
976
|
+
type: "number",
|
|
977
|
+
enum: [record.projection.milestones_completed + 1],
|
|
978
|
+
},
|
|
979
|
+
title: { type: "string", minLength: 1, maxLength: 200 },
|
|
980
|
+
objective: { type: "string", minLength: 1, maxLength: 4_000 },
|
|
981
|
+
acceptance: {
|
|
982
|
+
type: "array",
|
|
983
|
+
minItems: 1,
|
|
984
|
+
maxItems: 50,
|
|
985
|
+
items: { type: "string", minLength: 1, maxLength: 500 },
|
|
947
986
|
},
|
|
948
987
|
},
|
|
949
|
-
required: ["
|
|
988
|
+
required: ["sequence", "title", "objective", "acceptance"],
|
|
989
|
+
additionalProperties: false,
|
|
990
|
+
};
|
|
991
|
+
const applyProperties = {
|
|
992
|
+
decision: { type: "string", enum: ["apply"] },
|
|
993
|
+
rationale,
|
|
994
|
+
root: {
|
|
995
|
+
type: "string",
|
|
996
|
+
minLength: 1,
|
|
997
|
+
maxLength: 32,
|
|
998
|
+
pattern: "^[a-z][a-z0-9-]{0,31}$",
|
|
999
|
+
},
|
|
1000
|
+
work: {
|
|
1001
|
+
type: "array",
|
|
1002
|
+
minItems: 1,
|
|
1003
|
+
maxItems: policy.max_work_items_per_plan,
|
|
1004
|
+
items: workItem,
|
|
1005
|
+
},
|
|
1006
|
+
};
|
|
1007
|
+
const applyRequired = ["decision", "rationale", "root", "work"];
|
|
1008
|
+
if (record.intent.mission) {
|
|
1009
|
+
applyProperties.milestone = milestone;
|
|
1010
|
+
applyRequired.push("milestone");
|
|
1011
|
+
}
|
|
1012
|
+
const apply = {
|
|
1013
|
+
type: "object",
|
|
1014
|
+
properties: applyProperties,
|
|
1015
|
+
required: applyRequired,
|
|
1016
|
+
additionalProperties: false,
|
|
950
1017
|
};
|
|
1018
|
+
const terminal = (decision) => ({
|
|
1019
|
+
type: "object",
|
|
1020
|
+
properties: {
|
|
1021
|
+
decision: { type: "string", enum: [decision] },
|
|
1022
|
+
rationale,
|
|
1023
|
+
root: { type: "string", enum: [""] },
|
|
1024
|
+
work: { type: "array", maxItems: 0 },
|
|
1025
|
+
},
|
|
1026
|
+
required: ["decision", "rationale", "root", "work"],
|
|
1027
|
+
additionalProperties: false,
|
|
1028
|
+
});
|
|
1029
|
+
const branches = [];
|
|
1030
|
+
if (!record.intent.mission || record.projection.milestones_remaining > 0)
|
|
1031
|
+
branches.push(apply);
|
|
1032
|
+
if (record.intent.mission && trigger === "milestone")
|
|
1033
|
+
branches.push(terminal("complete"));
|
|
1034
|
+
branches.push(terminal("attention"));
|
|
1035
|
+
return { type: "object", oneOf: branches };
|
|
951
1036
|
}
|
|
952
1037
|
function normalizeProposal(planId, raw, record, previouslyApplied, trigger, preservedProposedAt) {
|
|
953
1038
|
const policy = record.intent.replanning;
|
|
@@ -38,7 +38,7 @@ export interface SupervisorIntent {
|
|
|
38
38
|
created_at: string;
|
|
39
39
|
}
|
|
40
40
|
export type SupervisorState = "ready" | "running" | "awaiting_attention" | "blocked" | "budget_exhausted" | "succeeded";
|
|
41
|
-
export type SupervisorNextAction = "run" | "wait_for_run" | "resolve_approval" | "review" | "retry" | "replan" | "plan_initial" | "plan_milestone" | "review_plan" | "none";
|
|
41
|
+
export type SupervisorNextAction = "run" | "wait_for_run" | "resolve_approval" | "review" | "retry" | "replan" | "plan_initial" | "plan_milestone" | "review_plan" | "retry_plan" | "none";
|
|
42
42
|
export interface SupervisorProjection {
|
|
43
43
|
id: string;
|
|
44
44
|
title: string;
|
|
@@ -61,6 +61,7 @@ export interface SupervisorProjection {
|
|
|
61
61
|
milestones_completed: number;
|
|
62
62
|
milestones_remaining: number;
|
|
63
63
|
pending_plan_id?: string;
|
|
64
|
+
attention_plan_id?: string;
|
|
64
65
|
latest_plan_status?: SupervisorPlanRecord["status"];
|
|
65
66
|
governed_work_ids: string[];
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -279,7 +279,10 @@ function deriveProjection(coordRoot, intent, work, governed, plans, ignoreLease)
|
|
|
279
279
|
...base,
|
|
280
280
|
state: "awaiting_attention",
|
|
281
281
|
reason: plans.latest.reason ?? `plan ${plans.latest.request.id} requires attention`,
|
|
282
|
-
|
|
282
|
+
attention_plan_id: plans.latest.request.id,
|
|
283
|
+
next_action: intent.replanning && plans.plans.length < intent.replanning.max_replans
|
|
284
|
+
? "retry_plan"
|
|
285
|
+
: "none",
|
|
283
286
|
};
|
|
284
287
|
}
|
|
285
288
|
if (!root && intent.mission) {
|
|
@@ -169,9 +169,12 @@ export interface HarnessEvidenceCapability {
|
|
|
169
169
|
/** JSON-schema *subset* accepted by stage gates (see validate.ts). */
|
|
170
170
|
export interface StageSchema {
|
|
171
171
|
type: "object" | "array" | "string" | "number" | "boolean";
|
|
172
|
+
/** Exact-one branch selection, evaluated before the base schema. */
|
|
173
|
+
oneOf?: StageSchema[];
|
|
172
174
|
/** type=object */
|
|
173
175
|
properties?: Record<string, StageSchema>;
|
|
174
176
|
required?: string[];
|
|
177
|
+
additionalProperties?: boolean;
|
|
175
178
|
/** type=array */
|
|
176
179
|
items?: StageSchema;
|
|
177
180
|
minItems?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Minimal validator for the StageSchema JSON-schema subset. Deliberately tiny:
|
|
3
3
|
* a full JSON Schema implementation would pull a dependency (ajv) for
|
|
4
|
-
* validation depth workflow gates don't need. Supported: type,
|
|
5
|
-
* required, items, minItems/maxItems,
|
|
4
|
+
* validation depth workflow gates don't need. Supported: type, oneOf,
|
|
5
|
+
* properties, required, additionalProperties, items, minItems/maxItems,
|
|
6
|
+
* minLength/maxLength, pattern, and enum.
|
|
6
7
|
* Returns a list of human-readable problems (empty = valid) so the engine can
|
|
7
8
|
* feed failures back into the retry prompt verbatim.
|
|
8
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/validate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,SAAM,GAAG,MAAM,EAAE,CAmG/F;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAUlF"}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Minimal validator for the StageSchema JSON-schema subset. Deliberately tiny:
|
|
3
3
|
* a full JSON Schema implementation would pull a dependency (ajv) for
|
|
4
|
-
* validation depth workflow gates don't need. Supported: type,
|
|
5
|
-
* required, items, minItems/maxItems,
|
|
4
|
+
* validation depth workflow gates don't need. Supported: type, oneOf,
|
|
5
|
+
* properties, required, additionalProperties, items, minItems/maxItems,
|
|
6
|
+
* minLength/maxLength, pattern, and enum.
|
|
6
7
|
* Returns a list of human-readable problems (empty = valid) so the engine can
|
|
7
8
|
* feed failures back into the retry prompt verbatim.
|
|
8
9
|
*/
|
|
9
10
|
export function validateAgainstSchema(value, schema, path = "$") {
|
|
10
11
|
const problems = [];
|
|
12
|
+
if (schema.oneOf) {
|
|
13
|
+
const branches = schema.oneOf.map((branch) => validateAgainstSchema(value, branch, path));
|
|
14
|
+
const matches = branches.filter((branch) => branch.length === 0).length;
|
|
15
|
+
if (matches !== 1) {
|
|
16
|
+
if (matches > 1) {
|
|
17
|
+
return [`${path}: expected exactly one schema option to match, got ${matches}`];
|
|
18
|
+
}
|
|
19
|
+
return [
|
|
20
|
+
`${path}: expected exactly one schema option to match`,
|
|
21
|
+
...branches.map((branch, index) => `${path}: option ${index + 1}: ${branch.slice(0, 4).join("; ") || "did not match"}`),
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
11
25
|
if (schema.enum) {
|
|
12
26
|
if (!schema.enum.some((v) => v === value)) {
|
|
13
27
|
problems.push(`${path}: expected one of ${JSON.stringify(schema.enum)}, got ${short(value)}`);
|
|
@@ -28,6 +42,13 @@ export function validateAgainstSchema(value, schema, path = "$") {
|
|
|
28
42
|
if (key in obj)
|
|
29
43
|
problems.push(...validateAgainstSchema(obj[key], sub, `${path}.${key}`));
|
|
30
44
|
}
|
|
45
|
+
if (schema.additionalProperties === false) {
|
|
46
|
+
const allowed = new Set(Object.keys(schema.properties ?? {}));
|
|
47
|
+
for (const key of Object.keys(obj)) {
|
|
48
|
+
if (!allowed.has(key))
|
|
49
|
+
problems.push(`${path}.${key}: unexpected property`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
31
52
|
return problems;
|
|
32
53
|
}
|
|
33
54
|
case "array": {
|
package/package.json
CHANGED
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
readSupervisorServiceStatus,
|
|
21
21
|
rejectSupervisorPlan,
|
|
22
22
|
requestSupervisorServiceStop,
|
|
23
|
+
retrySupervisorPlan,
|
|
23
24
|
runSupervisor,
|
|
24
25
|
runSupervisorServiceDaemon,
|
|
25
26
|
type SupervisorPlanOutcome,
|
|
@@ -256,6 +257,34 @@ function registerPlanCommand(supervisor: Command, emit: EmitContext): void {
|
|
|
256
257
|
});
|
|
257
258
|
},
|
|
258
259
|
);
|
|
260
|
+
|
|
261
|
+
plan
|
|
262
|
+
.command("retry <goal-id> <plan-id>")
|
|
263
|
+
.description("Attach bounded guidance and authorize a new attempt after plan attention.")
|
|
264
|
+
.requiredOption("--reason <text>", "Guidance for the next planner attempt")
|
|
265
|
+
.option("--actor <name>", "Actor recorded on the retry request")
|
|
266
|
+
.option("--json", "Emit the plan outcome as JSON")
|
|
267
|
+
.action(
|
|
268
|
+
(
|
|
269
|
+
goalId: string,
|
|
270
|
+
planId: string,
|
|
271
|
+
opts: { actor?: string; reason: string; json?: boolean },
|
|
272
|
+
) => {
|
|
273
|
+
withSupervisorRoot(emit, (coordRoot) => {
|
|
274
|
+
emitPlanOutcome(
|
|
275
|
+
retrySupervisorPlan({
|
|
276
|
+
coordRoot,
|
|
277
|
+
goalId,
|
|
278
|
+
planId,
|
|
279
|
+
actor: opts.actor,
|
|
280
|
+
reason: opts.reason,
|
|
281
|
+
}),
|
|
282
|
+
opts.json,
|
|
283
|
+
emit,
|
|
284
|
+
);
|
|
285
|
+
});
|
|
286
|
+
},
|
|
287
|
+
);
|
|
259
288
|
}
|
|
260
289
|
|
|
261
290
|
function registerServiceCommand(
|
|
@@ -723,6 +752,9 @@ function emitSupervisor(
|
|
|
723
752
|
lines.push(`original root: ${record.intent.root_work_id}`);
|
|
724
753
|
}
|
|
725
754
|
if (projection.pending_plan_id) lines.push(`pending plan: ${projection.pending_plan_id}`);
|
|
755
|
+
if (projection.attention_plan_id) {
|
|
756
|
+
lines.push(`attention plan: ${projection.attention_plan_id}`);
|
|
757
|
+
}
|
|
726
758
|
}
|
|
727
759
|
if (record.intent.mission) {
|
|
728
760
|
lines.push(`mission: ${record.intent.mission.objective}`);
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { SupervisorPlanOutcome } from "./plan-types.ts";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
applySupervisorPlanProposal,
|
|
4
|
+
rejectSupervisorPlanProposal,
|
|
5
|
+
retrySupervisorPlanProposal,
|
|
6
|
+
} from "./planning.ts";
|
|
3
7
|
import { acquireSupervisorLease, readSupervisorIgnoringLease } from "./state.ts";
|
|
4
8
|
|
|
5
9
|
export function approveSupervisorPlan(input: {
|
|
@@ -45,3 +49,25 @@ export function rejectSupervisorPlan(input: {
|
|
|
45
49
|
release();
|
|
46
50
|
}
|
|
47
51
|
}
|
|
52
|
+
|
|
53
|
+
export function retrySupervisorPlan(input: {
|
|
54
|
+
coordRoot: string;
|
|
55
|
+
goalId: string;
|
|
56
|
+
planId: string;
|
|
57
|
+
actor?: string;
|
|
58
|
+
reason: string;
|
|
59
|
+
}): SupervisorPlanOutcome {
|
|
60
|
+
const actor = input.actor?.trim() || `supervisor:${input.goalId}`;
|
|
61
|
+
const release = acquireSupervisorLease(input.coordRoot, input.goalId);
|
|
62
|
+
try {
|
|
63
|
+
return retrySupervisorPlanProposal({
|
|
64
|
+
coordRoot: input.coordRoot,
|
|
65
|
+
record: readSupervisorIgnoringLease(input.coordRoot, input.goalId),
|
|
66
|
+
planId: input.planId,
|
|
67
|
+
actor,
|
|
68
|
+
reason: input.reason,
|
|
69
|
+
});
|
|
70
|
+
} finally {
|
|
71
|
+
release();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -39,6 +39,7 @@ const EVENT_TYPES = new Set<SupervisorPlanEventType>([
|
|
|
39
39
|
"plan.applied",
|
|
40
40
|
"plan.completed",
|
|
41
41
|
"plan.rejected",
|
|
42
|
+
"plan.retry_requested",
|
|
42
43
|
"plan.attention",
|
|
43
44
|
"plan.failed",
|
|
44
45
|
]);
|
|
@@ -188,6 +189,9 @@ function deriveStatus(
|
|
|
188
189
|
if (latest?.event === "plan.rejected") {
|
|
189
190
|
return { status: "rejected", work_ids: [], reason: latest.reason };
|
|
190
191
|
}
|
|
192
|
+
if (latest?.event === "plan.retry_requested") {
|
|
193
|
+
return { status: "retry_requested", work_ids: [], reason: latest.reason };
|
|
194
|
+
}
|
|
191
195
|
if (latest?.event === "plan.attention") {
|
|
192
196
|
return { status: "attention", work_ids: [], reason: latest.reason };
|
|
193
197
|
}
|
|
@@ -87,6 +87,7 @@ export type SupervisorPlanEventType =
|
|
|
87
87
|
| "plan.applied"
|
|
88
88
|
| "plan.completed"
|
|
89
89
|
| "plan.rejected"
|
|
90
|
+
| "plan.retry_requested"
|
|
90
91
|
| "plan.attention"
|
|
91
92
|
| "plan.failed";
|
|
92
93
|
|
|
@@ -154,6 +155,7 @@ export type SupervisorPlanStatus =
|
|
|
154
155
|
| "applied"
|
|
155
156
|
| "completed"
|
|
156
157
|
| "rejected"
|
|
158
|
+
| "retry_requested"
|
|
157
159
|
| "attention"
|
|
158
160
|
| "failed";
|
|
159
161
|
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
type ResultDigest,
|
|
19
19
|
readWorkflowProof,
|
|
20
20
|
runWorkflow,
|
|
21
|
+
type StageSchema,
|
|
21
22
|
WorkflowParkedError,
|
|
22
23
|
type WorkflowProof,
|
|
23
24
|
workflowScriptDigest,
|
|
@@ -49,6 +50,8 @@ const TEMPLATE_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
|
49
50
|
const MAX_RECORD_BYTES = 256 * 1024;
|
|
50
51
|
const MAX_EVENTS_BYTES = 512 * 1024;
|
|
51
52
|
const MAX_REASON = 2_000;
|
|
53
|
+
const PROPOSAL_ROOT_RULE =
|
|
54
|
+
"proposal.root names one newly proposed work key using a root-capable template; it does not preserve or repeat active_root, which is context only";
|
|
52
55
|
|
|
53
56
|
export interface RunSupervisorPlannerInput {
|
|
54
57
|
coordRoot: string;
|
|
@@ -580,6 +583,58 @@ export function rejectSupervisorPlanProposal(input: {
|
|
|
580
583
|
return outcome(readSupervisorPlan(input.coordRoot, input.goalId, input.planId));
|
|
581
584
|
}
|
|
582
585
|
|
|
586
|
+
export function retrySupervisorPlanProposal(input: {
|
|
587
|
+
coordRoot: string;
|
|
588
|
+
record: SupervisorRecord;
|
|
589
|
+
planId: string;
|
|
590
|
+
actor: string;
|
|
591
|
+
reason: string;
|
|
592
|
+
}): SupervisorPlanOutcome {
|
|
593
|
+
const policy = input.record.intent.replanning;
|
|
594
|
+
if (!policy) {
|
|
595
|
+
throw new Error(`supervisor ${input.record.intent.id} does not allow replanning`);
|
|
596
|
+
}
|
|
597
|
+
const reason = bounded(input.reason, "plan retry reason", MAX_REASON);
|
|
598
|
+
const history = readSupervisorPlans(
|
|
599
|
+
input.coordRoot,
|
|
600
|
+
input.record.intent.id,
|
|
601
|
+
input.record.intent.root_work_id,
|
|
602
|
+
);
|
|
603
|
+
const latest = history.latest;
|
|
604
|
+
if (!latest || latest.request.id !== input.planId) {
|
|
605
|
+
throw new Error(`supervisor plan ${input.planId} is not the latest plan`);
|
|
606
|
+
}
|
|
607
|
+
const triggerFingerprint = supervisorGraphFingerprint({
|
|
608
|
+
rootWorkId: history.active_root_work_id,
|
|
609
|
+
generation: history.generation,
|
|
610
|
+
work: input.record.work,
|
|
611
|
+
});
|
|
612
|
+
if (
|
|
613
|
+
latest.request.trigger_fingerprint !== triggerFingerprint ||
|
|
614
|
+
latest.request.prior_root_work_id !== history.active_root_work_id
|
|
615
|
+
) {
|
|
616
|
+
throw new Error(`supervisor plan ${input.planId} no longer matches the active graph`);
|
|
617
|
+
}
|
|
618
|
+
if (history.completed) {
|
|
619
|
+
throw new Error(`supervisor ${input.record.intent.id} mission is already complete`);
|
|
620
|
+
}
|
|
621
|
+
if (latest.status === "retry_requested") return outcome(latest);
|
|
622
|
+
if (latest.status !== "attention") {
|
|
623
|
+
throw new Error(`supervisor plan ${input.planId} cannot be retried from ${latest.status}`);
|
|
624
|
+
}
|
|
625
|
+
if (history.plans.length >= policy.max_replans) {
|
|
626
|
+
throw new Error(
|
|
627
|
+
`supervisor ${input.record.intent.id} exhausted its ${policy.max_replans} replans`,
|
|
628
|
+
);
|
|
629
|
+
}
|
|
630
|
+
appendPlanEvent(input.coordRoot, input.record.intent.id, input.planId, {
|
|
631
|
+
event: "plan.retry_requested",
|
|
632
|
+
actor: input.actor,
|
|
633
|
+
reason,
|
|
634
|
+
});
|
|
635
|
+
return outcome(readSupervisorPlan(input.coordRoot, input.record.intent.id, input.planId));
|
|
636
|
+
}
|
|
637
|
+
|
|
583
638
|
function createPlanRequest(
|
|
584
639
|
coordRoot: string,
|
|
585
640
|
record: SupervisorRecord,
|
|
@@ -628,7 +683,7 @@ function plannerScript(
|
|
|
628
683
|
: "Return decision=apply with a replacement immutable root graph, or decision=attention when human judgment is required.",
|
|
629
684
|
"Never claim mission completion unless the frozen mission acceptance is met. Never request a workflow outside the frozen template catalog.",
|
|
630
685
|
"Dependencies may name an active work ID or an earlier key in your proposed work array.",
|
|
631
|
-
|
|
686
|
+
`Every proposed item must be reachable from root. ${PROPOSAL_ROOT_RULE}.`,
|
|
632
687
|
"Work keys are lowercase identifiers no longer than 32 characters. Keep titles within 200 characters, objectives within 4000 characters, and each acceptance criterion within 500 characters.",
|
|
633
688
|
`Plan id: ${planId}`,
|
|
634
689
|
`Planning trigger: ${trigger}`,
|
|
@@ -677,7 +732,7 @@ function plannerScript(
|
|
|
677
732
|
})),
|
|
678
733
|
)}`,
|
|
679
734
|
].join("\n\n");
|
|
680
|
-
const schema = planProposalSchema(record);
|
|
735
|
+
const schema = planProposalSchema(record, trigger);
|
|
681
736
|
return [
|
|
682
737
|
`export const meta = ${JSON.stringify({ name: `replan-${planId}` })};`,
|
|
683
738
|
"export default async ({ agent, stage }) => {",
|
|
@@ -707,27 +762,35 @@ function plannerReviewScript(
|
|
|
707
762
|
const policy = record.intent.replanning;
|
|
708
763
|
const review = policy?.review;
|
|
709
764
|
if (!policy || !review) throw new Error(`supervisor ${record.intent.id} does not review plans`);
|
|
710
|
-
const proposalSchema = planProposalSchema(record);
|
|
711
|
-
const reviewerSchema = {
|
|
765
|
+
const proposalSchema = planProposalSchema(record, trigger);
|
|
766
|
+
const reviewerSchema: StageSchema = {
|
|
712
767
|
type: "object",
|
|
713
768
|
properties: {
|
|
714
769
|
verdict: { type: "string", enum: ["approve", "revise", "attention"] },
|
|
715
|
-
rationale: { type: "string" },
|
|
770
|
+
rationale: { type: "string", minLength: 1, maxLength: MAX_REASON },
|
|
716
771
|
findings: {
|
|
717
772
|
type: "array",
|
|
773
|
+
maxItems: 50,
|
|
718
774
|
items: {
|
|
719
775
|
type: "object",
|
|
720
776
|
properties: {
|
|
721
|
-
code: {
|
|
777
|
+
code: {
|
|
778
|
+
type: "string",
|
|
779
|
+
minLength: 1,
|
|
780
|
+
maxLength: 100,
|
|
781
|
+
pattern: "^[a-z][a-z0-9._-]*$",
|
|
782
|
+
},
|
|
722
783
|
severity: { type: "string", enum: ["blocking", "advisory"] },
|
|
723
|
-
summary: { type: "string" },
|
|
724
|
-
recommendation: { type: "string" },
|
|
784
|
+
summary: { type: "string", minLength: 1, maxLength: 1_000 },
|
|
785
|
+
recommendation: { type: "string", minLength: 1, maxLength: 1_000 },
|
|
725
786
|
},
|
|
726
787
|
required: ["code", "severity", "summary", "recommendation"],
|
|
788
|
+
additionalProperties: false,
|
|
727
789
|
},
|
|
728
790
|
},
|
|
729
791
|
},
|
|
730
792
|
required: ["verdict", "rationale", "findings"],
|
|
793
|
+
additionalProperties: false,
|
|
731
794
|
};
|
|
732
795
|
return [
|
|
733
796
|
`export const meta = ${JSON.stringify({ name: `review-${planId}` })};`,
|
|
@@ -744,6 +807,7 @@ function plannerReviewScript(
|
|
|
744
807
|
mission: record.intent.mission ?? null,
|
|
745
808
|
original_root: record.intent.root_work_id,
|
|
746
809
|
active_root: record.projection.root_work_id,
|
|
810
|
+
proposal_root_rule: PROPOSAL_ROOT_RULE,
|
|
747
811
|
templates: policy.templates,
|
|
748
812
|
})};`,
|
|
749
813
|
` let candidate = ${JSON.stringify(initialCandidate)};`,
|
|
@@ -761,6 +825,7 @@ function plannerReviewScript(
|
|
|
761
825
|
" 'Review this bounded supervisor plan candidate independently.',",
|
|
762
826
|
" 'Return approve only when the candidate is complete, scoped, and satisfies the goal context.',",
|
|
763
827
|
" 'Return revise for blocking defects. Return attention when human judgment is required.',",
|
|
828
|
+
" 'Apply proposal_root_rule exactly; never require proposal.root to equal active_root.',",
|
|
764
829
|
" 'Goal context: ' + JSON.stringify(goalContext),",
|
|
765
830
|
" 'Candidate: ' + JSON.stringify(candidate)",
|
|
766
831
|
" ].join('\\n\\n');",
|
|
@@ -779,6 +844,7 @@ function plannerReviewScript(
|
|
|
779
844
|
" const revisionPrompt = [",
|
|
780
845
|
" 'Revise this supervisor plan candidate. Return a complete replacement candidate, not a patch.',",
|
|
781
846
|
" 'Do not merge reviewer text mechanically; satisfy the blocking findings within the frozen goal and template constraints.',",
|
|
847
|
+
" 'Apply proposal_root_rule exactly; never require proposal.root to equal active_root.',",
|
|
782
848
|
" 'Goal context: ' + JSON.stringify(goalContext),",
|
|
783
849
|
" 'Current candidate: ' + JSON.stringify(candidate),",
|
|
784
850
|
" 'Reviewer findings: ' + JSON.stringify(reviewersOut)",
|
|
@@ -1163,60 +1229,96 @@ function hasReviewRecoveryEvidence(coordRoot: string, goalId: string, planId: st
|
|
|
1163
1229
|
);
|
|
1164
1230
|
}
|
|
1165
1231
|
|
|
1166
|
-
function planProposalSchema(
|
|
1232
|
+
function planProposalSchema(
|
|
1233
|
+
record: SupervisorRecord,
|
|
1234
|
+
trigger: NonNullable<SupervisorPlanRequest["trigger"]>,
|
|
1235
|
+
): StageSchema {
|
|
1167
1236
|
const policy = record.intent.replanning;
|
|
1168
1237
|
if (!policy) throw new Error(`supervisor ${record.intent.id} does not allow replanning`);
|
|
1169
|
-
|
|
1238
|
+
const rationale: StageSchema = { type: "string", minLength: 1, maxLength: MAX_REASON };
|
|
1239
|
+
const workItem: StageSchema = {
|
|
1170
1240
|
type: "object",
|
|
1171
1241
|
properties: {
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1242
|
+
key: { type: "string", pattern: "^[a-z][a-z0-9-]{0,31}$", maxLength: 32 },
|
|
1243
|
+
title: { type: "string", minLength: 1, maxLength: 200 },
|
|
1244
|
+
objective: { type: "string", minLength: 1, maxLength: 4_000 },
|
|
1245
|
+
acceptance: {
|
|
1246
|
+
type: "array",
|
|
1247
|
+
maxItems: 50,
|
|
1248
|
+
items: { type: "string", minLength: 1, maxLength: 500 },
|
|
1175
1249
|
},
|
|
1176
|
-
|
|
1177
|
-
root: { type: "string", maxLength: 32 },
|
|
1178
|
-
work: {
|
|
1250
|
+
dependencies: {
|
|
1179
1251
|
type: "array",
|
|
1180
|
-
maxItems:
|
|
1181
|
-
items: {
|
|
1182
|
-
type: "object",
|
|
1183
|
-
properties: {
|
|
1184
|
-
key: { type: "string", pattern: "^[a-z][a-z0-9-]{0,31}$", maxLength: 32 },
|
|
1185
|
-
title: { type: "string", minLength: 1, maxLength: 200 },
|
|
1186
|
-
objective: { type: "string", minLength: 1, maxLength: 4_000 },
|
|
1187
|
-
acceptance: {
|
|
1188
|
-
type: "array",
|
|
1189
|
-
maxItems: 50,
|
|
1190
|
-
items: { type: "string", minLength: 1, maxLength: 500 },
|
|
1191
|
-
},
|
|
1192
|
-
dependencies: {
|
|
1193
|
-
type: "array",
|
|
1194
|
-
maxItems: 50,
|
|
1195
|
-
items: { type: "string", minLength: 1, maxLength: 100 },
|
|
1196
|
-
},
|
|
1197
|
-
template: { type: "string", enum: Object.keys(policy.templates), maxLength: 64 },
|
|
1198
|
-
},
|
|
1199
|
-
required: ["key", "title", "objective", "acceptance", "dependencies", "template"],
|
|
1200
|
-
},
|
|
1252
|
+
maxItems: 50,
|
|
1253
|
+
items: { type: "string", minLength: 1, maxLength: 100 },
|
|
1201
1254
|
},
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1255
|
+
template: { type: "string", enum: Object.keys(policy.templates), maxLength: 64 },
|
|
1256
|
+
},
|
|
1257
|
+
required: ["key", "title", "objective", "acceptance", "dependencies", "template"],
|
|
1258
|
+
additionalProperties: false,
|
|
1259
|
+
};
|
|
1260
|
+
const milestone: StageSchema = {
|
|
1261
|
+
type: "object",
|
|
1262
|
+
properties: {
|
|
1263
|
+
sequence: {
|
|
1264
|
+
type: "number",
|
|
1265
|
+
enum: [record.projection.milestones_completed + 1],
|
|
1266
|
+
},
|
|
1267
|
+
title: { type: "string", minLength: 1, maxLength: 200 },
|
|
1268
|
+
objective: { type: "string", minLength: 1, maxLength: 4_000 },
|
|
1269
|
+
acceptance: {
|
|
1270
|
+
type: "array",
|
|
1271
|
+
minItems: 1,
|
|
1272
|
+
maxItems: 50,
|
|
1273
|
+
items: { type: "string", minLength: 1, maxLength: 500 },
|
|
1216
1274
|
},
|
|
1217
1275
|
},
|
|
1218
|
-
required: ["
|
|
1276
|
+
required: ["sequence", "title", "objective", "acceptance"],
|
|
1277
|
+
additionalProperties: false,
|
|
1278
|
+
};
|
|
1279
|
+
const applyProperties: Record<string, StageSchema> = {
|
|
1280
|
+
decision: { type: "string", enum: ["apply"] },
|
|
1281
|
+
rationale,
|
|
1282
|
+
root: {
|
|
1283
|
+
type: "string",
|
|
1284
|
+
minLength: 1,
|
|
1285
|
+
maxLength: 32,
|
|
1286
|
+
pattern: "^[a-z][a-z0-9-]{0,31}$",
|
|
1287
|
+
},
|
|
1288
|
+
work: {
|
|
1289
|
+
type: "array",
|
|
1290
|
+
minItems: 1,
|
|
1291
|
+
maxItems: policy.max_work_items_per_plan,
|
|
1292
|
+
items: workItem,
|
|
1293
|
+
},
|
|
1294
|
+
};
|
|
1295
|
+
const applyRequired = ["decision", "rationale", "root", "work"];
|
|
1296
|
+
if (record.intent.mission) {
|
|
1297
|
+
applyProperties.milestone = milestone;
|
|
1298
|
+
applyRequired.push("milestone");
|
|
1299
|
+
}
|
|
1300
|
+
const apply: StageSchema = {
|
|
1301
|
+
type: "object",
|
|
1302
|
+
properties: applyProperties,
|
|
1303
|
+
required: applyRequired,
|
|
1304
|
+
additionalProperties: false,
|
|
1219
1305
|
};
|
|
1306
|
+
const terminal = (decision: "complete" | "attention"): StageSchema => ({
|
|
1307
|
+
type: "object",
|
|
1308
|
+
properties: {
|
|
1309
|
+
decision: { type: "string", enum: [decision] },
|
|
1310
|
+
rationale,
|
|
1311
|
+
root: { type: "string", enum: [""] },
|
|
1312
|
+
work: { type: "array", maxItems: 0 },
|
|
1313
|
+
},
|
|
1314
|
+
required: ["decision", "rationale", "root", "work"],
|
|
1315
|
+
additionalProperties: false,
|
|
1316
|
+
});
|
|
1317
|
+
const branches: StageSchema[] = [];
|
|
1318
|
+
if (!record.intent.mission || record.projection.milestones_remaining > 0) branches.push(apply);
|
|
1319
|
+
if (record.intent.mission && trigger === "milestone") branches.push(terminal("complete"));
|
|
1320
|
+
branches.push(terminal("attention"));
|
|
1321
|
+
return { type: "object", oneOf: branches };
|
|
1220
1322
|
}
|
|
1221
1323
|
|
|
1222
1324
|
function normalizeProposal(
|
|
@@ -97,6 +97,7 @@ export type SupervisorNextAction =
|
|
|
97
97
|
| "plan_initial"
|
|
98
98
|
| "plan_milestone"
|
|
99
99
|
| "review_plan"
|
|
100
|
+
| "retry_plan"
|
|
100
101
|
| "none";
|
|
101
102
|
|
|
102
103
|
export interface SupervisorProjection {
|
|
@@ -121,6 +122,7 @@ export interface SupervisorProjection {
|
|
|
121
122
|
milestones_completed: number;
|
|
122
123
|
milestones_remaining: number;
|
|
123
124
|
pending_plan_id?: string;
|
|
125
|
+
attention_plan_id?: string;
|
|
124
126
|
latest_plan_status?: SupervisorPlanRecord["status"];
|
|
125
127
|
governed_work_ids: string[];
|
|
126
128
|
}
|
|
@@ -445,7 +447,11 @@ function deriveProjection(
|
|
|
445
447
|
...base,
|
|
446
448
|
state: "awaiting_attention",
|
|
447
449
|
reason: plans.latest.reason ?? `plan ${plans.latest.request.id} requires attention`,
|
|
448
|
-
|
|
450
|
+
attention_plan_id: plans.latest.request.id,
|
|
451
|
+
next_action:
|
|
452
|
+
intent.replanning && plans.plans.length < intent.replanning.max_replans
|
|
453
|
+
? "retry_plan"
|
|
454
|
+
: "none",
|
|
449
455
|
};
|
|
450
456
|
}
|
|
451
457
|
if (!root && intent.mission) {
|
|
@@ -201,9 +201,12 @@ export interface HarnessEvidenceCapability {
|
|
|
201
201
|
/** JSON-schema *subset* accepted by stage gates (see validate.ts). */
|
|
202
202
|
export interface StageSchema {
|
|
203
203
|
type: "object" | "array" | "string" | "number" | "boolean";
|
|
204
|
+
/** Exact-one branch selection, evaluated before the base schema. */
|
|
205
|
+
oneOf?: StageSchema[];
|
|
204
206
|
/** type=object */
|
|
205
207
|
properties?: Record<string, StageSchema>;
|
|
206
208
|
required?: string[];
|
|
209
|
+
additionalProperties?: boolean;
|
|
207
210
|
/** type=array */
|
|
208
211
|
items?: StageSchema;
|
|
209
212
|
minItems?: number;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Minimal validator for the StageSchema JSON-schema subset. Deliberately tiny:
|
|
3
3
|
* a full JSON Schema implementation would pull a dependency (ajv) for
|
|
4
|
-
* validation depth workflow gates don't need. Supported: type,
|
|
5
|
-
* required, items, minItems/maxItems,
|
|
4
|
+
* validation depth workflow gates don't need. Supported: type, oneOf,
|
|
5
|
+
* properties, required, additionalProperties, items, minItems/maxItems,
|
|
6
|
+
* minLength/maxLength, pattern, and enum.
|
|
6
7
|
* Returns a list of human-readable problems (empty = valid) so the engine can
|
|
7
8
|
* feed failures back into the retry prompt verbatim.
|
|
8
9
|
*/
|
|
@@ -12,6 +13,23 @@ import type { StageSchema } from "./types.ts";
|
|
|
12
13
|
export function validateAgainstSchema(value: unknown, schema: StageSchema, path = "$"): string[] {
|
|
13
14
|
const problems: string[] = [];
|
|
14
15
|
|
|
16
|
+
if (schema.oneOf) {
|
|
17
|
+
const branches = schema.oneOf.map((branch) => validateAgainstSchema(value, branch, path));
|
|
18
|
+
const matches = branches.filter((branch) => branch.length === 0).length;
|
|
19
|
+
if (matches !== 1) {
|
|
20
|
+
if (matches > 1) {
|
|
21
|
+
return [`${path}: expected exactly one schema option to match, got ${matches}`];
|
|
22
|
+
}
|
|
23
|
+
return [
|
|
24
|
+
`${path}: expected exactly one schema option to match`,
|
|
25
|
+
...branches.map(
|
|
26
|
+
(branch, index) =>
|
|
27
|
+
`${path}: option ${index + 1}: ${branch.slice(0, 4).join("; ") || "did not match"}`,
|
|
28
|
+
),
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
15
33
|
if (schema.enum) {
|
|
16
34
|
if (!schema.enum.some((v) => v === value)) {
|
|
17
35
|
problems.push(`${path}: expected one of ${JSON.stringify(schema.enum)}, got ${short(value)}`);
|
|
@@ -31,6 +49,12 @@ export function validateAgainstSchema(value: unknown, schema: StageSchema, path
|
|
|
31
49
|
for (const [key, sub] of Object.entries(schema.properties ?? {})) {
|
|
32
50
|
if (key in obj) problems.push(...validateAgainstSchema(obj[key], sub, `${path}.${key}`));
|
|
33
51
|
}
|
|
52
|
+
if (schema.additionalProperties === false) {
|
|
53
|
+
const allowed = new Set(Object.keys(schema.properties ?? {}));
|
|
54
|
+
for (const key of Object.keys(obj)) {
|
|
55
|
+
if (!allowed.has(key)) problems.push(`${path}.${key}: unexpected property`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
34
58
|
return problems;
|
|
35
59
|
}
|
|
36
60
|
case "array": {
|