@polderlabs/bizar-omp 0.4.9 → 0.5.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/README.md +6 -3
- package/dist/cli/agents-ink.d.ts +1 -1
- package/dist/cli/agents-ink.d.ts.map +1 -1
- package/dist/cli/agents-ink.js +8 -7
- package/dist/cli/agents-ink.js.map +1 -1
- package/dist/cli/agents.d.ts.map +1 -1
- package/dist/cli/agents.js +9 -1
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/install.js +5 -5
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/omb-daemon.d.ts.map +1 -1
- package/dist/cli/omb-daemon.js +8 -0
- package/dist/cli/omb-daemon.js.map +1 -1
- package/dist/cli/omb.js +21 -0
- package/dist/cli/omb.js.map +1 -1
- package/dist/core/acceptance.d.ts +33 -0
- package/dist/core/acceptance.d.ts.map +1 -0
- package/dist/core/acceptance.js +87 -0
- package/dist/core/acceptance.js.map +1 -0
- package/dist/core/evidence.d.ts +6 -1
- package/dist/core/evidence.d.ts.map +1 -1
- package/dist/core/evidence.js +6 -2
- package/dist/core/evidence.js.map +1 -1
- package/dist/core/recovery.js +3 -3
- package/dist/core/recovery.js.map +1 -1
- package/dist/core/transitions.d.ts.map +1 -1
- package/dist/core/transitions.js +3 -3
- package/dist/core/transitions.js.map +1 -1
- package/dist/core/types.d.ts +51 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +47 -5
- package/dist/extension.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/omp/autonomous-settings.d.ts +11 -0
- package/dist/omp/autonomous-settings.d.ts.map +1 -1
- package/dist/omp/autonomous-settings.js +14 -0
- package/dist/omp/autonomous-settings.js.map +1 -1
- package/dist/omp/capabilities.d.ts +24 -0
- package/dist/omp/capabilities.d.ts.map +1 -0
- package/dist/omp/capabilities.js +6 -0
- package/dist/omp/capabilities.js.map +1 -0
- package/dist/omp/compatibility.d.ts +7 -0
- package/dist/omp/compatibility.d.ts.map +1 -1
- package/dist/omp/compatibility.js +27 -1
- package/dist/omp/compatibility.js.map +1 -1
- package/dist/omp/completion.d.ts.map +1 -1
- package/dist/omp/completion.js +4 -8
- package/dist/omp/completion.js.map +1 -1
- package/dist/omp/daemon-service.d.ts +2 -0
- package/dist/omp/daemon-service.d.ts.map +1 -1
- package/dist/omp/daemon-service.js +62 -13
- package/dist/omp/daemon-service.js.map +1 -1
- package/dist/omp/model-role-assignment.d.ts +5 -0
- package/dist/omp/model-role-assignment.d.ts.map +1 -1
- package/dist/omp/model-role-assignment.js +11 -1
- package/dist/omp/model-role-assignment.js.map +1 -1
- package/dist/omp/omb-settings.d.ts +1 -0
- package/dist/omp/omb-settings.d.ts.map +1 -1
- package/dist/omp/omb-settings.js +2 -0
- package/dist/omp/omb-settings.js.map +1 -1
- package/dist/omp/rpc.d.ts +6 -0
- package/dist/omp/rpc.d.ts.map +1 -1
- package/dist/omp/session-controls.d.ts +18 -0
- package/dist/omp/session-controls.d.ts.map +1 -0
- package/dist/omp/session-controls.js +14 -0
- package/dist/omp/session-controls.js.map +1 -0
- package/dist/omp/tmux.d.ts +2 -0
- package/dist/omp/tmux.d.ts.map +1 -1
- package/dist/omp/tmux.js +17 -1
- package/dist/omp/tmux.js.map +1 -1
- package/dist/omp/tray-icons.d.ts +6 -0
- package/dist/omp/tray-icons.d.ts.map +1 -0
- package/dist/omp/tray-icons.js +78 -0
- package/dist/omp/tray-icons.js.map +1 -0
- package/dist/omp/tray.d.ts +24 -0
- package/dist/omp/tray.d.ts.map +1 -0
- package/dist/omp/tray.js +167 -0
- package/dist/omp/tray.js.map +1 -0
- package/dist/services/budget.d.ts +20 -0
- package/dist/services/budget.d.ts.map +1 -0
- package/dist/services/budget.js +10 -0
- package/dist/services/budget.js.map +1 -0
- package/dist/services/candidate-local.d.ts +14 -0
- package/dist/services/candidate-local.d.ts.map +1 -0
- package/dist/services/candidate-local.js +15 -0
- package/dist/services/candidate-local.js.map +1 -0
- package/dist/services/candidates.d.ts +21 -0
- package/dist/services/candidates.d.ts.map +1 -0
- package/dist/services/candidates.js +100 -0
- package/dist/services/candidates.js.map +1 -0
- package/dist/services/evidence-bundle.d.ts +18 -0
- package/dist/services/evidence-bundle.d.ts.map +1 -0
- package/dist/services/evidence-bundle.js +21 -0
- package/dist/services/evidence-bundle.js.map +1 -0
- package/dist/services/inspector.d.ts +12 -0
- package/dist/services/inspector.d.ts.map +1 -0
- package/dist/services/inspector.js +6 -0
- package/dist/services/inspector.js.map +1 -0
- package/dist/services/lessons.d.ts +14 -0
- package/dist/services/lessons.d.ts.map +1 -0
- package/dist/services/lessons.js +11 -0
- package/dist/services/lessons.js.map +1 -0
- package/dist/services/projection.d.ts +22 -0
- package/dist/services/projection.d.ts.map +1 -0
- package/dist/services/projection.js +10 -0
- package/dist/services/projection.js.map +1 -0
- package/dist/services/readiness.d.ts +5 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/readiness.js +35 -0
- package/dist/services/readiness.js.map +1 -0
- package/dist/services/recipes.d.ts +16 -0
- package/dist/services/recipes.d.ts.map +1 -0
- package/dist/services/recipes.js +42 -0
- package/dist/services/recipes.js.map +1 -0
- package/dist/services/recovery.d.ts +20 -0
- package/dist/services/recovery.d.ts.map +1 -0
- package/dist/services/recovery.js +9 -0
- package/dist/services/recovery.js.map +1 -0
- package/dist/services/review.d.ts +16 -0
- package/dist/services/review.d.ts.map +1 -0
- package/dist/services/review.js +9 -0
- package/dist/services/review.js.map +1 -0
- package/dist/storage/journal-recovery.d.ts +11 -0
- package/dist/storage/journal-recovery.d.ts.map +1 -0
- package/dist/storage/journal-recovery.js +33 -0
- package/dist/storage/journal-recovery.js.map +1 -0
- package/dist/storage/journal.d.ts.map +1 -1
- package/dist/storage/journal.js +14 -4
- package/dist/storage/journal.js.map +1 -1
- package/dist/storage/migrations.d.ts +15 -1
- package/dist/storage/migrations.d.ts.map +1 -1
- package/dist/storage/migrations.js +74 -5
- package/dist/storage/migrations.js.map +1 -1
- package/dist/storage/resources.d.ts +67 -0
- package/dist/storage/resources.d.ts.map +1 -0
- package/dist/storage/resources.js +148 -0
- package/dist/storage/resources.js.map +1 -0
- package/dist/tools/integrate.d.ts +1 -0
- package/dist/tools/integrate.d.ts.map +1 -1
- package/dist/tools/integrate.js +24 -40
- package/dist/tools/integrate.js.map +1 -1
- package/dist/tools/verify.d.ts +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +30 -6
- package/dist/tools/verify.js.map +1 -1
- package/docs/compatibility/baseline.json +1 -1
- package/docs/compatibility/supported-surfaces.json +6 -0
- package/docs/releases/0.4.10.md +13 -0
- package/docs/releases/0.5.0.md +18 -0
- package/docs/releases/support-matrix.md +3 -0
- package/package.json +2 -1
package/dist/cli/omb.js
CHANGED
|
@@ -4,6 +4,7 @@ import { parseOmbCommand } from "./omb-invocation.js";
|
|
|
4
4
|
import { runDashboardCommand } from "./omb-dashboard.js";
|
|
5
5
|
import { runDaemonCommand } from "./omb-daemon.js";
|
|
6
6
|
import { launchOmb, shouldLaunchOmbInTmux } from "../omp/tmux.js";
|
|
7
|
+
import { readTrayStatus, runTrayForeground, startTray, stopTray } from "../omp/tray.js";
|
|
7
8
|
try {
|
|
8
9
|
const args = process.argv.slice(2);
|
|
9
10
|
if (args[0] === "agents" || args[0] === "hub") {
|
|
@@ -15,6 +16,26 @@ try {
|
|
|
15
16
|
else if (args[0] === "dashboard") {
|
|
16
17
|
process.exitCode = await runDashboardCommand(args.slice(1), process.env);
|
|
17
18
|
}
|
|
19
|
+
else if (args[0] === "tray") {
|
|
20
|
+
const sub = args[1] ?? "start";
|
|
21
|
+
if (sub === "run")
|
|
22
|
+
process.exitCode = await runTrayForeground(process.env);
|
|
23
|
+
else if (sub === "start") {
|
|
24
|
+
const info = await startTray(process.env);
|
|
25
|
+
process.stdout.write(info ? `omb tray started — pid ${info.pid}\n` : "omb tray is unavailable on this host\n");
|
|
26
|
+
}
|
|
27
|
+
else if (sub === "stop") {
|
|
28
|
+
process.stdout.write((await stopTray(process.env)) ? "omb tray stopped\n" : "omb tray is not running\n");
|
|
29
|
+
}
|
|
30
|
+
else if (sub === "status") {
|
|
31
|
+
const status = readTrayStatus(process.env);
|
|
32
|
+
process.stdout.write(`omb tray ${status.state}${status.tray ? ` — pid ${status.tray.pid}` : ""}\n`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
process.stderr.write("omb tray: unknown subcommand (use start, stop, status)\n");
|
|
36
|
+
process.exitCode = 2;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
18
39
|
else {
|
|
19
40
|
const invocation = parseOmbCommand(args);
|
|
20
41
|
const returnToHub = shouldLaunchOmbInTmux({
|
package/dist/cli/omb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omb.js","sourceRoot":"","sources":["../../src/cli/omb.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"omb.js","sourceRoot":"","sources":["../../src/cli/omb.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExF,IAAI,CAAC;IACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACnF,CAAC;SAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;QAC/B,IAAI,GAAG,KAAK,KAAK;YAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACtE,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC;QACjH,CAAC;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;QAC3G,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,qBAAqB,CAAC;YACxC,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI;YACxC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;SAC3C,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QACzG,IAAI,WAAW;YAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CheckSpec, CriterionSpec, ReviewSpec, StateSnapshot, WorkItem } from "./types.js";
|
|
2
|
+
export type AcceptanceBlockerCode = "CANDIDATE_CHANGED" | "CHECK_SPEC_CHANGED" | "LATEST_ATTEMPT_FAILED" | "ATTEMPT_STILL_RUNNING" | "REQUIRED_REVIEW_MISSING" | "CANCEL_FENCE_ACTIVE" | "NATIVE_OUTCOME_UNKNOWN" | "BASE_CHANGED" | "OWNER_CHANGED" | "MISSING_CHECK" | "WORK_NOT_ACCEPTED" | "DEPENDENCY_NOT_READY";
|
|
3
|
+
export interface AcceptanceBlocker {
|
|
4
|
+
code: AcceptanceBlockerCode;
|
|
5
|
+
message: string;
|
|
6
|
+
criterionId?: string;
|
|
7
|
+
checkId?: string;
|
|
8
|
+
evidenceIds?: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface AcceptanceRequirements {
|
|
11
|
+
requiredChecks: Array<string | CheckSpec>;
|
|
12
|
+
targetDigest: string;
|
|
13
|
+
candidateId?: string;
|
|
14
|
+
candidateTree?: string;
|
|
15
|
+
criteria?: CriterionSpec[];
|
|
16
|
+
review?: ReviewSpec;
|
|
17
|
+
ownedWork?: WorkItem[];
|
|
18
|
+
}
|
|
19
|
+
export interface AcceptanceDecision {
|
|
20
|
+
eligible: boolean;
|
|
21
|
+
coveredCriterionIds: string[];
|
|
22
|
+
selectedEvidenceIds: string[];
|
|
23
|
+
missingEvidence: string[];
|
|
24
|
+
staleEvidence: string[];
|
|
25
|
+
supersededEvidence: string[];
|
|
26
|
+
blockers: AcceptanceBlocker[];
|
|
27
|
+
}
|
|
28
|
+
export declare function canonicalSpecHash(value: unknown): string;
|
|
29
|
+
export declare function freezeCheckSpec(spec: Omit<CheckSpec, "evaluatorHash"> & {
|
|
30
|
+
evaluatorHash?: string;
|
|
31
|
+
}): CheckSpec;
|
|
32
|
+
export declare function evaluateAcceptance(state: StateSnapshot, requirements: AcceptanceRequirements): AcceptanceDecision;
|
|
33
|
+
//# sourceMappingURL=acceptance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../../src/core/acceptance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAkB,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhH,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AACtT,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE;AACpJ,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOxD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI9G;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,GAAG,kBAAkB,CAsCjH"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { ContractError } from "./errors.js";
|
|
3
|
+
export function canonicalSpecHash(value) {
|
|
4
|
+
const normalize = (input) => {
|
|
5
|
+
if (Array.isArray(input))
|
|
6
|
+
return input.map(normalize);
|
|
7
|
+
if (input && typeof input === "object")
|
|
8
|
+
return Object.fromEntries(Object.entries(input).filter(([, item]) => item !== undefined).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, normalize(item)]));
|
|
9
|
+
return input;
|
|
10
|
+
};
|
|
11
|
+
return createHash("sha256").update(JSON.stringify(normalize(value))).digest("hex");
|
|
12
|
+
}
|
|
13
|
+
export function freezeCheckSpec(spec) {
|
|
14
|
+
const serialized = JSON.stringify(spec);
|
|
15
|
+
if (/(?:authorization|api[-_]?key|access[-_]?key|token|secret|password)\s*[:=]/i.test(serialized))
|
|
16
|
+
throw new ContractError("CheckSpec contains a secret-shaped literal");
|
|
17
|
+
return Object.freeze({ ...spec, evaluatorHash: spec.evaluatorHash ?? canonicalSpecHash({ runner: spec.runner, executable: spec.executable, argumentTemplate: spec.argumentTemplate, cwdRule: spec.cwdRule, inputDigests: spec.inputDigests, environmentPolicy: spec.environmentPolicy, limits: spec.limits, expected: spec.expected, outputPolicy: spec.outputPolicy }) });
|
|
18
|
+
}
|
|
19
|
+
function candidateMatch(record, requirements) {
|
|
20
|
+
return record.targetDigest === requirements.targetDigest
|
|
21
|
+
&& (!requirements.candidateId || record.candidateId === requirements.candidateId)
|
|
22
|
+
&& (!requirements.candidateTree || record.candidateTree === requirements.candidateTree);
|
|
23
|
+
}
|
|
24
|
+
export function evaluateAcceptance(state, requirements) {
|
|
25
|
+
const blockers = [];
|
|
26
|
+
const selectedEvidenceIds = [];
|
|
27
|
+
const missingEvidence = [];
|
|
28
|
+
const staleEvidence = [];
|
|
29
|
+
const supersededEvidence = [];
|
|
30
|
+
const coveredCriterionIds = new Set();
|
|
31
|
+
const checks = requirements.requiredChecks.map(check => typeof check === "string" ? { id: check, spec: undefined } : { id: check.id, spec: check });
|
|
32
|
+
for (const check of checks) {
|
|
33
|
+
const lineage = state.evidence.filter(record => record.checkId === check.id);
|
|
34
|
+
const matching = lineage.filter(record => candidateMatch(record, requirements) && (!check.spec || record.evaluatorHash === check.spec.evaluatorHash) && (!check.spec || record.checkSpecHash === canonicalSpecHash(check.spec)));
|
|
35
|
+
const sorted = [...matching].sort((a, b) => (a.attemptGeneration ?? 0) - (b.attemptGeneration ?? 0) || a.recordedAt.localeCompare(b.recordedAt));
|
|
36
|
+
const latest = sorted.at(-1);
|
|
37
|
+
if (!latest) {
|
|
38
|
+
const wrongCandidate = lineage.some(record => record.result === "passed" && record.targetDigest === requirements.targetDigest);
|
|
39
|
+
blockers.push({ code: wrongCandidate ? "CANDIDATE_CHANGED" : "MISSING_CHECK", message: wrongCandidate ? `Check ${check.id} passed for a different candidate` : `No evidence satisfies check ${check.id}`, checkId: check.id });
|
|
40
|
+
missingEvidence.push(check.id);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
for (const record of sorted.slice(0, -1))
|
|
44
|
+
supersededEvidence.push(record.id);
|
|
45
|
+
if (latest.stale || latest.result === "unknown") {
|
|
46
|
+
staleEvidence.push(latest.id);
|
|
47
|
+
blockers.push({ code: "CANDIDATE_CHANGED", message: `Latest evidence for ${check.id} is stale or unknown`, checkId: check.id, evidenceIds: [latest.id] });
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (latest.result === "cancelled" || latest.result === "blocked") {
|
|
51
|
+
blockers.push({ code: "LATEST_ATTEMPT_FAILED", message: `Latest attempt for ${check.id} did not pass`, checkId: check.id, evidenceIds: [latest.id] });
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (latest.result !== "passed") {
|
|
55
|
+
blockers.push({ code: "LATEST_ATTEMPT_FAILED", message: `Latest attempt for ${check.id} failed`, checkId: check.id, evidenceIds: [latest.id] });
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
selectedEvidenceIds.push(latest.id);
|
|
59
|
+
for (const criterion of requirements.criteria ?? [])
|
|
60
|
+
if (criterion.requiredEvidenceClasses.includes(check.id) || criterion.id === check.id)
|
|
61
|
+
coveredCriterionIds.add(criterion.id);
|
|
62
|
+
}
|
|
63
|
+
if (requirements.review?.required) {
|
|
64
|
+
const review = state.evidence.filter(record => record.type === "review" && candidateMatch(record, requirements)).sort((a, b) => (a.attemptGeneration ?? 0) - (b.attemptGeneration ?? 0) || a.recordedAt.localeCompare(b.recordedAt)).at(-1);
|
|
65
|
+
if (!review || review.result !== "passed" || review.stale)
|
|
66
|
+
blockers.push({ code: "REQUIRED_REVIEW_MISSING", message: `Required review ${requirements.review.id} is missing or not passing` });
|
|
67
|
+
else
|
|
68
|
+
selectedEvidenceIds.push(review.id);
|
|
69
|
+
}
|
|
70
|
+
for (const item of requirements.ownedWork ?? [])
|
|
71
|
+
if (!["accepted", "cancelled"].includes(item.lifecycle))
|
|
72
|
+
blockers.push({ code: "WORK_NOT_ACCEPTED", message: `Work item ${item.id} is ${item.lifecycle}` });
|
|
73
|
+
for (const observation of state.observations)
|
|
74
|
+
if (["started", "running", "unknown-outcome"].includes(observation.status))
|
|
75
|
+
blockers.push({ code: "NATIVE_OUTCOME_UNKNOWN", message: `Native dispatch ${observation.dispatchId} is unresolved` });
|
|
76
|
+
for (const integration of state.integrations)
|
|
77
|
+
if (integration.outcome === "unknown-outcome")
|
|
78
|
+
blockers.push({ code: "NATIVE_OUTCOME_UNKNOWN", message: `Integration ${integration.id} has an unknown outcome` });
|
|
79
|
+
if (state.run?.cancellation.requested)
|
|
80
|
+
blockers.push({ code: "CANCEL_FENCE_ACTIVE", message: "Workflow cancellation has been acknowledged" });
|
|
81
|
+
const criteria = (requirements.criteria ?? []).filter(criterion => criterion.applicable);
|
|
82
|
+
for (const criterion of criteria)
|
|
83
|
+
if (criterion.kind !== "operator-judgment" && !coveredCriterionIds.has(criterion.id))
|
|
84
|
+
blockers.push({ code: "MISSING_CHECK", message: `Criterion ${criterion.id} has no covered evidence`, criterionId: criterion.id });
|
|
85
|
+
return { eligible: blockers.length === 0 && checks.length > 0, coveredCriterionIds: [...coveredCriterionIds], selectedEvidenceIds, missingEvidence, staleEvidence, supersededEvidence, blockers };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=acceptance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../src/core/acceptance.ts"],"names":[],"mappings":"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"}
|
package/dist/core/evidence.d.ts
CHANGED
|
@@ -2,5 +2,10 @@ import type { EvidenceRecord } from "./types.js";
|
|
|
2
2
|
export declare const digest: (value: string | Uint8Array) => string;
|
|
3
3
|
export declare function createEvidence(input: Omit<EvidenceRecord, "recordedAt" | "stale">): EvidenceRecord;
|
|
4
4
|
export declare function invalidateEvidence(records: EvidenceRecord[], targetDigest: string, changedInputs?: string[]): EvidenceRecord[];
|
|
5
|
-
export declare function requireFreshEvidence(records: EvidenceRecord[], ids: string[], targetDigest: string
|
|
5
|
+
export declare function requireFreshEvidence(records: EvidenceRecord[], ids: string[], targetDigest: string, identity?: {
|
|
6
|
+
candidateId?: string;
|
|
7
|
+
candidateTree?: string;
|
|
8
|
+
checkSpecHash?: string;
|
|
9
|
+
evaluatorHash?: string;
|
|
10
|
+
}): EvidenceRecord[];
|
|
6
11
|
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,MAAM,UAAW,MAAM,GAAG,UAAU,WAAqD,CAAC;AAEvG,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,cAAc,CAGlG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,cAAc,EAAE,CAOlI;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,MAAM,UAAW,MAAM,GAAG,UAAU,WAAqD,CAAC;AAEvG,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,cAAc,CAGlG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,cAAc,EAAE,CAOlI;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,cAAc,EAAE,CAYtO"}
|
package/dist/core/evidence.js
CHANGED
|
@@ -16,14 +16,18 @@ export function invalidateEvidence(records, targetDigest, changedInputs = []) {
|
|
|
16
16
|
return record;
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
export function requireFreshEvidence(records, ids, targetDigest) {
|
|
19
|
+
export function requireFreshEvidence(records, ids, targetDigest, identity = {}) {
|
|
20
20
|
if (ids.length === 0)
|
|
21
21
|
throw new StaleEvidenceError("unknown", "required evidence is missing");
|
|
22
22
|
const found = ids.map(id => (id.trim() ? records.find(record => record.id === id) : undefined));
|
|
23
23
|
const missingIndex = found.findIndex(record => !record);
|
|
24
24
|
if (missingIndex !== -1)
|
|
25
25
|
throw new StaleEvidenceError(ids[missingIndex] || "unknown", "required evidence is missing");
|
|
26
|
-
const stale = found.find(record => record.stale || record.targetDigest !== targetDigest || record.result !== "passed"
|
|
26
|
+
const stale = found.find(record => record.stale || record.targetDigest !== targetDigest || record.result !== "passed"
|
|
27
|
+
|| (identity.candidateId !== undefined && record.candidateId !== identity.candidateId)
|
|
28
|
+
|| (identity.candidateTree !== undefined && record.candidateTree !== identity.candidateTree)
|
|
29
|
+
|| (identity.checkSpecHash !== undefined && record.checkSpecHash !== identity.checkSpecHash)
|
|
30
|
+
|| (identity.evaluatorHash !== undefined && record.evaluatorHash !== identity.evaluatorHash));
|
|
27
31
|
if (stale)
|
|
28
32
|
throw new StaleEvidenceError(stale.id, "not a fresh passing record for the target tree");
|
|
29
33
|
return found;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvG,MAAM,UAAU,cAAc,CAAC,KAAmD;IAChF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,YAAoB,EAAE,aAAa,GAAa,EAAE;IAC9G,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC1B,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,MAAM,CAAC,YAAY,OAAO,YAAY,EAAE,EAAE,CAAC;QAC1J,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/G,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,GAAa,EAAE,YAAoB;
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvG,MAAM,UAAU,cAAc,CAAC,KAAmD;IAChF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,YAAoB,EAAE,aAAa,GAAa,EAAE;IAC9G,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC1B,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,MAAM,CAAC,YAAY,OAAO,YAAY,EAAE,EAAE,CAAC;QAC1J,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/G,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,GAAa,EAAE,YAAoB,EAAE,QAAQ,GAAqG,EAAE;IAClN,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,YAAY,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,8BAA8B,CAAC,CAAC;IACtH,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,IAAI,MAAO,CAAC,YAAY,KAAK,YAAY,IAAI,MAAO,CAAC,MAAM,KAAK,QAAQ;WACnH,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,MAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,CAAC;WACpF,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,MAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC;WAC1F,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,MAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC;WAC1F,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,MAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACjG,IAAI,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,KAAM,CAAC,EAAE,EAAE,gDAAgD,CAAC,CAAC;IACrG,OAAO,KAAyB,CAAC;AACnC,CAAC"}
|
package/dist/core/recovery.js
CHANGED
|
@@ -2,9 +2,9 @@ import { ContractError, OwnershipError } from "./errors.js";
|
|
|
2
2
|
export function emptySnapshot() { return { revision: 0, dispatches: [], observations: [], evidence: [], integrations: [], decisions: [], lastSequence: 0 }; }
|
|
3
3
|
export function replay(entries) {
|
|
4
4
|
const state = emptySnapshot();
|
|
5
|
-
for (const entry of entries
|
|
6
|
-
if (entry.sequence
|
|
7
|
-
|
|
5
|
+
for (const entry of entries) {
|
|
6
|
+
if (entry.sequence !== state.lastSequence + 1)
|
|
7
|
+
throw new ContractError("Journal sequence is not contiguous", { expected: state.lastSequence + 1, actual: entry.sequence });
|
|
8
8
|
const event = entry.event;
|
|
9
9
|
if (event.type === "run.created") {
|
|
10
10
|
state.run = event.run;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5D,MAAM,UAAU,aAAa,KAAoB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5K,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC5C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiBpI,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAGnI;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG,WAAW,CAI7H;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKzH;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAG/M;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKnK"}
|
package/dist/core/transitions.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
2
2
|
import { InvalidTransitionError, ContractError } from "./errors.js";
|
|
3
3
|
import { classifyRoute, objectiveHash } from "./policies.js";
|
|
4
|
+
import { evaluateAcceptance } from "./acceptance.js";
|
|
4
5
|
const now = () => new Date().toISOString();
|
|
5
6
|
const phaseTransitions = {
|
|
6
7
|
created: ["orienting", "planning", "researching", "executing", "blocked", "cancelled"],
|
|
@@ -44,9 +45,8 @@ export function acceptWorkItem(run, workItemId) {
|
|
|
44
45
|
return { ...run, revision: run.revision + 1, workItems: run.workItems.map(candidate => candidate.id === item.id ? accepted : candidate), updatedAt: now() };
|
|
45
46
|
}
|
|
46
47
|
export function canComplete(run, requiredChecks, evidence, ownedWork, targetDigest) {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
return requiredChecks.length > 0 && run.phase !== "cancelled" && run.phase !== "failed" && requiredChecks.every(id => id.trim() && checks.has(id)) && ownedWork.every(item => ["accepted", "cancelled"].includes(item.lifecycle));
|
|
48
|
+
const normalized = evidence.map((item, index) => ({ ...item, id: `legacy-evidence-${index}`, runId: run.runId, type: "test", inputDigests: {}, artifactHashes: [], provenance: { producer: "legacy", observedAt: "unknown" }, recordedAt: String(index) }));
|
|
49
|
+
return evaluateAcceptance({ revision: run.revision, run, dispatches: [], observations: [], evidence: normalized, integrations: [], decisions: [], lastSequence: 0 }, { requiredChecks, targetDigest, ownedWork }).eligible && run.phase !== "failed";
|
|
50
50
|
}
|
|
51
51
|
export function completeRun(run, requiredChecks, evidence, targetDigest) {
|
|
52
52
|
if (!canComplete(run, requiredChecks, evidence, run.workItems, targetDigest))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -16,6 +16,45 @@ export interface ObjectiveContract {
|
|
|
16
16
|
verificationPlan: string[];
|
|
17
17
|
stopConditions: string[];
|
|
18
18
|
userRestrictions: string[];
|
|
19
|
+
revision?: number;
|
|
20
|
+
criteria?: CriterionSpec[];
|
|
21
|
+
checkSpecs?: CheckSpec[];
|
|
22
|
+
reviewSpec?: ReviewSpec;
|
|
23
|
+
policyRevision?: string;
|
|
24
|
+
authorizationRef?: string;
|
|
25
|
+
}
|
|
26
|
+
export type CriterionKind = "deterministic" | "review" | "operator-judgment";
|
|
27
|
+
export interface CriterionSpec {
|
|
28
|
+
id: string;
|
|
29
|
+
revision: number;
|
|
30
|
+
description: string;
|
|
31
|
+
kind: CriterionKind;
|
|
32
|
+
requiredEvidenceClasses: string[];
|
|
33
|
+
applicable: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface CheckSpec {
|
|
36
|
+
id: string;
|
|
37
|
+
revision: number;
|
|
38
|
+
runner: "argv" | "shell" | "native";
|
|
39
|
+
executable?: string;
|
|
40
|
+
argumentTemplate: string[];
|
|
41
|
+
cwdRule: "repository-root" | "candidate-workspace" | "explicit-registered";
|
|
42
|
+
inputDigests: Record<string, string>;
|
|
43
|
+
environmentPolicy: string;
|
|
44
|
+
limits: {
|
|
45
|
+
timeoutMs: number;
|
|
46
|
+
outputBytes: number;
|
|
47
|
+
};
|
|
48
|
+
expected: "zero-exit" | "structured-pass" | "operator-review";
|
|
49
|
+
outputPolicy: "sanitized-tail" | "artifact-reference" | "none";
|
|
50
|
+
evaluatorHash: string;
|
|
51
|
+
}
|
|
52
|
+
export interface ReviewSpec {
|
|
53
|
+
id: string;
|
|
54
|
+
revision: number;
|
|
55
|
+
criteria: string[];
|
|
56
|
+
required: boolean;
|
|
57
|
+
severityPolicy: "block-high" | "block-any" | "advisory";
|
|
19
58
|
}
|
|
20
59
|
export interface WorkItem {
|
|
21
60
|
id: string;
|
|
@@ -101,6 +140,12 @@ export interface EvidenceRecord {
|
|
|
101
140
|
recordedAt: string;
|
|
102
141
|
stale: boolean;
|
|
103
142
|
staleReason?: string;
|
|
143
|
+
candidateId?: string;
|
|
144
|
+
candidateTree?: string;
|
|
145
|
+
checkSpecHash?: string;
|
|
146
|
+
evaluatorHash?: string;
|
|
147
|
+
executionFingerprint?: string;
|
|
148
|
+
attemptGeneration?: number;
|
|
104
149
|
}
|
|
105
150
|
export interface IntegrationAttempt {
|
|
106
151
|
id: string;
|
|
@@ -115,6 +160,9 @@ export interface IntegrationAttempt {
|
|
|
115
160
|
resultingDigest?: string;
|
|
116
161
|
recovery?: string;
|
|
117
162
|
attemptedAt: string;
|
|
163
|
+
candidateId?: string;
|
|
164
|
+
baseTree?: string;
|
|
165
|
+
candidateTree?: string;
|
|
118
166
|
}
|
|
119
167
|
export interface DecisionRecord {
|
|
120
168
|
id: string;
|
|
@@ -175,6 +223,9 @@ export interface JournalEntry {
|
|
|
175
223
|
at: string;
|
|
176
224
|
idempotencyKey: string;
|
|
177
225
|
event: JournalEvent;
|
|
226
|
+
schema?: string;
|
|
227
|
+
previousHash?: string;
|
|
228
|
+
checksum?: string;
|
|
178
229
|
}
|
|
179
230
|
export interface StateSnapshot {
|
|
180
231
|
revision: number;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,aAAa,GACrB,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,GAC9D,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GACvD,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;AACpH,MAAM,MAAM,WAAW,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAChG,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnI,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/extension.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|
package/dist/extension.js
CHANGED
|
@@ -8,13 +8,17 @@ import { integrate } from "./tools/integrate.js";
|
|
|
8
8
|
import { result } from "./tools/result.js";
|
|
9
9
|
import { runVerification } from "./tools/verify.js";
|
|
10
10
|
import { runWorkflow } from "./tools/workflow.js";
|
|
11
|
+
import { analyzeRecipe } from "./services/recipes.js";
|
|
12
|
+
import { inspectEvidence } from "./services/inspector.js";
|
|
13
|
+
import { projectWorkflow } from "./services/projection.js";
|
|
14
|
+
import { capabilityReport } from "./omp/capabilities.js";
|
|
11
15
|
import { repositoryIdentity, statePath, workingTreeDigest } from "./storage/repository-identity.js";
|
|
12
16
|
import { Journal } from "./storage/journal.js";
|
|
13
17
|
import { nativeSessionReference } from "./omp/context.js";
|
|
14
18
|
import { findOnPath } from "./omp/tmux.js";
|
|
15
19
|
import { bindSession } from "./omp/lifecycle.js";
|
|
16
20
|
import { AUTONOMOUS_SETTINGS } from "./omp/autonomous-settings.js";
|
|
17
|
-
import { BIZAR_MODEL_ROLE_AGENT_PROMPT, BIZAR_MODEL_ROLES, BIZAR_MODEL_TAGS, planBizarModelRoles } from "./omp/model-role-assignment.js";
|
|
21
|
+
import { applyRoleAssignmentPlan, BIZAR_MODEL_ROLE_AGENT_PROMPT, BIZAR_MODEL_ROLES, BIZAR_MODEL_TAGS, planBizarModelRoles } from "./omp/model-role-assignment.js";
|
|
18
22
|
const objectiveSchema = (z) => z.object({
|
|
19
23
|
objective: z.string(),
|
|
20
24
|
nonGoals: z.array(z.string()),
|
|
@@ -131,7 +135,7 @@ function ensureBizarAutonomousSettings(pi) {
|
|
|
131
135
|
return [];
|
|
132
136
|
const changed = [];
|
|
133
137
|
for (const [key, value] of Object.entries(AUTONOMOUS_SETTINGS)) {
|
|
134
|
-
if (
|
|
138
|
+
if (settings.get(key) !== undefined)
|
|
135
139
|
continue;
|
|
136
140
|
settings.set(key, value);
|
|
137
141
|
changed.push(key);
|
|
@@ -173,9 +177,9 @@ async function runModelRoleCommand(pi, args, ctx) {
|
|
|
173
177
|
if (plan.assignments.length === 0)
|
|
174
178
|
throw new ContractError("Bizar model mapping skipped: OMP returned no eligible catalog models.");
|
|
175
179
|
const currentRoles = recordOf(settings.get("modelRoles"));
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
180
|
+
const expectedRoles = JSON.stringify(currentRoles);
|
|
181
|
+
const latestRoles = recordOf(settings.get("modelRoles"));
|
|
182
|
+
const nextRoles = applyRoleAssignmentPlan(latestRoles, plan, expectedRoles);
|
|
179
183
|
settings.set("modelRoles", nextRoles);
|
|
180
184
|
const unresolved = plan.assignments.filter(({ role, selector }) => !ctx.models?.resolve?.(selector));
|
|
181
185
|
if (unresolved.length > 0) {
|
|
@@ -314,6 +318,40 @@ export default function bizarExtension(pi) {
|
|
|
314
318
|
}
|
|
315
319
|
},
|
|
316
320
|
});
|
|
321
|
+
pi.registerTool({
|
|
322
|
+
name: "bizar_recipe_preview", label: "Bizar Recipe Preview", description: "Suggest an inspectable objective recipe without executing repository-provided commands.",
|
|
323
|
+
parameters: pi.zod.object({ objective: pi.zod.string() }),
|
|
324
|
+
async execute(_id, raw, _signal, _onUpdate, ctx) {
|
|
325
|
+
try {
|
|
326
|
+
const p = paramsOf(raw);
|
|
327
|
+
return result(analyzeRecipe(ctx.cwd ?? process.cwd(), objectiveOf(p.objective)));
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
return failure(error);
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
pi.registerTool({
|
|
335
|
+
name: "bizar_inspect", label: "Bizar Inspector", description: "Explain acceptance blockers and evidence lineage using the same decision function as completion.",
|
|
336
|
+
parameters: pi.zod.object({ requiredChecks: pi.zod.array(pi.zod.string()), targetDigest: pi.zod.string() }),
|
|
337
|
+
async execute(_id, raw, _signal, _onUpdate, ctx) {
|
|
338
|
+
try {
|
|
339
|
+
const active = currentBinding(ctx);
|
|
340
|
+
const p = paramsOf(raw);
|
|
341
|
+
const checks = Array.isArray(p.requiredChecks) ? p.requiredChecks.map(String) : [];
|
|
342
|
+
const target = String(p.targetDigest);
|
|
343
|
+
return result({ inspection: inspectEvidence(active.journal.snapshot(), { requiredChecks: checks, targetDigest: target }), projection: projectWorkflow(active.journal.snapshot(), { requiredChecks: checks, targetDigest: target }) });
|
|
344
|
+
}
|
|
345
|
+
catch (error) {
|
|
346
|
+
return failure(error);
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
pi.registerTool({
|
|
351
|
+
name: "bizar_capabilities", label: "Bizar Native Capabilities", description: "Report native qualification honestly; registration is not end-to-end managed qualification.",
|
|
352
|
+
parameters: pi.zod.object({}),
|
|
353
|
+
async execute() { return result(capabilityReport({ extensionLoaded: true })); },
|
|
354
|
+
});
|
|
317
355
|
pi.registerCommand("bizar", {
|
|
318
356
|
description: "Bizar native workflow and model-role management",
|
|
319
357
|
handler: async (args, ctx) => {
|
|
@@ -333,6 +371,10 @@ export default function bizarExtension(pi) {
|
|
|
333
371
|
value = runWorkflow(active, "cancel", { reason: words.join(" ") || "operator cancellation" });
|
|
334
372
|
else if (command === "evidence")
|
|
335
373
|
value = listEvidence(active);
|
|
374
|
+
else if (command === "recipe")
|
|
375
|
+
value = analyzeRecipe(active.cwd, objectiveOf(words.join(" ")));
|
|
376
|
+
else if (command === "inspect")
|
|
377
|
+
value = projectWorkflow(active.journal.snapshot(), { requiredChecks: active.journal.snapshot().run?.objective.verificationPlan ?? [], targetDigest: workingTreeDigest(active.cwd) });
|
|
336
378
|
else
|
|
337
379
|
throw new ContractError(`Unknown /bizar command: ${command}`);
|
|
338
380
|
}
|