@chllming/wave-orchestration 0.9.10 → 0.9.12
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/CHANGELOG.md +27 -0
- package/README.md +7 -8
- package/docs/README.md +4 -10
- package/docs/architecture/README.md +12 -4
- package/docs/concepts/operating-modes.md +1 -1
- package/docs/guides/author-and-run-waves.md +3 -2
- package/docs/guides/planner.md +3 -3
- package/docs/guides/recommendations-0.9.11.md +44 -0
- package/docs/guides/recommendations-0.9.12.md +49 -0
- package/docs/guides/sandboxed-environments.md +2 -2
- package/docs/guides/terminal-surfaces.md +1 -1
- package/docs/plans/current-state.md +3 -3
- package/docs/plans/end-state-architecture.md +1 -1
- package/docs/plans/examples/wave-example-design-handoff.md +1 -1
- package/docs/plans/examples/wave-example-live-proof.md +1 -1
- package/docs/plans/migration.md +32 -28
- package/docs/plans/wave-orchestrator.md +1 -1
- package/docs/reference/cli-reference.md +2 -2
- package/docs/reference/coordination-and-closure.md +1 -1
- package/docs/reference/npmjs-token-publishing.md +2 -2
- package/docs/reference/package-publishing-flow.md +12 -12
- package/docs/reference/runtime-config/README.md +2 -2
- package/docs/reference/sample-waves.md +5 -5
- package/docs/reference/skills.md +1 -1
- package/docs/reference/wave-control.md +3 -1
- package/docs/roadmap.md +3 -3
- package/package.json +1 -1
- package/releases/manifest.json +32 -0
- package/scripts/wave-orchestrator/agent-state.mjs +3 -1
- package/scripts/wave-orchestrator/autonomous.mjs +2 -2
- package/scripts/wave-orchestrator/closure-engine.mjs +103 -6
- package/scripts/wave-orchestrator/closure-policy.mjs +319 -0
- package/scripts/wave-orchestrator/config.mjs +15 -0
- package/scripts/wave-orchestrator/derived-state-engine.mjs +52 -4
- package/scripts/wave-orchestrator/gate-engine.mjs +72 -4
- package/scripts/wave-orchestrator/install.mjs +1 -1
- package/scripts/wave-orchestrator/launcher.mjs +14 -4
- package/scripts/wave-orchestrator/planner.mjs +4 -3
- package/scripts/wave-orchestrator/shared.mjs +11 -12
- package/scripts/wave-orchestrator/swe-bench-pro-task.mjs +1 -1
- package/scripts/wave-orchestrator/traces.mjs +22 -1
- package/wave.config.json +13 -2
|
@@ -277,6 +277,8 @@ export function buildLanePaths(laneInput = DEFAULT_WAVE_LANE, options = {}) {
|
|
|
277
277
|
laneProfile.validation.requireComponentPromotionsFromWave,
|
|
278
278
|
requireAgentComponentsFromWave: laneProfile.validation.requireAgentComponentsFromWave,
|
|
279
279
|
gateModeThresholds: laneProfile.validation.gateModeThresholds,
|
|
280
|
+
closureModeThresholds: laneProfile.validation.closureModeThresholds,
|
|
281
|
+
autoClosure: laneProfile.validation.autoClosure,
|
|
280
282
|
executors: laneProfile.executors,
|
|
281
283
|
skills: laneProfile.skills,
|
|
282
284
|
capabilityRouting: laneProfile.capabilityRouting,
|
|
@@ -428,9 +430,6 @@ export function normalizeWaveVerdict(verdict) {
|
|
|
428
430
|
const normalized = String(verdict || "")
|
|
429
431
|
.trim()
|
|
430
432
|
.toLowerCase();
|
|
431
|
-
if (normalized === "hold") {
|
|
432
|
-
return "concerns";
|
|
433
|
-
}
|
|
434
433
|
if (normalized === "fail") {
|
|
435
434
|
return "blocked";
|
|
436
435
|
}
|
|
@@ -443,16 +442,16 @@ export function parseVerdictFromText(text, regex) {
|
|
|
443
442
|
}
|
|
444
443
|
regex.lastIndex = 0;
|
|
445
444
|
let match = regex.exec(text);
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
while (match !== null) {
|
|
449
|
-
verdict = normalizeWaveVerdict(match[1]);
|
|
450
|
-
detail = String(match[2] || "")
|
|
451
|
-
.trim()
|
|
452
|
-
.replace(/^detail=/i, "")
|
|
453
|
-
.trim();
|
|
454
|
-
match = regex.exec(text);
|
|
445
|
+
if (!match) {
|
|
446
|
+
return { verdict: null, detail: "" };
|
|
455
447
|
}
|
|
448
|
+
// Use the first match — in append-only reports the latest verdict is written
|
|
449
|
+
// at the top of the newest section, while stale entries linger at the bottom.
|
|
450
|
+
const verdict = normalizeWaveVerdict(match[1]);
|
|
451
|
+
const detail = String(match[2] || "")
|
|
452
|
+
.trim()
|
|
453
|
+
.replace(/^detail=/i, "")
|
|
454
|
+
.trim();
|
|
456
455
|
return { verdict, detail };
|
|
457
456
|
}
|
|
458
457
|
|
|
@@ -796,7 +796,7 @@ function buildFullWaveSolve(row, taskWorkspace, options) {
|
|
|
796
796
|
});
|
|
797
797
|
assertSuccess(doctor, "wave doctor");
|
|
798
798
|
const launch = runShellCommand(
|
|
799
|
-
`node ${shellQuote(WAVE_ENTRY)} launch --lane main --start-wave 1 --end-wave 1 --no-dashboard
|
|
799
|
+
`node ${shellQuote(WAVE_ENTRY)} launch --lane main --start-wave 1 --end-wave 1 --no-dashboard`,
|
|
800
800
|
{
|
|
801
801
|
cwd: taskWorkspace.repoDir,
|
|
802
802
|
timeoutMs: options.maxWallClockMinutes * 60 * 1000,
|
|
@@ -623,6 +623,7 @@ export function normalizeGateSnapshotForBundle(gateSnapshot, agentArtifacts) {
|
|
|
623
623
|
return gateSnapshot;
|
|
624
624
|
}
|
|
625
625
|
const normalized = { ...gateSnapshot };
|
|
626
|
+
const overallGate = String(gateSnapshot.overall?.gate || "").trim();
|
|
626
627
|
for (const key of [
|
|
627
628
|
"implementationGate",
|
|
628
629
|
"componentGate",
|
|
@@ -638,7 +639,27 @@ export function normalizeGateSnapshotForBundle(gateSnapshot, agentArtifacts) {
|
|
|
638
639
|
"evaluatorGate",
|
|
639
640
|
"infraGate",
|
|
640
641
|
]) {
|
|
641
|
-
|
|
642
|
+
const nextValue = normalizeGateLogPath(gateSnapshot[key], agentArtifacts);
|
|
643
|
+
if (key === "documentationGate") {
|
|
644
|
+
normalized[key] =
|
|
645
|
+
overallGate === "documentationGate" && nextValue
|
|
646
|
+
? {
|
|
647
|
+
ok: Boolean(nextValue.ok),
|
|
648
|
+
statusCode: nextValue.statusCode || null,
|
|
649
|
+
}
|
|
650
|
+
: null;
|
|
651
|
+
continue;
|
|
652
|
+
}
|
|
653
|
+
if (key === "integrationGate" || key === "integrationBarrier") {
|
|
654
|
+
normalized[key] = nextValue
|
|
655
|
+
? {
|
|
656
|
+
ok: Boolean(nextValue.ok),
|
|
657
|
+
statusCode: nextValue.statusCode || null,
|
|
658
|
+
}
|
|
659
|
+
: null;
|
|
660
|
+
continue;
|
|
661
|
+
}
|
|
662
|
+
normalized[key] = nextValue;
|
|
642
663
|
}
|
|
643
664
|
return normalized;
|
|
644
665
|
}
|
package/wave.config.json
CHANGED
|
@@ -276,7 +276,18 @@
|
|
|
276
276
|
"requireExitContractsFromWave": 6,
|
|
277
277
|
"requireIntegrationStewardFromWave": 0,
|
|
278
278
|
"requireComponentPromotionsFromWave": 0,
|
|
279
|
-
"requireAgentComponentsFromWave": 0
|
|
279
|
+
"requireAgentComponentsFromWave": 0,
|
|
280
|
+
"closureModeThresholds": {
|
|
281
|
+
"bootstrap": 0,
|
|
282
|
+
"standard": 4,
|
|
283
|
+
"strict": 10
|
|
284
|
+
},
|
|
285
|
+
"autoClosure": {
|
|
286
|
+
"allowInferredIntegration": true,
|
|
287
|
+
"allowAutoDocNoChange": true,
|
|
288
|
+
"allowAutoDocProjection": false,
|
|
289
|
+
"allowSkipContQaInBootstrap": true
|
|
290
|
+
}
|
|
280
291
|
},
|
|
281
292
|
"capabilityRouting": {
|
|
282
293
|
"preferredAgents": {}
|
|
@@ -309,4 +320,4 @@
|
|
|
309
320
|
}
|
|
310
321
|
}
|
|
311
322
|
}
|
|
312
|
-
}
|
|
323
|
+
}
|