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.
- package/dist/{chunk-RXKIOOFZ.js → chunk-4JRSH2TT.js} +2 -2
- package/dist/chunk-4JRSH2TT.js.map +7 -0
- package/dist/{chunk-A4ZDOZKP.js → chunk-K3JCP4FO.js} +11 -5
- package/dist/chunk-K3JCP4FO.js.map +7 -0
- package/dist/{chunk-TQ5ASK7D.js → chunk-XMKEFQ62.js} +2 -2
- package/dist/dataset-workspaces.js +9 -5
- package/dist/dataset-workspaces.js.map +2 -2
- package/dist/experiments.js +34 -2
- package/dist/experiments.js.map +3 -3
- package/dist/index.js +1 -1
- package/dist/learning.js +8 -0
- package/dist/learning.js.map +3 -3
- package/dist/taskset-catalog.js +1 -1
- package/dist/taskset-drafts.js +2 -2
- package/dist/taskset-packages.js +2 -2
- package/dist/types/packages/sdk/src/dataset-grader-selection.d.ts +24 -0
- package/dist/types/packages/sdk/src/dataset-grader-selection.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +2 -4
- package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +11 -0
- package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/experiments.d.ts +1 -0
- package/dist/types/packages/sdk/src/experiments.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/grader-feedback-key.d.ts +3 -0
- package/dist/types/packages/sdk/src/grader-feedback-key.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts +7 -0
- package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/training-project-client.d.ts +4 -4
- package/dist/types/packages/sdk/src/training-project-contracts.d.ts +6 -6
- package/package.json +1 -1
- package/dist/chunk-A4ZDOZKP.js.map +0 -7
- package/dist/chunk-RXKIOOFZ.js.map +0 -7
- /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-
|
|
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": ";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,SAAS;AAElB,SAAS,8BAA8B;AAIvC,IAAM,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACpC,IAAM,iCAAiC,EAAE,OAAO;AAAA,EACrD,aAAa;AAAA,EACb,WAAW;AAAA,EACX,SAAS,EAAE,MAAM,sBAAsB,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACvD,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAQ,EAAE,IAAI,GAAM;AAAA,EAC5D,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,QAAQ,8BAA8B,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAClH,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,YAAY;AAC1C,MAAI,IAAI,IAAI,MAAM,QAAQ,IAAI,YAAU,OAAO,EAAE,CAAC,EAAE,SAAS,MAAM,QAAQ;AACzE,YAAQ,SAAS,EAAE,MAAM,UAAU,MAAM,CAAC,SAAS,GAAG,SAAS,2BAA2B,CAAC;AAC7F,MAAI,MAAM,aAAa,IAAI,IAAI,MAAM,SAAS,IAAI,aAAW,QAAQ,QAAQ,CAAC,EAAE,SAAS,MAAM,SAAS,UACnG,MAAM,SAAS,KAAK,aAAW,CAAC,MAAM,QAAQ,KAAK,YAAU,OAAO,OAAO,QAAQ,QAAQ,CAAC;AAC/F,YAAQ,SAAS,EAAE,MAAM,UAAU,MAAM,CAAC,UAAU,GAAG,SAAS,yCAAyC,CAAC;AAC9G,CAAC;AAGD,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,eAAe,EAAE,QAAQ,mCAAmC;AAAA,EAC5D,IAAI;AAAA,EAAI,QAAQ;AAAA,EAAI,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACxD,SAAS;AAAA,EACT,SAAS,EAAE,MAAM,yBAAyB,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC1D,QAAQ,EAAE,KAAK,CAAC,UAAU,WAAW,cAAc,aAAa,UAAU,WAAW,CAAC;AAAA,EACtF,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAM;AAAA,EAC9C,QAAQ,EAAE,OAAO;AAAA,IAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IAAG,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IAChG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IAAG,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IAClF,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IAAG,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EAAE,CAAC,EAAE,OAAO;AAAA,EAC9F,iBAAiB,EAAE,QAAQ;AAAA,EAAG,WAAW,EAAE,IAAI,SAAS;AAAA,EAAG,WAAW,EAAE,IAAI,SAAS,EAAE,SAAS;AAAA,EAChG,aAAa,EAAE,IAAI,SAAS,EAAE,SAAS;AAAA,EACvC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,OAAO,EAAE,IAAI,GAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS;AAClF,CAAC,EAAE,OAAO;AACH,IAAM,8BAA8B,mBAAmB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,EAAE,CAAC;AAIjH,SAAS,4BAA4B,OAAgB;AAC1D,QAAM,OAAO,4BAA4B,MAAM,KAAK;AACpD,QAAM,EAAE,aAAa,QAAQ,GAAG,QAAQ,IAAI;AAC5C,MAAI,YAAY,OAAO,MAAM,UAAU,OAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC,MAAM,KAAK;AAChH,UAAM,IAAI,MAAM,yDAAyD;AAC3E,QAAM,WAAW,CAAC,aAAa,UAAU,WAAW,EAAE,SAAS,KAAK,MAAM;AAC1E,MAAI,aAAa,CAAC,KAAK,eAAe,KAAK,OAAO,WAAW,KAAK,OAAO,YACpE,CAAC,aAAa,KAAK,gBAAgB,QAAQ,KAAK,oBAChD,KAAK,WAAW,eAAe,CAAC,KAAK;AACxC,UAAM,IAAI,MAAM,0DAA0D;AAC5E,MAAI,KAAK,QAAQ,WAAW,KAAK,QAAQ,QAAQ,UAAU,IAAI,IAAI,KAAK,QAAQ,IAAI,YAAU,OAAO,WAAW,CAAC,EAAE,SAAS,KAAK,QAAQ,UACpI,KAAK,QAAQ,KAAK,CAAC,QAAQ,UAAU,YAAY,OAAO,OAAO,MAAM,YAAY,KAAK,QAAQ,QAAQ,KAAK,CAAE,KAC3G,YAAY,OAAO,YAAY,CAAC,CAAC,MAAM,YAAY,KAAK,QAAQ,UAAU,KAAK,aAAW,QAAQ,aAAa,OAAO,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACtJ,UAAM,IAAI,MAAM,yDAAyD;AAC3E,SAAO;AACT;;;ACvDA,SAAS,KAAAA,UAAS;AAElB,SAAS,oBAAoB,gCAAgC;AAO7D,IAAMC,MAAKC,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACpC,IAAM,0BAAN,cAAsC,MAAM;AAAA,EACjD,YAAqB,QAAyB,MAAc,SAAiB;AAAE,UAAM,OAAO;AAAvE;AAAyB;AAAiD,SAAK,OAAO;AAAA,EAA2B;AAAA,EAAjH;AAAA,EAAyB;AAChD;AAGO,IAAM,4BAAN,MAAgC;AAAA,EAErC,YAA6B,SAAoF;AAApF;AAC3B,UAAM,MAAM,IAAI,IAAI,QAAQ,OAAO;AACnC,QAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,IAAI,QAAQ,KAAK,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,QAAQ,CAAC,QAAQ,OAAO,KAAK,KAAK,CAAC,QAAQ,OAAO,KAAK;AAC1J,YAAM,IAAI,MAAM,4DAA4D;AAC9E,SAAK,UAAU,IAAI,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAClD;AAAA,EAL6B;AAAA,EADZ;AAAA;AAAA,EAQjB,MAAM,eAAe,OAAuD,QAAsB;AAChG,UAAM,UAAU,+BAA+B,MAAM,KAAK;AAC1D,UAAM,SAAS,gCAAgC,MAAM,MAAM,KAAK,QAAQ,kBAAkB,QAAQ,SAAS,MAAM,CAAC;AAClH,oCAAgC,OAAO,SAAS,OAAO,QAAQ;AAC/D,UAAM,SAAS,OAAO,QAAQ;AAC9B,QAAI,OAAO,QAAQ,WAAW,KAAK,QAAQ,UAAU,OAAO,QAAQ,gBAAgB,QAAQ,eACvF,OAAO,SAAS,oBAAoB,OAAO,wBAAwB,QAAQ,uBAC3E,OAAO,OAAO,iBAAiB,QAAQ,gBAAgB,OAAO,YAAY,QAAQ,WAClF,OAAO,oBAAoB,QAAQ,mBAAmB,OAAO,mBAAmB,QAAQ,kBACxF,OAAO,SAAS,OAAO,oBAAoB,QAAQ;AACtD,YAAM,IAAI,MAAM,wEAAwE;AAC1F,WAAO;AAAA,EACT;AAAA,EACA,MAAM,KAAK,OAA6C,QAAsB;AAC5E,UAAM,UAAU,qBAAqB,MAAM,KAAK;AAChD,QAAI,QAAQ,QAAQ,WAAW,KAAK,QAAQ,OAAQ,OAAM,IAAI,MAAM,gCAAgC;AACpG,UAAM,SAAS,KAAK,WAAW,MAAM,KAAK,QAAQ,IAAI,QAAQ,SAAS,MAAM,GAAG,QAAQ,EAAE;AAC1F,QAAI,OAAO,aAAa,QAAQ,mBAAmB,KAAK,YAAY,OAAO,OAAO,MAAM,YAAY,QAAQ,OAAO,KAC9G,OAAO,mBAAmB,QAAQ,eAAgB,OAAM,IAAI,MAAM,mEAAmE;AAC1I,QAAI,QAAQ,WAAW,YAAY,QAAQ,OAAO,MAAM,YAAY,OAAO,QAAQ,IAAI,aAAW,EAAE,IAAI,OAAO,IAAI,SAAS,OAAO,SAAS,aAAa,OAAO,aAAa,UAAU,OAAO,YAAY,CAAC,EAAE,EAAE,CAAC;AAC9M,YAAM,IAAI,MAAM,wEAAwE;AAC1F,WAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,IAAY,UAAyE,CAAC,GAAG;AACjG,UAAM,YAAY,QAAQ,YAAY,8BAA8B,MAAM,QAAQ,SAAS,IAAI;AAC/F,QAAI,aAAa,UAAU,OAAO,GAAI,OAAM,IAAI,MAAM,yCAAyC;AAC/F,UAAM,SAAS,YAAY,IAAI,IAAI,gBAAgB,EAAE,UAAU,OAAO,UAAU,QAAQ,GAAG,aAAa,UAAU,YAAY,CAAC,CAAC,KAAK;AACrI,UAAM,SAAS,KAAK,WAAW,MAAM,KAAK,QAAQ,IAAI,mBAAmBD,IAAG,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,QAAW,QAAQ,MAAM,GAAG,EAAE;AACxI,QAAI,QAAQ,aAAa,YAAY,wBAAwB,MAAM,CAAC,MAAM,YAAY,QAAQ,SAAS,EAAG,OAAM,IAAI,MAAM,+BAA+B;AACzJ,WAAO;AAAA,EACT;AAAA,EACA,MAAM,KAAK,QAAmD,CAAC,GAAG,QAAsB;AACtF,UAAM,QAAQ,0BAA0B,MAAM,KAAK;AACnD,UAAM,SAAS,IAAI,gBAAgB,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAEE,MAAK,MAAMA,WAAU,MAAS,EAAE,IAAI,CAAC,CAAC,KAAKA,MAAK,MAAM,CAAC,KAAK,OAAOA,MAAK,CAAC,CAAC,CAAC;AAC/I,UAAM,OAAOD,GAAE,OAAO,EAAE,OAAOA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,IAAI,GAAG,GAAG,YAAYD,IAAG,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,QAAW,MAAM,CAAC;AACpK,UAAM,QAAQ,KAAK,MAAM,IAAI,CAAAE,WAAS,KAAK,WAAWA,MAAK,CAAC;AAC5D,QAAI,MAAM,SAAS,MAAM,SAAS,IAAI,IAAI,MAAM,IAAI,UAAQ,KAAK,EAAE,CAAC,EAAE,SAAS,MAAM,UAChF,MAAM,KAAK,UAAQ,MAAM,aAAa,KAAK,QAAQ,SAAS,OAAO,MAAM,aAAa,MAAM,eAAe,KAAK,QAAQ,QAAQ,gBAAgB,MAAM,WAAW;AACpK,YAAM,IAAI,MAAM,kDAAkD;AACpE,WAAO,EAAE,OAAO,YAAY,KAAK,WAAW;AAAA,EAC9C;AAAA,EACA,MAAM,MAAM,OAA8C,QAAsB;AAC9E,UAAM,UAAU,sBAAsB,MAAM,KAAK;AACjD,UAAM,WAAWD,GAAE,OAAO,EAAE,YAAYA,GAAE,QAAQ,GAAG,KAAKA,GAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE;AAAA,MAChF,MAAM,KAAK,QAAQ,IAAI,mBAAmB,QAAQ,WAAW,EAAE,CAAC,UAAU,QAAQ,SAAS,MAAM;AAAA,IAAC;AACpG,UAAM,aAAa,KAAK,WAAW,SAAS,YAAY,QAAQ,WAAW,EAAE;AAC7E,QAAI,YAAY,wBAAwB,UAAU,CAAC,MAAM,YAAY,QAAQ,UAAU,EAAG,OAAM,IAAI,MAAM,qCAAqC;AAC/I,UAAM,SAAS,MAAM,6BAA6B,SAAS,GAAG;AAC9D,QAAI,OAAO,QAAQ,WAAW,KAAK,QAAQ,UAAU,OAAO,QAAQ,gBAAgB,QAAQ,eACvF,YAAY,uBAAuB,OAAO,OAAO,CAAC,MAC/C,YAAY,uBAAuB,EAAE,GAAG,WAAW,SAAS,aAAa,QAAQ,YAAY,CAAC,CAAC,KAClG,YAAY,OAAO,SAAS,SAAS,oBAAoB,MAAM,YAAY,QAAQ,UAAU,KAC7F,OAAO,SAAS,SAAS,gCAAgC,YAAY,EAAE,YAAY,QAAQ,YAAY,gBAAgB,WAAW,gBAAgB,SAAS,WAAW,QAAQ,CAAC;AAClL,YAAM,IAAI,MAAM,4DAA4D;AAC9E,WAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,aAAqB,QAAsB;AACtD,UAAM,QAAQA,GAAE,OAAO,EAAE,aAAaD,KAAI,QAAQA,IAAG,SAAS,GAAG,UAAUC,GAAE,QAAQ,GAAG,QAAQA,GAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EACnH,MAAM,MAAM,KAAK,QAAQ,eAAe,mBAAmBD,IAAG,MAAM,WAAW,CAAC,CAAC,WAAW,OAAO,QAAW,MAAM,CAAC;AACxH,UAAM,WAAW,yBAAyB,KAAK;AAC/C,QAAI,MAAM,gBAAgB,eAAe,SAAS,SAAS,WAAW,KAAK,QAAQ,UAC9E,SAAS,SAAS,SAAS,UAAU,OAAO,eAC5C,SAAS,SAAS,QAAQ,kBAAkB,MAAM,OAAQ,OAAM,IAAI,MAAM,sCAAsC;AACrH,WAAO,EAAE,GAAG,UAAU,aAAa,QAAQ,MAAM,OAAO;AAAA,EAC1D;AAAA,EACA,MAAM,WAAW,cAAsB,UAAsD,CAAC,GAAG;AAC/F,UAAM,SAAS,IAAI,gBAAgB,QAAQ,UAAU,EAAE,SAASA,IAAG,MAAM,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC;AAChG,UAAM,OAAOC,GAAE,OAAO,EAAE,OAAOA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,YAAYD,IAAG,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE;AAAA,MACjG,MAAM,KAAK,QAAQ,IAAI,mBAAmBA,IAAG,MAAM,YAAY,CAAC,CAAC,eAAe,MAAM,IAAI,OAAO,QAAW,QAAQ,MAAM;AAAA,IAAC;AAC7H,UAAM,QAAQ,MAAM,QAAQ,IAAI,KAAK,MAAM,IAAI,WAAS,6BAA6B,KAAK,CAAC,CAAC;AAC5F,QAAI,MAAM,KAAK,UAAQ,KAAK,QAAQ,WAAW,KAAK,QAAQ,UACvD,8BAA8B,MAAM,KAAK,SAAS,SAAS,oBAAoB,EAAE,OAAO,YAAY,KACpG,IAAI,IAAI,MAAM,IAAI,UAAQ,KAAK,QAAQ,EAAE,CAAC,EAAE,SAAS,MAAM;AAC9D,YAAM,IAAI,MAAM,yEAAyE;AAC3F,WAAO,EAAE,OAAO,YAAY,KAAK,WAAW;AAAA,EAC9C;AAAA,EACA,MAAM,UAAU,IAAY,QAAsB;AAChD,WAAO,KAAK,iBAAiB,MAAM,KAAK,QAAQ,eAAe,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,QAAW,MAAM,GAAG,EAAE;AAAA,EAClI;AAAA,EACA,MAAM,OAAO,IAAY,QAAsB;AAC7C,WAAO,KAAK,iBAAiB,MAAM,KAAK,QAAQ,eAAe,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE;AAAA,EACnI;AAAA;AAAA,EAEA,MAAM,MAAM,IAAY,aAAqB,QAAsB;AACjE,UAAM,SAAS,MAAM,KAAK,iBAAiB,MAAM,KAAK,QAAQ,eAAe,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,UAAU,QAAQ,EAAE,aAAaA,IAAG,MAAM,WAAW,EAAE,GAAG,MAAM,CAAC;AAC9K,QAAI,OAAO,QAAQ,gBAAgB,YAAa,OAAM,IAAI,MAAM,sCAAsC;AACtG,WAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,OAAiC,QAAsB;AACjE,UAAM,UAAU,+BAA+B,MAAM,KAAK;AAC1D,UAAM,OAAO,KAAK,KAAK,MAAM,KAAK,QAAQ,eAAe,mBAAmB,QAAQ,UAAU,EAAE,CAAC,mBAAmB,QAAQ,SAAS,MAAM,CAAC;AAC5I,QAAI,YAAY,KAAK,OAAO,MAAM,YAAY,OAAO,EAAG,OAAM,IAAI,MAAM,sDAAsD;AAC9H,WAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY,IAAY,QAAsB;AAClD,WAAO,KAAK,KAAK,MAAM,KAAK,QAAQ,mBAAmB,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,IAAI,OAAO,QAAW,MAAM,GAAG,EAAE;AAAA,EAC1H;AAAA,EACA,MAAM,cAAc,aAAqB,UAAsD,CAAC,GAAG;AACjG,UAAM,SAAS,IAAI,gBAAgB,QAAQ,UAAU,EAAE,SAASA,IAAG,MAAM,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC;AAChG,UAAM,OAAOC,GAAE,OAAO,EAAE,OAAOA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,YAAYD,IAAG,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE;AAAA,MACjG,MAAM,KAAK,QAAQ,eAAe,mBAAmBA,IAAG,MAAM,WAAW,CAAC,CAAC,mBAAmB,MAAM,IAAI,OAAO,QAAW,QAAQ,MAAM;AAAA,IAAC;AAC3I,UAAM,QAAQ,KAAK,MAAM,IAAI,WAAS,KAAK,KAAK,KAAK,CAAC;AACtD,QAAI,MAAM,KAAK,UAAQ,KAAK,QAAQ,UAAU,OAAO,WAAW,KAAK,IAAI,IAAI,MAAM,IAAI,UAAQ,KAAK,EAAE,CAAC,EAAE,SAAS,MAAM;AACtH,YAAM,IAAI,MAAM,yDAAyD;AAC3E,WAAO,EAAE,OAAO,YAAY,KAAK,WAAW;AAAA,EAC9C;AAAA,EACA,MAAM,kBAAkB,IAAY,QAAsB;AACxD,WAAO,KAAK,KAAK,MAAM,KAAK,QAAQ,mBAAmB,mBAAmBA,IAAG,MAAM,EAAE,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE;AAAA,EAC3H;AAAA,EACA,MAAM,cAAc,IAAY,QAAsB;AACpD,UAAM,QAAQC,GAAE,OAAO,EAAE,aAAaD,KAAI,QAAQA,KAAI,UAAUC,GAAE,QAAQ,GAAG,QAAQA,GAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE;AAAA,MAC3G,MAAM,KAAK,QAAQ,mBAAmB,mBAAmBD,IAAG,MAAM,EAAE,CAAC,CAAC,WAAW,OAAO,QAAW,MAAM;AAAA,IAAC;AAC5G,UAAM,WAAW,yBAAyB,KAAK;AAC/C,QAAI,MAAM,WAAW,MAAM,SAAS,SAAS,WAAW,KAAK,QAAQ,UAAU,SAAS,SAAS,OAAO,MACnG,SAAS,SAAS,SAAS,UAAU,OAAO,MAAM,eAAe,SAAS,SAAS,QAAQ,kBAAkB;AAChH,YAAM,IAAI,MAAM,mCAAmC;AACrD,WAAO,EAAE,GAAG,UAAU,aAAa,MAAM,aAAa,QAAQ,GAAG;AAAA,EACnE;AAAA,EACA,MAAM,QAAQ,YAAoB,aAAqB,QAAsB;AAC3E,UAAM,OAAO,CAAC,OAAe,GAAG,WAAW,QAAQ,IAAI,KAAK,cAAc,IAAI,MAAM,IAAI,KAAK,OAAO,IAAI,MAAM;AAC9G,UAAM,CAAC,UAAU,SAAS,IAAI,MAAM,QAAQ,IAAI,CAAC,KAAK,UAAU,GAAG,KAAK,WAAW,CAAC,CAAC;AACrF,WAAO,EAAE,UAAU,WAAW,YAAY,mBAAmB,UAAU,SAAS,EAAE;AAAA,EACpF;AAAA,EACQ,WAAW,OAAgB,IAAa;AAC9C,UAAM,SAAS,2BAA2B,KAAK;AAC/C,QAAI,OAAO,WAAW,KAAK,QAAQ,UAAU,MAAM,OAAO,OAAO,GAAI,OAAM,IAAI,MAAM,+BAA+B;AACpH,WAAO;AAAA,EACT;AAAA,EACA,MAAc,iBAAiB,OAAgB,IAAa;AAC1D,UAAM,UAAU,MAAM,6BAA6B,KAAK;AACxD,QAAI,QAAQ,QAAQ,WAAW,KAAK,QAAQ,UAAU,MAAM,QAAQ,QAAQ,OAAO,GAAI,OAAM,IAAI,MAAM,yCAAyC;AAChJ,WAAO;AAAA,EACT;AAAA,EACQ,KAAK,OAAgB,IAAa;AACxC,UAAM,OAAO,4BAA4B,KAAK;AAC9C,QAAI,KAAK,WAAW,KAAK,QAAQ,UAAU,MAAM,KAAK,OAAO,GAAI,OAAM,IAAI,MAAM,iCAAiC;AAClH,WAAO;AAAA,EACT;AAAA,EACA,MAAc,QAAQ,MAAc,QAAgB,MAAgB,QAAwC;AAC1G,UAAM,WAAW,OAAO,KAAK,QAAQ,SAAS,OAAO,GAAG,KAAK,OAAO,kBAAkB,IAAI,IAAI;AAAA,MAC5F;AAAA,MAAQ;AAAA,MAAQ,UAAU;AAAA,MAAS,SAAS,EAAE,eAAe,UAAU,KAAK,QAAQ,MAAM,IAAI,sBAAsB,KAAK,QAAQ,QAAQ,gBAAgB,oBAAoB,QAAQ,mBAAmB;AAAA,MACxM,GAAI,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,IAAI,EAAE;AAAA,IAC7D,CAAC;AACD,UAAM,QAAQ,MAAM,SAAS,KAAK;AAClC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,SAASC,GAAE,OAAO,EAAE,MAAMA,GAAE,OAAO,GAAG,SAASA,GAAE,OAAO,EAAE,CAAC,EAAE,UAAU,KAAK;AAClF,YAAM,IAAI,wBAAwB,SAAS,QAAQ,OAAO,UAAU,OAAO,KAAK,OAAO,6BAA6B,OAAO,UAAU,OAAO,KAAK,UAAU,4BAA4B;AAAA,IACzL;AACA,WAAO;AAAA,EACT;AACF;AAIA,SAAS,uBAAuB,SAA0D;AACxF,SAAO,QAAQ,OAAO,SAAS,mBAAmB;AAAA,IAChD,GAAG;AAAA,IAAS,YAAY,QAAQ,WAAW,IAAI,CAAC,EAAE,WAAW,KAAK,GAAG,OAAO,MAAM,MAAM;AAAA,EAC1F,IAAI;AACN;",
|
|
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:
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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:
|
|
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
|
|
96
|
-
const
|
|
97
|
-
|
|
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
|
}
|
package/dist/experiments.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
OpenPondExperimentError,
|
|
5
5
|
OpenPondExperimentsClient,
|
|
6
6
|
verifyExperimentScoringPass
|
|
7
|
-
} from "./chunk-
|
|
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
|
package/dist/experiments.js.map
CHANGED
|
@@ -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
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
|
package/dist/learning.js.map
CHANGED
|
@@ -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
|
}
|
package/dist/taskset-catalog.js
CHANGED
package/dist/taskset-drafts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TasksetPackageReceiptSchema
|
|
3
|
-
} from "./chunk-
|
|
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-
|
|
33
|
+
import "./chunk-K3JCP4FO.js";
|
|
34
34
|
import {
|
|
35
35
|
AuthoringProvenanceSchema,
|
|
36
36
|
AuthoringRepairSchema,
|
package/dist/taskset-packages.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
TasksetPackagePublicationSchema,
|
|
6
6
|
TasksetPackageReadbackSchema,
|
|
7
7
|
TasksetPackageReceiptSchema
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
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":"AAAA,OAAO,EAAE,kCAAkC,EAA8D,6BAA6B,EAAmE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAInF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMtC,CAAC;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAOxC,CAAC;AACH,eAAO,MAAM,6BAA6B;;;;;kBAAgI,CAAC;AAC3K,eAAO,MAAM,kCAAkC;;;kBAAwF,CAAC;AACxI,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;kBAEiD,CAAC;AAC7F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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 @@
|
|
|
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"}
|
|
@@ -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
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
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,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
|
-
}
|
|
File without changes
|