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.
- package/LEARNING.md +5 -7
- package/OPENTELEMETRY.md +1 -1
- package/PRODUCT_INTEGRATION.md +129 -0
- package/README.md +13 -3
- package/SERVERLESS_SERVING.md +37 -0
- package/TASKSETS.md +1 -2
- package/TASK_INGESTION.md +87 -86
- package/TRAINING_PROTOCOL.md +7 -3
- package/TRAINING_WORKFLOWS.md +11 -6
- package/dist/advanced-refiner-evaluations.js +10 -9
- package/dist/ai-sdk.js +225 -0
- package/dist/ai-sdk.js.map +1 -0
- package/dist/candidate-evaluations.js +7 -6
- package/dist/{chunk-ZQFROKKS.js → chunk-2U6BQ5C4.js} +3 -3
- package/dist/{chunk-BNBPKCIR.js → chunk-3BILL33A.js} +4 -4
- package/dist/{chunk-3B5KSH3V.js → chunk-456F3BXD.js} +5 -2
- package/dist/chunk-456F3BXD.js.map +1 -0
- package/dist/{chunk-GCUWJUUM.js → chunk-4A4FNG4R.js} +2 -2
- package/dist/{chunk-EZME7DV4.js → chunk-4CDLPMJK.js} +2 -2
- package/dist/{chunk-SP7DQEQM.js → chunk-4CRLQMJ2.js} +5 -5
- package/dist/{chunk-QOX57Y27.js → chunk-4PEK3YOW.js} +6 -3
- package/dist/chunk-4PEK3YOW.js.map +1 -0
- package/dist/{chunk-GS5HEE4M.js → chunk-4REK5TTE.js} +2 -2
- package/dist/{chunk-AG6UJ3DI.js → chunk-57ROW3XF.js} +3 -3
- package/dist/{chunk-3BYFS4RO.js → chunk-6LVLWRBJ.js} +11 -8
- package/dist/chunk-6LVLWRBJ.js.map +1 -0
- package/dist/{chunk-3VUF5H3B.js → chunk-AMZ2SWHR.js} +2 -2
- package/dist/{chunk-ZQ6QTYRE.js → chunk-AQV7RQZH.js} +11 -11
- package/dist/{chunk-ZQ6QTYRE.js.map → chunk-AQV7RQZH.js.map} +1 -1
- package/dist/{chunk-BJMENXR4.js → chunk-C7I4ZG6Q.js} +3 -3
- package/dist/{chunk-JMFYNIYZ.js → chunk-CAOMKM55.js} +6 -3
- package/dist/chunk-CAOMKM55.js.map +1 -0
- package/dist/{chunk-QNOCM5JX.js → chunk-D26RJQU7.js} +2 -2
- package/dist/{chunk-GBDBKGXW.js → chunk-EL6KZO43.js} +3 -3
- package/dist/{chunk-MVAEE5EI.js → chunk-H5KHLBC5.js} +5 -2
- package/dist/chunk-H5KHLBC5.js.map +1 -0
- package/dist/{chunk-7G47YXQT.js → chunk-HCUZYGUK.js} +8 -5
- package/dist/chunk-HCUZYGUK.js.map +1 -0
- package/dist/{chunk-Q4RGCEOI.js → chunk-JINWKUKR.js} +3 -3
- package/dist/{chunk-626JLH4D.js → chunk-JWEIAEQ6.js} +2 -2
- package/dist/{chunk-DH6O4JFB.js → chunk-KJTX4A27.js} +5 -2
- package/dist/chunk-KJTX4A27.js.map +1 -0
- package/dist/{chunk-OBI2MQYU.js → chunk-MN4FE52A.js} +17 -14
- package/dist/chunk-MN4FE52A.js.map +1 -0
- package/dist/{chunk-NZRGRUYG.js → chunk-MUG4OQKL.js} +21 -7
- package/dist/chunk-MUG4OQKL.js.map +1 -0
- package/dist/{chunk-C3TS766N.js → chunk-N6LGT7NT.js} +5 -2
- package/dist/chunk-N6LGT7NT.js.map +1 -0
- package/dist/{chunk-QIGMNB6M.js → chunk-P56JWQYV.js} +3 -3
- package/dist/{chunk-GX6KMHW2.js → chunk-QKLZZOZD.js} +5 -2
- package/dist/chunk-QKLZZOZD.js.map +1 -0
- package/dist/chunk-QYWPNNP3.js +9 -0
- package/dist/chunk-QYWPNNP3.js.map +1 -0
- package/dist/{chunk-QCRNQMN4.js → chunk-UZAVG2WK.js} +5 -5
- package/dist/chunk-UZAVG2WK.js.map +1 -0
- package/dist/{chunk-Z252BNAZ.js → chunk-VE5JD5FN.js} +6 -2
- package/dist/chunk-VE5JD5FN.js.map +1 -0
- package/dist/{chunk-7F43U2NC.js → chunk-WZKKQNYY.js} +3 -3
- package/dist/{chunk-6EZAGTZG.js → chunk-X5AT253K.js} +5 -5
- package/dist/{chunk-ZRTNR4U7.js → chunk-XWUTYFOU.js} +3 -3
- package/dist/{chunk-KEG5QS7W.js → chunk-XYK3MAIC.js} +193 -193
- package/dist/chunk-XYK3MAIC.js.map +1 -0
- package/dist/chunk-ZG4HVCJB.js +248 -0
- package/dist/chunk-ZG4HVCJB.js.map +1 -0
- package/dist/connected-evidence.js +11 -10
- package/dist/dataset-commerce.js +4 -1
- package/dist/dataset-commerce.js.map +1 -1
- package/dist/dataset-marketplace.js +4 -1
- package/dist/dataset-marketplace.js.map +1 -1
- package/dist/dataset-workspaces.js +157 -93
- package/dist/dataset-workspaces.js.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/experiment-evaluation-schedules.js +20 -19
- package/dist/experiment-improvements.js +8 -7
- package/dist/experiments.js +21 -20
- package/dist/human-review.js +2 -1
- package/dist/index.js +87 -56
- package/dist/index.js.map +1 -1
- package/dist/learning.js +6 -3
- package/dist/learning.js.map +1 -1
- package/dist/model-projects.js +2 -1
- package/dist/model-starter-attempts.js +3 -2
- package/dist/model-starter-catalog.js +7 -4
- package/dist/model-starter-catalog.js.map +1 -1
- package/dist/model-starters.js +4 -3
- package/dist/model-taskset-runs.js +7 -4
- package/dist/model-taskset-runs.js.map +1 -1
- package/dist/post-training.js +7 -6
- package/dist/taskset-catalog.js +2 -1
- package/dist/taskset-drafts.js +13 -10
- package/dist/taskset-drafts.js.map +1 -1
- package/dist/taskset-packages.js +16 -15
- package/dist/tool-learning.js +4 -1
- package/dist/tool-learning.js.map +1 -1
- package/dist/training-bundle.js +19 -18
- package/dist/training-bundle.js.map +1 -1
- package/dist/training-hardware.js +3 -2
- package/dist/training-projects.js +4 -1
- package/dist/training-projects.js.map +1 -1
- package/dist/training.js +2761 -2626
- package/dist/training.js.map +1 -1
- package/dist/types/packages/sdk/src/ai-sdk.d.ts +6 -0
- package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +21 -21
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts +1 -1
- package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +9 -2
- package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +141 -141
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts +28 -0
- package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +1 -0
- package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/endpoints.d.ts +4 -0
- package/dist/types/packages/sdk/src/endpoints.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +1 -1
- package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts +637 -637
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +28 -28
- package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +28 -28
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1623 -1623
- package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts +1 -1
- package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
- package/dist/types/packages/sdk/src/grader-inspection.d.ts +1 -1
- package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/human-review-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/index.d.ts +13 -4
- package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts +1 -1
- package/dist/types/packages/sdk/src/learning-correction-metrics.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +347 -347
- package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
- package/dist/types/packages/sdk/src/model-projects.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +1 -1
- package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +29 -29
- package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
- package/dist/types/packages/sdk/src/product-model-response.d.ts +4 -0
- package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/product-models.d.ts +76 -0
- package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1 -1
- package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/serverless-serving.d.ts +157 -0
- package/dist/types/packages/sdk/src/serverless-serving.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts +276 -0
- package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +121 -121
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +20 -20
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/tool-learning-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-evidence.d.ts +54 -0
- package/dist/types/packages/sdk/src/training-evidence.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
- package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +232 -0
- package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-model-serving.d.ts +552 -0
- package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-transport.d.ts +1 -1
- package/dist/types/packages/sdk/src/training-transport.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training.d.ts +2489 -2148
- package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/types.d.ts +14 -1
- package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
- package/examples/learning/submit.py +1 -1
- package/examples/learning/submit.ts +2 -2
- package/examples/training/continual.ts +4 -4
- package/examples/training/manual.ts +1 -3
- package/fixtures/personalized-inference-request.schema.json +316 -0
- package/fixtures/python-foundation/schemas.json +4873 -4484
- package/package.json +19 -3
- package/dist/chunk-3B5KSH3V.js.map +0 -1
- package/dist/chunk-3BYFS4RO.js.map +0 -1
- package/dist/chunk-7G47YXQT.js.map +0 -1
- package/dist/chunk-C3TS766N.js.map +0 -1
- package/dist/chunk-DH6O4JFB.js.map +0 -1
- package/dist/chunk-GX6KMHW2.js.map +0 -1
- package/dist/chunk-JMFYNIYZ.js.map +0 -1
- package/dist/chunk-KEG5QS7W.js.map +0 -1
- package/dist/chunk-MVAEE5EI.js.map +0 -1
- package/dist/chunk-NZRGRUYG.js.map +0 -1
- package/dist/chunk-OBI2MQYU.js.map +0 -1
- package/dist/chunk-QCRNQMN4.js.map +0 -1
- package/dist/chunk-QOX57Y27.js.map +0 -1
- package/dist/chunk-Z252BNAZ.js.map +0 -1
- /package/dist/{chunk-ZQFROKKS.js.map → chunk-2U6BQ5C4.js.map} +0 -0
- /package/dist/{chunk-BNBPKCIR.js.map → chunk-3BILL33A.js.map} +0 -0
- /package/dist/{chunk-GCUWJUUM.js.map → chunk-4A4FNG4R.js.map} +0 -0
- /package/dist/{chunk-EZME7DV4.js.map → chunk-4CDLPMJK.js.map} +0 -0
- /package/dist/{chunk-SP7DQEQM.js.map → chunk-4CRLQMJ2.js.map} +0 -0
- /package/dist/{chunk-GS5HEE4M.js.map → chunk-4REK5TTE.js.map} +0 -0
- /package/dist/{chunk-AG6UJ3DI.js.map → chunk-57ROW3XF.js.map} +0 -0
- /package/dist/{chunk-3VUF5H3B.js.map → chunk-AMZ2SWHR.js.map} +0 -0
- /package/dist/{chunk-BJMENXR4.js.map → chunk-C7I4ZG6Q.js.map} +0 -0
- /package/dist/{chunk-QNOCM5JX.js.map → chunk-D26RJQU7.js.map} +0 -0
- /package/dist/{chunk-GBDBKGXW.js.map → chunk-EL6KZO43.js.map} +0 -0
- /package/dist/{chunk-Q4RGCEOI.js.map → chunk-JINWKUKR.js.map} +0 -0
- /package/dist/{chunk-626JLH4D.js.map → chunk-JWEIAEQ6.js.map} +0 -0
- /package/dist/{chunk-QIGMNB6M.js.map → chunk-P56JWQYV.js.map} +0 -0
- /package/dist/{chunk-7F43U2NC.js.map → chunk-WZKKQNYY.js.map} +0 -0
- /package/dist/{chunk-6EZAGTZG.js.map → chunk-X5AT253K.js.map} +0 -0
- /package/dist/{chunk-ZRTNR4U7.js.map → chunk-XWUTYFOU.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/taskset-catalog.ts"],"sourcesContent":["import { DEFAULT_API_BASE_URL } from \"./endpoints.js\";\nimport { z } from \"zod\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const TasksetCatalogReleaseRefSchema = z.object({ id: IdSchema, revision: z.number().int().positive(), contentHash: HashSchema }).strict();\n\n/** Inventory metadata only. Task rows, evaluator source, and object locations\n * are resolved separately by an authorized package operation. */\nexport const HostedTasksetSummarySchema = z.object({\n schemaVersion: z.literal(\"openpond.hostedTasksetSummary.v1\"),\n id: IdSchema,\n teamId: IdSchema,\n release: TasksetCatalogReleaseRefSchema,\n name: z.string().min(1).max(500),\n description: z.string().max(20_000),\n taskCount: z.number().int().nonnegative(),\n buildIntent: z.string().min(1).max(100),\n methodHint: z.string().min(1).max(100).nullable(),\n packageBytes: z.number().int().nonnegative().nullable(),\n storedBytes: z.number().int().nonnegative().nullable(),\n createdAt: z.string().datetime({ offset: true }),\n}).strict();\nexport const TasksetCatalogQuerySchema = z.object({\n afterId: z.string().trim().min(1).max(2_000).optional(),\n limit: z.number().int().min(1).max(100).default(30),\n modelProjectId: IdSchema.optional(),\n projectId: IdSchema.optional(),\n search: z.string().trim().max(100).optional(),\n sort: z.enum([\"id\", \"name\", \"updated\"]).default(\"id\"),\n}).strict();\nexport const TasksetCatalogPageSchema = z.object({\n items: z.array(HostedTasksetSummarySchema).max(100),\n nextCursor: z.string().trim().min(1).max(2_000).nullable(),\n}).strict();\nexport const TasksetCatalogErrorSchema = z.object({\n code: z.string().min(1),\n message: z.string().min(1),\n}).strict();\nexport type HostedTasksetSummary = z.infer<typeof HostedTasksetSummarySchema>;\nexport type TasksetCatalogPage = z.infer<typeof TasksetCatalogPageSchema>;\n\nexport class OpenPondTasksetCatalogError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) {\n super(message);\n this.name = \"OpenPondTasksetCatalogError\";\n }\n}\n\nexport interface TasksetCatalogClientOptions {\n baseUrl?: string;\n apiKey: string;\n teamId: string;\n fetch?: typeof globalThis.fetch;\n}\n\nexport class OpenPondTasksetCatalogClient {\n readonly #options: TasksetCatalogClientOptions;\n constructor(options: TasksetCatalogClientOptions) {\n if (!options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Taskset API key and workspace are required.\");\n const url = new URL(options.baseUrl ?? DEFAULT_API_BASE_URL);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error(\"Taskset base URL must be an HTTP(S) endpoint without credentials, query, or fragment.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async list(query: z.input<typeof TasksetCatalogQuerySchema> = {}, options: { signal?: AbortSignal } = {}): Promise<TasksetCatalogPage> {\n const parsed = TasksetCatalogQuerySchema.parse(query);\n const search = new URLSearchParams({ limit: String(parsed.limit) });\n if (parsed.afterId) search.set(\"afterId\", parsed.afterId);\n if (parsed.modelProjectId) search.set(\"modelProjectId\", parsed.modelProjectId);\n if (parsed.projectId) search.set(\"projectId\", parsed.projectId);\n if (parsed.search !== undefined) search.set(\"search\", parsed.search);\n search.set(\"sort\", parsed.sort);\n const page = TasksetCatalogPageSchema.parse(await this.#request(`?${search}`, options.signal));\n if (page.items.length > parsed.limit || new Set(page.items.map(item => item.id)).size !== page.items.length || page.items.some((item) => item.teamId !== this.#options.teamId)) throw new OpenPondTasksetCatalogError(502, \"catalog_scope_mismatch\", \"Taskset inventory did not match the requested workspace or page size.\");\n return page;\n }\n\n async get(id: string, options: { signal?: AbortSignal } = {}): Promise<HostedTasksetSummary> {\n const parsed = IdSchema.parse(id);\n const item = HostedTasksetSummarySchema.parse(await this.#request(`/${encodeURIComponent(parsed)}`, options.signal));\n if (item.id !== parsed || item.teamId !== this.#options.teamId) throw new OpenPondTasksetCatalogError(502, \"catalog_identity_mismatch\", \"Taskset metadata did not match the requested identity.\");\n return item;\n }\n\n /** Resolve a saved portable reference without scanning inventory pages. */\n async resolve(release: z.infer<typeof TasksetCatalogReleaseRefSchema>, options: { signal?: AbortSignal } = {}): Promise<HostedTasksetSummary> {\n const parsed = TasksetCatalogReleaseRefSchema.parse(release);\n const item = HostedTasksetSummarySchema.parse(await this.#request(`/releases/${encodeURIComponent(parsed.id)}/${parsed.revision}/${parsed.contentHash}`, options.signal));\n if (item.teamId !== this.#options.teamId || item.release.id !== parsed.id || item.release.revision !== parsed.revision || item.release.contentHash !== parsed.contentHash) throw new OpenPondTasksetCatalogError(502, \"catalog_release_mismatch\", \"Taskset metadata did not match the requested immutable release.\");\n return item;\n }\n\n async #request(path: string, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/taskset-catalog${path}`, {\n headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\" },\n signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetCatalogError(response.status, \"empty_response\", \"Taskset catalog response was empty.\");\n const decoder = new TextDecoder();\n let bytes = 0;\n let text = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > 4_194_304) throw new OpenPondTasksetCatalogError(response.status, \"response_too_large\", \"Taskset catalog response exceeded 4 MiB.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const payload: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = TasksetCatalogErrorSchema.safeParse(payload);\n throw new OpenPondTasksetCatalogError(response.status, error.success ? error.data.code : \"invalid_error_response\", error.success ? error.data.message : `Taskset catalog request failed (${response.status}).`);\n }\n return payload;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EvaluationCoordinationTransport
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-456F3BXD.js";
|
|
4
4
|
import {
|
|
5
5
|
RunExperimentSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2U6BQ5C4.js";
|
|
7
7
|
import {
|
|
8
8
|
ImmutableReleaseRefSchema,
|
|
9
9
|
assertContentHash,
|
|
@@ -171,4 +171,4 @@ export {
|
|
|
171
171
|
ExperimentEvaluationScheduleCommandSchema,
|
|
172
172
|
OpenPondExperimentEvaluationScheduleClient
|
|
173
173
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-WZKKQNYY.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ExperimentImprovementOptionsSchema
|
|
3
|
+
} from "./chunk-D26RJQU7.js";
|
|
1
4
|
import {
|
|
2
5
|
EvaluationCoordinationTransport
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-456F3BXD.js";
|
|
4
7
|
import {
|
|
5
8
|
ChatModelRefSchema
|
|
6
9
|
} from "./chunk-H3367ISL.js";
|
|
7
|
-
import {
|
|
8
|
-
ExperimentImprovementOptionsSchema
|
|
9
|
-
} from "./chunk-QNOCM5JX.js";
|
|
10
10
|
import {
|
|
11
11
|
ImmutableReleaseRefSchema,
|
|
12
12
|
contentHash
|
|
@@ -264,4 +264,4 @@ export {
|
|
|
264
264
|
AdvancedRefinerEvaluationAccountingSchema,
|
|
265
265
|
OpenPondAdvancedRefinerEvaluationClient
|
|
266
266
|
};
|
|
267
|
-
//# sourceMappingURL=chunk-
|
|
267
|
+
//# sourceMappingURL=chunk-X5AT253K.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
EvaluationProjectContextSchema,
|
|
4
4
|
ModelStarterAttemptPolicySchema,
|
|
5
5
|
ModelStarterAttemptSummarySchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CAOMKM55.js";
|
|
7
7
|
import {
|
|
8
8
|
ModelProjectVersionedRefSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-H5KHLBC5.js";
|
|
10
10
|
import {
|
|
11
11
|
canonicalJson,
|
|
12
12
|
canonicalSha256
|
|
@@ -179,4 +179,4 @@ export {
|
|
|
179
179
|
verifyModelTasksetRunDetails,
|
|
180
180
|
verifyModelTasksetRunResult
|
|
181
181
|
};
|
|
182
|
-
//# sourceMappingURL=chunk-
|
|
182
|
+
//# sourceMappingURL=chunk-XWUTYFOU.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
ModelProjectRecipeDocumentSchema,
|
|
9
9
|
ModelProjectVersionedRefSchema,
|
|
10
10
|
TrainingGpuSelectionSchema
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-H5KHLBC5.js";
|
|
12
12
|
import {
|
|
13
13
|
OpenPondProtocolError,
|
|
14
14
|
TRAINING_INPUT_ARTIFACT_MAX_BYTES,
|
|
@@ -17,35 +17,159 @@ import {
|
|
|
17
17
|
canonicalSha256
|
|
18
18
|
} from "./chunk-B3ZHJ2KK.js";
|
|
19
19
|
|
|
20
|
-
// src/
|
|
20
|
+
// src/training-recovery.ts
|
|
21
21
|
import { z } from "zod";
|
|
22
|
-
var
|
|
23
|
-
var
|
|
22
|
+
var id = z.string().trim().min(1).max(191);
|
|
23
|
+
var hash = z.string().regex(/^[a-f0-9]{64}$/);
|
|
24
|
+
var ApprovalBodySchema = z.object({
|
|
25
|
+
schemaVersion: z.literal("openpond.checkpointRecoveryResourceApproval.v1"),
|
|
26
|
+
ownerUserId: id,
|
|
27
|
+
teamId: id,
|
|
28
|
+
sourceJobId: id,
|
|
29
|
+
sourceJobVersion: z.number().int().positive(),
|
|
30
|
+
sourceInputManifestSha256: hash,
|
|
31
|
+
checkpointId: id,
|
|
32
|
+
adapterSha256: hash,
|
|
33
|
+
resumeSha256: hash,
|
|
34
|
+
idempotencyKey: z.string().trim().min(16).max(191),
|
|
35
|
+
approvedAt: z.iso.datetime({ offset: true }),
|
|
36
|
+
maximumSpendUsd: z.number().positive().finite().max(30).refine(
|
|
37
|
+
(value) => Number(value.toFixed(6)) === value,
|
|
38
|
+
"Recovery spend must use whole microdollars"
|
|
39
|
+
),
|
|
40
|
+
maximumGpuSeconds: z.number().int().positive().max(21600),
|
|
41
|
+
maximumWallSeconds: z.number().int().positive().max(21600)
|
|
42
|
+
}).strict();
|
|
43
|
+
var TrainingCheckpointRecoveryResourceApprovalSchema = ApprovalBodySchema.extend({
|
|
44
|
+
approvalHash: hash
|
|
45
|
+
}).strict().superRefine((value, context) => {
|
|
46
|
+
if (value.maximumGpuSeconds > value.maximumWallSeconds)
|
|
47
|
+
context.addIssue({
|
|
48
|
+
code: "custom",
|
|
49
|
+
path: ["maximumGpuSeconds"],
|
|
50
|
+
message: "Recovery GPU duration exceeds its wall"
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
async function createTrainingCheckpointRecoveryResourceApproval(input) {
|
|
54
|
+
const body = ApprovalBodySchema.parse(input);
|
|
55
|
+
return TrainingCheckpointRecoveryResourceApprovalSchema.parse({
|
|
56
|
+
...body,
|
|
57
|
+
approvalHash: await canonicalSha256(body)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
var TrainingCheckpointRecoveryRequestSchema = z.object({
|
|
61
|
+
resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),
|
|
62
|
+
mode: z.literal("evaluation_only").optional(),
|
|
63
|
+
evaluationGpuType: z.enum(["NVIDIA A100 80GB PCIe", "NVIDIA A100-SXM4-80GB", "NVIDIA H100 80GB HBM3"]).optional(),
|
|
64
|
+
expectedVersion: z.number().int().positive(),
|
|
65
|
+
checkpointId: id,
|
|
66
|
+
idempotencyKey: z.string().trim().min(16).max(191),
|
|
67
|
+
maximumSpendUsd: z.number().positive().finite(),
|
|
68
|
+
maximumWallSeconds: z.number().int().positive().max(21600)
|
|
69
|
+
}).strict().superRefine((value, context) => {
|
|
70
|
+
if (value.evaluationGpuType && value.mode !== "evaluation_only")
|
|
71
|
+
context.addIssue({
|
|
72
|
+
code: "custom",
|
|
73
|
+
path: ["evaluationGpuType"],
|
|
74
|
+
message: "GPU substitution requires explicit evaluation-only recovery"
|
|
75
|
+
});
|
|
76
|
+
const a = value.resourceApproval;
|
|
77
|
+
if (a && (a.sourceJobVersion !== value.expectedVersion || a.checkpointId !== value.checkpointId || a.idempotencyKey !== value.idempotencyKey || a.maximumSpendUsd !== value.maximumSpendUsd || a.maximumWallSeconds !== value.maximumWallSeconds))
|
|
78
|
+
context.addIssue({
|
|
79
|
+
code: "custom",
|
|
80
|
+
path: ["resourceApproval"],
|
|
81
|
+
message: "Recovery resource approval does not match its request"
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// src/training-physical-placement.ts
|
|
86
|
+
import { z as z2 } from "zod";
|
|
87
|
+
var TrainingPhysicalPlacementSchema = z2.object({
|
|
88
|
+
mode: z2.literal("reuse_only"),
|
|
89
|
+
physicalWorkerId: z2.string().trim().min(1).max(191),
|
|
90
|
+
providerPodId: z2.string().trim().min(1).max(191),
|
|
91
|
+
workerImageDigest: z2.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
92
|
+
baseProfileSha256: z2.string().regex(/^[a-f0-9]{64}$/),
|
|
93
|
+
gpuType: z2.string().trim().min(1).max(200),
|
|
94
|
+
sourceJobId: z2.string().trim().min(1).max(191),
|
|
95
|
+
sourceInputManifestSha256: z2.string().regex(/^[a-f0-9]{64}$/),
|
|
96
|
+
ownerTeamId: z2.string().trim().min(1).max(191),
|
|
97
|
+
deadlineAt: z2.string().datetime({ offset: true })
|
|
98
|
+
}).strict();
|
|
99
|
+
|
|
100
|
+
// src/training-queue.ts
|
|
101
|
+
import { z as z3 } from "zod";
|
|
102
|
+
var Timestamp = z3.string().datetime({ offset: true });
|
|
103
|
+
var TrainingQueueStatusSchema = z3.object({
|
|
104
|
+
ticketId: z3.string().trim().min(1).max(191),
|
|
105
|
+
ticketNumber: z3.number().int().positive().max(Number.MAX_SAFE_INTEGER),
|
|
106
|
+
label: z3.literal("Waiting for resources"),
|
|
107
|
+
position: z3.number().int().positive().nullable(),
|
|
108
|
+
positionScope: z3.literal("compatible_fair_queue"),
|
|
109
|
+
enqueuedAt: Timestamp,
|
|
110
|
+
asOf: Timestamp,
|
|
111
|
+
estimate: z3.object({
|
|
112
|
+
revision: z3.number().int().nonnegative(),
|
|
113
|
+
estimatedStartAt: Timestamp,
|
|
114
|
+
expiresAt: Timestamp,
|
|
115
|
+
evidence: z3.enum(["observed_capacity", "measured_bootstrap", "scheduled_release"])
|
|
116
|
+
}).strict().nullable()
|
|
117
|
+
}).strict().superRefine((value, context) => {
|
|
118
|
+
if (value.estimate && Date.parse(value.estimate.expiresAt) <= Date.parse(value.asOf))
|
|
119
|
+
context.addIssue({ code: "custom", path: ["estimate"], message: "An expired queue forecast must be returned as unavailable" });
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// src/training-usage-status.ts
|
|
123
|
+
import { z as z4 } from "zod";
|
|
124
|
+
var Money = z4.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
|
|
125
|
+
var TrainingUsageSnapshotSchema = z4.object({
|
|
126
|
+
schemaVersion: z4.literal("openpond.trainingUsageSnapshot.v1"),
|
|
127
|
+
asOf: z4.iso.datetime(),
|
|
128
|
+
customerCapUsd: Money.nullable(),
|
|
129
|
+
chargedUsd: Money,
|
|
130
|
+
committedUsd: Money,
|
|
131
|
+
outstandingUsd: Money,
|
|
132
|
+
remainingCapUsd: Money.nullable(),
|
|
133
|
+
availableCreditUsd: Money,
|
|
134
|
+
complete: z4.boolean(),
|
|
135
|
+
components: z4.array(z4.object({
|
|
136
|
+
component: z4.enum(["gpu", "guest", "storage", "judge"]),
|
|
137
|
+
chargedUsd: Money,
|
|
138
|
+
committedUsd: Money,
|
|
139
|
+
outstandingUsd: Money,
|
|
140
|
+
openOwners: z4.number().int().nonnegative()
|
|
141
|
+
}).strict()).length(4).refine((values) => values.every((value, index) => value.component === ["gpu", "guest", "storage", "judge"][index]))
|
|
142
|
+
}).strict();
|
|
143
|
+
|
|
144
|
+
// src/managed-compute-price.ts
|
|
145
|
+
import { z as z5 } from "zod";
|
|
146
|
+
var Hash = z5.string().regex(/^[a-f0-9]{64}$/);
|
|
147
|
+
var Money2 = z5.string().regex(/^(0|[1-9]\d*)(\.\d{1,6})?$/).max(24);
|
|
24
148
|
var micros = (value) => {
|
|
25
|
-
const [whole, fraction = ""] =
|
|
149
|
+
const [whole, fraction = ""] = Money2.parse(value).split(".");
|
|
26
150
|
return BigInt(whole) * 1000000n + BigInt(fraction.padEnd(6, "0"));
|
|
27
151
|
};
|
|
28
|
-
var ComputeAppliedPriceSchema =
|
|
29
|
-
schemaVersion:
|
|
30
|
-
version:
|
|
31
|
-
service:
|
|
152
|
+
var ComputeAppliedPriceSchema = z5.object({
|
|
153
|
+
schemaVersion: z5.literal("openpond.computeAppliedPrice.v1"),
|
|
154
|
+
version: z5.string().min(1).max(500),
|
|
155
|
+
service: z5.enum(["managed_rl", "model_modification", "model_serving", "sandbox"]),
|
|
32
156
|
profileHash: Hash,
|
|
33
|
-
currency:
|
|
34
|
-
unit:
|
|
35
|
-
hourlyUsd:
|
|
36
|
-
if (!
|
|
157
|
+
currency: z5.literal("USD"),
|
|
158
|
+
unit: z5.literal("resource_hour"),
|
|
159
|
+
hourlyUsd: Money2.refine((value) => {
|
|
160
|
+
if (!Money2.safeParse(value).success) return false;
|
|
37
161
|
const amount = micros(value);
|
|
38
162
|
return amount > 0n && amount <= BigInt(Number.MAX_SAFE_INTEGER);
|
|
39
163
|
})
|
|
40
164
|
}).strict();
|
|
41
|
-
var ManagedModificationPriceSchema =
|
|
42
|
-
schemaVersion:
|
|
43
|
-
appliedPrice: ComputeAppliedPriceSchema.extend({ service:
|
|
44
|
-
billingBoundary:
|
|
45
|
-
startupBillable:
|
|
46
|
-
postCompletionIdleBillable:
|
|
47
|
-
minimumBillableSeconds:
|
|
48
|
-
warmReuseSeconds:
|
|
165
|
+
var ManagedModificationPriceSchema = z5.object({
|
|
166
|
+
schemaVersion: z5.literal("openpond.modificationPrice.v1"),
|
|
167
|
+
appliedPrice: ComputeAppliedPriceSchema.extend({ service: z5.literal("model_modification") }),
|
|
168
|
+
billingBoundary: z5.literal("active_allocation_until_verified_cleanup"),
|
|
169
|
+
startupBillable: z5.literal(true),
|
|
170
|
+
postCompletionIdleBillable: z5.literal(false),
|
|
171
|
+
minimumBillableSeconds: z5.literal(0),
|
|
172
|
+
warmReuseSeconds: z5.literal(300)
|
|
49
173
|
}).strict();
|
|
50
174
|
function canonicalComputeSpendCap(value) {
|
|
51
175
|
if (value == null || value.trim() === "") return null;
|
|
@@ -63,25 +187,25 @@ async function managedModificationPriceApprovalMatches(plan, command) {
|
|
|
63
187
|
}
|
|
64
188
|
|
|
65
189
|
// src/training-usage-funding.ts
|
|
66
|
-
import { z as
|
|
67
|
-
var Id =
|
|
68
|
-
var Hash2 =
|
|
69
|
-
var Price = ComputeAppliedPriceSchema.extend({ service:
|
|
70
|
-
var Cap =
|
|
190
|
+
import { z as z6 } from "zod";
|
|
191
|
+
var Id = z6.string().min(1).max(500);
|
|
192
|
+
var Hash2 = z6.string().regex(/^[a-f0-9]{64}$/);
|
|
193
|
+
var Price = ComputeAppliedPriceSchema.extend({ service: z6.literal("managed_rl") });
|
|
194
|
+
var Cap = z6.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => {
|
|
71
195
|
if (!/^(0|[1-9]\d*)\.\d{6}$/.test(value) || value.length > 24) return false;
|
|
72
196
|
const micros2 = BigInt(value.replace(".", ""));
|
|
73
197
|
return micros2 > 0n && micros2 <= BigInt(Number.MAX_SAFE_INTEGER);
|
|
74
198
|
}).nullable();
|
|
75
|
-
var Guests =
|
|
199
|
+
var Guests = z6.array(z6.object({
|
|
76
200
|
profileHash: Hash2,
|
|
77
201
|
price: Price,
|
|
78
|
-
resources:
|
|
202
|
+
resources: z6.object({ cpu: z6.number().positive(), memoryGb: z6.number().positive(), diskGb: z6.number().nonnegative() }).strict()
|
|
79
203
|
}).strict()).max(32);
|
|
80
|
-
var Rate =
|
|
81
|
-
var Judges =
|
|
82
|
-
billing:
|
|
83
|
-
acceptedPricingHashes:
|
|
84
|
-
prices:
|
|
204
|
+
var Rate = z6.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
|
|
205
|
+
var Judges = z6.object({
|
|
206
|
+
billing: z6.literal("existing_retail_child_captures"),
|
|
207
|
+
acceptedPricingHashes: z6.array(Hash2).max(64),
|
|
208
|
+
prices: z6.array(z6.object({
|
|
85
209
|
modelId: Id,
|
|
86
210
|
displayName: Id,
|
|
87
211
|
acceptedPricingHash: Hash2,
|
|
@@ -90,8 +214,8 @@ var Judges = z2.object({
|
|
|
90
214
|
outputUsdPerMillionTokens: Rate,
|
|
91
215
|
cacheWriteUsdPerMillionTokens: Rate.nullable(),
|
|
92
216
|
cacheWriteOneHourUsdPerMillionTokens: Rate.nullable(),
|
|
93
|
-
longContextThresholdTokens:
|
|
94
|
-
longContext:
|
|
217
|
+
longContextThresholdTokens: z6.number().int().positive().nullable(),
|
|
218
|
+
longContext: z6.object({
|
|
95
219
|
inputUsdPerMillionTokens: Rate,
|
|
96
220
|
cachedInputUsdPerMillionTokens: Rate,
|
|
97
221
|
outputUsdPerMillionTokens: Rate,
|
|
@@ -99,51 +223,51 @@ var Judges = z2.object({
|
|
|
99
223
|
}).strict().nullable()
|
|
100
224
|
}).strict()).max(64)
|
|
101
225
|
}).strict();
|
|
102
|
-
var TrainingBillingModesSchema =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
mode:
|
|
106
|
-
availability:
|
|
107
|
-
reason:
|
|
226
|
+
var TrainingBillingModesSchema = z6.tuple([
|
|
227
|
+
z6.object({ mode: z6.literal("prepaid_only"), availability: z6.literal("available"), reason: z6.null() }).strict(),
|
|
228
|
+
z6.object({
|
|
229
|
+
mode: z6.literal("actual_usage"),
|
|
230
|
+
availability: z6.enum(["unavailable", "requires_preparation"]),
|
|
231
|
+
reason: z6.string().min(1).max(500).nullable()
|
|
108
232
|
}).strict()
|
|
109
233
|
]);
|
|
110
|
-
var TrainingUsageFundingRequestSchema =
|
|
111
|
-
schemaVersion:
|
|
112
|
-
billingMode:
|
|
234
|
+
var TrainingUsageFundingRequestSchema = z6.object({
|
|
235
|
+
schemaVersion: z6.literal("openpond.trainingUsageFundingRequest.v1"),
|
|
236
|
+
billingMode: z6.literal("actual_usage"),
|
|
113
237
|
customerCapUsd: Cap
|
|
114
238
|
}).strict();
|
|
115
|
-
var TrainingUsageQualificationRefSchema =
|
|
116
|
-
authorizationId:
|
|
239
|
+
var TrainingUsageQualificationRefSchema = z6.object({
|
|
240
|
+
authorizationId: z6.uuid(),
|
|
117
241
|
operationId: Id,
|
|
118
242
|
authorizationSha256: Hash2
|
|
119
243
|
}).strict();
|
|
120
|
-
var TrainingUsageQuoteContentSchema =
|
|
121
|
-
schemaVersion:
|
|
244
|
+
var TrainingUsageQuoteContentSchema = z6.object({
|
|
245
|
+
schemaVersion: z6.literal("openpond.trainingUsageQuote.v1"),
|
|
122
246
|
teamId: Id,
|
|
123
247
|
actorUserId: Id,
|
|
124
248
|
preparationId: Id,
|
|
125
249
|
submissionHash: Hash2,
|
|
126
|
-
workerImageDigest:
|
|
250
|
+
workerImageDigest: z6.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
127
251
|
customerCapUsd: Cap,
|
|
128
|
-
maximumWallSeconds:
|
|
129
|
-
retentionDays:
|
|
252
|
+
maximumWallSeconds: z6.number().int().positive(),
|
|
253
|
+
retentionDays: z6.number().int().nonnegative(),
|
|
130
254
|
qualification: TrainingUsageQualificationRefSchema.optional(),
|
|
131
255
|
gpu: Price,
|
|
132
256
|
guests: Guests,
|
|
133
257
|
judges: Judges,
|
|
134
|
-
storage:
|
|
258
|
+
storage: z6.object({
|
|
135
259
|
price: Price,
|
|
136
|
-
storageClass:
|
|
137
|
-
quantityBasis:
|
|
138
|
-
onCreditExhaustion:
|
|
260
|
+
storageClass: z6.literal("STANDARD"),
|
|
261
|
+
quantityBasis: z6.literal("gib_milliseconds"),
|
|
262
|
+
onCreditExhaustion: z6.literal("retain_objects_and_stop_new_storage")
|
|
139
263
|
}).strict(),
|
|
140
|
-
gpuBillingBoundary:
|
|
141
|
-
storageBillingBoundary:
|
|
142
|
-
startupBillable:
|
|
143
|
-
postCompletionIdleBillable:
|
|
144
|
-
minimumBillableSeconds:
|
|
145
|
-
issuedAt:
|
|
146
|
-
expiresAt:
|
|
264
|
+
gpuBillingBoundary: z6.literal("active_allocation_until_verified_cleanup"),
|
|
265
|
+
storageBillingBoundary: z6.literal("accepted_retention_window"),
|
|
266
|
+
startupBillable: z6.literal(true),
|
|
267
|
+
postCompletionIdleBillable: z6.literal(false),
|
|
268
|
+
minimumBillableSeconds: z6.literal(0),
|
|
269
|
+
issuedAt: z6.iso.datetime(),
|
|
270
|
+
expiresAt: z6.iso.datetime()
|
|
147
271
|
}).strict();
|
|
148
272
|
var TrainingUsageQuoteSchema = TrainingUsageQuoteContentSchema.extend({ contentHash: Hash2, signature: Id }).strict();
|
|
149
273
|
async function verifyTrainingUsageQuote(raw, expected) {
|
|
@@ -153,130 +277,6 @@ async function verifyTrainingUsageQuote(raw, expected) {
|
|
|
153
277
|
return quote;
|
|
154
278
|
}
|
|
155
279
|
|
|
156
|
-
// src/training-recovery.ts
|
|
157
|
-
import { z as z3 } from "zod";
|
|
158
|
-
var id = z3.string().trim().min(1).max(191);
|
|
159
|
-
var hash = z3.string().regex(/^[a-f0-9]{64}$/);
|
|
160
|
-
var ApprovalBodySchema = z3.object({
|
|
161
|
-
schemaVersion: z3.literal("openpond.checkpointRecoveryResourceApproval.v1"),
|
|
162
|
-
ownerUserId: id,
|
|
163
|
-
teamId: id,
|
|
164
|
-
sourceJobId: id,
|
|
165
|
-
sourceJobVersion: z3.number().int().positive(),
|
|
166
|
-
sourceInputManifestSha256: hash,
|
|
167
|
-
checkpointId: id,
|
|
168
|
-
adapterSha256: hash,
|
|
169
|
-
resumeSha256: hash,
|
|
170
|
-
idempotencyKey: z3.string().trim().min(16).max(191),
|
|
171
|
-
approvedAt: z3.iso.datetime({ offset: true }),
|
|
172
|
-
maximumSpendUsd: z3.number().positive().finite().max(30).refine(
|
|
173
|
-
(value) => Number(value.toFixed(6)) === value,
|
|
174
|
-
"Recovery spend must use whole microdollars"
|
|
175
|
-
),
|
|
176
|
-
maximumGpuSeconds: z3.number().int().positive().max(21600),
|
|
177
|
-
maximumWallSeconds: z3.number().int().positive().max(21600)
|
|
178
|
-
}).strict();
|
|
179
|
-
var TrainingCheckpointRecoveryResourceApprovalSchema = ApprovalBodySchema.extend({
|
|
180
|
-
approvalHash: hash
|
|
181
|
-
}).strict().superRefine((value, context) => {
|
|
182
|
-
if (value.maximumGpuSeconds > value.maximumWallSeconds)
|
|
183
|
-
context.addIssue({
|
|
184
|
-
code: "custom",
|
|
185
|
-
path: ["maximumGpuSeconds"],
|
|
186
|
-
message: "Recovery GPU duration exceeds its wall"
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
async function createTrainingCheckpointRecoveryResourceApproval(input) {
|
|
190
|
-
const body = ApprovalBodySchema.parse(input);
|
|
191
|
-
return TrainingCheckpointRecoveryResourceApprovalSchema.parse({
|
|
192
|
-
...body,
|
|
193
|
-
approvalHash: await canonicalSha256(body)
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
var TrainingCheckpointRecoveryRequestSchema = z3.object({
|
|
197
|
-
resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),
|
|
198
|
-
mode: z3.literal("evaluation_only").optional(),
|
|
199
|
-
evaluationGpuType: z3.enum(["NVIDIA A100 80GB PCIe", "NVIDIA A100-SXM4-80GB", "NVIDIA H100 80GB HBM3"]).optional(),
|
|
200
|
-
expectedVersion: z3.number().int().positive(),
|
|
201
|
-
checkpointId: id,
|
|
202
|
-
idempotencyKey: z3.string().trim().min(16).max(191),
|
|
203
|
-
maximumSpendUsd: z3.number().positive().finite(),
|
|
204
|
-
maximumWallSeconds: z3.number().int().positive().max(21600)
|
|
205
|
-
}).strict().superRefine((value, context) => {
|
|
206
|
-
if (value.evaluationGpuType && value.mode !== "evaluation_only")
|
|
207
|
-
context.addIssue({
|
|
208
|
-
code: "custom",
|
|
209
|
-
path: ["evaluationGpuType"],
|
|
210
|
-
message: "GPU substitution requires explicit evaluation-only recovery"
|
|
211
|
-
});
|
|
212
|
-
const a = value.resourceApproval;
|
|
213
|
-
if (a && (a.sourceJobVersion !== value.expectedVersion || a.checkpointId !== value.checkpointId || a.idempotencyKey !== value.idempotencyKey || a.maximumSpendUsd !== value.maximumSpendUsd || a.maximumWallSeconds !== value.maximumWallSeconds))
|
|
214
|
-
context.addIssue({
|
|
215
|
-
code: "custom",
|
|
216
|
-
path: ["resourceApproval"],
|
|
217
|
-
message: "Recovery resource approval does not match its request"
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
// src/training-physical-placement.ts
|
|
222
|
-
import { z as z4 } from "zod";
|
|
223
|
-
var TrainingPhysicalPlacementSchema = z4.object({
|
|
224
|
-
mode: z4.literal("reuse_only"),
|
|
225
|
-
physicalWorkerId: z4.string().trim().min(1).max(191),
|
|
226
|
-
providerPodId: z4.string().trim().min(1).max(191),
|
|
227
|
-
workerImageDigest: z4.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
228
|
-
baseProfileSha256: z4.string().regex(/^[a-f0-9]{64}$/),
|
|
229
|
-
gpuType: z4.string().trim().min(1).max(200),
|
|
230
|
-
sourceJobId: z4.string().trim().min(1).max(191),
|
|
231
|
-
sourceInputManifestSha256: z4.string().regex(/^[a-f0-9]{64}$/),
|
|
232
|
-
ownerTeamId: z4.string().trim().min(1).max(191),
|
|
233
|
-
deadlineAt: z4.string().datetime({ offset: true })
|
|
234
|
-
}).strict();
|
|
235
|
-
|
|
236
|
-
// src/training-queue.ts
|
|
237
|
-
import { z as z5 } from "zod";
|
|
238
|
-
var Timestamp = z5.string().datetime({ offset: true });
|
|
239
|
-
var TrainingQueueStatusSchema = z5.object({
|
|
240
|
-
ticketId: z5.string().trim().min(1).max(191),
|
|
241
|
-
ticketNumber: z5.number().int().positive().max(Number.MAX_SAFE_INTEGER),
|
|
242
|
-
label: z5.literal("Waiting for resources"),
|
|
243
|
-
position: z5.number().int().positive().nullable(),
|
|
244
|
-
positionScope: z5.literal("compatible_fair_queue"),
|
|
245
|
-
enqueuedAt: Timestamp,
|
|
246
|
-
asOf: Timestamp,
|
|
247
|
-
estimate: z5.object({
|
|
248
|
-
revision: z5.number().int().nonnegative(),
|
|
249
|
-
estimatedStartAt: Timestamp,
|
|
250
|
-
expiresAt: Timestamp,
|
|
251
|
-
evidence: z5.enum(["observed_capacity", "measured_bootstrap", "scheduled_release"])
|
|
252
|
-
}).strict().nullable()
|
|
253
|
-
}).strict().superRefine((value, context) => {
|
|
254
|
-
if (value.estimate && Date.parse(value.estimate.expiresAt) <= Date.parse(value.asOf))
|
|
255
|
-
context.addIssue({ code: "custom", path: ["estimate"], message: "An expired queue forecast must be returned as unavailable" });
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
// src/training-usage-status.ts
|
|
259
|
-
import { z as z6 } from "zod";
|
|
260
|
-
var Money2 = z6.string().regex(/^(0|[1-9]\d*)\.\d{6}$/).max(24).refine((value) => /^(0|[1-9]\d*)\.\d{6}$/.test(value) && value.length <= 24 && BigInt(value.replace(".", "")) <= BigInt(Number.MAX_SAFE_INTEGER));
|
|
261
|
-
var TrainingUsageSnapshotSchema = z6.object({
|
|
262
|
-
schemaVersion: z6.literal("openpond.trainingUsageSnapshot.v1"),
|
|
263
|
-
asOf: z6.iso.datetime(),
|
|
264
|
-
customerCapUsd: Money2.nullable(),
|
|
265
|
-
chargedUsd: Money2,
|
|
266
|
-
committedUsd: Money2,
|
|
267
|
-
outstandingUsd: Money2,
|
|
268
|
-
remainingCapUsd: Money2.nullable(),
|
|
269
|
-
availableCreditUsd: Money2,
|
|
270
|
-
complete: z6.boolean(),
|
|
271
|
-
components: z6.array(z6.object({
|
|
272
|
-
component: z6.enum(["gpu", "guest", "storage", "judge"]),
|
|
273
|
-
chargedUsd: Money2,
|
|
274
|
-
committedUsd: Money2,
|
|
275
|
-
outstandingUsd: Money2,
|
|
276
|
-
openOwners: z6.number().int().nonnegative()
|
|
277
|
-
}).strict()).length(4).refine((values) => values.every((value, index) => value.component === ["gpu", "guest", "storage", "judge"][index]))
|
|
278
|
-
}).strict();
|
|
279
|
-
|
|
280
280
|
// src/training-job-contracts.ts
|
|
281
281
|
import { z as z7 } from "zod";
|
|
282
282
|
import { TrainingHandoffOriginSchema } from "@openpond/evals/learning";
|
|
@@ -817,6 +817,12 @@ async function trainingEvaluationSourceRef(input) {
|
|
|
817
817
|
}
|
|
818
818
|
|
|
819
819
|
export {
|
|
820
|
+
TrainingCheckpointRecoveryResourceApprovalSchema,
|
|
821
|
+
createTrainingCheckpointRecoveryResourceApproval,
|
|
822
|
+
TrainingCheckpointRecoveryRequestSchema,
|
|
823
|
+
TrainingPhysicalPlacementSchema,
|
|
824
|
+
TrainingQueueStatusSchema,
|
|
825
|
+
TrainingUsageSnapshotSchema,
|
|
820
826
|
ComputeAppliedPriceSchema,
|
|
821
827
|
ManagedModificationPriceSchema,
|
|
822
828
|
canonicalComputeSpendCap,
|
|
@@ -828,12 +834,6 @@ export {
|
|
|
828
834
|
TrainingUsageQuoteContentSchema,
|
|
829
835
|
TrainingUsageQuoteSchema,
|
|
830
836
|
verifyTrainingUsageQuote,
|
|
831
|
-
TrainingCheckpointRecoveryResourceApprovalSchema,
|
|
832
|
-
createTrainingCheckpointRecoveryResourceApproval,
|
|
833
|
-
TrainingCheckpointRecoveryRequestSchema,
|
|
834
|
-
TrainingPhysicalPlacementSchema,
|
|
835
|
-
TrainingQueueStatusSchema,
|
|
836
|
-
TrainingUsageSnapshotSchema,
|
|
837
837
|
TrainingInputArtifactUploadSchema,
|
|
838
838
|
TrainingInputArtifactSchema,
|
|
839
839
|
trainingInputArtifactUploadHash,
|
|
@@ -872,4 +872,4 @@ export {
|
|
|
872
872
|
assertTrainingEvaluationIsolation,
|
|
873
873
|
trainingEvaluationSourceRef
|
|
874
874
|
};
|
|
875
|
-
//# sourceMappingURL=chunk-
|
|
875
|
+
//# sourceMappingURL=chunk-XYK3MAIC.js.map
|