@dsh-enhanced/assistant-evaluation 0.1.24 → 0.1.31
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 +109 -3
- package/bin/dsh-benchmark.js +21 -0
- package/lib/benchmark/cli.d.ts +6 -0
- package/lib/benchmark/cli.d.ts.map +1 -0
- package/lib/benchmark/cli.js +332 -0
- package/lib/benchmark/cli.js.map +1 -0
- package/lib/benchmark/corpus.d.ts +28 -0
- package/lib/benchmark/corpus.d.ts.map +1 -0
- package/lib/benchmark/corpus.js +173 -0
- package/lib/benchmark/corpus.js.map +1 -0
- package/lib/benchmark/deepseek.d.ts +15 -0
- package/lib/benchmark/deepseek.d.ts.map +1 -0
- package/lib/benchmark/deepseek.js +143 -0
- package/lib/benchmark/deepseek.js.map +1 -0
- package/lib/benchmark/holdout-evidence.d.ts +126 -0
- package/lib/benchmark/holdout-evidence.d.ts.map +1 -0
- package/lib/benchmark/holdout-evidence.js +466 -0
- package/lib/benchmark/holdout-evidence.js.map +1 -0
- package/lib/benchmark/holdout-protocol.d.ts +68 -0
- package/lib/benchmark/holdout-protocol.d.ts.map +1 -0
- package/lib/benchmark/holdout-protocol.js +271 -0
- package/lib/benchmark/holdout-protocol.js.map +1 -0
- package/lib/benchmark/holdout-provider.d.ts +26 -0
- package/lib/benchmark/holdout-provider.d.ts.map +1 -0
- package/lib/benchmark/holdout-provider.js +382 -0
- package/lib/benchmark/holdout-provider.js.map +1 -0
- package/lib/benchmark/holdout.d.ts +83 -0
- package/lib/benchmark/holdout.d.ts.map +1 -0
- package/lib/benchmark/holdout.js +391 -0
- package/lib/benchmark/holdout.js.map +1 -0
- package/lib/benchmark/index.d.ts +9 -0
- package/lib/benchmark/index.d.ts.map +1 -0
- package/lib/benchmark/index.js +7 -0
- package/lib/benchmark/index.js.map +1 -0
- package/lib/benchmark/memory-corpus.d.ts +55 -0
- package/lib/benchmark/memory-corpus.d.ts.map +1 -0
- package/lib/benchmark/memory-corpus.js +153 -0
- package/lib/benchmark/memory-corpus.js.map +1 -0
- package/lib/benchmark/memory-runtime.d.ts +63 -0
- package/lib/benchmark/memory-runtime.d.ts.map +1 -0
- package/lib/benchmark/memory-runtime.js +75 -0
- package/lib/benchmark/memory-runtime.js.map +1 -0
- package/lib/benchmark/native.d.ts +46 -0
- package/lib/benchmark/native.d.ts.map +1 -0
- package/lib/benchmark/native.js +300 -0
- package/lib/benchmark/native.js.map +1 -0
- package/lib/benchmark/report.d.ts +4 -0
- package/lib/benchmark/report.d.ts.map +1 -0
- package/lib/benchmark/report.js +153 -0
- package/lib/benchmark/report.js.map +1 -0
- package/lib/benchmark/runner.d.ts +25 -0
- package/lib/benchmark/runner.d.ts.map +1 -0
- package/lib/benchmark/runner.js +119 -0
- package/lib/benchmark/runner.js.map +1 -0
- package/lib/benchmark/schema.d.ts +20 -0
- package/lib/benchmark/schema.d.ts.map +1 -0
- package/lib/benchmark/schema.js +183 -0
- package/lib/benchmark/schema.js.map +1 -0
- package/lib/benchmark/store.d.ts +18 -0
- package/lib/benchmark/store.d.ts.map +1 -0
- package/lib/benchmark/store.js +321 -0
- package/lib/benchmark/store.js.map +1 -0
- package/lib/benchmark/strategy-capabilities.d.ts +154 -0
- package/lib/benchmark/strategy-capabilities.d.ts.map +1 -0
- package/lib/benchmark/strategy-capabilities.js +300 -0
- package/lib/benchmark/strategy-capabilities.js.map +1 -0
- package/lib/benchmark/strategy-config.d.ts +26 -0
- package/lib/benchmark/strategy-config.d.ts.map +1 -0
- package/lib/benchmark/strategy-config.js +80 -0
- package/lib/benchmark/strategy-config.js.map +1 -0
- package/lib/benchmark/strategy-corpus.d.ts +21 -0
- package/lib/benchmark/strategy-corpus.d.ts.map +1 -0
- package/lib/benchmark/strategy-corpus.js +95 -0
- package/lib/benchmark/strategy-corpus.js.map +1 -0
- package/lib/benchmark/strategy-evidence.d.ts +161 -0
- package/lib/benchmark/strategy-evidence.d.ts.map +1 -0
- package/lib/benchmark/strategy-evidence.js +520 -0
- package/lib/benchmark/strategy-evidence.js.map +1 -0
- package/lib/benchmark/strategy-executor.d.ts +27 -0
- package/lib/benchmark/strategy-executor.d.ts.map +1 -0
- package/lib/benchmark/strategy-executor.js +178 -0
- package/lib/benchmark/strategy-executor.js.map +1 -0
- package/lib/benchmark/strategy-goal-runtime.d.ts +78 -0
- package/lib/benchmark/strategy-goal-runtime.d.ts.map +1 -0
- package/lib/benchmark/strategy-goal-runtime.js +324 -0
- package/lib/benchmark/strategy-goal-runtime.js.map +1 -0
- package/lib/benchmark/strategy-meter.d.ts +62 -0
- package/lib/benchmark/strategy-meter.d.ts.map +1 -0
- package/lib/benchmark/strategy-meter.js +236 -0
- package/lib/benchmark/strategy-meter.js.map +1 -0
- package/lib/benchmark/strategy-owner.d.ts +71 -0
- package/lib/benchmark/strategy-owner.d.ts.map +1 -0
- package/lib/benchmark/strategy-owner.js +282 -0
- package/lib/benchmark/strategy-owner.js.map +1 -0
- package/lib/benchmark/strategy-plan.d.ts +51 -0
- package/lib/benchmark/strategy-plan.d.ts.map +1 -0
- package/lib/benchmark/strategy-plan.js +71 -0
- package/lib/benchmark/strategy-plan.js.map +1 -0
- package/lib/benchmark/strategy-policy.d.ts +16 -0
- package/lib/benchmark/strategy-policy.d.ts.map +1 -0
- package/lib/benchmark/strategy-policy.js +77 -0
- package/lib/benchmark/strategy-policy.js.map +1 -0
- package/lib/benchmark/strategy.d.ts +17 -0
- package/lib/benchmark/strategy.d.ts.map +1 -0
- package/lib/benchmark/strategy.js +21 -0
- package/lib/benchmark/strategy.js.map +1 -0
- package/lib/benchmark/types.d.ts +133 -0
- package/lib/benchmark/types.d.ts.map +1 -0
- package/lib/benchmark/types.js +3 -0
- package/lib/benchmark/types.js.map +1 -0
- package/lib/benchmark/usage.d.ts +36 -0
- package/lib/benchmark/usage.d.ts.map +1 -0
- package/lib/benchmark/usage.js +84 -0
- package/lib/benchmark/usage.js.map +1 -0
- package/lib/service.d.ts +50 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +556 -9
- package/lib/service.js.map +1 -1
- package/lib/sqlite.d.ts +1 -1
- package/lib/sqlite.d.ts.map +1 -1
- package/lib/sqlite.js +94 -2
- package/lib/sqlite.js.map +1 -1
- package/lib/store.d.ts +27 -5
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +324 -25
- package/lib/store.js.map +1 -1
- package/lib/types.d.ts +114 -5
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +125 -18
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
/** Native Goal + isolated artifact assembly. This does not attest a complete comparison. */
|
|
10
|
+
import { Context } from '@deepseek-ai/cordis';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
|
|
13
|
+
import { benchmarkAssert, benchmarkInteger, benchmarkObject, benchmarkSnapshot } from './schema.js';
|
|
14
|
+
import { strategyBenchmarkRequestLimits } from './strategy-plan.js';
|
|
15
|
+
import { installStrategyBenchmarkMeter } from './strategy-meter.js';
|
|
16
|
+
import { StrategyEvidenceStore, strategyEvidenceProtocol } from './strategy-evidence.js';
|
|
17
|
+
import { createBenchmarkStrategyOwnerRuntime } from './strategy-owner.js';
|
|
18
|
+
export function strategyGoalTaskDigests(value) {
|
|
19
|
+
const task = benchmarkObject(benchmarkSnapshot(value), ['objective', 'publicPrompt', 'artifactPath', 'verification']);
|
|
20
|
+
for (const key of ['objective', 'publicPrompt', 'artifactPath'])
|
|
21
|
+
benchmarkAssert(typeof task[key] === 'string' && task[key].trim() !== '' && Buffer.byteLength(task[key]) <= 32768, 'invalid strategy goal task');
|
|
22
|
+
benchmarkAssert(task.objective.trim() === task.objective && !/[\p{Cc}]/u.test(task.objective), 'invalid strategy goal objective');
|
|
23
|
+
benchmarkAssert(/^[A-Za-z0-9][A-Za-z0-9._/-]*$/u.test(task.artifactPath) && !task.artifactPath.split('/').some(part => part === '..' || part === '.' || part === ''), 'invalid strategy artifact path');
|
|
24
|
+
const verification = benchmarkObject(task.verification, ['command', 'cases', 'maxDurationMs', 'maxOutputBytes']);
|
|
25
|
+
benchmarkAssert(typeof verification.command === 'string' && verification.command.trim() !== '' && verification.command.length <= 16384, 'invalid verification command');
|
|
26
|
+
benchmarkInteger(verification.maxDurationMs, 1, 300000);
|
|
27
|
+
benchmarkInteger(verification.maxOutputBytes, 1, 262144);
|
|
28
|
+
benchmarkAssert(Array.isArray(verification.cases) && verification.cases.length > 0 && verification.cases.length <= 32, 'invalid verification cases');
|
|
29
|
+
for (const value of verification.cases) {
|
|
30
|
+
const item = benchmarkObject(value, ['stdin', 'expectedStdout', 'expectedExitCode']);
|
|
31
|
+
for (const key of ['stdin', 'expectedStdout'])
|
|
32
|
+
benchmarkAssert(typeof item[key] === 'string' && Buffer.byteLength(item[key]) <= 32768, 'invalid verification vector');
|
|
33
|
+
benchmarkInteger(item.expectedExitCode, 0, 255);
|
|
34
|
+
}
|
|
35
|
+
return Object.freeze({ inputDigest: acceptanceDigest({ objective: task.objective, publicPrompt: task.publicPrompt }),
|
|
36
|
+
acceptanceDigest: acceptanceDigest({ artifactPath: task.artifactPath, verification }) });
|
|
37
|
+
}
|
|
38
|
+
const plugin = (ctx, value, config = {}) => ctx.plugin(value, config);
|
|
39
|
+
function nativeEvidence(source) {
|
|
40
|
+
const record = source.storedGoal;
|
|
41
|
+
const runs = source.executionRuns.map(run => ({ runId: run.intent.runId, executionStatus: run.execution?.status ?? 'unknown', quiescent: run.execution?.quiescent ?? false }));
|
|
42
|
+
const strategies = source.strategyRecords.map(strategy => ({ strategyId: strategy.intent.id, parentRunId: strategy.intent.parentRunId,
|
|
43
|
+
kind: strategy.intent.kind, outcome: strategy.outcome ?? 'unknown',
|
|
44
|
+
children: strategy.children.map(child => ({ sessionId: child.sessionId, stopReason: child.stopReason, quiescent: child.quiescent })) }));
|
|
45
|
+
const receipts = [];
|
|
46
|
+
for (const value of source.acceptedTasks) {
|
|
47
|
+
if (!value.contract || !value.receipt)
|
|
48
|
+
continue;
|
|
49
|
+
const { contract, receipt } = value;
|
|
50
|
+
benchmarkAssert(contract.task.kind === 'goal-step' || contract.task.kind === 'goal-outcome', 'unexpected native acceptance kind');
|
|
51
|
+
const runId = contract.task.kind === 'goal-step' ? contract.task.goal.runId : source.outcomeAssessments.find(item => item.contract.id === contract.id)?.triggerRunId;
|
|
52
|
+
benchmarkAssert(typeof runId === 'string', 'missing native receipt trigger');
|
|
53
|
+
receipts.push({ runId, taskKind: contract.task.kind, contract, receipt, quiescent: contract.task.kind === 'goal-outcome' ? source.outcomeAssessments.find(item => item.contract.id === contract.id)?.execution?.quiescent ?? false : runs.find(run => run.runId === runId)?.quiescent ?? false });
|
|
54
|
+
}
|
|
55
|
+
return { parent: { sessionId: record.nativeAtLastObservation.sessionId, goalId: record.id, nativeGoalId: record.nativeAtLastObservation.goalId,
|
|
56
|
+
definitionVersion: record.definition.version, definitionDigest: record.definition.digest,
|
|
57
|
+
lifecycle: record.nativeAtLastObservation.phase === 'complete' ? 'completed' : 'unknown',
|
|
58
|
+
quiescent: runs.every(run => run.executionStatus === 'succeeded' && run.quiescent) && strategies.every(strategy => strategy.outcome !== 'unknown' && strategy.children.every(child => child.quiescent))
|
|
59
|
+
&& source.outcomeAssessments.every(assessment => assessment.execution?.status === 'succeeded' && assessment.execution.quiescent) },
|
|
60
|
+
runs, strategies, outcomeAssessments: source.outcomeAssessments, receipts,
|
|
61
|
+
selectedOutcomeContractId: source.outcomeAssessments.find(item => item.contract.task.ref === source.outcome?.assessmentId)?.contract.id ?? null };
|
|
62
|
+
}
|
|
63
|
+
function untilAbort(work, signal) {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
const abort = () => reject(new Error('strategy native execution cancelled or timed out'));
|
|
66
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
67
|
+
work.then(value => { signal.removeEventListener('abort', abort); resolve(value); }, error => { signal.removeEventListener('abort', abort); reject(error); });
|
|
68
|
+
if (signal.aborted)
|
|
69
|
+
abort();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Owns one native cell. The model selects tools through the real AgentLoop;
|
|
74
|
+
* the Host never manufactures a tool call, artifact, verifier result or Goal.
|
|
75
|
+
* Outputs are source observations; the comparator must still attest mounted
|
|
76
|
+
* capabilities and persist/validate complete cell evidence before reporting.
|
|
77
|
+
*/
|
|
78
|
+
export async function createStrategyGoalRuntime(input) {
|
|
79
|
+
const { workspace, stateRoot, persona, image, dockerPath, factory } = input;
|
|
80
|
+
const signal = input.request.signal;
|
|
81
|
+
const cellId = input.request.cell.id;
|
|
82
|
+
const limits = strategyBenchmarkRequestLimits(input.plan, input.request);
|
|
83
|
+
const task = benchmarkSnapshot(input.task);
|
|
84
|
+
const digests = strategyGoalTaskDigests(task);
|
|
85
|
+
benchmarkAssert(digests.inputDigest === input.request.task.inputDigest && digests.acceptanceDigest === input.request.task.acceptanceDigest, 'strategy task differs from frozen case');
|
|
86
|
+
const model = benchmarkSnapshot(input.model);
|
|
87
|
+
benchmarkAssert(acceptanceDigest(model) === input.request.variant.versions.model, 'strategy model differs from frozen route');
|
|
88
|
+
benchmarkAssert(/^sha256:[a-f0-9]{64}$/u.test(image) && dockerPath.startsWith('/'), 'immutable local image and absolute Docker path required');
|
|
89
|
+
const stopTimeoutMs = input.stopTimeoutMs ?? 10000;
|
|
90
|
+
benchmarkInteger(stopTimeoutMs, 1000, 30000);
|
|
91
|
+
const stepDuration = input.stepMaxDurationMs;
|
|
92
|
+
benchmarkInteger(stepDuration, 1000, 300000);
|
|
93
|
+
benchmarkAssert(limits.maxGoalRounds <= 32 && task.verification.maxDurationMs * task.verification.cases.length < stepDuration
|
|
94
|
+
&& stepDuration * 3 < input.request.budget.durationMs, 'strategy verification does not fit the execution window');
|
|
95
|
+
const plan = benchmarkSnapshot(input.plan);
|
|
96
|
+
const request = benchmarkSnapshot({ planId: input.request.planId, dataset: input.request.dataset, cell: input.request.cell, task: input.request.task, variant: input.request.variant, budget: input.request.budget });
|
|
97
|
+
const budget = request.budget;
|
|
98
|
+
const enabled = input.request.variant.id === 'adaptive-strategy';
|
|
99
|
+
const ctx = new Context();
|
|
100
|
+
const preset = 'benchmark';
|
|
101
|
+
const subject = { kind: 'agent', id: preset, workspace };
|
|
102
|
+
const goalActions = ['create', 'observe', 'inspect', 'focus', 'checkpoint', 'snapshot', 'execute', ...(enabled ? ['delegate'] : [])];
|
|
103
|
+
const toolNames = ['goal_create', 'goal_context', 'goal_checkpoint', 'isolation_run', ...(enabled ? ['goal_strategy'] : [])];
|
|
104
|
+
let owner;
|
|
105
|
+
let binding;
|
|
106
|
+
let meter;
|
|
107
|
+
let goal;
|
|
108
|
+
let executed = false;
|
|
109
|
+
let closed = false;
|
|
110
|
+
let stage = 'setup';
|
|
111
|
+
let cleanupState = 'pending';
|
|
112
|
+
let acceptLateBinding = true;
|
|
113
|
+
let goalsHost;
|
|
114
|
+
let ownerRoute;
|
|
115
|
+
let factoryPending;
|
|
116
|
+
let bindingDisposeFlight;
|
|
117
|
+
let closeFlight;
|
|
118
|
+
// A caller may close the control while an uncooperative setup operation is
|
|
119
|
+
// still outstanding. Disposing the Context cannot prove that operation has
|
|
120
|
+
// stopped, so that observation must remain unknown.
|
|
121
|
+
let setupSettled = false;
|
|
122
|
+
let lastGoalObservation = null;
|
|
123
|
+
let failureStage = null;
|
|
124
|
+
const disposeBinding = (candidate) => {
|
|
125
|
+
if (candidate === undefined)
|
|
126
|
+
return Promise.resolve();
|
|
127
|
+
if (bindingDisposeFlight === undefined)
|
|
128
|
+
bindingDisposeFlight = Promise.resolve().then(() => candidate.dispose());
|
|
129
|
+
return bindingDisposeFlight;
|
|
130
|
+
};
|
|
131
|
+
const snapshot = () => {
|
|
132
|
+
let currentGoalSnapshot = null;
|
|
133
|
+
if (goal !== undefined && owner && ownerRoute && goalsHost) {
|
|
134
|
+
try {
|
|
135
|
+
currentGoalSnapshot = goalsHost.inspectOwnerGoalExecution({ ownerRouteId: ownerRoute.id, principalId: ownerRoute.principalId,
|
|
136
|
+
workspace: owner.workspace, preset, sessionId: goal.sessionId, goalId: goal.id });
|
|
137
|
+
lastGoalObservation = Object.freeze({ observedAt: Date.now(), value: currentGoalSnapshot });
|
|
138
|
+
}
|
|
139
|
+
catch { /* Current Host evidence is unavailable; explicitly labelled history remains history. */ }
|
|
140
|
+
}
|
|
141
|
+
return Object.freeze({ runtimeRoot: owner?.runtimeRoot ?? null, stage, meter: meter?.snapshot() ?? null, goalSnapshot: currentGoalSnapshot,
|
|
142
|
+
lastGoalObservation, failureStage, cleanup: cleanupState });
|
|
143
|
+
};
|
|
144
|
+
const close = () => {
|
|
145
|
+
if (closeFlight)
|
|
146
|
+
return closeFlight;
|
|
147
|
+
snapshot();
|
|
148
|
+
closed = true;
|
|
149
|
+
acceptLateBinding = false;
|
|
150
|
+
stage = 'cleanup';
|
|
151
|
+
meter?.dispose();
|
|
152
|
+
const cleanup = (async () => {
|
|
153
|
+
const results = await Promise.allSettled([
|
|
154
|
+
owner?.shutdown() ?? ctx.fiber.dispose(), disposeBinding(binding),
|
|
155
|
+
factoryPending ?? Promise.resolve(),
|
|
156
|
+
]);
|
|
157
|
+
const errors = results.filter((result) => result.status === 'rejected').map(result => result.reason);
|
|
158
|
+
if (errors.length)
|
|
159
|
+
throw new AggregateError(errors, 'strategy runtime cleanup failed');
|
|
160
|
+
// Let a raced setup continuation record its terminal cancellation before
|
|
161
|
+
// deciding whether an operation remains unobservable.
|
|
162
|
+
await Promise.resolve();
|
|
163
|
+
if (!setupSettled)
|
|
164
|
+
throw new Error('strategy runtime stop is unknown: setup remains pending');
|
|
165
|
+
})();
|
|
166
|
+
closeFlight = new Promise((resolve, reject) => {
|
|
167
|
+
const timer = setTimeout(() => { cleanupState = 'unknown'; failureStage ??= 'cleanup'; reject(new Error('strategy runtime stop is unknown: cleanup deadline exceeded')); }, stopTimeoutMs);
|
|
168
|
+
cleanup.then(() => { clearTimeout(timer); if (cleanupState !== 'unknown') {
|
|
169
|
+
cleanupState = 'succeeded';
|
|
170
|
+
stage = 'closed';
|
|
171
|
+
} ; resolve(); }, error => { clearTimeout(timer); cleanupState = 'unknown'; failureStage ??= 'cleanup'; reject(error); });
|
|
172
|
+
});
|
|
173
|
+
return closeFlight;
|
|
174
|
+
};
|
|
175
|
+
try {
|
|
176
|
+
input.lifecycle?.(Object.freeze({ close, snapshot }));
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
failureStage = 'setup';
|
|
180
|
+
setupSettled = true;
|
|
181
|
+
try {
|
|
182
|
+
await close();
|
|
183
|
+
}
|
|
184
|
+
catch { /* The observer failure remains the setup failure. */ }
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
const assertLive = () => { signal.throwIfAborted(); if (closed)
|
|
188
|
+
throw new Error('strategy native execution cancelled or closed'); };
|
|
189
|
+
try {
|
|
190
|
+
owner = await createBenchmarkStrategyOwnerRuntime({ ctx, workspace, stateRoot,
|
|
191
|
+
cellId, provider: model.provider, model: model.model, maxOutputTokens: limits.maxOutputTokensPerCall,
|
|
192
|
+
persona, allowedToolNames: toolNames, goalContinuationTimeoutMs: Math.min(300000, budget.durationMs),
|
|
193
|
+
policyRules: [{ id: 'benchmark-goal', effect: 'allow', subject, actions: goalActions, resource: { kind: 'goal', id: 'business-context' }, context: { initiators: ['external'] } },
|
|
194
|
+
...[...toolNames, 'isolation:benchmark-work'].map(id => ({ id: `allow-${id.replace(':', '-')}`, effect: 'allow', subject,
|
|
195
|
+
actions: ['execute'], resource: { kind: 'tool', id }, context: { initiators: ['external'] } }))] });
|
|
196
|
+
if (closed || signal.aborted) {
|
|
197
|
+
await owner.shutdown();
|
|
198
|
+
assertLive();
|
|
199
|
+
}
|
|
200
|
+
assertLive();
|
|
201
|
+
// Literal package names with dynamic loading keep service declarations out of
|
|
202
|
+
// the Evaluation ↔ Goals/Verifier/Delivery bootstrap dependency cycle.
|
|
203
|
+
const names = ['@deepseek-ai/dsh-goal', '@deepseek-ai/dsh-tool-goal', '@deepseek-ai/dsh-goal-round-driver', '@deepseek-ai/dsh-subagent',
|
|
204
|
+
'@dsh-enhanced/assistant-goals', '@dsh-enhanced/assistant-isolation', '@dsh-enhanced/assistant-verifier'];
|
|
205
|
+
const [native, tools, driver, subagents, goalsModule, isolationModule, verifierModule] = await Promise.all(names.map(name => import(__rewriteRelativeImportExtension(name))));
|
|
206
|
+
assertLive();
|
|
207
|
+
await plugin(ctx, native.default);
|
|
208
|
+
assertLive();
|
|
209
|
+
await plugin(ctx, { inject: tools.inject, apply: tools.apply });
|
|
210
|
+
assertLive();
|
|
211
|
+
await plugin(ctx, { inject: driver.inject, apply: driver.apply });
|
|
212
|
+
assertLive();
|
|
213
|
+
await plugin(ctx, subagents.SubagentRuntime);
|
|
214
|
+
assertLive();
|
|
215
|
+
await plugin(ctx, goalsModule.default, { databasePath: join(owner.runtimeRoot, 'goals.sqlite'), verifyNativeRounds: true, verifyGoalOutcome: true,
|
|
216
|
+
preauthorizedCreateMaxRounds: limits.maxGoalRounds, stepMaxDurationMs: stepDuration,
|
|
217
|
+
...(enabled ? { strategy: { maxDurationMs: Math.min(stepDuration, 30000) } } : {}),
|
|
218
|
+
executionBudget: { ...budget, costUsdMicros: budget.costUsdMicros ?? undefined, modelCalls: limits.modelCalls, maxOutputTokensPerCall: limits.maxOutputTokensPerCall } });
|
|
219
|
+
assertLive();
|
|
220
|
+
const goals = ctx.get('assistantGoals');
|
|
221
|
+
goalsHost = goals;
|
|
222
|
+
benchmarkAssert(typeof goals?.inspectOwnerGoalExecution === 'function', 'upgrade Goals: owner execution snapshot API required');
|
|
223
|
+
const lineage = owner.pairOwner();
|
|
224
|
+
const principalId = owner.principalId;
|
|
225
|
+
const ownerRouteId = owner.ownerRouteId;
|
|
226
|
+
ownerRoute = { id: ownerRouteId, principalId };
|
|
227
|
+
const expiresAt = Date.now() + budget.durationMs;
|
|
228
|
+
await plugin(ctx, isolationModule.default, { stateRoot: join(owner.runtimeRoot, 'isolation'), image, dockerPath,
|
|
229
|
+
limits: { maxDurationMs: Math.min(stepDuration, 300000) }, grants: [{ id: 'benchmark-work', revision: 1,
|
|
230
|
+
principalDigest: isolationModule.isolationPrincipalDigest(principalId), ...lineage, workspace: owner.workspace, agentPreset: preset,
|
|
231
|
+
expiresAt, maxRuns: Math.max(1, budget.toolCalls), maxTotalDurationMs: budget.durationMs }] });
|
|
232
|
+
assertLive();
|
|
233
|
+
const authority = { kind: 'isolated-runner', id: 'benchmark-verification', stateRoot: join(owner.runtimeRoot, 'verification-jobs'),
|
|
234
|
+
image, dockerPath, command: task.verification.command, expiresAt,
|
|
235
|
+
maxRuns: Math.min(10000, (limits.maxGoalRounds * 2 + 2) * task.verification.cases.length), maxTotalDurationMs: budget.durationMs,
|
|
236
|
+
maxDurationMs: task.verification.maxDurationMs, maxOutputBytes: task.verification.maxOutputBytes,
|
|
237
|
+
testSets: [{ id: 'cases', cases: task.verification.cases }] };
|
|
238
|
+
const compiled = verifierModule.createVerifierAuthorities({ authorities: [authority] })[0];
|
|
239
|
+
await plugin(ctx, verifierModule.AssistantVerifierService, { databasePath: join(owner.runtimeRoot, 'verifier.sqlite'), tickIntervalMs: 0, requireAcceptance: false,
|
|
240
|
+
authorities: [authority], profiles: ['goal-step', 'goal-outcome'].map(taskKind => ({ id: `benchmark-${taskKind}`, version: 1, taskKind,
|
|
241
|
+
objective: task.objective, scope: { workspace: owner.workspace, preset }, owner: lineage, validityMs: budget.durationMs,
|
|
242
|
+
bounds: { maxDurationMs: stepDuration, maxEvidenceBytes: 8192 }, criteria: [{ id: 'artifact-behavior', kind: 'isolated-process-behavior',
|
|
243
|
+
authority: { id: compiled.id, digest: compiled.digest }, artifactPath: task.artifactPath, testSetId: 'cases' }] })) });
|
|
244
|
+
assertLive();
|
|
245
|
+
const factoryPromise = Promise.resolve().then(() => factory(model, { ctx, workspace: owner.workspace }));
|
|
246
|
+
factoryPending = factoryPromise.then(async (late) => {
|
|
247
|
+
if (!acceptLateBinding || signal.aborted)
|
|
248
|
+
await disposeBinding(late);
|
|
249
|
+
}, () => { });
|
|
250
|
+
binding = await untilAbort(factoryPromise, signal);
|
|
251
|
+
assertLive();
|
|
252
|
+
meter = installStrategyBenchmarkMeter(ctx, { budget, modelCalls: limits.modelCalls, maxOutputTokens: limits.maxOutputTokensPerCall,
|
|
253
|
+
model, binding, signal });
|
|
254
|
+
goals.registerBudgetMeter({ id: 'benchmark-model', provider: model.provider, model: model.model, inputTokenUpperBound: binding.inputTokenUpperBound?.bind(binding),
|
|
255
|
+
inputUsdMicrosPerMillionTokens: model.inputUsdMicrosPerMillionTokens, outputUsdMicrosPerMillionTokens: model.outputUsdMicrosPerMillionTokens,
|
|
256
|
+
cacheReadUsdMicrosPerMillionTokens: model.cacheReadUsdMicrosPerMillionTokens, cacheWriteUsdMicrosPerMillionTokens: model.cacheWriteUsdMicrosPerMillionTokens });
|
|
257
|
+
ctx.on('agent/request', async (_payload, next) => ({ ...await next(), maxTokens: limits.maxOutputTokensPerCall,
|
|
258
|
+
...(model.temperature === null ? {} : { temperature: model.temperature }) }));
|
|
259
|
+
ctx.on('tools/result', execution => {
|
|
260
|
+
if (execution.name !== 'goal_create' || !execution.agent)
|
|
261
|
+
return;
|
|
262
|
+
const records = goals.list(execution.agent).filter(record => record.native.sessionId === String(execution.agent.session.id) && record.native.objective === task.objective);
|
|
263
|
+
if (records.length === 1)
|
|
264
|
+
goal = { id: records[0].id, sessionId: records[0].native.sessionId };
|
|
265
|
+
});
|
|
266
|
+
await owner.installModel(binding.adapter);
|
|
267
|
+
assertLive();
|
|
268
|
+
const runtime = owner;
|
|
269
|
+
const accounting = meter;
|
|
270
|
+
setupSettled = true;
|
|
271
|
+
return Object.freeze({ runtimeRoot: owner.runtimeRoot, close, snapshotMeter: () => accounting.snapshot(),
|
|
272
|
+
async execute() {
|
|
273
|
+
benchmarkAssert(!executed && !closed, 'strategy runtime may execute only once');
|
|
274
|
+
executed = true;
|
|
275
|
+
let result;
|
|
276
|
+
try {
|
|
277
|
+
stage = 'executing';
|
|
278
|
+
assertLive();
|
|
279
|
+
await untilAbort(runtime.sendPublicInbound(task.publicPrompt), accounting.signal);
|
|
280
|
+
await untilAbort(runtime.waitForQuiescence(goals), accounting.signal);
|
|
281
|
+
accounting.assertComplete();
|
|
282
|
+
benchmarkAssert(goal !== undefined, 'model did not create the exact admitted Goal');
|
|
283
|
+
const snapshot = goals.inspectOwnerGoalExecution({ ownerRouteId, principalId,
|
|
284
|
+
workspace: runtime.workspace, preset, sessionId: goal.sessionId, goalId: goal.id });
|
|
285
|
+
result = { snapshot, meter: accounting.snapshot(), outbound: runtime.outbound };
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
failureStage = 'executing';
|
|
289
|
+
throw error;
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
await close();
|
|
293
|
+
}
|
|
294
|
+
stage = 'evidence';
|
|
295
|
+
const native = nativeEvidence(result.snapshot);
|
|
296
|
+
const status = result.snapshot.outcome?.status;
|
|
297
|
+
const verdict = status === 'achieved' || status === 'not-achieved' ? status : 'unknown';
|
|
298
|
+
const store = new StrategyEvidenceStore({ stateDirectory: stateRoot, candidateWorkspace: workspace });
|
|
299
|
+
try {
|
|
300
|
+
const evidence = store.write({ protocol: strategyEvidenceProtocol, version: 1, plan, request,
|
|
301
|
+
input: { digest: digests.inputDigest }, acceptance: { digest: digests.acceptanceDigest, verdict }, versions: request.variant.versions,
|
|
302
|
+
meter: result.meter, native, outcome: { status: verdict === 'unknown' ? 'unknown' : 'completed', verdict, quiescent: native.parent.quiescent } });
|
|
303
|
+
return Object.freeze({ ...result, evidence });
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
failureStage = 'evidence';
|
|
307
|
+
throw error;
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
failureStage ??= 'setup';
|
|
314
|
+
setupSettled = true;
|
|
315
|
+
try {
|
|
316
|
+
await close();
|
|
317
|
+
}
|
|
318
|
+
catch (cleanup) {
|
|
319
|
+
throw new AggregateError([error, cleanup], 'strategy runtime setup failed');
|
|
320
|
+
}
|
|
321
|
+
throw error;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=strategy-goal-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy-goal-runtime.js","sourceRoot":"","sources":["../../src/benchmark/strategy-goal-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-only accounting for a single strategy benchmark cell. This intentionally
|
|
3
|
+
* observes the complete Context (foreground, parent and strategy-child calls),
|
|
4
|
+
* rather than relying on a Goal's inner budget.
|
|
5
|
+
*/
|
|
6
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
7
|
+
import type { NativeAdapterBinding, NativeModelConfig } from './native.js';
|
|
8
|
+
import type { BenchmarkBudget } from './types.js';
|
|
9
|
+
import { type NormalizedTokenUsage } from './usage.js';
|
|
10
|
+
export type StrategyMeterPhase = 'preflight' | 'reserved' | 'streaming' | 'settled' | 'retained' | 'rejected';
|
|
11
|
+
export type StrategyMeterReason = 'cancelled' | 'disposed' | 'request-contract' | 'input-bound' | 'shared-budget' | 'stream' | 'usage' | 'cost' | 'tool-budget';
|
|
12
|
+
export interface StrategyBenchmarkRequestTrace {
|
|
13
|
+
readonly id: number;
|
|
14
|
+
readonly sessionId: string | null;
|
|
15
|
+
readonly agentId: string | null;
|
|
16
|
+
readonly startedAt: number;
|
|
17
|
+
readonly completedAt: number | null;
|
|
18
|
+
readonly phase: StrategyMeterPhase;
|
|
19
|
+
readonly dispatched: boolean;
|
|
20
|
+
readonly reservedInputTokens: number;
|
|
21
|
+
readonly reservedOutputTokens: number;
|
|
22
|
+
readonly reservedCostUsdMicros: number | null;
|
|
23
|
+
readonly usage: Readonly<NormalizedTokenUsage> | null;
|
|
24
|
+
readonly reason: StrategyMeterReason | null;
|
|
25
|
+
}
|
|
26
|
+
export interface StrategyBenchmarkMeterSnapshot {
|
|
27
|
+
readonly observationMode: 'enforced-upper-bound-provider-output';
|
|
28
|
+
readonly budget: Readonly<BenchmarkBudget>;
|
|
29
|
+
readonly modelCalls: number;
|
|
30
|
+
readonly toolCalls: number;
|
|
31
|
+
readonly activeToolCalls: number;
|
|
32
|
+
readonly inputTokens: number;
|
|
33
|
+
readonly outputTokens: number;
|
|
34
|
+
readonly costUsdMicros: number | null;
|
|
35
|
+
readonly heldModelCalls: number;
|
|
36
|
+
readonly heldInputTokens: number;
|
|
37
|
+
readonly heldOutputTokens: number;
|
|
38
|
+
readonly heldCostUsdMicros: number | null;
|
|
39
|
+
readonly traces: readonly StrategyBenchmarkRequestTrace[];
|
|
40
|
+
}
|
|
41
|
+
export interface StrategyBenchmarkMeter {
|
|
42
|
+
/** Pass this to the cell factory and every hand-built request signal. */
|
|
43
|
+
readonly signal: AbortSignal;
|
|
44
|
+
snapshot(): Readonly<StrategyBenchmarkMeterSnapshot>;
|
|
45
|
+
/** Fails unless every dispatched request has trustworthy final usage and no reservation remains. */
|
|
46
|
+
assertComplete(): void;
|
|
47
|
+
dispose(): void;
|
|
48
|
+
}
|
|
49
|
+
export interface StrategyBenchmarkMeterInput {
|
|
50
|
+
readonly budget: Readonly<BenchmarkBudget>;
|
|
51
|
+
readonly modelCalls: number;
|
|
52
|
+
readonly maxOutputTokens: number;
|
|
53
|
+
readonly model: Readonly<NativeModelConfig>;
|
|
54
|
+
readonly binding: Readonly<NativeAdapterBinding>;
|
|
55
|
+
readonly signal: AbortSignal;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Install before any cell work. It rejects estimate/observed modes at setup;
|
|
59
|
+
* there is deliberately no best-effort observation-only fallback in v1.
|
|
60
|
+
*/
|
|
61
|
+
export declare function installStrategyBenchmarkMeter(ctx: Context, input: StrategyBenchmarkMeterInput): Readonly<StrategyBenchmarkMeter>;
|
|
62
|
+
//# sourceMappingURL=strategy-meter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy-meter.d.ts","sourceRoot":"","sources":["../../src/benchmark/strategy-meter.ts"],"names":[],"mappings":"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"}
|