openpond-sdk 0.3.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/MODEL_STARTERS.md +26 -0
  2. package/TASKSETS.md +55 -0
  3. package/dist/actions-local.js +67 -118
  4. package/dist/actions-local.js.map +4 -4
  5. package/dist/actions.js +4 -92
  6. package/dist/actions.js.map +4 -4
  7. package/dist/chunk-25TBEGXB.js +220 -0
  8. package/dist/chunk-25TBEGXB.js.map +7 -0
  9. package/dist/chunk-27ETSPHQ.js +83 -0
  10. package/dist/chunk-27ETSPHQ.js.map +7 -0
  11. package/dist/chunk-5PRP457R.js +477 -0
  12. package/dist/chunk-5PRP457R.js.map +7 -0
  13. package/dist/chunk-65D4C7HP.js +273 -0
  14. package/dist/chunk-65D4C7HP.js.map +7 -0
  15. package/dist/chunk-6LGGLXAM.js +2395 -0
  16. package/dist/chunk-6LGGLXAM.js.map +7 -0
  17. package/dist/chunk-747CMU2Y.js +222 -0
  18. package/dist/chunk-747CMU2Y.js.map +7 -0
  19. package/dist/chunk-7O5X7DBU.js +80 -0
  20. package/dist/chunk-7O5X7DBU.js.map +7 -0
  21. package/dist/chunk-A4ZDOZKP.js +115 -0
  22. package/dist/chunk-A4ZDOZKP.js.map +7 -0
  23. package/dist/chunk-APHPXQEA.js +155 -0
  24. package/dist/chunk-APHPXQEA.js.map +7 -0
  25. package/dist/chunk-AVW35YOH.js +574 -0
  26. package/dist/chunk-AVW35YOH.js.map +7 -0
  27. package/dist/chunk-EPJM7VEV.js +177 -0
  28. package/dist/chunk-EPJM7VEV.js.map +7 -0
  29. package/dist/chunk-EV4PKJWN.js +1373 -0
  30. package/dist/chunk-EV4PKJWN.js.map +7 -0
  31. package/dist/chunk-K5ZCYOZO.js +49 -0
  32. package/dist/chunk-K5ZCYOZO.js.map +7 -0
  33. package/dist/chunk-LXXQVGQY.js +1 -0
  34. package/dist/chunk-LXXQVGQY.js.map +7 -0
  35. package/dist/chunk-NF63YMOL.js +593 -0
  36. package/dist/chunk-NF63YMOL.js.map +7 -0
  37. package/dist/chunk-P27DQ65Z.js +138 -0
  38. package/dist/chunk-P27DQ65Z.js.map +7 -0
  39. package/dist/chunk-QLEJOCQX.js +72 -0
  40. package/dist/chunk-QLEJOCQX.js.map +7 -0
  41. package/dist/chunk-S7I45WJQ.js +57 -0
  42. package/dist/chunk-S7I45WJQ.js.map +7 -0
  43. package/dist/index.js +33 -2488
  44. package/dist/index.js.map +4 -4
  45. package/dist/learning.js +16 -2042
  46. package/dist/learning.js.map +4 -4
  47. package/dist/model-batch-review.js +5 -42
  48. package/dist/model-batch-review.js.map +3 -3
  49. package/dist/model-projects.js +29 -430
  50. package/dist/model-projects.js.map +3 -3
  51. package/dist/model-starter-attempts.js +13 -420
  52. package/dist/model-starter-attempts.js.map +4 -4
  53. package/dist/model-starter-catalog.js +17 -460
  54. package/dist/model-starter-catalog.js.map +4 -4
  55. package/dist/model-starters.js +32 -709
  56. package/dist/model-starters.js.map +4 -4
  57. package/dist/model-taskset-authoring.js +11 -44
  58. package/dist/model-taskset-authoring.js.map +3 -3
  59. package/dist/model-taskset-runs.js +196 -0
  60. package/dist/model-taskset-runs.js.map +7 -0
  61. package/dist/profile-actions.js +4 -211
  62. package/dist/profile-actions.js.map +3 -3
  63. package/dist/project-actions.js +4 -224
  64. package/dist/project-actions.js.map +3 -3
  65. package/dist/refiner.js +14 -554
  66. package/dist/refiner.js.map +4 -4
  67. package/dist/taskset-catalog.js +9 -104
  68. package/dist/taskset-catalog.js.map +3 -3
  69. package/dist/taskset-drafts.js +465 -0
  70. package/dist/taskset-drafts.js.map +7 -0
  71. package/dist/taskset-packages.js +946 -3089
  72. package/dist/taskset-packages.js.map +4 -4
  73. package/dist/training.js +43 -822
  74. package/dist/training.js.map +4 -4
  75. package/dist/types/packages/sdk/src/index.d.ts +3 -3
  76. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/learning-client.d.ts +130 -0
  78. package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -0
  79. package/dist/types/packages/sdk/src/learning.d.ts +1 -129
  80. package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
  81. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +568 -0
  82. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -0
  83. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +722 -0
  84. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -0
  85. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +1170 -0
  86. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -0
  87. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +560 -0
  88. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -0
  89. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts +92 -0
  90. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -0
  91. package/dist/types/packages/sdk/src/taskset-authored-tool-environment.d.ts +15 -0
  92. package/dist/types/packages/sdk/src/taskset-authored-tool-environment.d.ts.map +1 -0
  93. package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts +18 -0
  94. package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts.map +1 -0
  95. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +1681 -0
  96. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -0
  97. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts +19 -0
  98. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -0
  99. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +2713 -0
  100. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -0
  101. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +1000 -0
  102. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -0
  103. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +429 -0
  104. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts.map +1 -0
  105. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +284 -0
  106. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts.map +1 -0
  107. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +846 -0
  108. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -0
  109. package/dist/types/packages/sdk/src/taskset-draft-files.d.ts +8 -0
  110. package/dist/types/packages/sdk/src/taskset-draft-files.d.ts.map +1 -0
  111. package/dist/types/packages/sdk/src/taskset-draft-harness-actions.d.ts +28 -0
  112. package/dist/types/packages/sdk/src/taskset-draft-harness-actions.d.ts.map +1 -0
  113. package/dist/types/packages/sdk/src/taskset-draft-manifests.d.ts +8 -0
  114. package/dist/types/packages/sdk/src/taskset-draft-manifests.d.ts.map +1 -0
  115. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +967 -0
  116. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/taskset-draft-publication.d.ts +10 -0
  118. package/dist/types/packages/sdk/src/taskset-draft-publication.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +1297 -0
  120. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +1597 -0
  122. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/taskset-drafts.d.ts +16 -0
  124. package/dist/types/packages/sdk/src/taskset-drafts.d.ts.map +1 -0
  125. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +64 -0
  126. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -0
  127. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1514 -0
  128. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -0
  129. package/dist/types/packages/sdk/src/taskset-packages.d.ts +6 -0
  130. package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
  131. package/dist/workflows.js +4 -221
  132. package/dist/workflows.js.map +3 -3
  133. package/package.json +11 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskset-package-projection.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-package-projection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuF,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAE1J;8EAC8E;AAC9E,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,OAAO,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;CAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEA;AAED,MAAM,MAAM,8BAA8B,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5H,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAErF"}
@@ -3,4 +3,10 @@ export * from "./taskset-package-client.js";
3
3
  export * from "./taskset-package-learning.js";
4
4
  export * from "./model-batch-review.js";
5
5
  export * from "./model-taskset-authoring.js";
6
+ export * from "./taskset-authored-portable-release.js";
7
+ export * from "./taskset-package-projection.js";
8
+ export { learningVerifierModule, projectLearningBatchGraders } from "./taskset-package-grader-projection.js";
9
+ export { AuthoredTasksetFileInventorySchema, prepareAuthoredTasksetSource, isGeneratedTasksetPublicationFilePath } from "./taskset-authored-files.js";
10
+ export { compileModelTasksetDraftWorkspace } from "./taskset-draft-package-compiler.js";
11
+ export { TasksetDraftSourceInitializationSchema, prepareTasksetDraftSource, materializeTasksetDraftWorkspace, type TasksetDraftSourceInitialization } from "./taskset-draft-source.js";
6
12
  //# sourceMappingURL=taskset-packages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"taskset-packages.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-packages.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"taskset-packages.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-packages.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAC7G,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,qCAAqC,EAAE,MAAM,6BAA6B,CAAC;AACtJ,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,sCAAsC,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/workflows.js CHANGED
@@ -1,224 +1,7 @@
1
- // src/workflows.ts
2
- import { randomUUID } from "node:crypto";
3
-
4
- // ../cloud/dist/api/core.js
5
- var DEFAULT_API_TIMEOUT_MS = 3e4;
6
- var DEFAULT_API_RESPONSE_BYTES = 8 * 1024 * 1024;
7
- var LONG_STREAM_API_OPTIONS = { timeoutMs: 15 * 60 * 1e3, maxResponseBytes: 64 * 1024 * 1024 };
8
- var ApiTimeoutError = class extends Error {
9
- timeoutMs;
10
- requestUrl;
11
- code = "OPENPOND_API_TIMEOUT";
12
- constructor(timeoutMs, requestUrl) {
13
- super(`API request timed out after ${timeoutMs}ms: ${requestUrl}`);
14
- this.timeoutMs = timeoutMs;
15
- this.requestUrl = requestUrl;
16
- this.name = "ApiTimeoutError";
17
- }
18
- };
19
- var ApiResponseTooLargeError = class extends Error {
20
- maximumBytes;
21
- requestUrl;
22
- code = "OPENPOND_API_RESPONSE_TOO_LARGE";
23
- constructor(maximumBytes, requestUrl) {
24
- super(`API response exceeded ${maximumBytes} bytes: ${requestUrl}`);
25
- this.maximumBytes = maximumBytes;
26
- this.requestUrl = requestUrl;
27
- this.name = "ApiResponseTooLargeError";
28
- }
29
- };
30
- var OpenPondApiError = class extends Error {
31
- status;
32
- apiMessage;
33
- code;
34
- constructor(status, errorCode, label, apiMessage = null) {
35
- const detail = apiMessage || errorCode;
36
- super(`${label} failed: ${status}${detail ? ` ${detail}` : ""}`);
37
- this.status = status;
38
- this.apiMessage = apiMessage;
39
- this.name = "OpenPondApiError";
40
- this.code = errorCode || "OPENPOND_API_ERROR";
41
- }
42
- };
43
- async function apiFetch(baseUrl, token, requestPath, options = {}) {
44
- const { timeoutMs = DEFAULT_API_TIMEOUT_MS, maxResponseBytes = DEFAULT_API_RESPONSE_BYTES, ...init } = options;
45
- const requestUrl = `${baseUrl}${requestPath}`;
46
- const headers = new Headers(init.headers);
47
- headers.set("Content-Type", "application/json");
48
- const apiKey = process.env.OPENPOND_API_KEY;
49
- const trimmedToken = token?.trim() || "";
50
- const tokenIsApiKey = trimmedToken.startsWith("opk_");
51
- const effectiveApiKey = apiKey || (tokenIsApiKey ? trimmedToken : null);
52
- if (effectiveApiKey && !headers.has("openpond-api-key"))
53
- headers.set("openpond-api-key", effectiveApiKey);
54
- if (token) {
55
- headers.set("Authorization", tokenIsApiKey ? `ApiKey ${trimmedToken}` : `Bearer ${token}`);
56
- } else if (apiKey && !headers.has("Authorization")) {
57
- headers.set("Authorization", `ApiKey ${apiKey}`);
58
- }
59
- const timeoutController = new AbortController();
60
- const timeoutError = new ApiTimeoutError(timeoutMs, requestUrl);
61
- const timer = timeoutMs > 0 ? setTimeout(() => timeoutController.abort(timeoutError), timeoutMs) : null;
62
- timer?.unref?.();
63
- const signal = composedSignal(init.signal, timeoutController.signal, timeoutMs);
64
- const cleanup = () => {
65
- if (timer)
66
- clearTimeout(timer);
67
- };
68
- try {
69
- const response = await fetch(requestUrl, { ...init, headers, signal });
70
- return boundedResponse(response, {
71
- cleanup,
72
- maximumBytes: maxResponseBytes,
73
- requestUrl,
74
- timeoutController,
75
- timeoutError
76
- });
77
- } catch (error) {
78
- cleanup();
79
- if (timeoutController.signal.aborted)
80
- throw timeoutError;
81
- throw error;
82
- }
83
- }
84
- async function readApiJson(response, label) {
85
- let payload;
86
- try {
87
- const text = await response.text();
88
- payload = text ? JSON.parse(text) : {};
89
- } catch (error) {
90
- if (error instanceof ApiTimeoutError || error instanceof ApiResponseTooLargeError)
91
- throw error;
92
- payload = {};
93
- }
94
- if (!response.ok) {
95
- const errorCode = typeof payload.error === "string" ? payload.error : null;
96
- const apiMessage = typeof payload.message === "string" ? payload.message : null;
97
- throw new OpenPondApiError(response.status, errorCode, label, apiMessage);
98
- }
99
- return payload;
100
- }
101
- function boundedResponse(response, input) {
102
- if (!response.body) {
103
- input.cleanup();
104
- return response;
105
- }
106
- const contentLength = Number(response.headers.get("content-length"));
107
- if (input.maximumBytes > 0 && Number.isFinite(contentLength) && contentLength > input.maximumBytes) {
108
- input.cleanup();
109
- void response.body.cancel();
110
- throw new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl);
111
- }
112
- const reader = response.body.getReader();
113
- let receivedBytes = 0;
114
- const body = new ReadableStream({
115
- async pull(controller) {
116
- try {
117
- const result = await reader.read();
118
- if (result.done) {
119
- input.cleanup();
120
- controller.close();
121
- return;
122
- }
123
- receivedBytes += result.value.byteLength;
124
- if (input.maximumBytes > 0 && receivedBytes > input.maximumBytes) {
125
- input.cleanup();
126
- await reader.cancel();
127
- controller.error(new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl));
128
- return;
129
- }
130
- controller.enqueue(result.value);
131
- } catch (error) {
132
- input.cleanup();
133
- controller.error(input.timeoutController.signal.aborted ? input.timeoutError : error);
134
- }
135
- },
136
- async cancel(reason) {
137
- input.cleanup();
138
- await reader.cancel(reason);
139
- }
140
- });
141
- return new Response(body, {
142
- headers: response.headers,
143
- status: response.status,
144
- statusText: response.statusText
145
- });
146
- }
147
- function composedSignal(callerSignal, timeoutSignal, timeoutMs) {
148
- if (timeoutMs <= 0)
149
- return callerSignal ?? void 0;
150
- return callerSignal ? AbortSignal.any([callerSignal, timeoutSignal]) : timeoutSignal;
151
- }
152
-
153
- // src/workflows.ts
154
- var OpenPondWorkflowsClient = class {
155
- #apiKey;
156
- #apiBaseUrl;
157
- constructor(input) {
158
- this.#apiKey = input.apiKey;
159
- this.#apiBaseUrl = input.apiBaseUrl.replace(/\/+$/, "");
160
- }
161
- async list(options = {}) {
162
- return this.#request("", "List Workflows", {
163
- signal: options.signal
164
- });
165
- }
166
- async create(input, options = {}) {
167
- return this.#request("", "Create Workflow", {
168
- method: "POST",
169
- body: JSON.stringify({
170
- ...input,
171
- clientRequestId: input.clientRequestId?.trim() || randomUUID()
172
- }),
173
- signal: options.signal
174
- });
175
- }
176
- async update(scheduleId, input, options = {}) {
177
- return this.#request(
178
- `/schedules/${encodeURIComponent(requiredId(scheduleId, "scheduleId"))}`,
179
- "Update Workflow",
180
- {
181
- method: "PATCH",
182
- body: JSON.stringify(input),
183
- signal: options.signal
184
- }
185
- );
186
- }
187
- async delete(scheduleId, options = {}) {
188
- return this.#request(
189
- `/schedules/${encodeURIComponent(requiredId(scheduleId, "scheduleId"))}`,
190
- "Delete Workflow",
191
- { method: "DELETE", signal: options.signal }
192
- );
193
- }
194
- async runNow(scheduleId, input = {}, options = {}) {
195
- return this.#request(
196
- `/schedules/${encodeURIComponent(requiredId(scheduleId, "scheduleId"))}/run`,
197
- "Run Workflow",
198
- {
199
- method: "POST",
200
- body: JSON.stringify({
201
- clientRequestId: input.clientRequestId?.trim() || randomUUID()
202
- }),
203
- signal: options.signal
204
- }
205
- );
206
- }
207
- async #request(suffix, label, options = {}) {
208
- const response = await apiFetch(
209
- this.#apiBaseUrl,
210
- this.#apiKey,
211
- `/v1/saved-work${suffix}`,
212
- options
213
- );
214
- return readApiJson(response, label);
215
- }
216
- };
217
- function requiredId(value, label) {
218
- const normalized = value.trim();
219
- if (!normalized) throw new Error(`${label} is required`);
220
- return normalized;
221
- }
1
+ import {
2
+ OpenPondWorkflowsClient
3
+ } from "./chunk-7O5X7DBU.js";
4
+ import "./chunk-APHPXQEA.js";
222
5
  export {
223
6
  OpenPondWorkflowsClient
224
7
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/workflows.ts", "../../cloud/src/api/core.ts"],
4
- "sourcesContent": ["import { randomUUID } from \"node:crypto\";\n\nimport { apiFetch, readApiJson } from \"@openpond/cloud/api/core\";\n\nexport type OpenPondWorkflowWeekday =\n | \"sunday\"\n | \"monday\"\n | \"tuesday\"\n | \"wednesday\"\n | \"thursday\"\n | \"friday\"\n | \"saturday\";\n\nexport type OpenPondWorkflowRecurrence = {\n version: 1;\n kind: \"once\" | \"daily\" | \"weekdays\" | \"weekly\" | \"monthly\";\n timeZone: string;\n startDate: string;\n localTime: string;\n weekdays?: OpenPondWorkflowWeekday[];\n dayOfMonth?: number;\n end:\n | { kind: \"never\" }\n | { kind: \"on_date\"; date: string }\n | { kind: \"after_occurrences\"; occurrences: number };\n};\n\nexport type OpenPondWorkflowSchedule = {\n id: string;\n expression: string | null;\n timeZone: string;\n recurrence: OpenPondWorkflowRecurrence | null;\n configurationVersion: number;\n enabled: boolean;\n nextRunAt: string | null;\n lastTriggeredAt: string | null;\n delivery: Record<string, unknown>;\n};\n\nexport type OpenPondWorkflowDefinition = {\n id: string;\n definitionKey: string;\n version: number;\n name: string;\n prompt: string;\n modelId: string;\n schedules: OpenPondWorkflowSchedule[];\n};\n\nexport type OpenPondWorkflowRun = {\n id: string;\n definitionId: string;\n scheduleId: string | null;\n definitionName: string;\n definitionVersion: number;\n conversationId: string;\n triggerKind: \"manual\" | \"schedule\" | \"webhook\" | \"retry\";\n status: string;\n notificationStatus: string;\n deliveryStatus: string;\n deliveryError: string | null;\n createdAt: string;\n};\n\nexport type OpenPondWorkflowCatalog = {\n definitions: OpenPondWorkflowDefinition[];\n runs: OpenPondWorkflowRun[];\n asOf: string;\n};\n\nexport type OpenPondWorkflowCreateInput = {\n clientRequestId?: string;\n sourceTurnId?: string | null;\n name: string;\n prompt: string;\n recurrence: OpenPondWorkflowRecurrence;\n modelId?: string;\n enabled?: boolean;\n target?:\n | { kind: \"prompt\" }\n | {\n kind: \"external_callback\";\n callbackUrl: string;\n externalReference: string;\n };\n};\n\nexport type OpenPondWorkflowCreateResult = {\n created: boolean;\n definitionId: string;\n scheduleId: string;\n name: string;\n enabled: boolean;\n nextRunAt: string | null;\n recurrence: OpenPondWorkflowRecurrence | null;\n timeZone: string;\n};\n\nexport type OpenPondWorkflowUpdateInput =\n | { enabled: boolean }\n | {\n name: string;\n prompt: string;\n recurrence: OpenPondWorkflowRecurrence;\n };\n\nexport type OpenPondWorkflowUpdateResult = {\n definitionId?: string;\n schedule: {\n id: string;\n enabled: boolean;\n nextRunAt: string | null;\n };\n};\n\nexport type OpenPondWorkflowDeleteResult = {\n schedule: {\n id: string;\n archived: true;\n };\n};\n\nexport type OpenPondWorkflowRunNowResult = {\n runId: string;\n conversationId: string;\n};\n\nexport type OpenPondWorkflowRequestOptions = {\n signal?: AbortSignal;\n};\n\ntype WorkflowsClientInput = {\n apiKey: string;\n apiBaseUrl: string;\n};\n\nexport class OpenPondWorkflowsClient {\n readonly #apiKey: string;\n readonly #apiBaseUrl: string;\n\n constructor(input: WorkflowsClientInput) {\n this.#apiKey = input.apiKey;\n this.#apiBaseUrl = input.apiBaseUrl.replace(/\\/+$/, \"\");\n }\n\n async list(\n options: OpenPondWorkflowRequestOptions = {},\n ): Promise<OpenPondWorkflowCatalog> {\n return this.#request<OpenPondWorkflowCatalog>(\"\", \"List Workflows\", {\n signal: options.signal,\n });\n }\n\n async create(\n input: OpenPondWorkflowCreateInput,\n options: OpenPondWorkflowRequestOptions = {},\n ): Promise<OpenPondWorkflowCreateResult> {\n return this.#request<OpenPondWorkflowCreateResult>(\"\", \"Create Workflow\", {\n method: \"POST\",\n body: JSON.stringify({\n ...input,\n clientRequestId: input.clientRequestId?.trim() || randomUUID(),\n }),\n signal: options.signal,\n });\n }\n\n async update(\n scheduleId: string,\n input: OpenPondWorkflowUpdateInput,\n options: OpenPondWorkflowRequestOptions = {},\n ): Promise<OpenPondWorkflowUpdateResult> {\n return this.#request<OpenPondWorkflowUpdateResult>(\n `/schedules/${encodeURIComponent(requiredId(scheduleId, \"scheduleId\"))}`,\n \"Update Workflow\",\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n signal: options.signal,\n },\n );\n }\n\n async delete(\n scheduleId: string,\n options: OpenPondWorkflowRequestOptions = {},\n ): Promise<OpenPondWorkflowDeleteResult> {\n return this.#request<OpenPondWorkflowDeleteResult>(\n `/schedules/${encodeURIComponent(requiredId(scheduleId, \"scheduleId\"))}`,\n \"Delete Workflow\",\n { method: \"DELETE\", signal: options.signal },\n );\n }\n\n async runNow(\n scheduleId: string,\n input: { clientRequestId?: string } = {},\n options: OpenPondWorkflowRequestOptions = {},\n ): Promise<OpenPondWorkflowRunNowResult> {\n return this.#request<OpenPondWorkflowRunNowResult>(\n `/schedules/${encodeURIComponent(requiredId(scheduleId, \"scheduleId\"))}/run`,\n \"Run Workflow\",\n {\n method: \"POST\",\n body: JSON.stringify({\n clientRequestId: input.clientRequestId?.trim() || randomUUID(),\n }),\n signal: options.signal,\n },\n );\n }\n\n async #request<T>(\n suffix: string,\n label: string,\n options: RequestInit = {},\n ): Promise<T> {\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n `/v1/saved-work${suffix}`,\n options,\n );\n return readApiJson<T>(response, label);\n }\n}\n\nfunction requiredId(value: string, label: string): string {\n const normalized = value.trim();\n if (!normalized) throw new Error(`${label} is required`);\n return normalized;\n}\n", "const DEFAULT_API_TIMEOUT_MS = 30_000;\nconst DEFAULT_API_RESPONSE_BYTES = 8 * 1024 * 1024;\nexport const LONG_STREAM_API_OPTIONS = { timeoutMs: 15 * 60 * 1000, maxResponseBytes: 64 * 1024 * 1024 } as const;\n\nexport type ApiFetchOptions = RequestInit & {\n timeoutMs?: number;\n maxResponseBytes?: number;\n};\n\nexport class ApiTimeoutError extends Error {\n readonly code = \"OPENPOND_API_TIMEOUT\";\n\n constructor(readonly timeoutMs: number, readonly requestUrl: string) {\n super(`API request timed out after ${timeoutMs}ms: ${requestUrl}`);\n this.name = \"ApiTimeoutError\";\n }\n}\n\nexport class ApiResponseTooLargeError extends Error {\n readonly code = \"OPENPOND_API_RESPONSE_TOO_LARGE\";\n\n constructor(readonly maximumBytes: number, readonly requestUrl: string) {\n super(`API response exceeded ${maximumBytes} bytes: ${requestUrl}`);\n this.name = \"ApiResponseTooLargeError\";\n }\n}\n\nexport class OpenPondApiError extends Error {\n readonly code: string;\n\n constructor(\n readonly status: number,\n errorCode: string | null,\n label: string,\n readonly apiMessage: string | null = null,\n ) {\n const detail = apiMessage || errorCode;\n super(`${label} failed: ${status}${detail ? ` ${detail}` : \"\"}`);\n this.name = \"OpenPondApiError\";\n this.code = errorCode || \"OPENPOND_API_ERROR\";\n }\n}\n\nexport async function apiFetch(\n baseUrl: string,\n token: string | null,\n requestPath: string,\n options: ApiFetchOptions = {},\n): Promise<Response> {\n const { timeoutMs = DEFAULT_API_TIMEOUT_MS, maxResponseBytes = DEFAULT_API_RESPONSE_BYTES, ...init } = options;\n const requestUrl = `${baseUrl}${requestPath}`;\n const headers = new Headers(init.headers);\n headers.set(\"Content-Type\", \"application/json\");\n const apiKey = process.env.OPENPOND_API_KEY;\n const trimmedToken = token?.trim() || \"\";\n const tokenIsApiKey = trimmedToken.startsWith(\"opk_\");\n const effectiveApiKey = apiKey || (tokenIsApiKey ? trimmedToken : null);\n if (effectiveApiKey && !headers.has(\"openpond-api-key\")) headers.set(\"openpond-api-key\", effectiveApiKey);\n if (token) {\n headers.set(\"Authorization\", tokenIsApiKey ? `ApiKey ${trimmedToken}` : `Bearer ${token}`);\n } else if (apiKey && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `ApiKey ${apiKey}`);\n }\n\n const timeoutController = new AbortController();\n const timeoutError = new ApiTimeoutError(timeoutMs, requestUrl);\n const timer = timeoutMs > 0\n ? setTimeout(() => timeoutController.abort(timeoutError), timeoutMs)\n : null;\n timer?.unref?.();\n const signal = composedSignal(init.signal, timeoutController.signal, timeoutMs);\n const cleanup = () => {\n if (timer) clearTimeout(timer);\n };\n\n try {\n const response = await fetch(requestUrl, { ...init, headers, signal });\n return boundedResponse(response, {\n cleanup,\n maximumBytes: maxResponseBytes,\n requestUrl,\n timeoutController,\n timeoutError,\n });\n } catch (error) {\n cleanup();\n if (timeoutController.signal.aborted) throw timeoutError;\n throw error;\n }\n}\n\nexport async function readApiJson<T>(response: Response, label: string): Promise<T> {\n let payload: T & { error?: unknown; message?: unknown };\n try {\n const text = await response.text();\n payload = (text ? JSON.parse(text) : {}) as T & { error?: unknown; message?: unknown };\n } catch (error) {\n if (error instanceof ApiTimeoutError || error instanceof ApiResponseTooLargeError) throw error;\n payload = {} as T & { error?: unknown; message?: unknown };\n }\n if (!response.ok) {\n const errorCode = typeof payload.error === \"string\" ? payload.error : null;\n const apiMessage =\n typeof payload.message === \"string\" ? payload.message : null;\n throw new OpenPondApiError(response.status, errorCode, label, apiMessage);\n }\n return payload as T;\n}\n\nfunction boundedResponse(\n response: Response,\n input: {\n cleanup: () => void;\n maximumBytes: number;\n requestUrl: string;\n timeoutController: AbortController;\n timeoutError: ApiTimeoutError;\n },\n): Response {\n if (!response.body) {\n input.cleanup();\n return response;\n }\n const contentLength = Number(response.headers.get(\"content-length\"));\n if (input.maximumBytes > 0 && Number.isFinite(contentLength) && contentLength > input.maximumBytes) {\n input.cleanup();\n void response.body.cancel();\n throw new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl);\n }\n\n const reader = response.body.getReader();\n let receivedBytes = 0;\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const result = await reader.read();\n if (result.done) {\n input.cleanup();\n controller.close();\n return;\n }\n receivedBytes += result.value.byteLength;\n if (input.maximumBytes > 0 && receivedBytes > input.maximumBytes) {\n input.cleanup();\n await reader.cancel();\n controller.error(new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl));\n return;\n }\n controller.enqueue(result.value);\n } catch (error) {\n input.cleanup();\n controller.error(input.timeoutController.signal.aborted ? input.timeoutError : error);\n }\n },\n async cancel(reason) {\n input.cleanup();\n await reader.cancel(reason);\n },\n });\n return new Response(body, {\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\nfunction composedSignal(\n callerSignal: AbortSignal | null | undefined,\n timeoutSignal: AbortSignal,\n timeoutMs: number,\n): AbortSignal | undefined {\n if (timeoutMs <= 0) return callerSignal ?? undefined;\n return callerSignal ? AbortSignal.any([callerSignal, timeoutSignal]) : timeoutSignal;\n}\n"],
5
- "mappings": "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",
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openpond-sdk",
3
- "version": "0.3.3",
3
+ "version": "0.5.0",
4
4
  "description": "Server-side TypeScript SDK for OpenPond sandboxes and agentic work",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -18,6 +18,10 @@
18
18
  "MODEL_STARTERS.md"
19
19
  ],
20
20
  "exports": {
21
+ "./model-taskset-runs": {
22
+ "types": "./dist/types/packages/sdk/src/model-taskset-runs.d.ts",
23
+ "import": "./dist/model-taskset-runs.js"
24
+ },
21
25
  "./taskset-packages": {
22
26
  "types": "./dist/types/packages/sdk/src/taskset-packages.d.ts",
23
27
  "import": "./dist/taskset-packages.js"
@@ -86,6 +90,10 @@
86
90
  "./model-starter-catalog": {
87
91
  "types": "./dist/types/packages/sdk/src/model-starter-catalog.d.ts",
88
92
  "import": "./dist/model-starter-catalog.js"
93
+ },
94
+ "./taskset-drafts": {
95
+ "types": "./dist/types/packages/sdk/src/taskset-drafts.d.ts",
96
+ "import": "./dist/taskset-drafts.js"
89
97
  }
90
98
  },
91
99
  "publishConfig": {
@@ -127,8 +135,8 @@
127
135
  "vitest": "4.1.10"
128
136
  },
129
137
  "dependencies": {
130
- "@openpond/evals": "^0.9.2",
131
- "@openpond/harness": "^0.2.5",
138
+ "@openpond/evals": "^0.10.0",
139
+ "@openpond/harness": "^0.2.6",
132
140
  "esbuild": "0.28.1",
133
141
  "zod": "^4.1.13"
134
142
  }