openpond-sdk 0.12.25 → 0.12.26

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 (210) hide show
  1. package/LEARNING.md +5 -7
  2. package/OPENTELEMETRY.md +1 -1
  3. package/PRODUCT_INTEGRATION.md +5 -10
  4. package/README.md +3 -4
  5. package/SERVERLESS_SERVING.md +37 -0
  6. package/TASKSETS.md +1 -2
  7. package/TASK_INGESTION.md +3 -4
  8. package/TRAINING_PROTOCOL.md +1 -1
  9. package/TRAINING_WORKFLOWS.md +11 -6
  10. package/dist/advanced-refiner-evaluations.js +9 -8
  11. package/dist/ai-sdk.js +2 -1
  12. package/dist/ai-sdk.js.map +1 -1
  13. package/dist/candidate-evaluations.js +7 -6
  14. package/dist/{chunk-ZQFROKKS.js → chunk-2U6BQ5C4.js} +3 -3
  15. package/dist/{chunk-DDCR4KB5.js → chunk-3BILL33A.js} +4 -4
  16. package/dist/{chunk-3B5KSH3V.js → chunk-456F3BXD.js} +5 -2
  17. package/dist/chunk-456F3BXD.js.map +1 -0
  18. package/dist/{chunk-RTLJV4OS.js → chunk-4A4FNG4R.js} +2 -2
  19. package/dist/{chunk-EZME7DV4.js → chunk-4CDLPMJK.js} +2 -2
  20. package/dist/{chunk-XBFOFTK3.js → chunk-4CRLQMJ2.js} +5 -5
  21. package/dist/{chunk-QOX57Y27.js → chunk-4PEK3YOW.js} +6 -3
  22. package/dist/chunk-4PEK3YOW.js.map +1 -0
  23. package/dist/{chunk-GS5HEE4M.js → chunk-4REK5TTE.js} +2 -2
  24. package/dist/{chunk-YS7DF76T.js → chunk-57ROW3XF.js} +3 -3
  25. package/dist/{chunk-47THZRUM.js → chunk-6LVLWRBJ.js} +8 -5
  26. package/dist/chunk-6LVLWRBJ.js.map +1 -0
  27. package/dist/{chunk-3VUF5H3B.js → chunk-AMZ2SWHR.js} +2 -2
  28. package/dist/{chunk-GV6DEDBU.js → chunk-AQV7RQZH.js} +2 -2
  29. package/dist/{chunk-BJMENXR4.js → chunk-C7I4ZG6Q.js} +3 -3
  30. package/dist/{chunk-JMFYNIYZ.js → chunk-CAOMKM55.js} +6 -3
  31. package/dist/chunk-CAOMKM55.js.map +1 -0
  32. package/dist/{chunk-QNOCM5JX.js → chunk-D26RJQU7.js} +2 -2
  33. package/dist/{chunk-T67LNKAK.js → chunk-EL6KZO43.js} +3 -3
  34. package/dist/{chunk-MVAEE5EI.js → chunk-H5KHLBC5.js} +5 -2
  35. package/dist/chunk-H5KHLBC5.js.map +1 -0
  36. package/dist/{chunk-3MWFN7BA.js → chunk-HCUZYGUK.js} +8 -5
  37. package/dist/chunk-HCUZYGUK.js.map +1 -0
  38. package/dist/{chunk-JOMZJXGC.js → chunk-JINWKUKR.js} +3 -3
  39. package/dist/{chunk-626JLH4D.js → chunk-JWEIAEQ6.js} +2 -2
  40. package/dist/{chunk-DH6O4JFB.js → chunk-KJTX4A27.js} +5 -2
  41. package/dist/chunk-KJTX4A27.js.map +1 -0
  42. package/dist/{chunk-QRYEXPG7.js → chunk-MN4FE52A.js} +13 -10
  43. package/dist/chunk-MN4FE52A.js.map +1 -0
  44. package/dist/{chunk-2OVNKPBZ.js → chunk-MUG4OQKL.js} +5 -2
  45. package/dist/chunk-MUG4OQKL.js.map +1 -0
  46. package/dist/{chunk-C3TS766N.js → chunk-N6LGT7NT.js} +5 -2
  47. package/dist/chunk-N6LGT7NT.js.map +1 -0
  48. package/dist/{chunk-3G3HUA32.js → chunk-P56JWQYV.js} +3 -3
  49. package/dist/{chunk-GX6KMHW2.js → chunk-QKLZZOZD.js} +5 -2
  50. package/dist/chunk-QKLZZOZD.js.map +1 -0
  51. package/dist/chunk-QYWPNNP3.js +9 -0
  52. package/dist/chunk-QYWPNNP3.js.map +1 -0
  53. package/dist/{chunk-IXFUYPGV.js → chunk-UZAVG2WK.js} +5 -5
  54. package/dist/chunk-UZAVG2WK.js.map +1 -0
  55. package/dist/{chunk-Z252BNAZ.js → chunk-VE5JD5FN.js} +6 -2
  56. package/dist/chunk-VE5JD5FN.js.map +1 -0
  57. package/dist/{chunk-7F43U2NC.js → chunk-WZKKQNYY.js} +3 -3
  58. package/dist/{chunk-RN5MK7NH.js → chunk-X5AT253K.js} +3 -3
  59. package/dist/{chunk-ZRTNR4U7.js → chunk-XWUTYFOU.js} +3 -3
  60. package/dist/{chunk-Z5APNTZE.js → chunk-XYK3MAIC.js} +2 -2
  61. package/dist/{chunk-BRP3EBCR.js → chunk-ZG4HVCJB.js} +7 -4
  62. package/dist/chunk-ZG4HVCJB.js.map +1 -0
  63. package/dist/connected-evidence.js +9 -8
  64. package/dist/dataset-commerce.js +4 -1
  65. package/dist/dataset-commerce.js.map +1 -1
  66. package/dist/dataset-marketplace.js +4 -1
  67. package/dist/dataset-marketplace.js.map +1 -1
  68. package/dist/dataset-workspaces.js +18 -15
  69. package/dist/dataset-workspaces.js.map +1 -1
  70. package/dist/errors.js +2 -1
  71. package/dist/experiment-evaluation-schedules.js +18 -17
  72. package/dist/experiment-improvements.js +8 -7
  73. package/dist/experiments.js +16 -15
  74. package/dist/human-review.js +2 -1
  75. package/dist/index.js +32 -28
  76. package/dist/index.js.map +1 -1
  77. package/dist/learning.js +6 -3
  78. package/dist/learning.js.map +1 -1
  79. package/dist/model-projects.js +2 -1
  80. package/dist/model-starter-attempts.js +3 -2
  81. package/dist/model-starter-catalog.js +7 -4
  82. package/dist/model-starter-catalog.js.map +1 -1
  83. package/dist/model-starters.js +4 -3
  84. package/dist/model-taskset-runs.js +7 -4
  85. package/dist/model-taskset-runs.js.map +1 -1
  86. package/dist/post-training.js +7 -6
  87. package/dist/taskset-catalog.js +2 -1
  88. package/dist/taskset-drafts.js +11 -8
  89. package/dist/taskset-drafts.js.map +1 -1
  90. package/dist/taskset-packages.js +10 -9
  91. package/dist/tool-learning.js +4 -1
  92. package/dist/tool-learning.js.map +1 -1
  93. package/dist/training-bundle.js +11 -10
  94. package/dist/training-bundle.js.map +1 -1
  95. package/dist/training-hardware.js +3 -2
  96. package/dist/training-projects.js +4 -1
  97. package/dist/training-projects.js.map +1 -1
  98. package/dist/training.js +2677 -2574
  99. package/dist/training.js.map +1 -1
  100. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +1 -1
  101. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
  102. package/dist/types/packages/sdk/src/connected-sync.d.ts +1 -1
  103. package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
  104. package/dist/types/packages/sdk/src/dataset-commerce.d.ts +1 -1
  105. package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
  106. package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +1 -1
  107. package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
  108. package/dist/types/packages/sdk/src/dataset-population.d.ts +1 -1
  109. package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
  110. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +1 -1
  111. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
  112. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +1 -1
  113. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
  114. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +1 -1
  115. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  116. package/dist/types/packages/sdk/src/endpoints.d.ts +4 -0
  117. package/dist/types/packages/sdk/src/endpoints.d.ts.map +1 -0
  118. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +1 -1
  119. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
  120. package/dist/types/packages/sdk/src/experiment-client.d.ts +1 -1
  121. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  122. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1 -1
  123. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
  124. package/dist/types/packages/sdk/src/experiment-inspection.d.ts +1 -1
  125. package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
  126. package/dist/types/packages/sdk/src/grader-inspection.d.ts +1 -1
  127. package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
  128. package/dist/types/packages/sdk/src/human-review-client.d.ts +1 -1
  129. package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -1
  130. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  131. package/dist/types/packages/sdk/src/learning-client.d.ts +1 -1
  132. package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
  133. package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +1 -1
  134. package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -1
  135. package/dist/types/packages/sdk/src/model-projects.d.ts +1 -1
  136. package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
  137. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +1 -1
  138. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  139. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +1 -1
  140. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  141. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +1 -1
  142. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  143. package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -1
  144. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1 -1
  145. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
  146. package/dist/types/packages/sdk/src/serverless-serving.d.ts +157 -0
  147. package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -0
  148. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +276 -0
  149. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
  150. package/dist/types/packages/sdk/src/taskset-catalog.d.ts +1 -1
  151. package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
  152. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +121 -121
  153. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  154. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1 -1
  155. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  156. package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1 -1
  157. package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -1
  158. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  159. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +232 -0
  160. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -1
  161. package/dist/types/packages/sdk/src/training-model-serving.d.ts +552 -0
  162. package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
  163. package/dist/types/packages/sdk/src/training-project-client.d.ts +1 -1
  164. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
  165. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
  166. package/dist/types/packages/sdk/src/training-transport.d.ts +1 -1
  167. package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
  168. package/dist/types/packages/sdk/src/training.d.ts +1336 -1021
  169. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  170. package/dist/types/packages/sdk/src/types.d.ts +2 -2
  171. package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
  172. package/examples/learning/submit.py +1 -1
  173. package/examples/learning/submit.ts +2 -2
  174. package/examples/training/continual.ts +4 -4
  175. package/examples/training/manual.ts +1 -3
  176. package/fixtures/python-foundation/schemas.json +4830 -4483
  177. package/package.json +2 -1
  178. package/dist/chunk-2OVNKPBZ.js.map +0 -1
  179. package/dist/chunk-3B5KSH3V.js.map +0 -1
  180. package/dist/chunk-3MWFN7BA.js.map +0 -1
  181. package/dist/chunk-47THZRUM.js.map +0 -1
  182. package/dist/chunk-BRP3EBCR.js.map +0 -1
  183. package/dist/chunk-C3TS766N.js.map +0 -1
  184. package/dist/chunk-DH6O4JFB.js.map +0 -1
  185. package/dist/chunk-GX6KMHW2.js.map +0 -1
  186. package/dist/chunk-IXFUYPGV.js.map +0 -1
  187. package/dist/chunk-JMFYNIYZ.js.map +0 -1
  188. package/dist/chunk-MVAEE5EI.js.map +0 -1
  189. package/dist/chunk-QOX57Y27.js.map +0 -1
  190. package/dist/chunk-QRYEXPG7.js.map +0 -1
  191. package/dist/chunk-Z252BNAZ.js.map +0 -1
  192. /package/dist/{chunk-ZQFROKKS.js.map → chunk-2U6BQ5C4.js.map} +0 -0
  193. /package/dist/{chunk-DDCR4KB5.js.map → chunk-3BILL33A.js.map} +0 -0
  194. /package/dist/{chunk-RTLJV4OS.js.map → chunk-4A4FNG4R.js.map} +0 -0
  195. /package/dist/{chunk-EZME7DV4.js.map → chunk-4CDLPMJK.js.map} +0 -0
  196. /package/dist/{chunk-XBFOFTK3.js.map → chunk-4CRLQMJ2.js.map} +0 -0
  197. /package/dist/{chunk-GS5HEE4M.js.map → chunk-4REK5TTE.js.map} +0 -0
  198. /package/dist/{chunk-YS7DF76T.js.map → chunk-57ROW3XF.js.map} +0 -0
  199. /package/dist/{chunk-3VUF5H3B.js.map → chunk-AMZ2SWHR.js.map} +0 -0
  200. /package/dist/{chunk-GV6DEDBU.js.map → chunk-AQV7RQZH.js.map} +0 -0
  201. /package/dist/{chunk-BJMENXR4.js.map → chunk-C7I4ZG6Q.js.map} +0 -0
  202. /package/dist/{chunk-QNOCM5JX.js.map → chunk-D26RJQU7.js.map} +0 -0
  203. /package/dist/{chunk-T67LNKAK.js.map → chunk-EL6KZO43.js.map} +0 -0
  204. /package/dist/{chunk-JOMZJXGC.js.map → chunk-JINWKUKR.js.map} +0 -0
  205. /package/dist/{chunk-626JLH4D.js.map → chunk-JWEIAEQ6.js.map} +0 -0
  206. /package/dist/{chunk-3G3HUA32.js.map → chunk-P56JWQYV.js.map} +0 -0
  207. /package/dist/{chunk-7F43U2NC.js.map → chunk-WZKKQNYY.js.map} +0 -0
  208. /package/dist/{chunk-RN5MK7NH.js.map → chunk-X5AT253K.js.map} +0 -0
  209. /package/dist/{chunk-ZRTNR4U7.js.map → chunk-XWUTYFOU.js.map} +0 -0
  210. /package/dist/{chunk-Z5APNTZE.js.map → chunk-XYK3MAIC.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/taskset-drafts.ts","../src/dataset-preparation-authoring-contracts.ts","../src/taskset-draft-api-contracts.ts","../src/taskset-draft-client.ts","../src/task-inventory.ts","../src/taskset-intake.ts"],"sourcesContent":["export * from \"./taskset-draft-dataset-artifacts.js\";\nexport * from \"./taskset-draft-dataset-sources.js\";\nexport * from \"./connected-dataset-source.js\";\nexport * from \"./taskset-draft-harness-actions.js\";\nexport * from \"./taskset-draft-core.js\";\nexport * from \"./taskset-draft-document.js\";\nexport { TasksetMetricPolicySchema, type TasksetMetricPolicy } from \"@openpond/evals/metrics\";\nexport * from \"./taskset-draft-authoring.js\";\nexport * from \"./taskset-draft-files.js\";\nexport * from \"./taskset-draft-workspace.js\";\nexport * from \"./taskset-authored-contracts.js\";\nexport * from \"./task-design-contracts.js\";\nexport * from \"./dataset-preparation-authoring-contracts.js\";\nexport * from \"./taskset-authored-validation.js\";\nexport * from \"./taskset-draft-publication.js\";\nexport * from \"./taskset-draft-manifests.js\";\nexport * from \"./taskset-draft-api-contracts.js\";\nexport { OpenPondTasksetDraftClient, OpenPondTasksetDraftError } from \"./taskset-draft-client.js\";\nexport * from \"./task-inventory.js\";\nexport * from \"./taskset-intake.js\";\nexport * from \"./taskset-calibration-fixtures.js\";\n","import { z } from \"zod\";\nimport { DatasetBuildSpecificationSchema } from \"./taskset-authored-contracts.js\";\nimport { TasksetSourceRefSchema } from \"./taskset-draft-core.js\";\nimport { TaskDesignProposalSchema } from \"./task-design-contracts.js\";\n\nconst Id = z.string().min(1).max(240);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DatasetPreparationAuthoringEvidenceSchema = z.array(z.object({\n source: TasksetSourceRefSchema,\n excerpts: z.array(z.object({ role: z.enum([\"user\", \"assistant\"]), text: z.string().max(200_000), turnId: Id }).strict()).max(200),\n}).strict()).min(1).max(20);\nexport const DatasetPreparationAuthoringRequestSchema = z.discriminatedUnion(\"action\", [\n z.object({ action: z.literal(\"messages\"), id: Id, evidence: DatasetPreparationAuthoringEvidenceSchema,\n instruction: z.string().max(2 * 1024 * 1024), buildSpecification: DatasetBuildSpecificationSchema,\n currentProposal: TaskDesignProposalSchema.nullable().default(null) }).strict(),\n z.object({ action: z.literal(\"validate\"), evidence: DatasetPreparationAuthoringEvidenceSchema,\n content: z.string().max(2 * 1024 * 1024) }).strict(),\n]);\nexport const DatasetPreparationAuthoringMessagesSchema = z.object({\n messages: z.array(z.object({ role: z.enum([\"system\", \"user\"]), content: z.string() }).strict()).min(1).max(20),\n skillHash: Hash,\n}).strict();\nexport const DatasetPreparationAuthoringProposalSchema = z.object({ proposal: TaskDesignProposalSchema, skillHash: Hash }).strict();\nexport type DatasetPreparationAuthoringRequest = z.input<typeof DatasetPreparationAuthoringRequestSchema>;\n","import { z } from \"zod\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport { TasksetDraftSchema, TasksetDraftStatusSchema } from \"./taskset-draft-document.js\";\nimport { TasksetDraftFileSchema, TasksetDraftFileInfoSchema } from \"./model-taskset-authoring-contracts.js\";\n\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst scope = { teamId: IdSchema, modelId: IdSchema };\n\nexport const TasksetDraftCreateRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftCreate.v1\"),\n operationId: IdSchema, modelId: IdSchema, expectedModelRevision: RevisionSchema,\n name: TasksetDraftSchema.shape.name,\n}).strict();\nexport type TasksetDraftCreateRequest = z.infer<typeof TasksetDraftCreateRequestSchema>;\n\nexport const TasksetDraftSourceDescriptorSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftSourceDescriptor.v1\"), ...scope,\n expectedModelRevision: RevisionSchema, sourcePackageHash: HashSchema,\n}).strict();\nexport const TasksetDraftReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftReadback.v1\"), ...scope,\n draft: TasksetDraftSchema, workspaceHash: HashSchema, projectEtag: HashSchema,\n}).strict().refine(value => value.draft.profileId === value.teamId && value.draft.modelScope?.modelId === value.modelId,\n \"The hosted draft must belong to its declared workspace and Model.\");\nexport const TasksetDraftSummarySchema = z.object({\n id: IdSchema, revision: RevisionSchema, name: TasksetDraftSchema.shape.name,\n status: TasksetDraftStatusSchema, updatedAt: TasksetDraftSchema.shape.updatedAt,\n sourceTasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict();\nexport const TasksetDraftListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftList.v1\"), ...scope,\n drafts: z.array(TasksetDraftSummarySchema).max(100), nextCursor: z.string().min(1).max(2_000).nullable(),\n}).strict();\nexport const TasksetDraftSaveRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, draft: TasksetDraftSchema }).strict();\nexport const TasksetDraftRefreshRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedModelRevision: RevisionSchema }).strict();\nexport const TasksetDraftValidationRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedWorkspaceHash: HashSchema }).strict();\nexport const TasksetDraftValidationSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftValidation.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, workspaceHash: HashSchema,\n valid: z.boolean(), issues: z.array(z.object({ code: z.string().min(1), severity: z.enum([\"warning\", \"error\"]), message: z.string(), path: z.string().nullable() }).strict()),\n packageHash: HashSchema.nullable(), tasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict().refine(value => value.valid\n ? value.packageHash !== null && value.tasksetRef !== null && value.issues.every(issue => issue.severity !== \"error\")\n : value.packageHash === null && value.tasksetRef === null && value.issues.some(issue => issue.severity === \"error\"), \"Validation must retain either a compiled package or publication errors.\");\nexport const TasksetDraftPublicationRequestSchema = TasksetDraftValidationRequestSchema.extend({\n operationId: IdSchema, expectedPackageHash: HashSchema, expectedTasksetRef: LearningRevisionRefSchema,\n}).strict();\nexport const TasksetDraftFileListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileList.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, files: z.array(TasksetDraftFileInfoSchema).max(10_020),\n}).strict();\nexport const TasksetDraftFileReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileReadback.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, file: TasksetDraftFileSchema,\n}).strict();\nexport const TasksetDraftDeletionSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftDeletion.v1\"), ...scope,\n draftId: IdSchema, revision: RevisionSchema, deleted: z.literal(true),\n}).strict();\n\nexport type TasksetDraftSourceDescriptor = z.infer<typeof TasksetDraftSourceDescriptorSchema>;\nexport type TasksetDraftReadback = z.infer<typeof TasksetDraftReadbackSchema>;\nexport type TasksetDraftList = z.infer<typeof TasksetDraftListSchema>;\nexport type TasksetDraftSaveRequest = z.infer<typeof TasksetDraftSaveRequestSchema>;\nexport type TasksetDraftRefreshRequest = z.infer<typeof TasksetDraftRefreshRequestSchema>;\nexport type TasksetDraftValidationRequest = z.infer<typeof TasksetDraftValidationRequestSchema>;\nexport type TasksetDraftValidation = z.infer<typeof TasksetDraftValidationSchema>;\nexport type TasksetDraftPublicationRequest = z.infer<typeof TasksetDraftPublicationRequestSchema>;\nexport type TasksetDraftFileList = z.infer<typeof TasksetDraftFileListSchema>;\nexport type TasksetDraftFileReadback = z.infer<typeof TasksetDraftFileReadbackSchema>;\nexport type TasksetDraftDeletion = z.infer<typeof TasksetDraftDeletionSchema>;\n","import { z } from \"zod\";\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { sameLearningRef } from \"@openpond/evals/learning\";\nimport { ModelTasksetDraftRequestSchema, TasksetDraftFileMutationSchema, TasksetDraftFilePathSchema, type ModelTasksetDraftRequest, type TasksetDraftFileMutation } from \"./model-taskset-authoring-contracts.js\";\nimport { TasksetDraftSchema } from \"./taskset-draft-document.js\";\nimport { decodeTasksetDraftFileContent } from \"./taskset-draft-files.js\";\nimport { MAX_TASKSET_DRAFT_WORKSPACE_BYTES } from \"./taskset-draft-workspace.js\";\nimport { TasksetPackageReceiptSchema } from \"./taskset-package-client.js\";\nimport { TasksetDraftCreateRequestSchema, type TasksetDraftCreateRequest, TasksetDraftSourceDescriptorSchema, TasksetDraftReadbackSchema, TasksetDraftListSchema, TasksetDraftSaveRequestSchema, TasksetDraftRefreshRequestSchema,\n TasksetDraftValidationRequestSchema, TasksetDraftValidationSchema, TasksetDraftPublicationRequestSchema, TasksetDraftFileListSchema, TasksetDraftFileReadbackSchema, TasksetDraftDeletionSchema,\n type TasksetDraftSaveRequest, type TasksetDraftRefreshRequest, type TasksetDraftValidationRequest, type TasksetDraftPublicationRequest } from \"./taskset-draft-api-contracts.js\";\n\ntype Options = { signal?: AbortSignal };\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\n\nexport class OpenPondTasksetDraftError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondTasksetDraftError\"; }\n}\n\n/** Scoped mutable drafts use explicit CAS and never retry writes automatically. */\nexport class OpenPondTasksetDraftClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Taskset draft client requires a clean HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async inspectSource(modelId: string, expectedModelRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const revision = RevisionSchema.parse(expectedModelRevision);\n const response = this.#scope(TasksetDraftSourceDescriptorSchema.parse(await this.#request(model, `/source?expectedModelRevision=${revision}`, \"GET\", undefined, options.signal)), model);\n if (response.expectedModelRevision !== revision) this.#mismatch();\n return response;\n }\n\n async initialize(input: ModelTasksetDraftRequest, options: Options = {}) {\n const request = ModelTasksetDraftRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const source = response.draft.modelScope?.source;\n if (!source || source.requestHash !== contentHash(request) || source.sourcePackageHash !== request.sourcePackageHash || source.draftId !== response.draft.id\n || source.lineage.owner.scopeId !== this.#options.teamId || source.lineage.owner.modelId !== request.modelId) this.#mismatch();\n return response;\n }\n\n async create(input: TasksetDraftCreateRequest, options: Options = {}) {\n const request = TasksetDraftCreateRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const expectedId = `model-taskset-draft-${contentHash({ owner: { scopeId: this.#options.teamId, modelId: request.modelId }, operationId: request.operationId })}`;\n if (response.draft.id !== expectedId || response.draft.modelScope?.source !== undefined) this.#mismatch();\n return response;\n }\n\n async list(modelId: string, options: Options & { limit?: number; cursor?: string } = {}) {\n const model = IdSchema.parse(modelId);\n const query = new URLSearchParams();\n if (options.limit !== undefined) query.set(\"limit\", String(z.number().int().min(1).max(100).parse(options.limit)));\n if (options.cursor !== undefined) query.set(\"cursor\", z.string().min(1).max(2_000).parse(options.cursor));\n return this.#scope(TasksetDraftListSchema.parse(await this.#request(model, query.size ? `?${query}` : \"\", \"GET\", undefined, options.signal)), model);\n }\n\n async get(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(id)}`, \"GET\", undefined, options.signal), model, id);\n }\n\n async save(modelId: string, input: TasksetDraftSaveRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftSaveRequestSchema.parse(input);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draft.id)}`, \"PUT\", request, options.signal), model, request.draft.id, request.expectedDraftRevision + 1);\n }\n\n async refreshModel(modelId: string, draftId: string, input: TasksetDraftRefreshRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftRefreshRequestSchema.parse(input);\n const response = this.#draft(await this.#request(model, `/${encodeURIComponent(id)}/refresh-model`, \"POST\", request, options.signal), model, id, request.expectedDraftRevision + 1);\n if (response.draft.modelScope?.expectedModelRevision !== request.expectedModelRevision) this.#mismatch();\n return response;\n }\n\n async files(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const response = this.#scope(TasksetDraftFileListSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/files`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id) this.#mismatch();\n return response;\n }\n\n async readFile(modelId: string, draftId: string, path: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const relative = TasksetDraftFilePathSchema.parse(path);\n const response = this.#scope(TasksetDraftFileReadbackSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/file?path=${encodeURIComponent(relative)}`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id || response.file.path !== relative) this.#mismatch();\n const bytes = decodeTasksetDraftFileContent(response.file.content);\n if (bytes.byteLength !== response.file.sizeBytes || sha256(bytes) !== response.file.contentHash) this.#mismatch();\n return response;\n }\n\n async saveFile(modelId: string, input: TasksetDraftFileMutation, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftFileMutationSchema.parse(input);\n if (request.content) decodeTasksetDraftFileContent(request.content);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draftId)}/file`, \"PUT\", request, options.signal), model, request.draftId, request.expectedDraftRevision + 1);\n }\n\n async validate(modelId: string, draftId: string, input: TasksetDraftValidationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftValidationRequestSchema.parse(input);\n const response = this.#scope(TasksetDraftValidationSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/validate`, \"POST\", request, options.signal)), model);\n if (response.draftId !== id || response.draftRevision !== request.expectedDraftRevision || response.workspaceHash !== request.expectedWorkspaceHash) this.#mismatch();\n return response;\n }\n\n async publish(modelId: string, draftId: string, input: TasksetDraftPublicationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftPublicationRequestSchema.parse(input);\n const response = TasksetPackageReceiptSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/publish`, \"POST\", request, options.signal));\n if (response.teamId !== this.#options.teamId || response.modelProjectId !== model || response.operationId !== request.operationId\n || response.packageHash !== request.expectedPackageHash || !sameLearningRef(response.taskset, request.expectedTasksetRef) || response.selection !== \"select\") this.#mismatch();\n return response;\n }\n\n async delete(modelId: string, draftId: string, expectedDraftRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const revision = RevisionSchema.parse(expectedDraftRevision);\n const response = this.#scope(TasksetDraftDeletionSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}?expectedDraftRevision=${revision}`, \"DELETE\", undefined, options.signal)), model);\n if (response.draftId !== id || response.revision !== revision + 1) this.#mismatch();\n return response;\n }\n\n #scope<T extends { teamId: string; modelId: string }>(value: T, modelId: string): T {\n if (value.teamId !== this.#options.teamId || value.modelId !== modelId) this.#mismatch();\n return value;\n }\n #draft(input: unknown, modelId: string, draftId?: string, revision?: number) {\n const value = this.#scope(TasksetDraftReadbackSchema.parse(input), modelId);\n if ((draftId !== undefined && value.draft.id !== draftId) || (revision !== undefined && value.draft.revision !== revision)) this.#mismatch();\n return value;\n }\n #mismatch(): never { throw new OpenPondTasksetDraftError(502, \"draft_response_mismatch\", \"Taskset draft response differs from the requested owner, revision or content.\"); }\n\n async #request(model: string, path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const serialized = body === undefined ? undefined : JSON.stringify(body);\n if (serialized && new TextEncoder().encode(serialized).byteLength > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft exceeds the 64 MiB envelope.\");\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/models/${encodeURIComponent(model)}/taskset-drafts${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\", ...(serialized ? { \"Content-Type\": \"application/json\" } : {}) },\n body: serialized, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetDraftError(response.status, \"empty_response\", \"Taskset draft response was empty.\");\n let bytes = 0;\n let text = \"\";\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft response exceeds the 64 MiB envelope.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const value: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondTasksetDraftError(response.status, error.success ? error.data.code : \"draft_request_failed\", error.success ? error.data.message : `Taskset draft request failed (${response.status}).`);\n }\n return value;\n }\n}\n","import { z } from \"zod\";\nimport type { GraderSpec } from \"./taskset-draft-core.js\";\n\nconst Id = z.string().trim().min(1).max(500);\nexport const TaskInventoryQuerySchema = z.object({\n projectId: Id.optional(), tasksetId: Id.optional(), draftId: Id.optional(), taskId: Id.optional(),\n query: z.string().trim().max(1_000).default(\"\"),\n split: z.enum([\"train\", \"validation\", \"test\", \"frozen_eval\"]).optional(),\n after: z.string().min(1).max(2_000).optional(), limit: z.number().int().min(1).max(100).default(30),\n}).strict();\nexport const TaskScoringSummarySchema = z.object({ id: Id, method: z.enum([\"code\", \"judge\", \"human\"]), required: z.boolean() });\nexport const TaskInventoryItemSchema = z.object({\n tasksetId: Id, tasksetName: z.string(), tasksetRevision: z.number().int().positive(), tasksetHash: z.string(),\n taskId: Id, ordinal: z.number().int().nonnegative(), title: z.string(), description: z.string(), split: z.string(),\n scoring: z.array(TaskScoringSummarySchema), configuration: z.enum([\"configured\", \"needs_reward\", \"needs_checks\"]),\n draftId: Id.nullable().default(null), modelId: Id.nullable().default(null),\n});\nexport const TaskInventoryPageSchema = z.object({ items: z.array(TaskInventoryItemSchema).max(100), nextCursor: z.string().nullable() });\nexport type TaskInventoryQuery = z.infer<typeof TaskInventoryQuerySchema>;\nexport type TaskScoringSummary = z.infer<typeof TaskScoringSummarySchema>;\nexport type TaskInventoryItem = z.infer<typeof TaskInventoryItemSchema>;\nexport type TaskInventoryPage = z.infer<typeof TaskInventoryPageSchema>;\n\n/** Discovery derives only from public task input, never private references. */\nexport function describeTaskInput(input: Record<string, unknown>, id: string) {\n const text = [input.instruction, input.prompt, input.request, input.question, input.message]\n .find((value): value is string => typeof value === \"string\" && value.trim().length > 0);\n const explicitTitle = typeof input.title === \"string\" ? input.title.trim() : \"\";\n const description = text?.trim() ?? \"\";\n return { title: (explicitTitle || description || id).slice(0, 180), description: description.slice(0, 2_000) };\n}\nexport function summarizeTaskScoring(graders: GraderSpec[]): TaskScoringSummary[] {\n return graders.map(grader => ({ id: grader.id, method: grader.kind === \"model_judge\" ? \"judge\" : grader.kind === \"human\" ? \"human\" : \"code\", required: grader.hardGate }));\n}\nexport function taskConfiguration(graders: GraderSpec[]): TaskInventoryItem[\"configuration\"] {\n if (!graders.some(grader => grader.kind !== \"human\")) return \"needs_reward\";\n if (graders.some(grader => grader.kind === \"model_judge\" && grader.calibrationStatus !== \"passed\")) return \"needs_checks\";\n return \"configured\";\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { previewTaskIntake, TaskIntakePreviewSchema, type TaskIntakePreview, type TaskIntakeFile } from \"@openpond/evals/learning\";\nimport { TaskDataDraftSchema, TasksetDraftSchema, type TasksetDraft } from \"./taskset-draft-document.js\";\nimport { createTasksetDraftFile } from \"./taskset-draft-files.js\";\n\n/** Retained source files are unreferenced private assets during publication.\n * A manifest preserves upload filenames without granting them filesystem paths. */\nexport function taskIntakeSourceFiles(preview: TaskIntakePreview, files: TaskIntakeFile[]) {\n if (previewTaskIntake({ format: preview.format, files }).contentHash !== preview.contentHash) throw new Error(\"The source files differ from the import preview.\");\n const directory = `private/intake/${preview.contentHash}`;\n const sources = files.map((file, index) => ({ file, path: `${directory}/${String(index).padStart(4, \"0\")}.txt` }));\n const manifest = { schemaVersion: \"openpond.taskIntakeSources.v1\", format: preview.format, previewHash: preview.contentHash,\n files: sources.map(({ file, path }) => ({ originalPath: file.path, retainedPath: path })) };\n return [...sources.map(({ file, path }) => createTasksetDraftFile(path, new TextEncoder().encode(file.text))),\n createTasksetDraftFile(`${directory}/manifest.json`, new TextEncoder().encode(JSON.stringify(manifest)))];\n}\n\n/** Raw history stays in Labeling until its task and runtime are reviewed. */\nexport function appendTaskIntake(draft: TasksetDraft, raw: TaskIntakePreview, recordIds: string[]): TasksetDraft {\n const preview = TaskIntakePreviewSchema.parse(raw);\n if (!recordIds.length || new Set(recordIds).size !== recordIds.length) throw new Error(\"Select unique task records to import.\");\n const tasks = [...draft.tasks];\n for (const id of recordIds) {\n const record = preview.records.find(record => record.id === id);\n if (!record || record.kind !== \"task\" || record.needsContext) throw new Error(\"Recorded attempts and incomplete histories must be imported into Labeling for review.\");\n const task = TaskDataDraftSchema.parse({ schemaVersion: \"openpond.taskData.v1\", id: record.id, clusterKey: record.familyKey,\n split: record.split, input: record.input, expectedOutput: record.expected, privilegedContextRef: null,\n metadata: { intake: { format: preview.format, uploadHash: preview.contentHash, sourceId: record.sourceId, sourceHash: record.sourceHash, metadata: record.metadata } },\n });\n const existing = tasks.find(existing => existing.id === task.id);\n if (existing && contentHash(existing) !== contentHash(task)) throw new Error(`Task ${task.id} already exists with different content. Import will not replace saved edits.`);\n if (!existing) tasks.push(task);\n }\n const families = new Map<string, string>();\n for (const task of tasks) for (const key of [`family:${task.clusterKey}`, `input:${contentHash(task.input)}`]) {\n if (families.has(key) && families.get(key) !== task.split) throw new Error(\"The imported task family or request already occurs in another split.\");\n families.set(key, task.split);\n }\n return TasksetDraftSchema.parse({ ...draft, tasks });\n}\n"],"mappings":"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","names":["z","z","z","IdSchema","RevisionSchema","z","z","Id","record","existing"]}
1
+ {"version":3,"sources":["../src/taskset-drafts.ts","../src/dataset-preparation-authoring-contracts.ts","../src/taskset-draft-api-contracts.ts","../src/taskset-draft-client.ts","../src/task-inventory.ts","../src/taskset-intake.ts"],"sourcesContent":["export * from \"./taskset-draft-dataset-artifacts.js\";\nexport * from \"./taskset-draft-dataset-sources.js\";\nexport * from \"./connected-dataset-source.js\";\nexport * from \"./taskset-draft-harness-actions.js\";\nexport * from \"./taskset-draft-core.js\";\nexport * from \"./taskset-draft-document.js\";\nexport { TasksetMetricPolicySchema, type TasksetMetricPolicy } from \"@openpond/evals/metrics\";\nexport * from \"./taskset-draft-authoring.js\";\nexport * from \"./taskset-draft-files.js\";\nexport * from \"./taskset-draft-workspace.js\";\nexport * from \"./taskset-authored-contracts.js\";\nexport * from \"./task-design-contracts.js\";\nexport * from \"./dataset-preparation-authoring-contracts.js\";\nexport * from \"./taskset-authored-validation.js\";\nexport * from \"./taskset-draft-publication.js\";\nexport * from \"./taskset-draft-manifests.js\";\nexport * from \"./taskset-draft-api-contracts.js\";\nexport { OpenPondTasksetDraftClient, OpenPondTasksetDraftError } from \"./taskset-draft-client.js\";\nexport * from \"./task-inventory.js\";\nexport * from \"./taskset-intake.js\";\nexport * from \"./taskset-calibration-fixtures.js\";\n","import { z } from \"zod\";\nimport { DatasetBuildSpecificationSchema } from \"./taskset-authored-contracts.js\";\nimport { TasksetSourceRefSchema } from \"./taskset-draft-core.js\";\nimport { TaskDesignProposalSchema } from \"./task-design-contracts.js\";\n\nconst Id = z.string().min(1).max(240);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DatasetPreparationAuthoringEvidenceSchema = z.array(z.object({\n source: TasksetSourceRefSchema,\n excerpts: z.array(z.object({ role: z.enum([\"user\", \"assistant\"]), text: z.string().max(200_000), turnId: Id }).strict()).max(200),\n}).strict()).min(1).max(20);\nexport const DatasetPreparationAuthoringRequestSchema = z.discriminatedUnion(\"action\", [\n z.object({ action: z.literal(\"messages\"), id: Id, evidence: DatasetPreparationAuthoringEvidenceSchema,\n instruction: z.string().max(2 * 1024 * 1024), buildSpecification: DatasetBuildSpecificationSchema,\n currentProposal: TaskDesignProposalSchema.nullable().default(null) }).strict(),\n z.object({ action: z.literal(\"validate\"), evidence: DatasetPreparationAuthoringEvidenceSchema,\n content: z.string().max(2 * 1024 * 1024) }).strict(),\n]);\nexport const DatasetPreparationAuthoringMessagesSchema = z.object({\n messages: z.array(z.object({ role: z.enum([\"system\", \"user\"]), content: z.string() }).strict()).min(1).max(20),\n skillHash: Hash,\n}).strict();\nexport const DatasetPreparationAuthoringProposalSchema = z.object({ proposal: TaskDesignProposalSchema, skillHash: Hash }).strict();\nexport type DatasetPreparationAuthoringRequest = z.input<typeof DatasetPreparationAuthoringRequestSchema>;\n","import { z } from \"zod\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport { TasksetDraftSchema, TasksetDraftStatusSchema } from \"./taskset-draft-document.js\";\nimport { TasksetDraftFileSchema, TasksetDraftFileInfoSchema } from \"./model-taskset-authoring-contracts.js\";\n\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst scope = { teamId: IdSchema, modelId: IdSchema };\n\nexport const TasksetDraftCreateRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftCreate.v1\"),\n operationId: IdSchema, modelId: IdSchema, expectedModelRevision: RevisionSchema,\n name: TasksetDraftSchema.shape.name,\n}).strict();\nexport type TasksetDraftCreateRequest = z.infer<typeof TasksetDraftCreateRequestSchema>;\n\nexport const TasksetDraftSourceDescriptorSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftSourceDescriptor.v1\"), ...scope,\n expectedModelRevision: RevisionSchema, sourcePackageHash: HashSchema,\n}).strict();\nexport const TasksetDraftReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftReadback.v1\"), ...scope,\n draft: TasksetDraftSchema, workspaceHash: HashSchema, projectEtag: HashSchema,\n}).strict().refine(value => value.draft.profileId === value.teamId && value.draft.modelScope?.modelId === value.modelId,\n \"The hosted draft must belong to its declared workspace and Model.\");\nexport const TasksetDraftSummarySchema = z.object({\n id: IdSchema, revision: RevisionSchema, name: TasksetDraftSchema.shape.name,\n status: TasksetDraftStatusSchema, updatedAt: TasksetDraftSchema.shape.updatedAt,\n sourceTasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict();\nexport const TasksetDraftListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftList.v1\"), ...scope,\n drafts: z.array(TasksetDraftSummarySchema).max(100), nextCursor: z.string().min(1).max(2_000).nullable(),\n}).strict();\nexport const TasksetDraftSaveRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, draft: TasksetDraftSchema }).strict();\nexport const TasksetDraftRefreshRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedModelRevision: RevisionSchema }).strict();\nexport const TasksetDraftValidationRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedWorkspaceHash: HashSchema }).strict();\nexport const TasksetDraftValidationSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftValidation.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, workspaceHash: HashSchema,\n valid: z.boolean(), issues: z.array(z.object({ code: z.string().min(1), severity: z.enum([\"warning\", \"error\"]), message: z.string(), path: z.string().nullable() }).strict()),\n packageHash: HashSchema.nullable(), tasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict().refine(value => value.valid\n ? value.packageHash !== null && value.tasksetRef !== null && value.issues.every(issue => issue.severity !== \"error\")\n : value.packageHash === null && value.tasksetRef === null && value.issues.some(issue => issue.severity === \"error\"), \"Validation must retain either a compiled package or publication errors.\");\nexport const TasksetDraftPublicationRequestSchema = TasksetDraftValidationRequestSchema.extend({\n operationId: IdSchema, expectedPackageHash: HashSchema, expectedTasksetRef: LearningRevisionRefSchema,\n}).strict();\nexport const TasksetDraftFileListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileList.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, files: z.array(TasksetDraftFileInfoSchema).max(10_020),\n}).strict();\nexport const TasksetDraftFileReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileReadback.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, file: TasksetDraftFileSchema,\n}).strict();\nexport const TasksetDraftDeletionSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftDeletion.v1\"), ...scope,\n draftId: IdSchema, revision: RevisionSchema, deleted: z.literal(true),\n}).strict();\n\nexport type TasksetDraftSourceDescriptor = z.infer<typeof TasksetDraftSourceDescriptorSchema>;\nexport type TasksetDraftReadback = z.infer<typeof TasksetDraftReadbackSchema>;\nexport type TasksetDraftList = z.infer<typeof TasksetDraftListSchema>;\nexport type TasksetDraftSaveRequest = z.infer<typeof TasksetDraftSaveRequestSchema>;\nexport type TasksetDraftRefreshRequest = z.infer<typeof TasksetDraftRefreshRequestSchema>;\nexport type TasksetDraftValidationRequest = z.infer<typeof TasksetDraftValidationRequestSchema>;\nexport type TasksetDraftValidation = z.infer<typeof TasksetDraftValidationSchema>;\nexport type TasksetDraftPublicationRequest = z.infer<typeof TasksetDraftPublicationRequestSchema>;\nexport type TasksetDraftFileList = z.infer<typeof TasksetDraftFileListSchema>;\nexport type TasksetDraftFileReadback = z.infer<typeof TasksetDraftFileReadbackSchema>;\nexport type TasksetDraftDeletion = z.infer<typeof TasksetDraftDeletionSchema>;\n","import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { sameLearningRef } from \"@openpond/evals/learning\";\nimport { ModelTasksetDraftRequestSchema, TasksetDraftFileMutationSchema, TasksetDraftFilePathSchema, type ModelTasksetDraftRequest, type TasksetDraftFileMutation } from \"./model-taskset-authoring-contracts.js\";\nimport { TasksetDraftSchema } from \"./taskset-draft-document.js\";\nimport { decodeTasksetDraftFileContent } from \"./taskset-draft-files.js\";\nimport { MAX_TASKSET_DRAFT_WORKSPACE_BYTES } from \"./taskset-draft-workspace.js\";\nimport { TasksetPackageReceiptSchema } from \"./taskset-package-client.js\";\nimport { TasksetDraftCreateRequestSchema, type TasksetDraftCreateRequest, TasksetDraftSourceDescriptorSchema, TasksetDraftReadbackSchema, TasksetDraftListSchema, TasksetDraftSaveRequestSchema, TasksetDraftRefreshRequestSchema,\n TasksetDraftValidationRequestSchema, TasksetDraftValidationSchema, TasksetDraftPublicationRequestSchema, TasksetDraftFileListSchema, TasksetDraftFileReadbackSchema, TasksetDraftDeletionSchema,\n type TasksetDraftSaveRequest, type TasksetDraftRefreshRequest, type TasksetDraftValidationRequest, type TasksetDraftPublicationRequest } from \"./taskset-draft-api-contracts.js\";\n\ntype Options = { signal?: AbortSignal };\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\n\nexport class OpenPondTasksetDraftError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondTasksetDraftError\"; }\n}\n\n/** Scoped mutable drafts use explicit CAS and never retry writes automatically. */\nexport class OpenPondTasksetDraftClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl?: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Taskset draft client requires a clean HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async inspectSource(modelId: string, expectedModelRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const revision = RevisionSchema.parse(expectedModelRevision);\n const response = this.#scope(TasksetDraftSourceDescriptorSchema.parse(await this.#request(model, `/source?expectedModelRevision=${revision}`, \"GET\", undefined, options.signal)), model);\n if (response.expectedModelRevision !== revision) this.#mismatch();\n return response;\n }\n\n async initialize(input: ModelTasksetDraftRequest, options: Options = {}) {\n const request = ModelTasksetDraftRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const source = response.draft.modelScope?.source;\n if (!source || source.requestHash !== contentHash(request) || source.sourcePackageHash !== request.sourcePackageHash || source.draftId !== response.draft.id\n || source.lineage.owner.scopeId !== this.#options.teamId || source.lineage.owner.modelId !== request.modelId) this.#mismatch();\n return response;\n }\n\n async create(input: TasksetDraftCreateRequest, options: Options = {}) {\n const request = TasksetDraftCreateRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const expectedId = `model-taskset-draft-${contentHash({ owner: { scopeId: this.#options.teamId, modelId: request.modelId }, operationId: request.operationId })}`;\n if (response.draft.id !== expectedId || response.draft.modelScope?.source !== undefined) this.#mismatch();\n return response;\n }\n\n async list(modelId: string, options: Options & { limit?: number; cursor?: string } = {}) {\n const model = IdSchema.parse(modelId);\n const query = new URLSearchParams();\n if (options.limit !== undefined) query.set(\"limit\", String(z.number().int().min(1).max(100).parse(options.limit)));\n if (options.cursor !== undefined) query.set(\"cursor\", z.string().min(1).max(2_000).parse(options.cursor));\n return this.#scope(TasksetDraftListSchema.parse(await this.#request(model, query.size ? `?${query}` : \"\", \"GET\", undefined, options.signal)), model);\n }\n\n async get(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(id)}`, \"GET\", undefined, options.signal), model, id);\n }\n\n async save(modelId: string, input: TasksetDraftSaveRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftSaveRequestSchema.parse(input);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draft.id)}`, \"PUT\", request, options.signal), model, request.draft.id, request.expectedDraftRevision + 1);\n }\n\n async refreshModel(modelId: string, draftId: string, input: TasksetDraftRefreshRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftRefreshRequestSchema.parse(input);\n const response = this.#draft(await this.#request(model, `/${encodeURIComponent(id)}/refresh-model`, \"POST\", request, options.signal), model, id, request.expectedDraftRevision + 1);\n if (response.draft.modelScope?.expectedModelRevision !== request.expectedModelRevision) this.#mismatch();\n return response;\n }\n\n async files(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const response = this.#scope(TasksetDraftFileListSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/files`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id) this.#mismatch();\n return response;\n }\n\n async readFile(modelId: string, draftId: string, path: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const relative = TasksetDraftFilePathSchema.parse(path);\n const response = this.#scope(TasksetDraftFileReadbackSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/file?path=${encodeURIComponent(relative)}`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id || response.file.path !== relative) this.#mismatch();\n const bytes = decodeTasksetDraftFileContent(response.file.content);\n if (bytes.byteLength !== response.file.sizeBytes || sha256(bytes) !== response.file.contentHash) this.#mismatch();\n return response;\n }\n\n async saveFile(modelId: string, input: TasksetDraftFileMutation, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftFileMutationSchema.parse(input);\n if (request.content) decodeTasksetDraftFileContent(request.content);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draftId)}/file`, \"PUT\", request, options.signal), model, request.draftId, request.expectedDraftRevision + 1);\n }\n\n async validate(modelId: string, draftId: string, input: TasksetDraftValidationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftValidationRequestSchema.parse(input);\n const response = this.#scope(TasksetDraftValidationSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/validate`, \"POST\", request, options.signal)), model);\n if (response.draftId !== id || response.draftRevision !== request.expectedDraftRevision || response.workspaceHash !== request.expectedWorkspaceHash) this.#mismatch();\n return response;\n }\n\n async publish(modelId: string, draftId: string, input: TasksetDraftPublicationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftPublicationRequestSchema.parse(input);\n const response = TasksetPackageReceiptSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/publish`, \"POST\", request, options.signal));\n if (response.teamId !== this.#options.teamId || response.modelProjectId !== model || response.operationId !== request.operationId\n || response.packageHash !== request.expectedPackageHash || !sameLearningRef(response.taskset, request.expectedTasksetRef) || response.selection !== \"select\") this.#mismatch();\n return response;\n }\n\n async delete(modelId: string, draftId: string, expectedDraftRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const revision = RevisionSchema.parse(expectedDraftRevision);\n const response = this.#scope(TasksetDraftDeletionSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}?expectedDraftRevision=${revision}`, \"DELETE\", undefined, options.signal)), model);\n if (response.draftId !== id || response.revision !== revision + 1) this.#mismatch();\n return response;\n }\n\n #scope<T extends { teamId: string; modelId: string }>(value: T, modelId: string): T {\n if (value.teamId !== this.#options.teamId || value.modelId !== modelId) this.#mismatch();\n return value;\n }\n #draft(input: unknown, modelId: string, draftId?: string, revision?: number) {\n const value = this.#scope(TasksetDraftReadbackSchema.parse(input), modelId);\n if ((draftId !== undefined && value.draft.id !== draftId) || (revision !== undefined && value.draft.revision !== revision)) this.#mismatch();\n return value;\n }\n #mismatch(): never { throw new OpenPondTasksetDraftError(502, \"draft_response_mismatch\", \"Taskset draft response differs from the requested owner, revision or content.\"); }\n\n async #request(model: string, path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const serialized = body === undefined ? undefined : JSON.stringify(body);\n if (serialized && new TextEncoder().encode(serialized).byteLength > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft exceeds the 64 MiB envelope.\");\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/models/${encodeURIComponent(model)}/taskset-drafts${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\", ...(serialized ? { \"Content-Type\": \"application/json\" } : {}) },\n body: serialized, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetDraftError(response.status, \"empty_response\", \"Taskset draft response was empty.\");\n let bytes = 0;\n let text = \"\";\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft response exceeds the 64 MiB envelope.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const value: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondTasksetDraftError(response.status, error.success ? error.data.code : \"draft_request_failed\", error.success ? error.data.message : `Taskset draft request failed (${response.status}).`);\n }\n return value;\n }\n}\n","import { z } from \"zod\";\nimport type { GraderSpec } from \"./taskset-draft-core.js\";\n\nconst Id = z.string().trim().min(1).max(500);\nexport const TaskInventoryQuerySchema = z.object({\n projectId: Id.optional(), tasksetId: Id.optional(), draftId: Id.optional(), taskId: Id.optional(),\n query: z.string().trim().max(1_000).default(\"\"),\n split: z.enum([\"train\", \"validation\", \"test\", \"frozen_eval\"]).optional(),\n after: z.string().min(1).max(2_000).optional(), limit: z.number().int().min(1).max(100).default(30),\n}).strict();\nexport const TaskScoringSummarySchema = z.object({ id: Id, method: z.enum([\"code\", \"judge\", \"human\"]), required: z.boolean() });\nexport const TaskInventoryItemSchema = z.object({\n tasksetId: Id, tasksetName: z.string(), tasksetRevision: z.number().int().positive(), tasksetHash: z.string(),\n taskId: Id, ordinal: z.number().int().nonnegative(), title: z.string(), description: z.string(), split: z.string(),\n scoring: z.array(TaskScoringSummarySchema), configuration: z.enum([\"configured\", \"needs_reward\", \"needs_checks\"]),\n draftId: Id.nullable().default(null), modelId: Id.nullable().default(null),\n});\nexport const TaskInventoryPageSchema = z.object({ items: z.array(TaskInventoryItemSchema).max(100), nextCursor: z.string().nullable() });\nexport type TaskInventoryQuery = z.infer<typeof TaskInventoryQuerySchema>;\nexport type TaskScoringSummary = z.infer<typeof TaskScoringSummarySchema>;\nexport type TaskInventoryItem = z.infer<typeof TaskInventoryItemSchema>;\nexport type TaskInventoryPage = z.infer<typeof TaskInventoryPageSchema>;\n\n/** Discovery derives only from public task input, never private references. */\nexport function describeTaskInput(input: Record<string, unknown>, id: string) {\n const text = [input.instruction, input.prompt, input.request, input.question, input.message]\n .find((value): value is string => typeof value === \"string\" && value.trim().length > 0);\n const explicitTitle = typeof input.title === \"string\" ? input.title.trim() : \"\";\n const description = text?.trim() ?? \"\";\n return { title: (explicitTitle || description || id).slice(0, 180), description: description.slice(0, 2_000) };\n}\nexport function summarizeTaskScoring(graders: GraderSpec[]): TaskScoringSummary[] {\n return graders.map(grader => ({ id: grader.id, method: grader.kind === \"model_judge\" ? \"judge\" : grader.kind === \"human\" ? \"human\" : \"code\", required: grader.hardGate }));\n}\nexport function taskConfiguration(graders: GraderSpec[]): TaskInventoryItem[\"configuration\"] {\n if (!graders.some(grader => grader.kind !== \"human\")) return \"needs_reward\";\n if (graders.some(grader => grader.kind === \"model_judge\" && grader.calibrationStatus !== \"passed\")) return \"needs_checks\";\n return \"configured\";\n}\n","import { contentHash } from \"@openpond/harness\";\nimport { previewTaskIntake, TaskIntakePreviewSchema, type TaskIntakePreview, type TaskIntakeFile } from \"@openpond/evals/learning\";\nimport { TaskDataDraftSchema, TasksetDraftSchema, type TasksetDraft } from \"./taskset-draft-document.js\";\nimport { createTasksetDraftFile } from \"./taskset-draft-files.js\";\n\n/** Retained source files are unreferenced private assets during publication.\n * A manifest preserves upload filenames without granting them filesystem paths. */\nexport function taskIntakeSourceFiles(preview: TaskIntakePreview, files: TaskIntakeFile[]) {\n if (previewTaskIntake({ format: preview.format, files }).contentHash !== preview.contentHash) throw new Error(\"The source files differ from the import preview.\");\n const directory = `private/intake/${preview.contentHash}`;\n const sources = files.map((file, index) => ({ file, path: `${directory}/${String(index).padStart(4, \"0\")}.txt` }));\n const manifest = { schemaVersion: \"openpond.taskIntakeSources.v1\", format: preview.format, previewHash: preview.contentHash,\n files: sources.map(({ file, path }) => ({ originalPath: file.path, retainedPath: path })) };\n return [...sources.map(({ file, path }) => createTasksetDraftFile(path, new TextEncoder().encode(file.text))),\n createTasksetDraftFile(`${directory}/manifest.json`, new TextEncoder().encode(JSON.stringify(manifest)))];\n}\n\n/** Raw history stays in Labeling until its task and runtime are reviewed. */\nexport function appendTaskIntake(draft: TasksetDraft, raw: TaskIntakePreview, recordIds: string[]): TasksetDraft {\n const preview = TaskIntakePreviewSchema.parse(raw);\n if (!recordIds.length || new Set(recordIds).size !== recordIds.length) throw new Error(\"Select unique task records to import.\");\n const tasks = [...draft.tasks];\n for (const id of recordIds) {\n const record = preview.records.find(record => record.id === id);\n if (!record || record.kind !== \"task\" || record.needsContext) throw new Error(\"Recorded attempts and incomplete histories must be imported into Labeling for review.\");\n const task = TaskDataDraftSchema.parse({ schemaVersion: \"openpond.taskData.v1\", id: record.id, clusterKey: record.familyKey,\n split: record.split, input: record.input, expectedOutput: record.expected, privilegedContextRef: null,\n metadata: { intake: { format: preview.format, uploadHash: preview.contentHash, sourceId: record.sourceId, sourceHash: record.sourceHash, metadata: record.metadata } },\n });\n const existing = tasks.find(existing => existing.id === task.id);\n if (existing && contentHash(existing) !== contentHash(task)) throw new Error(`Task ${task.id} already exists with different content. Import will not replace saved edits.`);\n if (!existing) tasks.push(task);\n }\n const families = new Map<string, string>();\n for (const task of tasks) for (const key of [`family:${task.clusterKey}`, `input:${contentHash(task.input)}`]) {\n if (families.has(key) && families.get(key) !== task.split) throw new Error(\"The imported task family or request already occurs in another split.\");\n families.set(key, task.split);\n }\n return TasksetDraftSchema.parse({ ...draft, tasks });\n}\n"],"mappings":"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","names":["z","z","z","IdSchema","RevisionSchema","z","z","Id","record","existing"]}
@@ -11,7 +11,7 @@ import {
11
11
  materializeTasksetDraftWorkspace,
12
12
  prepareDatasetTrainingReview,
13
13
  prepareTasksetDraftSource
14
- } from "./chunk-XBFOFTK3.js";
14
+ } from "./chunk-4CRLQMJ2.js";
15
15
  import {
16
16
  OpenPondTasksetPackageClient,
17
17
  OpenPondTasksetPackageError,
@@ -20,7 +20,7 @@ import {
20
20
  TasksetPackageReadbackSchema,
21
21
  TasksetPackageReceiptSchema,
22
22
  TasksetReleasePackageReadbackSchema
23
- } from "./chunk-3MWFN7BA.js";
23
+ } from "./chunk-HCUZYGUK.js";
24
24
  import {
25
25
  DatasetTrainingReviewReceiptContentSchema,
26
26
  DatasetTrainingReviewReceiptSchema,
@@ -37,7 +37,7 @@ import {
37
37
  prepareImportedTasksetPackage,
38
38
  projectLearningBatchGraders,
39
39
  tasksetPackageSourceId
40
- } from "./chunk-T67LNKAK.js";
40
+ } from "./chunk-EL6KZO43.js";
41
41
  import {
42
42
  AuthoredTasksetFileInventorySchema,
43
43
  compileModelTasksetDraftWorkspace,
@@ -45,8 +45,8 @@ import {
45
45
  prepareAuthoredTasksetSource,
46
46
  prepareModelTasksetDraft,
47
47
  publishModelTasksetDraftPackage
48
- } from "./chunk-DDCR4KB5.js";
49
- import "./chunk-JOMZJXGC.js";
48
+ } from "./chunk-3BILL33A.js";
49
+ import "./chunk-JINWKUKR.js";
50
50
  import {
51
51
  materializePortableTasksetRelease,
52
52
  portableTasksetEnvironment,
@@ -55,7 +55,7 @@ import {
55
55
  projectPreferenceComparisonRelease,
56
56
  resolvePortableTasksetRewardExecution
57
57
  } from "./chunk-GWXJSBWR.js";
58
- import "./chunk-RTLJV4OS.js";
58
+ import "./chunk-4A4FNG4R.js";
59
59
  import {
60
60
  MAX_TASKSET_PACKAGE_BYTES,
61
61
  TasksetPackageContentSchema,
@@ -72,7 +72,7 @@ import {
72
72
  tasksetPackageRewardBinding,
73
73
  validateTasksetLearningResources,
74
74
  validateTasksetPackage
75
- } from "./chunk-GV6DEDBU.js";
75
+ } from "./chunk-AQV7RQZH.js";
76
76
  import {
77
77
  ModelTasksetAuthoringOwnerSchema,
78
78
  ModelTasksetAuthoringSchema,
@@ -84,13 +84,14 @@ import {
84
84
  TasksetDraftFilePathSchema,
85
85
  TasksetDraftFileSchema
86
86
  } from "./chunk-TK3DXH7A.js";
87
- import "./chunk-Z252BNAZ.js";
87
+ import "./chunk-VE5JD5FN.js";
88
88
  import "./chunk-QTNYXOJW.js";
89
89
  import "./chunk-H3367ISL.js";
90
- import "./chunk-MVAEE5EI.js";
90
+ import "./chunk-H5KHLBC5.js";
91
91
  import "./chunk-CL3IOOVL.js";
92
92
  import "./chunk-B3ZHJ2KK.js";
93
93
  import "./chunk-H3JZ3P5T.js";
94
+ import "./chunk-QYWPNNP3.js";
94
95
  import "./chunk-YLJ4XMA6.js";
95
96
  export {
96
97
  AuthoredTasksetFileInventorySchema,
@@ -8,6 +8,9 @@ import {
8
8
  import {
9
9
  contentHash
10
10
  } from "./chunk-H3JZ3P5T.js";
11
+ import {
12
+ DEFAULT_API_BASE_URL
13
+ } from "./chunk-QYWPNNP3.js";
11
14
  import "./chunk-YLJ4XMA6.js";
12
15
 
13
16
  // src/tool-learning.ts
@@ -292,7 +295,7 @@ var OpenPondToolLearningClient = class {
292
295
  #options;
293
296
  constructor(options) {
294
297
  this.#options = { ...options };
295
- const url = new URL(options.baseUrl);
298
+ const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
296
299
  if (!["https:", "http:"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim() || !options.projectId.trim())
297
300
  throw new Error("tool_learning_client_scope_required");
298
301
  this.#baseUrl = url.toString().replace(/\/+$/, "");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tool-learning.ts","../src/tool-learning-client.ts","../src/tool-learning-episodes.ts","../src/tool-learning-responses.ts"],"sourcesContent":["/** Portable episode and recovery-consultation protocol; no installation side effects. */\nexport * from \"@openpond/evals/tool-learning\";\nexport * from \"./tool-learning-client.js\";\nexport * from \"./tool-learning-episodes.js\";\nexport * from \"./tool-learning-responses.js\";\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport {\n TOOL_LEARNING_LIMITS,\n ToolLearningRegistrationSchema,\n ToolLearningInstallationSchema,\n ToolLearningIdSchema,\n ToolLearningRefSchema,\n ToolLearningDecisionSchema,\n boundedToolLearningSchema,\n ToolLearningInstallationUpdateSchema,\n ToolEpisodeAppendSchema,\n ToolEpisodeAppendReceiptSchema,\n ToolLearningManifestSchema,\n ToolLearningCapabilitySchema,\n ToolLearningConsultationRequestSchema,\n assertToolLearningConsultationResponse,\n type ToolLearningRegistration,\n type ToolEpisodeAppend,\n type ToolLearningConsultationRequest,\n} from \"@openpond/evals/tool-learning\";\nimport {\n LearningSourceCredentialSecretSchema,\n createSourceCredentialRequest,\n} from \"./learning-credentials.js\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\nimport { readBoundedJsonResponse } from \"./protocol.js\";\nimport { assembleToolLearningEpisode } from \"./tool-learning-episodes.js\";\nimport {\n ToolLearningRegistrationReceiptSchema,\n ToolLearningInstallationPageSchema,\n ToolLearningEpisodePageSchema,\n ToolLearningEpisodeDetailSchema,\n ToolLearningPurgeRequestSchema,\n ToolLearningPurgeReceiptSchema,\n} from \"./tool-learning-responses.js\";\n\n/** Prepare and retain this request privately before registration. Retrying the\n * same bytes recovers issuance without storing plaintext on the host. */\nexport const ToolLearningRegistrationRequestSchema = boundedToolLearningSchema(\n z\n .object({\n registration: ToolLearningRegistrationSchema,\n credential: z\n .object({ apiKey: LearningSourceCredentialSecretSchema, expiresAt: z.iso.datetime() })\n .strict(),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\n\nexport const ToolLearningProjectionRequestSchema = boundedToolLearningSchema(\n z\n .object({\n operationId: ToolLearningIdSchema,\n expectedRevision: z.number().int().positive(),\n episodeId: ToolLearningIdSchema,\n failure: ToolLearningRefSchema,\n recovery: ToolLearningRefSchema,\n taskDefinition: LearningRevisionRefSchema,\n familyKey: ToolLearningIdSchema,\n split: z.literal(\"train\"),\n proposedTarget: ToolLearningDecisionSchema,\n saveToPrivateDataset: z.literal(true),\n targetApproval: z.literal(\"pending_owner_review\"),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\nexport const ToolLearningProjectionReceiptSchema = boundedToolLearningSchema(\n z\n .object({\n installationId: ToolLearningIdSchema,\n projectId: ToolLearningIdSchema,\n operationId: ToolLearningIdSchema,\n source: LearningRevisionRefSchema,\n evidence: LearningRevisionRefSchema,\n originHash: z.string().regex(/^[a-f0-9]{64}$/),\n requestHash: z.string().regex(/^[a-f0-9]{64}$/),\n projectedAt: z.iso.datetime(),\n targetApproval: z.literal(\"pending_owner_review\"),\n learningEnrollment: z.literal(false),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\n\n/** Explicit owner selection. Capturing events never authorizes inference spend. */\nexport const ToolLearningRoutingRequestSchema = boundedToolLearningSchema(\n z\n .object({\n operationId: ToolLearningIdSchema,\n expectedRevision: z.number().int().nonnegative(),\n state: z.enum([\"enabled\", \"disabled\"]),\n modelId: ToolLearningIdSchema,\n qualification: z.discriminatedUnion(\"kind\", [\n z\n .object({ kind: z.literal(\"integration\"), evaluationRunId: ToolLearningIdSchema })\n .strict(),\n z\n .object({\n kind: z.literal(\"learned\"),\n evaluationRunId: ToolLearningIdSchema,\n baselineRunId: ToolLearningIdSchema,\n trainingRunId: ToolLearningIdSchema,\n })\n .strict(),\n ]),\n capabilities: z\n .array(ToolLearningCapabilitySchema.omit({ qualification: true }))\n .min(1)\n .max(16),\n limits: z\n .object({\n maxOutputTokens: z.number().int().min(128).max(2048),\n maximumCallUsd: z.number().positive().max(1),\n maximumDayUsd: z.number().positive().max(10),\n maximumSessionCalls: z.number().int().min(1).max(20),\n maximumDayCalls: z.number().int().min(1).max(200),\n })\n .strict(),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\nexport const ToolLearningRoutingSchema = boundedToolLearningSchema(\n z\n .object({\n installationId: ToolLearningIdSchema,\n scope: z.object({ teamId: ToolLearningIdSchema, projectId: ToolLearningIdSchema }).strict(),\n revision: z.number().int().positive(),\n operationId: ToolLearningIdSchema,\n requestHash: z.string().regex(/^[a-f0-9]{64}$/),\n configuration: ToolLearningRoutingRequestSchema,\n modelRelease: ToolLearningRefSchema,\n policySystemPrompt: z.string().min(1).max(16384),\n capabilities: z.array(ToolLearningCapabilitySchema).max(16),\n updatedAt: z.iso.datetime(),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\n\nexport function prepareToolLearningRegistration(\n registration: ToolLearningRegistration,\n expiresAt: string,\n) {\n const prepared = createSourceCredentialRequest({\n sourceId: registration.installationId,\n name: \"Tool learning installation\",\n expiresAt,\n });\n return ToolLearningRegistrationRequestSchema.parse({\n registration,\n credential: { apiKey: prepared.apiKey, expiresAt },\n });\n}\n\nexport class OpenPondToolLearningError extends Error {\n constructor(\n readonly status: number,\n readonly code: string,\n ) {\n super(`Tool learning request failed (${status}): ${code}`);\n this.name = \"OpenPondToolLearningError\";\n }\n}\n\n/** Owner credentials register/control installations. External hooks and MCP\n * use only the separate installation credential returned by registration. */\ntype ToolLearningClientOptions = {\n baseUrl: string;\n apiKey: string;\n teamId: string;\n projectId: string;\n fetch?: typeof globalThis.fetch;\n};\n\nexport class OpenPondToolLearningClient {\n readonly #baseUrl: string;\n readonly #options: ToolLearningClientOptions;\n constructor(options: ToolLearningClientOptions) {\n this.#options = { ...options };\n\n const url = new URL(options.baseUrl);\n if (\n ![\"https:\", \"http:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash ||\n !options.apiKey.trim() ||\n !options.teamId.trim() ||\n !options.projectId.trim()\n )\n throw new Error(\"tool_learning_client_scope_required\");\n this.#baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n\n async register(\n value: z.input<typeof ToolLearningRegistrationRequestSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningRegistrationRequestSchema.parse(value);\n if (input.registration.projectId !== this.#options.projectId)\n throw new Error(\"tool_learning_project_mismatch\");\n const result = ToolLearningRegistrationReceiptSchema.parse(\n await this.#request(\"installations\", \"POST\", input, signal),\n );\n this.#installation(result.installation, input.registration.installationId);\n if (result.apiKey !== input.credential.apiKey)\n throw new Error(\"tool_learning_credential_mismatch\");\n const installation = result.installation;\n if (\n installation.client !== input.registration.client ||\n installation.clientVersion !== input.registration.clientVersion ||\n installation.machineSourceId !== input.registration.machineSourceId ||\n contentHash(installation.adapterRelease) !== contentHash(input.registration.adapterRelease) ||\n contentHash(installation.collectionPolicy) !==\n contentHash(input.registration.collectionPolicy) ||\n installation.collectionPolicyHash !== contentHash(input.registration.collectionPolicy) ||\n installation.credential?.expiresAt !== input.credential.expiresAt\n )\n throw new Error(\"tool_learning_registration_receipt_mismatch\");\n return result;\n }\n\n async installation(id: string, signal?: AbortSignal) {\n const result = ToolLearningInstallationSchema.parse(\n await this.#request(`installations/${encodeURIComponent(id)}`, \"GET\", undefined, signal),\n );\n this.#installation(result, id);\n return result;\n }\n\n async installations(after?: string, signal?: AbortSignal) {\n const result = ToolLearningInstallationPageSchema.parse(\n await this.#request(\n `installations?projectId=${encodeURIComponent(this.#options.projectId)}${after ? `&after=${encodeURIComponent(after)}` : \"\"}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n for (const installation of result.items) this.#installation(installation, installation.id);\n if (result.nextCursor !== null && result.nextCursor !== result.items.at(-1)?.id)\n throw new Error(\"tool_learning_installation_cursor_mismatch\");\n return result;\n }\n\n async episodes(installationId: string, after?: string, signal?: AbortSignal) {\n const result = ToolLearningEpisodePageSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/episodes${after ? `?after=${encodeURIComponent(after)}` : \"\"}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId ||\n (result.nextCursor !== null && result.nextCursor !== result.items.at(-1)?.episodeId)\n )\n throw new Error(\"tool_learning_episode_page_mismatch\");\n return result;\n }\n\n async episode(installationId: string, episodeId: string, signal?: AbortSignal) {\n const result = ToolLearningEpisodeDetailSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/episodes/${encodeURIComponent(episodeId)}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.episodeId !== episodeId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId ||\n result.events.some(\n (event) => event.installationId !== installationId || event.episodeId !== episodeId,\n )\n )\n throw new Error(\"tool_learning_episode_scope_mismatch\");\n if (\n result.state !== result.assembly.state ||\n contentHash(assembleToolLearningEpisode(result.events)) !== contentHash(result.assembly)\n )\n throw new Error(\"tool_learning_episode_assembly_mismatch\");\n return result;\n }\n\n async purge(\n installationId: string,\n input: { operationId: string; expectedRevision: number },\n signal?: AbortSignal,\n ) {\n const request = ToolLearningPurgeRequestSchema.parse(input);\n const result = ToolLearningPurgeReceiptSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/purge`,\n \"POST\",\n request,\n signal,\n ),\n );\n if (result.installationId !== installationId || result.operationId !== request.operationId)\n throw new Error(\"tool_learning_purge_scope_mismatch\");\n return result;\n }\n\n async project(\n installationId: string,\n value: z.input<typeof ToolLearningProjectionRequestSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningProjectionRequestSchema.parse(value);\n const result = ToolLearningProjectionReceiptSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/project`,\n \"POST\",\n input,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.projectId !== this.#options.projectId ||\n result.operationId !== input.operationId ||\n result.requestHash !== contentHash(input)\n )\n throw new Error(\"tool_learning_projection_scope_mismatch\");\n return result;\n }\n\n async setState(\n id: string,\n value: z.input<typeof ToolLearningInstallationUpdateSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningInstallationUpdateSchema.parse(value);\n const result = ToolLearningInstallationSchema.parse(\n await this.#request(`installations/${encodeURIComponent(id)}`, \"PATCH\", input, signal),\n );\n this.#installation(result, id);\n if (result.state !== input.state) throw new Error(\"tool_learning_state_mismatch\");\n return result;\n }\n\n async append(value: ToolEpisodeAppend, signal?: AbortSignal) {\n const input = ToolEpisodeAppendSchema.parse(value);\n const result = ToolEpisodeAppendReceiptSchema.parse(\n await this.#request(\"episodes\", \"POST\", input, signal),\n );\n if (\n result.operationId !== input.operationId ||\n result.installationId !== input.installationId ||\n result.teamId !== this.#options.teamId ||\n result.projectId !== this.#options.projectId ||\n result.requestHash !== contentHash(input) ||\n result.events.length !== input.events.length ||\n new Set(result.events.map((event) => event.eventId)).size !== result.events.length\n )\n throw new Error(\"tool_learning_append_receipt_mismatch\");\n for (const event of result.events) {\n const submitted = input.events.find((value) => value.eventId === event.eventId);\n if (!submitted || submitted.contentHash !== event.contentHash)\n throw new Error(\"tool_learning_append_event_mismatch\");\n }\n return result;\n }\n\n async routing(installationId: string, signal?: AbortSignal) {\n return this.#routing(\n installationId,\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/routing`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n }\n\n async configureRouting(\n installationId: string,\n value: z.input<typeof ToolLearningRoutingRequestSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningRoutingRequestSchema.parse(value);\n const result = this.#routing(\n installationId,\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/routing`,\n \"POST\",\n input,\n signal,\n ),\n );\n if (\n result.operationId !== input.operationId ||\n result.requestHash !== contentHash(input) ||\n contentHash(result.configuration) !== contentHash(input)\n )\n throw new Error(\"tool_learning_routing_receipt_mismatch\");\n return result;\n }\n\n #routing(installationId: string, value: unknown) {\n const result = ToolLearningRoutingSchema.parse(value);\n if (\n result.installationId !== installationId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_routing_scope_mismatch\");\n return result;\n }\n\n async manifest(installationId: string, signal?: AbortSignal) {\n const result = ToolLearningManifestSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/manifest`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_manifest_scope_mismatch\");\n if (\n Date.parse(result.expiresAt) <= Date.now() ||\n Date.parse(result.issuedAt) > Date.now() + 30000\n )\n throw new Error(\"tool_learning_manifest_expired\");\n return result;\n }\n\n async consult(value: ToolLearningConsultationRequest, signal?: AbortSignal) {\n const input = ToolLearningConsultationRequestSchema.parse(value);\n if (\n input.scope.teamId !== this.#options.teamId ||\n input.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_consultation_scope_mismatch\");\n return assertToolLearningConsultationResponse(\n input,\n await this.#request(\"consultations\", \"POST\", input, signal),\n );\n }\n\n async consultation(value: ToolLearningConsultationRequest, signal?: AbortSignal) {\n const input = ToolLearningConsultationRequestSchema.parse(value);\n if (\n input.scope.teamId !== this.#options.teamId ||\n input.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_consultation_scope_mismatch\");\n return assertToolLearningConsultationResponse(\n input,\n await this.#request(\n `installations/${encodeURIComponent(input.installationId)}/consultations/${encodeURIComponent(input.operationId)}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n }\n\n #installation(value: z.infer<typeof ToolLearningInstallationSchema>, id: string) {\n if (\n value.id !== id ||\n value.scope.teamId !== this.#options.teamId ||\n value.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_installation_scope_mismatch\");\n }\n\n async #request(\n path: string,\n method: string,\n body: unknown,\n signal?: AbortSignal,\n ): Promise<unknown> {\n if (body !== undefined)\n assertBoundedTaskJson(\n body,\n TOOL_LEARNING_LIMITS.eventBytes * TOOL_LEARNING_LIMITS.eventsPerAppend,\n );\n const timeout = AbortSignal.timeout(30000);\n const response = await (this.#options.fetch ?? globalThis.fetch)(\n `${this.#baseUrl}/v1/tool-learning/${path}`,\n {\n method,\n redirect: \"error\",\n signal: signal ? AbortSignal.any([signal, timeout]) : timeout,\n headers: {\n Authorization: `Bearer ${this.#options.apiKey}`,\n \"X-OpenPond-Team-Id\": this.#options.teamId,\n Accept: \"application/json\",\n ...(body === undefined ? {} : { \"Content-Type\": \"application/json\" }),\n },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n },\n );\n const value = await readBoundedJsonResponse(\n response,\n TOOL_LEARNING_LIMITS.eventBytes * TOOL_LEARNING_LIMITS.eventsPerAppend,\n \"Tool learning response\",\n );\n if (!response.ok) {\n const error = z\n .object({\n code: z\n .string()\n .regex(/^[a-z0-9_]+$/)\n .max(200),\n })\n .passthrough()\n .safeParse(value);\n throw new OpenPondToolLearningError(\n response.status,\n error.success ? error.data.code : \"tool_learning_request_failed\",\n );\n }\n return value;\n }\n}\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport {\n TOOL_LEARNING_LIMITS,\n ToolEpisodeEventSchema,\n ToolLearningHashSchema,\n ToolLearningRefSchema,\n type ToolEpisodeEvent,\n} from \"@openpond/evals/tool-learning\";\n\nexport const ToolLearningEpisodeAssemblySchema = z.object({\n state: z.enum([\"incomplete\", \"ambiguous\", \"awaiting_owner_review\"]),\n issues: z.array(z.enum([\n \"missing_attempt\", \"missing_observation\", \"completion_not_observed\",\n \"conflicting_observations\", \"reference_mismatch\", \"lineage_mismatch\",\n \"mixed_scope\", \"conflicting_event\",\n ])).max(8),\n groups: z.array(z.object({\n key: ToolLearningHashSchema,\n application: z.string().min(1).max(200),\n applicationVersion: z.string().min(1).max(200),\n tool: z.object({\n name: z.string().min(1).max(200),\n version: z.string().max(200).nullable(),\n server: z.string().max(200).nullable(),\n }).strict(),\n environmentFingerprints: z.array(ToolLearningHashSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n attempts: z.array(ToolLearningRefSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n }).strict()).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n}).strict();\n\ntype Issue = z.infer<typeof ToolLearningEpisodeAssemblySchema>[\"issues\"][number];\ntype Attempt = Extract<ToolEpisodeEvent, { eventKind: \"attempt\" }>;\ntype Observation = Extract<ToolEpisodeEvent, { eventKind: \"observation\" }>;\n\n/** Structural assembly of retained calls, never recovery verification or label\n * approval. Conflicting observations remain visible instead of selecting the\n * most recently received answer. Recovery/verifier claims retain their separate\n * owner authority and are not promoted by this read projection. */\nexport function assembleToolLearningEpisode(raw: readonly ToolEpisodeEvent[]) {\n const events = z.array(ToolEpisodeEventSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode).parse(raw);\n const incomplete = new Set<Issue>(), ambiguous = new Set<Issue>();\n const byId = new Map<string, ToolEpisodeEvent>();\n const first = events[0];\n for (const event of events) {\n if (first && (event.installationId !== first.installationId || event.episodeId !== first.episodeId))\n ambiguous.add(\"mixed_scope\");\n if (event.parentSessionId === event.sessionId) ambiguous.add(\"lineage_mismatch\");\n const previous = byId.get(event.eventId);\n if (previous && previous.contentHash !== event.contentHash) ambiguous.add(\"conflicting_event\");\n else byId.set(event.eventId, event);\n }\n const attempts = [...byId.values()].filter((event): event is Attempt => event.eventKind === \"attempt\");\n const observations = new Map<string, Observation[]>();\n const callOwners = new Map<string, string>();\n if (!attempts.length) incomplete.add(\"missing_attempt\");\n for (const event of byId.values()) {\n if (event.eventKind !== \"observation\") continue;\n const attempt = byId.get(event.payload.attempt.id);\n if (!attempt) incomplete.add(\"missing_attempt\");\n else if (attempt.eventKind !== \"attempt\" ||\n attempt.contentHash !== event.payload.attempt.contentHash ||\n attempt.payload.actionHash !== event.payload.actionHash) ambiguous.add(\"reference_mismatch\");\n else if (attempt.sessionId !== event.sessionId || attempt.callId !== event.callId ||\n (attempt.parentSessionId && event.parentSessionId && attempt.parentSessionId !== event.parentSessionId) ||\n (attempt.turnId && event.turnId && attempt.turnId !== event.turnId)) ambiguous.add(\"lineage_mismatch\");\n const values = observations.get(event.payload.attempt.id) ?? [];\n values.push(event);\n observations.set(event.payload.attempt.id, values);\n }\n const grouped = new Map<string, {\n application: string; applicationVersion: string; tool: Attempt[\"payload\"][\"tool\"];\n fingerprints: Set<string>; attempts: Array<{ id: string; contentHash: string }>;\n }>();\n for (const attempt of attempts) {\n const callKey = JSON.stringify([attempt.sessionId, attempt.callId]);\n const previousCall = callOwners.get(callKey);\n if (previousCall && previousCall !== attempt.contentHash) ambiguous.add(\"lineage_mismatch\");\n callOwners.set(callKey, attempt.contentHash);\n const values = observations.get(attempt.eventId) ?? [];\n if (!values.length) incomplete.add(\"missing_observation\");\n else {\n const terminal = values.filter((event) => event.payload.outcome !== \"incomplete\");\n if (!terminal.length) incomplete.add(\"completion_not_observed\");\n if (new Set(terminal.map((event) => contentHash(event.payload))).size > 1)\n ambiguous.add(\"conflicting_observations\");\n }\n const { environment, tool } = attempt.payload;\n const key = contentHash([environment.application, environment.version, tool.name, tool.version, tool.server]);\n const group = grouped.get(key) ?? {\n application: environment.application, applicationVersion: environment.version,\n tool, fingerprints: new Set<string>(), attempts: [],\n };\n group.fingerprints.add(environment.fingerprint);\n group.attempts.push({ id: attempt.eventId, contentHash: attempt.contentHash });\n grouped.set(key, group);\n }\n return ToolLearningEpisodeAssemblySchema.parse({\n state: ambiguous.size ? \"ambiguous\" : incomplete.size ? \"incomplete\" : \"awaiting_owner_review\",\n issues: [...new Set([...ambiguous, ...incomplete])].sort(),\n groups: [...grouped].sort(([a], [b]) => a.localeCompare(b)).map(([key, group]) => ({\n key, application: group.application, applicationVersion: group.applicationVersion, tool: group.tool,\n environmentFingerprints: [...group.fingerprints].sort(),\n attempts: group.attempts.sort((a, b) => a.id.localeCompare(b.id)),\n })),\n });\n}\n","import { z } from \"zod\";\nimport {\n TOOL_LEARNING_LIMITS,\n ToolEpisodeEventSchema,\n ToolLearningIdSchema,\n ToolLearningInstallationSchema,\n ToolLearningScopeSchema,\n} from \"@openpond/evals/tool-learning\";\nimport { LearningSourceCredentialSecretSchema } from \"./learning-credentials.js\";\nimport { ToolLearningEpisodeAssemblySchema } from \"./tool-learning-episodes.js\";\n\n/** Shared wire envelopes used by native clients and the Python schema exporter. */\nexport const ToolLearningRegistrationReceiptSchema = z\n .object({\n installation: ToolLearningInstallationSchema,\n apiKey: LearningSourceCredentialSecretSchema,\n })\n .strict();\n\nexport const ToolLearningInstallationPageSchema = z\n .object({\n items: z.array(ToolLearningInstallationSchema).max(30),\n nextCursor: ToolLearningIdSchema.nullable(),\n })\n .strict();\n\nexport const ToolLearningEpisodePageSchema = z\n .object({\n installationId: ToolLearningIdSchema,\n scope: ToolLearningScopeSchema,\n items: z\n .array(\n z\n .object({\n episodeId: ToolLearningIdSchema,\n eventCount: z.number().int().positive(),\n lastReceivedAt: z.iso.datetime(),\n })\n .strict(),\n )\n .max(30),\n nextCursor: ToolLearningIdSchema.nullable(),\n learningEnrollment: z.literal(false),\n })\n .strict();\n\nexport const ToolLearningEpisodeDetailSchema = z\n .object({\n installationId: ToolLearningIdSchema,\n episodeId: ToolLearningIdSchema,\n scope: ToolLearningScopeSchema,\n events: z.array(ToolEpisodeEventSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n state: ToolLearningEpisodeAssemblySchema.shape.state,\n assembly: ToolLearningEpisodeAssemblySchema,\n verificationAuthority: z.literal(\"not_granted\"),\n learningEnrollment: z.literal(false),\n })\n .strict();\n\nexport const ToolLearningPurgeRequestSchema = z\n .object({\n operationId: ToolLearningIdSchema,\n expectedRevision: z.number().int().positive(),\n })\n .strict();\n\nexport const ToolLearningPurgeReceiptSchema = z\n .object({\n installationId: ToolLearningIdSchema,\n operationId: ToolLearningIdSchema,\n purgedEvents: z.number().int().nonnegative(),\n learningEnrollment: z.literal(false),\n })\n .strict();\n"],"mappings":"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","names":["z","TOOL_LEARNING_LIMITS","ToolLearningInstallationSchema","ToolLearningIdSchema","ToolLearningRefSchema","z","TOOL_LEARNING_LIMITS","ToolEpisodeEventSchema","z","ToolEpisodeEventSchema","TOOL_LEARNING_LIMITS","z","TOOL_LEARNING_LIMITS","ToolLearningIdSchema","ToolLearningRefSchema","ToolLearningInstallationSchema","value"]}
1
+ {"version":3,"sources":["../src/tool-learning.ts","../src/tool-learning-client.ts","../src/tool-learning-episodes.ts","../src/tool-learning-responses.ts"],"sourcesContent":["/** Portable episode and recovery-consultation protocol; no installation side effects. */\nexport * from \"@openpond/evals/tool-learning\";\nexport * from \"./tool-learning-client.js\";\nexport * from \"./tool-learning-episodes.js\";\nexport * from \"./tool-learning-responses.js\";\n","import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport {\n TOOL_LEARNING_LIMITS,\n ToolLearningRegistrationSchema,\n ToolLearningInstallationSchema,\n ToolLearningIdSchema,\n ToolLearningRefSchema,\n ToolLearningDecisionSchema,\n boundedToolLearningSchema,\n ToolLearningInstallationUpdateSchema,\n ToolEpisodeAppendSchema,\n ToolEpisodeAppendReceiptSchema,\n ToolLearningManifestSchema,\n ToolLearningCapabilitySchema,\n ToolLearningConsultationRequestSchema,\n assertToolLearningConsultationResponse,\n type ToolLearningRegistration,\n type ToolEpisodeAppend,\n type ToolLearningConsultationRequest,\n} from \"@openpond/evals/tool-learning\";\nimport {\n LearningSourceCredentialSecretSchema,\n createSourceCredentialRequest,\n} from \"./learning-credentials.js\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\nimport { readBoundedJsonResponse } from \"./protocol.js\";\nimport { assembleToolLearningEpisode } from \"./tool-learning-episodes.js\";\nimport {\n ToolLearningRegistrationReceiptSchema,\n ToolLearningInstallationPageSchema,\n ToolLearningEpisodePageSchema,\n ToolLearningEpisodeDetailSchema,\n ToolLearningPurgeRequestSchema,\n ToolLearningPurgeReceiptSchema,\n} from \"./tool-learning-responses.js\";\n\n/** Prepare and retain this request privately before registration. Retrying the\n * same bytes recovers issuance without storing plaintext on the host. */\nexport const ToolLearningRegistrationRequestSchema = boundedToolLearningSchema(\n z\n .object({\n registration: ToolLearningRegistrationSchema,\n credential: z\n .object({ apiKey: LearningSourceCredentialSecretSchema, expiresAt: z.iso.datetime() })\n .strict(),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\n\nexport const ToolLearningProjectionRequestSchema = boundedToolLearningSchema(\n z\n .object({\n operationId: ToolLearningIdSchema,\n expectedRevision: z.number().int().positive(),\n episodeId: ToolLearningIdSchema,\n failure: ToolLearningRefSchema,\n recovery: ToolLearningRefSchema,\n taskDefinition: LearningRevisionRefSchema,\n familyKey: ToolLearningIdSchema,\n split: z.literal(\"train\"),\n proposedTarget: ToolLearningDecisionSchema,\n saveToPrivateDataset: z.literal(true),\n targetApproval: z.literal(\"pending_owner_review\"),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\nexport const ToolLearningProjectionReceiptSchema = boundedToolLearningSchema(\n z\n .object({\n installationId: ToolLearningIdSchema,\n projectId: ToolLearningIdSchema,\n operationId: ToolLearningIdSchema,\n source: LearningRevisionRefSchema,\n evidence: LearningRevisionRefSchema,\n originHash: z.string().regex(/^[a-f0-9]{64}$/),\n requestHash: z.string().regex(/^[a-f0-9]{64}$/),\n projectedAt: z.iso.datetime(),\n targetApproval: z.literal(\"pending_owner_review\"),\n learningEnrollment: z.literal(false),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\n\n/** Explicit owner selection. Capturing events never authorizes inference spend. */\nexport const ToolLearningRoutingRequestSchema = boundedToolLearningSchema(\n z\n .object({\n operationId: ToolLearningIdSchema,\n expectedRevision: z.number().int().nonnegative(),\n state: z.enum([\"enabled\", \"disabled\"]),\n modelId: ToolLearningIdSchema,\n qualification: z.discriminatedUnion(\"kind\", [\n z\n .object({ kind: z.literal(\"integration\"), evaluationRunId: ToolLearningIdSchema })\n .strict(),\n z\n .object({\n kind: z.literal(\"learned\"),\n evaluationRunId: ToolLearningIdSchema,\n baselineRunId: ToolLearningIdSchema,\n trainingRunId: ToolLearningIdSchema,\n })\n .strict(),\n ]),\n capabilities: z\n .array(ToolLearningCapabilitySchema.omit({ qualification: true }))\n .min(1)\n .max(16),\n limits: z\n .object({\n maxOutputTokens: z.number().int().min(128).max(2048),\n maximumCallUsd: z.number().positive().max(1),\n maximumDayUsd: z.number().positive().max(10),\n maximumSessionCalls: z.number().int().min(1).max(20),\n maximumDayCalls: z.number().int().min(1).max(200),\n })\n .strict(),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\nexport const ToolLearningRoutingSchema = boundedToolLearningSchema(\n z\n .object({\n installationId: ToolLearningIdSchema,\n scope: z.object({ teamId: ToolLearningIdSchema, projectId: ToolLearningIdSchema }).strict(),\n revision: z.number().int().positive(),\n operationId: ToolLearningIdSchema,\n requestHash: z.string().regex(/^[a-f0-9]{64}$/),\n configuration: ToolLearningRoutingRequestSchema,\n modelRelease: ToolLearningRefSchema,\n policySystemPrompt: z.string().min(1).max(16384),\n capabilities: z.array(ToolLearningCapabilitySchema).max(16),\n updatedAt: z.iso.datetime(),\n })\n .strict(),\n TOOL_LEARNING_LIMITS.eventBytes,\n);\n\nexport function prepareToolLearningRegistration(\n registration: ToolLearningRegistration,\n expiresAt: string,\n) {\n const prepared = createSourceCredentialRequest({\n sourceId: registration.installationId,\n name: \"Tool learning installation\",\n expiresAt,\n });\n return ToolLearningRegistrationRequestSchema.parse({\n registration,\n credential: { apiKey: prepared.apiKey, expiresAt },\n });\n}\n\nexport class OpenPondToolLearningError extends Error {\n constructor(\n readonly status: number,\n readonly code: string,\n ) {\n super(`Tool learning request failed (${status}): ${code}`);\n this.name = \"OpenPondToolLearningError\";\n }\n}\n\n/** Owner credentials register/control installations. External hooks and MCP\n * use only the separate installation credential returned by registration. */\ntype ToolLearningClientOptions = {\n baseUrl?: string;\n apiKey: string;\n teamId: string;\n projectId: string;\n fetch?: typeof globalThis.fetch;\n};\n\nexport class OpenPondToolLearningClient {\n readonly #baseUrl: string;\n readonly #options: ToolLearningClientOptions;\n constructor(options: ToolLearningClientOptions) {\n this.#options = { ...options };\n\n const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);\n if (\n ![\"https:\", \"http:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash ||\n !options.apiKey.trim() ||\n !options.teamId.trim() ||\n !options.projectId.trim()\n )\n throw new Error(\"tool_learning_client_scope_required\");\n this.#baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n\n async register(\n value: z.input<typeof ToolLearningRegistrationRequestSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningRegistrationRequestSchema.parse(value);\n if (input.registration.projectId !== this.#options.projectId)\n throw new Error(\"tool_learning_project_mismatch\");\n const result = ToolLearningRegistrationReceiptSchema.parse(\n await this.#request(\"installations\", \"POST\", input, signal),\n );\n this.#installation(result.installation, input.registration.installationId);\n if (result.apiKey !== input.credential.apiKey)\n throw new Error(\"tool_learning_credential_mismatch\");\n const installation = result.installation;\n if (\n installation.client !== input.registration.client ||\n installation.clientVersion !== input.registration.clientVersion ||\n installation.machineSourceId !== input.registration.machineSourceId ||\n contentHash(installation.adapterRelease) !== contentHash(input.registration.adapterRelease) ||\n contentHash(installation.collectionPolicy) !==\n contentHash(input.registration.collectionPolicy) ||\n installation.collectionPolicyHash !== contentHash(input.registration.collectionPolicy) ||\n installation.credential?.expiresAt !== input.credential.expiresAt\n )\n throw new Error(\"tool_learning_registration_receipt_mismatch\");\n return result;\n }\n\n async installation(id: string, signal?: AbortSignal) {\n const result = ToolLearningInstallationSchema.parse(\n await this.#request(`installations/${encodeURIComponent(id)}`, \"GET\", undefined, signal),\n );\n this.#installation(result, id);\n return result;\n }\n\n async installations(after?: string, signal?: AbortSignal) {\n const result = ToolLearningInstallationPageSchema.parse(\n await this.#request(\n `installations?projectId=${encodeURIComponent(this.#options.projectId)}${after ? `&after=${encodeURIComponent(after)}` : \"\"}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n for (const installation of result.items) this.#installation(installation, installation.id);\n if (result.nextCursor !== null && result.nextCursor !== result.items.at(-1)?.id)\n throw new Error(\"tool_learning_installation_cursor_mismatch\");\n return result;\n }\n\n async episodes(installationId: string, after?: string, signal?: AbortSignal) {\n const result = ToolLearningEpisodePageSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/episodes${after ? `?after=${encodeURIComponent(after)}` : \"\"}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId ||\n (result.nextCursor !== null && result.nextCursor !== result.items.at(-1)?.episodeId)\n )\n throw new Error(\"tool_learning_episode_page_mismatch\");\n return result;\n }\n\n async episode(installationId: string, episodeId: string, signal?: AbortSignal) {\n const result = ToolLearningEpisodeDetailSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/episodes/${encodeURIComponent(episodeId)}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.episodeId !== episodeId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId ||\n result.events.some(\n (event) => event.installationId !== installationId || event.episodeId !== episodeId,\n )\n )\n throw new Error(\"tool_learning_episode_scope_mismatch\");\n if (\n result.state !== result.assembly.state ||\n contentHash(assembleToolLearningEpisode(result.events)) !== contentHash(result.assembly)\n )\n throw new Error(\"tool_learning_episode_assembly_mismatch\");\n return result;\n }\n\n async purge(\n installationId: string,\n input: { operationId: string; expectedRevision: number },\n signal?: AbortSignal,\n ) {\n const request = ToolLearningPurgeRequestSchema.parse(input);\n const result = ToolLearningPurgeReceiptSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/purge`,\n \"POST\",\n request,\n signal,\n ),\n );\n if (result.installationId !== installationId || result.operationId !== request.operationId)\n throw new Error(\"tool_learning_purge_scope_mismatch\");\n return result;\n }\n\n async project(\n installationId: string,\n value: z.input<typeof ToolLearningProjectionRequestSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningProjectionRequestSchema.parse(value);\n const result = ToolLearningProjectionReceiptSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/project`,\n \"POST\",\n input,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.projectId !== this.#options.projectId ||\n result.operationId !== input.operationId ||\n result.requestHash !== contentHash(input)\n )\n throw new Error(\"tool_learning_projection_scope_mismatch\");\n return result;\n }\n\n async setState(\n id: string,\n value: z.input<typeof ToolLearningInstallationUpdateSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningInstallationUpdateSchema.parse(value);\n const result = ToolLearningInstallationSchema.parse(\n await this.#request(`installations/${encodeURIComponent(id)}`, \"PATCH\", input, signal),\n );\n this.#installation(result, id);\n if (result.state !== input.state) throw new Error(\"tool_learning_state_mismatch\");\n return result;\n }\n\n async append(value: ToolEpisodeAppend, signal?: AbortSignal) {\n const input = ToolEpisodeAppendSchema.parse(value);\n const result = ToolEpisodeAppendReceiptSchema.parse(\n await this.#request(\"episodes\", \"POST\", input, signal),\n );\n if (\n result.operationId !== input.operationId ||\n result.installationId !== input.installationId ||\n result.teamId !== this.#options.teamId ||\n result.projectId !== this.#options.projectId ||\n result.requestHash !== contentHash(input) ||\n result.events.length !== input.events.length ||\n new Set(result.events.map((event) => event.eventId)).size !== result.events.length\n )\n throw new Error(\"tool_learning_append_receipt_mismatch\");\n for (const event of result.events) {\n const submitted = input.events.find((value) => value.eventId === event.eventId);\n if (!submitted || submitted.contentHash !== event.contentHash)\n throw new Error(\"tool_learning_append_event_mismatch\");\n }\n return result;\n }\n\n async routing(installationId: string, signal?: AbortSignal) {\n return this.#routing(\n installationId,\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/routing`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n }\n\n async configureRouting(\n installationId: string,\n value: z.input<typeof ToolLearningRoutingRequestSchema>,\n signal?: AbortSignal,\n ) {\n const input = ToolLearningRoutingRequestSchema.parse(value);\n const result = this.#routing(\n installationId,\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/routing`,\n \"POST\",\n input,\n signal,\n ),\n );\n if (\n result.operationId !== input.operationId ||\n result.requestHash !== contentHash(input) ||\n contentHash(result.configuration) !== contentHash(input)\n )\n throw new Error(\"tool_learning_routing_receipt_mismatch\");\n return result;\n }\n\n #routing(installationId: string, value: unknown) {\n const result = ToolLearningRoutingSchema.parse(value);\n if (\n result.installationId !== installationId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_routing_scope_mismatch\");\n return result;\n }\n\n async manifest(installationId: string, signal?: AbortSignal) {\n const result = ToolLearningManifestSchema.parse(\n await this.#request(\n `installations/${encodeURIComponent(installationId)}/manifest`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n if (\n result.installationId !== installationId ||\n result.scope.teamId !== this.#options.teamId ||\n result.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_manifest_scope_mismatch\");\n if (\n Date.parse(result.expiresAt) <= Date.now() ||\n Date.parse(result.issuedAt) > Date.now() + 30000\n )\n throw new Error(\"tool_learning_manifest_expired\");\n return result;\n }\n\n async consult(value: ToolLearningConsultationRequest, signal?: AbortSignal) {\n const input = ToolLearningConsultationRequestSchema.parse(value);\n if (\n input.scope.teamId !== this.#options.teamId ||\n input.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_consultation_scope_mismatch\");\n return assertToolLearningConsultationResponse(\n input,\n await this.#request(\"consultations\", \"POST\", input, signal),\n );\n }\n\n async consultation(value: ToolLearningConsultationRequest, signal?: AbortSignal) {\n const input = ToolLearningConsultationRequestSchema.parse(value);\n if (\n input.scope.teamId !== this.#options.teamId ||\n input.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_consultation_scope_mismatch\");\n return assertToolLearningConsultationResponse(\n input,\n await this.#request(\n `installations/${encodeURIComponent(input.installationId)}/consultations/${encodeURIComponent(input.operationId)}`,\n \"GET\",\n undefined,\n signal,\n ),\n );\n }\n\n #installation(value: z.infer<typeof ToolLearningInstallationSchema>, id: string) {\n if (\n value.id !== id ||\n value.scope.teamId !== this.#options.teamId ||\n value.scope.projectId !== this.#options.projectId\n )\n throw new Error(\"tool_learning_installation_scope_mismatch\");\n }\n\n async #request(\n path: string,\n method: string,\n body: unknown,\n signal?: AbortSignal,\n ): Promise<unknown> {\n if (body !== undefined)\n assertBoundedTaskJson(\n body,\n TOOL_LEARNING_LIMITS.eventBytes * TOOL_LEARNING_LIMITS.eventsPerAppend,\n );\n const timeout = AbortSignal.timeout(30000);\n const response = await (this.#options.fetch ?? globalThis.fetch)(\n `${this.#baseUrl}/v1/tool-learning/${path}`,\n {\n method,\n redirect: \"error\",\n signal: signal ? AbortSignal.any([signal, timeout]) : timeout,\n headers: {\n Authorization: `Bearer ${this.#options.apiKey}`,\n \"X-OpenPond-Team-Id\": this.#options.teamId,\n Accept: \"application/json\",\n ...(body === undefined ? {} : { \"Content-Type\": \"application/json\" }),\n },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n },\n );\n const value = await readBoundedJsonResponse(\n response,\n TOOL_LEARNING_LIMITS.eventBytes * TOOL_LEARNING_LIMITS.eventsPerAppend,\n \"Tool learning response\",\n );\n if (!response.ok) {\n const error = z\n .object({\n code: z\n .string()\n .regex(/^[a-z0-9_]+$/)\n .max(200),\n })\n .passthrough()\n .safeParse(value);\n throw new OpenPondToolLearningError(\n response.status,\n error.success ? error.data.code : \"tool_learning_request_failed\",\n );\n }\n return value;\n }\n}\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport {\n TOOL_LEARNING_LIMITS,\n ToolEpisodeEventSchema,\n ToolLearningHashSchema,\n ToolLearningRefSchema,\n type ToolEpisodeEvent,\n} from \"@openpond/evals/tool-learning\";\n\nexport const ToolLearningEpisodeAssemblySchema = z.object({\n state: z.enum([\"incomplete\", \"ambiguous\", \"awaiting_owner_review\"]),\n issues: z.array(z.enum([\n \"missing_attempt\", \"missing_observation\", \"completion_not_observed\",\n \"conflicting_observations\", \"reference_mismatch\", \"lineage_mismatch\",\n \"mixed_scope\", \"conflicting_event\",\n ])).max(8),\n groups: z.array(z.object({\n key: ToolLearningHashSchema,\n application: z.string().min(1).max(200),\n applicationVersion: z.string().min(1).max(200),\n tool: z.object({\n name: z.string().min(1).max(200),\n version: z.string().max(200).nullable(),\n server: z.string().max(200).nullable(),\n }).strict(),\n environmentFingerprints: z.array(ToolLearningHashSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n attempts: z.array(ToolLearningRefSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n }).strict()).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n}).strict();\n\ntype Issue = z.infer<typeof ToolLearningEpisodeAssemblySchema>[\"issues\"][number];\ntype Attempt = Extract<ToolEpisodeEvent, { eventKind: \"attempt\" }>;\ntype Observation = Extract<ToolEpisodeEvent, { eventKind: \"observation\" }>;\n\n/** Structural assembly of retained calls, never recovery verification or label\n * approval. Conflicting observations remain visible instead of selecting the\n * most recently received answer. Recovery/verifier claims retain their separate\n * owner authority and are not promoted by this read projection. */\nexport function assembleToolLearningEpisode(raw: readonly ToolEpisodeEvent[]) {\n const events = z.array(ToolEpisodeEventSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode).parse(raw);\n const incomplete = new Set<Issue>(), ambiguous = new Set<Issue>();\n const byId = new Map<string, ToolEpisodeEvent>();\n const first = events[0];\n for (const event of events) {\n if (first && (event.installationId !== first.installationId || event.episodeId !== first.episodeId))\n ambiguous.add(\"mixed_scope\");\n if (event.parentSessionId === event.sessionId) ambiguous.add(\"lineage_mismatch\");\n const previous = byId.get(event.eventId);\n if (previous && previous.contentHash !== event.contentHash) ambiguous.add(\"conflicting_event\");\n else byId.set(event.eventId, event);\n }\n const attempts = [...byId.values()].filter((event): event is Attempt => event.eventKind === \"attempt\");\n const observations = new Map<string, Observation[]>();\n const callOwners = new Map<string, string>();\n if (!attempts.length) incomplete.add(\"missing_attempt\");\n for (const event of byId.values()) {\n if (event.eventKind !== \"observation\") continue;\n const attempt = byId.get(event.payload.attempt.id);\n if (!attempt) incomplete.add(\"missing_attempt\");\n else if (attempt.eventKind !== \"attempt\" ||\n attempt.contentHash !== event.payload.attempt.contentHash ||\n attempt.payload.actionHash !== event.payload.actionHash) ambiguous.add(\"reference_mismatch\");\n else if (attempt.sessionId !== event.sessionId || attempt.callId !== event.callId ||\n (attempt.parentSessionId && event.parentSessionId && attempt.parentSessionId !== event.parentSessionId) ||\n (attempt.turnId && event.turnId && attempt.turnId !== event.turnId)) ambiguous.add(\"lineage_mismatch\");\n const values = observations.get(event.payload.attempt.id) ?? [];\n values.push(event);\n observations.set(event.payload.attempt.id, values);\n }\n const grouped = new Map<string, {\n application: string; applicationVersion: string; tool: Attempt[\"payload\"][\"tool\"];\n fingerprints: Set<string>; attempts: Array<{ id: string; contentHash: string }>;\n }>();\n for (const attempt of attempts) {\n const callKey = JSON.stringify([attempt.sessionId, attempt.callId]);\n const previousCall = callOwners.get(callKey);\n if (previousCall && previousCall !== attempt.contentHash) ambiguous.add(\"lineage_mismatch\");\n callOwners.set(callKey, attempt.contentHash);\n const values = observations.get(attempt.eventId) ?? [];\n if (!values.length) incomplete.add(\"missing_observation\");\n else {\n const terminal = values.filter((event) => event.payload.outcome !== \"incomplete\");\n if (!terminal.length) incomplete.add(\"completion_not_observed\");\n if (new Set(terminal.map((event) => contentHash(event.payload))).size > 1)\n ambiguous.add(\"conflicting_observations\");\n }\n const { environment, tool } = attempt.payload;\n const key = contentHash([environment.application, environment.version, tool.name, tool.version, tool.server]);\n const group = grouped.get(key) ?? {\n application: environment.application, applicationVersion: environment.version,\n tool, fingerprints: new Set<string>(), attempts: [],\n };\n group.fingerprints.add(environment.fingerprint);\n group.attempts.push({ id: attempt.eventId, contentHash: attempt.contentHash });\n grouped.set(key, group);\n }\n return ToolLearningEpisodeAssemblySchema.parse({\n state: ambiguous.size ? \"ambiguous\" : incomplete.size ? \"incomplete\" : \"awaiting_owner_review\",\n issues: [...new Set([...ambiguous, ...incomplete])].sort(),\n groups: [...grouped].sort(([a], [b]) => a.localeCompare(b)).map(([key, group]) => ({\n key, application: group.application, applicationVersion: group.applicationVersion, tool: group.tool,\n environmentFingerprints: [...group.fingerprints].sort(),\n attempts: group.attempts.sort((a, b) => a.id.localeCompare(b.id)),\n })),\n });\n}\n","import { z } from \"zod\";\nimport {\n TOOL_LEARNING_LIMITS,\n ToolEpisodeEventSchema,\n ToolLearningIdSchema,\n ToolLearningInstallationSchema,\n ToolLearningScopeSchema,\n} from \"@openpond/evals/tool-learning\";\nimport { LearningSourceCredentialSecretSchema } from \"./learning-credentials.js\";\nimport { ToolLearningEpisodeAssemblySchema } from \"./tool-learning-episodes.js\";\n\n/** Shared wire envelopes used by native clients and the Python schema exporter. */\nexport const ToolLearningRegistrationReceiptSchema = z\n .object({\n installation: ToolLearningInstallationSchema,\n apiKey: LearningSourceCredentialSecretSchema,\n })\n .strict();\n\nexport const ToolLearningInstallationPageSchema = z\n .object({\n items: z.array(ToolLearningInstallationSchema).max(30),\n nextCursor: ToolLearningIdSchema.nullable(),\n })\n .strict();\n\nexport const ToolLearningEpisodePageSchema = z\n .object({\n installationId: ToolLearningIdSchema,\n scope: ToolLearningScopeSchema,\n items: z\n .array(\n z\n .object({\n episodeId: ToolLearningIdSchema,\n eventCount: z.number().int().positive(),\n lastReceivedAt: z.iso.datetime(),\n })\n .strict(),\n )\n .max(30),\n nextCursor: ToolLearningIdSchema.nullable(),\n learningEnrollment: z.literal(false),\n })\n .strict();\n\nexport const ToolLearningEpisodeDetailSchema = z\n .object({\n installationId: ToolLearningIdSchema,\n episodeId: ToolLearningIdSchema,\n scope: ToolLearningScopeSchema,\n events: z.array(ToolEpisodeEventSchema).max(TOOL_LEARNING_LIMITS.eventsPerEpisode),\n state: ToolLearningEpisodeAssemblySchema.shape.state,\n assembly: ToolLearningEpisodeAssemblySchema,\n verificationAuthority: z.literal(\"not_granted\"),\n learningEnrollment: z.literal(false),\n })\n .strict();\n\nexport const ToolLearningPurgeRequestSchema = z\n .object({\n operationId: ToolLearningIdSchema,\n expectedRevision: z.number().int().positive(),\n })\n .strict();\n\nexport const ToolLearningPurgeReceiptSchema = z\n .object({\n installationId: ToolLearningIdSchema,\n operationId: ToolLearningIdSchema,\n purgedEvents: z.number().int().nonnegative(),\n learningEnrollment: z.literal(false),\n })\n .strict();\n"],"mappings":"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","names":["z","TOOL_LEARNING_LIMITS","ToolLearningInstallationSchema","ToolLearningIdSchema","ToolLearningRefSchema","z","TOOL_LEARNING_LIMITS","ToolEpisodeEventSchema","z","ToolEpisodeEventSchema","TOOL_LEARNING_LIMITS","z","TOOL_LEARNING_LIMITS","ToolLearningIdSchema","ToolLearningRefSchema","ToolLearningInstallationSchema","value"]}
@@ -10,7 +10,7 @@ import {
10
10
  trainingEvaluationSourceRef,
11
11
  trainingInputArtifactUploadHash,
12
12
  trainingJobSubmissionHash
13
- } from "./chunk-Z5APNTZE.js";
13
+ } from "./chunk-XYK3MAIC.js";
14
14
  import {
15
15
  ManagedSftRecipeSchema
16
16
  } from "./chunk-YV6PPDXZ.js";
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  prepareImportedTasksetPackage,
26
26
  projectLearningBatchGraders
27
- } from "./chunk-T67LNKAK.js";
27
+ } from "./chunk-EL6KZO43.js";
28
28
  import {
29
29
  projectPortableTaskRecord,
30
30
  resolvePortableTasksetRewardExecution
@@ -33,26 +33,26 @@ import {
33
33
  TasksetDraftOutputContractSchema,
34
34
  TasksetSchema,
35
35
  computeTasksetHash
36
- } from "./chunk-RTLJV4OS.js";
36
+ } from "./chunk-4A4FNG4R.js";
37
37
  import {
38
38
  LearningBatchDatasetSourceRefSchema,
39
39
  MAX_TASKSET_PACKAGE_BYTES,
40
40
  decodeTasksetPackageFile,
41
41
  validateTasksetPackage
42
- } from "./chunk-GV6DEDBU.js";
42
+ } from "./chunk-AQV7RQZH.js";
43
43
  import "./chunk-TK3DXH7A.js";
44
44
  import "./chunk-QTNYXOJW.js";
45
45
  import "./chunk-H3367ISL.js";
46
46
  import {
47
47
  TrainingHandoffOriginSchema
48
- } from "./chunk-BJMENXR4.js";
49
- import "./chunk-ZQFROKKS.js";
50
- import "./chunk-GS5HEE4M.js";
51
- import "./chunk-ZRTNR4U7.js";
52
- import "./chunk-JMFYNIYZ.js";
48
+ } from "./chunk-C7I4ZG6Q.js";
49
+ import "./chunk-2U6BQ5C4.js";
50
+ import "./chunk-4REK5TTE.js";
51
+ import "./chunk-XWUTYFOU.js";
52
+ import "./chunk-CAOMKM55.js";
53
53
  import {
54
54
  TrainingGpuSelectionSchema
55
- } from "./chunk-MVAEE5EI.js";
55
+ } from "./chunk-H5KHLBC5.js";
56
56
  import "./chunk-CL3IOOVL.js";
57
57
  import "./chunk-B3ZHJ2KK.js";
58
58
  import {
@@ -64,6 +64,7 @@ import {
64
64
  contentHash,
65
65
  sha256
66
66
  } from "./chunk-H3JZ3P5T.js";
67
+ import "./chunk-QYWPNNP3.js";
67
68
  import "./chunk-YLJ4XMA6.js";
68
69
 
69
70
  // src/training-bundle.ts