@namzu/sdk 62.12.0 → 62.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/agents/file-definitions.d.ts +7 -0
- package/dist/agents/file-definitions.d.ts.map +1 -1
- package/dist/agents/file-definitions.js +20 -0
- package/dist/agents/file-definitions.js.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +1 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/bridge/acp/server.d.ts +8 -1
- package/dist/bridge/acp/server.d.ts.map +1 -1
- package/dist/bridge/acp/server.js +12 -0
- package/dist/bridge/acp/server.js.map +1 -1
- package/dist/connector/index.d.ts +1 -1
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +1 -1
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/mcp/client.d.ts +96 -0
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +488 -13
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +1 -0
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +1 -0
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/tasks.d.ts +40 -0
- package/dist/connector/mcp/tasks.d.ts.map +1 -0
- package/dist/connector/mcp/tasks.js +55 -0
- package/dist/connector/mcp/tasks.js.map +1 -0
- package/dist/constants/data-epoch.d.ts +18 -0
- package/dist/constants/data-epoch.d.ts.map +1 -0
- package/dist/constants/data-epoch.js +18 -0
- package/dist/constants/data-epoch.js.map +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/mcp/index.d.ts +1 -1
- package/dist/constants/mcp/index.d.ts.map +1 -1
- package/dist/constants/mcp/index.js +5 -0
- package/dist/constants/mcp/index.js.map +1 -1
- package/dist/constants/telemetry/index.d.ts +12 -0
- package/dist/constants/telemetry/index.d.ts.map +1 -1
- package/dist/constants/telemetry/index.js +12 -0
- package/dist/constants/telemetry/index.js.map +1 -1
- package/dist/eval/bootstrap.d.ts +122 -0
- package/dist/eval/bootstrap.d.ts.map +1 -0
- package/dist/eval/bootstrap.js +227 -0
- package/dist/eval/bootstrap.js.map +1 -0
- package/dist/eval/compare.d.ts +109 -0
- package/dist/eval/compare.d.ts.map +1 -0
- package/dist/eval/compare.js +324 -0
- package/dist/eval/compare.js.map +1 -0
- package/dist/eval/disclosure.d.ts +70 -0
- package/dist/eval/disclosure.d.ts.map +1 -0
- package/dist/eval/disclosure.js +64 -0
- package/dist/eval/disclosure.js.map +1 -0
- package/dist/eval/experiment.d.ts +23 -0
- package/dist/eval/experiment.d.ts.map +1 -1
- package/dist/eval/experiment.js +87 -15
- package/dist/eval/experiment.js.map +1 -1
- package/dist/eval/from-turn.d.ts.map +1 -1
- package/dist/eval/from-turn.js +5 -0
- package/dist/eval/from-turn.js.map +1 -1
- package/dist/eval/index.d.ts +13 -2
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +6 -1
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/report-stats.d.ts +77 -0
- package/dist/eval/report-stats.d.ts.map +1 -0
- package/dist/eval/report-stats.js +184 -0
- package/dist/eval/report-stats.js.map +1 -0
- package/dist/eval/run-options.d.ts +30 -0
- package/dist/eval/run-options.d.ts.map +1 -0
- package/dist/eval/run-options.js +20 -0
- package/dist/eval/run-options.js.map +1 -0
- package/dist/eval/run-summary.d.ts +36 -0
- package/dist/eval/run-summary.d.ts.map +1 -0
- package/dist/eval/run-summary.js +57 -0
- package/dist/eval/run-summary.js.map +1 -0
- package/dist/eval/scorers.d.ts +32 -0
- package/dist/eval/scorers.d.ts.map +1 -1
- package/dist/eval/scorers.js +77 -0
- package/dist/eval/scorers.js.map +1 -1
- package/dist/eval/types.d.ts +74 -0
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/manager/session/turn-recorder.d.ts +3 -0
- package/dist/manager/session/turn-recorder.d.ts.map +1 -1
- package/dist/manager/session/turn-recorder.js +18 -2
- package/dist/manager/session/turn-recorder.js.map +1 -1
- package/dist/plugin/index.d.ts +1 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -1
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/loader.d.ts +11 -0
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +15 -2
- package/dist/plugin/loader.js.map +1 -1
- package/dist/public-runtime.d.ts +10 -6
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +13 -5
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +2 -0
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.d.ts +3 -0
- package/dist/registry/command/kernel-commands.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.js +76 -5
- package/dist/registry/command/kernel-commands.js.map +1 -1
- package/dist/runtime/query/cancelled-before-start.d.ts.map +1 -1
- package/dist/runtime/query/cancelled-before-start.js +2 -0
- package/dist/runtime/query/cancelled-before-start.js.map +1 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +17 -0
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +18 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +80 -1
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +18 -1
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +5 -0
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/result.d.ts.map +1 -1
- package/dist/runtime/query/result.js +2 -0
- package/dist/runtime/query/result.js.map +1 -1
- package/dist/runtime/query/turn/answer-claims.d.ts +52 -0
- package/dist/runtime/query/turn/answer-claims.d.ts.map +1 -0
- package/dist/runtime/query/turn/answer-claims.js +348 -0
- package/dist/runtime/query/turn/answer-claims.js.map +1 -0
- package/dist/runtime/query/turn/outcome-ledger.d.ts +7 -0
- package/dist/runtime/query/turn/outcome-ledger.d.ts.map +1 -1
- package/dist/runtime/query/turn/outcome-ledger.js +13 -0
- package/dist/runtime/query/turn/outcome-ledger.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/loader.d.ts +15 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +17 -3
- package/dist/skills/loader.js.map +1 -1
- package/dist/store/goal/index.d.ts +3 -1
- package/dist/store/goal/index.d.ts.map +1 -1
- package/dist/store/goal/index.js +6 -0
- package/dist/store/goal/index.js.map +1 -1
- package/dist/telemetry/genai.d.ts +98 -0
- package/dist/telemetry/genai.d.ts.map +1 -0
- package/dist/telemetry/genai.js +189 -0
- package/dist/telemetry/genai.js.map +1 -0
- package/dist/telemetry/runtime-accessors.d.ts +19 -0
- package/dist/telemetry/runtime-accessors.d.ts.map +1 -1
- package/dist/telemetry/runtime-accessors.js +43 -1
- package/dist/telemetry/runtime-accessors.js.map +1 -1
- package/dist/tools/goal/confirmation.d.ts +154 -0
- package/dist/tools/goal/confirmation.d.ts.map +1 -0
- package/dist/tools/goal/confirmation.js +290 -0
- package/dist/tools/goal/confirmation.js.map +1 -0
- package/dist/tools/goal/index.d.ts +4 -1
- package/dist/tools/goal/index.d.ts.map +1 -1
- package/dist/tools/goal/index.js +27 -2
- package/dist/tools/goal/index.js.map +1 -1
- package/dist/tools/hand-back/index.d.ts +48 -0
- package/dist/tools/hand-back/index.d.ts.map +1 -0
- package/dist/tools/hand-back/index.js +129 -0
- package/dist/tools/hand-back/index.js.map +1 -0
- package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
- package/dist/tools/schedules/schedule-tool.js +15 -1
- package/dist/tools/schedules/schedule-tool.js.map +1 -1
- package/dist/tools/schedules/types.d.ts +10 -0
- package/dist/tools/schedules/types.d.ts.map +1 -1
- package/dist/toolsets/manager.d.ts.map +1 -1
- package/dist/toolsets/manager.js +12 -0
- package/dist/toolsets/manager.js.map +1 -1
- package/dist/types/acp/index.d.ts +18 -0
- package/dist/types/acp/index.d.ts.map +1 -1
- package/dist/types/connector/mcp.d.ts +18 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/goal/index.d.ts +12 -0
- package/dist/types/goal/index.d.ts.map +1 -1
- package/dist/types/session/config.d.ts +8 -0
- package/dist/types/session/config.d.ts.map +1 -1
- package/dist/types/session/hand-back.d.ts +29 -0
- package/dist/types/session/hand-back.d.ts.map +1 -0
- package/dist/types/session/hand-back.js +11 -0
- package/dist/types/session/hand-back.js.map +1 -0
- package/dist/types/session/outcome.d.ts +37 -0
- package/dist/types/session/outcome.d.ts.map +1 -1
- package/dist/types/session/outcome.js.map +1 -1
- package/dist/types/session/turn.d.ts +19 -1
- package/dist/types/session/turn.d.ts.map +1 -1
- package/dist/types/session/turn.js.map +1 -1
- package/package.json +1 -1
- package/src/agents/file-definitions.ts +21 -0
- package/src/agents/index.ts +1 -0
- package/src/bridge/acp/server.ts +20 -0
- package/src/connector/index.ts +1 -0
- package/src/connector/mcp/client.ts +531 -14
- package/src/connector/mcp/index.ts +1 -0
- package/src/connector/mcp/tasks.ts +81 -0
- package/src/constants/data-epoch.ts +17 -0
- package/src/constants/index.ts +1 -0
- package/src/constants/mcp/index.ts +6 -1
- package/src/constants/telemetry/index.ts +13 -0
- package/src/eval/bootstrap.ts +314 -0
- package/src/eval/compare.ts +473 -0
- package/src/eval/disclosure.ts +136 -0
- package/src/eval/experiment.ts +127 -15
- package/src/eval/from-turn.ts +5 -0
- package/src/eval/index.ts +51 -0
- package/src/eval/report-stats.ts +257 -0
- package/src/eval/run-options.ts +49 -0
- package/src/eval/run-summary.ts +104 -0
- package/src/eval/scorers.ts +83 -0
- package/src/eval/types.ts +76 -0
- package/src/manager/session/turn-recorder.ts +23 -2
- package/src/plugin/index.ts +7 -1
- package/src/plugin/loader.ts +16 -2
- package/src/public-runtime.ts +70 -0
- package/src/public-types.ts +9 -0
- package/src/registry/command/kernel-commands.ts +94 -6
- package/src/runtime/query/cancelled-before-start.ts +2 -0
- package/src/runtime/query/index.ts +20 -0
- package/src/runtime/query/iteration/index.ts +85 -1
- package/src/runtime/query/iteration/phases/tool-review.ts +24 -1
- package/src/runtime/query/iteration/stream-turn.ts +10 -0
- package/src/runtime/query/result.ts +2 -0
- package/src/runtime/query/turn/answer-claims.ts +413 -0
- package/src/runtime/query/turn/outcome-ledger.ts +12 -0
- package/src/skills/index.ts +1 -0
- package/src/skills/loader.ts +21 -3
- package/src/store/goal/index.ts +11 -0
- package/src/telemetry/genai.ts +202 -0
- package/src/telemetry/runtime-accessors.ts +40 -1
- package/src/tools/goal/confirmation.ts +375 -0
- package/src/tools/goal/index.ts +37 -1
- package/src/tools/hand-back/index.ts +150 -0
- package/src/tools/schedules/schedule-tool.ts +19 -1
- package/src/tools/schedules/types.ts +10 -0
- package/src/toolsets/manager.ts +22 -0
- package/src/types/acp/index.ts +20 -0
- package/src/types/connector/mcp.ts +18 -0
- package/src/types/goal/index.ts +13 -0
- package/src/types/session/config.ts +8 -0
- package/src/types/session/hand-back.ts +31 -0
- package/src/types/session/outcome.ts +42 -0
- package/src/types/session/turn.ts +19 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
const STORE_KEY = Symbol.for('namzu.eval.runOptions');
|
|
3
|
+
/**
|
|
4
|
+
* One store per process, found through a global symbol, so a suite that
|
|
5
|
+
* resolves its own copy of the SDK still sees the scope the runner opened.
|
|
6
|
+
*/
|
|
7
|
+
function store() {
|
|
8
|
+
const holder = globalThis;
|
|
9
|
+
holder[STORE_KEY] ??= new AsyncLocalStorage();
|
|
10
|
+
return holder[STORE_KEY];
|
|
11
|
+
}
|
|
12
|
+
/** Run `work` with `options` in force for every experiment it starts. */
|
|
13
|
+
export function withEvalRunOptions(options, work) {
|
|
14
|
+
return store().run(options, work);
|
|
15
|
+
}
|
|
16
|
+
/** The options in force here, or an empty set outside any scope. */
|
|
17
|
+
export function currentEvalRunOptions() {
|
|
18
|
+
return store().getStore() ?? {};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=run-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-options.js","sourceRoot":"","sources":["../../src/eval/run-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AA4BpD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAErD;;;GAGG;AACH,SAAS,KAAK;IACb,MAAM,MAAM,GAAG,UAAiE,CAAA;IAChF,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,iBAAiB,EAAkB,CAAA;IAC7D,OAAO,MAAM,CAAC,SAAS,CAAC,CAAA;AACzB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAAI,OAAuB,EAAE,IAAa;IAC3E,OAAO,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,qBAAqB;IACpC,OAAO,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { RunMode } from './disclosure.js';
|
|
2
|
+
import { type RunStats } from './report-stats.js';
|
|
3
|
+
import type { ExperimentReport } from './types.js';
|
|
4
|
+
/** What produced a whole run, across every suite in it. */
|
|
5
|
+
export interface RunDisclosure {
|
|
6
|
+
readonly harnessVersion: string;
|
|
7
|
+
readonly sdkVersion: string;
|
|
8
|
+
readonly generatedAt: string;
|
|
9
|
+
readonly commit: string;
|
|
10
|
+
readonly seed: number;
|
|
11
|
+
/** Repeats per case; the largest across suites when they differ. */
|
|
12
|
+
readonly repeats: number;
|
|
13
|
+
readonly suites: number;
|
|
14
|
+
readonly cases: number;
|
|
15
|
+
readonly runs: number;
|
|
16
|
+
/** `mixed` when suites that used a model differ in kind; a suite with no model at all does not count. */
|
|
17
|
+
readonly mode: RunMode | 'mixed';
|
|
18
|
+
}
|
|
19
|
+
/** The numbers for every case of every suite taken together. */
|
|
20
|
+
export interface RunSummary extends Omit<RunStats, 'caseSummaries' | 'reliability'> {
|
|
21
|
+
readonly disclosure: RunDisclosure;
|
|
22
|
+
/** Present only when cases were repeated. */
|
|
23
|
+
readonly reliability?: RunStats['reliability'];
|
|
24
|
+
}
|
|
25
|
+
export declare function summarizeRun(entries: ReadonlyArray<{
|
|
26
|
+
suite: string;
|
|
27
|
+
report: ExperimentReport;
|
|
28
|
+
}>, context: {
|
|
29
|
+
seed: number;
|
|
30
|
+
harnessVersion: string;
|
|
31
|
+
commit: string;
|
|
32
|
+
generatedAt: string;
|
|
33
|
+
sdkVersion: string;
|
|
34
|
+
}): RunSummary;
|
|
35
|
+
export declare function formatRunSummary(summary: RunSummary): string;
|
|
36
|
+
//# sourceMappingURL=run-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-summary.d.ts","sourceRoot":"","sources":["../../src/eval/run-summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EACN,KAAK,QAAQ,EAKb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,yGAAyG;IACzG,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAChC;AAED,gEAAgE;AAChE,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,CAAC;IAClF,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAC9C;AAED,wBAAgB,YAAY,CAC3B,OAAO,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,EACnE,OAAO,EAAE;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CAClB,GACC,UAAU,CAmCZ;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAuB5D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { UNKNOWN } from './disclosure.js';
|
|
2
|
+
import { describeIntervals, describeSplits, groupRuns, statsOver, } from './report-stats.js';
|
|
3
|
+
export function summarizeRun(entries, context) {
|
|
4
|
+
// A case is named by its suite and its id: two suites may reuse a name.
|
|
5
|
+
const cases = entries.flatMap(({ suite, report }) => groupRuns(report.cases ?? [], (name) => `${suite}\u0000${name}`));
|
|
6
|
+
const { caseSummaries: _perCase, reliability, ...stats } = statsOver(cases, context.seed);
|
|
7
|
+
const repeats = Math.max(1, ...entries.map((e) => e.report.repeats ?? 1));
|
|
8
|
+
// A suite that used no model at all says nothing about whether a model
|
|
9
|
+
// ran, so it does not make a run "mixed" with the suites that did.
|
|
10
|
+
const all = entries.map((e) => e.report.disclosure?.mode ?? UNKNOWN);
|
|
11
|
+
const modes = new Set(all.filter((m) => m !== 'no-model'));
|
|
12
|
+
const mode = modes.size === 0
|
|
13
|
+
? all.length === 0
|
|
14
|
+
? UNKNOWN
|
|
15
|
+
: 'no-model'
|
|
16
|
+
: modes.size === 1
|
|
17
|
+
? [...modes][0]
|
|
18
|
+
: 'mixed';
|
|
19
|
+
return {
|
|
20
|
+
...stats,
|
|
21
|
+
...(repeats > 1 ? { reliability } : {}),
|
|
22
|
+
disclosure: {
|
|
23
|
+
harnessVersion: context.harnessVersion,
|
|
24
|
+
sdkVersion: context.sdkVersion,
|
|
25
|
+
generatedAt: context.generatedAt,
|
|
26
|
+
commit: context.commit,
|
|
27
|
+
seed: context.seed,
|
|
28
|
+
repeats,
|
|
29
|
+
suites: entries.length,
|
|
30
|
+
cases: stats.cases,
|
|
31
|
+
runs: stats.runs,
|
|
32
|
+
mode,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function formatRunSummary(summary) {
|
|
37
|
+
const d = summary.disclosure;
|
|
38
|
+
const lines = [
|
|
39
|
+
`Whole run: ${summary.passed}/${summary.runs} runs passed across ${d.suites} suite${d.suites === 1 ? '' : 's'}, ${summary.cases} case${summary.cases === 1 ? '' : 's'}${d.repeats > 1 ? ` x ${d.repeats} repeats` : ''}`,
|
|
40
|
+
];
|
|
41
|
+
for (const line of describeIntervals({
|
|
42
|
+
mean: summary.mean,
|
|
43
|
+
passRate: summary.passRate,
|
|
44
|
+
intervals: summary.intervals,
|
|
45
|
+
})) {
|
|
46
|
+
lines.push(` ${line}`);
|
|
47
|
+
}
|
|
48
|
+
if (summary.reliability) {
|
|
49
|
+
const r = summary.reliability;
|
|
50
|
+
lines.push(` reliability across repeats: ${r.passedEveryRepeat} of ${r.cases} cases passed in every one of ${d.repeats} repeats${r.fraction === null ? '' : ` (${(r.fraction * 100).toFixed(1)}%)`}`);
|
|
51
|
+
}
|
|
52
|
+
for (const line of describeSplits(summary.splits))
|
|
53
|
+
lines.push(` ${line}`);
|
|
54
|
+
lines.push(` produced by: namzu eval ${d.harnessVersion}, sdk ${d.sdkVersion}, commit ${d.commit}, ${d.generatedAt}, ${d.mode}`);
|
|
55
|
+
return lines.join('\n');
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=run-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-summary.js","sourceRoot":"","sources":["../../src/eval/run-summary.ts"],"names":[],"mappings":"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"}
|
package/dist/eval/scorers.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { HandBackKind } from '../types/session/hand-back.js';
|
|
2
|
+
import type { TurnOutcomeVerdict } from '../types/session/outcome.js';
|
|
1
3
|
import type { EvalCase, EvalTurn, Score, Scorer } from './types.js';
|
|
2
4
|
/**
|
|
3
5
|
* How closely the turn's tool sequence matched the expected one, as F1 over
|
|
@@ -27,6 +29,36 @@ export declare function completionScorer(acceptable?: readonly string[]): Scorer
|
|
|
27
29
|
export declare function stepBudgetScorer(maxSteps: number): Scorer;
|
|
28
30
|
/** The final text contains every required substring. */
|
|
29
31
|
export declare function containsScorer(...required: string[]): Scorer;
|
|
32
|
+
/**
|
|
33
|
+
* The turn's outcome record has one of the given verdicts.
|
|
34
|
+
*
|
|
35
|
+
* Reads the record the kernel settled from what actually ran, not the answer's
|
|
36
|
+
* words. A turn with no record scores unavailable: there is nothing to read,
|
|
37
|
+
* which is not the same as a wrong verdict.
|
|
38
|
+
*/
|
|
39
|
+
export declare function outcomeScorer(verdicts: readonly TurnOutcomeVerdict[]): Scorer;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the answer's plain check claims agree with the turn's outcome
|
|
42
|
+
* record: 1 when `compareAnswerToOutcome` found no mismatch, 0 when it found
|
|
43
|
+
* one, with the claim and what the record holds in the detail.
|
|
44
|
+
*
|
|
45
|
+
* Pass `{ expectMismatch: true }` for a case that is built to contradict
|
|
46
|
+
* itself, so the suite proves the comparison fires as well as that it stays
|
|
47
|
+
* silent.
|
|
48
|
+
*/
|
|
49
|
+
export declare function claimMismatchScorer(opts?: {
|
|
50
|
+
expectMismatch?: boolean;
|
|
51
|
+
}): Scorer;
|
|
52
|
+
/**
|
|
53
|
+
* Score whether the turn was handed back to a person.
|
|
54
|
+
*
|
|
55
|
+
* Pass `{ expectKind }` for a case built so the model hands the task back, and
|
|
56
|
+
* the scorer checks it did, and for that kind; with nothing it checks the turn
|
|
57
|
+
* was not handed back. A gate: a scripted suite pins the kernel's side of it.
|
|
58
|
+
*/
|
|
59
|
+
export declare function handedBackScorer(opts?: {
|
|
60
|
+
expectKind?: HandBackKind;
|
|
61
|
+
}): Scorer;
|
|
30
62
|
/**
|
|
31
63
|
* Judge the turn with a caller-supplied predicate.
|
|
32
64
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorers.d.ts","sourceRoot":"","sources":["../../src/eval/scorers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAyBnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAwCzC;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAC/B,UAAU,GAAE,SAAS,MAAM,EAAmC,GAC5D,MAAM,CAqBR;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAezD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAmB5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAChE,MAAM,CAER"}
|
|
1
|
+
{"version":3,"file":"scorers.d.ts","sourceRoot":"","sources":["../../src/eval/scorers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAyBnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAwCzC;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAC/B,UAAU,GAAE,SAAS,MAAM,EAAmC,GAC5D,MAAM,CAqBR;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAezD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAmB5D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,MAAM,CAoB7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAiBnF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,MAAM,CAejF;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAChE,MAAM,CAER"}
|
package/dist/eval/scorers.js
CHANGED
|
@@ -136,6 +136,83 @@ export function containsScorer(...required) {
|
|
|
136
136
|
},
|
|
137
137
|
};
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* The turn's outcome record has one of the given verdicts.
|
|
141
|
+
*
|
|
142
|
+
* Reads the record the kernel settled from what actually ran, not the answer's
|
|
143
|
+
* words. A turn with no record scores unavailable: there is nothing to read,
|
|
144
|
+
* which is not the same as a wrong verdict.
|
|
145
|
+
*/
|
|
146
|
+
export function outcomeScorer(verdicts) {
|
|
147
|
+
return {
|
|
148
|
+
name: 'outcome',
|
|
149
|
+
// The record either says one of the verdicts or it does not.
|
|
150
|
+
severity: 'gate',
|
|
151
|
+
score(turn) {
|
|
152
|
+
const outcome = turn.outcome;
|
|
153
|
+
if (!outcome) {
|
|
154
|
+
return { score: 0, unavailable: true, reason: 'the turn has no outcome record' };
|
|
155
|
+
}
|
|
156
|
+
const ok = verdicts.includes(outcome.verdict);
|
|
157
|
+
return {
|
|
158
|
+
score: ok ? 1 : 0,
|
|
159
|
+
reason: ok
|
|
160
|
+
? `verdict ${outcome.verdict}`
|
|
161
|
+
: `verdict ${outcome.verdict}, expected one of ${verdicts.join(', ')}`,
|
|
162
|
+
details: { verdict: outcome.verdict, expected: verdicts },
|
|
163
|
+
};
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Whether the answer's plain check claims agree with the turn's outcome
|
|
169
|
+
* record: 1 when `compareAnswerToOutcome` found no mismatch, 0 when it found
|
|
170
|
+
* one, with the claim and what the record holds in the detail.
|
|
171
|
+
*
|
|
172
|
+
* Pass `{ expectMismatch: true }` for a case that is built to contradict
|
|
173
|
+
* itself, so the suite proves the comparison fires as well as that it stays
|
|
174
|
+
* silent.
|
|
175
|
+
*/
|
|
176
|
+
export function claimMismatchScorer(opts = {}) {
|
|
177
|
+
const expectMismatch = opts.expectMismatch === true;
|
|
178
|
+
return {
|
|
179
|
+
name: 'claim-mismatch',
|
|
180
|
+
severity: 'gate',
|
|
181
|
+
score(turn) {
|
|
182
|
+
const found = turn.claimMismatch;
|
|
183
|
+
const ok = expectMismatch ? found !== undefined : found === undefined;
|
|
184
|
+
return {
|
|
185
|
+
score: ok ? 1 : 0,
|
|
186
|
+
reason: found
|
|
187
|
+
? `${found.said}, but the record: ${found.recordSays}`
|
|
188
|
+
: 'no claim in the answer contradicts the record',
|
|
189
|
+
details: { claimMismatch: found ?? null, expectMismatch },
|
|
190
|
+
};
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Score whether the turn was handed back to a person.
|
|
196
|
+
*
|
|
197
|
+
* Pass `{ expectKind }` for a case built so the model hands the task back, and
|
|
198
|
+
* the scorer checks it did, and for that kind; with nothing it checks the turn
|
|
199
|
+
* was not handed back. A gate: a scripted suite pins the kernel's side of it.
|
|
200
|
+
*/
|
|
201
|
+
export function handedBackScorer(opts = {}) {
|
|
202
|
+
return {
|
|
203
|
+
name: 'handed-back',
|
|
204
|
+
severity: 'gate',
|
|
205
|
+
score(turn) {
|
|
206
|
+
const found = turn.handedBack;
|
|
207
|
+
const ok = opts.expectKind === undefined ? found === undefined : found?.kind === opts.expectKind;
|
|
208
|
+
return {
|
|
209
|
+
score: ok ? 1 : 0,
|
|
210
|
+
reason: found ? `handed back (${found.kind}): ${found.blocker}` : 'not handed back',
|
|
211
|
+
details: { handedBack: found ?? null, expectKind: opts.expectKind ?? null },
|
|
212
|
+
};
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
139
216
|
/**
|
|
140
217
|
* Judge the turn with a caller-supplied predicate.
|
|
141
218
|
*
|
package/dist/eval/scorers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorers.js","sourceRoot":"","sources":["../../src/eval/scorers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scorers.js","sourceRoot":"","sources":["../../src/eval/scorers.ts"],"names":[],"mappings":"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"}
|
package/dist/eval/types.d.ts
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
import type { AnswerClaimMismatch, TurnOutcome } from '../types/session/outcome.js';
|
|
1
2
|
import type { StepResult } from '../types/session/step.js';
|
|
3
|
+
import type { CaseIntervals } from './bootstrap.js';
|
|
4
|
+
import type { ReportDisclosure } from './disclosure.js';
|
|
5
|
+
import type { RepeatReliability, SplitSummary } from './report-stats.js';
|
|
2
6
|
import type { ScoreUncertainty } from './uncertainty.js';
|
|
7
|
+
/**
|
|
8
|
+
* Which part of a suite a case belongs to.
|
|
9
|
+
*
|
|
10
|
+
* `development` cases are the ones the harness was shaped against; a number
|
|
11
|
+
* measured on them says how well it fits them. `held-out` cases were not
|
|
12
|
+
* looked at while it was shaped, and only they say how it does on cases it
|
|
13
|
+
* has not seen.
|
|
14
|
+
*/
|
|
15
|
+
export type EvalSplit = 'development' | 'held-out';
|
|
3
16
|
/**
|
|
4
17
|
* One case in a dataset: an input, and what a good run looks like.
|
|
5
18
|
*
|
|
@@ -18,6 +31,11 @@ export interface EvalCase<TInput = unknown> {
|
|
|
18
31
|
expectedTools?: readonly string[];
|
|
19
32
|
/** Per-case scorer overrides; falls back to the dataset's scorers. */
|
|
20
33
|
scorers?: readonly Scorer[];
|
|
34
|
+
/**
|
|
35
|
+
* `development` or `held-out`. Left out, the case is reported as
|
|
36
|
+
* unassigned. See {@link EvalSplit}.
|
|
37
|
+
*/
|
|
38
|
+
split?: EvalSplit;
|
|
21
39
|
}
|
|
22
40
|
/** What actually happened, handed to every scorer. */
|
|
23
41
|
export interface EvalTurn {
|
|
@@ -34,6 +52,18 @@ export interface EvalTurn {
|
|
|
34
52
|
durationMs: number;
|
|
35
53
|
/** Set when the turn threw rather than settling. */
|
|
36
54
|
error?: string;
|
|
55
|
+
/**
|
|
56
|
+
* What the turn changed and what checked it, from the kernel's own record of
|
|
57
|
+
* its tool calls. Absent for a turn that never ran the loop.
|
|
58
|
+
*/
|
|
59
|
+
outcome?: TurnOutcome;
|
|
60
|
+
/**
|
|
61
|
+
* A plain claim in the answer that the outcome record contradicts, found by
|
|
62
|
+
* `compareAnswerToOutcome`. Absent when there is none.
|
|
63
|
+
*/
|
|
64
|
+
claimMismatch?: AnswerClaimMismatch;
|
|
65
|
+
/** The model handed the task back to a person and the turn ended there. Absent otherwise. */
|
|
66
|
+
handedBack?: import('../types/session/hand-back.js').HandBack;
|
|
37
67
|
}
|
|
38
68
|
/**
|
|
39
69
|
* A judgement about one turn.
|
|
@@ -136,6 +166,10 @@ export interface CaseResult {
|
|
|
136
166
|
* mattered. Absent when no gate missed.
|
|
137
167
|
*/
|
|
138
168
|
failedGates?: readonly string[];
|
|
169
|
+
/** Which run of this case this is, from 1. Set on every run of a report that has `repeats`. */
|
|
170
|
+
repeat?: number;
|
|
171
|
+
/** The case's declared split, copied here so a report can be cut by it. */
|
|
172
|
+
split?: EvalSplit;
|
|
139
173
|
}
|
|
140
174
|
export interface ExperimentReport {
|
|
141
175
|
name: string;
|
|
@@ -169,5 +203,45 @@ export interface ExperimentReport {
|
|
|
169
203
|
*/
|
|
170
204
|
byScorer: Record<string, number>;
|
|
171
205
|
durationMs: number;
|
|
206
|
+
/**
|
|
207
|
+
* Times each case ran. When it is above 1, `cases` holds every run of
|
|
208
|
+
* every case, in case order, each marked with its `repeat`, and `passed`,
|
|
209
|
+
* `failed` and `inconclusive` count runs. Absent in a report written before
|
|
210
|
+
* repeats existed, which is read as 1.
|
|
211
|
+
*/
|
|
212
|
+
repeats?: number;
|
|
213
|
+
/** Seed of the bootstrap behind {@link intervals}. */
|
|
214
|
+
seed?: number;
|
|
215
|
+
/**
|
|
216
|
+
* Passed runs over judged runs. An inconclusive run is in neither number,
|
|
217
|
+
* so it cannot pull the rate either way.
|
|
218
|
+
*/
|
|
219
|
+
passRate?: number;
|
|
220
|
+
/**
|
|
221
|
+
* 95% intervals for {@link mean} and {@link passRate}, by a bootstrap over
|
|
222
|
+
* cases. Absent from a report that predates it.
|
|
223
|
+
*/
|
|
224
|
+
intervals?: CaseIntervals;
|
|
225
|
+
/** Per case: how many of its repeats passed. Present when `repeats` is above 1. */
|
|
226
|
+
caseSummaries?: readonly CaseRepeatSummary[];
|
|
227
|
+
/** Reliability across repeats. Present when `repeats` is above 1. */
|
|
228
|
+
reliability?: RepeatReliability;
|
|
229
|
+
/** Numbers per split. Keys appear only for splits that have cases. */
|
|
230
|
+
splits?: Partial<Record<EvalSplit | 'unassigned', SplitSummary>>;
|
|
231
|
+
/** What produced this report. */
|
|
232
|
+
disclosure?: ReportDisclosure;
|
|
233
|
+
}
|
|
234
|
+
/** How the repeats of one case went. */
|
|
235
|
+
export interface CaseRepeatSummary {
|
|
236
|
+
case: string;
|
|
237
|
+
split?: EvalSplit;
|
|
238
|
+
repeats: number;
|
|
239
|
+
passed: number;
|
|
240
|
+
failed: number;
|
|
241
|
+
inconclusive: number;
|
|
242
|
+
/** Mean score over the judged repeats; null when none was judged. */
|
|
243
|
+
mean: number | null;
|
|
244
|
+
/** Every repeat passed. An inconclusive repeat means this is false. */
|
|
245
|
+
passedEveryRepeat: boolean;
|
|
172
246
|
}
|
|
173
247
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/eval/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/eval/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;;GAKG;AACH,MAAM,WAAW,QAAQ,CAAC,MAAM,GAAG,OAAO;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/eval/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,CAAA;AAElD;;;;;GAKG;AACH,MAAM,WAAW,QAAQ,CAAC,MAAM,GAAG,OAAO;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACxB,wDAAwD;IACxD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;IAC5B,wDAAwD;IACxD,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,+BAA+B,EAAE,QAAQ,CAAA;CAC7D;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,KAAK;IACrB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5C,MAAM,WAAW,MAAM;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACvF,kDAAkD;IAClD,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAA;AAE7D,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC7B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,mFAAmF;IACnF,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC5C,qEAAqE;IACrE,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,EAAE,YAAY,CAAC,CAAC,CAAA;IAChE,iCAAiC;IACjC,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC7B;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,uEAAuE;IACvE,iBAAiB,EAAE,OAAO,CAAA;CAC1B"}
|
|
@@ -8,6 +8,7 @@ import type { ProviderErrorInfo } from '../../types/provider/index.js';
|
|
|
8
8
|
import type { AuditEvent, AuditEventInput } from '../../types/session/audit.js';
|
|
9
9
|
import type { TurnRecorderConfig } from '../../types/session/config.js';
|
|
10
10
|
import { type SessionEvent } from '../../types/session/events.js';
|
|
11
|
+
import type { HandBack } from '../../types/session/hand-back.js';
|
|
11
12
|
import type { ProjectId, TopicId } from '../../types/session/ids.js';
|
|
12
13
|
import type { TurnOutcome } from '../../types/session/outcome.js';
|
|
13
14
|
import type { StepResult } from '../../types/session/step.js';
|
|
@@ -135,6 +136,8 @@ export declare class TurnRecorder {
|
|
|
135
136
|
setAbandonedJobIds(jobIds: readonly string[]): void;
|
|
136
137
|
/** The turn's outcome record, set once as the loop ends; absent means none was kept. */
|
|
137
138
|
setOutcome(outcome: TurnOutcome | undefined): void;
|
|
139
|
+
/** The model handed the task back; set once, as the turn ends. */
|
|
140
|
+
setHandedBack(handBack: HandBack | undefined): void;
|
|
138
141
|
setSteps(steps: readonly StepResult[]): void;
|
|
139
142
|
/** Record that a provider chain advanced, so the turn stops naming a member that did not serve. */
|
|
140
143
|
setServingProvider(providerId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-recorder.d.ts","sourceRoot":"","sources":["../../../src/manager/session/turn-recorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"turn-recorder.d.ts","sourceRoot":"","sources":["../../../src/manager/session/turn-recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { AUTO_CONTINUATION_USER_MESSAGE, REASONING_CUT_USER_MESSAGE, } from '../
|
|
|
3
3
|
import { EMPTY_TOKEN_USAGE } from '../../constants/limits.js';
|
|
4
4
|
import { NAMZU } from '../../constants/telemetry/index.js';
|
|
5
5
|
import { resolveModelPricing } from '../../pricing/index.js';
|
|
6
|
+
import { compareAnswerToOutcome } from '../../runtime/query/turn/answer-claims.js';
|
|
6
7
|
import { foldSessionLog } from '../../store/session-log/incremental.js';
|
|
7
8
|
import { SessionMessageFold, turnHolder, withMessageId, } from '../../store/session-log/index.js';
|
|
8
9
|
import { getActiveSpanContext } from '../../telemetry/runtime-accessors.js';
|
|
@@ -379,6 +380,13 @@ export class TurnRecorder {
|
|
|
379
380
|
else
|
|
380
381
|
this.#turn.outcome = outcome;
|
|
381
382
|
}
|
|
383
|
+
/** The model handed the task back; set once, as the turn ends. */
|
|
384
|
+
setHandedBack(handBack) {
|
|
385
|
+
if (handBack === undefined)
|
|
386
|
+
delete this.#turn.handedBack;
|
|
387
|
+
else
|
|
388
|
+
this.#turn.handedBack = handBack;
|
|
389
|
+
}
|
|
382
390
|
setSteps(steps) {
|
|
383
391
|
this.#turn.steps = steps;
|
|
384
392
|
}
|
|
@@ -466,6 +474,11 @@ export class TurnRecorder {
|
|
|
466
474
|
settlement(status) {
|
|
467
475
|
const turn = this.getTurn();
|
|
468
476
|
const resultMessageId = this.#lastAssistantEntry()?.id;
|
|
477
|
+
// A task handed back says what blocks it in the model's words; those are not
|
|
478
|
+
// an answer to read claims out of.
|
|
479
|
+
const claimMismatch = turn.handedBack
|
|
480
|
+
? undefined
|
|
481
|
+
: compareAnswerToOutcome(turn.result, turn.outcome);
|
|
469
482
|
return {
|
|
470
483
|
status,
|
|
471
484
|
iterations: turn.currentIteration,
|
|
@@ -479,6 +492,8 @@ export class TurnRecorder {
|
|
|
479
492
|
abandonedTaskIds: [...(turn.abandonedTaskIds ?? [])],
|
|
480
493
|
abandonedJobIds: [...(turn.abandonedJobIds ?? [])],
|
|
481
494
|
...(turn.outcome ? { outcome: turn.outcome } : {}),
|
|
495
|
+
...(claimMismatch ? { claimMismatch } : {}),
|
|
496
|
+
...(turn.handedBack ? { handedBack: turn.handedBack } : {}),
|
|
482
497
|
};
|
|
483
498
|
}
|
|
484
499
|
// ─── the log ───────────────────────────────────────────────────────────
|
|
@@ -1372,9 +1387,10 @@ export function snapshotTurnConfig(config) {
|
|
|
1372
1387
|
export function eventDraft(event, turnId) {
|
|
1373
1388
|
const { sessionId: _sessionId, turnId: _turnId, lineage: _lineage, v: _v, seq: _seq, generation: _generation, ...payload } = event;
|
|
1374
1389
|
const draft = JSON.parse(JSON.stringify(payload));
|
|
1375
|
-
// The outcome
|
|
1390
|
+
// The outcome, the claim mismatch and the hand-back ride the live settlement
|
|
1391
|
+
// only; the log keeps the outcome in its own record, the other two nowhere.
|
|
1376
1392
|
if (draft.settlement !== undefined && typeof draft.settlement === 'object') {
|
|
1377
|
-
const { outcome: _outcome, ...settlement } = draft.settlement;
|
|
1393
|
+
const { outcome: _outcome, claimMismatch: _claimMismatch, handedBack: _handedBack, ...settlement } = draft.settlement;
|
|
1378
1394
|
draft.settlement = settlement;
|
|
1379
1395
|
}
|
|
1380
1396
|
return { ...draft, ...(turnId ? { turnId } : {}) };
|