@zelari/core 2.5.0 → 2.6.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.
Files changed (64) hide show
  1. package/dist/core/AgentHarness.d.ts +17 -0
  2. package/dist/core/AgentHarness.d.ts.map +1 -1
  3. package/dist/core/AgentHarness.js +43 -0
  4. package/dist/core/AgentHarness.js.map +1 -1
  5. package/dist/mission/budgetContinuation.d.ts +36 -0
  6. package/dist/mission/budgetContinuation.d.ts.map +1 -0
  7. package/dist/mission/budgetContinuation.js +66 -0
  8. package/dist/mission/budgetContinuation.js.map +1 -0
  9. package/dist/runtime/harnessManifest.d.ts +91 -0
  10. package/dist/runtime/harnessManifest.d.ts.map +1 -0
  11. package/dist/runtime/harnessManifest.js +113 -0
  12. package/dist/runtime/harnessManifest.js.map +1 -0
  13. package/dist/runtime/index.d.ts +4 -1
  14. package/dist/runtime/index.d.ts.map +1 -1
  15. package/dist/runtime/index.js +4 -1
  16. package/dist/runtime/index.js.map +1 -1
  17. package/dist/runtime/profiles.d.ts +7 -0
  18. package/dist/runtime/profiles.d.ts.map +1 -1
  19. package/dist/runtime/profiles.js +10 -0
  20. package/dist/runtime/profiles.js.map +1 -1
  21. package/dist/runtime/resourceBudget.d.ts +69 -0
  22. package/dist/runtime/resourceBudget.d.ts.map +1 -0
  23. package/dist/runtime/resourceBudget.js +98 -0
  24. package/dist/runtime/resourceBudget.js.map +1 -0
  25. package/dist/runtime/resourcePolicy.d.ts +56 -0
  26. package/dist/runtime/resourcePolicy.d.ts.map +1 -0
  27. package/dist/runtime/resourcePolicy.js +77 -0
  28. package/dist/runtime/resourcePolicy.js.map +1 -0
  29. package/dist/session/compactionState.d.ts.map +1 -1
  30. package/dist/session/compactionState.js +20 -2
  31. package/dist/session/compactionState.js.map +1 -1
  32. package/dist/session/index.d.ts +1 -0
  33. package/dist/session/index.d.ts.map +1 -1
  34. package/dist/session/index.js +1 -0
  35. package/dist/session/index.js.map +1 -1
  36. package/dist/session/invariants.d.ts +5 -0
  37. package/dist/session/invariants.d.ts.map +1 -1
  38. package/dist/session/invariants.js +58 -0
  39. package/dist/session/invariants.js.map +1 -1
  40. package/dist/session/modelSurface.d.ts +19 -1
  41. package/dist/session/modelSurface.d.ts.map +1 -1
  42. package/dist/session/modelSurface.js +61 -1
  43. package/dist/session/modelSurface.js.map +1 -1
  44. package/dist/session/taskContract.d.ts +104 -0
  45. package/dist/session/taskContract.d.ts.map +1 -0
  46. package/dist/session/taskContract.js +129 -0
  47. package/dist/session/taskContract.js.map +1 -0
  48. package/dist/session/types.d.ts +7 -1
  49. package/dist/session/types.d.ts.map +1 -1
  50. package/dist/session/types.js +15 -0
  51. package/dist/session/types.js.map +1 -1
  52. package/dist/verification/index.d.ts +1 -0
  53. package/dist/verification/index.d.ts.map +1 -1
  54. package/dist/verification/index.js +1 -0
  55. package/dist/verification/index.js.map +1 -1
  56. package/dist/verification/metrics.d.ts +20 -0
  57. package/dist/verification/metrics.d.ts.map +1 -1
  58. package/dist/verification/metrics.js +18 -0
  59. package/dist/verification/metrics.js.map +1 -1
  60. package/dist/verification/resourceReserveGate.d.ts +39 -0
  61. package/dist/verification/resourceReserveGate.d.ts.map +1 -0
  62. package/dist/verification/resourceReserveGate.js +56 -0
  63. package/dist/verification/resourceReserveGate.js.map +1 -0
  64. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -10,4 +10,5 @@ export * from './criteriaPack.v1.js';
10
10
  export * from './metrics.js';
11
11
  export * from './verifier.js';
12
12
  export * from './scopeDiscipline.js';
13
+ export * from './resourceReserveGate.js';
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -23,4 +23,24 @@ export declare function computeFalseDoneRate(samples: readonly TaskOutcomeSample
23
23
  export declare function verifiedSolveRate(samples: readonly TaskOutcomeSample[]): number;
24
24
  /** Verification cost ratio; null when total time is unknown/zero. */
25
25
  export declare function verificationCostRatio(verificationMs: number, totalMs: number): number | null;
26
+ /**
27
+ * 2.6 Track B (doc section 15): unified cost-per-verified-solve metrics.
28
+ * Core-side aggregation over cost-bearing samples — the full RunCost type
29
+ * lives in tools/eval/cost.ts (eval tooling boundary); here we accept the
30
+ * minimal cost shape so the core stays dependency-free.
31
+ */
32
+ export interface CostedTaskSample extends TaskOutcomeSample {
33
+ modelCostUsd: number;
34
+ wallMs: number;
35
+ toolCalls: number;
36
+ }
37
+ export interface CostPerVerifiedSolveStats {
38
+ verifiedSolves: number;
39
+ totalCostUsd: number;
40
+ costPerVerifiedSolve: number | null;
41
+ wallMsPerVerifiedSolve: number | null;
42
+ toolCallsPerVerifiedSolve: number | null;
43
+ }
44
+ /** North-star aggregation: quality (verified) over quantity (cost). */
45
+ export declare function costPerVerifiedSolve(samples: readonly CostedTaskSample[]): CostPerVerifiedSolveStats;
26
46
  //# sourceMappingURL=metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/verification/metrics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,cAAc,CAQ1F;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,CAG/E;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5F"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/verification/metrics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,cAAc,CAQ1F;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,CAG/E;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5F;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,GAAG,yBAAyB,CAapG"}
@@ -26,4 +26,22 @@ export function verificationCostRatio(verificationMs, totalMs) {
26
26
  return null;
27
27
  return verificationMs / totalMs;
28
28
  }
29
+ /** North-star aggregation: quality (verified) over quantity (cost). */
30
+ export function costPerVerifiedSolve(samples) {
31
+ const solved = samples.filter((s) => s.verified === true);
32
+ const totalCostUsd = samples.reduce((sum, s) => sum + s.modelCostUsd, 0);
33
+ const totalWallMs = samples.reduce((sum, s) => sum + s.wallMs, 0);
34
+ const totalToolCalls = samples.reduce((sum, s) => sum + s.toolCalls, 0);
35
+ const n = solved.length;
36
+ return {
37
+ verifiedSolves: n,
38
+ totalCostUsd: round(totalCostUsd),
39
+ costPerVerifiedSolve: n > 0 ? round(totalCostUsd / n) : null,
40
+ wallMsPerVerifiedSolve: n > 0 ? Math.round(totalWallMs / n) : null,
41
+ toolCallsPerVerifiedSolve: n > 0 ? round(totalToolCalls / n) : null,
42
+ };
43
+ }
44
+ function round(v) {
45
+ return Math.round(v * 1e6) / 1e6;
46
+ }
29
47
  //# sourceMappingURL=metrics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/verification/metrics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,OAAqC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IAC7D,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,IAAI,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;KACnE,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,OAAqC;IACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5E,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,cAAsB,EAAE,OAAe;IAC3E,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,cAAc,GAAG,OAAO,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/verification/metrics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,OAAqC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IAC7D,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,IAAI,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;KACnE,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,OAAqC;IACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5E,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,cAAsB,EAAE,OAAe;IAC3E,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,cAAc,GAAG,OAAO,CAAC;AAClC,CAAC;AAsBD,uEAAuE;AACvE,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,OAAO;QACL,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;QACjC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC5D,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAClE,yBAAyB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * verification/resourceReserveGate.ts — resource-aware completion interaction
3
+ * (2.6 Track B, doc §11.5, ADR-0023 untouched).
4
+ *
5
+ * The budget NEVER decides PASS. It only decides whether the required
6
+ * evidence is still PRODUCIBLE:
7
+ *
8
+ * verdict === PASS → PASS (deterministic PASS ends
9
+ * even with residual budget)
10
+ * verdict !== PASS AND evidence still
11
+ * affordable (repair + verification
12
+ * reserve not exhausted) → verdict unchanged (REPAIR_REQUIRED / BLOCKED)
13
+ * verdict !== PASS AND no budget left
14
+ * to produce required evidence → BLOCKED / resource-exhausted
15
+ *
16
+ * false-done is impossible by construction: unknown ≠ pass stays.
17
+ */
18
+ import type { ResourceBudget } from '../runtime/resourceBudget.js';
19
+ import type { CompletionEvaluation } from './completionPolicy.js';
20
+ export interface ResourceReserveGateInput {
21
+ evaluation: CompletionEvaluation;
22
+ budget: ResourceBudget;
23
+ }
24
+ export interface ResourceReserveGateResult {
25
+ verdict: CompletionEvaluation['verdict'];
26
+ /** Original deterministic verdict (never overwritten — audit trail). */
27
+ deterministicVerdict: CompletionEvaluation['verdict'];
28
+ /** True when the gate downgraded the verdict to BLOCKED. */
29
+ resourceExhausted: boolean;
30
+ /** True when the remaining budget can still run verification/repair calls. */
31
+ evidenceAffordable: boolean;
32
+ summary: string;
33
+ }
34
+ /**
35
+ * Evidence is affordable while the protected verification reserve has not
36
+ * been consumed by non-verify work AND the repair headroom is not negative.
37
+ */
38
+ export declare function evaluateResourceReserveGate(input: ResourceReserveGateInput): ResourceReserveGateResult;
39
+ //# sourceMappingURL=resourceReserveGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceReserveGate.d.ts","sourceRoot":"","sources":["../../src/verification/resourceReserveGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACzC,wEAAwE;IACxE,oBAAoB,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtD,4DAA4D;IAC5D,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,wBAAwB,GAAG,yBAAyB,CAiCtG"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * verification/resourceReserveGate.ts — resource-aware completion interaction
3
+ * (2.6 Track B, doc §11.5, ADR-0023 untouched).
4
+ *
5
+ * The budget NEVER decides PASS. It only decides whether the required
6
+ * evidence is still PRODUCIBLE:
7
+ *
8
+ * verdict === PASS → PASS (deterministic PASS ends
9
+ * even with residual budget)
10
+ * verdict !== PASS AND evidence still
11
+ * affordable (repair + verification
12
+ * reserve not exhausted) → verdict unchanged (REPAIR_REQUIRED / BLOCKED)
13
+ * verdict !== PASS AND no budget left
14
+ * to produce required evidence → BLOCKED / resource-exhausted
15
+ *
16
+ * false-done is impossible by construction: unknown ≠ pass stays.
17
+ */
18
+ /**
19
+ * Evidence is affordable while the protected verification reserve has not
20
+ * been consumed by non-verify work AND the repair headroom is not negative.
21
+ */
22
+ export function evaluateResourceReserveGate(input) {
23
+ const { evaluation, budget } = input;
24
+ if (evaluation.verdict === 'PASS') {
25
+ return {
26
+ verdict: 'PASS',
27
+ deterministicVerdict: 'PASS',
28
+ resourceExhausted: false,
29
+ evidenceAffordable: true,
30
+ summary: evaluation.summary,
31
+ };
32
+ }
33
+ // Remaining outside the reserve is spendable on verify/repair; the reserve
34
+ // itself exists exactly for those calls. Evidence stops being affordable
35
+ // when BOTH the spendable headroom and the reserve are gone.
36
+ const spendable = Math.max(0, budget.toolCalls.remaining - budget.reserve.verification);
37
+ const affordable = spendable + budget.reserve.verification > 0 && budget.toolCalls.remaining > 0;
38
+ if (affordable) {
39
+ return {
40
+ verdict: evaluation.verdict,
41
+ deterministicVerdict: evaluation.verdict,
42
+ resourceExhausted: false,
43
+ evidenceAffordable: true,
44
+ summary: evaluation.summary,
45
+ };
46
+ }
47
+ const summary = `${evaluation.summary} · resource-exhausted: ${budget.toolCalls.used}/${budget.toolCalls.limit} tool calls used, no budget left for required evidence — BLOCKED, not a false done`;
48
+ return {
49
+ verdict: 'BLOCKED',
50
+ deterministicVerdict: evaluation.verdict,
51
+ resourceExhausted: true,
52
+ evidenceAffordable: false,
53
+ summary,
54
+ };
55
+ }
56
+ //# sourceMappingURL=resourceReserveGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceReserveGate.js","sourceRoot":"","sources":["../../src/verification/resourceReserveGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAqBH;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAA+B;IACzE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrC,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,MAAM;YACf,oBAAoB,EAAE,MAAM;YAC5B,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,yEAAyE;IACzE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;IACjG,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,oBAAoB,EAAE,UAAU,CAAC,OAAO;YACxC,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,UAAU,CAAC,OAAO,0BAA0B,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,oFAAoF,CAAC;IACnM,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,oBAAoB,EAAE,UAAU,CAAC,OAAO;QACxC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,KAAK;QACzB,OAAO;KACR,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zelari/core",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Zelari Code core library — provider-neutral agent loop (AgentHarness), multi-agent council orchestration, and built-in skills. Used by the zelari-code CLI; consumable by other agent frontends.",
5
5
  "author": "Anathema Studio <https://anathema-studio.com/>",
6
6
  "license": "Apache-2.0",