openpond-sdk 0.12.24 → 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 (231) hide show
  1. package/LEARNING.md +5 -7
  2. package/OPENTELEMETRY.md +1 -1
  3. package/PRODUCT_INTEGRATION.md +129 -0
  4. package/README.md +13 -3
  5. package/SERVERLESS_SERVING.md +37 -0
  6. package/TASKSETS.md +1 -2
  7. package/TASK_INGESTION.md +87 -86
  8. package/TRAINING_PROTOCOL.md +7 -3
  9. package/TRAINING_WORKFLOWS.md +11 -6
  10. package/dist/advanced-refiner-evaluations.js +10 -9
  11. package/dist/ai-sdk.js +225 -0
  12. package/dist/ai-sdk.js.map +1 -0
  13. package/dist/candidate-evaluations.js +7 -6
  14. package/dist/{chunk-ZQFROKKS.js → chunk-2U6BQ5C4.js} +3 -3
  15. package/dist/{chunk-BNBPKCIR.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-GCUWJUUM.js → chunk-4A4FNG4R.js} +2 -2
  19. package/dist/{chunk-EZME7DV4.js → chunk-4CDLPMJK.js} +2 -2
  20. package/dist/{chunk-SP7DQEQM.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-AG6UJ3DI.js → chunk-57ROW3XF.js} +3 -3
  25. package/dist/{chunk-3BYFS4RO.js → chunk-6LVLWRBJ.js} +11 -8
  26. package/dist/chunk-6LVLWRBJ.js.map +1 -0
  27. package/dist/{chunk-3VUF5H3B.js → chunk-AMZ2SWHR.js} +2 -2
  28. package/dist/{chunk-ZQ6QTYRE.js → chunk-AQV7RQZH.js} +11 -11
  29. package/dist/{chunk-ZQ6QTYRE.js.map → chunk-AQV7RQZH.js.map} +1 -1
  30. package/dist/{chunk-BJMENXR4.js → chunk-C7I4ZG6Q.js} +3 -3
  31. package/dist/{chunk-JMFYNIYZ.js → chunk-CAOMKM55.js} +6 -3
  32. package/dist/chunk-CAOMKM55.js.map +1 -0
  33. package/dist/{chunk-QNOCM5JX.js → chunk-D26RJQU7.js} +2 -2
  34. package/dist/{chunk-GBDBKGXW.js → chunk-EL6KZO43.js} +3 -3
  35. package/dist/{chunk-MVAEE5EI.js → chunk-H5KHLBC5.js} +5 -2
  36. package/dist/chunk-H5KHLBC5.js.map +1 -0
  37. package/dist/{chunk-7G47YXQT.js → chunk-HCUZYGUK.js} +8 -5
  38. package/dist/chunk-HCUZYGUK.js.map +1 -0
  39. package/dist/{chunk-Q4RGCEOI.js → chunk-JINWKUKR.js} +3 -3
  40. package/dist/{chunk-626JLH4D.js → chunk-JWEIAEQ6.js} +2 -2
  41. package/dist/{chunk-DH6O4JFB.js → chunk-KJTX4A27.js} +5 -2
  42. package/dist/chunk-KJTX4A27.js.map +1 -0
  43. package/dist/{chunk-OBI2MQYU.js → chunk-MN4FE52A.js} +17 -14
  44. package/dist/chunk-MN4FE52A.js.map +1 -0
  45. package/dist/{chunk-NZRGRUYG.js → chunk-MUG4OQKL.js} +21 -7
  46. package/dist/chunk-MUG4OQKL.js.map +1 -0
  47. package/dist/{chunk-C3TS766N.js → chunk-N6LGT7NT.js} +5 -2
  48. package/dist/chunk-N6LGT7NT.js.map +1 -0
  49. package/dist/{chunk-QIGMNB6M.js → chunk-P56JWQYV.js} +3 -3
  50. package/dist/{chunk-GX6KMHW2.js → chunk-QKLZZOZD.js} +5 -2
  51. package/dist/chunk-QKLZZOZD.js.map +1 -0
  52. package/dist/chunk-QYWPNNP3.js +9 -0
  53. package/dist/chunk-QYWPNNP3.js.map +1 -0
  54. package/dist/{chunk-QCRNQMN4.js → chunk-UZAVG2WK.js} +5 -5
  55. package/dist/chunk-UZAVG2WK.js.map +1 -0
  56. package/dist/{chunk-Z252BNAZ.js → chunk-VE5JD5FN.js} +6 -2
  57. package/dist/chunk-VE5JD5FN.js.map +1 -0
  58. package/dist/{chunk-7F43U2NC.js → chunk-WZKKQNYY.js} +3 -3
  59. package/dist/{chunk-6EZAGTZG.js → chunk-X5AT253K.js} +5 -5
  60. package/dist/{chunk-ZRTNR4U7.js → chunk-XWUTYFOU.js} +3 -3
  61. package/dist/{chunk-KEG5QS7W.js → chunk-XYK3MAIC.js} +193 -193
  62. package/dist/chunk-XYK3MAIC.js.map +1 -0
  63. package/dist/chunk-ZG4HVCJB.js +248 -0
  64. package/dist/chunk-ZG4HVCJB.js.map +1 -0
  65. package/dist/connected-evidence.js +11 -10
  66. package/dist/dataset-commerce.js +4 -1
  67. package/dist/dataset-commerce.js.map +1 -1
  68. package/dist/dataset-marketplace.js +4 -1
  69. package/dist/dataset-marketplace.js.map +1 -1
  70. package/dist/dataset-workspaces.js +157 -93
  71. package/dist/dataset-workspaces.js.map +1 -1
  72. package/dist/errors.js +2 -1
  73. package/dist/experiment-evaluation-schedules.js +20 -19
  74. package/dist/experiment-improvements.js +8 -7
  75. package/dist/experiments.js +21 -20
  76. package/dist/human-review.js +2 -1
  77. package/dist/index.js +87 -56
  78. package/dist/index.js.map +1 -1
  79. package/dist/learning.js +6 -3
  80. package/dist/learning.js.map +1 -1
  81. package/dist/model-projects.js +2 -1
  82. package/dist/model-starter-attempts.js +3 -2
  83. package/dist/model-starter-catalog.js +7 -4
  84. package/dist/model-starter-catalog.js.map +1 -1
  85. package/dist/model-starters.js +4 -3
  86. package/dist/model-taskset-runs.js +7 -4
  87. package/dist/model-taskset-runs.js.map +1 -1
  88. package/dist/post-training.js +7 -6
  89. package/dist/taskset-catalog.js +2 -1
  90. package/dist/taskset-drafts.js +13 -10
  91. package/dist/taskset-drafts.js.map +1 -1
  92. package/dist/taskset-packages.js +16 -15
  93. package/dist/tool-learning.js +4 -1
  94. package/dist/tool-learning.js.map +1 -1
  95. package/dist/training-bundle.js +19 -18
  96. package/dist/training-bundle.js.map +1 -1
  97. package/dist/training-hardware.js +3 -2
  98. package/dist/training-projects.js +4 -1
  99. package/dist/training-projects.js.map +1 -1
  100. package/dist/training.js +2761 -2626
  101. package/dist/training.js.map +1 -1
  102. package/dist/types/packages/sdk/src/ai-sdk.d.ts +6 -0
  103. package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -0
  104. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +21 -21
  105. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +1 -1
  106. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
  107. package/dist/types/packages/sdk/src/connected-sync.d.ts +1 -1
  108. package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
  109. package/dist/types/packages/sdk/src/dataset-commerce.d.ts +1 -1
  110. package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
  111. package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +1 -1
  112. package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
  113. package/dist/types/packages/sdk/src/dataset-population.d.ts +1 -1
  114. package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
  115. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +1 -1
  116. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
  117. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +9 -2
  118. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
  119. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +141 -141
  120. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  121. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts +28 -0
  122. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +1 -0
  124. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
  125. package/dist/types/packages/sdk/src/endpoints.d.ts +4 -0
  126. package/dist/types/packages/sdk/src/endpoints.d.ts.map +1 -0
  127. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +1 -1
  128. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
  129. package/dist/types/packages/sdk/src/experiment-client.d.ts +637 -637
  130. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  131. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +28 -28
  132. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +28 -28
  133. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1623 -1623
  134. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
  135. package/dist/types/packages/sdk/src/experiment-inspection.d.ts +1 -1
  136. package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
  137. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  138. package/dist/types/packages/sdk/src/grader-inspection.d.ts +1 -1
  139. package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
  140. package/dist/types/packages/sdk/src/human-review-client.d.ts +1 -1
  141. package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -1
  142. package/dist/types/packages/sdk/src/index.d.ts +13 -4
  143. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  144. package/dist/types/packages/sdk/src/learning-client.d.ts +1 -1
  145. package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
  146. package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +1 -1
  147. package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -1
  148. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +347 -347
  149. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
  150. package/dist/types/packages/sdk/src/model-projects.d.ts +1 -1
  151. package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
  152. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +1 -1
  153. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  154. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +1 -1
  155. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  156. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +29 -29
  157. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  158. package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
  159. package/dist/types/packages/sdk/src/product-model-response.d.ts +4 -0
  160. package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -0
  161. package/dist/types/packages/sdk/src/product-models.d.ts +76 -0
  162. package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -0
  163. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1 -1
  164. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
  165. package/dist/types/packages/sdk/src/serverless-serving.d.ts +157 -0
  166. package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -0
  167. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +276 -0
  168. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
  169. package/dist/types/packages/sdk/src/taskset-catalog.d.ts +1 -1
  170. package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
  171. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +121 -121
  172. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  173. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +20 -20
  174. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1 -1
  175. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  176. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
  177. package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1 -1
  178. package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -1
  179. package/dist/types/packages/sdk/src/training-evidence.d.ts +54 -0
  180. package/dist/types/packages/sdk/src/training-evidence.d.ts.map +1 -0
  181. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
  182. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +232 -0
  183. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -1
  184. package/dist/types/packages/sdk/src/training-model-serving.d.ts +552 -0
  185. package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
  186. package/dist/types/packages/sdk/src/training-project-client.d.ts +1 -1
  187. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
  188. package/dist/types/packages/sdk/src/training-transport.d.ts +1 -1
  189. package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
  190. package/dist/types/packages/sdk/src/training.d.ts +2489 -2148
  191. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  192. package/dist/types/packages/sdk/src/types.d.ts +14 -1
  193. package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
  194. package/examples/learning/submit.py +1 -1
  195. package/examples/learning/submit.ts +2 -2
  196. package/examples/training/continual.ts +4 -4
  197. package/examples/training/manual.ts +1 -3
  198. package/fixtures/personalized-inference-request.schema.json +316 -0
  199. package/fixtures/python-foundation/schemas.json +4873 -4484
  200. package/package.json +19 -3
  201. package/dist/chunk-3B5KSH3V.js.map +0 -1
  202. package/dist/chunk-3BYFS4RO.js.map +0 -1
  203. package/dist/chunk-7G47YXQT.js.map +0 -1
  204. package/dist/chunk-C3TS766N.js.map +0 -1
  205. package/dist/chunk-DH6O4JFB.js.map +0 -1
  206. package/dist/chunk-GX6KMHW2.js.map +0 -1
  207. package/dist/chunk-JMFYNIYZ.js.map +0 -1
  208. package/dist/chunk-KEG5QS7W.js.map +0 -1
  209. package/dist/chunk-MVAEE5EI.js.map +0 -1
  210. package/dist/chunk-NZRGRUYG.js.map +0 -1
  211. package/dist/chunk-OBI2MQYU.js.map +0 -1
  212. package/dist/chunk-QCRNQMN4.js.map +0 -1
  213. package/dist/chunk-QOX57Y27.js.map +0 -1
  214. package/dist/chunk-Z252BNAZ.js.map +0 -1
  215. /package/dist/{chunk-ZQFROKKS.js.map → chunk-2U6BQ5C4.js.map} +0 -0
  216. /package/dist/{chunk-BNBPKCIR.js.map → chunk-3BILL33A.js.map} +0 -0
  217. /package/dist/{chunk-GCUWJUUM.js.map → chunk-4A4FNG4R.js.map} +0 -0
  218. /package/dist/{chunk-EZME7DV4.js.map → chunk-4CDLPMJK.js.map} +0 -0
  219. /package/dist/{chunk-SP7DQEQM.js.map → chunk-4CRLQMJ2.js.map} +0 -0
  220. /package/dist/{chunk-GS5HEE4M.js.map → chunk-4REK5TTE.js.map} +0 -0
  221. /package/dist/{chunk-AG6UJ3DI.js.map → chunk-57ROW3XF.js.map} +0 -0
  222. /package/dist/{chunk-3VUF5H3B.js.map → chunk-AMZ2SWHR.js.map} +0 -0
  223. /package/dist/{chunk-BJMENXR4.js.map → chunk-C7I4ZG6Q.js.map} +0 -0
  224. /package/dist/{chunk-QNOCM5JX.js.map → chunk-D26RJQU7.js.map} +0 -0
  225. /package/dist/{chunk-GBDBKGXW.js.map → chunk-EL6KZO43.js.map} +0 -0
  226. /package/dist/{chunk-Q4RGCEOI.js.map → chunk-JINWKUKR.js.map} +0 -0
  227. /package/dist/{chunk-626JLH4D.js.map → chunk-JWEIAEQ6.js.map} +0 -0
  228. /package/dist/{chunk-QIGMNB6M.js.map → chunk-P56JWQYV.js.map} +0 -0
  229. /package/dist/{chunk-7F43U2NC.js.map → chunk-WZKKQNYY.js.map} +0 -0
  230. /package/dist/{chunk-6EZAGTZG.js.map → chunk-X5AT253K.js.map} +0 -0
  231. /package/dist/{chunk-ZRTNR4U7.js.map → chunk-XWUTYFOU.js.map} +0 -0
package/dist/ai-sdk.js ADDED
@@ -0,0 +1,225 @@
1
+ import {
2
+ ProductModelError,
3
+ productModelEndpoint
4
+ } from "./chunk-ZG4HVCJB.js";
5
+ import "./chunk-B3ZHJ2KK.js";
6
+ import "./chunk-QYWPNNP3.js";
7
+ import "./chunk-YLJ4XMA6.js";
8
+
9
+ // src/ai-sdk.ts
10
+ import {
11
+ createOpenAICompatible
12
+ } from "@ai-sdk/openai-compatible";
13
+ import { z } from "zod";
14
+
15
+ // src/product-model-response.ts
16
+ function boundProductModelResponse(response) {
17
+ if (!response.body) return response;
18
+ const streaming = response.headers.get("content-type")?.includes("text/event-stream") ?? false;
19
+ const reader = response.body.getReader();
20
+ const decoder = new TextDecoder();
21
+ let total = 0, pending = "", terminal = false;
22
+ let identity;
23
+ const fail = () => new ProductModelError(
24
+ streaming ? "model_stream_interrupted" : "model_response_invalid",
25
+ response.status,
26
+ true,
27
+ response.headers.get("x-openpond-request-id") ?? response.headers.get("x-request-id") ?? void 0
28
+ );
29
+ const body = new ReadableStream({
30
+ async pull(controller) {
31
+ try {
32
+ const { done, value } = await reader.read();
33
+ if (done) {
34
+ if (streaming && !terminal) throw fail();
35
+ controller.close();
36
+ reader.releaseLock();
37
+ return;
38
+ }
39
+ total += value.byteLength;
40
+ if (total > 8 * 1024 * 1024) throw fail();
41
+ if (streaming) {
42
+ pending = (pending + decoder.decode(value, { stream: true })).replace(/\r\n/g, "\n");
43
+ let boundary;
44
+ while ((boundary = pending.indexOf("\n\n")) >= 0) {
45
+ const frame = pending.slice(0, boundary);
46
+ pending = pending.slice(boundary + 2);
47
+ if (new TextEncoder().encode(frame).length > 1024 * 1024) throw fail();
48
+ const data = frame.split("\n").filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trimStart()).join("\n");
49
+ if (data === "[DONE]") terminal = true;
50
+ else if (data) {
51
+ const chunk = JSON.parse(data);
52
+ if (typeof chunk.id === "string" && typeof chunk.model === "string") {
53
+ if (identity && (chunk.id !== identity.id || chunk.model !== identity.model))
54
+ throw fail();
55
+ identity = { id: chunk.id, model: chunk.model };
56
+ }
57
+ }
58
+ }
59
+ if (new TextEncoder().encode(pending).length > 1024 * 1024) throw fail();
60
+ }
61
+ controller.enqueue(value);
62
+ } catch {
63
+ await reader.cancel().catch(() => {
64
+ });
65
+ controller.error(fail());
66
+ }
67
+ },
68
+ async cancel(reason) {
69
+ await reader.cancel(reason);
70
+ }
71
+ });
72
+ return new Response(body, {
73
+ status: response.status,
74
+ statusText: response.statusText,
75
+ headers: response.headers
76
+ });
77
+ }
78
+
79
+ // src/ai-sdk.ts
80
+ var Evidence = z.object({ openpond: z.record(z.string(), z.json()) }).passthrough();
81
+ function metadata(raw) {
82
+ const value = Evidence.safeParse(raw);
83
+ return value.success ? { openpond: value.data.openpond } : void 0;
84
+ }
85
+ function toAIModel(model) {
86
+ const connection = model.providerConnection();
87
+ const provider = createOpenAICompatible({
88
+ name: "openpond",
89
+ baseURL: productModelEndpoint(connection.baseUrl),
90
+ apiKey: connection.apiKey,
91
+ // The personalized gateway always supplies terminal usage and rejects
92
+ // OpenAI's optional stream_options field.
93
+ includeUsage: false,
94
+ headers: connection.teamId ? { "X-OpenPond-Team-Id": connection.teamId } : void 0,
95
+ transformRequestBody: (raw) => {
96
+ const body = JSON.parse(JSON.stringify(raw));
97
+ if (body.model !== model.id)
98
+ throw new ProductModelError("model_override_forbidden", 0, false);
99
+ const allowed = /* @__PURE__ */ new Set([
100
+ "model",
101
+ "messages",
102
+ "stream",
103
+ "max_tokens",
104
+ "temperature",
105
+ "top_p",
106
+ "seed",
107
+ "stop",
108
+ "tools",
109
+ "tool_choice"
110
+ ]);
111
+ if (Object.keys(body).some((key) => !allowed.has(key)))
112
+ throw new ProductModelError("parameter_unsupported", 0, false);
113
+ return body;
114
+ },
115
+ metadataExtractor: {
116
+ async extractMetadata({ parsedBody }) {
117
+ return metadata(parsedBody);
118
+ },
119
+ createStreamExtractor() {
120
+ let evidence;
121
+ return {
122
+ processChunk(chunk) {
123
+ evidence = metadata(chunk) ?? evidence;
124
+ },
125
+ buildMetadata() {
126
+ return evidence;
127
+ }
128
+ };
129
+ }
130
+ },
131
+ supportsStructuredOutputs: model.capabilities.structuredOutput,
132
+ fetch: async (url, init) => {
133
+ const timeout = AbortSignal.timeout(connection.timeoutMs ?? 6e4);
134
+ const headers = new Headers(init?.headers);
135
+ headers.set("Authorization", `Bearer ${connection.apiKey}`);
136
+ if (connection.teamId) headers.set("X-OpenPond-Team-Id", connection.teamId);
137
+ return boundProductModelResponse(
138
+ await (connection.fetch ?? fetch)(url, {
139
+ ...init,
140
+ redirect: "error",
141
+ headers,
142
+ signal: init?.signal ? AbortSignal.any([init.signal, timeout]) : timeout
143
+ })
144
+ );
145
+ }
146
+ }).chatModel(model.id);
147
+ const check = (options) => {
148
+ const rawOptions = options.providerOptions?.openpond;
149
+ if (rawOptions && ["stream", "stream_options"].some((key) => key in rawOptions))
150
+ throw new ProductModelError("transport_override_forbidden", 0, false);
151
+ if (options.tools?.length && !model.capabilities.tools)
152
+ throw new ProductModelError("tools_unsupported", 0, false);
153
+ if (options.responseFormat?.type === "json")
154
+ throw new ProductModelError("structured_output_unsupported", 0, false);
155
+ if (options.prompt.some(
156
+ (message) => message.role === "tool" && !model.capabilities.tools || message.role !== "system" && message.content.some(
157
+ (part) => part.type !== "text" && !(model.capabilities.tools && ["tool-call", "tool-result"].includes(part.type))
158
+ )
159
+ ))
160
+ throw new ProductModelError("input_capability_unsupported", 0, false);
161
+ };
162
+ const normalizeError = (error) => {
163
+ if (error instanceof ProductModelError) return error;
164
+ if (error && typeof error === "object" && "cause" in error && error.cause instanceof ProductModelError)
165
+ return error.cause;
166
+ const status = error && typeof error === "object" && "statusCode" in error && typeof error.statusCode === "number" ? error.statusCode : 0;
167
+ const unknown = status === 0 || status === 408 || status >= 500 || status >= 200 && status < 300;
168
+ return new ProductModelError(
169
+ status >= 400 ? "model_request_rejected" : "model_outcome_unknown",
170
+ status,
171
+ unknown
172
+ );
173
+ };
174
+ return {
175
+ specificationVersion: provider.specificationVersion,
176
+ provider: provider.provider,
177
+ modelId: provider.modelId,
178
+ supportedUrls: provider.supportedUrls,
179
+ async doGenerate(options) {
180
+ check(options);
181
+ try {
182
+ return await provider.doGenerate(options);
183
+ } catch (error) {
184
+ throw normalizeError(error);
185
+ }
186
+ },
187
+ async doStream(options) {
188
+ check(options);
189
+ if (!model.capabilities.streaming)
190
+ throw new ProductModelError("streaming_unsupported", 0, false);
191
+ try {
192
+ const result = await provider.doStream(options);
193
+ const reader = result.stream.getReader();
194
+ return {
195
+ ...result,
196
+ stream: new ReadableStream({
197
+ async pull(controller) {
198
+ try {
199
+ const { done, value } = await reader.read();
200
+ if (done) {
201
+ controller.close();
202
+ reader.releaseLock();
203
+ } else
204
+ controller.enqueue(
205
+ value.type === "error" ? { ...value, error: normalizeError(value.error) } : value
206
+ );
207
+ } catch (error) {
208
+ controller.error(normalizeError(error));
209
+ }
210
+ },
211
+ async cancel(reason) {
212
+ await reader.cancel(reason);
213
+ }
214
+ })
215
+ };
216
+ } catch (error) {
217
+ throw normalizeError(error);
218
+ }
219
+ }
220
+ };
221
+ }
222
+ export {
223
+ toAIModel
224
+ };
225
+ //# sourceMappingURL=ai-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ai-sdk.ts","../src/product-model-response.ts"],"sourcesContent":["/** Optional integration: AI SDK 7 / @ai-sdk/openai-compatible 3 (LanguageModelV4). */\nimport {\n createOpenAICompatible,\n type OpenAICompatibleChatLanguageModel,\n} from \"@ai-sdk/openai-compatible\";\nimport { z } from \"zod\";\nimport { boundProductModelResponse } from \"./product-model-response.js\";\nimport { ProductModel, ProductModelError, productModelEndpoint } from \"./product-models.js\";\n\nconst Evidence = z.object({ openpond: z.record(z.string(), z.json()) }).passthrough();\nfunction metadata(raw: unknown) {\n const value = Evidence.safeParse(raw);\n return value.success ? { openpond: value.data.openpond } : undefined;\n}\n\n/** Use generateText/streamText with maxRetries: 0; paid inference is never safely replayable implicitly. */\nexport function toAIModel(\n model: ProductModel,\n): Pick<\n OpenAICompatibleChatLanguageModel,\n \"specificationVersion\" | \"provider\" | \"modelId\" | \"supportedUrls\" | \"doGenerate\" | \"doStream\"\n> {\n const connection = model.providerConnection();\n const provider = createOpenAICompatible({\n name: \"openpond\",\n baseURL: productModelEndpoint(connection.baseUrl!),\n apiKey: connection.apiKey,\n // The personalized gateway always supplies terminal usage and rejects\n // OpenAI's optional stream_options field.\n includeUsage: false,\n headers: connection.teamId ? { \"X-OpenPond-Team-Id\": connection.teamId } : undefined,\n transformRequestBody: (raw) => {\n const body = JSON.parse(JSON.stringify(raw)) as Record<string, unknown>;\n if (body.model !== model.id)\n throw new ProductModelError(\"model_override_forbidden\", 0, false);\n const allowed = new Set([\n \"model\",\n \"messages\",\n \"stream\",\n \"max_tokens\",\n \"temperature\",\n \"top_p\",\n \"seed\",\n \"stop\",\n \"tools\",\n \"tool_choice\",\n ]);\n if (Object.keys(body).some((key) => !allowed.has(key)))\n throw new ProductModelError(\"parameter_unsupported\", 0, false);\n return body;\n },\n metadataExtractor: {\n async extractMetadata({ parsedBody }) {\n return metadata(parsedBody);\n },\n createStreamExtractor() {\n let evidence: ReturnType<typeof metadata>;\n return {\n processChunk(chunk) {\n evidence = metadata(chunk) ?? evidence;\n },\n buildMetadata() {\n return evidence;\n },\n };\n },\n },\n supportsStructuredOutputs: model.capabilities.structuredOutput,\n fetch: async (url, init) => {\n const timeout = AbortSignal.timeout(connection.timeoutMs ?? 60_000);\n const headers = new Headers(init?.headers);\n headers.set(\"Authorization\", `Bearer ${connection.apiKey}`);\n if (connection.teamId) headers.set(\"X-OpenPond-Team-Id\", connection.teamId);\n return boundProductModelResponse(\n await (connection.fetch ?? fetch)(url, {\n ...init,\n redirect: \"error\",\n headers,\n signal: init?.signal ? AbortSignal.any([init.signal, timeout]) : timeout,\n }),\n );\n },\n }).chatModel(model.id);\n const check = (options: Parameters<typeof provider.doGenerate>[0]) => {\n const rawOptions = options.providerOptions?.openpond;\n if (rawOptions && [\"stream\", \"stream_options\"].some((key) => key in rawOptions))\n throw new ProductModelError(\"transport_override_forbidden\", 0, false);\n if (options.tools?.length && !model.capabilities.tools)\n throw new ProductModelError(\"tools_unsupported\", 0, false);\n if (options.responseFormat?.type === \"json\")\n throw new ProductModelError(\"structured_output_unsupported\", 0, false);\n if (\n options.prompt.some(\n (message) =>\n (message.role === \"tool\" && !model.capabilities.tools) ||\n (message.role !== \"system\" &&\n message.content.some(\n (part) =>\n part.type !== \"text\" &&\n !(model.capabilities.tools && [\"tool-call\", \"tool-result\"].includes(part.type)),\n )),\n )\n )\n throw new ProductModelError(\"input_capability_unsupported\", 0, false);\n };\n // Convert retryable transport errors to a terminal SDK error: AI SDK's default\n // automatic retries must not accidentally duplicate a billed generation.\n const normalizeError = (error: unknown): ProductModelError => {\n if (error instanceof ProductModelError) return error;\n if (\n error &&\n typeof error === \"object\" &&\n \"cause\" in error &&\n error.cause instanceof ProductModelError\n )\n return error.cause;\n const status =\n error &&\n typeof error === \"object\" &&\n \"statusCode\" in error &&\n typeof error.statusCode === \"number\"\n ? error.statusCode\n : 0;\n const unknown =\n status === 0 || status === 408 || status >= 500 || (status >= 200 && status < 300);\n return new ProductModelError(\n status >= 400 ? \"model_request_rejected\" : \"model_outcome_unknown\",\n status,\n unknown,\n );\n };\n return {\n specificationVersion: provider.specificationVersion,\n provider: provider.provider,\n modelId: provider.modelId,\n supportedUrls: provider.supportedUrls,\n async doGenerate(options: Parameters<typeof provider.doGenerate>[0]) {\n check(options);\n try {\n return await provider.doGenerate(options);\n } catch (error) {\n throw normalizeError(error);\n }\n },\n async doStream(options: Parameters<typeof provider.doStream>[0]) {\n check(options);\n if (!model.capabilities.streaming)\n throw new ProductModelError(\"streaming_unsupported\", 0, false);\n try {\n const result = await provider.doStream(options);\n const reader = result.stream.getReader();\n return {\n ...result,\n stream: new ReadableStream({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n reader.releaseLock();\n } else\n controller.enqueue(\n value.type === \"error\"\n ? { ...value, error: normalizeError(value.error) }\n : value,\n );\n } catch (error) {\n controller.error(normalizeError(error));\n }\n },\n async cancel(reason) {\n await reader.cancel(reason);\n },\n }),\n };\n } catch (error) {\n throw normalizeError(error);\n }\n },\n };\n}\n","import { ProductModelError } from \"./product-models.js\";\n\n/** Bound the optional provider's otherwise unbounded parser and require the\n * personalized gateway's terminal marker before treating EOF as completion. */\nexport function boundProductModelResponse(response: Response): Response {\n if (!response.body) return response;\n const streaming = response.headers.get(\"content-type\")?.includes(\"text/event-stream\") ?? false;\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let total = 0,\n pending = \"\",\n terminal = false;\n let identity: { id: string; model: string } | undefined;\n const fail = () =>\n new ProductModelError(\n streaming ? \"model_stream_interrupted\" : \"model_response_invalid\",\n response.status,\n true,\n response.headers.get(\"x-openpond-request-id\") ??\n response.headers.get(\"x-request-id\") ??\n undefined,\n );\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n if (streaming && !terminal) throw fail();\n controller.close();\n reader.releaseLock();\n return;\n }\n total += value.byteLength;\n if (total > 8 * 1024 * 1024) throw fail();\n if (streaming) {\n pending = (pending + decoder.decode(value, { stream: true })).replace(/\\r\\n/g, \"\\n\");\n let boundary: number;\n while ((boundary = pending.indexOf(\"\\n\\n\")) >= 0) {\n const frame = pending.slice(0, boundary);\n pending = pending.slice(boundary + 2);\n if (new TextEncoder().encode(frame).length > 1024 * 1024) throw fail();\n const data = frame\n .split(\"\\n\")\n .filter((line) => line.startsWith(\"data:\"))\n .map((line) => line.slice(5).trimStart())\n .join(\"\\n\");\n if (data === \"[DONE]\") terminal = true;\n else if (data) {\n const chunk = JSON.parse(data);\n if (typeof chunk.id === \"string\" && typeof chunk.model === \"string\") {\n if (identity && (chunk.id !== identity.id || chunk.model !== identity.model))\n throw fail();\n identity = { id: chunk.id, model: chunk.model };\n }\n }\n }\n if (new TextEncoder().encode(pending).length > 1024 * 1024) throw fail();\n }\n controller.enqueue(value);\n } catch {\n await reader.cancel().catch(() => {});\n controller.error(fail());\n }\n },\n async cancel(reason) {\n await reader.cancel(reason);\n },\n });\n return new Response(body, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n}\n"],"mappings":";;;;;;;;;AACA;AAAA,EACE;AAAA,OAEK;AACP,SAAS,SAAS;;;ACDX,SAAS,0BAA0B,UAA8B;AACtE,MAAI,CAAC,SAAS,KAAM,QAAO;AAC3B,QAAM,YAAY,SAAS,QAAQ,IAAI,cAAc,GAAG,SAAS,mBAAmB,KAAK;AACzF,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,QAAQ,GACV,UAAU,IACV,WAAW;AACb,MAAI;AACJ,QAAM,OAAO,MACX,IAAI;AAAA,IACF,YAAY,6BAA6B;AAAA,IACzC,SAAS;AAAA,IACT;AAAA,IACA,SAAS,QAAQ,IAAI,uBAAuB,KAC1C,SAAS,QAAQ,IAAI,cAAc,KACnC;AAAA,EACJ;AACF,QAAM,OAAO,IAAI,eAA2B;AAAA,IAC1C,MAAM,KAAK,YAAY;AACrB,UAAI;AACF,cAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,YAAI,MAAM;AACR,cAAI,aAAa,CAAC,SAAU,OAAM,KAAK;AACvC,qBAAW,MAAM;AACjB,iBAAO,YAAY;AACnB;AAAA,QACF;AACA,iBAAS,MAAM;AACf,YAAI,QAAQ,IAAI,OAAO,KAAM,OAAM,KAAK;AACxC,YAAI,WAAW;AACb,qBAAW,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC,GAAG,QAAQ,SAAS,IAAI;AACnF,cAAI;AACJ,kBAAQ,WAAW,QAAQ,QAAQ,MAAM,MAAM,GAAG;AAChD,kBAAM,QAAQ,QAAQ,MAAM,GAAG,QAAQ;AACvC,sBAAU,QAAQ,MAAM,WAAW,CAAC;AACpC,gBAAI,IAAI,YAAY,EAAE,OAAO,KAAK,EAAE,SAAS,OAAO,KAAM,OAAM,KAAK;AACrE,kBAAM,OAAO,MACV,MAAM,IAAI,EACV,OAAO,CAAC,SAAS,KAAK,WAAW,OAAO,CAAC,EACzC,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,UAAU,CAAC,EACvC,KAAK,IAAI;AACZ,gBAAI,SAAS,SAAU,YAAW;AAAA,qBACzB,MAAM;AACb,oBAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,kBAAI,OAAO,MAAM,OAAO,YAAY,OAAO,MAAM,UAAU,UAAU;AACnE,oBAAI,aAAa,MAAM,OAAO,SAAS,MAAM,MAAM,UAAU,SAAS;AACpE,wBAAM,KAAK;AACb,2BAAW,EAAE,IAAI,MAAM,IAAI,OAAO,MAAM,MAAM;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AACA,cAAI,IAAI,YAAY,EAAE,OAAO,OAAO,EAAE,SAAS,OAAO,KAAM,OAAM,KAAK;AAAA,QACzE;AACA,mBAAW,QAAQ,KAAK;AAAA,MAC1B,QAAQ;AACN,cAAM,OAAO,OAAO,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AACpC,mBAAW,MAAM,KAAK,CAAC;AAAA,MACzB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,QAAQ;AACnB,YAAM,OAAO,OAAO,MAAM;AAAA,IAC5B;AAAA,EACF,CAAC;AACD,SAAO,IAAI,SAAS,MAAM;AAAA,IACxB,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS;AAAA,IACrB,SAAS,SAAS;AAAA,EACpB,CAAC;AACH;;;ADhEA,IAAM,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY;AACpF,SAAS,SAAS,KAAc;AAC9B,QAAM,QAAQ,SAAS,UAAU,GAAG;AACpC,SAAO,MAAM,UAAU,EAAE,UAAU,MAAM,KAAK,SAAS,IAAI;AAC7D;AAGO,SAAS,UACd,OAIA;AACA,QAAM,aAAa,MAAM,mBAAmB;AAC5C,QAAM,WAAW,uBAAuB;AAAA,IACtC,MAAM;AAAA,IACN,SAAS,qBAAqB,WAAW,OAAQ;AAAA,IACjD,QAAQ,WAAW;AAAA;AAAA;AAAA,IAGnB,cAAc;AAAA,IACd,SAAS,WAAW,SAAS,EAAE,sBAAsB,WAAW,OAAO,IAAI;AAAA,IAC3E,sBAAsB,CAAC,QAAQ;AAC7B,YAAM,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,CAAC;AAC3C,UAAI,KAAK,UAAU,MAAM;AACvB,cAAM,IAAI,kBAAkB,4BAA4B,GAAG,KAAK;AAClE,YAAM,UAAU,oBAAI,IAAI;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,UAAI,OAAO,KAAK,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;AACnD,cAAM,IAAI,kBAAkB,yBAAyB,GAAG,KAAK;AAC/D,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,gBAAgB,EAAE,WAAW,GAAG;AACpC,eAAO,SAAS,UAAU;AAAA,MAC5B;AAAA,MACA,wBAAwB;AACtB,YAAI;AACJ,eAAO;AAAA,UACL,aAAa,OAAO;AAClB,uBAAW,SAAS,KAAK,KAAK;AAAA,UAChC;AAAA,UACA,gBAAgB;AACd,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,2BAA2B,MAAM,aAAa;AAAA,IAC9C,OAAO,OAAO,KAAK,SAAS;AAC1B,YAAM,UAAU,YAAY,QAAQ,WAAW,aAAa,GAAM;AAClE,YAAM,UAAU,IAAI,QAAQ,MAAM,OAAO;AACzC,cAAQ,IAAI,iBAAiB,UAAU,WAAW,MAAM,EAAE;AAC1D,UAAI,WAAW,OAAQ,SAAQ,IAAI,sBAAsB,WAAW,MAAM;AAC1E,aAAO;AAAA,QACL,OAAO,WAAW,SAAS,OAAO,KAAK;AAAA,UACrC,GAAG;AAAA,UACH,UAAU;AAAA,UACV;AAAA,UACA,QAAQ,MAAM,SAAS,YAAY,IAAI,CAAC,KAAK,QAAQ,OAAO,CAAC,IAAI;AAAA,QACnE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC,EAAE,UAAU,MAAM,EAAE;AACrB,QAAM,QAAQ,CAAC,YAAuD;AACpE,UAAM,aAAa,QAAQ,iBAAiB;AAC5C,QAAI,cAAc,CAAC,UAAU,gBAAgB,EAAE,KAAK,CAAC,QAAQ,OAAO,UAAU;AAC5E,YAAM,IAAI,kBAAkB,gCAAgC,GAAG,KAAK;AACtE,QAAI,QAAQ,OAAO,UAAU,CAAC,MAAM,aAAa;AAC/C,YAAM,IAAI,kBAAkB,qBAAqB,GAAG,KAAK;AAC3D,QAAI,QAAQ,gBAAgB,SAAS;AACnC,YAAM,IAAI,kBAAkB,iCAAiC,GAAG,KAAK;AACvE,QACE,QAAQ,OAAO;AAAA,MACb,CAAC,YACE,QAAQ,SAAS,UAAU,CAAC,MAAM,aAAa,SAC/C,QAAQ,SAAS,YAChB,QAAQ,QAAQ;AAAA,QACd,CAAC,SACC,KAAK,SAAS,UACd,EAAE,MAAM,aAAa,SAAS,CAAC,aAAa,aAAa,EAAE,SAAS,KAAK,IAAI;AAAA,MACjF;AAAA,IACN;AAEA,YAAM,IAAI,kBAAkB,gCAAgC,GAAG,KAAK;AAAA,EACxE;AAGA,QAAM,iBAAiB,CAAC,UAAsC;AAC5D,QAAI,iBAAiB,kBAAmB,QAAO;AAC/C,QACE,SACA,OAAO,UAAU,YACjB,WAAW,SACX,MAAM,iBAAiB;AAEvB,aAAO,MAAM;AACf,UAAM,SACJ,SACA,OAAO,UAAU,YACjB,gBAAgB,SAChB,OAAO,MAAM,eAAe,WACxB,MAAM,aACN;AACN,UAAM,UACJ,WAAW,KAAK,WAAW,OAAO,UAAU,OAAQ,UAAU,OAAO,SAAS;AAChF,WAAO,IAAI;AAAA,MACT,UAAU,MAAM,2BAA2B;AAAA,MAC3C;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,sBAAsB,SAAS;AAAA,IAC/B,UAAU,SAAS;AAAA,IACnB,SAAS,SAAS;AAAA,IAClB,eAAe,SAAS;AAAA,IACxB,MAAM,WAAW,SAAoD;AACnE,YAAM,OAAO;AACb,UAAI;AACF,eAAO,MAAM,SAAS,WAAW,OAAO;AAAA,MAC1C,SAAS,OAAO;AACd,cAAM,eAAe,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,MAAM,SAAS,SAAkD;AAC/D,YAAM,OAAO;AACb,UAAI,CAAC,MAAM,aAAa;AACtB,cAAM,IAAI,kBAAkB,yBAAyB,GAAG,KAAK;AAC/D,UAAI;AACF,cAAM,SAAS,MAAM,SAAS,SAAS,OAAO;AAC9C,cAAM,SAAS,OAAO,OAAO,UAAU;AACvC,eAAO;AAAA,UACL,GAAG;AAAA,UACH,QAAQ,IAAI,eAAe;AAAA,YACzB,MAAM,KAAK,YAAY;AACrB,kBAAI;AACF,sBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,oBAAI,MAAM;AACR,6BAAW,MAAM;AACjB,yBAAO,YAAY;AAAA,gBACrB;AACE,6BAAW;AAAA,oBACT,MAAM,SAAS,UACX,EAAE,GAAG,OAAO,OAAO,eAAe,MAAM,KAAK,EAAE,IAC/C;AAAA,kBACN;AAAA,cACJ,SAAS,OAAO;AACd,2BAAW,MAAM,eAAe,KAAK,CAAC;AAAA,cACxC;AAAA,YACF;AAAA,YACA,MAAM,OAAO,QAAQ;AACnB,oBAAM,OAAO,OAAO,MAAM;AAAA,YAC5B;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,OAAO;AACd,cAAM,eAAe,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -5,15 +5,16 @@ import {
5
5
  CandidateEvaluationPreparationSchema,
6
6
  CandidateEvaluationRequestSchema,
7
7
  createCandidateEvaluationClient
8
- } from "./chunk-3VUF5H3B.js";
9
- import "./chunk-ZQFROKKS.js";
10
- import "./chunk-GS5HEE4M.js";
11
- import "./chunk-ZRTNR4U7.js";
12
- import "./chunk-JMFYNIYZ.js";
13
- import "./chunk-MVAEE5EI.js";
8
+ } from "./chunk-AMZ2SWHR.js";
9
+ import "./chunk-2U6BQ5C4.js";
10
+ import "./chunk-4REK5TTE.js";
11
+ import "./chunk-XWUTYFOU.js";
12
+ import "./chunk-CAOMKM55.js";
13
+ import "./chunk-H5KHLBC5.js";
14
14
  import "./chunk-CL3IOOVL.js";
15
15
  import "./chunk-B3ZHJ2KK.js";
16
16
  import "./chunk-H3JZ3P5T.js";
17
+ import "./chunk-QYWPNNP3.js";
17
18
  import "./chunk-YLJ4XMA6.js";
18
19
  export {
19
20
  CandidateEvaluationControlSchema,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ExperimentGraderSelectionSchema
3
- } from "./chunk-GS5HEE4M.js";
3
+ } from "./chunk-4REK5TTE.js";
4
4
  import {
5
5
  ModelTasksetRunRequestSchema
6
- } from "./chunk-ZRTNR4U7.js";
6
+ } from "./chunk-XWUTYFOU.js";
7
7
 
8
8
  // src/experiment-run-contracts.ts
9
9
  import { z } from "zod";
@@ -28,4 +28,4 @@ var RunExperimentSchema = z.object({
28
28
  export {
29
29
  RunExperimentSchema
30
30
  };
31
- //# sourceMappingURL=chunk-ZQFROKKS.js.map
31
+ //# sourceMappingURL=chunk-2U6BQ5C4.js.map
@@ -4,7 +4,7 @@ import {
4
4
  publishTasksetDraft,
5
5
  renderTasksetDraftManifests,
6
6
  validateTasksetDraftWorkspace
7
- } from "./chunk-Q4RGCEOI.js";
7
+ } from "./chunk-JINWKUKR.js";
8
8
  import {
9
9
  materializePortableTasksetRelease,
10
10
  portableTasksetEnvironment,
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  TasksetSchema,
15
15
  computeTasksetHash
16
- } from "./chunk-GCUWJUUM.js";
16
+ } from "./chunk-4A4FNG4R.js";
17
17
  import {
18
18
  MAX_TASKSET_PACKAGE_BYTES,
19
19
  ModelStarterExecutionSchema,
@@ -32,7 +32,7 @@ import {
32
32
  resolveTasksetPackageInstructions,
33
33
  structuredSamplingSchemaDeclaration,
34
34
  validateTasksetPackage
35
- } from "./chunk-ZQ6QTYRE.js";
35
+ } from "./chunk-AQV7RQZH.js";
36
36
  import {
37
37
  ModelTasksetAuthoringOwnerSchema,
38
38
  ModelTasksetDraftPreparationSchema,
@@ -471,4 +471,4 @@ export {
471
471
  compileTasksetDraftWorkspace,
472
472
  compileModelTasksetDraftWorkspace
473
473
  };
474
- //# sourceMappingURL=chunk-BNBPKCIR.js.map
474
+ //# sourceMappingURL=chunk-3BILL33A.js.map
@@ -1,13 +1,16 @@
1
1
  import {
2
2
  fetchConnectedJson
3
3
  } from "./chunk-O6FKHAWN.js";
4
+ import {
5
+ DEFAULT_API_BASE_URL
6
+ } from "./chunk-QYWPNNP3.js";
4
7
 
5
8
  // src/evaluation-coordination-http.ts
6
9
  import { z } from "zod";
7
10
  var EvaluationCoordinationTransport = class {
8
11
  constructor(access) {
9
12
  this.access = access;
10
- const url = new URL(access.baseUrl);
13
+ const url = new URL(access.baseUrl ?? DEFAULT_API_BASE_URL);
11
14
  if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !access.apiKey.trim() || !access.actorId.trim() || !access.teamId.trim()) throw new Error("Select the current evaluation owner and HTTP API origin.");
12
15
  this.origin = url.toString().replace(/\/+$/, "");
13
16
  }
@@ -34,4 +37,4 @@ var EvaluationCoordinationTransport = class {
34
37
  export {
35
38
  EvaluationCoordinationTransport
36
39
  };
37
- //# sourceMappingURL=chunk-3B5KSH3V.js.map
40
+ //# sourceMappingURL=chunk-456F3BXD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/evaluation-coordination-http.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport {z} from \"zod\";\nimport {fetchConnectedJson} from \"./connected-evidence-http.js\";\nexport type EvaluationCoordinationAccess={baseUrl?:string;apiKey:string;actorId:string;teamId:string;projectId:string|null;fetch?:typeof fetch};\n/** Bounded authenticated transport for the current evaluation owner. There is\n * no retry or operation allocation here; commands retain their reviewed IDs. */\nexport class EvaluationCoordinationTransport {\n readonly origin:string;\n constructor(readonly access:EvaluationCoordinationAccess){\n const url=new URL(access.baseUrl ?? DEFAULT_API_BASE_URL);\n if(![\"http:\",\"https:\"].includes(url.protocol)||url.username||url.password||url.search||url.hash||!access.apiKey.trim()||!access.actorId.trim()||!access.teamId.trim())throw new Error(\"Select the current evaluation owner and HTTP API origin.\");\n this.origin=url.toString().replace(/\\/+$/,\"\");\n }\n async post(path:\"experiment-evaluation-schedules\"|\"advanced-refiner-evaluations\",request:unknown,signal?:AbortSignal){\n const body=JSON.stringify({teamId:this.access.teamId,projectId:this.access.projectId,request});\n if(new TextEncoder().encode(body).byteLength>1_048_576)throw new Error(\"The reviewed evaluation command exceeds 1 MiB.\");\n const {response,value}=await fetchConnectedJson(this.access.fetch??fetch,`${this.origin}/v1/${path}`,{\n method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.access.apiKey}`,\"X-OpenPond-Team-Id\":this.access.teamId,\"Content-Type\":\"application/json\"},body,signal,\n },(status,code,message)=>Object.assign(new Error(message),{status,code}));\n if(!response.ok){const error=z.object({error:z.string().optional(),message:z.string().optional(),code:z.string().optional()}).passthrough().safeParse(value);throw Object.assign(new Error(error.success?error.data.error??error.data.message??\"Evaluation operation failed.\":\"Evaluation operation failed.\"),{status:response.status,code:error.success?error.data.code:undefined});}\n return value;\n }\n}\n"],"mappings":";;;;;;;;AACA,SAAQ,SAAQ;AAKT,IAAM,kCAAN,MAAsC;AAAA,EAE3C,YAAqB,QAAoC;AAApC;AACnB,UAAM,MAAI,IAAI,IAAI,OAAO,WAAW,oBAAoB;AACxD,QAAG,CAAC,CAAC,SAAQ,QAAQ,EAAE,SAAS,IAAI,QAAQ,KAAG,IAAI,YAAU,IAAI,YAAU,IAAI,UAAQ,IAAI,QAAM,CAAC,OAAO,OAAO,KAAK,KAAG,CAAC,OAAO,QAAQ,KAAK,KAAG,CAAC,OAAO,OAAO,KAAK,EAAE,OAAM,IAAI,MAAM,0DAA0D;AAChP,SAAK,SAAO,IAAI,SAAS,EAAE,QAAQ,QAAO,EAAE;AAAA,EAC9C;AAAA,EAJqB;AAAA,EADZ;AAAA,EAMT,MAAM,KAAK,MAAsE,SAAgB,QAAoB;AACnH,UAAM,OAAK,KAAK,UAAU,EAAC,QAAO,KAAK,OAAO,QAAO,WAAU,KAAK,OAAO,WAAU,QAAO,CAAC;AAC7F,QAAG,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE,aAAW,QAAU,OAAM,IAAI,MAAM,gDAAgD;AACvH,UAAM,EAAC,UAAS,MAAK,IAAE,MAAM,mBAAmB,KAAK,OAAO,SAAO,OAAM,GAAG,KAAK,MAAM,OAAO,IAAI,IAAG;AAAA,MACnG,QAAO;AAAA,MAAO,UAAS;AAAA,MAAQ,SAAQ,EAAC,eAAc,UAAU,KAAK,OAAO,MAAM,IAAG,sBAAqB,KAAK,OAAO,QAAO,gBAAe,mBAAkB;AAAA,MAAE;AAAA,MAAK;AAAA,IACvK,GAAE,CAAC,QAAO,MAAK,YAAU,OAAO,OAAO,IAAI,MAAM,OAAO,GAAE,EAAC,QAAO,KAAI,CAAC,CAAC;AACxE,QAAG,CAAC,SAAS,IAAG;AAAC,YAAM,QAAM,EAAE,OAAO,EAAC,OAAM,EAAE,OAAO,EAAE,SAAS,GAAE,SAAQ,EAAE,OAAO,EAAE,SAAS,GAAE,MAAK,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,EAAE,YAAY,EAAE,UAAU,KAAK;AAAE,YAAM,OAAO,OAAO,IAAI,MAAM,MAAM,UAAQ,MAAM,KAAK,SAAO,MAAM,KAAK,WAAS,iCAA+B,8BAA8B,GAAE,EAAC,QAAO,SAAS,QAAO,MAAK,MAAM,UAAQ,MAAM,KAAK,OAAK,OAAS,CAAC;AAAA,IAAE;AACrX,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -11,7 +11,7 @@ import {
11
11
  TasksetPreferenceComparisonBindingSchema,
12
12
  TasksetPurposeSchema,
13
13
  TasksetSourceRefSchema
14
- } from "./chunk-ZQ6QTYRE.js";
14
+ } from "./chunk-AQV7RQZH.js";
15
15
  import {
16
16
  ModelTasksetDraftPreparationSchema
17
17
  } from "./chunk-TK3DXH7A.js";
@@ -910,4 +910,4 @@ export {
910
910
  computeTasksetHash,
911
911
  validatePortability
912
912
  };
913
- //# sourceMappingURL=chunk-GCUWJUUM.js.map
913
+ //# sourceMappingURL=chunk-4A4FNG4R.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createTrainingRequest
3
- } from "./chunk-GX6KMHW2.js";
3
+ } from "./chunk-QKLZZOZD.js";
4
4
  import {
5
5
  OpenPondProtocolError
6
6
  } from "./chunk-B3ZHJ2KK.js";
@@ -158,4 +158,4 @@ export {
158
158
  createTrainingHardwareClient,
159
159
  createHardwareObservationClient
160
160
  };
161
- //# sourceMappingURL=chunk-EZME7DV4.js.map
161
+ //# sourceMappingURL=chunk-4CDLPMJK.js.map
@@ -9,16 +9,16 @@ import {
9
9
  } from "./chunk-GPQLBVQC.js";
10
10
  import {
11
11
  AuthoredTasksetFileInventorySchema
12
- } from "./chunk-BNBPKCIR.js";
12
+ } from "./chunk-3BILL33A.js";
13
13
  import {
14
14
  configuredTasksetDraftFiles,
15
15
  createTasksetDraftWorkspace,
16
16
  decodeTasksetDraftWorkspaceFile,
17
17
  isManagedTasksetDraftFilePath
18
- } from "./chunk-Q4RGCEOI.js";
18
+ } from "./chunk-JINWKUKR.js";
19
19
  import {
20
20
  TasksetDraftSchema
21
- } from "./chunk-GCUWJUUM.js";
21
+ } from "./chunk-4A4FNG4R.js";
22
22
  import {
23
23
  compileModelTasksetReward,
24
24
  createTasksetPackage,
@@ -26,7 +26,7 @@ import {
26
26
  resolveTasksetPackageExecution,
27
27
  resolveTasksetPackageInstructions,
28
28
  validateTasksetPackage
29
- } from "./chunk-ZQ6QTYRE.js";
29
+ } from "./chunk-AQV7RQZH.js";
30
30
  import {
31
31
  ModelTasksetDraftPreparationSchema,
32
32
  TasksetDraftFilePathSchema
@@ -698,4 +698,4 @@ export {
698
698
  prepareTasksetDraftSource,
699
699
  materializeTasksetDraftWorkspace
700
700
  };
701
- //# sourceMappingURL=chunk-SP7DQEQM.js.map
701
+ //# sourceMappingURL=chunk-4CRLQMJ2.js.map
@@ -10,7 +10,7 @@ import {
10
10
  ExperimentImprovementTestRecipeSchema,
11
11
  verifyExperimentImprovementHumanOptions,
12
12
  verifyExperimentImprovementState
13
- } from "./chunk-QNOCM5JX.js";
13
+ } from "./chunk-D26RJQU7.js";
14
14
  import {
15
15
  fetchConnectedJson
16
16
  } from "./chunk-O6FKHAWN.js";
@@ -19,6 +19,9 @@ import {
19
19
  contentHash,
20
20
  sha256
21
21
  } from "./chunk-H3JZ3P5T.js";
22
+ import {
23
+ DEFAULT_API_BASE_URL
24
+ } from "./chunk-QYWPNNP3.js";
22
25
 
23
26
  // src/experiment-improvement-client.ts
24
27
  import { z as z2 } from "zod";
@@ -97,7 +100,7 @@ var HostedProfileCandidateCommandSchema = z.discriminatedUnion("operation", [
97
100
  var ExperimentImprovementClient = class {
98
101
  constructor(options) {
99
102
  this.options = options;
100
- const url = new URL(options.baseUrl);
103
+ const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
101
104
  if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.hash || url.search || !options.apiKey.trim() || !options.teamId.trim() || !options.actorId.trim()) throw new Error("Select the authenticated Improve owner and API origin.");
102
105
  this.origin = url.toString().replace(/\/+$/, "");
103
106
  }
@@ -157,4 +160,4 @@ export {
157
160
  HostedProfileCandidateCommandSchema,
158
161
  ExperimentImprovementClient
159
162
  };
160
- //# sourceMappingURL=chunk-QOX57Y27.js.map
163
+ //# sourceMappingURL=chunk-4PEK3YOW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/experiment-improvement-client.ts","../src/experiment-improvement-hosted-adoption.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport {z} from \"zod\";\nimport {contentHash,sha256} from \"@openpond/harness\";\nimport {verifyExperimentImprovementHumanOptions,ExperimentImprovementListSchema,ExperimentImprovementOptionsSchema,ExperimentImprovementCommandSchema,verifyExperimentImprovementState,type ExperimentImprovementCommand} from \"./experiment-improvement-contracts.js\";\nimport {HostedProfileCandidateCommandSchema,verifyHostedProfileCandidateReceipt} from \"./experiment-improvement-hosted-adoption.js\";\nimport {fetchConnectedJson} from \"./connected-evidence-http.js\";\nexport class ExperimentImprovementClient {\n private readonly origin:string;\n constructor(private readonly options:{baseUrl?:string;apiKey:string;teamId:string;actorId:string;fetch?:typeof fetch}){const url=new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);if(![\"http:\",\"https:\"].includes(url.protocol)||url.username||url.password||url.hash||url.search||!options.apiKey.trim()||!options.teamId.trim()||!options.actorId.trim())throw new Error(\"Select the authenticated Improve owner and API origin.\");this.origin=url.toString().replace(/\\/+$/,\"\");}\n async hostedCandidate(raw:import(\"zod\").input<typeof HostedProfileCandidateCommandSchema>,signal?:AbortSignal){const request=HostedProfileCandidateCommandSchema.parse(raw);if(request.operation===\"adopt\"&&(request.export.actorId!==this.options.actorId||request.export.teamId!==this.options.teamId))throw new Error(\"The hosted candidate export belongs to a different owner.\");const {response,value}=await fetchConnectedJson(this.options.fetch??fetch,`${this.origin}/v1/profile-candidate-adoptions`,{method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.options.apiKey}`,\"Content-Type\":\"application/json\",\"X-OpenPond-Team-Id\":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,command:request}),signal},(status,code,message)=>Object.assign(new Error(message),{status,code}));if(!response.ok){const error=z.object({code:z.string(),message:z.string().optional(),error:z.string().optional()}).passthrough().safeParse(value);throw Object.assign(new Error(error.success?error.data.message??error.data.error??error.data.code:\"Hosted candidate operation failed.\"),{status:response.status,code:error.success?error.data.code:undefined});}const receipt=verifyHostedProfileCandidateReceipt(value);if(receipt.actorId!==this.options.actorId||receipt.teamId!==this.options.teamId||receipt.operationId!==request.operationId||request.operation===\"adopt\"&&(receipt.exportHash!==request.export.contentHash||receipt.candidateId!==request.export.candidateId||receipt.testedCandidateRelease.contentHash!==request.export.policySource.harnessRelease.contentHash))throw new Error(\"Hosted candidate readback differs from the exact owner request.\");return receipt;}\n async command(raw:ExperimentImprovementCommand,signal?:AbortSignal){const request=ExperimentImprovementCommandSchema.parse(raw),{response,value}=await fetchConnectedJson(this.options.fetch??fetch,`${this.origin}/v1/experiment-improvements`,{method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.options.apiKey}`,\"Content-Type\":\"application/json\",\"X-OpenPond-Team-Id\":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,request}),signal},(status,code,message)=>Object.assign(new Error(message),{status,code}));\n if(!response.ok){const error=z.object({error:z.string(),code:z.string().optional()}).passthrough().safeParse(value);throw Object.assign(new Error(error.success?error.data.error:\"The Improve operation failed.\"),{status:response.status,code:error.success?error.data.code:undefined});}\n if(request.operation===\"options\"){const result=ExperimentImprovementOptionsSchema.parse(value);if(result.teamId!==this.options.teamId||contentHash(result.evidence)!==contentHash(request.evidence))throw new Error(\"The Improve choices changed their exact originating evidence.\");return result;}\n if(request.operation===\"humanComparisonOptions\"){const result=verifyExperimentImprovementHumanOptions(value);if(result.candidateId!==request.id||result.actorId!==this.options.actorId||result.teamId!==this.options.teamId)throw new Error(\"Human discovery belongs to another owner or candidate.\");return result;}\n if(request.operation===\"instructions\"){const result=z.object({candidateId:z.string(),candidateRevision:z.number().int().positive(),path:z.string(),text:z.string().max(250000),textHash:z.string().regex(/^[a-f0-9]{64}$/),contentHash:z.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(value);if(result.candidateId!==request.id||sha256(result.text)!==result.textHash)throw new Error(\"The candidate instructions belong to a different revision.\");return result;}\n const page=request.operation===\"list\"?ExperimentImprovementListSchema.parse(value):null;if(request.operation===\"list\"&&page&&(page.states.length>request.limit||page.states.some((state,index)=>request.cursor&&state.id<=request.cursor||index>0&&state.id<=page.states[index-1]!.id)||page.nextCursor&&(request.cursor&&page.nextCursor<=request.cursor||page.states.some(state=>state.id>page.nextCursor!))))throw new Error(\"The retained candidate page changed its scan boundary.\");\n const states=page? page.states:[value];const parsed=states.map(item=>{const state=verifyExperimentImprovementState(item);if(state.actorId!==this.options.actorId||state.teamId!==this.options.teamId||\"id\" in request&&state.id!==request.id)throw new Error(\"The Improve response belongs to a different owner or candidate.\");if(request.operation===\"start\"&&state.requestHash!==contentHash(request.request))throw new Error(\"The Improve request identity changed.\");return state;});return page?{states:parsed,nextCursor:page.nextCursor}:parsed[0]!;\n }\n}\n","import {z} from \"zod\";\nimport {contentHash,ImmutableReleaseRefSchema,HarnessPolicySourcePackageSchema,validateHarnessPolicySourcePackage} from \"@openpond/harness\";\nimport {ExperimentImprovementTestRecipeSchema,ExperimentImprovementStateSchema} from \"./experiment-improvement-contracts.js\";\nconst Id=z.string().min(1).max(240),Hash=z.string().regex(/^[a-f0-9]{64}$/),Commit=z.string().regex(/^[a-f0-9]{40}$/);\n/** This export attests native owner execution. It never asserts a hosted run,\n * grants training eligibility, or authorizes automatic candidate adoption. */\nexport const HostedProfileCandidateExportSchema=z.object({schemaVersion:z.literal(\"openpond.hostedProfileCandidateExport.v1\"),\n actorId:Id,teamId:Id,candidateId:Id,candidateRevision:z.number().int().positive(),projectId:Id.nullable(),\n profileRef:z.object({source:z.literal(\"openpond_git\"),repositoryId:Id,profileId:Id}).strict(),expectedCommit:Commit,\n component:ExperimentImprovementStateSchema.shape.component,baseRelease:ImmutableReleaseRefSchema,\n frozenHash:Hash,executableSourceHash:Hash,protectedClosureHash:Hash,\n compiler:z.object({workspaceId:Id,name:z.string().max(500),repositoryId:Id}).strict(),\n sourceManifest:z.object({base64:z.string().max(2_800_000),contentHash:Hash,sizeBytes:z.number().int().positive().max(2_000_000)}).strict(),\n policySource:HarnessPolicySourcePackageSchema,\n qualification:z.object({kind:z.enum([\"owner_attested_local\",\"hosted_execution\"]),ownerActorId:Id,teamId:Id,originalEvidence:ImmutableReleaseRefSchema,\n baseline:ImmutableReleaseRefSchema,candidate:ImmutableReleaseRefSchema,comparisonHash:Hash,recipe:ExperimentImprovementTestRecipeSchema}).strict(),\n createdAt:z.string().datetime(),contentHash:Hash}).strict();\nexport type HostedProfileCandidateExport=z.infer<typeof HostedProfileCandidateExportSchema>;\nexport function verifyHostedProfileCandidateExport(raw:unknown){const value=HostedProfileCandidateExportSchema.parse(raw),{contentHash:hash,...body}=value;\n if(contentHash(body)!==hash||value.qualification.ownerActorId!==value.actorId||value.qualification.teamId!==value.teamId||value.qualification.recipe.externalDatasetBinding.profileId!==value.profileRef.profileId||value.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash!==value.protectedClosureHash)throw new Error(\"Hosted candidate owner attestation identity differs.\");\n validateHarnessPolicySourcePackage(value.policySource);return value;\n}\nexport const HostedProfileCandidateReceiptSchema=z.object({schemaVersion:z.literal(\"openpond.hostedProfileCandidateAdoption.v1\"),id:Id,operationId:Id,actorId:Id,teamId:Id,\n candidateId:Id,exportHash:Hash,executionOrigin:z.enum([\"owner_attested_local\",\"hosted_execution\"]),qualification:HostedProfileCandidateExportSchema.shape.qualification,\n testedCandidateRelease:ImmutableReleaseRefSchema,activeRelease:ImmutableReleaseRefSchema,expectedCommit:Commit,committedProfileGit:Commit,\n executableSourceHash:Hash,protectedClosureHash:Hash,createdAt:z.string().datetime(),contentHash:Hash}).strict();\nexport type HostedProfileCandidateReceipt=z.infer<typeof HostedProfileCandidateReceiptSchema>;\nexport function verifyHostedProfileCandidateReceipt(raw:unknown){const value=HostedProfileCandidateReceiptSchema.parse(raw),{contentHash:hash,...body}=value;if(contentHash(body)!==hash||value.executionOrigin!==value.qualification.kind||value.qualification.ownerActorId!==value.actorId||value.qualification.teamId!==value.teamId)throw new Error(\"Hosted candidate receipt integrity differs.\");return value;}\nexport const HostedProfileCandidateCommandSchema=z.discriminatedUnion(\"operation\",[\n z.object({operation:z.literal(\"adopt\"),operationId:Id,export:HostedProfileCandidateExportSchema}).strict(),\n z.object({operation:z.enum([\"read\",\"rollback\"]),operationId:Id,adoptionOperationId:Id,profileRepositoryId:Id}).strict(),\n]);\n"],"mappings":"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","names":["z","z"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HarnessExperimentPolicySchema,
3
3
  ModelTasksetRunRequestSchema
4
- } from "./chunk-ZRTNR4U7.js";
4
+ } from "./chunk-XWUTYFOU.js";
5
5
  import {
6
6
  contentHash
7
7
  } from "./chunk-H3JZ3P5T.js";
@@ -172,4 +172,4 @@ export {
172
172
  verifyExperimentDefinition,
173
173
  experimentDefinitionRef
174
174
  };
175
- //# sourceMappingURL=chunk-GS5HEE4M.js.map
175
+ //# sourceMappingURL=chunk-4REK5TTE.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  TasksetDraftWorkspaceSchema
3
- } from "./chunk-Q4RGCEOI.js";
3
+ } from "./chunk-JINWKUKR.js";
4
4
  import {
5
5
  TasksetCatalogReleaseRefSchema
6
- } from "./chunk-Z252BNAZ.js";
6
+ } from "./chunk-VE5JD5FN.js";
7
7
  import {
8
8
  contentHash
9
9
  } from "./chunk-H3JZ3P5T.js";
@@ -178,4 +178,4 @@ export {
178
178
  ConnectedStartingAssetsReceiptSchema,
179
179
  verifyConnectedStartingAssetsReceipt
180
180
  };
181
- //# sourceMappingURL=chunk-AG6UJ3DI.js.map
181
+ //# sourceMappingURL=chunk-57ROW3XF.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ fetchConnectedJson
3
+ } from "./chunk-O6FKHAWN.js";
1
4
  import {
2
5
  AgentImportCommitRequestSchema,
3
6
  AgentImportPreviewRequestSchema,
@@ -8,14 +11,14 @@ import {
8
11
  ConnectedStartingAssetsRequestSchema,
9
12
  DatasetWorkspaceReceiptSchema,
10
13
  verifyConnectedStartingAssetsReceipt
11
- } from "./chunk-AG6UJ3DI.js";
12
- import {
13
- fetchConnectedJson
14
- } from "./chunk-O6FKHAWN.js";
14
+ } from "./chunk-57ROW3XF.js";
15
15
  import {
16
16
  ImmutableReleaseRefSchema,
17
17
  contentHash
18
18
  } from "./chunk-H3JZ3P5T.js";
19
+ import {
20
+ DEFAULT_API_BASE_URL
21
+ } from "./chunk-QYWPNNP3.js";
19
22
 
20
23
  // src/connected-recorded-execution.ts
21
24
  import { z } from "zod";
@@ -211,7 +214,7 @@ var ConnectedEvidenceError = class extends Error {
211
214
  var ConnectedEvidenceClient = class {
212
215
  constructor(options) {
213
216
  this.options = options;
214
- const url = new URL(options.baseUrl);
217
+ const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
215
218
  if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim())
216
219
  throw new Error("A clean API origin and workspace credentials are required.");
217
220
  this.baseUrl = url.toString().replace(/\/+$/, "");
@@ -469,7 +472,7 @@ var ConnectedSyncCommitSchema = z5.object({
469
472
  var ConnectedSyncClient = class {
470
473
  constructor(options) {
471
474
  this.options = options;
472
- const url = new URL(options.baseUrl);
475
+ const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);
473
476
  if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash)
474
477
  throw new Error("Invalid connected-sync API origin.");
475
478
  }
@@ -583,7 +586,7 @@ var ConnectedSyncClient = class {
583
586
  async request(path, method, body, signal) {
584
587
  const { response, value } = await fetchConnectedJson(
585
588
  this.options.fetch ?? fetch,
586
- `${this.options.baseUrl.replace(/\/+$/u, "")}/v1/connected-evidence/sync/connections${path}`,
589
+ `${(this.options.baseUrl ?? DEFAULT_API_BASE_URL).replace(/\/+$/u, "")}/v1/connected-evidence/sync/connections${path}`,
587
590
  {
588
591
  method,
589
592
  signal,
@@ -650,4 +653,4 @@ export {
650
653
  summarizeCollectorCoverage2 as summarizeCollectorCoverage,
651
654
  hashCollectorEligibleBoundaries
652
655
  };
653
- //# sourceMappingURL=chunk-3BYFS4RO.js.map
656
+ //# sourceMappingURL=chunk-6LVLWRBJ.js.map