@tangle-network/agent-eval 0.109.1 → 0.110.1
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 +9 -0
- package/dist/analyst/index.d.ts +10 -12
- package/dist/analyst/index.js +8 -11
- package/dist/analyst/index.js.map +1 -1
- package/dist/{analyze-runs-DJYpep3L.d.ts → analyze-runs-Dmz6LA9e.d.ts} +4 -4
- package/dist/{baseline-Bbid3WoO.d.ts → baseline-DsNteOgR.d.ts} +32 -2
- package/dist/belief-state/index.d.ts +6 -6
- package/dist/benchmarks/index.d.ts +4 -4
- package/dist/benchmarks/index.js +7 -8
- package/dist/builder-eval/index.d.ts +4 -4
- package/dist/builder-eval/index.js +1 -2
- package/dist/builder-eval/index.js.map +1 -1
- package/dist/{calibration-BPmzuVPk.d.ts → calibration-Dz8TQV4y.d.ts} +2 -2
- package/dist/campaign/index.d.ts +62 -20
- package/dist/campaign/index.js +9 -8
- package/dist/{chunk-LOJ2QVCE.js → chunk-2IY4ILP4.js} +2 -2
- package/dist/{chunk-LIEJUH2I.js → chunk-6PL5MGDL.js} +9 -9
- package/dist/{chunk-2OGPXHOB.js → chunk-7NX6ZSBG.js} +36 -7
- package/dist/chunk-7NX6ZSBG.js.map +1 -0
- package/dist/{chunk-R6D7NEYJ.js → chunk-GBI5J5DB.js} +81 -11
- package/dist/chunk-GBI5J5DB.js.map +1 -0
- package/dist/{chunk-YEHAEDUD.js → chunk-IMWDSFUM.js} +604 -2
- package/dist/chunk-IMWDSFUM.js.map +1 -0
- package/dist/{chunk-OVPVM4JC.js → chunk-J4AKLZEV.js} +15 -4
- package/dist/{chunk-OVPVM4JC.js.map → chunk-J4AKLZEV.js.map} +1 -1
- package/dist/{chunk-JZXGWLK5.js → chunk-MHNQWM4I.js} +62 -6
- package/dist/chunk-MHNQWM4I.js.map +1 -0
- package/dist/{chunk-QRVS7MX4.js → chunk-OW47B5WA.js} +3 -5
- package/dist/{chunk-QRVS7MX4.js.map → chunk-OW47B5WA.js.map} +1 -1
- package/dist/{chunk-DBDRR6GF.js → chunk-PLOMR3HP.js} +48 -2
- package/dist/chunk-PLOMR3HP.js.map +1 -0
- package/dist/{chunk-GDZAWO2I.js → chunk-QFGTU7MT.js} +2 -2
- package/dist/{chunk-V7HNA47Z.js → chunk-RSVSSZKF.js} +5 -5
- package/dist/{chunk-5PK3626Q.js → chunk-XRGOKCMO.js} +88 -17
- package/dist/chunk-XRGOKCMO.js.map +1 -0
- package/dist/{code-agent-session-rnJKlqmT.d.ts → code-agent-session-yitf9I-F.d.ts} +1 -1
- package/dist/contract/index.d.ts +26 -28
- package/dist/contract/index.js +11 -13
- package/dist/contract/index.js.map +1 -1
- package/dist/{control-B8UthSBL.d.ts → control-U8LBKUES.d.ts} +5 -6
- package/dist/control.d.ts +8 -9
- package/dist/control.js +6 -8
- package/dist/{dataset-DS7ytHZU.d.ts → dataset-NENEzRgk.d.ts} +1 -1
- package/dist/{default-registry-BswHCXnU.d.ts → default-registry-Bcf1uKVI.d.ts} +1 -2
- package/dist/{emitter-C2rqGH_l.d.ts → emitter-BRchAAAx.d.ts} +2 -2
- package/dist/{failure-cluster-DH9Flgcf.d.ts → failure-cluster-C48PiReX.d.ts} +2 -2
- package/dist/feedback-trajectory-pDcz1lQ1.d.ts +348 -0
- package/dist/{gepa-B3x5Ulcv.d.ts → gepa-T8T215nw.d.ts} +149 -6
- package/dist/hosted/index.d.ts +7 -7
- package/dist/{index-pPtfoIJO.d.ts → index-Dc3VLGhp.d.ts} +2 -2
- package/dist/index.d.ts +645 -61
- package/dist/index.js +1282 -190
- package/dist/index.js.map +1 -1
- package/dist/{insight-report-B4xrdwEK.d.ts → insight-report-D4cXFsLt.d.ts} +1 -1
- package/dist/{integrity-DqGZg3st.d.ts → integrity-qemeBAyx.d.ts} +1 -1
- package/dist/{types-D1ytG0Yg.d.ts → kind-factory-20hcaYpf.d.ts} +169 -2
- package/dist/meta-eval/index.d.ts +5 -5
- package/dist/meta-eval/index.js +1 -2
- package/dist/meta-eval/index.js.map +1 -1
- package/dist/{multi-layer-verifier-CI4jdX-q.d.ts → multi-layer-verifier-BsqKuLyN.d.ts} +1 -1
- package/dist/multishot/index.d.ts +3 -3
- package/dist/openapi.json +1 -1
- package/dist/pipelines/index.d.ts +6 -7
- package/dist/pipelines/index.js +3 -6
- package/dist/pipelines/index.js.map +1 -1
- package/dist/{policy-edit-DQUXYMDm.d.ts → policy-edit-D2bBDZDf.d.ts} +2 -2
- package/dist/{pre-registration-BUhVPzE7.d.ts → pre-registration-BepVVa6P.d.ts} +3 -3
- package/dist/{provenance-DdDhf6cg.d.ts → provenance-CyxkvEi9.d.ts} +3 -5
- package/dist/{query-0aTmbmQe.d.ts → query-Ck190MOd.d.ts} +2 -2
- package/dist/{release-report-DeJpsBiA.d.ts → release-report-oBfOz8ku.d.ts} +3 -3
- package/dist/reporting.d.ts +8 -8
- package/dist/{researcher-Wc7dx6GM.d.ts → researcher-CaH0CwFC.d.ts} +6 -6
- package/dist/rl.d.ts +568 -15
- package/dist/rl.js +4 -4
- package/dist/{rubric-predictive-validity-DPnyG-CE.d.ts → rubric-predictive-validity-C-fMteAW.d.ts} +1 -1
- package/dist/{run-record-I-Z3JNvO.d.ts → run-record-DksGsfgv.d.ts} +1 -1
- package/dist/{runtime-trajectory-iW9IhV3e.d.ts → runtime-trajectory-h5i0SZUj.d.ts} +1 -1
- package/dist/{schema-m0gsnbt3.d.ts → schema-SGWcK9wa.d.ts} +1 -1
- package/dist/{semantic-concept-judge-BmNZPB_j.d.ts → semantic-concept-judge-D7z6JCLZ.d.ts} +57 -4
- package/dist/{store-BcFXE6LG.d.ts → store-BsVi7ncX.d.ts} +1 -1
- package/dist/storyboard/index.d.ts +1 -1
- package/dist/{summary-report-QMZVe3P-.d.ts → summary-report-Bz-0-t8v.d.ts} +2 -2
- package/dist/{test-graded-scenario-DeODGLra.d.ts → test-graded-scenario-mzYBKspu.d.ts} +3 -3
- package/dist/traces.d.ts +54 -11
- package/dist/traces.js +25 -27
- package/dist/{types-BdIv5dvA.d.ts → types-v--ctu-b.d.ts} +2 -2
- package/dist/wire/index.d.ts +5 -6
- package/docs/improvement-glossary.md +14 -13
- package/package.json +1 -71
- package/dist/adapters/http.d.ts +0 -142
- package/dist/adapters/http.js +0 -203
- package/dist/adapters/http.js.map +0 -1
- package/dist/adapters/langchain.d.ts +0 -95
- package/dist/adapters/langchain.js +0 -34
- package/dist/adapters/langchain.js.map +0 -1
- package/dist/adapters/otel.d.ts +0 -112
- package/dist/adapters/otel.js +0 -110
- package/dist/adapters/otel.js.map +0 -1
- package/dist/chunk-2OGPXHOB.js.map +0 -1
- package/dist/chunk-45EEMHTC.js +0 -35
- package/dist/chunk-45EEMHTC.js.map +0 -1
- package/dist/chunk-5BKGXME7.js +0 -65
- package/dist/chunk-5BKGXME7.js.map +0 -1
- package/dist/chunk-5PK3626Q.js.map +0 -1
- package/dist/chunk-6SK5VFYK.js +0 -100
- package/dist/chunk-6SK5VFYK.js.map +0 -1
- package/dist/chunk-DBDRR6GF.js.map +0 -1
- package/dist/chunk-DJWX3GVS.js +0 -81
- package/dist/chunk-DJWX3GVS.js.map +0 -1
- package/dist/chunk-FOUG2VVS.js +0 -855
- package/dist/chunk-FOUG2VVS.js.map +0 -1
- package/dist/chunk-JZXGWLK5.js.map +0 -1
- package/dist/chunk-K7QEIHHJ.js +0 -613
- package/dist/chunk-K7QEIHHJ.js.map +0 -1
- package/dist/chunk-KKHDIONI.js +0 -414
- package/dist/chunk-KKHDIONI.js.map +0 -1
- package/dist/chunk-KMPRBJK4.js +0 -74
- package/dist/chunk-KMPRBJK4.js.map +0 -1
- package/dist/chunk-Q2JRAWRI.js +0 -196
- package/dist/chunk-Q2JRAWRI.js.map +0 -1
- package/dist/chunk-R6D7NEYJ.js.map +0 -1
- package/dist/chunk-RZTMDUO7.js +0 -49
- package/dist/chunk-RZTMDUO7.js.map +0 -1
- package/dist/chunk-STGVSCDH.js +0 -202
- package/dist/chunk-STGVSCDH.js.map +0 -1
- package/dist/chunk-YEHAEDUD.js.map +0 -1
- package/dist/control-runtime-Acf9CGhw.d.ts +0 -182
- package/dist/corpus-eBVwhCp1.d.ts +0 -560
- package/dist/counterfactual-DlOz8PBx.d.ts +0 -85
- package/dist/diagnose.d.ts +0 -252
- package/dist/diagnose.js +0 -382
- package/dist/diagnose.js.map +0 -1
- package/dist/feedback-trajectory-C9KCo8ag.d.ts +0 -169
- package/dist/governance/index.d.ts +0 -135
- package/dist/governance/index.js +0 -18
- package/dist/governance/index.js.map +0 -1
- package/dist/groundedness/index.d.ts +0 -112
- package/dist/groundedness/index.js +0 -77
- package/dist/groundedness/index.js.map +0 -1
- package/dist/harness-optimizer-mOl9XX_O.d.ts +0 -106
- package/dist/kind-factory-DvIGo_cP.d.ts +0 -171
- package/dist/knowledge/index.d.ts +0 -103
- package/dist/knowledge/index.js +0 -18
- package/dist/knowledge/index.js.map +0 -1
- package/dist/pareto-E-pembql.d.ts +0 -81
- package/dist/perf/index.d.ts +0 -123
- package/dist/perf/index.js +0 -18
- package/dist/perf/index.js.map +0 -1
- package/dist/prm/index.d.ts +0 -104
- package/dist/prm/index.js +0 -265
- package/dist/prm/index.js.map +0 -1
- package/dist/product-benchmark/index.d.ts +0 -247
- package/dist/product-benchmark/index.js +0 -37
- package/dist/product-benchmark/index.js.map +0 -1
- package/dist/red-team-KmmiqBlY.d.ts +0 -63
- package/dist/redact-B40YG2M_.d.ts +0 -45
- package/dist/rubric-Cc6UHvUb.d.ts +0 -73
- package/dist/run-critic-CmMf05uV.d.ts +0 -56
- package/dist/sink-fetch-B1Yg4Til.d.ts +0 -101
- package/dist/telemetry/file.d.ts +0 -19
- package/dist/telemetry/file.js +0 -45
- package/dist/telemetry/file.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -38
- package/dist/telemetry/index.js +0 -130
- package/dist/telemetry/index.js.map +0 -1
- package/dist/testing-C21CHsq2.d.ts +0 -20
- package/dist/testing.d.ts +0 -1
- package/dist/testing.js +0 -8
- package/dist/testing.js.map +0 -1
- package/dist/trajectory-2TkpSEVh.d.ts +0 -33
- package/dist/workflow/index.d.ts +0 -496
- package/dist/workflow/index.js +0 -2178
- package/dist/workflow/index.js.map +0 -1
- /package/dist/{chunk-LOJ2QVCE.js.map → chunk-2IY4ILP4.js.map} +0 -0
- /package/dist/{chunk-LIEJUH2I.js.map → chunk-6PL5MGDL.js.map} +0 -0
- /package/dist/{chunk-GDZAWO2I.js.map → chunk-QFGTU7MT.js.map} +0 -0
- /package/dist/{chunk-V7HNA47Z.js.map → chunk-RSVSSZKF.js.map} +0 -0
package/dist/chunk-KMPRBJK4.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildTrajectory
|
|
3
|
-
} from "./chunk-RZTMDUO7.js";
|
|
4
|
-
import {
|
|
5
|
-
isLlmSpan,
|
|
6
|
-
isToolSpan
|
|
7
|
-
} from "./chunk-5BKGXME7.js";
|
|
8
|
-
|
|
9
|
-
// src/prm/training-export.ts
|
|
10
|
-
async function exportTrainingData(store, graded, options = {}) {
|
|
11
|
-
const window = options.contextWindow ?? 5;
|
|
12
|
-
const out = [];
|
|
13
|
-
for (const g of graded) {
|
|
14
|
-
const trajectory = await buildTrajectory(store, g.runId);
|
|
15
|
-
const spanById = new Map(trajectory.steps.map((s) => [s.span.spanId, s]));
|
|
16
|
-
for (const gs of g.steps) {
|
|
17
|
-
const node = spanById.get(gs.spanId);
|
|
18
|
-
if (!node) continue;
|
|
19
|
-
const idx = trajectory.steps.indexOf(node);
|
|
20
|
-
const priorSpans = trajectory.steps.slice(Math.max(0, idx - window), idx).map((s) => s.span);
|
|
21
|
-
out.push({
|
|
22
|
-
runId: g.runId,
|
|
23
|
-
spanId: gs.spanId,
|
|
24
|
-
rubricId: gs.rubricId,
|
|
25
|
-
score: gs.score,
|
|
26
|
-
context: {
|
|
27
|
-
priorTurns: priorSpans.map(spanToTurn).filter((t) => t !== null),
|
|
28
|
-
step: { kind: node.span.kind, text: spanToText(node.span) }
|
|
29
|
-
},
|
|
30
|
-
rationale: gs.rationale,
|
|
31
|
-
evidence: gs.evidence
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return out;
|
|
36
|
-
}
|
|
37
|
-
function toNdjson(samples) {
|
|
38
|
-
return `${samples.map((s) => JSON.stringify(s)).join("\n")}
|
|
39
|
-
`;
|
|
40
|
-
}
|
|
41
|
-
function spanToTurn(span) {
|
|
42
|
-
if (isLlmSpan(span)) {
|
|
43
|
-
const text = span.output ?? span.messages.map((m) => `${m.role}: ${m.content}`).join("\n");
|
|
44
|
-
return { role: "assistant", content: text };
|
|
45
|
-
}
|
|
46
|
-
if (isToolSpan(span)) {
|
|
47
|
-
return {
|
|
48
|
-
role: "tool",
|
|
49
|
-
content: `${span.toolName}(${safeStringify(span.args)}) \u2192 ${safeStringify(span.result)}`
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
function spanToText(span) {
|
|
55
|
-
if (isLlmSpan(span)) return span.output ?? "";
|
|
56
|
-
if (isToolSpan(span))
|
|
57
|
-
return `${span.toolName}(${safeStringify(span.args)}) \u2192 ${safeStringify(span.result)}`;
|
|
58
|
-
return span.name;
|
|
59
|
-
}
|
|
60
|
-
function safeStringify(v) {
|
|
61
|
-
if (v === null || v === void 0) return "";
|
|
62
|
-
if (typeof v === "string") return v;
|
|
63
|
-
try {
|
|
64
|
-
return JSON.stringify(v);
|
|
65
|
-
} catch {
|
|
66
|
-
return String(v);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export {
|
|
71
|
-
exportTrainingData,
|
|
72
|
-
toNdjson
|
|
73
|
-
};
|
|
74
|
-
//# sourceMappingURL=chunk-KMPRBJK4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/prm/training-export.ts"],"sourcesContent":["/**\n * Export PRM-graded traces as training data for downstream reward-model\n * fine-tuning. Canonical format is NDJSON of\n * `{ trajectory_text, step_index, rubric, score }` so a small model can\n * learn to predict step rewards from step context.\n *\n * The framework doesn't train the model — we emit the data; callers\n * plug it into their preferred trainer (TRL, Unsloth, custom).\n */\n\nimport type { LlmSpan, Span } from '../trace/schema'\nimport { isLlmSpan, isToolSpan } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\nimport { buildTrajectory } from '../trajectory'\nimport type { PrmGradedTrace } from './rubric'\n\nexport interface PrmTrainingSample {\n runId: string\n spanId: string\n rubricId: string\n score: number\n /** Serialized step context — step + surrounding conversation. */\n context: {\n priorTurns: Array<{ role: string; content: string }>\n step: { kind: Span['kind']; text: string }\n }\n /** Optional evidence + rationale for auditability. */\n rationale?: string\n evidence?: string\n}\n\nexport async function exportTrainingData(\n store: TraceStore,\n graded: PrmGradedTrace[],\n options: { contextWindow?: number } = {},\n): Promise<PrmTrainingSample[]> {\n const window = options.contextWindow ?? 5\n const out: PrmTrainingSample[] = []\n for (const g of graded) {\n const trajectory = await buildTrajectory(store, g.runId)\n const spanById = new Map(trajectory.steps.map((s) => [s.span.spanId, s]))\n for (const gs of g.steps) {\n const node = spanById.get(gs.spanId)\n if (!node) continue\n const idx = trajectory.steps.indexOf(node)\n const priorSpans = trajectory.steps.slice(Math.max(0, idx - window), idx).map((s) => s.span)\n out.push({\n runId: g.runId,\n spanId: gs.spanId,\n rubricId: gs.rubricId,\n score: gs.score,\n context: {\n priorTurns: priorSpans\n .map(spanToTurn)\n .filter((t): t is { role: string; content: string } => t !== null),\n step: { kind: node.span.kind, text: spanToText(node.span) },\n },\n rationale: gs.rationale,\n evidence: gs.evidence,\n })\n }\n }\n return out\n}\n\n/** NDJSON serialization — write to file or stream directly to a trainer. */\nexport function toNdjson(samples: PrmTrainingSample[]): string {\n return `${samples.map((s) => JSON.stringify(s)).join('\\n')}\\n`\n}\n\nfunction spanToTurn(span: Span): { role: string; content: string } | null {\n if (isLlmSpan(span)) {\n const text = span.output ?? span.messages.map((m) => `${m.role}: ${m.content}`).join('\\n')\n return { role: 'assistant', content: text }\n }\n if (isToolSpan(span)) {\n return {\n role: 'tool',\n content: `${span.toolName}(${safeStringify(span.args)}) → ${safeStringify(span.result)}`,\n }\n }\n return null\n}\n\nfunction spanToText(span: Span): string {\n if (isLlmSpan(span)) return (span as LlmSpan).output ?? ''\n if (isToolSpan(span))\n return `${span.toolName}(${safeStringify(span.args)}) → ${safeStringify(span.result)}`\n return span.name\n}\n\nfunction safeStringify(v: unknown): string {\n if (v === null || v === undefined) return ''\n if (typeof v === 'string') return v\n try {\n return JSON.stringify(v)\n } catch {\n return String(v)\n }\n}\n"],"mappings":";;;;;;;;;AA+BA,eAAsB,mBACpB,OACA,QACA,UAAsC,CAAC,GACT;AAC9B,QAAM,SAAS,QAAQ,iBAAiB;AACxC,QAAM,MAA2B,CAAC;AAClC,aAAW,KAAK,QAAQ;AACtB,UAAM,aAAa,MAAM,gBAAgB,OAAO,EAAE,KAAK;AACvD,UAAM,WAAW,IAAI,IAAI,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC;AACxE,eAAW,MAAM,EAAE,OAAO;AACxB,YAAM,OAAO,SAAS,IAAI,GAAG,MAAM;AACnC,UAAI,CAAC,KAAM;AACX,YAAM,MAAM,WAAW,MAAM,QAAQ,IAAI;AACzC,YAAM,aAAa,WAAW,MAAM,MAAM,KAAK,IAAI,GAAG,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AAC3F,UAAI,KAAK;AAAA,QACP,OAAO,EAAE;AAAA,QACT,QAAQ,GAAG;AAAA,QACX,UAAU,GAAG;AAAA,QACb,OAAO,GAAG;AAAA,QACV,SAAS;AAAA,UACP,YAAY,WACT,IAAI,UAAU,EACd,OAAO,CAAC,MAA8C,MAAM,IAAI;AAAA,UACnE,MAAM,EAAE,MAAM,KAAK,KAAK,MAAM,MAAM,WAAW,KAAK,IAAI,EAAE;AAAA,QAC5D;AAAA,QACA,WAAW,GAAG;AAAA,QACd,UAAU,GAAG;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,SAAS,SAAsC;AAC7D,SAAO,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA;AAC5D;AAEA,SAAS,WAAW,MAAsD;AACxE,MAAI,UAAU,IAAI,GAAG;AACnB,UAAM,OAAO,KAAK,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI;AACzF,WAAO,EAAE,MAAM,aAAa,SAAS,KAAK;AAAA,EAC5C;AACA,MAAI,WAAW,IAAI,GAAG;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,GAAG,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,CAAC,YAAO,cAAc,KAAK,MAAM,CAAC;AAAA,IACxF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,WAAW,MAAoB;AACtC,MAAI,UAAU,IAAI,EAAG,QAAQ,KAAiB,UAAU;AACxD,MAAI,WAAW,IAAI;AACjB,WAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,CAAC,YAAO,cAAc,KAAK,MAAM,CAAC;AACtF,SAAO,KAAK;AACd;AAEA,SAAS,cAAc,GAAoB;AACzC,MAAI,MAAM,QAAQ,MAAM,OAAW,QAAO;AAC1C,MAAI,OAAO,MAAM,SAAU,QAAO;AAClC,MAAI;AACF,WAAO,KAAK,UAAU,CAAC;AAAA,EACzB,QAAQ;AACN,WAAO,OAAO,CAAC;AAAA,EACjB;AACF;","names":[]}
|
package/dist/chunk-Q2JRAWRI.js
DELETED
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
objectiveEval
|
|
3
|
-
} from "./chunk-YEHAEDUD.js";
|
|
4
|
-
|
|
5
|
-
// src/knowledge/readiness.ts
|
|
6
|
-
function scoreKnowledgeReadiness(options) {
|
|
7
|
-
const now = options.now ?? /* @__PURE__ */ new Date();
|
|
8
|
-
const requirements = options.requirements.map(normalizeRequirement);
|
|
9
|
-
const missing = requirements.filter((requirement) => isRequirementMissing(requirement, now));
|
|
10
|
-
const blockingMissingRequirements = missing.filter(isBlockingGap);
|
|
11
|
-
const nonBlockingGaps = missing.filter((requirement) => !isBlockingGap(requirement));
|
|
12
|
-
const readinessScore = weightedReadinessAt(requirements, now);
|
|
13
|
-
const bundle = {
|
|
14
|
-
taskId: options.taskId,
|
|
15
|
-
requirements,
|
|
16
|
-
evidenceIds: unique([
|
|
17
|
-
...options.evidenceIds ?? [],
|
|
18
|
-
...requirements.flatMap((r) => r.evidenceIds)
|
|
19
|
-
]),
|
|
20
|
-
claimIds: unique(options.claimIds ?? []),
|
|
21
|
-
wikiPageIds: unique(options.wikiPageIds ?? []),
|
|
22
|
-
userAnswers: options.userAnswers ?? {},
|
|
23
|
-
missing,
|
|
24
|
-
readinessScore,
|
|
25
|
-
metadata: options.metadata
|
|
26
|
-
};
|
|
27
|
-
const recommendedAction = chooseRecommendedAction(blockingMissingRequirements, nonBlockingGaps);
|
|
28
|
-
const severity = blockingMissingRequirements.length > 0 ? "critical" : nonBlockingGaps.some((gap) => gap.importance === "high") ? "warning" : "info";
|
|
29
|
-
const reason = blockingMissingRequirements.length > 0 ? `${blockingMissingRequirements.length} blocking knowledge requirement(s) are missing.` : nonBlockingGaps.length > 0 ? `${nonBlockingGaps.length} non-blocking knowledge gap(s) remain.` : "All declared knowledge requirements are ready.";
|
|
30
|
-
return {
|
|
31
|
-
taskId: options.taskId,
|
|
32
|
-
readinessScore,
|
|
33
|
-
blockingMissingRequirements,
|
|
34
|
-
nonBlockingGaps,
|
|
35
|
-
recommendedAction,
|
|
36
|
-
bundle,
|
|
37
|
-
severity,
|
|
38
|
-
reason
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
function blockingKnowledgeEval(report, options = {}) {
|
|
42
|
-
const minimumScore = options.minimumScore ?? 0.7;
|
|
43
|
-
const passed = report.blockingMissingRequirements.length === 0 && report.readinessScore >= minimumScore;
|
|
44
|
-
if (options.emitter) {
|
|
45
|
-
void options.emitter.emit({
|
|
46
|
-
kind: "custom",
|
|
47
|
-
payload: knowledgeReadinessTracePayload(report, { passed, minimumScore })
|
|
48
|
-
}).catch(() => void 0);
|
|
49
|
-
}
|
|
50
|
-
return objectiveEval({
|
|
51
|
-
id: options.id ?? "knowledge-ready",
|
|
52
|
-
passed,
|
|
53
|
-
score: report.readinessScore,
|
|
54
|
-
severity: passed ? "info" : report.severity,
|
|
55
|
-
detail: report.reason,
|
|
56
|
-
evidence: report.blockingMissingRequirements.map((r) => r.id).join(", ") || void 0,
|
|
57
|
-
metadata: { knowledgeReadiness: report }
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
function knowledgeReadinessTracePayload(report, options = {}) {
|
|
61
|
-
return {
|
|
62
|
-
kind: "readiness_scored",
|
|
63
|
-
taskId: report.taskId,
|
|
64
|
-
passed: options.passed ?? report.blockingMissingRequirements.length === 0,
|
|
65
|
-
readinessScore: report.readinessScore,
|
|
66
|
-
minimumScore: options.minimumScore,
|
|
67
|
-
blockingRequirementIds: report.blockingMissingRequirements.map((r) => r.id),
|
|
68
|
-
nonBlockingRequirementIds: report.nonBlockingGaps.map((r) => r.id),
|
|
69
|
-
recommendedAction: report.recommendedAction,
|
|
70
|
-
severity: report.severity,
|
|
71
|
-
reason: report.reason
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
function userQuestionsForKnowledgeGaps(gaps) {
|
|
75
|
-
return gaps.filter((gap) => gap.acquisitionMode === "ask_user" || gap.fallbackPolicy === "ask").map((gap) => ({
|
|
76
|
-
id: `question_${gap.id}`,
|
|
77
|
-
question: `Please provide: ${gap.description}`,
|
|
78
|
-
reason: `Required for ${gap.requiredFor.join(", ") || "the task"}.`,
|
|
79
|
-
requirementId: gap.id,
|
|
80
|
-
importance: gap.importance,
|
|
81
|
-
answerType: gap.sensitivity === "secret" ? "credential" : "free_text",
|
|
82
|
-
impactIfUnknown: impactFor(gap)
|
|
83
|
-
}));
|
|
84
|
-
}
|
|
85
|
-
function acquisitionPlansForKnowledgeGaps(gaps) {
|
|
86
|
-
const byMode = /* @__PURE__ */ new Map();
|
|
87
|
-
for (const gap of gaps) {
|
|
88
|
-
const mode = planMode(gap.acquisitionMode);
|
|
89
|
-
if (!mode) continue;
|
|
90
|
-
const bucket = byMode.get(mode) ?? [];
|
|
91
|
-
bucket.push(gap);
|
|
92
|
-
byMode.set(mode, bucket);
|
|
93
|
-
}
|
|
94
|
-
return [...byMode.entries()].map(([mode, requirements]) => ({
|
|
95
|
-
id: `acquire_${mode}`,
|
|
96
|
-
requirementIds: requirements.map((r) => r.id),
|
|
97
|
-
mode,
|
|
98
|
-
description: descriptionForPlan(mode, requirements),
|
|
99
|
-
priority: maxImportance(requirements.map((r) => r.importance)),
|
|
100
|
-
questions: mode === "ask_user" ? userQuestionsForKnowledgeGaps(requirements) : void 0
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
function normalizeRequirement(requirement) {
|
|
104
|
-
return {
|
|
105
|
-
...requirement,
|
|
106
|
-
confidenceNeeded: clamp01(requirement.confidenceNeeded),
|
|
107
|
-
currentConfidence: clamp01(requirement.currentConfidence),
|
|
108
|
-
evidenceIds: unique(requirement.evidenceIds)
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
function weightedReadinessAt(requirements, now) {
|
|
112
|
-
if (requirements.length === 0) return 1;
|
|
113
|
-
let weightSum = 0;
|
|
114
|
-
let scoreSum = 0;
|
|
115
|
-
for (const requirement of requirements) {
|
|
116
|
-
const weight = importanceWeight(requirement.importance);
|
|
117
|
-
const score = isExpired(requirement, now) ? 0 : requirement.confidenceNeeded <= 0 ? 1 : Math.min(1, requirement.currentConfidence / requirement.confidenceNeeded);
|
|
118
|
-
weightSum += weight;
|
|
119
|
-
scoreSum += weight * score;
|
|
120
|
-
}
|
|
121
|
-
return clamp01(scoreSum / weightSum);
|
|
122
|
-
}
|
|
123
|
-
function isRequirementMissing(requirement, now) {
|
|
124
|
-
return isExpired(requirement, now) || requirement.currentConfidence < requirement.confidenceNeeded;
|
|
125
|
-
}
|
|
126
|
-
function isExpired(requirement, now) {
|
|
127
|
-
if (!requirement.validUntil) return false;
|
|
128
|
-
const deadline = Date.parse(requirement.validUntil);
|
|
129
|
-
if (!Number.isFinite(deadline)) return true;
|
|
130
|
-
return deadline <= now.getTime();
|
|
131
|
-
}
|
|
132
|
-
function isBlockingGap(requirement) {
|
|
133
|
-
return requirement.importance === "blocking" || requirement.fallbackPolicy === "block" || requirement.sensitivity === "secret";
|
|
134
|
-
}
|
|
135
|
-
function chooseRecommendedAction(blocking, nonBlocking) {
|
|
136
|
-
const gaps = blocking.length > 0 ? blocking : nonBlocking;
|
|
137
|
-
if (gaps.length === 0) return "run_agent";
|
|
138
|
-
if (gaps.some((gap) => gap.acquisitionMode === "ask_user" || gap.fallbackPolicy === "ask"))
|
|
139
|
-
return "ask_user";
|
|
140
|
-
if (gaps.some((gap) => gap.acquisitionMode === "query_connector")) return "query_connectors";
|
|
141
|
-
if (gaps.some(
|
|
142
|
-
(gap) => gap.acquisitionMode === "inspect_repo" || gap.acquisitionMode === "run_command"
|
|
143
|
-
))
|
|
144
|
-
return "inspect_repo";
|
|
145
|
-
if (gaps.some((gap) => gap.acquisitionMode === "search_web")) return "collect_web_data";
|
|
146
|
-
if (gaps.some((gap) => gap.acquisitionMode === "not_available")) return "abort_or_rescope";
|
|
147
|
-
if (nonBlocking.some((gap) => gap.importance === "high")) return "build_domain_wiki";
|
|
148
|
-
return "continue_with_caveat";
|
|
149
|
-
}
|
|
150
|
-
function planMode(mode) {
|
|
151
|
-
if (mode === "infer_low_confidence" || mode === "not_available") return null;
|
|
152
|
-
return mode;
|
|
153
|
-
}
|
|
154
|
-
function descriptionForPlan(mode, requirements) {
|
|
155
|
-
const labels = requirements.map((r) => r.description).join("; ");
|
|
156
|
-
if (mode === "ask_user") return `Ask the user for: ${labels}`;
|
|
157
|
-
if (mode === "search_web") return `Search web or documentation sources for: ${labels}`;
|
|
158
|
-
if (mode === "query_connector") return `Query configured connectors for: ${labels}`;
|
|
159
|
-
if (mode === "inspect_repo") return `Inspect repository context for: ${labels}`;
|
|
160
|
-
if (mode === "run_command") return `Run local commands to collect: ${labels}`;
|
|
161
|
-
return `Build domain wiki evidence for: ${labels}`;
|
|
162
|
-
}
|
|
163
|
-
function impactFor(requirement) {
|
|
164
|
-
if (requirement.fallbackPolicy === "block") return "The agent should not run until this is known.";
|
|
165
|
-
if (requirement.fallbackPolicy === "continue_with_caveat")
|
|
166
|
-
return "The agent may continue, but must disclose uncertainty.";
|
|
167
|
-
if (requirement.fallbackPolicy === "use_default")
|
|
168
|
-
return "The agent will use the configured default if skipped.";
|
|
169
|
-
return "The agent should ask before continuing.";
|
|
170
|
-
}
|
|
171
|
-
function maxImportance(values) {
|
|
172
|
-
const order = ["blocking", "high", "medium", "low"];
|
|
173
|
-
return order.find((value) => values.includes(value)) ?? "low";
|
|
174
|
-
}
|
|
175
|
-
function importanceWeight(importance) {
|
|
176
|
-
if (importance === "blocking") return 8;
|
|
177
|
-
if (importance === "high") return 4;
|
|
178
|
-
if (importance === "medium") return 2;
|
|
179
|
-
return 1;
|
|
180
|
-
}
|
|
181
|
-
function clamp01(value) {
|
|
182
|
-
if (!Number.isFinite(value)) return 0;
|
|
183
|
-
return Math.max(0, Math.min(1, value));
|
|
184
|
-
}
|
|
185
|
-
function unique(items) {
|
|
186
|
-
return [...new Set(items)];
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export {
|
|
190
|
-
scoreKnowledgeReadiness,
|
|
191
|
-
blockingKnowledgeEval,
|
|
192
|
-
knowledgeReadinessTracePayload,
|
|
193
|
-
userQuestionsForKnowledgeGaps,
|
|
194
|
-
acquisitionPlansForKnowledgeGaps
|
|
195
|
-
};
|
|
196
|
-
//# sourceMappingURL=chunk-Q2JRAWRI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/knowledge/readiness.ts"],"sourcesContent":["import { type ControlEvalResult, objectiveEval } from '../control-runtime'\nimport type { TraceEmitter } from '../trace/emitter'\nimport type {\n DataAcquisitionPlan,\n KnowledgeAcquisitionMode,\n KnowledgeBundle,\n KnowledgeImportance,\n KnowledgeReadinessReport,\n KnowledgeRecommendedAction,\n KnowledgeRequirement,\n UserQuestion,\n} from './types'\n\nexport interface ScoreKnowledgeReadinessOptions {\n taskId: string\n requirements: KnowledgeRequirement[]\n evidenceIds?: string[]\n claimIds?: string[]\n wikiPageIds?: string[]\n userAnswers?: Record<string, string>\n metadata?: Record<string, unknown>\n now?: Date\n}\n\nexport function scoreKnowledgeReadiness(\n options: ScoreKnowledgeReadinessOptions,\n): KnowledgeReadinessReport {\n const now = options.now ?? new Date()\n const requirements = options.requirements.map(normalizeRequirement)\n const missing = requirements.filter((requirement) => isRequirementMissing(requirement, now))\n const blockingMissingRequirements = missing.filter(isBlockingGap)\n const nonBlockingGaps = missing.filter((requirement) => !isBlockingGap(requirement))\n const readinessScore = weightedReadinessAt(requirements, now)\n const bundle: KnowledgeBundle = {\n taskId: options.taskId,\n requirements,\n evidenceIds: unique([\n ...(options.evidenceIds ?? []),\n ...requirements.flatMap((r) => r.evidenceIds),\n ]),\n claimIds: unique(options.claimIds ?? []),\n wikiPageIds: unique(options.wikiPageIds ?? []),\n userAnswers: options.userAnswers ?? {},\n missing,\n readinessScore,\n metadata: options.metadata,\n }\n const recommendedAction = chooseRecommendedAction(blockingMissingRequirements, nonBlockingGaps)\n const severity =\n blockingMissingRequirements.length > 0\n ? 'critical'\n : nonBlockingGaps.some((gap) => gap.importance === 'high')\n ? 'warning'\n : 'info'\n const reason =\n blockingMissingRequirements.length > 0\n ? `${blockingMissingRequirements.length} blocking knowledge requirement(s) are missing.`\n : nonBlockingGaps.length > 0\n ? `${nonBlockingGaps.length} non-blocking knowledge gap(s) remain.`\n : 'All declared knowledge requirements are ready.'\n\n return {\n taskId: options.taskId,\n readinessScore,\n blockingMissingRequirements,\n nonBlockingGaps,\n recommendedAction,\n bundle,\n severity,\n reason,\n }\n}\n\nexport function blockingKnowledgeEval(\n report: KnowledgeReadinessReport,\n options: { id?: string; minimumScore?: number; emitter?: TraceEmitter } = {},\n): ControlEvalResult {\n const minimumScore = options.minimumScore ?? 0.7\n const passed =\n report.blockingMissingRequirements.length === 0 && report.readinessScore >= minimumScore\n if (options.emitter) {\n void options.emitter\n .emit({\n kind: 'custom',\n payload: knowledgeReadinessTracePayload(report, { passed, minimumScore }),\n })\n .catch(() => undefined)\n }\n return objectiveEval({\n id: options.id ?? 'knowledge-ready',\n passed,\n score: report.readinessScore,\n severity: passed ? 'info' : report.severity,\n detail: report.reason,\n evidence: report.blockingMissingRequirements.map((r) => r.id).join(', ') || undefined,\n metadata: { knowledgeReadiness: report },\n })\n}\n\nexport function knowledgeReadinessTracePayload(\n report: KnowledgeReadinessReport,\n options: { passed?: boolean; minimumScore?: number } = {},\n): Record<string, unknown> {\n return {\n kind: 'readiness_scored',\n taskId: report.taskId,\n passed: options.passed ?? report.blockingMissingRequirements.length === 0,\n readinessScore: report.readinessScore,\n minimumScore: options.minimumScore,\n blockingRequirementIds: report.blockingMissingRequirements.map((r) => r.id),\n nonBlockingRequirementIds: report.nonBlockingGaps.map((r) => r.id),\n recommendedAction: report.recommendedAction,\n severity: report.severity,\n reason: report.reason,\n }\n}\n\nexport function userQuestionsForKnowledgeGaps(gaps: KnowledgeRequirement[]): UserQuestion[] {\n return gaps\n .filter((gap) => gap.acquisitionMode === 'ask_user' || gap.fallbackPolicy === 'ask')\n .map((gap) => ({\n id: `question_${gap.id}`,\n question: `Please provide: ${gap.description}`,\n reason: `Required for ${gap.requiredFor.join(', ') || 'the task'}.`,\n requirementId: gap.id,\n importance: gap.importance,\n answerType: gap.sensitivity === 'secret' ? 'credential' : 'free_text',\n impactIfUnknown: impactFor(gap),\n }))\n}\n\nexport function acquisitionPlansForKnowledgeGaps(\n gaps: KnowledgeRequirement[],\n): DataAcquisitionPlan[] {\n const byMode = new Map<string, KnowledgeRequirement[]>()\n for (const gap of gaps) {\n const mode = planMode(gap.acquisitionMode)\n if (!mode) continue\n const bucket = byMode.get(mode) ?? []\n bucket.push(gap)\n byMode.set(mode, bucket)\n }\n return [...byMode.entries()].map(([mode, requirements]) => ({\n id: `acquire_${mode}`,\n requirementIds: requirements.map((r) => r.id),\n mode: mode as DataAcquisitionPlan['mode'],\n description: descriptionForPlan(mode as DataAcquisitionPlan['mode'], requirements),\n priority: maxImportance(requirements.map((r) => r.importance)),\n questions: mode === 'ask_user' ? userQuestionsForKnowledgeGaps(requirements) : undefined,\n }))\n}\n\nfunction normalizeRequirement(requirement: KnowledgeRequirement): KnowledgeRequirement {\n return {\n ...requirement,\n confidenceNeeded: clamp01(requirement.confidenceNeeded),\n currentConfidence: clamp01(requirement.currentConfidence),\n evidenceIds: unique(requirement.evidenceIds),\n }\n}\n\nfunction weightedReadinessAt(requirements: KnowledgeRequirement[], now: Date): number {\n if (requirements.length === 0) return 1\n let weightSum = 0\n let scoreSum = 0\n for (const requirement of requirements) {\n const weight = importanceWeight(requirement.importance)\n const score = isExpired(requirement, now)\n ? 0\n : requirement.confidenceNeeded <= 0\n ? 1\n : Math.min(1, requirement.currentConfidence / requirement.confidenceNeeded)\n weightSum += weight\n scoreSum += weight * score\n }\n return clamp01(scoreSum / weightSum)\n}\n\nfunction isRequirementMissing(requirement: KnowledgeRequirement, now: Date): boolean {\n return isExpired(requirement, now) || requirement.currentConfidence < requirement.confidenceNeeded\n}\n\nfunction isExpired(requirement: KnowledgeRequirement, now: Date): boolean {\n if (!requirement.validUntil) return false\n const deadline = Date.parse(requirement.validUntil)\n if (!Number.isFinite(deadline)) return true\n return deadline <= now.getTime()\n}\n\nfunction isBlockingGap(requirement: KnowledgeRequirement): boolean {\n return (\n requirement.importance === 'blocking' ||\n requirement.fallbackPolicy === 'block' ||\n requirement.sensitivity === 'secret'\n )\n}\n\nfunction chooseRecommendedAction(\n blocking: KnowledgeRequirement[],\n nonBlocking: KnowledgeRequirement[],\n): KnowledgeRecommendedAction {\n const gaps = blocking.length > 0 ? blocking : nonBlocking\n if (gaps.length === 0) return 'run_agent'\n if (gaps.some((gap) => gap.acquisitionMode === 'ask_user' || gap.fallbackPolicy === 'ask'))\n return 'ask_user'\n if (gaps.some((gap) => gap.acquisitionMode === 'query_connector')) return 'query_connectors'\n if (\n gaps.some(\n (gap) => gap.acquisitionMode === 'inspect_repo' || gap.acquisitionMode === 'run_command',\n )\n )\n return 'inspect_repo'\n if (gaps.some((gap) => gap.acquisitionMode === 'search_web')) return 'collect_web_data'\n if (gaps.some((gap) => gap.acquisitionMode === 'not_available')) return 'abort_or_rescope'\n if (nonBlocking.some((gap) => gap.importance === 'high')) return 'build_domain_wiki'\n return 'continue_with_caveat'\n}\n\nfunction planMode(mode: KnowledgeAcquisitionMode): DataAcquisitionPlan['mode'] | null {\n if (mode === 'infer_low_confidence' || mode === 'not_available') return null\n return mode\n}\n\nfunction descriptionForPlan(\n mode: DataAcquisitionPlan['mode'],\n requirements: KnowledgeRequirement[],\n): string {\n const labels = requirements.map((r) => r.description).join('; ')\n if (mode === 'ask_user') return `Ask the user for: ${labels}`\n if (mode === 'search_web') return `Search web or documentation sources for: ${labels}`\n if (mode === 'query_connector') return `Query configured connectors for: ${labels}`\n if (mode === 'inspect_repo') return `Inspect repository context for: ${labels}`\n if (mode === 'run_command') return `Run local commands to collect: ${labels}`\n return `Build domain wiki evidence for: ${labels}`\n}\n\nfunction impactFor(requirement: KnowledgeRequirement): string {\n if (requirement.fallbackPolicy === 'block') return 'The agent should not run until this is known.'\n if (requirement.fallbackPolicy === 'continue_with_caveat')\n return 'The agent may continue, but must disclose uncertainty.'\n if (requirement.fallbackPolicy === 'use_default')\n return 'The agent will use the configured default if skipped.'\n return 'The agent should ask before continuing.'\n}\n\nfunction maxImportance(values: KnowledgeImportance[]): KnowledgeImportance {\n const order: KnowledgeImportance[] = ['blocking', 'high', 'medium', 'low']\n return order.find((value) => values.includes(value)) ?? 'low'\n}\n\nfunction importanceWeight(importance: KnowledgeImportance): number {\n if (importance === 'blocking') return 8\n if (importance === 'high') return 4\n if (importance === 'medium') return 2\n return 1\n}\n\nfunction clamp01(value: number): number {\n if (!Number.isFinite(value)) return 0\n return Math.max(0, Math.min(1, value))\n}\n\nfunction unique<T>(items: T[]): T[] {\n return [...new Set(items)]\n}\n"],"mappings":"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","names":[]}
|