openpond-sdk 0.9.8 → 0.9.9

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 (36) hide show
  1. package/dist/{chunk-RXKIOOFZ.js → chunk-4JRSH2TT.js} +2 -2
  2. package/dist/chunk-4JRSH2TT.js.map +7 -0
  3. package/dist/{chunk-A4ZDOZKP.js → chunk-K3JCP4FO.js} +11 -5
  4. package/dist/chunk-K3JCP4FO.js.map +7 -0
  5. package/dist/{chunk-TQ5ASK7D.js → chunk-XMKEFQ62.js} +2 -2
  6. package/dist/dataset-workspaces.js +9 -5
  7. package/dist/dataset-workspaces.js.map +2 -2
  8. package/dist/experiments.js +34 -2
  9. package/dist/experiments.js.map +3 -3
  10. package/dist/index.js +1 -1
  11. package/dist/learning.js +8 -0
  12. package/dist/learning.js.map +3 -3
  13. package/dist/taskset-catalog.js +1 -1
  14. package/dist/taskset-drafts.js +2 -2
  15. package/dist/taskset-packages.js +2 -2
  16. package/dist/types/packages/sdk/src/dataset-grader-selection.d.ts +24 -0
  17. package/dist/types/packages/sdk/src/dataset-grader-selection.d.ts.map +1 -0
  18. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +2 -4
  19. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  20. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +11 -0
  21. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
  22. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  23. package/dist/types/packages/sdk/src/experiments.d.ts +1 -0
  24. package/dist/types/packages/sdk/src/experiments.d.ts.map +1 -1
  25. package/dist/types/packages/sdk/src/grader-feedback-key.d.ts +3 -0
  26. package/dist/types/packages/sdk/src/grader-feedback-key.d.ts.map +1 -0
  27. package/dist/types/packages/sdk/src/learning.d.ts +1 -0
  28. package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
  29. package/dist/types/packages/sdk/src/taskset-catalog.d.ts +7 -0
  30. package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
  31. package/dist/types/packages/sdk/src/training-project-client.d.ts +4 -4
  32. package/dist/types/packages/sdk/src/training-project-contracts.d.ts +6 -6
  33. package/package.json +1 -1
  34. package/dist/chunk-A4ZDOZKP.js.map +0 -7
  35. package/dist/chunk-RXKIOOFZ.js.map +0 -7
  36. /package/dist/{chunk-TQ5ASK7D.js.map → chunk-XMKEFQ62.js.map} +0 -0
@@ -125,7 +125,7 @@ var OpenPondExperimentsClient = class {
125
125
  }
126
126
  async list(value = {}, signal) {
127
127
  const query = ExperimentListQuerySchema.parse(value);
128
- const params = new URLSearchParams(Object.entries(query).map(([key, value2]) => [key, String(value2)]));
128
+ const params = new URLSearchParams(Object.entries(query).filter(([, value2]) => value2 !== void 0).map(([key, value2]) => [key, String(value2)]));
129
129
  const page = z2.object({ items: z2.array(z2.unknown()).max(100), nextCursor: Id2.nullable() }).strict().parse(await this.request(`?${params}`, "GET", void 0, signal));
130
130
  const items = page.items.map((value2) => this.definition(value2));
131
131
  if (items.length > query.limit || new Set(items.map((item) => item.id)).size !== items.length || items.some((item) => query.projectId && item.request.project?.id !== query.projectId || query.datasetHash && item.request.taskset.contentHash !== query.datasetHash))
@@ -253,4 +253,4 @@ export {
253
253
  OpenPondExperimentError,
254
254
  OpenPondExperimentsClient
255
255
  };
256
- //# sourceMappingURL=chunk-RXKIOOFZ.js.map
256
+ //# sourceMappingURL=chunk-4JRSH2TT.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/experiment-scoring-contracts.ts", "../src/experiment-client.ts"],
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { contentHash, ImmutableReleaseRefSchema } from \"@openpond/harness\";\nimport { RewardReleaseRefSchema } from \"@openpond/evals/rewards\";\nimport { ExperimentGraderPinSchema } from \"./experiment-contracts.js\";\nimport { ExperimentFieldMappingsSchema } from \"./experiment-field-mappings.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nexport const ExperimentScoringRequestSchema = z.object({\n operationId: Id,\n execution: ImmutableReleaseRefSchema,\n graders: z.array(RewardReleaseRefSchema).min(1).max(100),\n maximumCostUsd: z.number().finite().min(0.000001).max(10_000),\n mappings: z.array(z.object({ graderId: Id, fields: ExperimentFieldMappingsSchema }).strict()).max(100).optional(),\n}).strict().superRefine((value, context) => {\n if (new Set(value.graders.map(grader => grader.id)).size !== value.graders.length)\n context.addIssue({ code: \"custom\", path: [\"graders\"], message: \"Select each grader once.\" });\n if (value.mappings && (new Set(value.mappings.map(mapping => mapping.graderId)).size !== value.mappings.length\n || value.mappings.some(mapping => !value.graders.some(grader => grader.id === mapping.graderId))))\n context.addIssue({ code: \"custom\", path: [\"mappings\"], message: \"Map each selected grader at most once.\" });\n});\nexport type ExperimentScoringRequest = z.infer<typeof ExperimentScoringRequestSchema>;\n\nconst ScoringPassContent = z.object({\n schemaVersion: z.literal(\"openpond.experimentScoringPass.v1\"),\n id: Id, teamId: Id, revision: z.number().int().positive(),\n request: ExperimentScoringRequestSchema,\n graders: z.array(ExperimentGraderPinSchema).min(1).max(100),\n status: z.enum([\"queued\", \"running\", \"cancelling\", \"completed\", \"failed\", \"cancelled\"]),\n totalCount: z.number().int().min(1).max(10_000),\n counts: z.object({ pending: z.number().int().nonnegative(), running: z.number().int().nonnegative(),\n scored: z.number().int().nonnegative(), unavailable: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(), cancelled: z.number().int().nonnegative() }).strict(),\n resultAvailable: z.boolean(), createdAt: z.iso.datetime(), startedAt: z.iso.datetime().nullable(),\n completedAt: z.iso.datetime().nullable(),\n error: z.object({ code: Id, message: z.string().max(2_000) }).strict().nullable(),\n}).strict();\nexport const ExperimentScoringPassSchema = ScoringPassContent.extend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ExperimentScoringPass = z.infer<typeof ExperimentScoringPassSchema>;\n\n/** A pass grades owned output and carries no model-execution authority. */\nexport function verifyExperimentScoringPass(value: unknown) {\n const pass = ExperimentScoringPassSchema.parse(value);\n const { contentHash: actual, ...content } = pass;\n if (contentHash(content) !== actual || Object.values(pass.counts).reduce((sum, count) => sum + count, 0) !== pass.totalCount)\n throw new Error(\"Scoring pass integrity or population accounting failed.\");\n const terminal = [\"completed\", \"failed\", \"cancelled\"].includes(pass.status);\n if (terminal && (!pass.completedAt || pass.counts.pending || pass.counts.running)\n || !terminal && (pass.completedAt !== null || pass.resultAvailable)\n || pass.status === \"completed\" && !pass.resultAvailable)\n throw new Error(\"Scoring pass lifecycle differs from its retained result.\");\n if (pass.graders.length !== pass.request.graders.length || new Set(pass.graders.map(grader => grader.feedbackKey)).size !== pass.graders.length\n || pass.graders.some((grader, index) => contentHash(grader.release) !== contentHash(pass.request.graders[index]!)\n || contentHash(grader.mappings ?? []) !== contentHash(pass.request.mappings?.find(mapping => mapping.graderId === grader.release?.id)?.fields ?? [])))\n throw new Error(\"Scoring pass graders differ from their exact admission.\");\n return pass;\n}\n", "import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { compareExperiments, verifyExperimentEvidence } from \"@openpond/evals/experiments\";\nimport { ExperimentDefinitionRefSchema, ExperimentListQuerySchema, SaveExperimentSchema, StartExperimentSchema, experimentDefinitionRef,\n verifyExperimentDefinition, type ExperimentDefinitionRef } from \"./experiment-contracts.js\";\nimport { PrepareHarnessExperimentSchema, PreparedHarnessExperimentSchema } from \"./experiment-contracts.js\";\nimport { verifyHarnessExperimentManifest, verifyModelTasksetRunDetails } from \"./model-taskset-runs-contracts.js\";\nimport { ExperimentScoringRequestSchema, verifyExperimentScoringPass, type ExperimentScoringRequest } from \"./experiment-scoring-contracts.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nexport class OpenPondExperimentError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondExperimentError\"; }\n}\n\n/** Saved configuration and execution identities share the host's service. */\nexport class OpenPondExperimentsClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim())\n throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n /** Resolves a released target without saving a definition or dispatching it. */\n async prepareHarness(value: z.input<typeof PrepareHarnessExperimentSchema>, signal?: AbortSignal) {\n const request = PrepareHarnessExperimentSchema.parse(value);\n const result = PreparedHarnessExperimentSchema.parse(await this.request(\"/harness-setup\", \"POST\", request, signal));\n verifyHarnessExperimentManifest(result.request, result.manifest);\n const policy = result.request.policy;\n if (result.request.teamId !== this.options.teamId || result.request.operationId !== request.operationId\n || policy.kind !== \"hosted_harness\" || policy.profileRepositoryId !== request.profileRepositoryId\n || policy.source.definitionId !== request.definitionId || policy.modelId !== request.modelId\n || policy.reasoningEffort !== request.reasoningEffort || result.maximumCostUsd !== request.maximumCostUsd\n || result.manifest.limits.maximumSpendUsd !== request.maximumCostUsd)\n throw new Error(\"Harness preparation differs from its requested scope or configuration.\");\n return result;\n }\n async save(value: z.input<typeof SaveExperimentSchema>, signal?: AbortSignal) {\n const request = SaveExperimentSchema.parse(value);\n if (request.request.teamId !== this.options.teamId) throw new Error(\"Experiment workspace mismatch.\");\n const result = this.definition(await this.request(\"\", \"POST\", request, signal), request.id);\n if (result.revision !== request.expectedRevision + 1 || contentHash(result.request) !== contentHash(request.request)\n || result.maximumCostUsd !== request.maximumCostUsd) throw new Error(\"Experiment save receipt differs from its submitted configuration.\");\n if (request.graders && contentHash(request.graders) !== contentHash(result.graders.map(grader => ({ id: grader.id, version: grader.version, contentHash: grader.contentHash, mappings: grader.mappings ?? [] }))))\n throw new Error(\"Experiment save receipt differs from its selected graders or mappings.\");\n return result;\n }\n async get(id: string, options: { reference?: ExperimentDefinitionRef; signal?: AbortSignal } = {}) {\n const reference = options.reference ? ExperimentDefinitionRefSchema.parse(options.reference) : undefined;\n if (reference && reference.id !== id) throw new Error(\"Experiment reference identity mismatch.\");\n const suffix = reference ? `?${new URLSearchParams({ revision: String(reference.revision), contentHash: reference.contentHash })}` : \"\";\n const result = this.definition(await this.request(`/${encodeURIComponent(Id.parse(id))}${suffix}`, \"GET\", undefined, options.signal), id);\n if (options.reference && contentHash(experimentDefinitionRef(result)) !== contentHash(options.reference)) throw new Error(\"Experiment revision mismatch.\");\n return result;\n }\n async list(value: z.input<typeof ExperimentListQuerySchema> = {}, signal?: AbortSignal) {\n const query = ExperimentListQuerySchema.parse(value);\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const page = z.object({ items: z.array(z.unknown()).max(100), nextCursor: Id.nullable() }).strict().parse(await this.request(`?${params}`, \"GET\", undefined, signal));\n const items = page.items.map(value => this.definition(value));\n if (items.length > query.limit || new Set(items.map(item => item.id)).size !== items.length\n || items.some(item => query.projectId && item.request.project?.id !== query.projectId || query.datasetHash && item.request.taskset.contentHash !== query.datasetHash))\n throw new Error(\"Experiment page differs from its selected scope.\");\n return { items, nextCursor: page.nextCursor };\n }\n async start(value: z.input<typeof StartExperimentSchema>, signal?: AbortSignal) {\n const request = StartExperimentSchema.parse(value);\n const response = z.object({ definition: z.unknown(), run: z.unknown() }).strict().parse(\n await this.request(`/${encodeURIComponent(request.definition.id)}/start`, \"POST\", request, signal));\n const definition = this.definition(response.definition, request.definition.id);\n if (contentHash(experimentDefinitionRef(definition)) !== contentHash(request.definition)) throw new Error(\"Experiment Start revision mismatch.\");\n const result = await verifyModelTasksetRunDetails(response.run);\n if (result.summary.teamId !== this.options.teamId || result.request.operationId !== request.operationId\n || contentHash(savedRequestPopulation(result.request))\n !== contentHash(savedRequestPopulation({ ...definition.request, operationId: request.operationId }))\n || contentHash(result.manifest.metadata.experimentDefinition) !== contentHash(request.definition)\n || result.manifest.metadata.experimentConfigurationHash !== contentHash({ definition: request.definition, maximumCostUsd: definition.maximumCostUsd, graders: definition.graders }))\n throw new Error(\"Experiment execution differs from its saved configuration.\");\n return result;\n }\n async result(executionId: string, signal?: AbortSignal) {\n const value = z.object({ executionId: Id, passId: Id.nullable(), manifest: z.unknown(), result: z.unknown() }).strict()\n .parse(await this.request(`/executions/${encodeURIComponent(Id.parse(executionId))}/result`, \"GET\", undefined, signal));\n const evidence = verifyExperimentEvidence(value);\n if (value.executionId !== executionId || evidence.manifest.teamId !== this.options.teamId\n || evidence.manifest.lineage?.execution.id !== executionId\n || evidence.manifest.lineage.scoringPassId !== value.passId) throw new Error(\"Experiment result identity mismatch.\");\n return { ...evidence, executionId, passId: value.passId };\n }\n async executions(definitionId: string, options: { afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const page = z.object({ items: z.array(z.unknown()).max(30), nextCursor: Id.nullable() }).strict().parse(\n await this.request(`/${encodeURIComponent(Id.parse(definitionId))}/executions?${params}`, \"GET\", undefined, options.signal));\n const items = await Promise.all(page.items.map(value => verifyModelTasksetRunDetails(value)));\n if (items.some(item => item.summary.teamId !== this.options.teamId\n || ExperimentDefinitionRefSchema.parse(item.manifest.metadata.experimentDefinition).id !== definitionId)\n || new Set(items.map(item => item.summary.id)).size !== items.length)\n throw new Error(\"Experiment execution page has invalid ownership or repeated identities.\");\n return { items, nextCursor: page.nextCursor };\n }\n async execution(id: string, signal?: AbortSignal) {\n return this.executionDetails(await this.request(`/executions/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal), id);\n }\n async cancel(id: string, signal?: AbortSignal) {\n return this.executionDetails(await this.request(`/executions/${encodeURIComponent(Id.parse(id))}/cancel`, \"POST\", {}, signal), id);\n }\n /** Retry intentionally creates another execution; a transport retry reuses the same operation id. */\n async retry(id: string, operationId: string, signal?: AbortSignal) {\n const result = await this.executionDetails(await this.request(`/executions/${encodeURIComponent(Id.parse(id))}/retry`, \"POST\", { operationId: Id.parse(operationId) }, signal));\n if (result.request.operationId !== operationId) throw new Error(\"Experiment retry operation mismatch.\");\n return result;\n }\n async score(value: ExperimentScoringRequest, signal?: AbortSignal) {\n const request = ExperimentScoringRequestSchema.parse(value);\n const pass = this.pass(await this.request(`/executions/${encodeURIComponent(request.execution.id)}/scoring-passes`, \"POST\", request, signal));\n if (contentHash(pass.request) !== contentHash(request)) throw new Error(\"Scoring admission differs from its submitted inputs.\");\n return pass;\n }\n async scoringPass(id: string, signal?: AbortSignal) {\n return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal), id);\n }\n async scoringPasses(executionId: string, options: { afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const page = z.object({ items: z.array(z.unknown()).max(30), nextCursor: Id.nullable() }).strict().parse(\n await this.request(`/executions/${encodeURIComponent(Id.parse(executionId))}/scoring-passes?${params}`, \"GET\", undefined, options.signal));\n const items = page.items.map(value => this.pass(value));\n if (items.some(item => item.request.execution.id !== executionId) || new Set(items.map(item => item.id)).size !== items.length)\n throw new Error(\"Scoring pass page differs from its execution ownership.\");\n return { items, nextCursor: page.nextCursor };\n }\n async cancelScoringPass(id: string, signal?: AbortSignal) {\n return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}/cancel`, \"POST\", {}, signal), id);\n }\n async scoringResult(id: string, signal?: AbortSignal) {\n const value = z.object({ executionId: Id, passId: Id, manifest: z.unknown(), result: z.unknown() }).strict().parse(\n await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}/result`, \"GET\", undefined, signal));\n const evidence = verifyExperimentEvidence(value);\n if (value.passId !== id || evidence.manifest.teamId !== this.options.teamId || evidence.manifest.id !== id\n || evidence.manifest.lineage?.execution.id !== value.executionId || evidence.manifest.lineage.scoringPassId !== id)\n throw new Error(\"Scoring result identity mismatch.\");\n return { ...evidence, executionId: value.executionId, passId: id };\n }\n async compare(baselineId: string, candidateId: string, signal?: AbortSignal) {\n const read = (id: string) => id.startsWith(\"score_\") ? this.scoringResult(id, signal) : this.result(id, signal);\n const [baseline, candidate] = await Promise.all([read(baselineId), read(candidateId)]);\n return { baseline, candidate, comparison: compareExperiments(baseline, candidate) };\n }\n private definition(value: unknown, id?: string) {\n const result = verifyExperimentDefinition(value);\n if (result.teamId !== this.options.teamId || id && result.id !== id) throw new Error(\"Experiment identity mismatch.\");\n return result;\n }\n private async executionDetails(value: unknown, id?: string) {\n const details = await verifyModelTasksetRunDetails(value);\n if (details.summary.teamId !== this.options.teamId || id && details.summary.id !== id) throw new Error(\"Experiment execution identity mismatch.\");\n return details;\n }\n private pass(value: unknown, id?: string) {\n const pass = verifyExperimentScoringPass(value);\n if (pass.teamId !== this.options.teamId || id && pass.id !== id) throw new Error(\"Scoring pass identity mismatch.\");\n return pass;\n }\n private async request(path: string, method: string, body?: unknown, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments${path}`, {\n method, signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n const value = await response.json();\n if (!response.ok) {\n const parsed = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondExperimentError(response.status, parsed.success ? parsed.data.code : \"experiment_request_failed\", parsed.success ? parsed.data.message : \"Experiment request failed.\");\n }\n return value;\n }\n}\n\n/** Native Harness assigns receipt IDs when sealing each new execution. Its\n * saved population still pins every task/seed; Model receipts stay exact. */\nfunction savedRequestPopulation(request: z.infer<typeof SaveExperimentSchema>[\"request\"]) {\n return request.policy.kind === \"hosted_harness\" ? {\n ...request, population: request.population.map(({ receiptId: _id, ...member }) => member),\n } : request;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["z", "Id", "z", "value"]
7
+ }
@@ -18,13 +18,16 @@ var HostedTasksetSummarySchema = z.object({
18
18
  createdAt: z.string().datetime({ offset: true })
19
19
  }).strict();
20
20
  var TasksetCatalogQuerySchema = z.object({
21
- afterId: IdSchema.optional(),
21
+ afterId: z.string().trim().min(1).max(2e3).optional(),
22
22
  limit: z.number().int().min(1).max(100).default(30),
23
- modelProjectId: IdSchema.optional()
23
+ modelProjectId: IdSchema.optional(),
24
+ projectId: IdSchema.optional(),
25
+ search: z.string().trim().max(100).optional(),
26
+ sort: z.enum(["id", "name", "updated"]).default("id")
24
27
  }).strict();
25
28
  var TasksetCatalogPageSchema = z.object({
26
29
  items: z.array(HostedTasksetSummarySchema).max(100),
27
- nextCursor: IdSchema.nullable()
30
+ nextCursor: z.string().trim().min(1).max(2e3).nullable()
28
31
  }).strict();
29
32
  var TasksetCatalogErrorSchema = z.object({
30
33
  code: z.string().min(1),
@@ -53,8 +56,11 @@ var OpenPondTasksetCatalogClient = class {
53
56
  const search = new URLSearchParams({ limit: String(parsed.limit) });
54
57
  if (parsed.afterId) search.set("afterId", parsed.afterId);
55
58
  if (parsed.modelProjectId) search.set("modelProjectId", parsed.modelProjectId);
59
+ if (parsed.projectId) search.set("projectId", parsed.projectId);
60
+ if (parsed.search !== void 0) search.set("search", parsed.search);
61
+ search.set("sort", parsed.sort);
56
62
  const page = TasksetCatalogPageSchema.parse(await this.#request(`?${search}`, options.signal));
57
- if (page.items.length > parsed.limit || 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.");
63
+ 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.");
58
64
  return page;
59
65
  }
60
66
  async get(id, options = {}) {
@@ -112,4 +118,4 @@ export {
112
118
  OpenPondTasksetCatalogError,
113
119
  OpenPondTasksetCatalogClient
114
120
  };
115
- //# sourceMappingURL=chunk-A4ZDOZKP.js.map
121
+ //# sourceMappingURL=chunk-K3JCP4FO.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/taskset-catalog.ts"],
4
+ "sourcesContent": ["import { 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);\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"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TasksetCatalogReleaseRefSchema
3
- } from "./chunk-A4ZDOZKP.js";
3
+ } from "./chunk-K3JCP4FO.js";
4
4
  import {
5
5
  MAX_TASKSET_PACKAGE_BYTES,
6
6
  TasksetPackageSchema,
@@ -168,4 +168,4 @@ export {
168
168
  OpenPondTasksetPackageError,
169
169
  OpenPondTasksetPackageClient
170
170
  };
171
- //# sourceMappingURL=chunk-TQ5ASK7D.js.map
171
+ //# sourceMappingURL=chunk-XMKEFQ62.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-32H2EJRA.js";
8
8
  import {
9
9
  TasksetCatalogReleaseRefSchema
10
- } from "./chunk-A4ZDOZKP.js";
10
+ } from "./chunk-K3JCP4FO.js";
11
11
  import "./chunk-DT7FRNIZ.js";
12
12
  import "./chunk-LGEF4S5I.js";
13
13
  import "./chunk-WOPM32SE.js";
@@ -29,6 +29,7 @@ import {
29
29
  import { z } from "zod";
30
30
  var Id = z.string().trim().min(1).max(240);
31
31
  var Hash = z.string().regex(/^[a-f0-9]{64}$/);
32
+ var DatasetWorkspaceListQuerySchema = z.object({ cursor: z.string().trim().min(1).max(2e3).optional(), projectId: Id.optional(), search: z.string().trim().max(100).optional(), sort: z.enum(["id", "name", "updated"]).default("id"), limit: z.number().int().min(1).max(100).default(100) }).strict();
32
33
  var DatasetWorkspaceWriteSchema = z.object({
33
34
  operationId: Id,
34
35
  expectedRevision: z.number().int().nonnegative(),
@@ -67,7 +68,7 @@ var DatasetWorkspaceListSchema = z.object({ teamId: Id, datasets: z.array(z.obje
67
68
  ownerScope: z.enum(["workspace", "personal"]).optional(),
68
69
  publication: DatasetWorkspaceReceiptSchema.shape.publication,
69
70
  updatedAt: z.string().datetime()
70
- }).strict()).max(100), nextCursor: Id.nullable() }).strict();
71
+ }).strict()).max(100), nextCursor: z.string().trim().min(1).max(2e3).nullable() }).strict();
71
72
  var DatasetWorkspaceValidationSchema = z.object({ teamId: Id, datasetId: Id, revision: z.number().int().positive(), workspaceHash: Hash, packageHash: Hash, release: TasksetCatalogReleaseRefSchema }).strict();
72
73
 
73
74
  // src/dataset-workspace-operations.ts
@@ -92,9 +93,11 @@ var OpenPondDatasetWorkspaceClient = class {
92
93
  options;
93
94
  baseUrl;
94
95
  async list(options = {}) {
95
- const params = new URLSearchParams({ ...options.cursor ? { cursor: options.cursor } : {}, ...options.projectId ? { projectId: options.projectId } : {} });
96
- const result = DatasetWorkspaceListSchema.parse(await this.request(`?${params}`, "GET", void 0, options.signal));
97
- if (result.teamId !== this.options.teamId) throw new Error("Dataset list workspace mismatch.");
96
+ const { signal, ...input } = options;
97
+ const query = DatasetWorkspaceListQuerySchema.parse(input);
98
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)]));
99
+ const result = DatasetWorkspaceListSchema.parse(await this.request(`?${params}`, "GET", void 0, signal));
100
+ if (result.teamId !== this.options.teamId || result.datasets.length > query.limit || new Set(result.datasets.map((item) => item.id)).size !== result.datasets.length) throw new Error("Dataset list workspace/page mismatch.");
98
101
  return result;
99
102
  }
100
103
  async get(id, signal) {
@@ -269,6 +272,7 @@ export {
269
272
  DatasetPopulationPageSchema,
270
273
  DatasetPopulationQuerySchema,
271
274
  DatasetWorkspaceBeginVersionSchema,
275
+ DatasetWorkspaceListQuerySchema,
272
276
  DatasetWorkspaceListSchema,
273
277
  DatasetWorkspaceOperationKindSchema,
274
278
  DatasetWorkspaceOperationResultSchema,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/dataset-workspace-contracts.ts", "../src/dataset-workspace-operations.ts", "../src/dataset-workspace-client.ts", "../src/dataset-population.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { TasksetDraftWorkspaceSchema } from \"./taskset-draft-workspace.js\";\nimport { TasksetCatalogReleaseRefSchema } from \"./taskset-catalog.js\";\nexport { compileTasksetDraftWorkspace } from \"./taskset-draft-package-compiler.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DatasetWorkspaceWriteSchema = z.object({\n operationId: Id, expectedRevision: z.number().int().nonnegative(), originProjectId: Id.optional(), workspace: TasksetDraftWorkspaceSchema,\n ownerScope: z.enum([\"workspace\", \"personal\"]).optional(),\n}).strict().superRefine((value, ctx) => {\n if (value.workspace.draft.modelScope !== null) ctx.addIssue({ code: \"custom\", message: \"Independent datasets cannot carry Model-owned draft preparation.\" });\n if (value.workspace.draft.status !== \"draft\") ctx.addIssue({ code: \"custom\", message: \"Only draft workspaces can be saved.\" });\n});\nexport const DatasetWorkspaceReceiptSchema = z.object({\n schemaVersion: z.literal(\"openpond.datasetWorkspaceReceipt.v1\"), teamId: Id, datasetId: Id,\n revision: z.number().int().positive(), originProjectId: Id.optional(), workspace: TasksetDraftWorkspaceSchema,\n ownerScope: z.enum([\"workspace\", \"personal\"]).optional(),\n publication: z.object({ tasksetId: Id, release: TasksetCatalogReleaseRefSchema, packageHash: Hash }).strict().nullable(),\n}).strict().superRefine((value, ctx) => {\n if (value.workspace.draft.id !== value.datasetId || value.workspace.draft.profileId !== value.teamId || value.workspace.draft.revision !== value.revision || value.workspace.draft.modelScope !== null) ctx.addIssue({ code: \"custom\", message: \"Dataset workspace scope/revision mismatch.\" });\n});\nexport const DatasetWorkspacePublishSchema = z.object({ operationId: Id, expectedRevision: z.number().int().positive(), workspaceHash: Hash, packageHash: Hash }).strict();\nexport const DatasetWorkspaceBeginVersionSchema = z.object({ operationId: Id, expectedRevision: z.number().int().positive() }).strict();\nexport const DatasetWorkspaceVersionsSchema = z.object({ teamId: Id, datasetId: Id, items: z.array(z.object({\n workspaceRevision: z.number().int().positive(), publication: DatasetWorkspaceReceiptSchema.shape.publication.unwrap(), publishedAt: z.iso.datetime(),\n}).strict()).max(25), nextBeforeRevision: z.number().int().positive().nullable() }).strict();\nexport type DatasetWorkspaceReceipt = z.infer<typeof DatasetWorkspaceReceiptSchema>;\n\nexport const DatasetWorkspaceListSchema = z.object({ teamId: Id, datasets: z.array(z.object({\n id: Id, revision: z.number().int().positive(), originProjectId: Id.optional(), name: z.string(), status: z.enum([\"draft\", \"published\"]),\n ownerScope: z.enum([\"workspace\", \"personal\"]).optional(),\n publication: DatasetWorkspaceReceiptSchema.shape.publication, updatedAt: z.string().datetime(),\n}).strict()).max(100), nextCursor: Id.nullable() }).strict();\nexport const DatasetWorkspaceValidationSchema = z.object({ teamId: Id, datasetId: Id, revision: z.number().int().positive(), workspaceHash: Hash, packageHash: Hash, release: TasksetCatalogReleaseRefSchema }).strict();\n", "import { z } from \"zod\";\nimport { DatasetWorkspaceReceiptSchema } from \"./dataset-workspace-contracts.js\";\nexport const DatasetWorkspaceOperationKindSchema = z.enum([\"create\", \"save\", \"publish\", \"begin_version\"]);\nexport const DatasetWorkspaceOperationResultSchema = z.object({ operationId: z.string().trim().min(1).max(240), kind: DatasetWorkspaceOperationKindSchema, requestHash: z.string().regex(/^[a-f0-9]{64}$/), receipt: DatasetWorkspaceReceiptSchema, base: DatasetWorkspaceReceiptSchema.nullable() }).strict().superRefine((value, context) => {\n const { receipt, base, kind } = value;\n if (base && (base.teamId !== receipt.teamId || base.datasetId !== receipt.datasetId || base.revision + 1 !== receipt.revision) || !base && receipt.revision !== 1) context.addIssue({ code: \"custom\", message: \"Operation recovery history identity/revision mismatch.\" });\n if (base && ((base.ownerScope ?? \"workspace\") !== (receipt.ownerScope ?? \"workspace\") || base.originProjectId !== receipt.originProjectId || base.workspace.draft.createdAt !== receipt.workspace.draft.createdAt)) context.addIssue({ code: \"custom\", message: \"Operation recovery cannot change Dataset ownership or origin.\" });\n const actualKind = !base ? \"create\" : receipt.workspace.draft.status === \"published\" ? \"publish\" : base.workspace.draft.status === \"published\" ? \"begin_version\" : \"save\";\n if (kind !== actualKind) context.addIssue({ code: \"custom\", message: \"Operation recovery kind differs from its retained lifecycle.\" });\n});\nexport type DatasetWorkspaceOperationResult = z.infer<typeof DatasetWorkspaceOperationResultSchema>;\n", "import { DatasetWorkspaceBeginVersionSchema, DatasetWorkspaceVersionsSchema, DatasetWorkspaceListSchema, DatasetWorkspacePublishSchema, DatasetWorkspaceReceiptSchema, DatasetWorkspaceValidationSchema, DatasetWorkspaceWriteSchema } from \"./dataset-workspace-contracts.js\";\nimport { validateTasksetDraftWorkspace } from \"./taskset-draft-workspace.js\";\nimport type { z } from \"zod\";\nimport { DatasetWorkspaceOperationKindSchema, DatasetWorkspaceOperationResultSchema } from \"./dataset-workspace-operations.js\";\n\n/** Hosted independent authoring. Writes use explicit revision/operation identity;\n * callers retain the operation ID when retrying an uncertain response. */\nexport class OpenPondDatasetWorkspaceClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async list(options: { cursor?: string; projectId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams({ ...(options.cursor ? { cursor: options.cursor } : {}), ...(options.projectId ? { projectId: options.projectId } : {}) });\n const result = DatasetWorkspaceListSchema.parse(await this.request(`?${params}`, \"GET\", undefined, options.signal));\n if (result.teamId !== this.options.teamId) throw new Error(\"Dataset list workspace mismatch.\");\n return result;\n }\n async get(id: string, signal?: AbortSignal) { return this.readback(await this.request(`/${encodeURIComponent(id)}`, \"GET\", undefined, signal), id); }\n /** Recover only this actor's retained operation; base bytes allow adapters to\n * reconstruct and verify the identical original CAS request before replay. */\n async operationResult(operationId: string, options: { datasetId?: string; kind: z.infer<typeof DatasetWorkspaceOperationKindSchema>; requestHash?: string; signal?: AbortSignal }) {\n const kind = DatasetWorkspaceOperationKindSchema.parse(options.kind);\n const params = new URLSearchParams({ kind, ...(options.datasetId ? { datasetId: options.datasetId } : {}) });\n const raw = await this.request(`/operations/${encodeURIComponent(operationId)}?${params}`, \"GET\", undefined, options.signal, 132 * 1024 * 1024);\n if (raw === null) return null;\n const value = DatasetWorkspaceOperationResultSchema.parse(raw);\n this.readback(value.receipt, value.receipt.datasetId); if (value.base) this.readback(value.base, value.receipt.datasetId);\n if (value.operationId !== operationId || value.kind !== kind || options.datasetId && value.receipt.datasetId !== options.datasetId || options.requestHash && value.requestHash !== options.requestHash) throw new Error(\"Dataset operation recovery identity/request mismatch.\");\n return value;\n }\n async beginVersion(id: string, input: z.input<typeof DatasetWorkspaceBeginVersionSchema>, signal?: AbortSignal) {\n const request = DatasetWorkspaceBeginVersionSchema.parse(input);\n const result = this.readback(await this.request(`/${encodeURIComponent(id)}/begin-version`, \"POST\", request, signal), id);\n if (result.revision !== request.expectedRevision + 1 || result.workspace.draft.status !== \"draft\" || !result.publication || !result.workspace.draft.publishedTasksetRef) throw new Error(\"Editable version receipt mismatch.\");\n return result;\n }\n async versions(id: string, options: { beforeRevision?: number; signal?: AbortSignal } = {}) {\n const query = new URLSearchParams(options.beforeRevision === undefined ? {} : { beforeRevision: String(options.beforeRevision) });\n const result = DatasetWorkspaceVersionsSchema.parse(await this.request(`/${encodeURIComponent(id)}/versions?${query}`, \"GET\", undefined, options.signal));\n if (result.teamId !== this.options.teamId || result.datasetId !== id || result.items.some((item, index) => (index > 0 && item.workspaceRevision >= result.items[index - 1]!.workspaceRevision) || (options.beforeRevision !== undefined && item.workspaceRevision >= options.beforeRevision))) throw new Error(\"Dataset version history scope/order mismatch.\");\n return result;\n }\n async version(id: string, workspaceRevision: number, signal?: AbortSignal) {\n const result = this.readback(await this.request(`/${encodeURIComponent(id)}/versions/${workspaceRevision}`, \"GET\", undefined, signal), id);\n if (result.revision !== workspaceRevision || result.workspace.draft.status !== \"published\") throw new Error(\"Dataset immutable version mismatch.\");\n return result;\n }\n async save(input: z.input<typeof DatasetWorkspaceWriteSchema>, signal?: AbortSignal) {\n const request = DatasetWorkspaceWriteSchema.parse(input);\n const workspace = validateTasksetDraftWorkspace(request.workspace);\n if (workspace.draft.profileId !== this.options.teamId || workspace.draft.revision !== request.expectedRevision + 1) throw new Error(\"Dataset write scope or revision mismatch.\");\n const result = this.readback(await this.request(`/${encodeURIComponent(workspace.draft.id)}`, \"PUT\", request, signal), workspace.draft.id);\n if (request.originProjectId && result.originProjectId !== request.originProjectId) throw new Error(\"Dataset origin Project mismatch.\");\n if (request.ownerScope && result.ownerScope !== request.ownerScope) throw new Error(\"Dataset owner scope mismatch.\");\n if (result.workspace.contentHash !== workspace.contentHash) throw new Error(\"Dataset write receipt differs from the saved bytes.\");\n return result;\n }\n async validate(id: string, expectedRevision: number, signal?: AbortSignal) {\n const result = DatasetWorkspaceValidationSchema.parse(await this.request(`/${encodeURIComponent(id)}/validate`, \"POST\", { expectedRevision }, signal));\n if (result.teamId !== this.options.teamId || result.datasetId !== id || result.revision !== expectedRevision) throw new Error(\"Dataset validation receipt mismatch.\");\n return result;\n }\n async publish(id: string, input: z.input<typeof DatasetWorkspacePublishSchema>, signal?: AbortSignal) {\n const request = DatasetWorkspacePublishSchema.parse(input);\n const result = this.readback(await this.request(`/${encodeURIComponent(id)}/publish`, \"POST\", request, signal), id);\n if (result.revision !== request.expectedRevision + 1 || result.workspace.draft.status !== \"published\" || result.publication?.packageHash !== request.packageHash) throw new Error(\"Dataset publication receipt mismatch.\");\n return result;\n }\n private readback(value: unknown, id: string) {\n const result = DatasetWorkspaceReceiptSchema.parse(value);\n validateTasksetDraftWorkspace(result.workspace);\n if (result.datasetId !== id || result.teamId !== this.options.teamId) throw new Error(\"Dataset identity mismatch.\");\n return result;\n }\n private async request(path: string, method: string, body?: unknown, signal?: AbortSignal, maxResponseBytes?: number): Promise<unknown> {\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/dataset-workspaces${path}`, {\n method, signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, \"Content-Type\": \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n if (!response.ok) throw new Error(`Dataset request failed (${response.status}).`);\n if (maxResponseBytes !== undefined) {\n if (!response.body) throw new Error(\"Dataset response is empty.\");\n const reader = response.body.getReader(), chunks: Uint8Array[] = []; let length = 0;\n try { while (true) { const part = await reader.read(); if (part.done) break; length += part.value.byteLength; if (length > maxResponseBytes) throw new Error(\"Dataset recovery exceeds its bounded response.\"); chunks.push(part.value); } } finally { await reader.cancel(); }\n const bytes = new Uint8Array(length); let offset = 0; for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n return JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n }\n return response.json();\n }\n}\n", "import { contentHash } from \"@openpond/harness\";\nimport { TaskSplitSchema, TaskRecordSchema } from \"@openpond/evals/tasksets\";\nimport { z } from \"zod\";\nimport { ExperimentGraderPinSchema } from \"./experiment-contracts.js\";\nimport { TasksetCatalogReleaseRefSchema } from \"./taskset-catalog.js\";\n\nconst Id = z.string().trim().min(1).max(500);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DatasetPopulationQuerySchema = z.object({\n release: TasksetCatalogReleaseRefSchema,\n afterId: Id.optional(),\n limit: z.number().int().min(1).max(10_000).default(100),\n view: z.enum([\"ids\", \"policy\"]).default(\"ids\"),\n}).strict().superRefine((query, context) => { if (query.view === \"policy\" && query.limit > 100) context.addIssue({ code: \"custom\", path: [\"limit\"], message: \"Policy previews are bounded to 100 tasks.\" }); });\nconst TaskIdentity = z.object({ id: TaskRecordSchema.shape.id, split: TaskSplitSchema }).strict();\nconst PolicyTask = TaskIdentity.extend({\n input: z.record(z.string(), z.unknown()),\n policyVisibleContext: z.record(z.string(), z.unknown()),\n artifacts: z.array(z.object({ id: Id, path: z.string(), mediaType: z.string(), sizeBytes: z.number().int().nonnegative() }).strict()).max(1000),\n}).strict();\nexport const DatasetPopulationPageSchema = z.object({\n schemaVersion: z.literal(\"openpond.datasetPopulationPage.v1\"),\n teamId: Id, release: TasksetCatalogReleaseRefSchema,\n view: DatasetPopulationQuerySchema.shape.view,\n taskCount: z.number().int().nonnegative(),\n items: z.array(z.union([TaskIdentity, PolicyTask])).max(10_000),\n graders: z.array(ExperimentGraderPinSchema).max(1000),\n nextCursor: Id.nullable(), contentHash: Hash,\n}).strict().superRefine((page, context) => {\n if (page.view === \"policy\" && page.items.length > 100) context.addIssue({ code: \"custom\", message: \"Policy preview exceeded its task bound.\" });\n if (page.items.some(item => (\"input\" in item) !== (page.view === \"policy\"))) context.addIssue({ code: \"custom\", message: \"Dataset task view differs from the requested projection.\" });\n});\nexport type DatasetPopulationPage = z.infer<typeof DatasetPopulationPageSchema>;\n\n/** Exact released membership and policy-visible previews. Gold answers,\n * verifier source, privileged context and object locations are never returned. */\nexport class OpenPondDatasetPopulationClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async read(value: z.input<typeof DatasetPopulationQuerySchema>, signal?: AbortSignal): Promise<DatasetPopulationPage> {\n const query = DatasetPopulationQuerySchema.parse(value);\n const params = new URLSearchParams({ releaseId: query.release.id, revision: String(query.release.revision), contentHash: query.release.contentHash, limit: String(query.limit), view: query.view });\n if (query.afterId) params.set(\"afterId\", query.afterId);\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/dataset-workspaces/population?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"Dataset population response was empty.\");\n let bytes = 0, source = \"\";\n const decoder = new TextDecoder();\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 Error(\"Dataset population response exceeded 4 MiB. Request fewer tasks.\");\n source += decoder.decode(chunk.value, { stream: true });\n }\n source += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const raw: unknown = JSON.parse(source);\n if (!response.ok) throw new Error(z.object({ message: z.string() }).passthrough().parse(raw).message);\n const page = DatasetPopulationPageSchema.parse(raw);\n const { contentHash: hash, ...content } = page;\n if (page.teamId !== this.options.teamId || contentHash(page.release) !== contentHash(query.release) || page.view !== query.view || page.items.length > query.limit || contentHash(content) !== hash || page.items.some((item, index) => (query.afterId !== undefined && item.id <= query.afterId) || (index > 0 && item.id <= page.items[index - 1]!.id)) || (page.nextCursor !== null && page.nextCursor !== page.items.at(-1)?.id)) throw new Error(\"Dataset population identity, hash, order or bounds mismatch.\");\n return page;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { TasksetDraftWorkspaceSchema } from \"./taskset-draft-workspace.js\";\nimport { TasksetCatalogReleaseRefSchema } from \"./taskset-catalog.js\";\nexport { compileTasksetDraftWorkspace } from \"./taskset-draft-package-compiler.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DatasetWorkspaceListQuerySchema = z.object({ cursor: z.string().trim().min(1).max(2_000).optional(), projectId: Id.optional(), search: z.string().trim().max(100).optional(), sort: z.enum([\"id\", \"name\", \"updated\"]).default(\"id\"), limit: z.number().int().min(1).max(100).default(100) }).strict();\nexport const DatasetWorkspaceWriteSchema = z.object({\n operationId: Id, expectedRevision: z.number().int().nonnegative(), originProjectId: Id.optional(), workspace: TasksetDraftWorkspaceSchema,\n ownerScope: z.enum([\"workspace\", \"personal\"]).optional(),\n}).strict().superRefine((value, ctx) => {\n if (value.workspace.draft.modelScope !== null) ctx.addIssue({ code: \"custom\", message: \"Independent datasets cannot carry Model-owned draft preparation.\" });\n if (value.workspace.draft.status !== \"draft\") ctx.addIssue({ code: \"custom\", message: \"Only draft workspaces can be saved.\" });\n});\nexport const DatasetWorkspaceReceiptSchema = z.object({\n schemaVersion: z.literal(\"openpond.datasetWorkspaceReceipt.v1\"), teamId: Id, datasetId: Id,\n revision: z.number().int().positive(), originProjectId: Id.optional(), workspace: TasksetDraftWorkspaceSchema,\n ownerScope: z.enum([\"workspace\", \"personal\"]).optional(),\n publication: z.object({ tasksetId: Id, release: TasksetCatalogReleaseRefSchema, packageHash: Hash }).strict().nullable(),\n}).strict().superRefine((value, ctx) => {\n if (value.workspace.draft.id !== value.datasetId || value.workspace.draft.profileId !== value.teamId || value.workspace.draft.revision !== value.revision || value.workspace.draft.modelScope !== null) ctx.addIssue({ code: \"custom\", message: \"Dataset workspace scope/revision mismatch.\" });\n});\nexport const DatasetWorkspacePublishSchema = z.object({ operationId: Id, expectedRevision: z.number().int().positive(), workspaceHash: Hash, packageHash: Hash }).strict();\nexport const DatasetWorkspaceBeginVersionSchema = z.object({ operationId: Id, expectedRevision: z.number().int().positive() }).strict();\nexport const DatasetWorkspaceVersionsSchema = z.object({ teamId: Id, datasetId: Id, items: z.array(z.object({\n workspaceRevision: z.number().int().positive(), publication: DatasetWorkspaceReceiptSchema.shape.publication.unwrap(), publishedAt: z.iso.datetime(),\n}).strict()).max(25), nextBeforeRevision: z.number().int().positive().nullable() }).strict();\nexport type DatasetWorkspaceReceipt = z.infer<typeof DatasetWorkspaceReceiptSchema>;\n\nexport const DatasetWorkspaceListSchema = z.object({ teamId: Id, datasets: z.array(z.object({\n id: Id, revision: z.number().int().positive(), originProjectId: Id.optional(), name: z.string(), status: z.enum([\"draft\", \"published\"]),\n ownerScope: z.enum([\"workspace\", \"personal\"]).optional(),\n publication: DatasetWorkspaceReceiptSchema.shape.publication, updatedAt: z.string().datetime(),\n}).strict()).max(100), nextCursor: z.string().trim().min(1).max(2_000).nullable() }).strict();\nexport const DatasetWorkspaceValidationSchema = z.object({ teamId: Id, datasetId: Id, revision: z.number().int().positive(), workspaceHash: Hash, packageHash: Hash, release: TasksetCatalogReleaseRefSchema }).strict();\n", "import { z } from \"zod\";\nimport { DatasetWorkspaceReceiptSchema } from \"./dataset-workspace-contracts.js\";\nexport const DatasetWorkspaceOperationKindSchema = z.enum([\"create\", \"save\", \"publish\", \"begin_version\"]);\nexport const DatasetWorkspaceOperationResultSchema = z.object({ operationId: z.string().trim().min(1).max(240), kind: DatasetWorkspaceOperationKindSchema, requestHash: z.string().regex(/^[a-f0-9]{64}$/), receipt: DatasetWorkspaceReceiptSchema, base: DatasetWorkspaceReceiptSchema.nullable() }).strict().superRefine((value, context) => {\n const { receipt, base, kind } = value;\n if (base && (base.teamId !== receipt.teamId || base.datasetId !== receipt.datasetId || base.revision + 1 !== receipt.revision) || !base && receipt.revision !== 1) context.addIssue({ code: \"custom\", message: \"Operation recovery history identity/revision mismatch.\" });\n if (base && ((base.ownerScope ?? \"workspace\") !== (receipt.ownerScope ?? \"workspace\") || base.originProjectId !== receipt.originProjectId || base.workspace.draft.createdAt !== receipt.workspace.draft.createdAt)) context.addIssue({ code: \"custom\", message: \"Operation recovery cannot change Dataset ownership or origin.\" });\n const actualKind = !base ? \"create\" : receipt.workspace.draft.status === \"published\" ? \"publish\" : base.workspace.draft.status === \"published\" ? \"begin_version\" : \"save\";\n if (kind !== actualKind) context.addIssue({ code: \"custom\", message: \"Operation recovery kind differs from its retained lifecycle.\" });\n});\nexport type DatasetWorkspaceOperationResult = z.infer<typeof DatasetWorkspaceOperationResultSchema>;\n", "import { DatasetWorkspaceListQuerySchema, DatasetWorkspaceBeginVersionSchema, DatasetWorkspaceVersionsSchema, DatasetWorkspaceListSchema, DatasetWorkspacePublishSchema, DatasetWorkspaceReceiptSchema, DatasetWorkspaceValidationSchema, DatasetWorkspaceWriteSchema } from \"./dataset-workspace-contracts.js\";\nimport { validateTasksetDraftWorkspace } from \"./taskset-draft-workspace.js\";\nimport type { z } from \"zod\";\nimport { DatasetWorkspaceOperationKindSchema, DatasetWorkspaceOperationResultSchema } from \"./dataset-workspace-operations.js\";\n\n/** Hosted independent authoring. Writes use explicit revision/operation identity;\n * callers retain the operation ID when retrying an uncertain response. */\nexport class OpenPondDatasetWorkspaceClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async list(options: z.input<typeof DatasetWorkspaceListQuerySchema> & { signal?: AbortSignal } = {}) {\n const { signal, ...input } = options;\n const query = DatasetWorkspaceListQuerySchema.parse(input);\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const result = DatasetWorkspaceListSchema.parse(await this.request(`?${params}`, \"GET\", undefined, signal));\n if (result.teamId !== this.options.teamId || result.datasets.length > query.limit || new Set(result.datasets.map(item => item.id)).size !== result.datasets.length) throw new Error(\"Dataset list workspace/page mismatch.\");\n return result;\n }\n async get(id: string, signal?: AbortSignal) { return this.readback(await this.request(`/${encodeURIComponent(id)}`, \"GET\", undefined, signal), id); }\n /** Recover only this actor's retained operation; base bytes allow adapters to\n * reconstruct and verify the identical original CAS request before replay. */\n async operationResult(operationId: string, options: { datasetId?: string; kind: z.infer<typeof DatasetWorkspaceOperationKindSchema>; requestHash?: string; signal?: AbortSignal }) {\n const kind = DatasetWorkspaceOperationKindSchema.parse(options.kind);\n const params = new URLSearchParams({ kind, ...(options.datasetId ? { datasetId: options.datasetId } : {}) });\n const raw = await this.request(`/operations/${encodeURIComponent(operationId)}?${params}`, \"GET\", undefined, options.signal, 132 * 1024 * 1024);\n if (raw === null) return null;\n const value = DatasetWorkspaceOperationResultSchema.parse(raw);\n this.readback(value.receipt, value.receipt.datasetId); if (value.base) this.readback(value.base, value.receipt.datasetId);\n if (value.operationId !== operationId || value.kind !== kind || options.datasetId && value.receipt.datasetId !== options.datasetId || options.requestHash && value.requestHash !== options.requestHash) throw new Error(\"Dataset operation recovery identity/request mismatch.\");\n return value;\n }\n async beginVersion(id: string, input: z.input<typeof DatasetWorkspaceBeginVersionSchema>, signal?: AbortSignal) {\n const request = DatasetWorkspaceBeginVersionSchema.parse(input);\n const result = this.readback(await this.request(`/${encodeURIComponent(id)}/begin-version`, \"POST\", request, signal), id);\n if (result.revision !== request.expectedRevision + 1 || result.workspace.draft.status !== \"draft\" || !result.publication || !result.workspace.draft.publishedTasksetRef) throw new Error(\"Editable version receipt mismatch.\");\n return result;\n }\n async versions(id: string, options: { beforeRevision?: number; signal?: AbortSignal } = {}) {\n const query = new URLSearchParams(options.beforeRevision === undefined ? {} : { beforeRevision: String(options.beforeRevision) });\n const result = DatasetWorkspaceVersionsSchema.parse(await this.request(`/${encodeURIComponent(id)}/versions?${query}`, \"GET\", undefined, options.signal));\n if (result.teamId !== this.options.teamId || result.datasetId !== id || result.items.some((item, index) => (index > 0 && item.workspaceRevision >= result.items[index - 1]!.workspaceRevision) || (options.beforeRevision !== undefined && item.workspaceRevision >= options.beforeRevision))) throw new Error(\"Dataset version history scope/order mismatch.\");\n return result;\n }\n async version(id: string, workspaceRevision: number, signal?: AbortSignal) {\n const result = this.readback(await this.request(`/${encodeURIComponent(id)}/versions/${workspaceRevision}`, \"GET\", undefined, signal), id);\n if (result.revision !== workspaceRevision || result.workspace.draft.status !== \"published\") throw new Error(\"Dataset immutable version mismatch.\");\n return result;\n }\n async save(input: z.input<typeof DatasetWorkspaceWriteSchema>, signal?: AbortSignal) {\n const request = DatasetWorkspaceWriteSchema.parse(input);\n const workspace = validateTasksetDraftWorkspace(request.workspace);\n if (workspace.draft.profileId !== this.options.teamId || workspace.draft.revision !== request.expectedRevision + 1) throw new Error(\"Dataset write scope or revision mismatch.\");\n const result = this.readback(await this.request(`/${encodeURIComponent(workspace.draft.id)}`, \"PUT\", request, signal), workspace.draft.id);\n if (request.originProjectId && result.originProjectId !== request.originProjectId) throw new Error(\"Dataset origin Project mismatch.\");\n if (request.ownerScope && result.ownerScope !== request.ownerScope) throw new Error(\"Dataset owner scope mismatch.\");\n if (result.workspace.contentHash !== workspace.contentHash) throw new Error(\"Dataset write receipt differs from the saved bytes.\");\n return result;\n }\n async validate(id: string, expectedRevision: number, signal?: AbortSignal) {\n const result = DatasetWorkspaceValidationSchema.parse(await this.request(`/${encodeURIComponent(id)}/validate`, \"POST\", { expectedRevision }, signal));\n if (result.teamId !== this.options.teamId || result.datasetId !== id || result.revision !== expectedRevision) throw new Error(\"Dataset validation receipt mismatch.\");\n return result;\n }\n async publish(id: string, input: z.input<typeof DatasetWorkspacePublishSchema>, signal?: AbortSignal) {\n const request = DatasetWorkspacePublishSchema.parse(input);\n const result = this.readback(await this.request(`/${encodeURIComponent(id)}/publish`, \"POST\", request, signal), id);\n if (result.revision !== request.expectedRevision + 1 || result.workspace.draft.status !== \"published\" || result.publication?.packageHash !== request.packageHash) throw new Error(\"Dataset publication receipt mismatch.\");\n return result;\n }\n private readback(value: unknown, id: string) {\n const result = DatasetWorkspaceReceiptSchema.parse(value);\n validateTasksetDraftWorkspace(result.workspace);\n if (result.datasetId !== id || result.teamId !== this.options.teamId) throw new Error(\"Dataset identity mismatch.\");\n return result;\n }\n private async request(path: string, method: string, body?: unknown, signal?: AbortSignal, maxResponseBytes?: number): Promise<unknown> {\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/dataset-workspaces${path}`, {\n method, signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, \"Content-Type\": \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n if (!response.ok) throw new Error(`Dataset request failed (${response.status}).`);\n if (maxResponseBytes !== undefined) {\n if (!response.body) throw new Error(\"Dataset response is empty.\");\n const reader = response.body.getReader(), chunks: Uint8Array[] = []; let length = 0;\n try { while (true) { const part = await reader.read(); if (part.done) break; length += part.value.byteLength; if (length > maxResponseBytes) throw new Error(\"Dataset recovery exceeds its bounded response.\"); chunks.push(part.value); } } finally { await reader.cancel(); }\n const bytes = new Uint8Array(length); let offset = 0; for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n return JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n }\n return response.json();\n }\n}\n", "import { contentHash } from \"@openpond/harness\";\nimport { TaskSplitSchema, TaskRecordSchema } from \"@openpond/evals/tasksets\";\nimport { z } from \"zod\";\nimport { ExperimentGraderPinSchema } from \"./experiment-contracts.js\";\nimport { TasksetCatalogReleaseRefSchema } from \"./taskset-catalog.js\";\n\nconst Id = z.string().trim().min(1).max(500);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const DatasetPopulationQuerySchema = z.object({\n release: TasksetCatalogReleaseRefSchema,\n afterId: Id.optional(),\n limit: z.number().int().min(1).max(10_000).default(100),\n view: z.enum([\"ids\", \"policy\"]).default(\"ids\"),\n}).strict().superRefine((query, context) => { if (query.view === \"policy\" && query.limit > 100) context.addIssue({ code: \"custom\", path: [\"limit\"], message: \"Policy previews are bounded to 100 tasks.\" }); });\nconst TaskIdentity = z.object({ id: TaskRecordSchema.shape.id, split: TaskSplitSchema }).strict();\nconst PolicyTask = TaskIdentity.extend({\n input: z.record(z.string(), z.unknown()),\n policyVisibleContext: z.record(z.string(), z.unknown()),\n artifacts: z.array(z.object({ id: Id, path: z.string(), mediaType: z.string(), sizeBytes: z.number().int().nonnegative() }).strict()).max(1000),\n}).strict();\nexport const DatasetPopulationPageSchema = z.object({\n schemaVersion: z.literal(\"openpond.datasetPopulationPage.v1\"),\n teamId: Id, release: TasksetCatalogReleaseRefSchema,\n view: DatasetPopulationQuerySchema.shape.view,\n taskCount: z.number().int().nonnegative(),\n items: z.array(z.union([TaskIdentity, PolicyTask])).max(10_000),\n graders: z.array(ExperimentGraderPinSchema).max(1000),\n nextCursor: Id.nullable(), contentHash: Hash,\n}).strict().superRefine((page, context) => {\n if (page.view === \"policy\" && page.items.length > 100) context.addIssue({ code: \"custom\", message: \"Policy preview exceeded its task bound.\" });\n if (page.items.some(item => (\"input\" in item) !== (page.view === \"policy\"))) context.addIssue({ code: \"custom\", message: \"Dataset task view differs from the requested projection.\" });\n});\nexport type DatasetPopulationPage = z.infer<typeof DatasetPopulationPageSchema>;\n\n/** Exact released membership and policy-visible previews. Gold answers,\n * verifier source, privileged context and object locations are never returned. */\nexport class OpenPondDatasetPopulationClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async read(value: z.input<typeof DatasetPopulationQuerySchema>, signal?: AbortSignal): Promise<DatasetPopulationPage> {\n const query = DatasetPopulationQuerySchema.parse(value);\n const params = new URLSearchParams({ releaseId: query.release.id, revision: String(query.release.revision), contentHash: query.release.contentHash, limit: String(query.limit), view: query.view });\n if (query.afterId) params.set(\"afterId\", query.afterId);\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/dataset-workspaces/population?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"Dataset population response was empty.\");\n let bytes = 0, source = \"\";\n const decoder = new TextDecoder();\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 Error(\"Dataset population response exceeded 4 MiB. Request fewer tasks.\");\n source += decoder.decode(chunk.value, { stream: true });\n }\n source += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const raw: unknown = JSON.parse(source);\n if (!response.ok) throw new Error(z.object({ message: z.string() }).passthrough().parse(raw).message);\n const page = DatasetPopulationPageSchema.parse(raw);\n const { contentHash: hash, ...content } = page;\n if (page.teamId !== this.options.teamId || contentHash(page.release) !== contentHash(query.release) || page.view !== query.view || page.items.length > query.limit || contentHash(content) !== hash || page.items.some((item, index) => (query.afterId !== undefined && item.id <= query.afterId) || (index > 0 && item.id <= page.items[index - 1]!.id)) || (page.nextCursor !== null && page.nextCursor !== page.items.at(-1)?.id)) throw new Error(\"Dataset population identity, hash, order or bounds mismatch.\");\n return page;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["z", "z", "z", "Id", "z", "Hash"]
7
7
  }
@@ -4,7 +4,7 @@ import {
4
4
  OpenPondExperimentError,
5
5
  OpenPondExperimentsClient,
6
6
  verifyExperimentScoringPass
7
- } from "./chunk-RXKIOOFZ.js";
7
+ } from "./chunk-4JRSH2TT.js";
8
8
  import {
9
9
  ExperimentDefinitionRefSchema,
10
10
  ExperimentDefinitionSchema,
@@ -84,7 +84,7 @@ var OpenPondExperimentHistoryClient = class {
84
84
  baseUrl;
85
85
  async list(input = {}, signal) {
86
86
  const query = ExperimentHistoryQuerySchema.parse(input);
87
- const params = new URLSearchParams(Object.entries(query).map(([key, value]) => [key, String(value)]));
87
+ const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)]));
88
88
  const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments/executions?${params}`, { signal, redirect: "error", headers: { Authorization: `Bearer ${this.options.apiKey}`, "X-OpenPond-Team-Id": this.options.teamId, Accept: "application/json" } });
89
89
  if (!response.ok) throw new Error(`Experiment history request failed (${response.status}).`);
90
90
  if (!response.body) throw new Error("Experiment history response is empty.");
@@ -113,6 +113,35 @@ var OpenPondExperimentHistoryClient = class {
113
113
  return page;
114
114
  }
115
115
  };
116
+
117
+ // src/dataset-grader-selection.ts
118
+ function datasetGraderIdentity(pin) {
119
+ return JSON.stringify(pin.release ? ["reward", pin.release.id, pin.release.revision, pin.release.contentHash, pin.feedbackKey] : ["dataset", pin.id, pin.version, pin.contentHash, pin.feedbackKey]);
120
+ }
121
+ function groupDatasetGraders(pins) {
122
+ const groups = /* @__PURE__ */ new Map();
123
+ for (const pin of pins) {
124
+ const key = datasetGraderIdentity(pin);
125
+ const group = groups.get(key);
126
+ if (group) group.aliases.push(pin);
127
+ else groups.set(key, { key, grader: pin, aliases: [pin] });
128
+ }
129
+ return [...groups.values()];
130
+ }
131
+ function canonicalDatasetGraderSelection(pins) {
132
+ const selected = groupDatasetGraders(pins);
133
+ const feedback = /* @__PURE__ */ new Map();
134
+ for (const group of selected) {
135
+ const previous = feedback.get(group.grader.feedbackKey);
136
+ if (previous && previous !== group.key)
137
+ throw new Error(`Different selected grader releases use feedback key "${group.grader.feedbackKey}". Select one, or publish graders with distinct feedback keys.`);
138
+ feedback.set(group.grader.feedbackKey, group.key);
139
+ const mappings = JSON.stringify(group.grader.mappings ?? []);
140
+ if (group.aliases.some((alias) => JSON.stringify(alias.mappings ?? []) !== mappings))
141
+ throw new Error(`Aliases of grader "${group.grader.feedbackKey}" have different field mappings. Select one alias and review its mappings.`);
142
+ }
143
+ return selected.map((group) => group.grader);
144
+ }
116
145
  export {
117
146
  ExperimentAttemptGradeSchema,
118
147
  ExperimentCaseInspectionSchema,
@@ -138,7 +167,10 @@ export {
138
167
  PreparedHarnessExperimentSchema,
139
168
  SaveExperimentSchema,
140
169
  StartExperimentSchema,
170
+ canonicalDatasetGraderSelection,
171
+ datasetGraderIdentity,
141
172
  experimentDefinitionRef,
173
+ groupDatasetGraders,
142
174
  mapExperimentGradingFields,
143
175
  verifyExperimentDefinition,
144
176
  verifyExperimentScoringPass
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/experiment-inspection.ts", "../src/experiment-history.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nconst Id = z.string().trim().min(1).max(500);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Content = z.object({ schemaVersion: z.literal(\"openpond.experimentCaseInspection.v1\"), teamId: Id, executionId: Id, manifestHash: Hash, receiptId: Id, taskId: Id, seed: z.string().min(1), input: z.record(z.string(), z.unknown()).nullable(), output: z.unknown().nullable(), error: z.string().nullable(), events: z.array(z.record(z.string(), z.unknown())).max(25), nextEventCursor: Id.nullable(), eventCount: z.number().int().nonnegative() }).strict();\nexport const ExperimentCaseInspectionSchema = Content.extend({ contentHash: Hash }).strict();\nexport type ExperimentCaseInspection = z.infer<typeof ExperimentCaseInspectionSchema>;\nexport class OpenPondExperimentInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n /** Retained, policy-facing evidence only. Reading a page never dispatches. */\n async case(executionId: string, receiptId: string, options: { manifestHash?: string; afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments/executions/${encodeURIComponent(Id.parse(executionId))}/cases/${encodeURIComponent(Id.parse(receiptId))}?${params}`, { signal: options.signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ message: z.string() }).parse(value).message);\n const result = ExperimentCaseInspectionSchema.parse(value);\n const { contentHash: actual, ...content } = result;\n if (contentHash(content) !== actual || result.teamId !== this.options.teamId || result.executionId !== executionId || result.receiptId !== receiptId || options.manifestHash && result.manifestHash !== options.manifestHash || result.events.length > result.eventCount) throw new Error(\"Case inspection differs from its requested workspace, execution or retained content.\");\n return result;\n }\n}\n", "import { z } from \"zod\";\nimport { ExperimentDefinitionRefSchema } from \"./experiment-contracts.js\";\nimport { ModelTasksetRunSummarySchema, ModelTasksetRunPolicySchema } from \"./model-taskset-runs-contracts.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nexport const ExperimentHistoryQuerySchema = z.object({ projectId: Id.optional(), afterId: Id.optional(), limit: z.number().int().min(1).max(100).default(30), status: ModelTasksetRunSummarySchema.shape.status.optional(), search: z.string().trim().max(100).optional(), modelId: Id.optional(), tasksetHash: z.string().regex(/^[a-f0-9]{64}$/).optional() }).strict();\nexport const ExperimentHistoryItemSchema = z.object({ summary: ModelTasksetRunSummarySchema, definition: ExperimentDefinitionRefSchema, policy: ModelTasksetRunPolicySchema }).strict().superRefine((item, context) => {\n if (item.summary.policyKind !== item.policy.kind) context.addIssue({ code: \"custom\", path: [\"policy\"], message: \"History target differs from the retained execution.\" });\n});\nexport const ExperimentHistoryPageSchema = z.object({ items: z.array(ExperimentHistoryItemSchema).max(100), nextCursor: Id.nullable() }).strict();\nexport type ExperimentHistoryItem = z.infer<typeof ExperimentHistoryItemSchema>;\nexport type ExperimentHistoryPage = z.infer<typeof ExperimentHistoryPageSchema>;\n\n/** Compact retained history; populations, private answers and case bytes stay\n * behind their existing authorized readers. This never refreshes dispatch. */\nexport class OpenPondExperimentHistoryClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async list(input: z.input<typeof ExperimentHistoryQuerySchema> = {}, signal?: AbortSignal): Promise<ExperimentHistoryPage> {\n const query = ExperimentHistoryQuerySchema.parse(input);\n const params = new URLSearchParams(Object.entries(query).map(([key, value]) => [key, String(value)]));\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments/executions?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n if (!response.ok) throw new Error(`Experiment history request failed (${response.status}).`);\n if (!response.body) throw new Error(\"Experiment history response is empty.\");\n const reader = response.body.getReader(); const chunks: Uint8Array[] = []; let length = 0;\n try { while (true) { const { done, value } = await reader.read(); if (done) break; length += value.byteLength; if (length > 4 * 1024 * 1024) throw new Error(\"Experiment history exceeds its bounded page.\"); chunks.push(value); } }\n finally { await reader.cancel(); }\n const bytes = new Uint8Array(length); let offset = 0; for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }\n const page = ExperimentHistoryPageSchema.parse(JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)));\n if (page.items.length > query.limit || new Set(page.items.map(item => item.summary.id)).size !== page.items.length || page.items.some(item => item.summary.teamId !== this.options.teamId || query.status && item.summary.status !== query.status || query.modelId && (!(\"modelId\" in item.policy) || item.policy.modelId !== query.modelId) || query.tasksetHash && item.summary.taskset.contentHash !== query.tasksetHash) || page.nextCursor && page.nextCursor !== page.items.at(-1)?.summary.id) throw new Error(\"Experiment history differs from its requested scope or page.\");\n return page;\n }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/experiment-inspection.ts", "../src/experiment-history.ts", "../src/dataset-grader-selection.ts"],
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nconst Id = z.string().trim().min(1).max(500);\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Content = z.object({ schemaVersion: z.literal(\"openpond.experimentCaseInspection.v1\"), teamId: Id, executionId: Id, manifestHash: Hash, receiptId: Id, taskId: Id, seed: z.string().min(1), input: z.record(z.string(), z.unknown()).nullable(), output: z.unknown().nullable(), error: z.string().nullable(), events: z.array(z.record(z.string(), z.unknown())).max(25), nextEventCursor: Id.nullable(), eventCount: z.number().int().nonnegative() }).strict();\nexport const ExperimentCaseInspectionSchema = Content.extend({ contentHash: Hash }).strict();\nexport type ExperimentCaseInspection = z.infer<typeof ExperimentCaseInspectionSchema>;\nexport class OpenPondExperimentInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n /** Retained, policy-facing evidence only. Reading a page never dispatches. */\n async case(executionId: string, receiptId: string, options: { manifestHash?: string; afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments/executions/${encodeURIComponent(Id.parse(executionId))}/cases/${encodeURIComponent(Id.parse(receiptId))}?${params}`, { signal: options.signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ message: z.string() }).parse(value).message);\n const result = ExperimentCaseInspectionSchema.parse(value);\n const { contentHash: actual, ...content } = result;\n if (contentHash(content) !== actual || result.teamId !== this.options.teamId || result.executionId !== executionId || result.receiptId !== receiptId || options.manifestHash && result.manifestHash !== options.manifestHash || result.events.length > result.eventCount) throw new Error(\"Case inspection differs from its requested workspace, execution or retained content.\");\n return result;\n }\n}\n", "import { z } from \"zod\";\nimport { ExperimentDefinitionRefSchema } from \"./experiment-contracts.js\";\nimport { ModelTasksetRunSummarySchema, ModelTasksetRunPolicySchema } from \"./model-taskset-runs-contracts.js\";\n\nconst Id = z.string().trim().min(1).max(240);\nexport const ExperimentHistoryQuerySchema = z.object({ projectId: Id.optional(), afterId: Id.optional(), limit: z.number().int().min(1).max(100).default(30), status: ModelTasksetRunSummarySchema.shape.status.optional(), search: z.string().trim().max(100).optional(), modelId: Id.optional(), tasksetHash: z.string().regex(/^[a-f0-9]{64}$/).optional() }).strict();\nexport const ExperimentHistoryItemSchema = z.object({ summary: ModelTasksetRunSummarySchema, definition: ExperimentDefinitionRefSchema, policy: ModelTasksetRunPolicySchema }).strict().superRefine((item, context) => {\n if (item.summary.policyKind !== item.policy.kind) context.addIssue({ code: \"custom\", path: [\"policy\"], message: \"History target differs from the retained execution.\" });\n});\nexport const ExperimentHistoryPageSchema = z.object({ items: z.array(ExperimentHistoryItemSchema).max(100), nextCursor: Id.nullable() }).strict();\nexport type ExperimentHistoryItem = z.infer<typeof ExperimentHistoryItemSchema>;\nexport type ExperimentHistoryPage = z.infer<typeof ExperimentHistoryPageSchema>;\n\n/** Compact retained history; populations, private answers and case bytes stay\n * behind their existing authorized readers. This never refreshes dispatch. */\nexport class OpenPondExperimentHistoryClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async list(input: z.input<typeof ExperimentHistoryQuerySchema> = {}, signal?: AbortSignal): Promise<ExperimentHistoryPage> {\n const query = ExperimentHistoryQuerySchema.parse(input);\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments/executions?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n if (!response.ok) throw new Error(`Experiment history request failed (${response.status}).`);\n if (!response.body) throw new Error(\"Experiment history response is empty.\");\n const reader = response.body.getReader(); const chunks: Uint8Array[] = []; let length = 0;\n try { while (true) { const { done, value } = await reader.read(); if (done) break; length += value.byteLength; if (length > 4 * 1024 * 1024) throw new Error(\"Experiment history exceeds its bounded page.\"); chunks.push(value); } }\n finally { await reader.cancel(); }\n const bytes = new Uint8Array(length); let offset = 0; for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }\n const page = ExperimentHistoryPageSchema.parse(JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)));\n if (page.items.length > query.limit || new Set(page.items.map(item => item.summary.id)).size !== page.items.length || page.items.some(item => item.summary.teamId !== this.options.teamId || query.status && item.summary.status !== query.status || query.modelId && (!(\"modelId\" in item.policy) || item.policy.modelId !== query.modelId) || query.tasksetHash && item.summary.taskset.contentHash !== query.tasksetHash) || page.nextCursor && page.nextCursor !== page.items.at(-1)?.summary.id) throw new Error(\"Experiment history differs from its requested scope or page.\");\n return page;\n }\n}\n", "/** Package aliases remain provenance; a released Reward is one scoring choice. */\nexport type DatasetGraderPin = {\n id: string;\n version: string;\n contentHash: string;\n feedbackKey: string;\n release?: { id: string; revision: number; contentHash: string } | null;\n};\n\nexport function datasetGraderIdentity(pin: DatasetGraderPin): string {\n return JSON.stringify(pin.release\n ? [\"reward\", pin.release.id, pin.release.revision, pin.release.contentHash, pin.feedbackKey]\n : [\"dataset\", pin.id, pin.version, pin.contentHash, pin.feedbackKey]);\n}\n\nexport function groupDatasetGraders<T extends DatasetGraderPin>(pins: readonly T[]): Array<{ key: string; grader: T; aliases: T[] }> {\n const groups = new Map<string, { key: string; grader: T; aliases: T[] }>();\n for (const pin of pins) {\n const key = datasetGraderIdentity(pin);\n const group = groups.get(key);\n if (group) group.aliases.push(pin);\n else groups.set(key, { key, grader: pin, aliases: [pin] });\n }\n return [...groups.values()];\n}\n\n/** Validate selected choices, rather than silently choosing between different\n * graders that would write the same feedback field. Never modifies package pins. */\nexport function canonicalDatasetGraderSelection<T extends DatasetGraderPin & { mappings?: unknown }>(pins: readonly T[]): T[] {\n const selected = groupDatasetGraders(pins);\n const feedback = new Map<string, string>();\n for (const group of selected) {\n const previous = feedback.get(group.grader.feedbackKey);\n if (previous && previous !== group.key)\n throw new Error(`Different selected grader releases use feedback key \"${group.grader.feedbackKey}\". Select one, or publish graders with distinct feedback keys.`);\n feedback.set(group.grader.feedbackKey, group.key);\n const mappings = JSON.stringify(group.grader.mappings ?? []);\n if (group.aliases.some(alias => JSON.stringify(alias.mappings ?? []) !== mappings))\n throw new Error(`Aliases of grader \"${group.grader.feedbackKey}\" have different field mappings. Select one alias and review its mappings.`);\n }\n return selected.map(group => group.grader);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["z", "Id", "z"]
7
7
  }
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  import "./chunk-LXXQVGQY.js";
12
12
  import {
13
13
  OpenPondExperimentsClient
14
- } from "./chunk-RXKIOOFZ.js";
14
+ } from "./chunk-4JRSH2TT.js";
15
15
  import "./chunk-4HZORGK3.js";
16
16
  import "./chunk-YYJ4T4U4.js";
17
17
  import "./chunk-BGXWHDYM.js";
package/dist/learning.js CHANGED
@@ -194,6 +194,13 @@ var OpenPondGraderInspectionClient = class {
194
194
  return value;
195
195
  }
196
196
  };
197
+
198
+ // src/grader-feedback-key.ts
199
+ function graderFeedbackKeyFromName(name, rewardId) {
200
+ const slug = name.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
201
+ const prefix = /^[a-z]/.test(slug) ? slug : `grader_${slug}`;
202
+ return `${(prefix || "grader").slice(0, 55).replace(/_+$/g, "")}_${contentHash(rewardId).slice(0, 24)}`;
203
+ }
197
204
  export {
198
205
  GraderCatalogPageSchema,
199
206
  GraderCatalogQuerySchema,
@@ -215,6 +222,7 @@ export {
215
222
  assertLearningCredentialExpiry,
216
223
  createHostedLearningPolicyContent,
217
224
  createSourceCredentialRequest,
225
+ graderFeedbackKeyFromName,
218
226
  hostedLearningPolicyDefaults,
219
227
  hostedLearningPolicyReferences,
220
228
  initialHostedModelLearning
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/learning.ts", "../src/model-learning-policy.ts", "../src/grader-inspection.ts"],
4
- "sourcesContent": ["export * from \"@openpond/evals/learning\";\nexport * from \"@openpond/evals/rewards\";\nexport * from \"./learning-credentials.js\";\nexport * from \"./learning-client.js\";\nexport * from \"./model-learning-policy.js\";\n\nexport * from \"./grader-inspection.js\";\n", "import { LearningDomainError, LearningPolicyContentSchema, LearningSourceContentSchema, learningRef, sameLearningRef, sealLearningContent, type TaskDefinition, type LearningPolicy, type LearningRevisionRef } from \"@openpond/evals/learning\";\nimport { contentHash } from \"@openpond/harness\";\n\nimport type { HostedModelProjectSummary } from \"./model-projects.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\n\n/** Compile the simple creation choice into exact source and policy releases.\n * Hosts commit these with the new Model and its idempotency receipt. */\nexport function initialHostedModelLearning(input: { project: HostedModelProjectSummary; definition: TaskDefinition; learning: ModelInitialLearning }) {\n const learning = ModelInitialLearningSchema.parse(input.learning);\n const { project, definition } = input;\n if (!project.trainingSetup.rewardBindingRef || !sameLearningRef(definition.rewardBinding, project.trainingSetup.rewardBindingRef)) throw new LearningDomainError(\"learning_policy_binding_mismatch\", 422, \"The task format must use the Model's selected grader.\");\n const source = LearningSourceContentSchema.parse({ schemaVersion: \"openpond.learningSource.v1\", id: `model-source-${contentHash([project.portableProjectId, learningRef(definition)])}`,\n revision: 1, name: `${project.name} tasks`, kind: \"direct\", taskDefinition: learningRef(definition), enabled: true,\n allowedSplits: [\"train\", \"validation\", \"test\", \"frozen_eval\"], mapping: null, adapterVersion: null });\n const policy = createHostedLearningPolicyContent({ project, previous: null, policyId: `model-policy-${contentHash(project.portableProjectId)}`,\n applyModelConfiguration: true, sources: [learningRef(sealLearningContent(source))], taskDefinition: learningRef(definition),\n settings: { ...hostedLearningPolicyDefaults(project, null), enabled: true, scheduled: true,\n trigger: learning.mode === \"nightly\" ? { kind: \"nightly\", localTime: learning.localTime, timeZone: learning.timeZone } : { kind: \"approved_count\" },\n minimumApprovedExamples: learning.minimumTasks, maxBatchExamples: learning.minimumTasks,\n maxIterationSpendUsd: learning.maximumSpendUsd, maxDailySpendUsd: learning.maximumDailySpendUsd,\n cooldownSeconds: 0, maxBacklogExamples: Math.max(1_000, learning.minimumTasks * 10),\n } });\n return { source, policy };\n}\n\n/** Shared starting values for both Model clients. Existing policies retain\n * their exact limits; opening settings must never silently increase spending. */\nexport function hostedLearningPolicyDefaults(project: HostedModelProjectSummary, policy: LearningPolicy | null) {\n const maximumSpend = policy?.limits.maxIterationSpendUsd ?? project.trainingSetup.preferredMaximumSpendUsd ?? 1;\n return {\n enabled: policy?.enabled ?? false,\n scheduled: Boolean(policy && [\"schedule\", \"nightly\", \"approved_count\"].includes(policy.trigger.kind)),\n intervalSeconds: policy?.trigger.kind === \"schedule\" ? policy.trigger.intervalSeconds : 86_400,\n humanReviewRequired: policy?.admission.mode !== \"qualified_automatic\",\n minimumApprovedExamples: policy?.admission.minimumApprovedExamples ?? 10,\n maxBatchExamples: policy?.limits.maxBatchExamples ?? 10,\n maxIterationSpendUsd: maximumSpend,\n maxDailySpendUsd: policy?.limits.maxDailySpendUsd ?? maximumSpend,\n cooldownSeconds: policy?.limits.cooldownSeconds ?? 3_600,\n maxRetries: policy?.limits.maxRetries ?? 0,\n maxBacklogExamples: policy?.limits.maxBacklogExamples ?? 1_000,\n };\n}\n\nexport interface HostedLearningPolicySettings {\n enabled: boolean;\n scheduled: boolean;\n intervalSeconds: number;\n trigger?: Exclude<LearningPolicy[\"trigger\"], { kind: \"upstream_accepted\" }>;\n humanReviewRequired: boolean;\n minimumApprovedExamples: number;\n maxBatchExamples: number;\n maxIterationSpendUsd: number;\n maxDailySpendUsd: number;\n cooldownSeconds: number;\n maxRetries: number;\n maxBacklogExamples: number;\n}\n\n/** Compile reviewed settings without following mutable Model configuration\n * unless the caller explicitly chooses to apply it. Publication still owns\n * authorization, revision comparison and source/qualification validation. */\nexport function createHostedLearningPolicyContent(input: {\n project: HostedModelProjectSummary;\n previous: LearningPolicy | null;\n policyId: string;\n applyModelConfiguration: boolean;\n sources: LearningRevisionRef[];\n taskDefinition: LearningRevisionRef;\n settings: HostedLearningPolicySettings;\n}) {\n const { project, previous, settings } = input;\n if (previous && (previous.id !== input.policyId || previous.modelProjectId !== project.portableProjectId || previous.executionOwner !== \"hosted\")) {\n throw new LearningDomainError(\"learning_policy_model_mismatch\", 422, \"Learning settings must belong to this hosted Model.\");\n }\n const applyModel = input.applyModelConfiguration || !previous;\n const refs = applyModel ? hostedLearningPolicyReferences(project) : null;\n const method = applyModel ? project.trainingSetup.recipe?.method : previous?.training.method;\n const trigger = settings.trigger ?? (settings.scheduled ? { kind: \"schedule\" as const, intervalSeconds: settings.intervalSeconds } : { kind: \"manual\" as const });\n if (settings.enabled && method !== \"grpo\") {\n throw new LearningDomainError(\"learning_training_method_unsupported\", 422, \"Hosted continual learning currently supports GRPO.\");\n }\n return LearningPolicyContentSchema.parse({\n schemaVersion: \"openpond.learningPolicy.v1\", id: input.policyId, revision: (previous?.revision ?? 0) + 1,\n modelProjectId: project.portableProjectId, executionOwner: \"hosted\", enabled: settings.enabled,\n sources: input.sources, taskDefinition: input.taskDefinition,\n rewardBinding: applyModel ? project.trainingSetup.rewardBindingRef : previous?.rewardBinding,\n admission: { mode: settings.humanReviewRequired ? \"human\" : \"qualified_automatic\",\n qualification: settings.humanReviewRequired ? null : previous?.admission.qualification ?? null,\n minimumApprovedExamples: settings.minimumApprovedExamples },\n trigger,\n trainingParent: refs?.trainingParent ?? previous?.trainingParent,\n teacher: previous?.teacher ?? null,\n training: { method, recipe: refs?.recipe ?? previous?.training.recipe,\n retentionEvaluation: refs?.retentionEvaluation ?? previous?.training.retentionEvaluation,\n replayBatches: previous?.training.replayBatches ?? [] },\n limits: { maxIterationSpendUsd: settings.maxIterationSpendUsd, maxDailySpendUsd: settings.maxDailySpendUsd,\n cooldownSeconds: settings.cooldownSeconds, maxRetries: settings.maxRetries,\n maxBatchExamples: settings.maxBatchExamples, maxBacklogExamples: settings.maxBacklogExamples },\n automation: { collect: false, train: trigger.kind !== \"manual\", accept: false, serve: false },\n acceptance: previous?.acceptance ?? { minimumScore: 0, maximumRetentionRegression: 0, requireImprovement: true, rollbackVersion: null },\n });\n}\n\n/** Bind a reviewed hosted Model configuration before asynchronous preparation.\n * Keep the established recipe identity: its id binds the whole Model revision,\n * including Harness and retention selections, while its hash binds the recipe.\n * Callers must obtain the summary from the authenticated Model API. */\nexport function hostedLearningPolicyReferences(project: HostedModelProjectSummary) {\n const setup = project.trainingSetup;\n const base = setup.baseModel ?? project.defaultBaseModel;\n if (!setup.recipe || !base || !setup.evaluationTasksetRef) {\n throw new LearningDomainError(\"learning_model_configuration_incomplete\", 422,\n \"Select a training recipe, starting model and retained evaluation before enabling hosted learning.\");\n }\n return {\n recipe: { id: `model-recipe-${project.etag}`, contentHash: contentHash(setup.recipe) },\n trainingParent: { id: base.modelId, contentHash: contentHash(base) },\n retentionEvaluation: { id: setup.evaluationTasksetRef.id, contentHash: setup.evaluationTasksetRef.contentHash },\n };\n}\n", "import { z } from \"zod\";\nimport { RewardReleaseSchema } from \"@openpond/evals/rewards\";\nconst Id = z.string().trim().min(1).max(240);\nexport const GraderCatalogQuerySchema = z.object({ projectId: Id.optional(), search: z.string().max(300).optional(), kind: z.string().max(100).optional(), sort: z.enum([\"name\", \"type\", \"version\", \"projects\", \"datasets\", \"runs\"]).optional(), direction: z.enum([\"asc\", \"desc\"]).optional(), after: z.string().max(3000).optional(), limit: z.number().int().min(1).max(100).default(30) }).strict();\nexport const GraderCatalogPageSchema = z.object({ teamId: Id, items: z.array(z.object({ reward: RewardReleaseSchema, projects: z.number().int().nonnegative(), datasets: z.number().int().nonnegative(), runs: z.number().int().nonnegative() }).strict()).max(100), nextCursor: z.string().nullable() }).strict();\nexport const GraderVersionsPageSchema = z.object({ teamId: Id, id: Id, items: z.array(RewardReleaseSchema).max(100), nextRevision: z.number().int().positive().nullable() }).strict();\nexport const GraderUsageQuerySchema = z.object({ section: z.enum([\"projects\", \"datasets\", \"runs\"]), after: Id.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const GraderUsagePageSchema = z.object({ teamId: Id, id: Id, section: GraderUsageQuerySchema.shape.section, items: z.array(z.union([\n z.object({ id: Id, name: z.string(), graderRevisions: z.array(z.number().int().positive()), archived: z.boolean() }).strict(),\n z.object({ id: Id, name: z.string(), revision: z.number().int().positive(), graderRevisions: z.array(z.number().int().positive()) }).strict(),\n z.object({ id: Id, name: z.string(), status: z.string() }).strict(),\n])).max(100), nextCursor: Id.nullable() }).strict();\nexport class OpenPondGraderInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async catalog(value: z.input<typeof GraderCatalogQuerySchema> = {}, signal?: AbortSignal) {\n const query = GraderCatalogQuerySchema.parse(value);\n const page = GraderCatalogPageSchema.parse(await this.read(\"\", query, signal));\n if (page.teamId !== this.options.teamId || page.items.length > query.limit || new Set(page.items.map(item => item.reward.id)).size !== page.items.length) throw new Error(\"Grader catalog differs from its requested workspace or bounds.\");\n return page;\n }\n async versions(id: string, query: { beforeRevision?: number; limit?: number } = {}, signal?: AbortSignal) {\n const options = z.object({ beforeRevision: z.number().int().positive().optional(), limit: z.number().int().min(1).max(100).default(25) }).strict().parse(query);\n const page = GraderVersionsPageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/versions`, options, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.items.length > options.limit || page.items.some((item, index) => item.id !== id || options.beforeRevision && item.revision >= options.beforeRevision || index > 0 && item.revision >= page.items[index - 1]!.revision)) throw new Error(\"Grader versions differ from their requested identity or revision order.\");\n return page;\n }\n async usage(id: string, value: z.input<typeof GraderUsageQuerySchema>, signal?: AbortSignal) {\n const query = GraderUsageQuerySchema.parse(value);\n const page = GraderUsagePageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/usage`, query, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.section !== query.section || page.items.length > query.limit) throw new Error(\"Grader usage differs from its requested workspace, identity or bounds.\");\n return page;\n }\n private async read(path: string, query: Record<string, unknown>, signal?: AbortSignal) {\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/learning/read/graders${path}?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ error: z.string() }).parse(value).error);\n return value;\n }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/learning.ts", "../src/model-learning-policy.ts", "../src/grader-inspection.ts", "../src/grader-feedback-key.ts"],
4
+ "sourcesContent": ["export * from \"@openpond/evals/learning\";\nexport * from \"@openpond/evals/rewards\";\nexport * from \"./learning-credentials.js\";\nexport * from \"./learning-client.js\";\nexport * from \"./model-learning-policy.js\";\n\nexport * from \"./grader-inspection.js\";\n\nexport * from \"./grader-feedback-key.js\";\n", "import { LearningDomainError, LearningPolicyContentSchema, LearningSourceContentSchema, learningRef, sameLearningRef, sealLearningContent, type TaskDefinition, type LearningPolicy, type LearningRevisionRef } from \"@openpond/evals/learning\";\nimport { contentHash } from \"@openpond/harness\";\n\nimport type { HostedModelProjectSummary } from \"./model-projects.js\";\nimport { ModelInitialLearningSchema, type ModelInitialLearning } from \"./model-learning-intent.js\";\n\n/** Compile the simple creation choice into exact source and policy releases.\n * Hosts commit these with the new Model and its idempotency receipt. */\nexport function initialHostedModelLearning(input: { project: HostedModelProjectSummary; definition: TaskDefinition; learning: ModelInitialLearning }) {\n const learning = ModelInitialLearningSchema.parse(input.learning);\n const { project, definition } = input;\n if (!project.trainingSetup.rewardBindingRef || !sameLearningRef(definition.rewardBinding, project.trainingSetup.rewardBindingRef)) throw new LearningDomainError(\"learning_policy_binding_mismatch\", 422, \"The task format must use the Model's selected grader.\");\n const source = LearningSourceContentSchema.parse({ schemaVersion: \"openpond.learningSource.v1\", id: `model-source-${contentHash([project.portableProjectId, learningRef(definition)])}`,\n revision: 1, name: `${project.name} tasks`, kind: \"direct\", taskDefinition: learningRef(definition), enabled: true,\n allowedSplits: [\"train\", \"validation\", \"test\", \"frozen_eval\"], mapping: null, adapterVersion: null });\n const policy = createHostedLearningPolicyContent({ project, previous: null, policyId: `model-policy-${contentHash(project.portableProjectId)}`,\n applyModelConfiguration: true, sources: [learningRef(sealLearningContent(source))], taskDefinition: learningRef(definition),\n settings: { ...hostedLearningPolicyDefaults(project, null), enabled: true, scheduled: true,\n trigger: learning.mode === \"nightly\" ? { kind: \"nightly\", localTime: learning.localTime, timeZone: learning.timeZone } : { kind: \"approved_count\" },\n minimumApprovedExamples: learning.minimumTasks, maxBatchExamples: learning.minimumTasks,\n maxIterationSpendUsd: learning.maximumSpendUsd, maxDailySpendUsd: learning.maximumDailySpendUsd,\n cooldownSeconds: 0, maxBacklogExamples: Math.max(1_000, learning.minimumTasks * 10),\n } });\n return { source, policy };\n}\n\n/** Shared starting values for both Model clients. Existing policies retain\n * their exact limits; opening settings must never silently increase spending. */\nexport function hostedLearningPolicyDefaults(project: HostedModelProjectSummary, policy: LearningPolicy | null) {\n const maximumSpend = policy?.limits.maxIterationSpendUsd ?? project.trainingSetup.preferredMaximumSpendUsd ?? 1;\n return {\n enabled: policy?.enabled ?? false,\n scheduled: Boolean(policy && [\"schedule\", \"nightly\", \"approved_count\"].includes(policy.trigger.kind)),\n intervalSeconds: policy?.trigger.kind === \"schedule\" ? policy.trigger.intervalSeconds : 86_400,\n humanReviewRequired: policy?.admission.mode !== \"qualified_automatic\",\n minimumApprovedExamples: policy?.admission.minimumApprovedExamples ?? 10,\n maxBatchExamples: policy?.limits.maxBatchExamples ?? 10,\n maxIterationSpendUsd: maximumSpend,\n maxDailySpendUsd: policy?.limits.maxDailySpendUsd ?? maximumSpend,\n cooldownSeconds: policy?.limits.cooldownSeconds ?? 3_600,\n maxRetries: policy?.limits.maxRetries ?? 0,\n maxBacklogExamples: policy?.limits.maxBacklogExamples ?? 1_000,\n };\n}\n\nexport interface HostedLearningPolicySettings {\n enabled: boolean;\n scheduled: boolean;\n intervalSeconds: number;\n trigger?: Exclude<LearningPolicy[\"trigger\"], { kind: \"upstream_accepted\" }>;\n humanReviewRequired: boolean;\n minimumApprovedExamples: number;\n maxBatchExamples: number;\n maxIterationSpendUsd: number;\n maxDailySpendUsd: number;\n cooldownSeconds: number;\n maxRetries: number;\n maxBacklogExamples: number;\n}\n\n/** Compile reviewed settings without following mutable Model configuration\n * unless the caller explicitly chooses to apply it. Publication still owns\n * authorization, revision comparison and source/qualification validation. */\nexport function createHostedLearningPolicyContent(input: {\n project: HostedModelProjectSummary;\n previous: LearningPolicy | null;\n policyId: string;\n applyModelConfiguration: boolean;\n sources: LearningRevisionRef[];\n taskDefinition: LearningRevisionRef;\n settings: HostedLearningPolicySettings;\n}) {\n const { project, previous, settings } = input;\n if (previous && (previous.id !== input.policyId || previous.modelProjectId !== project.portableProjectId || previous.executionOwner !== \"hosted\")) {\n throw new LearningDomainError(\"learning_policy_model_mismatch\", 422, \"Learning settings must belong to this hosted Model.\");\n }\n const applyModel = input.applyModelConfiguration || !previous;\n const refs = applyModel ? hostedLearningPolicyReferences(project) : null;\n const method = applyModel ? project.trainingSetup.recipe?.method : previous?.training.method;\n const trigger = settings.trigger ?? (settings.scheduled ? { kind: \"schedule\" as const, intervalSeconds: settings.intervalSeconds } : { kind: \"manual\" as const });\n if (settings.enabled && method !== \"grpo\") {\n throw new LearningDomainError(\"learning_training_method_unsupported\", 422, \"Hosted continual learning currently supports GRPO.\");\n }\n return LearningPolicyContentSchema.parse({\n schemaVersion: \"openpond.learningPolicy.v1\", id: input.policyId, revision: (previous?.revision ?? 0) + 1,\n modelProjectId: project.portableProjectId, executionOwner: \"hosted\", enabled: settings.enabled,\n sources: input.sources, taskDefinition: input.taskDefinition,\n rewardBinding: applyModel ? project.trainingSetup.rewardBindingRef : previous?.rewardBinding,\n admission: { mode: settings.humanReviewRequired ? \"human\" : \"qualified_automatic\",\n qualification: settings.humanReviewRequired ? null : previous?.admission.qualification ?? null,\n minimumApprovedExamples: settings.minimumApprovedExamples },\n trigger,\n trainingParent: refs?.trainingParent ?? previous?.trainingParent,\n teacher: previous?.teacher ?? null,\n training: { method, recipe: refs?.recipe ?? previous?.training.recipe,\n retentionEvaluation: refs?.retentionEvaluation ?? previous?.training.retentionEvaluation,\n replayBatches: previous?.training.replayBatches ?? [] },\n limits: { maxIterationSpendUsd: settings.maxIterationSpendUsd, maxDailySpendUsd: settings.maxDailySpendUsd,\n cooldownSeconds: settings.cooldownSeconds, maxRetries: settings.maxRetries,\n maxBatchExamples: settings.maxBatchExamples, maxBacklogExamples: settings.maxBacklogExamples },\n automation: { collect: false, train: trigger.kind !== \"manual\", accept: false, serve: false },\n acceptance: previous?.acceptance ?? { minimumScore: 0, maximumRetentionRegression: 0, requireImprovement: true, rollbackVersion: null },\n });\n}\n\n/** Bind a reviewed hosted Model configuration before asynchronous preparation.\n * Keep the established recipe identity: its id binds the whole Model revision,\n * including Harness and retention selections, while its hash binds the recipe.\n * Callers must obtain the summary from the authenticated Model API. */\nexport function hostedLearningPolicyReferences(project: HostedModelProjectSummary) {\n const setup = project.trainingSetup;\n const base = setup.baseModel ?? project.defaultBaseModel;\n if (!setup.recipe || !base || !setup.evaluationTasksetRef) {\n throw new LearningDomainError(\"learning_model_configuration_incomplete\", 422,\n \"Select a training recipe, starting model and retained evaluation before enabling hosted learning.\");\n }\n return {\n recipe: { id: `model-recipe-${project.etag}`, contentHash: contentHash(setup.recipe) },\n trainingParent: { id: base.modelId, contentHash: contentHash(base) },\n retentionEvaluation: { id: setup.evaluationTasksetRef.id, contentHash: setup.evaluationTasksetRef.contentHash },\n };\n}\n", "import { z } from \"zod\";\nimport { RewardReleaseSchema } from \"@openpond/evals/rewards\";\nconst Id = z.string().trim().min(1).max(240);\nexport const GraderCatalogQuerySchema = z.object({ projectId: Id.optional(), search: z.string().max(300).optional(), kind: z.string().max(100).optional(), sort: z.enum([\"name\", \"type\", \"version\", \"projects\", \"datasets\", \"runs\"]).optional(), direction: z.enum([\"asc\", \"desc\"]).optional(), after: z.string().max(3000).optional(), limit: z.number().int().min(1).max(100).default(30) }).strict();\nexport const GraderCatalogPageSchema = z.object({ teamId: Id, items: z.array(z.object({ reward: RewardReleaseSchema, projects: z.number().int().nonnegative(), datasets: z.number().int().nonnegative(), runs: z.number().int().nonnegative() }).strict()).max(100), nextCursor: z.string().nullable() }).strict();\nexport const GraderVersionsPageSchema = z.object({ teamId: Id, id: Id, items: z.array(RewardReleaseSchema).max(100), nextRevision: z.number().int().positive().nullable() }).strict();\nexport const GraderUsageQuerySchema = z.object({ section: z.enum([\"projects\", \"datasets\", \"runs\"]), after: Id.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const GraderUsagePageSchema = z.object({ teamId: Id, id: Id, section: GraderUsageQuerySchema.shape.section, items: z.array(z.union([\n z.object({ id: Id, name: z.string(), graderRevisions: z.array(z.number().int().positive()), archived: z.boolean() }).strict(),\n z.object({ id: Id, name: z.string(), revision: z.number().int().positive(), graderRevisions: z.array(z.number().int().positive()) }).strict(),\n z.object({ id: Id, name: z.string(), status: z.string() }).strict(),\n])).max(100), nextCursor: Id.nullable() }).strict();\nexport class OpenPondGraderInspectionClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async catalog(value: z.input<typeof GraderCatalogQuerySchema> = {}, signal?: AbortSignal) {\n const query = GraderCatalogQuerySchema.parse(value);\n const page = GraderCatalogPageSchema.parse(await this.read(\"\", query, signal));\n if (page.teamId !== this.options.teamId || page.items.length > query.limit || new Set(page.items.map(item => item.reward.id)).size !== page.items.length) throw new Error(\"Grader catalog differs from its requested workspace or bounds.\");\n return page;\n }\n async versions(id: string, query: { beforeRevision?: number; limit?: number } = {}, signal?: AbortSignal) {\n const options = z.object({ beforeRevision: z.number().int().positive().optional(), limit: z.number().int().min(1).max(100).default(25) }).strict().parse(query);\n const page = GraderVersionsPageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/versions`, options, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.items.length > options.limit || page.items.some((item, index) => item.id !== id || options.beforeRevision && item.revision >= options.beforeRevision || index > 0 && item.revision >= page.items[index - 1]!.revision)) throw new Error(\"Grader versions differ from their requested identity or revision order.\");\n return page;\n }\n async usage(id: string, value: z.input<typeof GraderUsageQuerySchema>, signal?: AbortSignal) {\n const query = GraderUsageQuerySchema.parse(value);\n const page = GraderUsagePageSchema.parse(await this.read(`/${encodeURIComponent(Id.parse(id))}/usage`, query, signal));\n if (page.teamId !== this.options.teamId || page.id !== id || page.section !== query.section || page.items.length > query.limit) throw new Error(\"Grader usage differs from its requested workspace, identity or bounds.\");\n return page;\n }\n private async read(path: string, query: Record<string, unknown>, signal?: AbortSignal) {\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/learning/read/graders${path}?${params}`, { signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, Accept: \"application/json\" } });\n const value: unknown = await response.json();\n if (!response.ok) throw new Error(z.object({ error: z.string() }).parse(value).error);\n return value;\n }\n}\n", "import { contentHash } from \"@openpond/harness\";\n\n/** Draft presentation default. Published keys must retain their released value. */\nexport function graderFeedbackKeyFromName(name: string, rewardId: string): string {\n const slug = name.normalize(\"NFKD\").toLowerCase().replace(/[^a-z0-9]+/g, \"_\").replace(/^_+|_+$/g, \"\");\n const prefix = /^[a-z]/.test(slug) ? slug : `grader_${slug}`;\n return `${(prefix || \"grader\").slice(0, 55).replace(/_+$/g, \"\")}_${contentHash(rewardId).slice(0, 24)}`;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["value"]
7
7
  }
@@ -6,7 +6,7 @@ import {
6
6
  TasksetCatalogPageSchema,
7
7
  TasksetCatalogQuerySchema,
8
8
  TasksetCatalogReleaseRefSchema
9
- } from "./chunk-A4ZDOZKP.js";
9
+ } from "./chunk-K3JCP4FO.js";
10
10
  export {
11
11
  HostedTasksetSummarySchema,
12
12
  OpenPondTasksetCatalogClient,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TasksetPackageReceiptSchema
3
- } from "./chunk-TQ5ASK7D.js";
3
+ } from "./chunk-XMKEFQ62.js";
4
4
  import {
5
5
  MAX_TASKSET_DRAFT_EDIT_FILE_BYTES,
6
6
  MAX_TASKSET_DRAFT_WORKSPACE_BYTES,
@@ -30,7 +30,7 @@ import {
30
30
  tasksetDraftFromTaskset,
31
31
  validateTasksetDraftWorkspace
32
32
  } from "./chunk-32H2EJRA.js";
33
- import "./chunk-A4ZDOZKP.js";
33
+ import "./chunk-K3JCP4FO.js";
34
34
  import {
35
35
  AuthoringProvenanceSchema,
36
36
  AuthoringRepairSchema,
@@ -5,7 +5,7 @@ import {
5
5
  TasksetPackagePublicationSchema,
6
6
  TasksetPackageReadbackSchema,
7
7
  TasksetPackageReceiptSchema
8
- } from "./chunk-TQ5ASK7D.js";
8
+ } from "./chunk-XMKEFQ62.js";
9
9
  import {
10
10
  ModelBatchReviewInspectionSchema,
11
11
  ModelBatchReviewReceiptSchema,
@@ -32,7 +32,7 @@ import {
32
32
  decodeTasksetDraftWorkspaceFile,
33
33
  isManagedTasksetDraftFilePath
34
34
  } from "./chunk-32H2EJRA.js";
35
- import "./chunk-A4ZDOZKP.js";
35
+ import "./chunk-K3JCP4FO.js";
36
36
  import {
37
37
  materializePortableTasksetRelease,
38
38
  portableTasksetEnvironment,
@@ -0,0 +1,24 @@
1
+ /** Package aliases remain provenance; a released Reward is one scoring choice. */
2
+ export type DatasetGraderPin = {
3
+ id: string;
4
+ version: string;
5
+ contentHash: string;
6
+ feedbackKey: string;
7
+ release?: {
8
+ id: string;
9
+ revision: number;
10
+ contentHash: string;
11
+ } | null;
12
+ };
13
+ export declare function datasetGraderIdentity(pin: DatasetGraderPin): string;
14
+ export declare function groupDatasetGraders<T extends DatasetGraderPin>(pins: readonly T[]): Array<{
15
+ key: string;
16
+ grader: T;
17
+ aliases: T[];
18
+ }>;
19
+ /** Validate selected choices, rather than silently choosing between different
20
+ * graders that would write the same feedback field. Never modifies package pins. */
21
+ export declare function canonicalDatasetGraderSelection<T extends DatasetGraderPin & {
22
+ mappings?: unknown;
23
+ }>(pins: readonly T[]): T[];
24
+ //# sourceMappingURL=dataset-grader-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-grader-selection.d.ts","sourceRoot":"","sources":["../../../../../src/dataset-grader-selection.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAInE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,CAAA;CAAE,CAAC,CASnI;AAED;oFACoF;AACpF,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,gBAAgB,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAa5H"}
@@ -1,4 +1,4 @@
1
- import { DatasetWorkspaceBeginVersionSchema, DatasetWorkspacePublishSchema, DatasetWorkspaceWriteSchema } from "./dataset-workspace-contracts.js";
1
+ import { DatasetWorkspaceListQuerySchema, DatasetWorkspaceBeginVersionSchema, DatasetWorkspacePublishSchema, DatasetWorkspaceWriteSchema } from "./dataset-workspace-contracts.js";
2
2
  import type { z } from "zod";
3
3
  import { DatasetWorkspaceOperationKindSchema } from "./dataset-workspace-operations.js";
4
4
  /** Hosted independent authoring. Writes use explicit revision/operation identity;
@@ -12,9 +12,7 @@ export declare class OpenPondDatasetWorkspaceClient {
12
12
  teamId: string;
13
13
  fetch?: typeof fetch;
14
14
  });
15
- list(options?: {
16
- cursor?: string;
17
- projectId?: string;
15
+ list(options?: z.input<typeof DatasetWorkspaceListQuerySchema> & {
18
16
  signal?: AbortSignal;
19
17
  }): Promise<{
20
18
  teamId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-workspace-client.d.ts","sourceRoot":"","sources":["../../../../../src/dataset-workspace-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataset-workspace-client.d.ts","sourceRoot":"","sources":["../../../../../src/dataset-workspace-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,16 @@
1
1
  import { z } from "zod";
2
2
  export { compileTasksetDraftWorkspace } from "./taskset-draft-package-compiler.js";
3
+ export declare const DatasetWorkspaceListQuerySchema: z.ZodObject<{
4
+ cursor: z.ZodOptional<z.ZodString>;
5
+ projectId: z.ZodOptional<z.ZodString>;
6
+ search: z.ZodOptional<z.ZodString>;
7
+ sort: z.ZodDefault<z.ZodEnum<{
8
+ id: "id";
9
+ name: "name";
10
+ updated: "updated";
11
+ }>>;
12
+ limit: z.ZodDefault<z.ZodNumber>;
13
+ }, z.core.$strict>;
3
14
  export declare const DatasetWorkspaceWriteSchema: z.ZodObject<{
4
15
  operationId: z.ZodString;
5
16
  expectedRevision: z.ZodNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-workspace-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/dataset-workspace-contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataset-workspace-contracts.d.ts","sourceRoot":"","sources":["../../../../../src/dataset-workspace-contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"experiment-client.d.ts","sourceRoot":"","sources":["../../../../../src/experiment-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experiment-client.d.ts","sourceRoot":"","sources":["../../../../../src/experiment-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAiC,yBAAyB,EAAE,oBAAoB,EAAE,qBAAqB,EAChF,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,8BAA8B,EAAmC,MAAM,2BAA2B,CAAC;AAE5G,OAAO,EAA+D,KAAK,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAG/I,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAC5E;AAED,6EAA6E;AAC7E,qBAAa,yBAAyB;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBACJ,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;KAAE;IAM/G,gFAAgF;IAC1E,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAa1F,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUtE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,uBAAuB,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAQ3F,IAAI,CAAC,KAAK,GAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUhF,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAexE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAuGq1N,CAAC;;;;;;;;;qBAA2O,CAAC;;;;;mBAAwJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAA6gD,CAAC;;;;;;;;;;;;;;;;;;;;;;IA9FzxR,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWzF,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG1C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG7C,qGAAqG;IAC/F,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK3D,KAAK,CAAC,KAAK,EAAE,wBAAwB,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAM3D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG5C,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAS3F,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGlD,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAkDu1N,CAAC;;;;;;;;;qBAA2O,CAAC;;;;;mBAAwJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAA6gD,CAAC;;;;;;;;;;;;;;;;;;;;;;IAzCzxR,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAyCg0N,CAAC;;;;;;;;;yBAA2O,CAAC;;;;;uBAAwJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAA6gD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAAp5D,CAAC;;;;;;;;;yBAA2O,CAAC;;;;;uBAAwJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAA6gD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;IApC/xR,OAAO,CAAC,UAAU;YAKJ,gBAAgB;IAK9B,OAAO,CAAC,IAAI;YAKE,OAAO;CAYtB"}
@@ -6,4 +6,5 @@ export * from "./experiment-grading-contracts.js";
6
6
  export * from "./harness-experiment-policy.js";
7
7
  export * from "./experiment-inspection.js";
8
8
  export * from "./experiment-history.js";
9
+ export * from "./dataset-grader-selection.js";
9
10
  //# sourceMappingURL=experiments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"experiments.d.ts","sourceRoot":"","sources":["../../../../../src/experiments.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"experiments.d.ts","sourceRoot":"","sources":["../../../../../src/experiments.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Draft presentation default. Published keys must retain their released value. */
2
+ export declare function graderFeedbackKeyFromName(name: string, rewardId: string): string;
3
+ //# sourceMappingURL=grader-feedback-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grader-feedback-key.d.ts","sourceRoot":"","sources":["../../../../../src/grader-feedback-key.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhF"}
@@ -4,4 +4,5 @@ export * from "./learning-credentials.js";
4
4
  export * from "./learning-client.js";
5
5
  export * from "./model-learning-policy.js";
6
6
  export * from "./grader-inspection.js";
7
+ export * from "./grader-feedback-key.js";
7
8
  //# sourceMappingURL=learning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../../../src/learning.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../../../src/learning.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,0BAA0B,CAAC"}
@@ -28,6 +28,13 @@ export declare const TasksetCatalogQuerySchema: z.ZodObject<{
28
28
  afterId: z.ZodOptional<z.ZodString>;
29
29
  limit: z.ZodDefault<z.ZodNumber>;
30
30
  modelProjectId: z.ZodOptional<z.ZodString>;
31
+ projectId: z.ZodOptional<z.ZodString>;
32
+ search: z.ZodOptional<z.ZodString>;
33
+ sort: z.ZodDefault<z.ZodEnum<{
34
+ id: "id";
35
+ name: "name";
36
+ updated: "updated";
37
+ }>>;
31
38
  }, z.core.$strict>;
32
39
  export declare const TasksetCatalogPageSchema: z.ZodObject<{
33
40
  items: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"taskset-catalog.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,8BAA8B;;;;kBAAsG,CAAC;AAElJ;iEACiE;AACjE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;kBAa5B,CAAC;AACZ,eAAO,MAAM,yBAAyB;;;;kBAI3B,CAAC;AACZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;kBAG1B,CAAC;AACZ,eAAO,MAAM,yBAAyB;;;kBAG3B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,qBAAa,2BAA4B,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5E;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,qBAAa,4BAA4B;;gBAE3B,OAAO,EAAE,2BAA2B;IAO1C,IAAI,CAAC,KAAK,GAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUhI,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAO5F,2EAA2E;IACrE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAkC9I"}
1
+ {"version":3,"file":"taskset-catalog.d.ts","sourceRoot":"","sources":["../../../../../src/taskset-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,8BAA8B;;;;kBAAsG,CAAC;AAElJ;iEACiE;AACjE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;kBAa5B,CAAC;AACZ,eAAO,MAAM,yBAAyB;;;;;;;;;;;kBAO3B,CAAC;AACZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;kBAG1B,CAAC;AACZ,eAAO,MAAM,yBAAyB;;;kBAG3B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,qBAAa,2BAA4B,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5E;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,qBAAa,4BAA4B;;gBAE3B,OAAO,EAAE,2BAA2B;IAO1C,IAAI,CAAC,KAAK,GAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAahI,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAO5F,2EAA2E;IACrE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAkC9I"}
@@ -96,7 +96,7 @@ export declare class OpenPondTrainingProjectClient {
96
96
  }[];
97
97
  defaultTargetId: string | null;
98
98
  resources: {
99
- kind: "environment" | "harness" | "model" | "dataset" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
99
+ kind: "environment" | "dataset" | "harness" | "model" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
100
100
  resourceId: string;
101
101
  release: {
102
102
  id: string;
@@ -195,7 +195,7 @@ export declare class OpenPondTrainingProjectClient {
195
195
  }[];
196
196
  defaultTargetId: string | null;
197
197
  resources: {
198
- kind: "environment" | "harness" | "model" | "dataset" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
198
+ kind: "environment" | "dataset" | "harness" | "model" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
199
199
  resourceId: string;
200
200
  release: {
201
201
  id: string;
@@ -292,7 +292,7 @@ export declare class OpenPondTrainingProjectClient {
292
292
  }[];
293
293
  defaultTargetId: string | null;
294
294
  resources: {
295
- kind: "environment" | "harness" | "model" | "dataset" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
295
+ kind: "environment" | "dataset" | "harness" | "model" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
296
296
  resourceId: string;
297
297
  release: {
298
298
  id: string;
@@ -393,7 +393,7 @@ export declare class OpenPondTrainingProjectClient {
393
393
  }[];
394
394
  defaultTargetId: string | null;
395
395
  resources: {
396
- kind: "environment" | "harness" | "model" | "dataset" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
396
+ kind: "environment" | "dataset" | "harness" | "model" | "evaluator" | "training_configuration" | "training_run" | "experiment" | "learning_policy" | "deployment";
397
397
  resourceId: string;
398
398
  release: {
399
399
  id: string;
@@ -1,9 +1,9 @@
1
1
  import { z } from "zod";
2
2
  export declare const TrainingResourceKindSchema: z.ZodEnum<{
3
3
  environment: "environment";
4
+ dataset: "dataset";
4
5
  harness: "harness";
5
6
  model: "model";
6
- dataset: "dataset";
7
7
  evaluator: "evaluator";
8
8
  training_configuration: "training_configuration";
9
9
  training_run: "training_run";
@@ -14,9 +14,9 @@ export declare const TrainingResourceKindSchema: z.ZodEnum<{
14
14
  export declare const TrainingResourceLinkSchema: z.ZodObject<{
15
15
  kind: z.ZodEnum<{
16
16
  environment: "environment";
17
+ dataset: "dataset";
17
18
  harness: "harness";
18
19
  model: "model";
19
- dataset: "dataset";
20
20
  evaluator: "evaluator";
21
21
  training_configuration: "training_configuration";
22
22
  training_run: "training_run";
@@ -195,9 +195,9 @@ export declare const TrainingProjectContentSchema: z.ZodObject<{
195
195
  resources: z.ZodArray<z.ZodObject<{
196
196
  kind: z.ZodEnum<{
197
197
  environment: "environment";
198
+ dataset: "dataset";
198
199
  harness: "harness";
199
200
  model: "model";
200
- dataset: "dataset";
201
201
  evaluator: "evaluator";
202
202
  training_configuration: "training_configuration";
203
203
  training_run: "training_run";
@@ -315,9 +315,9 @@ export declare const TrainingProjectSchema: z.ZodObject<{
315
315
  resources: z.ZodArray<z.ZodObject<{
316
316
  kind: z.ZodEnum<{
317
317
  environment: "environment";
318
+ dataset: "dataset";
318
319
  harness: "harness";
319
320
  model: "model";
320
- dataset: "dataset";
321
321
  evaluator: "evaluator";
322
322
  training_configuration: "training_configuration";
323
323
  training_run: "training_run";
@@ -433,9 +433,9 @@ export declare const TrainingProjectWriteSchema: z.ZodObject<{
433
433
  resources: z.ZodArray<z.ZodObject<{
434
434
  kind: z.ZodEnum<{
435
435
  environment: "environment";
436
+ dataset: "dataset";
436
437
  harness: "harness";
437
438
  model: "model";
438
- dataset: "dataset";
439
439
  evaluator: "evaluator";
440
440
  training_configuration: "training_configuration";
441
441
  training_run: "training_run";
@@ -565,9 +565,9 @@ export declare const TrainingProjectListSchema: z.ZodObject<{
565
565
  resources: z.ZodArray<z.ZodObject<{
566
566
  kind: z.ZodEnum<{
567
567
  environment: "environment";
568
+ dataset: "dataset";
568
569
  harness: "harness";
569
570
  model: "model";
570
- dataset: "dataset";
571
571
  evaluator: "evaluator";
572
572
  training_configuration: "training_configuration";
573
573
  training_run: "training_run";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openpond-sdk",
3
- "version": "0.9.8",
3
+ "version": "0.9.9",
4
4
  "description": "Server-side TypeScript SDK for OpenPond sandboxes and agentic work",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/taskset-catalog.ts"],
4
- "sourcesContent": ["import { 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: IdSchema.optional(),\n limit: z.number().int().min(1).max(100).default(30),\n modelProjectId: IdSchema.optional(),\n}).strict();\nexport const TasksetCatalogPageSchema = z.object({\n items: z.array(HostedTasksetSummarySchema).max(100),\n nextCursor: IdSchema.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);\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 const page = TasksetCatalogPageSchema.parse(await this.#request(`?${search}`, options.signal));\n if (page.items.length > parsed.limit || 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"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/experiment-scoring-contracts.ts", "../src/experiment-client.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { contentHash, ImmutableReleaseRefSchema } from \"@openpond/harness\";\nimport { RewardReleaseRefSchema } from \"@openpond/evals/rewards\";\nimport { ExperimentGraderPinSchema } from \"./experiment-contracts.js\";\nimport { ExperimentFieldMappingsSchema } from \"./experiment-field-mappings.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nexport const ExperimentScoringRequestSchema = z.object({\n operationId: Id,\n execution: ImmutableReleaseRefSchema,\n graders: z.array(RewardReleaseRefSchema).min(1).max(100),\n maximumCostUsd: z.number().finite().min(0.000001).max(10_000),\n mappings: z.array(z.object({ graderId: Id, fields: ExperimentFieldMappingsSchema }).strict()).max(100).optional(),\n}).strict().superRefine((value, context) => {\n if (new Set(value.graders.map(grader => grader.id)).size !== value.graders.length)\n context.addIssue({ code: \"custom\", path: [\"graders\"], message: \"Select each grader once.\" });\n if (value.mappings && (new Set(value.mappings.map(mapping => mapping.graderId)).size !== value.mappings.length\n || value.mappings.some(mapping => !value.graders.some(grader => grader.id === mapping.graderId))))\n context.addIssue({ code: \"custom\", path: [\"mappings\"], message: \"Map each selected grader at most once.\" });\n});\nexport type ExperimentScoringRequest = z.infer<typeof ExperimentScoringRequestSchema>;\n\nconst ScoringPassContent = z.object({\n schemaVersion: z.literal(\"openpond.experimentScoringPass.v1\"),\n id: Id, teamId: Id, revision: z.number().int().positive(),\n request: ExperimentScoringRequestSchema,\n graders: z.array(ExperimentGraderPinSchema).min(1).max(100),\n status: z.enum([\"queued\", \"running\", \"cancelling\", \"completed\", \"failed\", \"cancelled\"]),\n totalCount: z.number().int().min(1).max(10_000),\n counts: z.object({ pending: z.number().int().nonnegative(), running: z.number().int().nonnegative(),\n scored: z.number().int().nonnegative(), unavailable: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(), cancelled: z.number().int().nonnegative() }).strict(),\n resultAvailable: z.boolean(), createdAt: z.iso.datetime(), startedAt: z.iso.datetime().nullable(),\n completedAt: z.iso.datetime().nullable(),\n error: z.object({ code: Id, message: z.string().max(2_000) }).strict().nullable(),\n}).strict();\nexport const ExperimentScoringPassSchema = ScoringPassContent.extend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ExperimentScoringPass = z.infer<typeof ExperimentScoringPassSchema>;\n\n/** A pass grades owned output and carries no model-execution authority. */\nexport function verifyExperimentScoringPass(value: unknown) {\n const pass = ExperimentScoringPassSchema.parse(value);\n const { contentHash: actual, ...content } = pass;\n if (contentHash(content) !== actual || Object.values(pass.counts).reduce((sum, count) => sum + count, 0) !== pass.totalCount)\n throw new Error(\"Scoring pass integrity or population accounting failed.\");\n const terminal = [\"completed\", \"failed\", \"cancelled\"].includes(pass.status);\n if (terminal && (!pass.completedAt || pass.counts.pending || pass.counts.running)\n || !terminal && (pass.completedAt !== null || pass.resultAvailable)\n || pass.status === \"completed\" && !pass.resultAvailable)\n throw new Error(\"Scoring pass lifecycle differs from its retained result.\");\n if (pass.graders.length !== pass.request.graders.length || new Set(pass.graders.map(grader => grader.feedbackKey)).size !== pass.graders.length\n || pass.graders.some((grader, index) => contentHash(grader.release) !== contentHash(pass.request.graders[index]!)\n || contentHash(grader.mappings ?? []) !== contentHash(pass.request.mappings?.find(mapping => mapping.graderId === grader.release?.id)?.fields ?? [])))\n throw new Error(\"Scoring pass graders differ from their exact admission.\");\n return pass;\n}\n", "import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { compareExperiments, verifyExperimentEvidence } from \"@openpond/evals/experiments\";\nimport { ExperimentDefinitionRefSchema, ExperimentListQuerySchema, SaveExperimentSchema, StartExperimentSchema, experimentDefinitionRef,\n verifyExperimentDefinition, type ExperimentDefinitionRef } from \"./experiment-contracts.js\";\nimport { PrepareHarnessExperimentSchema, PreparedHarnessExperimentSchema } from \"./experiment-contracts.js\";\nimport { verifyHarnessExperimentManifest, verifyModelTasksetRunDetails } from \"./model-taskset-runs-contracts.js\";\nimport { ExperimentScoringRequestSchema, verifyExperimentScoringPass, type ExperimentScoringRequest } from \"./experiment-scoring-contracts.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nexport class OpenPondExperimentError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondExperimentError\"; }\n}\n\n/** Saved configuration and execution identities share the host's service. */\nexport class OpenPondExperimentsClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim())\n throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n /** Resolves a released target without saving a definition or dispatching it. */\n async prepareHarness(value: z.input<typeof PrepareHarnessExperimentSchema>, signal?: AbortSignal) {\n const request = PrepareHarnessExperimentSchema.parse(value);\n const result = PreparedHarnessExperimentSchema.parse(await this.request(\"/harness-setup\", \"POST\", request, signal));\n verifyHarnessExperimentManifest(result.request, result.manifest);\n const policy = result.request.policy;\n if (result.request.teamId !== this.options.teamId || result.request.operationId !== request.operationId\n || policy.kind !== \"hosted_harness\" || policy.profileRepositoryId !== request.profileRepositoryId\n || policy.source.definitionId !== request.definitionId || policy.modelId !== request.modelId\n || policy.reasoningEffort !== request.reasoningEffort || result.maximumCostUsd !== request.maximumCostUsd\n || result.manifest.limits.maximumSpendUsd !== request.maximumCostUsd)\n throw new Error(\"Harness preparation differs from its requested scope or configuration.\");\n return result;\n }\n async save(value: z.input<typeof SaveExperimentSchema>, signal?: AbortSignal) {\n const request = SaveExperimentSchema.parse(value);\n if (request.request.teamId !== this.options.teamId) throw new Error(\"Experiment workspace mismatch.\");\n const result = this.definition(await this.request(\"\", \"POST\", request, signal), request.id);\n if (result.revision !== request.expectedRevision + 1 || contentHash(result.request) !== contentHash(request.request)\n || result.maximumCostUsd !== request.maximumCostUsd) throw new Error(\"Experiment save receipt differs from its submitted configuration.\");\n if (request.graders && contentHash(request.graders) !== contentHash(result.graders.map(grader => ({ id: grader.id, version: grader.version, contentHash: grader.contentHash, mappings: grader.mappings ?? [] }))))\n throw new Error(\"Experiment save receipt differs from its selected graders or mappings.\");\n return result;\n }\n async get(id: string, options: { reference?: ExperimentDefinitionRef; signal?: AbortSignal } = {}) {\n const reference = options.reference ? ExperimentDefinitionRefSchema.parse(options.reference) : undefined;\n if (reference && reference.id !== id) throw new Error(\"Experiment reference identity mismatch.\");\n const suffix = reference ? `?${new URLSearchParams({ revision: String(reference.revision), contentHash: reference.contentHash })}` : \"\";\n const result = this.definition(await this.request(`/${encodeURIComponent(Id.parse(id))}${suffix}`, \"GET\", undefined, options.signal), id);\n if (options.reference && contentHash(experimentDefinitionRef(result)) !== contentHash(options.reference)) throw new Error(\"Experiment revision mismatch.\");\n return result;\n }\n async list(value: z.input<typeof ExperimentListQuerySchema> = {}, signal?: AbortSignal) {\n const query = ExperimentListQuerySchema.parse(value);\n const params = new URLSearchParams(Object.entries(query).map(([key, value]) => [key, String(value)]));\n const page = z.object({ items: z.array(z.unknown()).max(100), nextCursor: Id.nullable() }).strict().parse(await this.request(`?${params}`, \"GET\", undefined, signal));\n const items = page.items.map(value => this.definition(value));\n if (items.length > query.limit || new Set(items.map(item => item.id)).size !== items.length\n || items.some(item => query.projectId && item.request.project?.id !== query.projectId || query.datasetHash && item.request.taskset.contentHash !== query.datasetHash))\n throw new Error(\"Experiment page differs from its selected scope.\");\n return { items, nextCursor: page.nextCursor };\n }\n async start(value: z.input<typeof StartExperimentSchema>, signal?: AbortSignal) {\n const request = StartExperimentSchema.parse(value);\n const response = z.object({ definition: z.unknown(), run: z.unknown() }).strict().parse(\n await this.request(`/${encodeURIComponent(request.definition.id)}/start`, \"POST\", request, signal));\n const definition = this.definition(response.definition, request.definition.id);\n if (contentHash(experimentDefinitionRef(definition)) !== contentHash(request.definition)) throw new Error(\"Experiment Start revision mismatch.\");\n const result = await verifyModelTasksetRunDetails(response.run);\n if (result.summary.teamId !== this.options.teamId || result.request.operationId !== request.operationId\n || contentHash(savedRequestPopulation(result.request))\n !== contentHash(savedRequestPopulation({ ...definition.request, operationId: request.operationId }))\n || contentHash(result.manifest.metadata.experimentDefinition) !== contentHash(request.definition)\n || result.manifest.metadata.experimentConfigurationHash !== contentHash({ definition: request.definition, maximumCostUsd: definition.maximumCostUsd, graders: definition.graders }))\n throw new Error(\"Experiment execution differs from its saved configuration.\");\n return result;\n }\n async result(executionId: string, signal?: AbortSignal) {\n const value = z.object({ executionId: Id, passId: Id.nullable(), manifest: z.unknown(), result: z.unknown() }).strict()\n .parse(await this.request(`/executions/${encodeURIComponent(Id.parse(executionId))}/result`, \"GET\", undefined, signal));\n const evidence = verifyExperimentEvidence(value);\n if (value.executionId !== executionId || evidence.manifest.teamId !== this.options.teamId\n || evidence.manifest.lineage?.execution.id !== executionId\n || evidence.manifest.lineage.scoringPassId !== value.passId) throw new Error(\"Experiment result identity mismatch.\");\n return { ...evidence, executionId, passId: value.passId };\n }\n async executions(definitionId: string, options: { afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const page = z.object({ items: z.array(z.unknown()).max(30), nextCursor: Id.nullable() }).strict().parse(\n await this.request(`/${encodeURIComponent(Id.parse(definitionId))}/executions?${params}`, \"GET\", undefined, options.signal));\n const items = await Promise.all(page.items.map(value => verifyModelTasksetRunDetails(value)));\n if (items.some(item => item.summary.teamId !== this.options.teamId\n || ExperimentDefinitionRefSchema.parse(item.manifest.metadata.experimentDefinition).id !== definitionId)\n || new Set(items.map(item => item.summary.id)).size !== items.length)\n throw new Error(\"Experiment execution page has invalid ownership or repeated identities.\");\n return { items, nextCursor: page.nextCursor };\n }\n async execution(id: string, signal?: AbortSignal) {\n return this.executionDetails(await this.request(`/executions/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal), id);\n }\n async cancel(id: string, signal?: AbortSignal) {\n return this.executionDetails(await this.request(`/executions/${encodeURIComponent(Id.parse(id))}/cancel`, \"POST\", {}, signal), id);\n }\n /** Retry intentionally creates another execution; a transport retry reuses the same operation id. */\n async retry(id: string, operationId: string, signal?: AbortSignal) {\n const result = await this.executionDetails(await this.request(`/executions/${encodeURIComponent(Id.parse(id))}/retry`, \"POST\", { operationId: Id.parse(operationId) }, signal));\n if (result.request.operationId !== operationId) throw new Error(\"Experiment retry operation mismatch.\");\n return result;\n }\n async score(value: ExperimentScoringRequest, signal?: AbortSignal) {\n const request = ExperimentScoringRequestSchema.parse(value);\n const pass = this.pass(await this.request(`/executions/${encodeURIComponent(request.execution.id)}/scoring-passes`, \"POST\", request, signal));\n if (contentHash(pass.request) !== contentHash(request)) throw new Error(\"Scoring admission differs from its submitted inputs.\");\n return pass;\n }\n async scoringPass(id: string, signal?: AbortSignal) {\n return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal), id);\n }\n async scoringPasses(executionId: string, options: { afterId?: string; signal?: AbortSignal } = {}) {\n const params = new URLSearchParams(options.afterId ? { afterId: Id.parse(options.afterId) } : {});\n const page = z.object({ items: z.array(z.unknown()).max(30), nextCursor: Id.nullable() }).strict().parse(\n await this.request(`/executions/${encodeURIComponent(Id.parse(executionId))}/scoring-passes?${params}`, \"GET\", undefined, options.signal));\n const items = page.items.map(value => this.pass(value));\n if (items.some(item => item.request.execution.id !== executionId) || new Set(items.map(item => item.id)).size !== items.length)\n throw new Error(\"Scoring pass page differs from its execution ownership.\");\n return { items, nextCursor: page.nextCursor };\n }\n async cancelScoringPass(id: string, signal?: AbortSignal) {\n return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}/cancel`, \"POST\", {}, signal), id);\n }\n async scoringResult(id: string, signal?: AbortSignal) {\n const value = z.object({ executionId: Id, passId: Id, manifest: z.unknown(), result: z.unknown() }).strict().parse(\n await this.request(`/scoring-passes/${encodeURIComponent(Id.parse(id))}/result`, \"GET\", undefined, signal));\n const evidence = verifyExperimentEvidence(value);\n if (value.passId !== id || evidence.manifest.teamId !== this.options.teamId || evidence.manifest.id !== id\n || evidence.manifest.lineage?.execution.id !== value.executionId || evidence.manifest.lineage.scoringPassId !== id)\n throw new Error(\"Scoring result identity mismatch.\");\n return { ...evidence, executionId: value.executionId, passId: id };\n }\n async compare(baselineId: string, candidateId: string, signal?: AbortSignal) {\n const read = (id: string) => id.startsWith(\"score_\") ? this.scoringResult(id, signal) : this.result(id, signal);\n const [baseline, candidate] = await Promise.all([read(baselineId), read(candidateId)]);\n return { baseline, candidate, comparison: compareExperiments(baseline, candidate) };\n }\n private definition(value: unknown, id?: string) {\n const result = verifyExperimentDefinition(value);\n if (result.teamId !== this.options.teamId || id && result.id !== id) throw new Error(\"Experiment identity mismatch.\");\n return result;\n }\n private async executionDetails(value: unknown, id?: string) {\n const details = await verifyModelTasksetRunDetails(value);\n if (details.summary.teamId !== this.options.teamId || id && details.summary.id !== id) throw new Error(\"Experiment execution identity mismatch.\");\n return details;\n }\n private pass(value: unknown, id?: string) {\n const pass = verifyExperimentScoringPass(value);\n if (pass.teamId !== this.options.teamId || id && pass.id !== id) throw new Error(\"Scoring pass identity mismatch.\");\n return pass;\n }\n private async request(path: string, method: string, body?: unknown, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.options.fetch ?? fetch)(`${this.baseUrl}/v1/experiments${path}`, {\n method, signal, redirect: \"error\", headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n const value = await response.json();\n if (!response.ok) {\n const parsed = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondExperimentError(response.status, parsed.success ? parsed.data.code : \"experiment_request_failed\", parsed.success ? parsed.data.message : \"Experiment request failed.\");\n }\n return value;\n }\n}\n\n/** Native Harness assigns receipt IDs when sealing each new execution. Its\n * saved population still pins every task/seed; Model receipts stay exact. */\nfunction savedRequestPopulation(request: z.infer<typeof SaveExperimentSchema>[\"request\"]) {\n return request.policy.kind === \"hosted_harness\" ? {\n ...request, population: request.population.map(({ receiptId: _id, ...member }) => member),\n } : request;\n}\n"],
5
- "mappings": "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",
6
- "names": ["z", "Id", "z", "value"]
7
- }