@tangle-network/agent-eval 0.215.0 → 0.216.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.
Files changed (192) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/adapters/http.d.ts +3 -3
  3. package/dist/{agent-profile-BGyt2z8U.d.ts → agent-profile-CIA2Atnt.d.ts} +5 -5
  4. package/dist/{agent-profile-BGyt2z8U.d.ts.map → agent-profile-CIA2Atnt.d.ts.map} +1 -1
  5. package/dist/agreement-irr-DsTURxdr.js +186 -0
  6. package/dist/agreement-irr-DsTURxdr.js.map +1 -0
  7. package/dist/analyst/index.d.ts +487 -14
  8. package/dist/analyst/index.d.ts.map +1 -1
  9. package/dist/analyst/index.js +1545 -10
  10. package/dist/analyst/index.js.map +1 -1
  11. package/dist/{analyze-runs-BlslTkOJ.d.ts → analyze-runs-CSDAh8A7.d.ts} +4 -4
  12. package/dist/{analyze-runs-BlslTkOJ.d.ts.map → analyze-runs-CSDAh8A7.d.ts.map} +1 -1
  13. package/dist/{benchmark-command-CMmeV-_Z.js → benchmark-command-CByl9dxG.js} +18 -34
  14. package/dist/benchmark-command-CByl9dxG.js.map +1 -0
  15. package/dist/benchmarks/index.d.ts +5 -5
  16. package/dist/benchmarks/index.js +3 -3
  17. package/dist/campaign/index.d.ts +7 -7
  18. package/dist/campaign/index.js +5 -5
  19. package/dist/{campaign-Cuw3DQKF.js → campaign-BQ-Jujuj.js} +7 -7
  20. package/dist/{campaign-Cuw3DQKF.js.map → campaign-BQ-Jujuj.js.map} +1 -1
  21. package/dist/{chat-client-Bnx8NZe4.js → chat-client-DthPOYGd.js} +2 -2
  22. package/dist/{chat-client-Bnx8NZe4.js.map → chat-client-DthPOYGd.js.map} +1 -1
  23. package/dist/{chat-json-call-CZI1NoGZ.js → chat-json-call-BrKsyspg.js} +2 -2
  24. package/dist/{chat-json-call-CZI1NoGZ.js.map → chat-json-call-BrKsyspg.js.map} +1 -1
  25. package/dist/cli.js +4 -4
  26. package/dist/cluster-bootstrap-B3JywQQn.js +66 -0
  27. package/dist/cluster-bootstrap-B3JywQQn.js.map +1 -0
  28. package/dist/contract/index.d.ts +11 -11
  29. package/dist/contract/index.js +8 -8
  30. package/dist/{cost-ledger-DbQdN3nO.d.ts → cost-ledger-CO7UyEcQ.d.ts} +3 -8
  31. package/dist/{cost-ledger-DbQdN3nO.d.ts.map → cost-ledger-CO7UyEcQ.d.ts.map} +1 -1
  32. package/dist/{cost-ledger-DFOeLeJi.js → cost-ledger-D2FnJPBF.js} +27 -23
  33. package/dist/cost-ledger-D2FnJPBF.js.map +1 -0
  34. package/dist/{default-registry-BAiTePcB.d.ts → default-registry-BrWh62zf.d.ts} +6 -6
  35. package/dist/{default-registry-BAiTePcB.d.ts.map → default-registry-BrWh62zf.d.ts.map} +1 -1
  36. package/dist/{default-registry-BhYGMVbV.js → default-registry-Cn1LQ2Ve.js} +742 -757
  37. package/dist/default-registry-Cn1LQ2Ve.js.map +1 -0
  38. package/dist/{define-agent-eval-CZdBPUkk.d.ts → define-agent-eval-CEWkX5wZ.d.ts} +8 -8
  39. package/dist/{define-agent-eval-CZdBPUkk.d.ts.map → define-agent-eval-CEWkX5wZ.d.ts.map} +1 -1
  40. package/dist/{define-agent-eval-FGtpqnh4.js → define-agent-eval-Ch3MWX6k.js} +3 -3
  41. package/dist/{define-agent-eval-FGtpqnh4.js.map → define-agent-eval-Ch3MWX6k.js.map} +1 -1
  42. package/dist/diagnosis/index.d.ts +2 -2
  43. package/dist/{dspy-rlm-engine-OMBXVN0u.js → dspy-rlm-engine-D-KX_e64.js} +3 -3
  44. package/dist/{dspy-rlm-engine-OMBXVN0u.js.map → dspy-rlm-engine-D-KX_e64.js.map} +1 -1
  45. package/dist/{engine-BzOR5Ygn.d.ts → engine-C_zNWfM8.d.ts} +5 -5
  46. package/dist/{engine-BzOR5Ygn.d.ts.map → engine-C_zNWfM8.d.ts.map} +1 -1
  47. package/dist/evaluation-Cn2dRZIz.d.ts +75 -0
  48. package/dist/evaluation-Cn2dRZIz.d.ts.map +1 -0
  49. package/dist/evaluation.d.ts +2 -74
  50. package/dist/evaluation.js +1 -1
  51. package/dist/{exact-types-DjhfZglz.d.ts → exact-types-CD0lf5Qd.d.ts} +2 -2
  52. package/dist/{exact-types-DjhfZglz.d.ts.map → exact-types-CD0lf5Qd.d.ts.map} +1 -1
  53. package/dist/experiment/index.d.ts +1 -1
  54. package/dist/{external-optimizer-process-DCZx5PdG.js → external-optimizer-process-nnsY5D_4.js} +2 -2
  55. package/dist/{external-optimizer-process-DCZx5PdG.js.map → external-optimizer-process-nnsY5D_4.js.map} +1 -1
  56. package/dist/{external-optimizer-subprocess-CA3aXT8I.js → external-optimizer-subprocess-DcerlZSG.js} +263 -4
  57. package/dist/external-optimizer-subprocess-DcerlZSG.js.map +1 -0
  58. package/dist/{feedback-trajectory-CX01700m.d.ts → feedback-trajectory-DkaDj0dj.d.ts} +3 -3
  59. package/dist/{feedback-trajectory-CX01700m.d.ts.map → feedback-trajectory-DkaDj0dj.d.ts.map} +1 -1
  60. package/dist/fuzz.d.ts +1 -1
  61. package/dist/fuzz.js +1 -1
  62. package/dist/{index-D0_l25We.d.ts → index-CPJJr98o.d.ts} +2 -2
  63. package/dist/{index-D0_l25We.d.ts.map → index-CPJJr98o.d.ts.map} +1 -1
  64. package/dist/{index-DNgf5gyG.d.ts → index-Ch9VxCpK.d.ts} +2 -2
  65. package/dist/{index-DNgf5gyG.d.ts.map → index-Ch9VxCpK.d.ts.map} +1 -1
  66. package/dist/{index-BTwxP7L0.d.ts → index-DlH0Y9gI.d.ts} +10 -10
  67. package/dist/{index-BTwxP7L0.d.ts.map → index-DlH0Y9gI.d.ts.map} +1 -1
  68. package/dist/{index-D_rfXep9.d.ts → index-NvGBiO8H.d.ts} +10 -10
  69. package/dist/{index-D_rfXep9.d.ts.map → index-NvGBiO8H.d.ts.map} +1 -1
  70. package/dist/{index-BWiAAWrk.d.ts → index-oQ4aHziK.d.ts} +9 -9
  71. package/dist/{index-BWiAAWrk.d.ts.map → index-oQ4aHziK.d.ts.map} +1 -1
  72. package/dist/index.d.ts +25 -25
  73. package/dist/index.js +16 -15
  74. package/dist/index.js.map +1 -1
  75. package/dist/{integrity-zloavsM_.d.ts → integrity-CCAxGVK6.d.ts} +2 -2
  76. package/dist/{integrity-zloavsM_.d.ts.map → integrity-CCAxGVK6.d.ts.map} +1 -1
  77. package/dist/{judge-gate-B1_O0QIs.d.ts → judge-gate-DNcUrRFA.d.ts} +2 -2
  78. package/dist/{judge-gate-B1_O0QIs.d.ts.map → judge-gate-DNcUrRFA.d.ts.map} +1 -1
  79. package/dist/{kind-factory-CMlOx08-.js → kind-factory-CbZ-6tvu.js} +3 -3
  80. package/dist/{kind-factory-CMlOx08-.js.map → kind-factory-CbZ-6tvu.js.map} +1 -1
  81. package/dist/{llm-client-C_o62yG1.js → llm-client-DQveoxSM.js} +2 -2
  82. package/dist/{llm-client-C_o62yG1.js.map → llm-client-DQveoxSM.js.map} +1 -1
  83. package/dist/{llm-judge-Dw0rDpve.js → llm-judge-PXV7Xljl.js} +5 -5
  84. package/dist/{llm-judge-Dw0rDpve.js.map → llm-judge-PXV7Xljl.js.map} +1 -1
  85. package/dist/matrix/index.d.ts +2 -2
  86. package/dist/{matrix-CQwid3kj.d.ts → matrix-CHMiebFx.d.ts} +4 -4
  87. package/dist/{matrix-CQwid3kj.d.ts.map → matrix-CHMiebFx.d.ts.map} +1 -1
  88. package/dist/meta-eval/index.d.ts +2 -2
  89. package/dist/meta-eval/index.js +1 -62
  90. package/dist/meta-eval/index.js.map +1 -1
  91. package/dist/{mint-CDy-brUR.d.ts → mint-DCGoBYhB.d.ts} +2 -2
  92. package/dist/{mint-CDy-brUR.d.ts.map → mint-DCGoBYhB.d.ts.map} +1 -1
  93. package/dist/multishot/golden/index.d.ts +1 -1
  94. package/dist/multishot/index.d.ts +2 -2
  95. package/dist/openapi.json +1 -1
  96. package/dist/pipelines/index.js +1 -1
  97. package/dist/{prime-protocol-B7et3tI7.d.ts → prime-protocol-CEE4BR9N.d.ts} +3 -3
  98. package/dist/{prime-protocol-B7et3tI7.d.ts.map → prime-protocol-CEE4BR9N.d.ts.map} +1 -1
  99. package/dist/{produced-state-C1cTYK6w.js → produced-state-ZCtDBxAE.js} +4 -4
  100. package/dist/{produced-state-C1cTYK6w.js.map → produced-state-ZCtDBxAE.js.map} +1 -1
  101. package/dist/{proposal-findings-CXblsskH.js → proposal-findings-BZiMTzAF.js} +2 -36
  102. package/dist/proposal-findings-BZiMTzAF.js.map +1 -0
  103. package/dist/{registry-BL7H33tj.d.ts → registry-JYfPxcVz.d.ts} +11 -13
  104. package/dist/registry-JYfPxcVz.d.ts.map +1 -0
  105. package/dist/{release-confidence-C4kI7lQi.d.ts → release-confidence-BK2QCB5M.d.ts} +3 -3
  106. package/dist/{release-confidence-C4kI7lQi.d.ts.map → release-confidence-BK2QCB5M.d.ts.map} +1 -1
  107. package/dist/{report-command-CtIIsQKP.js → report-command-y8H6RSX8.js} +23 -7
  108. package/dist/report-command-y8H6RSX8.js.map +1 -0
  109. package/dist/reporting.d.ts +3 -3
  110. package/dist/{researcher-DuIJ9IaA.d.ts → researcher-f6mZhh58.d.ts} +5 -5
  111. package/dist/{researcher-DuIJ9IaA.d.ts.map → researcher-f6mZhh58.d.ts.map} +1 -1
  112. package/dist/{reward-hacking-C6Kp54Av.d.ts → reward-hacking-DHA7c1l8.d.ts} +2 -2
  113. package/dist/{reward-hacking-C6Kp54Av.d.ts.map → reward-hacking-DHA7c1l8.d.ts.map} +1 -1
  114. package/dist/rl.d.ts +8 -8
  115. package/dist/rl.js +1 -1
  116. package/dist/rollout/index.d.ts +2 -2
  117. package/dist/{rubric-predictive-validity-BiNNEjpG.d.ts → rubric-predictive-validity-2SgHxoa5.d.ts} +2 -2
  118. package/dist/{rubric-predictive-validity-BiNNEjpG.d.ts.map → rubric-predictive-validity-2SgHxoa5.d.ts.map} +1 -1
  119. package/dist/{run-record-p2AYTrCn.d.ts → run-record-D1Hw-Jml.d.ts} +2 -2
  120. package/dist/{run-record-p2AYTrCn.d.ts.map → run-record-D1Hw-Jml.d.ts.map} +1 -1
  121. package/dist/search/index.d.ts +2 -2
  122. package/dist/{search-kernel-BWp7hfJn.d.ts → search-kernel-CpcKH5Ih.d.ts} +4 -4
  123. package/dist/{search-kernel-BWp7hfJn.d.ts.map → search-kernel-CpcKH5Ih.d.ts.map} +1 -1
  124. package/dist/{semantic-concept-judge-sDBNg_mI.js → semantic-concept-judge-zQBG9hHU.js} +6 -6
  125. package/dist/{semantic-concept-judge-sDBNg_mI.js.map → semantic-concept-judge-zQBG9hHU.js.map} +1 -1
  126. package/dist/{server-BRpadnVt.js → server-DbcC7xMl.js} +3 -3
  127. package/dist/{server-BRpadnVt.js.map → server-DbcC7xMl.js.map} +1 -1
  128. package/dist/{skillopt-optimization-method-CvaFGm95.js → skillopt-optimization-method-CCtzralq.js} +5 -5
  129. package/dist/{skillopt-optimization-method-CvaFGm95.js.map → skillopt-optimization-method-CCtzralq.js.map} +1 -1
  130. package/dist/{statistical-heldout-DZaTo3gZ.d.ts → statistical-heldout-BeR4bOdg.d.ts} +3 -3
  131. package/dist/{statistical-heldout-DZaTo3gZ.d.ts.map → statistical-heldout-BeR4bOdg.d.ts.map} +1 -1
  132. package/dist/{store-otlp-0AiS29kg.js → store-otlp-DtB4Slsr.js} +2 -2
  133. package/dist/{store-otlp-0AiS29kg.js.map → store-otlp-DtB4Slsr.js.map} +1 -1
  134. package/dist/{store-tool-spans-DuvZ4YWb.d.ts → store-tool-spans-DR1SrCLK.d.ts} +7 -7
  135. package/dist/{store-tool-spans-DuvZ4YWb.d.ts.map → store-tool-spans-DR1SrCLK.d.ts.map} +1 -1
  136. package/dist/{store-tool-spans-BAcBBSM8.js → store-tool-spans-fZIigrpP.js} +3 -3
  137. package/dist/{store-tool-spans-BAcBBSM8.js.map → store-tool-spans-fZIigrpP.js.map} +1 -1
  138. package/dist/{summary-report-CK0ueoJd.d.ts → summary-report-C-CtItCN.d.ts} +2 -2
  139. package/dist/{summary-report-CK0ueoJd.d.ts.map → summary-report-C-CtItCN.d.ts.map} +1 -1
  140. package/dist/supervisor-run/index.d.ts +1 -1
  141. package/dist/supervisor-run/index.d.ts.map +1 -1
  142. package/dist/supervisor-run/index.js +1 -1
  143. package/dist/systemone-CpTLAlqb.d.ts +135 -0
  144. package/dist/systemone-CpTLAlqb.d.ts.map +1 -0
  145. package/dist/{systemone-review-DTClwgmE.js → systemone-review-BZWfrtq1.js} +2 -2
  146. package/dist/{systemone-review-DTClwgmE.js.map → systemone-review-BZWfrtq1.js.map} +1 -1
  147. package/dist/{systemone-review-BReh3mvm.d.ts → systemone-review-B_yo1xsd.d.ts} +2 -2
  148. package/dist/{systemone-review-BReh3mvm.d.ts.map → systemone-review-B_yo1xsd.d.ts.map} +1 -1
  149. package/dist/systemone.d.ts +4 -134
  150. package/dist/systemone.js +1 -1
  151. package/dist/terminal-record-BHocwFw1.js.map +1 -1
  152. package/dist/{tool-groups-DOriCbkR.d.ts → tool-groups-mcxOXVlb.d.ts} +3 -3
  153. package/dist/tool-groups-mcxOXVlb.d.ts.map +1 -0
  154. package/dist/{tool-waste-BYt5rdt8.js → tool-waste-D52PqU9Q.js} +3 -156
  155. package/dist/tool-waste-D52PqU9Q.js.map +1 -0
  156. package/dist/{trace-questions-RCaYLkwH.d.ts → trace-questions-DG7nqLQ7.d.ts} +4 -4
  157. package/dist/{trace-questions-RCaYLkwH.d.ts.map → trace-questions-DG7nqLQ7.d.ts.map} +1 -1
  158. package/dist/trace-repair/index.d.ts +3 -3
  159. package/dist/traces.d.ts +6 -6
  160. package/dist/traces.js +3 -3
  161. package/dist/{types-CMnPcbW5.d.ts → types-B4C5nFw6.d.ts} +6 -6
  162. package/dist/{types-CMnPcbW5.d.ts.map → types-B4C5nFw6.d.ts.map} +1 -1
  163. package/dist/{types-DjOMwGY_.d.ts → types-BqkVmHfv.d.ts} +7 -1
  164. package/dist/types-BqkVmHfv.d.ts.map +1 -0
  165. package/dist/{types-Dj0Qv2qi.d.ts → types-CfZMIzB_.d.ts} +3 -3
  166. package/dist/{types-Dj0Qv2qi.d.ts.map → types-CfZMIzB_.d.ts.map} +1 -1
  167. package/dist/{types-Lub7o6bN.d.ts → types-DBZ7keha.d.ts} +2 -2
  168. package/dist/{types-Lub7o6bN.d.ts.map → types-DBZ7keha.d.ts.map} +1 -1
  169. package/dist/{types-CW5b90JH.js → types-IXD2HJzu.js} +16 -3
  170. package/dist/types-IXD2HJzu.js.map +1 -0
  171. package/dist/{types-KEkKkETv.d.ts → types-oKRhQAde.d.ts} +347 -6
  172. package/dist/types-oKRhQAde.d.ts.map +1 -0
  173. package/dist/wire/index.d.ts +3 -3
  174. package/dist/wire/index.js +1 -1
  175. package/docs/campaign-proposers.md +3 -0
  176. package/docs/concepts.md +1 -0
  177. package/docs/finding-layers.md +69 -0
  178. package/package.json +1 -1
  179. package/dist/benchmark-command-CMmeV-_Z.js.map +0 -1
  180. package/dist/cost-ledger-DFOeLeJi.js.map +0 -1
  181. package/dist/default-registry-BhYGMVbV.js.map +0 -1
  182. package/dist/evaluation.d.ts.map +0 -1
  183. package/dist/external-optimizer-subprocess-CA3aXT8I.js.map +0 -1
  184. package/dist/proposal-findings-CXblsskH.js.map +0 -1
  185. package/dist/registry-BL7H33tj.d.ts.map +0 -1
  186. package/dist/report-command-CtIIsQKP.js.map +0 -1
  187. package/dist/systemone.d.ts.map +0 -1
  188. package/dist/tool-groups-DOriCbkR.d.ts.map +0 -1
  189. package/dist/tool-waste-BYt5rdt8.js.map +0 -1
  190. package/dist/types-CW5b90JH.js.map +0 -1
  191. package/dist/types-DjOMwGY_.d.ts.map +0 -1
  192. package/dist/types-KEkKkETv.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"systemone-review-DTClwgmE.js","names":[],"sources":["../src/systemone-review.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n ANALYST_SEVERITIES,\n type AnalystFinding,\n type EvidenceRef,\n makeFinding,\n} from './analyst/types'\nimport { canonicalString, hashCanonical, jsonDocument } from './ledger-core/canonical'\nimport { deepFreezeCanonicalJson } from './ledger-core/deep-freeze'\nimport type { SystemOneQuestions, SystemOneRequest, SystemOneResult } from './systemone-protocol'\nimport { parseSystemOneRequest, parseSystemOneResult } from './systemone-protocol'\n\nconst name = z.string().trim().min(1)\nconst probability = z.number().finite().gt(0).max(1)\nconst checkSchema = z\n .object({\n claim: name,\n area: name,\n subject: name,\n severity: z.enum(ANALYST_SEVERITIES),\n /** Choice labels or score-level keys, never scores invented from category order. */\n supports: z.array(z.string()).min(1),\n refutes: z.array(z.string()).min(1),\n supportAtLeast: probability,\n refuteAtLeast: probability,\n /** Host-supplied coverage of the question's required evidence, not model self-assessment. */\n coverage: z.enum(['complete', 'partial', 'missing']),\n evidence: z.array(\n z\n .object({\n kind: z.enum(['span', 'event', 'artifact', 'finding', 'metric']),\n uri: name,\n excerpt: z.string().optional(),\n })\n .strict(),\n ),\n })\n .strict()\n .refine((value) => value.supportAtLeast + value.refuteAtLeast > 1, {\n message: 'Support and refutation thresholds must not overlap',\n })\n\n/** Optional interpretation of native choices/scores. Policy and evidence belong to the caller. */\nexport type SystemOneReviewCheck = z.infer<typeof checkSchema>\nexport interface SystemOneReviewInput<Q extends SystemOneQuestions = SystemOneQuestions> {\n version: string\n request: SystemOneRequest<Q>\n checks: { [K in keyof Q]: SystemOneReviewCheck }\n}\n\nexport interface PreparedSystemOneReview<Q extends SystemOneQuestions = SystemOneQuestions>\n extends SystemOneReviewInput<Q> {\n /** Binds questions, option order, context, evidence, thresholds and definition version. */\n digest: string\n}\n\nexport interface SystemOneReviewAssessment {\n question: string\n status: 'supported' | 'refuted' | 'unresolved'\n reason:\n | 'support-threshold'\n | 'refutation-threshold'\n | 'missing-evidence'\n | 'partial-negative-evidence'\n | 'below-threshold'\n | 'ambiguous-thresholds'\n /** Unnormalized marginal mass of caller-designated native alternatives. Not calibrated risk. */\n supportProbability: number\n refutationProbability: number\n unresolvedProbability: number\n modelConfidence: number | null\n check: SystemOneReviewCheck\n}\n\nexport interface SystemOneReviewReport {\n reviewDigest: string\n requestedModel: string\n servedModel: string\n assessments: SystemOneReviewAssessment[]\n}\n\nfunction alternatives(question: SystemOneQuestions[string]): string[] {\n if (question.type === 'noul') return ['true', 'false']\n return question.type === 'choice'\n ? Object.keys(question.criteria)\n : question.criteria.map((_, index) => String(index))\n}\n\n/** Validate before paid admission; make a detached, frozen snapshot without rewriting native JSON. */\nexport function prepareSystemOneReview<const Q extends SystemOneQuestions>(\n input: SystemOneReviewInput<Q>,\n): PreparedSystemOneReview<Q> {\n if (!input.version?.trim()) throw new TypeError('Review version is required')\n parseSystemOneRequest(input.request)\n // Document form drops only optional undefined object fields; canonicalization rejects loss.\n const document = jsonDocument(input)\n canonicalString(document)\n // Canonical bytes are for hashing, not dispatch: option order can affect a classifier.\n const snapshot = structuredClone(document) as SystemOneReviewInput<Q>\n const keys = Object.keys(snapshot.request.questions)\n if (\n !snapshot.checks ||\n Object.keys(snapshot.checks).length !== keys.length ||\n keys.some((key) => !Object.hasOwn(snapshot.checks, key))\n ) {\n throw new TypeError('Review checks must match the exact question names')\n }\n for (const key of keys) {\n const check = checkSchema.parse(snapshot.checks[key])\n const labels = [...check.supports, ...check.refutes]\n const allowed = alternatives(snapshot.request.questions[key]!)\n if (\n new Set(labels).size !== labels.length ||\n labels.some((label) => !allowed.includes(label))\n ) {\n throw new TypeError('Review alternatives must exist and be disjoint')\n }\n if (check.coverage !== 'missing' && check.evidence.length === 0) {\n throw new TypeError('Review evidence references are required for non-missing coverage')\n }\n // Validation must not normalize a label into a different native option.\n if (canonicalString(jsonDocument(check)) !== canonicalString(snapshot.checks[key])) {\n throw new TypeError('Review metadata must not require normalization')\n }\n }\n const order = keys.map((key) => [key, alternatives(snapshot.request.questions[key]!)])\n return deepFreezeCanonicalJson({ ...snapshot, digest: hashCanonical({ snapshot, order }) })\n}\n\n/** Re-score the same retained distribution without new inference or any authorization effect. */\nexport function assessSystemOneReview<Q extends SystemOneQuestions>(\n review: PreparedSystemOneReview<Q>,\n raw: unknown,\n): SystemOneReviewReport {\n const { digest, ...input } = review\n const prepared = prepareSystemOneReview(input)\n if (prepared.digest !== digest) throw new TypeError('Review definition changed after preparation')\n const result = parseSystemOneResult(raw, prepared.request)\n const assessments = Object.entries(prepared.checks).map(([question, check]) => {\n const answer = result.answers[question]!\n const probabilities: Record<string, number> =\n answer.type === 'noul' ? { true: answer.noul, false: 1 - answer.noul } : answer.probabilities\n const sum = (labels: string[]) =>\n labels.reduce((total, label) => total + probabilities[label]!, 0)\n const supportProbability = sum(check.supports)\n const refutationProbability = sum(check.refutes)\n const used = new Set([...check.supports, ...check.refutes])\n const unresolvedProbability = sum(\n Object.keys(probabilities).filter((label) => !used.has(label)),\n )\n let status: SystemOneReviewAssessment['status'] = 'unresolved'\n let reason: SystemOneReviewAssessment['reason'] = 'below-threshold'\n if (supportProbability > 1 || refutationProbability > 1 || unresolvedProbability > 1) {\n throw new TypeError('Review probability mass exceeds one; do not silently normalize it')\n }\n if (check.coverage === 'missing') reason = 'missing-evidence'\n else if (\n supportProbability >= check.supportAtLeast &&\n refutationProbability >= check.refuteAtLeast\n ) {\n reason = 'ambiguous-thresholds'\n } else if (supportProbability >= check.supportAtLeast) {\n status = 'supported'\n reason = 'support-threshold'\n } else if (refutationProbability >= check.refuteAtLeast) {\n if (check.coverage === 'complete') {\n status = 'refuted'\n reason = 'refutation-threshold'\n } else reason = 'partial-negative-evidence'\n }\n return {\n question,\n status,\n reason,\n supportProbability,\n refutationProbability,\n unresolvedProbability,\n modelConfidence: answer.type === 'noul' ? null : answer.confidence,\n check: structuredClone(check),\n }\n })\n return {\n reviewDigest: digest,\n requestedModel: review.request.model,\n servedModel: result.model,\n assessments,\n }\n}\n\n/** Ordinary analyst findings; a negative review is not a global safety certificate. */\nexport function systemOneReviewFindings<Q extends SystemOneQuestions>(\n review: PreparedSystemOneReview<Q>,\n result: SystemOneResult<Q>,\n options: { analystId: string; producedAt?: string },\n): AnalystFinding[] {\n if (!options.analystId.trim()) throw new TypeError('Analyst id is required')\n const report = assessSystemOneReview(review, result)\n return report.assessments\n .filter((item) => item.status !== 'refuted')\n .map((item) =>\n makeFinding({\n analyst_id: options.analystId,\n ...(options.producedAt === undefined ? {} : { produced_at: options.producedAt }),\n subject: item.check.subject,\n area: item.status === 'unresolved' ? 'assessment-coverage' : item.check.area,\n severity: item.status === 'unresolved' ? 'info' : item.check.severity,\n claim:\n item.status === 'supported'\n ? `Model-supported hypothesis: ${item.check.claim}`\n : `Unresolved review: ${item.check.claim}`,\n evidence_refs: structuredClone(item.check.evidence) as EvidenceRef[],\n // For unresolved findings, confidence describes the deterministic unresolved status only.\n confidence: item.status === 'supported' ? item.supportProbability : 1,\n derived_from_judge: true,\n id_basis: hashCanonical([item.question, item.status, review.version, item.check.claim]),\n metadata: {\n review_digest: report.reviewDigest,\n question: item.question,\n requested_model: report.requestedModel,\n served_model: report.servedModel,\n assessment: item.status,\n assessment_reason: item.reason,\n evidence_coverage: item.check.coverage,\n support_probability: item.supportProbability,\n refutation_probability: item.refutationProbability,\n unresolved_probability: item.unresolvedProbability,\n model_confidence: item.modelConfidence,\n calibration: 'not-established',\n confidence_basis:\n item.status === 'supported' ? 'model-support-mass' : 'deterministic-status',\n native_answer: structuredClone(result.answers[item.question]),\n },\n }),\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"systemone-review-BZWfrtq1.js","names":[],"sources":["../src/systemone-review.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n ANALYST_SEVERITIES,\n type AnalystFinding,\n type EvidenceRef,\n makeFinding,\n} from './analyst/types'\nimport { canonicalString, hashCanonical, jsonDocument } from './ledger-core/canonical'\nimport { deepFreezeCanonicalJson } from './ledger-core/deep-freeze'\nimport type { SystemOneQuestions, SystemOneRequest, SystemOneResult } from './systemone-protocol'\nimport { parseSystemOneRequest, parseSystemOneResult } from './systemone-protocol'\n\nconst name = z.string().trim().min(1)\nconst probability = z.number().finite().gt(0).max(1)\nconst checkSchema = z\n .object({\n claim: name,\n area: name,\n subject: name,\n severity: z.enum(ANALYST_SEVERITIES),\n /** Choice labels or score-level keys, never scores invented from category order. */\n supports: z.array(z.string()).min(1),\n refutes: z.array(z.string()).min(1),\n supportAtLeast: probability,\n refuteAtLeast: probability,\n /** Host-supplied coverage of the question's required evidence, not model self-assessment. */\n coverage: z.enum(['complete', 'partial', 'missing']),\n evidence: z.array(\n z\n .object({\n kind: z.enum(['span', 'event', 'artifact', 'finding', 'metric']),\n uri: name,\n excerpt: z.string().optional(),\n })\n .strict(),\n ),\n })\n .strict()\n .refine((value) => value.supportAtLeast + value.refuteAtLeast > 1, {\n message: 'Support and refutation thresholds must not overlap',\n })\n\n/** Optional interpretation of native choices/scores. Policy and evidence belong to the caller. */\nexport type SystemOneReviewCheck = z.infer<typeof checkSchema>\nexport interface SystemOneReviewInput<Q extends SystemOneQuestions = SystemOneQuestions> {\n version: string\n request: SystemOneRequest<Q>\n checks: { [K in keyof Q]: SystemOneReviewCheck }\n}\n\nexport interface PreparedSystemOneReview<Q extends SystemOneQuestions = SystemOneQuestions>\n extends SystemOneReviewInput<Q> {\n /** Binds questions, option order, context, evidence, thresholds and definition version. */\n digest: string\n}\n\nexport interface SystemOneReviewAssessment {\n question: string\n status: 'supported' | 'refuted' | 'unresolved'\n reason:\n | 'support-threshold'\n | 'refutation-threshold'\n | 'missing-evidence'\n | 'partial-negative-evidence'\n | 'below-threshold'\n | 'ambiguous-thresholds'\n /** Unnormalized marginal mass of caller-designated native alternatives. Not calibrated risk. */\n supportProbability: number\n refutationProbability: number\n unresolvedProbability: number\n modelConfidence: number | null\n check: SystemOneReviewCheck\n}\n\nexport interface SystemOneReviewReport {\n reviewDigest: string\n requestedModel: string\n servedModel: string\n assessments: SystemOneReviewAssessment[]\n}\n\nfunction alternatives(question: SystemOneQuestions[string]): string[] {\n if (question.type === 'noul') return ['true', 'false']\n return question.type === 'choice'\n ? Object.keys(question.criteria)\n : question.criteria.map((_, index) => String(index))\n}\n\n/** Validate before paid admission; make a detached, frozen snapshot without rewriting native JSON. */\nexport function prepareSystemOneReview<const Q extends SystemOneQuestions>(\n input: SystemOneReviewInput<Q>,\n): PreparedSystemOneReview<Q> {\n if (!input.version?.trim()) throw new TypeError('Review version is required')\n parseSystemOneRequest(input.request)\n // Document form drops only optional undefined object fields; canonicalization rejects loss.\n const document = jsonDocument(input)\n canonicalString(document)\n // Canonical bytes are for hashing, not dispatch: option order can affect a classifier.\n const snapshot = structuredClone(document) as SystemOneReviewInput<Q>\n const keys = Object.keys(snapshot.request.questions)\n if (\n !snapshot.checks ||\n Object.keys(snapshot.checks).length !== keys.length ||\n keys.some((key) => !Object.hasOwn(snapshot.checks, key))\n ) {\n throw new TypeError('Review checks must match the exact question names')\n }\n for (const key of keys) {\n const check = checkSchema.parse(snapshot.checks[key])\n const labels = [...check.supports, ...check.refutes]\n const allowed = alternatives(snapshot.request.questions[key]!)\n if (\n new Set(labels).size !== labels.length ||\n labels.some((label) => !allowed.includes(label))\n ) {\n throw new TypeError('Review alternatives must exist and be disjoint')\n }\n if (check.coverage !== 'missing' && check.evidence.length === 0) {\n throw new TypeError('Review evidence references are required for non-missing coverage')\n }\n // Validation must not normalize a label into a different native option.\n if (canonicalString(jsonDocument(check)) !== canonicalString(snapshot.checks[key])) {\n throw new TypeError('Review metadata must not require normalization')\n }\n }\n const order = keys.map((key) => [key, alternatives(snapshot.request.questions[key]!)])\n return deepFreezeCanonicalJson({ ...snapshot, digest: hashCanonical({ snapshot, order }) })\n}\n\n/** Re-score the same retained distribution without new inference or any authorization effect. */\nexport function assessSystemOneReview<Q extends SystemOneQuestions>(\n review: PreparedSystemOneReview<Q>,\n raw: unknown,\n): SystemOneReviewReport {\n const { digest, ...input } = review\n const prepared = prepareSystemOneReview(input)\n if (prepared.digest !== digest) throw new TypeError('Review definition changed after preparation')\n const result = parseSystemOneResult(raw, prepared.request)\n const assessments = Object.entries(prepared.checks).map(([question, check]) => {\n const answer = result.answers[question]!\n const probabilities: Record<string, number> =\n answer.type === 'noul' ? { true: answer.noul, false: 1 - answer.noul } : answer.probabilities\n const sum = (labels: string[]) =>\n labels.reduce((total, label) => total + probabilities[label]!, 0)\n const supportProbability = sum(check.supports)\n const refutationProbability = sum(check.refutes)\n const used = new Set([...check.supports, ...check.refutes])\n const unresolvedProbability = sum(\n Object.keys(probabilities).filter((label) => !used.has(label)),\n )\n let status: SystemOneReviewAssessment['status'] = 'unresolved'\n let reason: SystemOneReviewAssessment['reason'] = 'below-threshold'\n if (supportProbability > 1 || refutationProbability > 1 || unresolvedProbability > 1) {\n throw new TypeError('Review probability mass exceeds one; do not silently normalize it')\n }\n if (check.coverage === 'missing') reason = 'missing-evidence'\n else if (\n supportProbability >= check.supportAtLeast &&\n refutationProbability >= check.refuteAtLeast\n ) {\n reason = 'ambiguous-thresholds'\n } else if (supportProbability >= check.supportAtLeast) {\n status = 'supported'\n reason = 'support-threshold'\n } else if (refutationProbability >= check.refuteAtLeast) {\n if (check.coverage === 'complete') {\n status = 'refuted'\n reason = 'refutation-threshold'\n } else reason = 'partial-negative-evidence'\n }\n return {\n question,\n status,\n reason,\n supportProbability,\n refutationProbability,\n unresolvedProbability,\n modelConfidence: answer.type === 'noul' ? null : answer.confidence,\n check: structuredClone(check),\n }\n })\n return {\n reviewDigest: digest,\n requestedModel: review.request.model,\n servedModel: result.model,\n assessments,\n }\n}\n\n/** Ordinary analyst findings; a negative review is not a global safety certificate. */\nexport function systemOneReviewFindings<Q extends SystemOneQuestions>(\n review: PreparedSystemOneReview<Q>,\n result: SystemOneResult<Q>,\n options: { analystId: string; producedAt?: string },\n): AnalystFinding[] {\n if (!options.analystId.trim()) throw new TypeError('Analyst id is required')\n const report = assessSystemOneReview(review, result)\n return report.assessments\n .filter((item) => item.status !== 'refuted')\n .map((item) =>\n makeFinding({\n analyst_id: options.analystId,\n ...(options.producedAt === undefined ? {} : { produced_at: options.producedAt }),\n subject: item.check.subject,\n area: item.status === 'unresolved' ? 'assessment-coverage' : item.check.area,\n severity: item.status === 'unresolved' ? 'info' : item.check.severity,\n claim:\n item.status === 'supported'\n ? `Model-supported hypothesis: ${item.check.claim}`\n : `Unresolved review: ${item.check.claim}`,\n evidence_refs: structuredClone(item.check.evidence) as EvidenceRef[],\n // For unresolved findings, confidence describes the deterministic unresolved status only.\n confidence: item.status === 'supported' ? item.supportProbability : 1,\n derived_from_judge: true,\n id_basis: hashCanonical([item.question, item.status, review.version, item.check.claim]),\n metadata: {\n review_digest: report.reviewDigest,\n question: item.question,\n requested_model: report.requestedModel,\n served_model: report.servedModel,\n assessment: item.status,\n assessment_reason: item.reason,\n evidence_coverage: item.check.coverage,\n support_probability: item.supportProbability,\n refutation_probability: item.refutationProbability,\n unresolved_probability: item.unresolvedProbability,\n model_confidence: item.modelConfidence,\n calibration: 'not-established',\n confidence_basis:\n item.status === 'supported' ? 'model-support-mass' : 'deterministic-status',\n native_answer: structuredClone(result.answers[item.question]),\n },\n }),\n )\n}\n"],"mappings":";;;;;;AAYA,MAAM,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACpC,MAAM,cAAc,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,MAAM,cAAc,EACjB,OAAO;CACN,OAAO;CACP,MAAM;CACN,SAAS;CACT,UAAU,EAAE,KAAK,kBAAkB;;CAEnC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;CACnC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;CAClC,gBAAgB;CAChB,eAAe;;CAEf,UAAU,EAAE,KAAK;EAAC;EAAY;EAAW;CAAS,CAAC;CACnD,UAAU,EAAE,MACV,EACG,OAAO;EACN,MAAM,EAAE,KAAK;GAAC;GAAQ;GAAS;GAAY;GAAW;EAAQ,CAAC;EAC/D,KAAK;EACL,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,CAAC,CAAC,CACD,OAAO,CACZ;AACF,CAAC,CAAC,CACD,OAAO,CAAC,CACR,QAAQ,UAAU,MAAM,iBAAiB,MAAM,gBAAgB,GAAG,EACjE,SAAS,qDACX,CAAC;AAyCH,SAAS,aAAa,UAAgD;CACpE,IAAI,SAAS,SAAS,QAAQ,OAAO,CAAC,QAAQ,OAAO;CACrD,OAAO,SAAS,SAAS,WACrB,OAAO,KAAK,SAAS,QAAQ,IAC7B,SAAS,SAAS,KAAK,GAAG,UAAU,OAAO,KAAK,CAAC;AACvD;;AAGA,SAAgB,uBACd,OAC4B;CAC5B,IAAI,CAAC,MAAM,SAAS,KAAK,GAAG,MAAM,IAAI,UAAU,4BAA4B;CAC5E,sBAAsB,MAAM,OAAO;CAEnC,MAAM,WAAW,aAAa,KAAK;CACnC,gBAAgB,QAAQ;CAExB,MAAM,WAAW,gBAAgB,QAAQ;CACzC,MAAM,OAAO,OAAO,KAAK,SAAS,QAAQ,SAAS;CACnD,IACE,CAAC,SAAS,UACV,OAAO,KAAK,SAAS,MAAM,CAAC,CAAC,WAAW,KAAK,UAC7C,KAAK,MAAM,QAAQ,CAAC,OAAO,OAAO,SAAS,QAAQ,GAAG,CAAC,GAEvD,MAAM,IAAI,UAAU,mDAAmD;CAEzE,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,YAAY,MAAM,SAAS,OAAO,IAAI;EACpD,MAAM,SAAS,CAAC,GAAG,MAAM,UAAU,GAAG,MAAM,OAAO;EACnD,MAAM,UAAU,aAAa,SAAS,QAAQ,UAAU,IAAK;EAC7D,IACE,IAAI,IAAI,MAAM,CAAC,CAAC,SAAS,OAAO,UAChC,OAAO,MAAM,UAAU,CAAC,QAAQ,SAAS,KAAK,CAAC,GAE/C,MAAM,IAAI,UAAU,gDAAgD;EAEtE,IAAI,MAAM,aAAa,aAAa,MAAM,SAAS,WAAW,GAC5D,MAAM,IAAI,UAAU,kEAAkE;EAGxF,IAAI,gBAAgB,aAAa,KAAK,CAAC,MAAM,gBAAgB,SAAS,OAAO,IAAI,GAC/E,MAAM,IAAI,UAAU,gDAAgD;CAExE;CACA,MAAM,QAAQ,KAAK,KAAK,QAAQ,CAAC,KAAK,aAAa,SAAS,QAAQ,UAAU,IAAK,CAAC,CAAC;CACrF,OAAO,wBAAwB;EAAE,GAAG;EAAU,QAAQ,cAAc;GAAE;GAAU;EAAM,CAAC;CAAE,CAAC;AAC5F;;AAGA,SAAgB,sBACd,QACA,KACuB;CACvB,MAAM,EAAE,QAAQ,GAAG,UAAU;CAC7B,MAAM,WAAW,uBAAuB,KAAK;CAC7C,IAAI,SAAS,WAAW,QAAQ,MAAM,IAAI,UAAU,6CAA6C;CACjG,MAAM,SAAS,qBAAqB,KAAK,SAAS,OAAO;CACzD,MAAM,cAAc,OAAO,QAAQ,SAAS,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW;EAC7E,MAAM,SAAS,OAAO,QAAQ;EAC9B,MAAM,gBACJ,OAAO,SAAS,SAAS;GAAE,MAAM,OAAO;GAAM,OAAO,IAAI,OAAO;EAAK,IAAI,OAAO;EAClF,MAAM,OAAO,WACX,OAAO,QAAQ,OAAO,UAAU,QAAQ,cAAc,QAAS,CAAC;EAClE,MAAM,qBAAqB,IAAI,MAAM,QAAQ;EAC7C,MAAM,wBAAwB,IAAI,MAAM,OAAO;EAC/C,MAAM,uBAAO,IAAI,IAAI,CAAC,GAAG,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;EAC1D,MAAM,wBAAwB,IAC5B,OAAO,KAAK,aAAa,CAAC,CAAC,QAAQ,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAC/D;EACA,IAAI,SAA8C;EAClD,IAAI,SAA8C;EAClD,IAAI,qBAAqB,KAAK,wBAAwB,KAAK,wBAAwB,GACjF,MAAM,IAAI,UAAU,mEAAmE;EAEzF,IAAI,MAAM,aAAa,WAAW,SAAS;OACtC,IACH,sBAAsB,MAAM,kBAC5B,yBAAyB,MAAM,eAE/B,SAAS;OACJ,IAAI,sBAAsB,MAAM,gBAAgB;GACrD,SAAS;GACT,SAAS;EACX,OAAO,IAAI,yBAAyB,MAAM,eAAe;GACvD,IAAI,MAAM,aAAa,YAAY;IACjC,SAAS;IACT,SAAS;GACX,OAAO,SAAS;EAClB;EACA,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA,iBAAiB,OAAO,SAAS,SAAS,OAAO,OAAO;GACxD,OAAO,gBAAgB,KAAK;EAC9B;CACF,CAAC;CACD,OAAO;EACL,cAAc;EACd,gBAAgB,OAAO,QAAQ;EAC/B,aAAa,OAAO;EACpB;CACF;AACF;;AAGA,SAAgB,wBACd,QACA,QACA,SACkB;CAClB,IAAI,CAAC,QAAQ,UAAU,KAAK,GAAG,MAAM,IAAI,UAAU,wBAAwB;CAC3E,MAAM,SAAS,sBAAsB,QAAQ,MAAM;CACnD,OAAO,OAAO,YACX,QAAQ,SAAS,KAAK,WAAW,SAAS,CAAC,CAC3C,KAAK,SACJ,YAAY;EACV,YAAY,QAAQ;EACpB,GAAI,QAAQ,eAAe,KAAA,IAAY,CAAC,IAAI,EAAE,aAAa,QAAQ,WAAW;EAC9E,SAAS,KAAK,MAAM;EACpB,MAAM,KAAK,WAAW,eAAe,wBAAwB,KAAK,MAAM;EACxE,UAAU,KAAK,WAAW,eAAe,SAAS,KAAK,MAAM;EAC7D,OACE,KAAK,WAAW,cACZ,+BAA+B,KAAK,MAAM,UAC1C,sBAAsB,KAAK,MAAM;EACvC,eAAe,gBAAgB,KAAK,MAAM,QAAQ;EAElD,YAAY,KAAK,WAAW,cAAc,KAAK,qBAAqB;EACpE,oBAAoB;EACpB,UAAU,cAAc;GAAC,KAAK;GAAU,KAAK;GAAQ,OAAO;GAAS,KAAK,MAAM;EAAK,CAAC;EACtF,UAAU;GACR,eAAe,OAAO;GACtB,UAAU,KAAK;GACf,iBAAiB,OAAO;GACxB,cAAc,OAAO;GACrB,YAAY,KAAK;GACjB,mBAAmB,KAAK;GACxB,mBAAmB,KAAK,MAAM;GAC9B,qBAAqB,KAAK;GAC1B,wBAAwB,KAAK;GAC7B,wBAAwB,KAAK;GAC7B,kBAAkB,KAAK;GACvB,aAAa;GACb,kBACE,KAAK,WAAW,cAAc,uBAAuB;GACvD,eAAe,gBAAgB,OAAO,QAAQ,KAAK,SAAS;EAC9D;CACF,CAAC,CACH;AACJ"}
@@ -1,4 +1,4 @@
1
- import { i as AnalystFinding } from "./types-KEkKkETv.js";
1
+ import { a as AnalystFinding } from "./types-oKRhQAde.js";
2
2
  import { f as SystemOneResult, o as SystemOneQuestions, u as SystemOneRequest } from "./systemone-protocol-DKoi1NdK.js";
3
3
  import { z } from "zod";
4
4
  //#region src/systemone-review.d.ts
@@ -73,4 +73,4 @@ declare function systemOneReviewFindings<Q extends SystemOneQuestions>(review: P
73
73
  }): AnalystFinding[];
74
74
  //#endregion
75
75
  export { SystemOneReviewReport as a, systemOneReviewFindings as c, SystemOneReviewInput as i, SystemOneReviewAssessment as n, assessSystemOneReview as o, SystemOneReviewCheck as r, prepareSystemOneReview as s, PreparedSystemOneReview as t };
76
- //# sourceMappingURL=systemone-review-BReh3mvm.d.ts.map
76
+ //# sourceMappingURL=systemone-review-B_yo1xsd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"systemone-review-BReh3mvm.d.ts","names":[],"sources":["../src/systemone-review.ts"],"mappings":";;;;cAcM,aAAW,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0Bb,EAAA,KAAA;;KAGQ,uBAAuB,EAAE,aAAa;UACjC,qBAAqB,UAAU,qBAAqB;EACnE;EACA,SAAS,iBAAiB;EAC1B,WAAW,WAAW,IAAI;;UAGX,wBAAwB,UAAU,qBAAqB,4BAC9D,qBAAqB;;EAE7B;;UAGe;EACf;EACA;EACA;;EAQA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA,aAAa;;;iBAWC,6BAA6B,UAAU,oBACrD,OAAO,qBAAqB,KAC3B,wBAAwB;;iBAuCX,sBAAsB,UAAU,oBAC9C,QAAQ,wBAAwB,IAChC,eACC;;iBAyDa,wBAAwB,UAAU,oBAChD,QAAQ,wBAAwB,IAChC,QAAQ,gBAAgB,IACxB;EAAW;EAAmB;IAC7B"}
1
+ {"version":3,"file":"systemone-review-B_yo1xsd.d.ts","names":[],"sources":["../src/systemone-review.ts"],"mappings":";;;;cAcM,aAAW,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0Bb,EAAA,KAAA;;KAGQ,uBAAuB,EAAE,aAAa;UACjC,qBAAqB,UAAU,qBAAqB;EACnE;EACA,SAAS,iBAAiB;EAC1B,WAAW,WAAW,IAAI;;UAGX,wBAAwB,UAAU,qBAAqB,4BAC9D,qBAAqB;;EAE7B;;UAGe;EACf;EACA;EACA;;EAQA;EACA;EACA;EACA;EACA,OAAO;;UAGQ;EACf;EACA;EACA;EACA,aAAa;;;iBAWC,6BAA6B,UAAU,oBACrD,OAAO,qBAAqB,KAC3B,wBAAwB;;iBAuCX,sBAAsB,UAAU,oBAC9C,QAAQ,wBAAwB,IAChC,eACC;;iBAyDa,wBAAwB,UAAU,oBAChD,QAAQ,wBAAwB,IAChC,QAAQ,gBAAgB,IACxB;EAAW;EAAmB;IAC7B"}
@@ -1,135 +1,5 @@
1
- import { b as CustomTokenPricing, g as CostReceiptInput } from "./cost-ledger-DbQdN3nO.js";
2
- import { i as AnalystFinding, n as AnalystContext, t as Analyst } from "./types-KEkKkETv.js";
3
- import { R as Scenario, S as JudgeConfig, w as JudgeScore } from "./types-CMnPcbW5.js";
4
- import { EvaluationAnalystOptions, EvaluationContext, EvaluationJudgeOptions, EvaluationResult, Evaluator, EvaluatorOptions, asAnalyst, asJudge, createEvaluator } from "./evaluation.js";
1
+ import { a as Evaluator, c as asJudge, i as EvaluationResult, l as createEvaluator, n as EvaluationContext, o as EvaluatorOptions, r as EvaluationJudgeOptions, s as asAnalyst, t as EvaluationAnalystOptions } from "./evaluation-Cn2dRZIz.js";
5
2
  import { S as systemOneUsage, _ as parseSystemOneQuestions, a as SystemOneQuestion, b as parseSystemOneResult, c as SystemOneRecordedQuestions, d as SystemOneResponseError, f as SystemOneResult, g as normalizeSystemOneResult, h as SystemOneState, i as SystemOneJson, l as SystemOneRecordedRequest, m as SystemOneScoreCriteria, n as SystemOneAnswerFor, o as SystemOneQuestions, p as SystemOneResultProfile, r as SystemOneDescription, s as SystemOneRecordedQuestion, t as SystemOneAnswer, u as SystemOneRequest, v as parseSystemOneRecordedRequest, x as systemOneConfidence, y as parseSystemOneRequest } from "./systemone-protocol-DKoi1NdK.js";
6
- import { a as SystemOneReviewReport, c as systemOneReviewFindings, i as SystemOneReviewInput, n as SystemOneReviewAssessment, o as assessSystemOneReview, r as SystemOneReviewCheck, s as prepareSystemOneReview, t as PreparedSystemOneReview } from "./systemone-review-BReh3mvm.js";
7
- //#region src/systemone-domain-match.d.ts
8
- export type SystemOneDomainCoverage = 'complete' | 'partial' | 'missing';
9
- export interface SystemOneDomainEvidence {
10
- [key: string]: SystemOneJson;
11
- id: string;
12
- text: string;
13
- }
14
- export interface SystemOneDomainMatchThresholds {
15
- matchAtLeast: number;
16
- noMatchAtLeast: number;
17
- categoryAtLeast: number;
18
- sourceAtLeast: number;
19
- minimumMargin: number;
20
- }
21
- export interface SystemOneDomainMatchInput {
22
- version: string;
23
- model: string;
24
- intent: string;
25
- categories: Record<string, string>;
26
- evidence: SystemOneDomainEvidence[];
27
- coverage: SystemOneDomainCoverage;
28
- thresholds: SystemOneDomainMatchThresholds;
29
- }
30
- type DomainMatchQuestions = {
31
- match: {
32
- type: 'choice';
33
- instructions: string;
34
- criteria: {
35
- match: string;
36
- no_match: string;
37
- uncertain: string;
38
- };
39
- };
40
- category: {
41
- type: 'choice';
42
- instructions: string;
43
- criteria: Record<string, string>;
44
- };
45
- source: {
46
- type: 'choice';
47
- instructions: string;
48
- criteria: Record<string, string>;
49
- };
50
- };
51
- export interface PreparedSystemOneDomainMatch extends SystemOneDomainMatchInput {
52
- request: SystemOneRequest<DomainMatchQuestions>;
53
- /** Binds the intent, evidence, categories, thresholds, model, and authored option order. */
54
- digest: string;
55
- }
56
- export type SystemOneDomainMatchReason = 'match-threshold' | 'no-match-threshold' | 'missing-evidence' | 'partial-negative-evidence' | 'below-threshold' | 'ambiguous-thresholds' | 'category-unresolved' | 'source-unresolved';
57
- export interface SystemOneDomainMatchReport {
58
- digest: string;
59
- requestedModel: string;
60
- servedModel: string;
61
- status: 'match' | 'no_match' | 'uncertain';
62
- category: string;
63
- evidence: SystemOneDomainEvidence | null;
64
- reason: SystemOneDomainMatchReason;
65
- probabilities: {
66
- match: Record<string, number>;
67
- category: Record<string, number>;
68
- source: Record<string, number>;
69
- };
70
- nativeConfidence: {
71
- match: number;
72
- category: number;
73
- source: number;
74
- };
75
- scope: 'advisory-domain-match-not-authorization-or-truth';
76
- }
77
- /** Validate and freeze one domain classification before paid admission. */
78
- export declare function prepareSystemOneDomainMatch(input: SystemOneDomainMatchInput): PreparedSystemOneDomainMatch;
79
- /** Interpret a retained native answer without another inference or any authorization effect. */
80
- export declare function assessSystemOneDomainMatch(prepared: PreparedSystemOneDomainMatch, raw: unknown): SystemOneDomainMatchReport;
81
- //#endregion
82
- //#region src/systemone.d.ts
83
- export type SystemOneEvaluate = EvaluatorOptions<SystemOneRequest, unknown>['execute'];
84
- export interface SystemOneEvaluatorOptions {
85
- evaluate: SystemOneEvaluate;
86
- costLedger?: EvaluatorOptions<SystemOneRequest, unknown>['costLedger'];
87
- maximumCharge?: EvaluatorOptions<SystemOneRequest, unknown>['maximumCharge'];
88
- pricing?: CustomTokenPricing;
89
- receipt?: (response: unknown) => CostReceiptInput;
90
- receiptFromError?: (error: Error) => CostReceiptInput | undefined;
91
- /** Optional deployment policy; the protocol adapter does not hardcode model aliases. */
92
- acceptModel?: (requested: string, served: string) => boolean;
93
- }
94
- /** Configure transport once; supply native state, questions, and model on every invocation. */
95
- export declare function systemOneEvaluator(options: SystemOneEvaluatorOptions): <const Q extends SystemOneQuestions>(request: SystemOneRequest<Q>, context?: EvaluationContext) => Promise<EvaluationResult<SystemOneResult<Q>>>;
96
- type Input<A, S extends Scenario> = {
97
- artifact: A;
98
- scenario: S;
99
- };
100
- type QuestionSource<I, Q extends SystemOneQuestions> = Q | ((input: I) => Q | Promise<Q>);
101
- export interface SystemOneOptions extends SystemOneEvaluatorOptions {
102
- model: string;
103
- version: string;
104
- questions: SystemOneQuestions;
105
- }
106
- export interface SystemOneJudgeOptions<A, S extends Scenario = Scenario, Q extends SystemOneQuestions = SystemOneQuestions> extends SystemOneEvaluatorOptions {
107
- model: string;
108
- version: string;
109
- questions: QuestionSource<Input<A, S>, Q>;
110
- renderState: (input: Input<A, S>, context: EvaluationContext) => SystemOneState | Promise<SystemOneState>;
111
- dimensions?: JudgeConfig<A, S>['dimensions'];
112
- weights?: Record<string, number>;
113
- map?: (value: SystemOneResult<Q>, input: Input<A, S>) => JudgeScore | Promise<JudgeScore>;
114
- record?: (result: EvaluationResult<SystemOneResult<Q>>, input: Input<A, S>) => void | Promise<void>;
115
- appliesTo?: (scenario: S) => boolean;
116
- }
117
- /** Optional convention. Choice utilities and non-uniform scales belong in an explicit map. */
118
- export declare function normalizedSystemOneScore(result: SystemOneResult, weights?: Record<string, number>): JudgeScore;
119
- /** Convenience around the public evaluator. No domain questions, thresholds, or prose. */
120
- export declare function systemOneJudge<A, S extends Scenario = Scenario, Q extends SystemOneQuestions = SystemOneQuestions>(name: string, options: SystemOneJudgeOptions<A, S, Q>): JudgeConfig<A, S>;
121
- export interface SystemOneAnalystOptions<I, Q extends SystemOneQuestions = SystemOneQuestions> extends SystemOneEvaluatorOptions {
122
- id: string;
123
- description: string;
124
- inputKind: Analyst<I>['inputKind'];
125
- model: string;
126
- version: string;
127
- questions: Q | ((input: I, context: AnalystContext) => Q | Promise<Q>);
128
- renderState: (input: I, context: AnalystContext) => SystemOneState | Promise<SystemOneState>;
129
- findings: (value: SystemOneResult<Q>, input: I, context: AnalystContext) => AnalystFinding[] | Promise<AnalystFinding[]>;
130
- record?: (result: EvaluationResult<SystemOneResult<Q>>, input: I, context: AnalystContext) => void | Promise<void>;
131
- }
132
- export declare function systemOneAnalyst<I, Q extends SystemOneQuestions = SystemOneQuestions>(options: SystemOneAnalystOptions<I, Q>): Analyst<I>;
133
- //#endregion
134
- export { EvaluationAnalystOptions, EvaluationContext, EvaluationJudgeOptions, EvaluationResult, Evaluator, EvaluatorOptions, PreparedSystemOneReview, SystemOneAnswer, SystemOneAnswerFor, SystemOneDescription, SystemOneJson, SystemOneQuestion, SystemOneQuestions, SystemOneRecordedQuestion, SystemOneRecordedQuestions, SystemOneRecordedRequest, SystemOneRequest, SystemOneResponseError, SystemOneResult, SystemOneResultProfile, SystemOneReviewAssessment, SystemOneReviewCheck, SystemOneReviewInput, SystemOneReviewReport, SystemOneScoreCriteria, SystemOneState, asAnalyst, asJudge, assessSystemOneReview, createEvaluator, normalizeSystemOneResult, parseSystemOneQuestions, parseSystemOneRecordedRequest, parseSystemOneRequest, parseSystemOneResult, prepareSystemOneReview, systemOneConfidence, systemOneReviewFindings, systemOneUsage };
135
- //# sourceMappingURL=systemone.d.ts.map
3
+ import { _ as assessSystemOneDomainMatch, a as SystemOneOptions, c as systemOneEvaluator, d as SystemOneDomainCoverage, f as SystemOneDomainEvidence, g as SystemOneDomainMatchThresholds, h as SystemOneDomainMatchReport, i as SystemOneJudgeOptions, l as systemOneJudge, m as SystemOneDomainMatchReason, n as SystemOneEvaluate, o as normalizedSystemOneScore, p as SystemOneDomainMatchInput, r as SystemOneEvaluatorOptions, s as systemOneAnalyst, t as SystemOneAnalystOptions, u as PreparedSystemOneDomainMatch, v as prepareSystemOneDomainMatch } from "./systemone-CpTLAlqb.js";
4
+ import { a as SystemOneReviewReport, c as systemOneReviewFindings, i as SystemOneReviewInput, n as SystemOneReviewAssessment, o as assessSystemOneReview, r as SystemOneReviewCheck, s as prepareSystemOneReview, t as PreparedSystemOneReview } from "./systemone-review-B_yo1xsd.js";
5
+ export { EvaluationAnalystOptions, EvaluationContext, EvaluationJudgeOptions, EvaluationResult, Evaluator, EvaluatorOptions, PreparedSystemOneDomainMatch, PreparedSystemOneReview, SystemOneAnalystOptions, SystemOneAnswer, SystemOneAnswerFor, SystemOneDescription, SystemOneDomainCoverage, SystemOneDomainEvidence, SystemOneDomainMatchInput, SystemOneDomainMatchReason, SystemOneDomainMatchReport, SystemOneDomainMatchThresholds, SystemOneEvaluate, SystemOneEvaluatorOptions, SystemOneJson, SystemOneJudgeOptions, SystemOneOptions, SystemOneQuestion, SystemOneQuestions, SystemOneRecordedQuestion, SystemOneRecordedQuestions, SystemOneRecordedRequest, SystemOneRequest, SystemOneResponseError, SystemOneResult, SystemOneResultProfile, SystemOneReviewAssessment, SystemOneReviewCheck, SystemOneReviewInput, SystemOneReviewReport, SystemOneScoreCriteria, SystemOneState, asAnalyst, asJudge, assessSystemOneDomainMatch, assessSystemOneReview, createEvaluator, normalizeSystemOneResult, normalizedSystemOneScore, parseSystemOneQuestions, parseSystemOneRecordedRequest, parseSystemOneRequest, parseSystemOneResult, prepareSystemOneDomainMatch, prepareSystemOneReview, systemOneAnalyst, systemOneConfidence, systemOneEvaluator, systemOneJudge, systemOneReviewFindings, systemOneUsage };
package/dist/systemone.js CHANGED
@@ -4,7 +4,7 @@ import { n as contentHash } from "./verdict-cache-BQEsVy9n.js";
4
4
  import { t as deepFreezeCanonicalJson } from "./deep-freeze-CurcOQg3.js";
5
5
  import { asAnalyst, asJudge, createEvaluator } from "./evaluation.js";
6
6
  import { SystemOneResponseError, normalizeSystemOneResult, parseSystemOneQuestions, parseSystemOneRecordedRequest, parseSystemOneRequest, parseSystemOneResult, systemOneConfidence, systemOneUsage } from "./systemone-protocol.js";
7
- import { n as prepareSystemOneReview, r as systemOneReviewFindings, t as assessSystemOneReview } from "./systemone-review-DTClwgmE.js";
7
+ import { n as prepareSystemOneReview, r as systemOneReviewFindings, t as assessSystemOneReview } from "./systemone-review-BZWfrtq1.js";
8
8
  //#region src/systemone-domain-match.ts
9
9
  const IDENTIFIER = /^[A-Za-z0-9_.:-]{1,100}$/;
10
10
  const RESERVED = /* @__PURE__ */ new Set([