@dsh-enhanced/assistant-evaluation 0.1.32 → 0.1.35

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 (81) hide show
  1. package/README.md +10 -2
  2. package/lib/benchmark/cli.d.ts.map +1 -1
  3. package/lib/benchmark/cli.js +57 -21
  4. package/lib/benchmark/cli.js.map +1 -1
  5. package/lib/benchmark/native-goal-services.d.ts +64 -0
  6. package/lib/benchmark/native-goal-services.d.ts.map +1 -0
  7. package/lib/benchmark/native-goal-services.js +52 -0
  8. package/lib/benchmark/native-goal-services.js.map +1 -0
  9. package/lib/benchmark/native-skills-runtime.d.ts +155 -0
  10. package/lib/benchmark/native-skills-runtime.d.ts.map +1 -0
  11. package/lib/benchmark/native-skills-runtime.js +336 -0
  12. package/lib/benchmark/native-skills-runtime.js.map +1 -0
  13. package/lib/benchmark/native-skills.d.ts +142 -0
  14. package/lib/benchmark/native-skills.d.ts.map +1 -0
  15. package/lib/benchmark/native-skills.js +259 -0
  16. package/lib/benchmark/native-skills.js.map +1 -0
  17. package/lib/benchmark/native.d.ts +7 -0
  18. package/lib/benchmark/native.d.ts.map +1 -1
  19. package/lib/benchmark/native.js.map +1 -1
  20. package/lib/benchmark/strategy-capabilities.d.ts.map +1 -1
  21. package/lib/benchmark/strategy-capabilities.js +9 -0
  22. package/lib/benchmark/strategy-capabilities.js.map +1 -1
  23. package/lib/benchmark/strategy-config.d.ts +3 -2
  24. package/lib/benchmark/strategy-config.d.ts.map +1 -1
  25. package/lib/benchmark/strategy-config.js +19 -6
  26. package/lib/benchmark/strategy-config.js.map +1 -1
  27. package/lib/benchmark/strategy-corpus-v2.d.ts +18 -0
  28. package/lib/benchmark/strategy-corpus-v2.d.ts.map +1 -0
  29. package/lib/benchmark/strategy-corpus-v2.js +143 -0
  30. package/lib/benchmark/strategy-corpus-v2.js.map +1 -0
  31. package/lib/benchmark/strategy-corpus.d.ts +9 -0
  32. package/lib/benchmark/strategy-corpus.d.ts.map +1 -1
  33. package/lib/benchmark/strategy-corpus.js +3 -3
  34. package/lib/benchmark/strategy-corpus.js.map +1 -1
  35. package/lib/benchmark/strategy-evidence.d.ts.map +1 -1
  36. package/lib/benchmark/strategy-evidence.js +50 -9
  37. package/lib/benchmark/strategy-evidence.js.map +1 -1
  38. package/lib/benchmark/strategy-executor.d.ts.map +1 -1
  39. package/lib/benchmark/strategy-executor.js +6 -4
  40. package/lib/benchmark/strategy-executor.js.map +1 -1
  41. package/lib/benchmark/strategy-goal-runtime.d.ts.map +1 -1
  42. package/lib/benchmark/strategy-goal-runtime.js +13 -55
  43. package/lib/benchmark/strategy-goal-runtime.js.map +1 -1
  44. package/lib/benchmark/strategy-meter.d.ts +2 -2
  45. package/lib/benchmark/strategy-meter.d.ts.map +1 -1
  46. package/lib/benchmark/strategy-meter.js +98 -4
  47. package/lib/benchmark/strategy-meter.js.map +1 -1
  48. package/lib/benchmark/strategy-plan.d.ts +7 -0
  49. package/lib/benchmark/strategy-plan.d.ts.map +1 -1
  50. package/lib/benchmark/strategy-plan.js +12 -2
  51. package/lib/benchmark/strategy-plan.js.map +1 -1
  52. package/lib/benchmark/strategy-projection.d.ts +157 -0
  53. package/lib/benchmark/strategy-projection.d.ts.map +1 -0
  54. package/lib/benchmark/strategy-projection.js +171 -0
  55. package/lib/benchmark/strategy-projection.js.map +1 -0
  56. package/lib/benchmark/super-relay.d.ts +26 -0
  57. package/lib/benchmark/super-relay.d.ts.map +1 -0
  58. package/lib/benchmark/super-relay.js +173 -0
  59. package/lib/benchmark/super-relay.js.map +1 -0
  60. package/lib/benchmark/traex.d.ts +17 -0
  61. package/lib/benchmark/traex.d.ts.map +1 -0
  62. package/lib/benchmark/traex.js +139 -0
  63. package/lib/benchmark/traex.js.map +1 -0
  64. package/lib/service.d.ts +25 -1
  65. package/lib/service.d.ts.map +1 -1
  66. package/lib/service.js +20 -4
  67. package/lib/service.js.map +1 -1
  68. package/lib/sqlite.d.ts +1 -1
  69. package/lib/sqlite.d.ts.map +1 -1
  70. package/lib/sqlite.js +46 -1
  71. package/lib/sqlite.js.map +1 -1
  72. package/lib/store.d.ts +13 -1
  73. package/lib/store.d.ts.map +1 -1
  74. package/lib/store.js +90 -4
  75. package/lib/store.js.map +1 -1
  76. package/lib/types.d.ts +13 -0
  77. package/lib/types.d.ts.map +1 -1
  78. package/lib/types.js.map +1 -1
  79. package/lib/version.d.ts +1 -1
  80. package/lib/version.js +1 -1
  81. package/package.json +49 -12
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Strategy-only read-only projection of the immutable evidence objects.
3
+ *
4
+ * This never becomes evidence itself: it re-derives coordination cost splits and a
5
+ * conservative failure attribution from evidence that verifyStrategyBenchmarkResults
6
+ * has already reopened and bound. The shared BenchmarkMetrics/BenchmarkResult shape
7
+ * (persisted across suites and in the journal) is intentionally untouched.
8
+ */
9
+ import { benchmarkSchedule } from './schema.js';
10
+ import { strategyBenchmarkJournalPlan } from './strategy-plan.js';
11
+ import { StrategyEvidenceStore } from './strategy-evidence.js';
12
+ import { tokenUsageCost } from './usage.js';
13
+ export const strategyProjectionProtocol = 'dsh-native-goal-strategy-projection/v1';
14
+ /**
15
+ * Criterion reasons emitted with status 'failed' by the independent verifier
16
+ * (plugins/assistant-verifier drivers.ts failed() calls). Every one of these means
17
+ * the candidate delivered an artifact that was actually inspected and found wrong.
18
+ * artifact-unavailable / altered / timeout / io reasons are status 'unknown' and
19
+ * cannot distinguish an undelivered artifact from a tool failure, so they stay unknown.
20
+ */
21
+ export const behaviorFailureReasons = [
22
+ 'citation-mismatch', 'citation-missing', 'isolated-unexpected-exit-code', 'isolated-unexpected-stdout',
23
+ 'readback-object-mismatch', 'readback-revision-mismatch', 'readback-value-mismatch',
24
+ 'repository-head-mismatch', 'repository-requirements-not-met', 'required-text-missing',
25
+ 'unexpected-exit-code', 'unexpected-stdout',
26
+ ];
27
+ const behaviorFailureReasonSet = new Set(behaviorFailureReasons);
28
+ /**
29
+ * Sums settled traces attributed to one session role, recomputing cost per trace.
30
+ * A settled trace always counts one model call. In observed-call-count mode the
31
+ * evidence meter freezes usage=null: the call still counts, tokens add nothing and
32
+ * the monetary total becomes null (never estimated). Token-mode traces are
33
+ * evidence-guaranteed to carry non-null usage, so usage=null is self-describing.
34
+ */
35
+ export function accumulateSessionCost(traces, sessions, rates) {
36
+ let modelCalls = 0;
37
+ let inputTokens = 0;
38
+ let outputTokens = 0;
39
+ let costUsdMicros = 0;
40
+ for (const trace of traces) {
41
+ if (trace.phase !== 'settled' || trace.sessionId === null || !sessions.has(trace.sessionId))
42
+ continue;
43
+ modelCalls += 1;
44
+ if (trace.usage === null) {
45
+ costUsdMicros = null;
46
+ continue;
47
+ }
48
+ inputTokens += trace.usage.inputTokens;
49
+ outputTokens += trace.usage.outputTokens;
50
+ const cost = tokenUsageCost(trace.usage, rates);
51
+ costUsdMicros = cost === null || costUsdMicros === null ? null : costUsdMicros + cost;
52
+ }
53
+ return Object.freeze({ modelCalls, inputTokens, outputTokens, costUsdMicros });
54
+ }
55
+ function receiptAttribution(receipts) {
56
+ return Object.freeze(receipts.map(entry => Object.freeze({
57
+ contractId: entry.contract.id, taskKind: entry.taskKind, objectiveStatus: entry.receipt.objectiveStatus, quiescent: entry.quiescent,
58
+ failedCriteria: Object.freeze(entry.receipt.results
59
+ .filter(result => result.status === 'failed')
60
+ .map(result => Object.freeze({ criterionId: result.criterionId, reason: result.reason, behaviorFailure: behaviorFailureReasonSet.has(result.reason) }))),
61
+ })));
62
+ }
63
+ /** Terminal unknown cell: a failure object proves uncertainty, never an acceptance. */
64
+ export function unknownStrategyCellProjection(result) {
65
+ return Object.freeze({
66
+ cellId: result.cell.id, caseId: result.cell.caseId, variantId: result.cell.variantId, repeat: result.cell.repeat,
67
+ status: 'unknown', verdict: 'unknown',
68
+ attribution: Object.freeze({ classification: 'undelivered-or-unknown', basis: 'infrastructure-unknown',
69
+ infrastructureReason: result.reason, receipts: Object.freeze([]) }),
70
+ costs: null,
71
+ });
72
+ }
73
+ /**
74
+ * Pure derivation over a reopened, already-verified evidence object. No binding
75
+ * checks are repeated here: callers must obtain `native` through the evidence store
76
+ * after verifyStrategyBenchmarkResults, never from candidate prose.
77
+ */
78
+ export function projectStrategyCell(result, native, rates) {
79
+ benchmarkAssertCompleted(result);
80
+ const childSessions = new Set(native.native.strategies.flatMap(strategy => strategy.children.map(child => child.sessionId)));
81
+ const costs = Object.freeze({
82
+ parent: accumulateSessionCost(native.meter.traces, new Set([native.native.parent.sessionId]), rates),
83
+ children: accumulateSessionCost(native.meter.traces, childSessions, rates),
84
+ });
85
+ const receipts = receiptAttribution(native.native.receipts);
86
+ const hasBehaviorFailure = receipts.some(receipt => receipt.quiescent && receipt.failedCriteria.some(criterion => criterion.behaviorFailure));
87
+ const classification = result.verdict === 'achieved' ? 'achieved'
88
+ : result.verdict === 'not-achieved' && hasBehaviorFailure ? 'delivered-incorrect-behavior'
89
+ : 'undelivered-or-unknown';
90
+ const basis = classification === 'achieved' ? 'achieved'
91
+ : classification === 'delivered-incorrect-behavior' ? 'receipt-behavior-failure'
92
+ : 'no-behavior-failure-receipt';
93
+ return Object.freeze({
94
+ cellId: result.cell.id, caseId: result.cell.caseId, variantId: result.cell.variantId, repeat: result.cell.repeat,
95
+ status: 'completed', verdict: result.verdict,
96
+ attribution: Object.freeze({ classification, basis, infrastructureReason: null, receipts }),
97
+ costs,
98
+ });
99
+ }
100
+ function benchmarkAssertCompleted(result) {
101
+ if (result.status !== 'completed' || result.evidenceDigest === null)
102
+ throw new Error('strategy projection: completed result requires bound evidence');
103
+ }
104
+ function totalCellCost(costs) {
105
+ const costUsdMicros = costs.parent.costUsdMicros === null || costs.children.costUsdMicros === null
106
+ ? null : costs.parent.costUsdMicros + costs.children.costUsdMicros;
107
+ return Object.freeze({
108
+ modelCalls: costs.parent.modelCalls + costs.children.modelCalls,
109
+ inputTokens: costs.parent.inputTokens + costs.children.inputTokens,
110
+ outputTokens: costs.parent.outputTokens + costs.children.outputTokens,
111
+ costUsdMicros,
112
+ });
113
+ }
114
+ /** Pairs direct/adaptive-strategy arms by (caseId, repeat) over the planned schedule. */
115
+ export function pairStrategyCells(plan, cells) {
116
+ const byKey = new Map(cells.map(cell => [`${cell.caseId} ${cell.variantId} ${cell.repeat}`, cell]));
117
+ const meta = [];
118
+ const seen = new Set();
119
+ for (const cell of benchmarkSchedule(strategyBenchmarkJournalPlan(plan))) {
120
+ const key = `${cell.caseId} ${cell.repeat}`;
121
+ if (!seen.has(key)) {
122
+ seen.add(key);
123
+ meta.push({ caseId: cell.caseId, repeat: cell.repeat });
124
+ }
125
+ }
126
+ return Object.freeze(meta.map(({ caseId, repeat }) => {
127
+ const direct = byKey.get(`${caseId} direct ${repeat}`);
128
+ const candidate = byKey.get(`${caseId} adaptive-strategy ${repeat}`);
129
+ const comparable = direct !== undefined && candidate !== undefined && direct.status === 'completed' && candidate.status === 'completed'
130
+ && direct.costs !== null && candidate.costs !== null;
131
+ let coordination = null;
132
+ if (comparable) {
133
+ const directTotal = totalCellCost(direct.costs);
134
+ const candidateTotal = totalCellCost(candidate.costs);
135
+ const extraCost = directTotal.costUsdMicros === null || candidateTotal.costUsdMicros === null ? null
136
+ : candidateTotal.costUsdMicros - directTotal.costUsdMicros;
137
+ coordination = Object.freeze({
138
+ candidateChildren: candidate.costs.children,
139
+ extra: Object.freeze({
140
+ modelCalls: candidateTotal.modelCalls - directTotal.modelCalls,
141
+ inputTokens: candidateTotal.inputTokens - directTotal.inputTokens,
142
+ outputTokens: candidateTotal.outputTokens - directTotal.outputTokens,
143
+ costUsdMicros: extraCost,
144
+ }),
145
+ });
146
+ }
147
+ return Object.freeze({ caseId, repeat, directCellId: direct?.cellId ?? null, candidateCellId: candidate?.cellId ?? null, comparable, coordination });
148
+ }));
149
+ }
150
+ /**
151
+ * Reopens every evidence object (the caller must run verifyStrategyBenchmarkResults
152
+ * first) and derives the strategy-only projection. Rates are the frozen model
153
+ * tariffs; absent tariffs yield null costs rather than invented pricing.
154
+ */
155
+ export function collectStrategyBenchmarkProjection(plan, results, stateDirectory, workspaceDirectory, rates) {
156
+ const evidence = new StrategyEvidenceStore({ stateDirectory, candidateWorkspace: workspaceDirectory, createDirectories: false });
157
+ const tariffComplete = rates.inputUsdMicrosPerMillionTokens !== null && rates.outputUsdMicrosPerMillionTokens !== null;
158
+ const cells = [];
159
+ for (const result of results) {
160
+ if (result.status === 'unknown') {
161
+ cells.push(unknownStrategyCellProjection(result));
162
+ continue;
163
+ }
164
+ const cell = evidence.readCell(plan, result.cell, result.evidenceDigest);
165
+ const native = evidence.read(plan, result.cell, cell.nativeEvidenceDigest);
166
+ cells.push(projectStrategyCell(result, native, rates));
167
+ }
168
+ return Object.freeze({ protocol: strategyProjectionProtocol, version: 1, tariffComplete,
169
+ cells: Object.freeze(cells), pairs: pairStrategyCells(plan, cells), promotionAuthorized: false });
170
+ }
171
+ //# sourceMappingURL=strategy-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-projection.js","sourceRoot":"","sources":["../../src/benchmark/strategy-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Super Relay(OpenAI Responses 协议)真实模型评测的可信 Host binding。
3
+ *
4
+ * 这是 `dsh-benchmark --adapter` 的 adapter 模块:它不激活 super-relay bundle,
5
+ * 也不在 benchmark Context 里注册 Goal meter;只把生产 adapter 包一层做逐请求
6
+ * 契约冻结(provider/model/maxTokens/temperature 漂移一律拒绝)。
7
+ *
8
+ * 计量语义:super-relay Responses 路由真实回传 usage(input/output/total token),
9
+ * 因此走 native.ts 默认的 token 计量模式(enforced-upper-bound-provider-output)。
10
+ * 网关没有公开定价,故四档费率与 budget.costUsdMicros 恒为 null——token 如实计量,
11
+ * 金钱成本绝不估算、绝不伪造。input 上界 200000 是保守 fail-closed 上限,不是对
12
+ * 任一请求实际消耗的估算。
13
+ */
14
+ import type { Context } from '@deepseek-ai/cordis';
15
+ import type { NativeAdapterBinding, NativeAdapterFactory, NativeModelConfig } from './native.js';
16
+ export interface SuperRelayNativeAdapterOptions {
17
+ timeoutMs?: number;
18
+ }
19
+ /** Freeze the transport deadline before creating any source or comparison cell. */
20
+ export declare function createSuperRelayNativeAdapterFactory(options?: Readonly<SuperRelayNativeAdapterOptions>): NativeAdapterFactory;
21
+ /** Default CLI binding retains the production 60-second request deadline. */
22
+ export declare function createNativeAdapter(model: Readonly<NativeModelConfig>, environment: Readonly<{
23
+ ctx: Context;
24
+ workspace: string;
25
+ }>): Promise<NativeAdapterBinding>;
26
+ //# sourceMappingURL=super-relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"super-relay.d.ts","sourceRoot":"","sources":["../../src/benchmark/super-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAqHhG,MAAM,WAAW,8BAA8B;IAAG,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AAEtE,mFAAmF;AACnF,wBAAgB,oCAAoC,CAAC,OAAO,GAAE,QAAQ,CAAC,8BAA8B,CAAM,GAAG,oBAAoB,CAcjI;AAED,6EAA6E;AAC7E,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEvK"}
@@ -0,0 +1,173 @@
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
+ import { LlmAdapter } from '@deepseek-ai/dsh-llm';
10
+ const packageName = '@dsh-enhanced/assistant-super-relay-budget';
11
+ const provider = 'super-relay';
12
+ const models = Object.freeze(['auto_model/alwaysday1']);
13
+ // 与生产包 contract.ts 中的保守 fail-closed 上界保持字面一致;runtime() 会交叉断言。
14
+ const inputTokenUpperBound = 200_000;
15
+ function assertCurrentContract(expiresAt, now = Date.now()) {
16
+ const contractExpiry = Date.parse(expiresAt);
17
+ if (!Number.isFinite(now) || !Number.isFinite(contractExpiry) || now >= contractExpiry) {
18
+ throw new Error('assistant-evaluation: Super Relay protocol contract has expired');
19
+ }
20
+ }
21
+ function runtime(value) {
22
+ if (value === null || typeof value !== 'object')
23
+ throw new Error('assistant-evaluation: Super Relay adapter runtime is unavailable');
24
+ const candidate = value;
25
+ if (typeof candidate.SuperRelayGoalMeteredAdapter !== 'function' || candidate.SUPER_RELAY_PROVIDER !== provider
26
+ || !Array.isArray(candidate.SUPER_RELAY_MODELS) || candidate.SUPER_RELAY_MODELS.length !== models.length
27
+ || !candidate.SUPER_RELAY_MODELS.every((item, index) => item === models[index])
28
+ || typeof candidate.SUPER_RELAY_INPUT_TOKEN_UPPER_BOUND !== 'number' || !Number.isSafeInteger(candidate.SUPER_RELAY_INPUT_TOKEN_UPPER_BOUND)
29
+ || candidate.SUPER_RELAY_INPUT_TOKEN_UPPER_BOUND !== inputTokenUpperBound || candidate.SUPER_RELAY_RESPONSES_CONTRACT === null
30
+ || typeof candidate.SUPER_RELAY_RESPONSES_CONTRACT !== 'object' || typeof candidate.SUPER_RELAY_RESPONSES_CONTRACT.expiresAt !== 'string') {
31
+ throw new Error('assistant-evaluation: Super Relay adapter runtime is incompatible');
32
+ }
33
+ return candidate;
34
+ }
35
+ function validateModel(model) {
36
+ if (model.provider !== provider)
37
+ throw new Error('assistant-evaluation: invalid Super Relay provider');
38
+ if (!models.includes(model.model))
39
+ throw new Error('assistant-evaluation: invalid Super Relay model');
40
+ if ((model.inputLimitMode ?? 'upper-bound') !== 'upper-bound' || (model.outputLimitMode ?? 'provider') !== 'provider') {
41
+ throw new Error('assistant-evaluation: Super Relay benchmark requires upper-bound input and provider output limits');
42
+ }
43
+ if (model.temperature !== null && (!Number.isFinite(model.temperature) || model.temperature < 0 || model.temperature > 2)) {
44
+ throw new Error('assistant-evaluation: invalid Super Relay temperature');
45
+ }
46
+ if (!Number.isSafeInteger(model.maxOutputTokens) || model.maxOutputTokens < 1 || model.maxOutputTokens > 32_768) {
47
+ throw new Error('assistant-evaluation: invalid Super Relay max output tokens');
48
+ }
49
+ // 网关无公开定价:任何非空费率都视为未核验,拒绝而不是默默套用。
50
+ for (const field of ['inputUsdMicrosPerMillionTokens', 'outputUsdMicrosPerMillionTokens', 'cacheReadUsdMicrosPerMillionTokens', 'cacheWriteUsdMicrosPerMillionTokens']) {
51
+ const value = model[field];
52
+ if (value !== null && value !== undefined)
53
+ throw new Error('assistant-evaluation: Super Relay tariff is unverified');
54
+ }
55
+ }
56
+ function validateRequest(model, expiresAt, options, disposed) {
57
+ if (disposed)
58
+ throw new Error('assistant-evaluation: Super Relay benchmark adapter is disposed');
59
+ assertCurrentContract(expiresAt);
60
+ if (options.provider !== model.provider || options.model !== model.model || options.maxTokens !== model.maxOutputTokens
61
+ || options.temperature !== (model.temperature ?? undefined))
62
+ throw new Error('assistant-evaluation: Super Relay benchmark request drift');
63
+ }
64
+ function validateProvider(model, expiresAt, requestedProvider, disposed) {
65
+ if (disposed)
66
+ throw new Error('assistant-evaluation: Super Relay benchmark adapter is disposed');
67
+ assertCurrentContract(expiresAt);
68
+ if (requestedProvider !== model.provider)
69
+ throw new Error('assistant-evaluation: Super Relay benchmark request drift');
70
+ }
71
+ function validateRoute(model, expiresAt, requestedProvider, requestedModel, disposed) {
72
+ validateProvider(model, expiresAt, requestedProvider, disposed);
73
+ if (requestedModel !== model.model)
74
+ throw new Error('assistant-evaluation: Super Relay benchmark request drift');
75
+ }
76
+ class FrozenSuperRelayAdapter extends LlmAdapter {
77
+ model;
78
+ expiresAt;
79
+ production;
80
+ #disposed = false;
81
+ constructor(model, expiresAt, production) {
82
+ super();
83
+ this.model = model;
84
+ this.expiresAt = expiresAt;
85
+ this.production = production;
86
+ }
87
+ async *stream(options) {
88
+ validateRequest(this.model, this.expiresAt, options, this.#disposed);
89
+ for await (const chunk of this.production.stream(options))
90
+ yield chunk;
91
+ }
92
+ providerInfo(requestedProvider) {
93
+ validateProvider(this.model, this.expiresAt, requestedProvider, this.#disposed);
94
+ return this.production.providerInfo(requestedProvider);
95
+ }
96
+ providerRetryPolicy(requestedProvider) {
97
+ validateProvider(this.model, this.expiresAt, requestedProvider, this.#disposed);
98
+ return this.production.providerRetryPolicy(requestedProvider);
99
+ }
100
+ async listModels(requestedProvider) {
101
+ validateProvider(this.model, this.expiresAt, requestedProvider, this.#disposed);
102
+ const available = await this.production.listModels(requestedProvider);
103
+ return available.filter(candidate => candidate.id === this.model.model);
104
+ }
105
+ async resolveModel(requestedProvider, requestedModel, signal) {
106
+ validateRoute(this.model, this.expiresAt, requestedProvider, requestedModel, this.#disposed);
107
+ return this.production.resolveModel(requestedProvider, requestedModel, signal);
108
+ }
109
+ dispose() {
110
+ if (this.#disposed)
111
+ return;
112
+ this.#disposed = true;
113
+ this.production.shutdown();
114
+ }
115
+ }
116
+ /** Freeze the transport deadline before creating any source or comparison cell. */
117
+ export function createSuperRelayNativeAdapterFactory(options = {}) {
118
+ if (options === null || typeof options !== 'object' || ![Object.prototype, null].includes(Object.getPrototypeOf(options))) {
119
+ throw new Error('assistant-evaluation: invalid Super Relay adapter options');
120
+ }
121
+ for (const key of Reflect.ownKeys(options)) {
122
+ const descriptor = Object.getOwnPropertyDescriptor(options, key);
123
+ if (key !== 'timeoutMs' || !('value' in descriptor))
124
+ throw new Error('assistant-evaluation: invalid Super Relay adapter options');
125
+ }
126
+ const configuredTimeout = Object.getOwnPropertyDescriptor(options, 'timeoutMs')?.value;
127
+ const timeoutMs = configuredTimeout === undefined ? 60_000 : configuredTimeout;
128
+ if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1_000 || timeoutMs > 300_000) {
129
+ throw new Error('assistant-evaluation: invalid Super Relay request timeout');
130
+ }
131
+ return (model, environment) => createConfiguredAdapter(model, environment, timeoutMs);
132
+ }
133
+ /** Default CLI binding retains the production 60-second request deadline. */
134
+ export async function createNativeAdapter(model, environment) {
135
+ return createConfiguredAdapter(model, environment, 60_000);
136
+ }
137
+ async function createConfiguredAdapter(model, environment, timeoutMs) {
138
+ // 变量 import 避免 evaluation→super-relay-budget 的声明期构建环;真实包由操作者
139
+ // 在跑 run 前安装并经 `dsh-benchmark doctor` 探测,工程层/类型层不依赖其已链接。
140
+ // moduleId 显式宽化为 string,使 tsc 不做字面量模块解析(包尚未链接时不报 TS2307),
141
+ // 运行时形态由上面的 runtime() 结构校验严格把关。
142
+ const moduleId = packageName;
143
+ const relay = runtime(await import(__rewriteRelativeImportExtension(moduleId)));
144
+ validateModel(model);
145
+ assertCurrentContract(relay.SUPER_RELAY_RESPONSES_CONTRACT.expiresAt);
146
+ const frozenModel = Object.freeze({ ...model });
147
+ // 请求时限由可信 Host 在工厂创建前固定;4MiB 响应上限仍取生产默认值。
148
+ // 此处不暴露任何 fetch/now/endpoint/
149
+ // 环境覆写,也绝不接受明文 key,凭证只经 dsh-credentials 按 SUPER_RELAY_API_KEY 引用解析。
150
+ // 其余配置项由生产 normalizeConfig 补默认,enabled 仅在 cordis
151
+ // apply 入口门控、adapter 本身不读取。
152
+ const production = new relay.SuperRelayGoalMeteredAdapter({ defaultMaxTokens: frozenModel.maxOutputTokens, timeoutMs }, {
153
+ credentialResolver: () => environment.ctx.get('credentials'),
154
+ });
155
+ if (!(production instanceof LlmAdapter) || typeof production.shutdown !== 'function')
156
+ throw new Error('assistant-evaluation: Super Relay adapter runtime is incompatible');
157
+ const adapter = new FrozenSuperRelayAdapter(frozenModel, relay.SUPER_RELAY_RESPONSES_CONTRACT.expiresAt, production);
158
+ let disposed = false;
159
+ return Object.freeze({
160
+ adapter,
161
+ inputTokenUpperBound(options) {
162
+ validateRequest(frozenModel, relay.SUPER_RELAY_RESPONSES_CONTRACT.expiresAt, options, disposed);
163
+ return relay.SUPER_RELAY_INPUT_TOKEN_UPPER_BOUND;
164
+ },
165
+ dispose() {
166
+ if (disposed)
167
+ return;
168
+ disposed = true;
169
+ adapter.dispose();
170
+ },
171
+ });
172
+ }
173
+ //# sourceMappingURL=super-relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"super-relay.js","sourceRoot":"","sources":["../../src/benchmark/super-relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Trusted Host binding for the fixed TraeX ACP route (observed-call-count mode).
3
+ *
4
+ * This is deliberately an adapter module for `dsh-benchmark --adapter`; it does
5
+ * not activate the TraeX provider bundle. Unlike the DeepSeek binding there is no
6
+ * protocol expiry, no credential resolver and no input-token upper bound: the
7
+ * local TraeX login state authenticates the ACP subprocess and the strategy
8
+ * meter counts settled model calls while rejecting any provider-emitted usage.
9
+ */
10
+ import type { Context } from '@deepseek-ai/cordis';
11
+ import type { NativeAdapterBinding, NativeModelConfig } from './native.js';
12
+ /** Create the trusted native benchmark binding for a fixed TraeX model. */
13
+ export declare function createNativeAdapter(model: Readonly<NativeModelConfig>, environment: Readonly<{
14
+ ctx: Context;
15
+ workspace: string;
16
+ }>): Promise<NativeAdapterBinding>;
17
+ //# sourceMappingURL=traex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traex.d.ts","sourceRoot":"","sources":["../../src/benchmark/traex.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AA6G1E,2EAA2E;AAC3E,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkCvK"}
@@ -0,0 +1,139 @@
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
+ import { LlmAdapter } from '@deepseek-ai/dsh-llm';
10
+ const packageName = '@dsh-enhanced/traex-acp-provider';
11
+ const routeCapabilitiesPackage = '@dsh-enhanced/llm-route-capabilities';
12
+ const provider = 'traex-agent';
13
+ // The one route/model pair already proven against the real local TraeX login state (WP14).
14
+ const models = Object.freeze(['gpt-5.6-terra']);
15
+ const command = 'traex';
16
+ function runtime(value) {
17
+ if (value === null || typeof value !== 'object')
18
+ throw new Error('assistant-evaluation: TraeX adapter runtime is unavailable');
19
+ const candidate = value;
20
+ if (typeof candidate.TraexAcpAdapter !== 'function' || candidate.TRAEX_PROVIDER_ROUTE !== provider
21
+ || typeof candidate.normalizeConfig !== 'function') {
22
+ throw new Error('assistant-evaluation: TraeX adapter runtime is incompatible');
23
+ }
24
+ return candidate;
25
+ }
26
+ function validateModel(model) {
27
+ if (model.observationMode !== 'observed-call-count') {
28
+ throw new Error('assistant-evaluation: TraeX benchmark requires observed-call-count observation mode');
29
+ }
30
+ if (model.provider !== provider)
31
+ throw new Error('assistant-evaluation: invalid TraeX provider');
32
+ if (!models.includes(model.model))
33
+ throw new Error('assistant-evaluation: invalid TraeX model');
34
+ if (model.temperature !== null && (!Number.isFinite(model.temperature) || model.temperature < 0 || model.temperature > 2)) {
35
+ throw new Error('assistant-evaluation: invalid TraeX temperature');
36
+ }
37
+ if (!Number.isSafeInteger(model.maxOutputTokens) || model.maxOutputTokens < 1) {
38
+ throw new Error('assistant-evaluation: invalid TraeX max output tokens');
39
+ }
40
+ // No token contract exists on this route: every tariff must stay null so a
41
+ // conclusion can never cite a token count or a monetary cost that was never measured.
42
+ for (const field of ['inputUsdMicrosPerMillionTokens', 'outputUsdMicrosPerMillionTokens', 'cacheReadUsdMicrosPerMillionTokens', 'cacheWriteUsdMicrosPerMillionTokens']) {
43
+ const value = model[field];
44
+ if (value !== null && value !== undefined)
45
+ throw new Error('assistant-evaluation: TraeX route must not declare token tariffs');
46
+ }
47
+ }
48
+ function validateRequest(model, options, disposed) {
49
+ if (disposed)
50
+ throw new Error('assistant-evaluation: TraeX benchmark adapter is disposed');
51
+ if (options.provider !== model.provider || options.model !== model.model || options.maxTokens !== model.maxOutputTokens
52
+ || options.temperature !== (model.temperature ?? undefined))
53
+ throw new Error('assistant-evaluation: TraeX benchmark request drift');
54
+ }
55
+ function validateProvider(model, providerName, disposed) {
56
+ if (disposed)
57
+ throw new Error('assistant-evaluation: TraeX benchmark adapter is disposed');
58
+ if (providerName !== model.provider)
59
+ throw new Error('assistant-evaluation: TraeX benchmark request drift');
60
+ }
61
+ class FrozenTraexAdapter extends LlmAdapter {
62
+ model;
63
+ production;
64
+ #disposed = false;
65
+ constructor(model, production) {
66
+ super();
67
+ this.model = model;
68
+ this.production = production;
69
+ }
70
+ async *stream(options) {
71
+ validateRequest(this.model, options, this.#disposed);
72
+ for await (const chunk of this.production.stream(options))
73
+ yield chunk;
74
+ }
75
+ providerInfo(providerName) {
76
+ validateProvider(this.model, providerName, this.#disposed);
77
+ return this.production.providerInfo(providerName);
78
+ }
79
+ providerRetryPolicy(providerName) {
80
+ validateProvider(this.model, providerName, this.#disposed);
81
+ return this.production.providerRetryPolicy(providerName);
82
+ }
83
+ async listModels(providerName) {
84
+ validateProvider(this.model, providerName, this.#disposed);
85
+ const listed = await this.production.listModels(providerName);
86
+ return listed.filter(candidate => candidate.id === this.model.model);
87
+ }
88
+ async resolveModel(providerName, requestedModel, signal) {
89
+ validateProvider(this.model, providerName, this.#disposed);
90
+ if (requestedModel !== this.model.model)
91
+ throw new Error('assistant-evaluation: TraeX benchmark request drift');
92
+ return this.production.resolveModel(providerName, requestedModel, signal);
93
+ }
94
+ dispose() {
95
+ if (this.#disposed)
96
+ return;
97
+ this.#disposed = true;
98
+ this.production.shutdown();
99
+ }
100
+ }
101
+ /** Create the trusted native benchmark binding for a fixed TraeX model. */
102
+ export async function createNativeAdapter(model, environment) {
103
+ // Variable imports avoid an Evaluation-to-TraeX declaration-build cycle and keep
104
+ // the optional peer packages out of module load for suites that never use this route.
105
+ const [traexModule, routeCapabilities] = await Promise.all([import(__rewriteRelativeImportExtension(packageName)), import(__rewriteRelativeImportExtension(routeCapabilitiesPackage))]);
106
+ const traex = runtime(traexModule);
107
+ validateModel(model);
108
+ const frozenModel = Object.freeze({ ...model });
109
+ const config = traex.normalizeConfig({ enabled: true, command, cwd: environment.workspace, models: [frozenModel.model] });
110
+ const liveSessions = environment.ctx.get('sessions');
111
+ const agents = environment.ctx.get('agents');
112
+ // Fail closed: the trusted ACP subprocess cannot be constructed without a live
113
+ // session lookup and the loop request attestor.
114
+ if (liveSessions === undefined || agents === undefined) {
115
+ throw new Error('assistant-evaluation: TraeX benchmark requires live loop sessions and agents services');
116
+ }
117
+ const dependencies = {
118
+ // A local ACP subprocess must be bound to a live loop session, never a static workspace.
119
+ liveSessions,
120
+ requestAttestor: routeCapabilities.createAgentLoopRequestAttestor(agents, [provider]),
121
+ };
122
+ const production = new traex.TraexAcpAdapter(config, dependencies);
123
+ if (!(production instanceof LlmAdapter) || typeof production.shutdown !== 'function')
124
+ throw new Error('assistant-evaluation: TraeX adapter runtime is incompatible');
125
+ const adapter = new FrozenTraexAdapter(frozenModel, production);
126
+ let disposed = false;
127
+ // Intentionally no inputTokenUpperBound: the binding only carries the adapter,
128
+ // and the calls-mode meter enforces request contract, call/tool budgets and finish shape.
129
+ return Object.freeze({
130
+ adapter,
131
+ dispose() {
132
+ if (disposed)
133
+ return;
134
+ disposed = true;
135
+ adapter.dispose();
136
+ },
137
+ });
138
+ }
139
+ //# sourceMappingURL=traex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traex.js","sourceRoot":"","sources":["../../src/benchmark/traex.ts"],"names":[],"mappings":"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"}
package/lib/service.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Context, Service } from '@deepseek-ai/cordis';
2
2
  import type { Agent } from '@deepseek-ai/dsh-agent';
3
3
  import Schema from '@deepseek-ai/schemastery';
4
- import type { EvaluationHealth, EvaluationCanonicalLearningEvidenceTuple, EvaluationLearningEvidenceTuple, EvaluationLearningWriterFenceResult, EvaluationLimits, EvaluationReview, EvaluationReviewRequest, EvaluationScope, EvaluationSelfAssessRequest, OutcomeEnvelope, OutcomeQuery, OutcomeSummary, OutcomeSummaryQuery, ProjectedOutcome, SelfAssessmentInput, StoredOutcome, StoredSelfAssessment, TrustedAutomationEvaluationRegistration, TrustedDeliveryEvaluationRegistration, TrustedEvaluationRegistrationOwner, TrustedVerifierEvaluationRegistration, TrustedOutcomeReceipt, TrustedTaskLearningProjectionReceipt } from './types.js';
4
+ import type { EvaluationHealth, EvaluationCanonicalLearningEvidenceTuple, EvaluationLearningEvidenceTuple, EvaluationLearningWriterFenceResult, EvaluationLimits, EvaluationReview, EvaluationReviewRequest, EvaluationScope, EvaluationSelfAssessRequest, OutcomeEnvelope, OutcomeQuery, OutcomeSummary, OutcomeSummaryQuery, ProjectedOutcome, SelfAssessmentInput, StoredOutcome, StoredSelfAssessment, TrustedAutomationEvaluationRegistration, TrustedDeliveryEvaluationRegistration, TrustedEvaluationRegistrationOwner, TrustedVerifierEvaluationRegistration, TrustedOutcomeReceipt, TrustedTaskLearningProjectionReceipt, TrustedTaskLearningProjectionFeedPage } from './types.js';
5
5
  export interface Config {
6
6
  databasePath: string;
7
7
  maxQueryLimit?: number;
@@ -117,11 +117,35 @@ export declare class AssistantEvaluationService extends Service implements Trust
117
117
  scope: EvaluationHostScope;
118
118
  outcomeId: string;
119
119
  }): TrustedTaskLearningProjectionReceipt | undefined;
120
+ listTrustedTaskLearningProjections(input: {
121
+ scope: EvaluationHostScope;
122
+ after?: {
123
+ scopeKey: string;
124
+ watermark: number;
125
+ };
126
+ limit?: number;
127
+ }): TrustedTaskLearningProjectionFeedPage;
128
+ inspectTrustedTaskOwnerRevision(input: {
129
+ scope: EvaluationHostScope;
130
+ outcomeId: string;
131
+ principalRecordId: string;
132
+ principalVersion: number;
133
+ }): Readonly<{
134
+ outcomeId: string;
135
+ version: number;
136
+ action: 'initial' | 'correct' | 'withdraw';
137
+ objectiveStatus: string;
138
+ }> | undefined;
120
139
  /** Host-only exact canonical run proof; conflicted tasks have no ready proof. */
121
140
  getTrustedAutomationRunLearningProjection(input: {
122
141
  scope: EvaluationHostScope;
123
142
  runId: string;
124
143
  }): TrustedTaskLearningProjectionReceipt | undefined;
144
+ /** Host-only lookup by the persisted Delivery execution identity. */
145
+ getTrustedForegroundLearningProjection(input: {
146
+ scope: EvaluationHostScope;
147
+ inboxId: string;
148
+ }): TrustedTaskLearningProjectionReceipt | undefined;
125
149
  /** Host-only exact canonical whole-goal proof, addressed by assessment id. */
126
150
  getTrustedGoalOutcomeLearningProjection(input: {
127
151
  scope: EvaluationHostScope;