@dsh-enhanced/assistant-evaluation 0.1.23 → 0.1.30

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 (132) hide show
  1. package/README.md +109 -3
  2. package/bin/dsh-benchmark.js +21 -0
  3. package/lib/benchmark/cli.d.ts +6 -0
  4. package/lib/benchmark/cli.d.ts.map +1 -0
  5. package/lib/benchmark/cli.js +332 -0
  6. package/lib/benchmark/cli.js.map +1 -0
  7. package/lib/benchmark/corpus.d.ts +28 -0
  8. package/lib/benchmark/corpus.d.ts.map +1 -0
  9. package/lib/benchmark/corpus.js +173 -0
  10. package/lib/benchmark/corpus.js.map +1 -0
  11. package/lib/benchmark/deepseek.d.ts +15 -0
  12. package/lib/benchmark/deepseek.d.ts.map +1 -0
  13. package/lib/benchmark/deepseek.js +143 -0
  14. package/lib/benchmark/deepseek.js.map +1 -0
  15. package/lib/benchmark/holdout-evidence.d.ts +126 -0
  16. package/lib/benchmark/holdout-evidence.d.ts.map +1 -0
  17. package/lib/benchmark/holdout-evidence.js +466 -0
  18. package/lib/benchmark/holdout-evidence.js.map +1 -0
  19. package/lib/benchmark/holdout-protocol.d.ts +68 -0
  20. package/lib/benchmark/holdout-protocol.d.ts.map +1 -0
  21. package/lib/benchmark/holdout-protocol.js +271 -0
  22. package/lib/benchmark/holdout-protocol.js.map +1 -0
  23. package/lib/benchmark/holdout-provider.d.ts +26 -0
  24. package/lib/benchmark/holdout-provider.d.ts.map +1 -0
  25. package/lib/benchmark/holdout-provider.js +382 -0
  26. package/lib/benchmark/holdout-provider.js.map +1 -0
  27. package/lib/benchmark/holdout.d.ts +83 -0
  28. package/lib/benchmark/holdout.d.ts.map +1 -0
  29. package/lib/benchmark/holdout.js +391 -0
  30. package/lib/benchmark/holdout.js.map +1 -0
  31. package/lib/benchmark/index.d.ts +9 -0
  32. package/lib/benchmark/index.d.ts.map +1 -0
  33. package/lib/benchmark/index.js +7 -0
  34. package/lib/benchmark/index.js.map +1 -0
  35. package/lib/benchmark/memory-corpus.d.ts +55 -0
  36. package/lib/benchmark/memory-corpus.d.ts.map +1 -0
  37. package/lib/benchmark/memory-corpus.js +153 -0
  38. package/lib/benchmark/memory-corpus.js.map +1 -0
  39. package/lib/benchmark/memory-runtime.d.ts +63 -0
  40. package/lib/benchmark/memory-runtime.d.ts.map +1 -0
  41. package/lib/benchmark/memory-runtime.js +75 -0
  42. package/lib/benchmark/memory-runtime.js.map +1 -0
  43. package/lib/benchmark/native.d.ts +46 -0
  44. package/lib/benchmark/native.d.ts.map +1 -0
  45. package/lib/benchmark/native.js +300 -0
  46. package/lib/benchmark/native.js.map +1 -0
  47. package/lib/benchmark/report.d.ts +4 -0
  48. package/lib/benchmark/report.d.ts.map +1 -0
  49. package/lib/benchmark/report.js +153 -0
  50. package/lib/benchmark/report.js.map +1 -0
  51. package/lib/benchmark/runner.d.ts +25 -0
  52. package/lib/benchmark/runner.d.ts.map +1 -0
  53. package/lib/benchmark/runner.js +119 -0
  54. package/lib/benchmark/runner.js.map +1 -0
  55. package/lib/benchmark/schema.d.ts +20 -0
  56. package/lib/benchmark/schema.d.ts.map +1 -0
  57. package/lib/benchmark/schema.js +183 -0
  58. package/lib/benchmark/schema.js.map +1 -0
  59. package/lib/benchmark/store.d.ts +18 -0
  60. package/lib/benchmark/store.d.ts.map +1 -0
  61. package/lib/benchmark/store.js +321 -0
  62. package/lib/benchmark/store.js.map +1 -0
  63. package/lib/benchmark/strategy-capabilities.d.ts +154 -0
  64. package/lib/benchmark/strategy-capabilities.d.ts.map +1 -0
  65. package/lib/benchmark/strategy-capabilities.js +300 -0
  66. package/lib/benchmark/strategy-capabilities.js.map +1 -0
  67. package/lib/benchmark/strategy-config.d.ts +26 -0
  68. package/lib/benchmark/strategy-config.d.ts.map +1 -0
  69. package/lib/benchmark/strategy-config.js +80 -0
  70. package/lib/benchmark/strategy-config.js.map +1 -0
  71. package/lib/benchmark/strategy-corpus.d.ts +21 -0
  72. package/lib/benchmark/strategy-corpus.d.ts.map +1 -0
  73. package/lib/benchmark/strategy-corpus.js +95 -0
  74. package/lib/benchmark/strategy-corpus.js.map +1 -0
  75. package/lib/benchmark/strategy-evidence.d.ts +161 -0
  76. package/lib/benchmark/strategy-evidence.d.ts.map +1 -0
  77. package/lib/benchmark/strategy-evidence.js +520 -0
  78. package/lib/benchmark/strategy-evidence.js.map +1 -0
  79. package/lib/benchmark/strategy-executor.d.ts +27 -0
  80. package/lib/benchmark/strategy-executor.d.ts.map +1 -0
  81. package/lib/benchmark/strategy-executor.js +178 -0
  82. package/lib/benchmark/strategy-executor.js.map +1 -0
  83. package/lib/benchmark/strategy-goal-runtime.d.ts +78 -0
  84. package/lib/benchmark/strategy-goal-runtime.d.ts.map +1 -0
  85. package/lib/benchmark/strategy-goal-runtime.js +324 -0
  86. package/lib/benchmark/strategy-goal-runtime.js.map +1 -0
  87. package/lib/benchmark/strategy-meter.d.ts +62 -0
  88. package/lib/benchmark/strategy-meter.d.ts.map +1 -0
  89. package/lib/benchmark/strategy-meter.js +236 -0
  90. package/lib/benchmark/strategy-meter.js.map +1 -0
  91. package/lib/benchmark/strategy-owner.d.ts +71 -0
  92. package/lib/benchmark/strategy-owner.d.ts.map +1 -0
  93. package/lib/benchmark/strategy-owner.js +282 -0
  94. package/lib/benchmark/strategy-owner.js.map +1 -0
  95. package/lib/benchmark/strategy-plan.d.ts +51 -0
  96. package/lib/benchmark/strategy-plan.d.ts.map +1 -0
  97. package/lib/benchmark/strategy-plan.js +71 -0
  98. package/lib/benchmark/strategy-plan.js.map +1 -0
  99. package/lib/benchmark/strategy-policy.d.ts +16 -0
  100. package/lib/benchmark/strategy-policy.d.ts.map +1 -0
  101. package/lib/benchmark/strategy-policy.js +77 -0
  102. package/lib/benchmark/strategy-policy.js.map +1 -0
  103. package/lib/benchmark/strategy.d.ts +17 -0
  104. package/lib/benchmark/strategy.d.ts.map +1 -0
  105. package/lib/benchmark/strategy.js +21 -0
  106. package/lib/benchmark/strategy.js.map +1 -0
  107. package/lib/benchmark/types.d.ts +133 -0
  108. package/lib/benchmark/types.d.ts.map +1 -0
  109. package/lib/benchmark/types.js +3 -0
  110. package/lib/benchmark/types.js.map +1 -0
  111. package/lib/benchmark/usage.d.ts +36 -0
  112. package/lib/benchmark/usage.d.ts.map +1 -0
  113. package/lib/benchmark/usage.js +84 -0
  114. package/lib/benchmark/usage.js.map +1 -0
  115. package/lib/service.d.ts +50 -1
  116. package/lib/service.d.ts.map +1 -1
  117. package/lib/service.js +556 -9
  118. package/lib/service.js.map +1 -1
  119. package/lib/sqlite.d.ts +1 -1
  120. package/lib/sqlite.d.ts.map +1 -1
  121. package/lib/sqlite.js +94 -2
  122. package/lib/sqlite.js.map +1 -1
  123. package/lib/store.d.ts +27 -5
  124. package/lib/store.d.ts.map +1 -1
  125. package/lib/store.js +324 -25
  126. package/lib/store.js.map +1 -1
  127. package/lib/types.d.ts +114 -5
  128. package/lib/types.d.ts.map +1 -1
  129. package/lib/types.js.map +1 -1
  130. package/lib/version.d.ts +1 -1
  131. package/lib/version.js +1 -1
  132. package/package.json +125 -18
@@ -0,0 +1,27 @@
1
+ import type { NativeAdapterFactory, NativeModelConfig } from './native.js';
2
+ import { type BenchmarkExecutor } from './runner.js';
3
+ import { type StrategyGoalTask } from './strategy-goal-runtime.js';
4
+ import { type StrategyBenchmarkPlan } from './strategy-plan.js';
5
+ import { type StrategyBenchmarkConfig } from './strategy-config.js';
6
+ import type { BenchmarkResult } from './types.js';
7
+ export interface StrategyBenchmarkExecutorOptions {
8
+ plan: StrategyBenchmarkPlan;
9
+ tasks: Readonly<Record<string, StrategyGoalTask>>;
10
+ persona: string;
11
+ model: NativeModelConfig;
12
+ factory: NativeAdapterFactory;
13
+ /** Both directories must be private, canonical and outside one another. Retained for audit. */
14
+ workspaceDirectory: string;
15
+ stateDirectory: string;
16
+ image: string;
17
+ dockerPath: string;
18
+ stepMaxDurationMs: number;
19
+ stopTimeoutMs?: number;
20
+ }
21
+ /** Freeze actual resolved runtime content/configuration before loading the trusted adapter. */
22
+ export declare function createStrategyBenchmarkPlan(value: StrategyBenchmarkConfig): Readonly<StrategyBenchmarkPlan>;
23
+ /** The journal's failed result remains unknown even if late cleanup subsequently succeeds. */
24
+ export declare function createStrategyBenchmarkExecutor(input: StrategyBenchmarkExecutorOptions): BenchmarkExecutor;
25
+ /** Reopen every referenced object before presenting strategy statistics. Missing crash evidence remains unknown. */
26
+ export declare function verifyStrategyBenchmarkResults(plan: StrategyBenchmarkPlan, results: readonly BenchmarkResult[], stateDirectory: string, workspaceDirectory: string): void;
27
+ //# sourceMappingURL=strategy-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-executor.d.ts","sourceRoot":"","sources":["../../src/benchmark/strategy-executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAyD,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG3G,OAAO,EAAuF,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACvJ,OAAO,EAA4J,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEzN,OAAO,EAAgC,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAEjG,OAAO,KAAK,EAA0C,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzF,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,qBAAqB,CAAA;IAC3B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,oBAAoB,CAAA;IAC7B,+FAA+F;IAC/F,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAqBD,+FAA+F;AAC/F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAS3G;AAED,8FAA8F;AAC9F,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,gCAAgC,GAAG,iBAAiB,CAqG1G;AAED,oHAAoH;AACpH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,eAAe,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAmBzK"}
@@ -0,0 +1,178 @@
1
+ /** Serial Host executor for real Goal cells; journal cancellation owns the total deadline. */
2
+ import { mkdirSync, mkdtempSync, lstatSync, realpathSync } from 'node:fs';
3
+ import { isAbsolute, join, relative } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { acceptanceCanonicalJson, acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
6
+ import { emptyBenchmarkMetrics } from './runner.js';
7
+ import { benchmarkAssert, benchmarkSnapshot } from './schema.js';
8
+ import { StrategyEvidenceStore, strategyFailureProtocol, strategyCellProtocol } from './strategy-evidence.js';
9
+ import { createStrategyGoalRuntime, strategyGoalTaskDigests } from './strategy-goal-runtime.js';
10
+ import { parseStrategyBenchmarkPlan, strategyBenchmarkCapabilityVersions, strategyBenchmarkJournalPlan, strategyBenchmarkProtocol, strategyBenchmarkRequestLimits } from './strategy-plan.js';
11
+ import { createFixedStrategyCapabilityExpectation, StrategyCapabilityRuntimeHost, assertStrategyCapabilityRuntime } from './strategy-capabilities.js';
12
+ import { parseStrategyBenchmarkConfig } from './strategy-config.js';
13
+ import { strategyDevelopmentCases, strategyDevelopmentDataset } from './strategy-corpus.js';
14
+ function privateRoot(path) {
15
+ benchmarkAssert(isAbsolute(path), 'strategy root must be absolute');
16
+ mkdirSync(path, { recursive: true, mode: 0o700 });
17
+ const stat = lstatSync(path);
18
+ benchmarkAssert(realpathSync(path) === path && stat.isDirectory() && !stat.isSymbolicLink()
19
+ && (stat.mode & 0o077) === 0 && (process.getuid === undefined || stat.uid === process.getuid()), 'strategy root must be canonical and private');
20
+ return path;
21
+ }
22
+ const contains = (a, b) => { const path = relative(a, b); return path === '' || path !== '..' && !path.startsWith('../') && !isAbsolute(path); };
23
+ const same = (a, b) => acceptanceCanonicalJson(a) === acceptanceCanonicalJson(b);
24
+ const resolverDirectory = fileURLToPath(new URL('.', import.meta.url));
25
+ const noSkills = acceptanceDigest('strategy-no-skills-v1');
26
+ function actualCapabilities(input) {
27
+ const expectation = createFixedStrategyCapabilityExpectation({ resolverDirectory, persona: input.persona, modelProvider: input.model.provider });
28
+ const runtimeCommitment = { source: expectation.capabilities.common.runtime, sourceIdentityDigest: acceptanceDigest(expectation.sourceIdentity), image: input.image, dockerPath: input.dockerPath,
29
+ stepMaxDurationMs: input.stepMaxDurationMs, stopTimeoutMs: input.stopTimeoutMs ?? 10000 };
30
+ return { expectation, runtimeCommitment, capabilities: { ...expectation.capabilities, common: { ...expectation.capabilities.common, runtime: acceptanceDigest(runtimeCommitment) } } };
31
+ }
32
+ /** Freeze actual resolved runtime content/configuration before loading the trusted adapter. */
33
+ export function createStrategyBenchmarkPlan(value) {
34
+ const config = parseStrategyBenchmarkConfig(value);
35
+ const { capabilities } = actualCapabilities(config);
36
+ return parseStrategyBenchmarkPlan({ schemaVersion: 1, protocol: strategyBenchmarkProtocol, capabilities, execution: config.execution,
37
+ benchmark: { schemaVersion: 1, id: config.id, comparison: 'capability', dataset: strategyDevelopmentDataset,
38
+ cases: strategyDevelopmentCases().filter(task => config.cases.includes(task.id)), budget: config.budget, repeats: config.repeats, seed: config.seed,
39
+ variants: [false, true].map(enabled => ({ id: enabled ? 'adaptive-strategy' : 'direct', role: enabled ? 'candidate' : 'baseline',
40
+ features: { memory: false, planning: false, review: false, growth: false },
41
+ versions: { model: acceptanceDigest(config.model), skills: noSkills, ...strategyBenchmarkCapabilityVersions(capabilities, enabled) } })) } });
42
+ }
43
+ /** The journal's failed result remains unknown even if late cleanup subsequently succeeds. */
44
+ export function createStrategyBenchmarkExecutor(input) {
45
+ const plan = parseStrategyBenchmarkPlan(input.plan);
46
+ const tasks = benchmarkSnapshot(input.tasks);
47
+ const model = benchmarkSnapshot(input.model);
48
+ const { persona, factory, image, dockerPath, stepMaxDurationMs, stopTimeoutMs } = input;
49
+ benchmarkAssert(typeof persona === 'string' && typeof factory === 'function', 'invalid strategy executor configuration');
50
+ const { expectation, capabilities, runtimeCommitment } = actualCapabilities(input);
51
+ benchmarkAssert(same(plan.capabilities, capabilities), 'strategy installed capabilities differ from plan');
52
+ const journal = strategyBenchmarkJournalPlan(plan);
53
+ benchmarkAssert(journal.variants.every(variant => variant.versions.model === acceptanceDigest(model) && variant.versions.skills === noSkills
54
+ && Object.values(variant.features).every(flag => flag === false)), 'strategy executor cannot implement declared model, skills or extra features');
55
+ benchmarkAssert(Object.keys(tasks).length === journal.cases.length, 'strategy task set differs');
56
+ for (const task of journal.cases) {
57
+ benchmarkAssert(Object.hasOwn(tasks, task.id), 'missing strategy task');
58
+ const digests = strategyGoalTaskDigests(tasks[task.id]);
59
+ benchmarkAssert(digests.inputDigest === task.inputDigest && digests.acceptanceDigest === task.acceptanceDigest, 'strategy task digest differs');
60
+ }
61
+ const workspaceRoot = privateRoot(input.workspaceDirectory);
62
+ const stateRoot = privateRoot(input.stateDirectory);
63
+ benchmarkAssert(!contains(workspaceRoot, stateRoot) && !contains(stateRoot, workspaceRoot), 'strategy state and workspaces must be separate');
64
+ let active;
65
+ const attempted = new Set();
66
+ return Object.freeze({
67
+ async execute(request) {
68
+ strategyBenchmarkRequestLimits(plan, request);
69
+ benchmarkAssert(!attempted.has(request.cell.id) && (active === undefined || active.finished && active.failure === undefined), 'strategy execution is single-use and serial');
70
+ attempted.add(request.cell.id);
71
+ const workspace = mkdtempSync(join(workspaceRoot, 'cell-'));
72
+ const attempt = { request, workspace, evidence: new StrategyEvidenceStore({ stateDirectory: stateRoot, candidateWorkspace: workspace }), finished: false, captures: [] };
73
+ active = attempt;
74
+ const guardedFactory = async (selected, environment) => {
75
+ const binding = await factory(selected, environment);
76
+ try {
77
+ request.signal.throwIfAborted();
78
+ const { ctx } = environment;
79
+ ctx.on('llm/stream', async function* (options, next) {
80
+ request.signal.throwIfAborted();
81
+ const agent = ctx.agents.currentInitiator();
82
+ benchmarkAssert(agent !== undefined, 'strategy request has no native agent');
83
+ const sessionId = String(agent.session.id);
84
+ if (agent.session.header.origin === 'subagent') {
85
+ benchmarkAssert((options.tools?.length ?? 0) === 0, 'strategy child must have no tools');
86
+ attempt.captures.push({ sessionId, kind: 'child', observation: null });
87
+ }
88
+ else {
89
+ const host = StrategyCapabilityRuntimeHost.fromMountedContext(ctx);
90
+ host.captureParentRequest({ system: options.system ?? '', tools: (options.tools ?? []).map(tool => ({ ...tool, output: null })) });
91
+ const policyRequest = { subject: { kind: 'agent', id: 'benchmark', workspace }, action: 'execute', context: { initiator: 'external' } };
92
+ host.capturePolicyRequests({ common: { ...policyRequest, resource: { kind: 'tool', id: 'goal_create' } },
93
+ strategy: { ...policyRequest, resource: { kind: 'tool', id: 'goal_strategy' } } });
94
+ const observation = assertStrategyCapabilityRuntime(expectation, host, request.variant.id === 'adaptive-strategy', agent);
95
+ attempt.captures.push({ sessionId, kind: 'parent', observation });
96
+ }
97
+ yield* next();
98
+ });
99
+ return binding;
100
+ }
101
+ catch (error) {
102
+ await binding.dispose();
103
+ throw error;
104
+ }
105
+ };
106
+ const runtime = await createStrategyGoalRuntime({ plan, request, task: tasks[request.cell.caseId], persona, model, factory: guardedFactory,
107
+ workspace, stateRoot, image, dockerPath, stepMaxDurationMs, ...(stopTimeoutMs === undefined ? {} : { stopTimeoutMs }),
108
+ lifecycle: control => { attempt.control = control; }, });
109
+ const result = await runtime.execute();
110
+ benchmarkAssert(!request.signal.aborted && attempt.failure === undefined, 'strategy cell was already cancelled');
111
+ const saved = attempt.evidence.read(plan, request.cell, result.evidence.digest);
112
+ const meter = saved.meter;
113
+ benchmarkAssert(saved.outcome.status === 'completed' && saved.outcome.verdict !== 'unknown' && saved.outcome.quiescent, 'strategy cell outcome remains unknown');
114
+ const metrics = { inputTokens: meter.inputTokens, outputTokens: meter.outputTokens, costUsdMicros: meter.costUsdMicros,
115
+ toolCalls: meter.toolCalls, rework: null, interventions: null, latencyMs: null };
116
+ // The compact native object has no run dispatch timestamps. Its list order
117
+ // cannot prove that a new round started after independent failure.
118
+ const { signal: _signal, ...bound } = request;
119
+ const envelope = attempt.evidence.writeCell({ protocol: strategyCellProtocol, version: 1, plan, request: bound,
120
+ nativeEvidenceDigest: result.evidence.digest, capabilities: { sourceIdentity: expectation.sourceIdentity, runtimeCommitment, requests: attempt.captures } });
121
+ attempt.evidence.readCell(plan, request.cell, envelope.digest);
122
+ attempt.finished = true;
123
+ return Object.freeze({ versions: saved.versions, inputDigest: saved.input.digest, acceptanceDigest: saved.acceptance.digest,
124
+ verdict: saved.outcome.verdict, metrics, evidenceDigest: envelope.digest, quiescent: saved.outcome.quiescent });
125
+ },
126
+ failure(request, reason) {
127
+ const attempt = active;
128
+ if (attempt === undefined || !same(attempt.request.cell, request.cell) || attempt.request !== request)
129
+ return undefined;
130
+ if (attempt.failure !== undefined)
131
+ return attempt.failure;
132
+ const snapshot = attempt.control?.snapshot() ?? { runtimeRoot: null, stage: 'setup', cleanup: 'pending', meter: null, goalSnapshot: null, lastGoalObservation: null, failureStage: null };
133
+ const { signal: _signal, ...bound } = request;
134
+ const saved = attempt.evidence.writeFailure({ protocol: strategyFailureProtocol, version: 1, plan, request: bound, reason, observedAt: Date.now(), snapshot });
135
+ const verified = attempt.evidence.readFailure(plan, request.cell, saved.digest);
136
+ const meter = verified.snapshot.meter;
137
+ const metrics = emptyBenchmarkMetrics();
138
+ if (meter !== null) {
139
+ metrics.toolCalls = meter.toolCalls;
140
+ if (meter.heldModelCalls === 0) {
141
+ metrics.inputTokens = meter.inputTokens;
142
+ metrics.outputTokens = meter.outputTokens;
143
+ metrics.costUsdMicros = meter.costUsdMicros;
144
+ }
145
+ }
146
+ attempt.failure = Object.freeze({ versions: request.variant.versions, inputDigest: request.task.inputDigest, acceptanceDigest: request.task.acceptanceDigest,
147
+ verdict: 'unknown', metrics, evidenceDigest: saved.digest, quiescent: false });
148
+ // Do not await an uncooperative provider or upgrade the persisted failure snapshot.
149
+ void attempt.control?.close().catch(() => { });
150
+ return attempt.failure;
151
+ },
152
+ });
153
+ }
154
+ /** Reopen every referenced object before presenting strategy statistics. Missing crash evidence remains unknown. */
155
+ export function verifyStrategyBenchmarkResults(plan, results, stateDirectory, workspaceDirectory) {
156
+ if (results.length === 0)
157
+ return;
158
+ if (results.every(result => result.status === 'unknown' && result.evidenceDigest === null))
159
+ return;
160
+ const evidence = new StrategyEvidenceStore({ stateDirectory, candidateWorkspace: workspaceDirectory, createDirectories: false });
161
+ for (const result of results) {
162
+ if (result.status === 'unknown') {
163
+ if (result.evidenceDigest === null)
164
+ continue;
165
+ const failure = evidence.readFailure(plan, result.cell, result.evidenceDigest);
166
+ benchmarkAssert(result.verdict === 'unknown' && failure.reason === result.reason, 'strategy failure result drift');
167
+ }
168
+ else {
169
+ benchmarkAssert(result.evidenceDigest !== null, 'strategy cell evidence is missing');
170
+ const cell = evidence.readCell(plan, result.cell, result.evidenceDigest);
171
+ const native = evidence.read(plan, result.cell, cell.nativeEvidenceDigest);
172
+ benchmarkAssert(result.verdict === native.outcome.verdict && native.outcome.quiescent
173
+ && result.metrics.inputTokens === native.meter.inputTokens && result.metrics.outputTokens === native.meter.outputTokens
174
+ && result.metrics.costUsdMicros === native.meter.costUsdMicros && result.metrics.toolCalls === native.meter.toolCalls, 'strategy result differs from detailed evidence');
175
+ }
176
+ }
177
+ }
178
+ //# sourceMappingURL=strategy-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-executor.js","sourceRoot":"","sources":["../../src/benchmark/strategy-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { NativeAdapterFactory, NativeModelConfig } from './native.js';
2
+ import type { BenchmarkExecutionRequest } from './runner.js';
3
+ import { type StrategyBenchmarkPlan } from './strategy-plan.js';
4
+ import { type StrategyBenchmarkMeter } from './strategy-meter.js';
5
+ import { type BenchmarkStrategyOwnerRuntime } from './strategy-owner.js';
6
+ export interface StrategyGoalTask {
7
+ objective: string;
8
+ publicPrompt: string;
9
+ artifactPath: string;
10
+ verification: {
11
+ command: string;
12
+ cases: readonly {
13
+ stdin: string;
14
+ expectedStdout: string;
15
+ expectedExitCode: number;
16
+ }[];
17
+ maxDurationMs: number;
18
+ maxOutputBytes: number;
19
+ };
20
+ }
21
+ export declare function strategyGoalTaskDigests(value: StrategyGoalTask): Readonly<{
22
+ inputDigest: string;
23
+ acceptanceDigest: string;
24
+ }>;
25
+ export interface StrategyGoalRuntimeOptions {
26
+ plan: StrategyBenchmarkPlan;
27
+ request: BenchmarkExecutionRequest;
28
+ task: StrategyGoalTask;
29
+ workspace: string;
30
+ stateRoot: string;
31
+ persona: string;
32
+ model: NativeModelConfig;
33
+ factory: NativeAdapterFactory;
34
+ image: string;
35
+ dockerPath: string;
36
+ stepMaxDurationMs: number;
37
+ /** Failure to stop within this window remains unknown; never retry the cell. */
38
+ stopTimeoutMs?: number;
39
+ lifecycle?: (control: Readonly<StrategyGoalRuntimeControl>) => void;
40
+ }
41
+ export interface StrategyGoalRuntimeLifecycleSnapshot {
42
+ runtimeRoot: string | null;
43
+ stage: 'setup' | 'executing' | 'cleanup' | 'evidence' | 'closed';
44
+ meter: ReturnType<StrategyBenchmarkMeter['snapshot']> | null;
45
+ goalSnapshot: Readonly<Record<string, unknown>> | null;
46
+ /** Explicit history when current authorization or services are no longer available. */
47
+ lastGoalObservation: {
48
+ observedAt: number;
49
+ value: Readonly<Record<string, unknown>>;
50
+ } | null;
51
+ failureStage: 'setup' | 'executing' | 'cleanup' | 'evidence' | null;
52
+ cleanup: 'pending' | 'succeeded' | 'unknown';
53
+ }
54
+ export interface StrategyGoalRuntimeControl {
55
+ close(): Promise<void>;
56
+ snapshot(): Readonly<StrategyGoalRuntimeLifecycleSnapshot>;
57
+ }
58
+ /**
59
+ * Owns one native cell. The model selects tools through the real AgentLoop;
60
+ * the Host never manufactures a tool call, artifact, verifier result or Goal.
61
+ * Outputs are source observations; the comparator must still attest mounted
62
+ * capabilities and persist/validate complete cell evidence before reporting.
63
+ */
64
+ export declare function createStrategyGoalRuntime(input: StrategyGoalRuntimeOptions): Promise<Readonly<{
65
+ runtimeRoot: string;
66
+ close: () => Promise<void>;
67
+ snapshotMeter: () => Readonly<import("./strategy-meter.js").StrategyBenchmarkMeterSnapshot>;
68
+ execute(): Promise<Readonly<{
69
+ evidence: Readonly<{
70
+ digest: string;
71
+ path: string;
72
+ }>;
73
+ snapshot: Readonly<Record<string, unknown>>;
74
+ meter: ReturnType<StrategyBenchmarkMeter["snapshot"]>;
75
+ outbound: BenchmarkStrategyOwnerRuntime["outbound"];
76
+ }>>;
77
+ }>>;
78
+ //# sourceMappingURL=strategy-goal-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-goal-runtime.d.ts","sourceRoot":"","sources":["../../src/benchmark/strategy-goal-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAwB,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAChG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,EAAkC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEhG,OAAO,EAAuC,KAAK,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAE7G,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,SAAS;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;QACrF,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB;;;GAgB9D;AACD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,OAAO,EAAE,yBAAyB,CAAA;IAClC,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,oBAAoB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAA;CACpE;AACD,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;IAChE,KAAK,EAAE,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAA;IAC5D,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAA;IACtD,uFAAuF;IACvF,mBAAmB,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5F,YAAY,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAAA;IACnE,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;CAC7C;AACD,MAAM,WAAW,0BAA0B;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,QAAQ,IAAI,QAAQ,CAAC,oCAAoC,CAAC,CAAA;CAC3D;AAmDD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,0BAA0B;;iBA8D7D,OAAO,CAAC,IAAI,CAAC;;;;;;;kBAkHD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;eAAS,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;kBAAY,6BAA6B,CAAC,UAAU,CAAC;;IA8B5K"}