openpond-sdk 0.5.19 → 0.5.21

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/TASKSETS.md CHANGED
@@ -258,3 +258,33 @@ receipt includes `evaluation.taskset`, `evaluation.packageHash` and
258
258
  The same configuration carries the saved recipe and limits. Publication does not
259
259
  run training or prove evaluation isolation, grader quality or training readiness.
260
260
  An attachment-only publication cannot change Model configuration.
261
+
262
+ For a new collection without a source release, call `client.create` with
263
+ `schemaVersion: "openpond.tasksetDraftCreate.v1"`, an operation ID, Model ID,
264
+ expected Model revision and name. Retain the operation ID across retries. The
265
+ host creates an empty owned draft using the same save, file, validation and
266
+ publication lifecycle. It must not add example tasks or a judge rubric.
267
+ `compileModelTasksetDraftWorkspace` accepts `preparation: null` only when the
268
+ owned draft has no source preparation. Compilation pins the saved timestamp so
269
+ validation and publication produce the same package hash.
270
+
271
+ ## Individual task inventory
272
+
273
+ `openpond-sdk/taskset-drafts` exports `TaskInventoryQuerySchema`,
274
+ `TaskInventoryItemSchema`, `TaskInventoryPageSchema`, and the corresponding
275
+ types. The inventory presents individual tasks; collections remain revisioned
276
+ authoring and filtering boundaries. Public descriptions and scoring summaries
277
+ are separate from private detail readbacks.
278
+
279
+ The local runtime exposes `GET /v1/training/tasks` and
280
+ `GET /v1/training/tasks/detail`, scoped by `profileId` and optional `projectId`.
281
+ Use `tasksetId`, `taskId`, `draftId`, `split`, and `query` to narrow a view. Pages
282
+ contain at most 100 rows. Pass `nextCursor` back as `after`; a cursor is rejected
283
+ when its filters, Profile, Model, or indexed source versions change. A detail
284
+ request requires `tasksetId` and `taskId`; include `draftId` for draft tasks.
285
+
286
+ Local indexes are rebuilt from saved source bytes per content hash, including
287
+ Parquet collections through the dataset reader. Search never examines private
288
+ answers. Draft edits invalidate the index, and a published release remains
289
+ separate from its draft. No task listing, editing, or labeling operation starts
290
+ a training job.
@@ -125,6 +125,13 @@ var IdSchema = TasksetDraftSchema.shape.id;
125
125
  var RevisionSchema = z.number().int().positive();
126
126
  var HashSchema = z.string().regex(/^[a-f0-9]{64}$/);
127
127
  var scope = { teamId: IdSchema, modelId: IdSchema };
128
+ var TasksetDraftCreateRequestSchema = z.object({
129
+ schemaVersion: z.literal("openpond.tasksetDraftCreate.v1"),
130
+ operationId: IdSchema,
131
+ modelId: IdSchema,
132
+ expectedModelRevision: RevisionSchema,
133
+ name: TasksetDraftSchema.shape.name
134
+ }).strict();
128
135
  var TasksetDraftSourceDescriptorSchema = z.object({
129
136
  schemaVersion: z.literal("openpond.tasksetDraftSourceDescriptor.v1"),
130
137
  ...scope,
@@ -232,6 +239,13 @@ var OpenPondTasksetDraftClient = class {
232
239
  if (!source || source.requestHash !== contentHash(request) || source.sourcePackageHash !== request.sourcePackageHash || source.draftId !== response.draft.id || source.lineage.owner.scopeId !== this.#options.teamId || source.lineage.owner.modelId !== request.modelId) this.#mismatch();
233
240
  return response;
234
241
  }
242
+ async create(input, options = {}) {
243
+ const request = TasksetDraftCreateRequestSchema.parse(input);
244
+ const response = this.#draft(await this.#request(request.modelId, "", "POST", request, options.signal), request.modelId);
245
+ const expectedId = `model-taskset-draft-${contentHash({ owner: { scopeId: this.#options.teamId, modelId: request.modelId }, operationId: request.operationId })}`;
246
+ if (response.draft.id !== expectedId || response.draft.modelScope?.source !== void 0) this.#mismatch();
247
+ return response;
248
+ }
235
249
  async list(modelId, options = {}) {
236
250
  const model = IdSchema2.parse(modelId);
237
251
  const query = new URLSearchParams();
@@ -352,6 +366,51 @@ var OpenPondTasksetDraftClient = class {
352
366
  return value;
353
367
  }
354
368
  };
369
+
370
+ // src/task-inventory.ts
371
+ import { z as z3 } from "zod";
372
+ var Id = z3.string().trim().min(1).max(500);
373
+ var TaskInventoryQuerySchema = z3.object({
374
+ projectId: Id.optional(),
375
+ tasksetId: Id.optional(),
376
+ draftId: Id.optional(),
377
+ taskId: Id.optional(),
378
+ query: z3.string().trim().max(1e3).default(""),
379
+ split: z3.enum(["train", "validation", "test", "frozen_eval"]).optional(),
380
+ after: z3.string().min(1).max(2e3).optional(),
381
+ limit: z3.number().int().min(1).max(100).default(30)
382
+ }).strict();
383
+ var TaskScoringSummarySchema = z3.object({ id: Id, method: z3.enum(["code", "judge", "human"]), required: z3.boolean() });
384
+ var TaskInventoryItemSchema = z3.object({
385
+ tasksetId: Id,
386
+ tasksetName: z3.string(),
387
+ tasksetRevision: z3.number().int().positive(),
388
+ tasksetHash: z3.string(),
389
+ taskId: Id,
390
+ ordinal: z3.number().int().nonnegative(),
391
+ title: z3.string(),
392
+ description: z3.string(),
393
+ split: z3.string(),
394
+ scoring: z3.array(TaskScoringSummarySchema),
395
+ configuration: z3.enum(["configured", "needs_reward", "needs_checks"]),
396
+ draftId: Id.nullable().default(null),
397
+ modelId: Id.nullable().default(null)
398
+ });
399
+ var TaskInventoryPageSchema = z3.object({ items: z3.array(TaskInventoryItemSchema).max(100), nextCursor: z3.string().nullable() });
400
+ function describeTaskInput(input, id) {
401
+ const text = [input.instruction, input.prompt, input.request, input.question, input.message].find((value) => typeof value === "string" && value.trim().length > 0);
402
+ const explicitTitle = typeof input.title === "string" ? input.title.trim() : "";
403
+ const description = text?.trim() ?? "";
404
+ return { title: (explicitTitle || description || id).slice(0, 180), description: description.slice(0, 2e3) };
405
+ }
406
+ function summarizeTaskScoring(graders) {
407
+ return graders.map((grader) => ({ id: grader.id, method: grader.kind === "model_judge" ? "judge" : grader.kind === "human" ? "human" : "code", required: grader.hardGate }));
408
+ }
409
+ function taskConfiguration(graders) {
410
+ if (!graders.some((grader) => grader.kind !== "human")) return "needs_reward";
411
+ if (graders.some((grader) => grader.kind === "model_judge" && grader.calibrationStatus !== "passed")) return "needs_checks";
412
+ return "configured";
413
+ }
355
414
  export {
356
415
  AuthoringProvenanceSchema,
357
416
  AuthoringRepairSchema,
@@ -401,10 +460,15 @@ export {
401
460
  TaskAssetRefSchema,
402
461
  TaskDataDraftSchema,
403
462
  TaskDataRecordSchema,
463
+ TaskInventoryItemSchema,
464
+ TaskInventoryPageSchema,
465
+ TaskInventoryQuerySchema,
404
466
  TaskPolicyBoundarySchema,
405
467
  TaskRequiredOutputSchema,
468
+ TaskScoringSummarySchema,
406
469
  TasksetBenchmarkBindingSchema,
407
470
  TasksetCapabilityManifestSchema,
471
+ TasksetDraftCreateRequestSchema,
408
472
  TasksetDraftDeletionSchema,
409
473
  TasksetDraftFileListSchema,
410
474
  TasksetDraftFileReadbackSchema,
@@ -449,6 +513,7 @@ export {
449
513
  createTasksetDraftWorkspace,
450
514
  decodeTasksetDraftFileContent,
451
515
  decodeTasksetDraftWorkspaceFile,
516
+ describeTaskInput,
452
517
  draftPublishIssues,
453
518
  isManagedTasksetDraftFilePath,
454
519
  isTrainingSourceRef,
@@ -459,6 +524,8 @@ export {
459
524
  renderTasksetDraftManifests,
460
525
  saveTasksetDraftWorkspaceDocument,
461
526
  saveTasksetDraftWorkspaceFile,
527
+ summarizeTaskScoring,
528
+ taskConfiguration,
462
529
  tasksetDraftFromTaskset,
463
530
  validatePortability,
464
531
  validateTaskset,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/taskset-drafts.ts", "../src/taskset-draft-api-contracts.ts", "../src/taskset-draft-client.ts"],
4
- "sourcesContent": ["export * from \"./taskset-draft-dataset-artifacts.js\";\nexport * from \"./taskset-draft-dataset-sources.js\";\nexport * from \"./taskset-draft-harness-actions.js\";\nexport * from \"./taskset-draft-core.js\";\nexport * from \"./taskset-draft-document.js\";\nexport { TasksetMetricPolicySchema, type TasksetMetricPolicy } from \"@openpond/evals/metrics\";\nexport * from \"./taskset-draft-authoring.js\";\nexport * from \"./taskset-draft-files.js\";\nexport * from \"./taskset-draft-workspace.js\";\nexport * from \"./taskset-authored-contracts.js\";\nexport * from \"./taskset-authored-validation.js\";\nexport * from \"./taskset-draft-publication.js\";\nexport * from \"./taskset-draft-manifests.js\";\nexport * from \"./taskset-draft-api-contracts.js\";\nexport { OpenPondTasksetDraftClient, OpenPondTasksetDraftError } from \"./taskset-draft-client.js\";\n", "import { z } from \"zod\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport { TasksetDraftSchema, TasksetDraftStatusSchema } from \"./taskset-draft-document.js\";\nimport { TasksetDraftFileSchema, TasksetDraftFileInfoSchema } from \"./model-taskset-authoring-contracts.js\";\n\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst scope = { teamId: IdSchema, modelId: IdSchema };\n\nexport const TasksetDraftSourceDescriptorSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftSourceDescriptor.v1\"), ...scope,\n expectedModelRevision: RevisionSchema, sourcePackageHash: HashSchema,\n}).strict();\nexport const TasksetDraftReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftReadback.v1\"), ...scope,\n draft: TasksetDraftSchema, workspaceHash: HashSchema, projectEtag: HashSchema,\n}).strict().refine(value => value.draft.profileId === value.teamId && value.draft.modelScope?.modelId === value.modelId,\n \"The hosted draft must belong to its declared workspace and Model.\");\nexport const TasksetDraftSummarySchema = z.object({\n id: IdSchema, revision: RevisionSchema, name: TasksetDraftSchema.shape.name,\n status: TasksetDraftStatusSchema, updatedAt: TasksetDraftSchema.shape.updatedAt,\n sourceTasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict();\nexport const TasksetDraftListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftList.v1\"), ...scope,\n drafts: z.array(TasksetDraftSummarySchema).max(100), nextCursor: z.string().min(1).max(2_000).nullable(),\n}).strict();\nexport const TasksetDraftSaveRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, draft: TasksetDraftSchema }).strict();\nexport const TasksetDraftRefreshRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedModelRevision: RevisionSchema }).strict();\nexport const TasksetDraftValidationRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedWorkspaceHash: HashSchema }).strict();\nexport const TasksetDraftValidationSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftValidation.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, workspaceHash: HashSchema,\n valid: z.boolean(), issues: z.array(z.object({ code: z.string().min(1), severity: z.enum([\"warning\", \"error\"]), message: z.string(), path: z.string().nullable() }).strict()),\n packageHash: HashSchema.nullable(), tasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict().refine(value => value.valid\n ? value.packageHash !== null && value.tasksetRef !== null && value.issues.every(issue => issue.severity !== \"error\")\n : value.packageHash === null && value.tasksetRef === null && value.issues.some(issue => issue.severity === \"error\"), \"Validation must retain either a compiled package or publication errors.\");\nexport const TasksetDraftPublicationRequestSchema = TasksetDraftValidationRequestSchema.extend({\n operationId: IdSchema, expectedPackageHash: HashSchema, expectedTasksetRef: LearningRevisionRefSchema,\n}).strict();\nexport const TasksetDraftFileListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileList.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, files: z.array(TasksetDraftFileInfoSchema).max(10_020),\n}).strict();\nexport const TasksetDraftFileReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileReadback.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, file: TasksetDraftFileSchema,\n}).strict();\nexport const TasksetDraftDeletionSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftDeletion.v1\"), ...scope,\n draftId: IdSchema, revision: RevisionSchema, deleted: z.literal(true),\n}).strict();\n\nexport type TasksetDraftSourceDescriptor = z.infer<typeof TasksetDraftSourceDescriptorSchema>;\nexport type TasksetDraftReadback = z.infer<typeof TasksetDraftReadbackSchema>;\nexport type TasksetDraftList = z.infer<typeof TasksetDraftListSchema>;\nexport type TasksetDraftSaveRequest = z.infer<typeof TasksetDraftSaveRequestSchema>;\nexport type TasksetDraftRefreshRequest = z.infer<typeof TasksetDraftRefreshRequestSchema>;\nexport type TasksetDraftValidationRequest = z.infer<typeof TasksetDraftValidationRequestSchema>;\nexport type TasksetDraftValidation = z.infer<typeof TasksetDraftValidationSchema>;\nexport type TasksetDraftPublicationRequest = z.infer<typeof TasksetDraftPublicationRequestSchema>;\nexport type TasksetDraftFileList = z.infer<typeof TasksetDraftFileListSchema>;\nexport type TasksetDraftFileReadback = z.infer<typeof TasksetDraftFileReadbackSchema>;\nexport type TasksetDraftDeletion = z.infer<typeof TasksetDraftDeletionSchema>;\n", "import { z } from \"zod\";\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { sameLearningRef } from \"@openpond/evals/learning\";\nimport { ModelTasksetDraftRequestSchema, TasksetDraftFileMutationSchema, TasksetDraftFilePathSchema, type ModelTasksetDraftRequest, type TasksetDraftFileMutation } from \"./model-taskset-authoring-contracts.js\";\nimport { TasksetDraftSchema } from \"./taskset-draft-document.js\";\nimport { decodeTasksetDraftFileContent } from \"./taskset-draft-files.js\";\nimport { MAX_TASKSET_DRAFT_WORKSPACE_BYTES } from \"./taskset-draft-workspace.js\";\nimport { TasksetPackageReceiptSchema } from \"./taskset-package-client.js\";\nimport { TasksetDraftSourceDescriptorSchema, TasksetDraftReadbackSchema, TasksetDraftListSchema, TasksetDraftSaveRequestSchema, TasksetDraftRefreshRequestSchema,\n TasksetDraftValidationRequestSchema, TasksetDraftValidationSchema, TasksetDraftPublicationRequestSchema, TasksetDraftFileListSchema, TasksetDraftFileReadbackSchema, TasksetDraftDeletionSchema,\n type TasksetDraftSaveRequest, type TasksetDraftRefreshRequest, type TasksetDraftValidationRequest, type TasksetDraftPublicationRequest } from \"./taskset-draft-api-contracts.js\";\n\ntype Options = { signal?: AbortSignal };\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\n\nexport class OpenPondTasksetDraftError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondTasksetDraftError\"; }\n}\n\n/** Scoped mutable drafts use explicit CAS and never retry writes automatically. */\nexport class OpenPondTasksetDraftClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.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(\"Taskset draft client requires a clean HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async inspectSource(modelId: string, expectedModelRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const revision = RevisionSchema.parse(expectedModelRevision);\n const response = this.#scope(TasksetDraftSourceDescriptorSchema.parse(await this.#request(model, `/source?expectedModelRevision=${revision}`, \"GET\", undefined, options.signal)), model);\n if (response.expectedModelRevision !== revision) this.#mismatch();\n return response;\n }\n\n async initialize(input: ModelTasksetDraftRequest, options: Options = {}) {\n const request = ModelTasksetDraftRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const source = response.draft.modelScope?.source;\n if (!source || source.requestHash !== contentHash(request) || source.sourcePackageHash !== request.sourcePackageHash || source.draftId !== response.draft.id\n || source.lineage.owner.scopeId !== this.#options.teamId || source.lineage.owner.modelId !== request.modelId) this.#mismatch();\n return response;\n }\n\n async list(modelId: string, options: Options & { limit?: number; cursor?: string } = {}) {\n const model = IdSchema.parse(modelId);\n const query = new URLSearchParams();\n if (options.limit !== undefined) query.set(\"limit\", String(z.number().int().min(1).max(100).parse(options.limit)));\n if (options.cursor !== undefined) query.set(\"cursor\", z.string().min(1).max(2_000).parse(options.cursor));\n return this.#scope(TasksetDraftListSchema.parse(await this.#request(model, query.size ? `?${query}` : \"\", \"GET\", undefined, options.signal)), model);\n }\n\n async get(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(id)}`, \"GET\", undefined, options.signal), model, id);\n }\n\n async save(modelId: string, input: TasksetDraftSaveRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftSaveRequestSchema.parse(input);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draft.id)}`, \"PUT\", request, options.signal), model, request.draft.id, request.expectedDraftRevision + 1);\n }\n\n async refreshModel(modelId: string, draftId: string, input: TasksetDraftRefreshRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftRefreshRequestSchema.parse(input);\n const response = this.#draft(await this.#request(model, `/${encodeURIComponent(id)}/refresh-model`, \"POST\", request, options.signal), model, id, request.expectedDraftRevision + 1);\n if (response.draft.modelScope?.expectedModelRevision !== request.expectedModelRevision) this.#mismatch();\n return response;\n }\n\n async files(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const response = this.#scope(TasksetDraftFileListSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/files`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id) this.#mismatch();\n return response;\n }\n\n async readFile(modelId: string, draftId: string, path: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const relative = TasksetDraftFilePathSchema.parse(path);\n const response = this.#scope(TasksetDraftFileReadbackSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/file?path=${encodeURIComponent(relative)}`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id || response.file.path !== relative) this.#mismatch();\n const bytes = decodeTasksetDraftFileContent(response.file.content);\n if (bytes.byteLength !== response.file.sizeBytes || sha256(bytes) !== response.file.contentHash) this.#mismatch();\n return response;\n }\n\n async saveFile(modelId: string, input: TasksetDraftFileMutation, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftFileMutationSchema.parse(input);\n if (request.content) decodeTasksetDraftFileContent(request.content);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draftId)}/file`, \"PUT\", request, options.signal), model, request.draftId, request.expectedDraftRevision + 1);\n }\n\n async validate(modelId: string, draftId: string, input: TasksetDraftValidationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftValidationRequestSchema.parse(input);\n const response = this.#scope(TasksetDraftValidationSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/validate`, \"POST\", request, options.signal)), model);\n if (response.draftId !== id || response.draftRevision !== request.expectedDraftRevision || response.workspaceHash !== request.expectedWorkspaceHash) this.#mismatch();\n return response;\n }\n\n async publish(modelId: string, draftId: string, input: TasksetDraftPublicationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftPublicationRequestSchema.parse(input);\n const response = TasksetPackageReceiptSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/publish`, \"POST\", request, options.signal));\n if (response.teamId !== this.#options.teamId || response.modelProjectId !== model || response.operationId !== request.operationId\n || response.packageHash !== request.expectedPackageHash || !sameLearningRef(response.taskset, request.expectedTasksetRef) || response.selection !== \"select\") this.#mismatch();\n return response;\n }\n\n async delete(modelId: string, draftId: string, expectedDraftRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const revision = RevisionSchema.parse(expectedDraftRevision);\n const response = this.#scope(TasksetDraftDeletionSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}?expectedDraftRevision=${revision}`, \"DELETE\", undefined, options.signal)), model);\n if (response.draftId !== id || response.revision !== revision + 1) this.#mismatch();\n return response;\n }\n\n #scope<T extends { teamId: string; modelId: string }>(value: T, modelId: string): T {\n if (value.teamId !== this.#options.teamId || value.modelId !== modelId) this.#mismatch();\n return value;\n }\n #draft(input: unknown, modelId: string, draftId?: string, revision?: number) {\n const value = this.#scope(TasksetDraftReadbackSchema.parse(input), modelId);\n if ((draftId !== undefined && value.draft.id !== draftId) || (revision !== undefined && value.draft.revision !== revision)) this.#mismatch();\n return value;\n }\n #mismatch(): never { throw new OpenPondTasksetDraftError(502, \"draft_response_mismatch\", \"Taskset draft response differs from the requested owner, revision or content.\"); }\n\n async #request(model: string, path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const serialized = body === undefined ? undefined : JSON.stringify(body);\n if (serialized && new TextEncoder().encode(serialized).byteLength > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft exceeds the 64 MiB envelope.\");\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/models/${encodeURIComponent(model)}/taskset-drafts${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\", ...(serialized ? { \"Content-Type\": \"application/json\" } : {}) },\n body: serialized, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetDraftError(response.status, \"empty_response\", \"Taskset draft response was empty.\");\n let bytes = 0;\n let text = \"\";\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft response exceeds the 64 MiB envelope.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const value: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondTasksetDraftError(response.status, error.success ? error.data.code : \"draft_request_failed\", error.success ? error.data.message : `Taskset draft request failed (${response.status}).`);\n }\n return value;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["z", "IdSchema", "RevisionSchema", "z"]
3
+ "sources": ["../src/taskset-drafts.ts", "../src/taskset-draft-api-contracts.ts", "../src/taskset-draft-client.ts", "../src/task-inventory.ts"],
4
+ "sourcesContent": ["export * from \"./taskset-draft-dataset-artifacts.js\";\nexport * from \"./taskset-draft-dataset-sources.js\";\nexport * from \"./taskset-draft-harness-actions.js\";\nexport * from \"./taskset-draft-core.js\";\nexport * from \"./taskset-draft-document.js\";\nexport { TasksetMetricPolicySchema, type TasksetMetricPolicy } from \"@openpond/evals/metrics\";\nexport * from \"./taskset-draft-authoring.js\";\nexport * from \"./taskset-draft-files.js\";\nexport * from \"./taskset-draft-workspace.js\";\nexport * from \"./taskset-authored-contracts.js\";\nexport * from \"./taskset-authored-validation.js\";\nexport * from \"./taskset-draft-publication.js\";\nexport * from \"./taskset-draft-manifests.js\";\nexport * from \"./taskset-draft-api-contracts.js\";\nexport { OpenPondTasksetDraftClient, OpenPondTasksetDraftError } from \"./taskset-draft-client.js\";\nexport * from \"./task-inventory.js\";\n", "import { z } from \"zod\";\nimport { LearningRevisionRefSchema } from \"@openpond/evals/learning\";\nimport { TasksetDraftSchema, TasksetDraftStatusSchema } from \"./taskset-draft-document.js\";\nimport { TasksetDraftFileSchema, TasksetDraftFileInfoSchema } from \"./model-taskset-authoring-contracts.js\";\n\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst scope = { teamId: IdSchema, modelId: IdSchema };\n\nexport const TasksetDraftCreateRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftCreate.v1\"),\n operationId: IdSchema, modelId: IdSchema, expectedModelRevision: RevisionSchema,\n name: TasksetDraftSchema.shape.name,\n}).strict();\nexport type TasksetDraftCreateRequest = z.infer<typeof TasksetDraftCreateRequestSchema>;\n\nexport const TasksetDraftSourceDescriptorSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftSourceDescriptor.v1\"), ...scope,\n expectedModelRevision: RevisionSchema, sourcePackageHash: HashSchema,\n}).strict();\nexport const TasksetDraftReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftReadback.v1\"), ...scope,\n draft: TasksetDraftSchema, workspaceHash: HashSchema, projectEtag: HashSchema,\n}).strict().refine(value => value.draft.profileId === value.teamId && value.draft.modelScope?.modelId === value.modelId,\n \"The hosted draft must belong to its declared workspace and Model.\");\nexport const TasksetDraftSummarySchema = z.object({\n id: IdSchema, revision: RevisionSchema, name: TasksetDraftSchema.shape.name,\n status: TasksetDraftStatusSchema, updatedAt: TasksetDraftSchema.shape.updatedAt,\n sourceTasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict();\nexport const TasksetDraftListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftList.v1\"), ...scope,\n drafts: z.array(TasksetDraftSummarySchema).max(100), nextCursor: z.string().min(1).max(2_000).nullable(),\n}).strict();\nexport const TasksetDraftSaveRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, draft: TasksetDraftSchema }).strict();\nexport const TasksetDraftRefreshRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedModelRevision: RevisionSchema }).strict();\nexport const TasksetDraftValidationRequestSchema = z.object({ expectedDraftRevision: RevisionSchema, expectedWorkspaceHash: HashSchema }).strict();\nexport const TasksetDraftValidationSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftValidation.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, workspaceHash: HashSchema,\n valid: z.boolean(), issues: z.array(z.object({ code: z.string().min(1), severity: z.enum([\"warning\", \"error\"]), message: z.string(), path: z.string().nullable() }).strict()),\n packageHash: HashSchema.nullable(), tasksetRef: LearningRevisionRefSchema.nullable(),\n}).strict().refine(value => value.valid\n ? value.packageHash !== null && value.tasksetRef !== null && value.issues.every(issue => issue.severity !== \"error\")\n : value.packageHash === null && value.tasksetRef === null && value.issues.some(issue => issue.severity === \"error\"), \"Validation must retain either a compiled package or publication errors.\");\nexport const TasksetDraftPublicationRequestSchema = TasksetDraftValidationRequestSchema.extend({\n operationId: IdSchema, expectedPackageHash: HashSchema, expectedTasksetRef: LearningRevisionRefSchema,\n}).strict();\nexport const TasksetDraftFileListSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileList.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, files: z.array(TasksetDraftFileInfoSchema).max(10_020),\n}).strict();\nexport const TasksetDraftFileReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftFileReadback.v1\"), ...scope,\n draftId: IdSchema, draftRevision: RevisionSchema, file: TasksetDraftFileSchema,\n}).strict();\nexport const TasksetDraftDeletionSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftDeletion.v1\"), ...scope,\n draftId: IdSchema, revision: RevisionSchema, deleted: z.literal(true),\n}).strict();\n\nexport type TasksetDraftSourceDescriptor = z.infer<typeof TasksetDraftSourceDescriptorSchema>;\nexport type TasksetDraftReadback = z.infer<typeof TasksetDraftReadbackSchema>;\nexport type TasksetDraftList = z.infer<typeof TasksetDraftListSchema>;\nexport type TasksetDraftSaveRequest = z.infer<typeof TasksetDraftSaveRequestSchema>;\nexport type TasksetDraftRefreshRequest = z.infer<typeof TasksetDraftRefreshRequestSchema>;\nexport type TasksetDraftValidationRequest = z.infer<typeof TasksetDraftValidationRequestSchema>;\nexport type TasksetDraftValidation = z.infer<typeof TasksetDraftValidationSchema>;\nexport type TasksetDraftPublicationRequest = z.infer<typeof TasksetDraftPublicationRequestSchema>;\nexport type TasksetDraftFileList = z.infer<typeof TasksetDraftFileListSchema>;\nexport type TasksetDraftFileReadback = z.infer<typeof TasksetDraftFileReadbackSchema>;\nexport type TasksetDraftDeletion = z.infer<typeof TasksetDraftDeletionSchema>;\n", "import { z } from \"zod\";\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { sameLearningRef } from \"@openpond/evals/learning\";\nimport { ModelTasksetDraftRequestSchema, TasksetDraftFileMutationSchema, TasksetDraftFilePathSchema, type ModelTasksetDraftRequest, type TasksetDraftFileMutation } from \"./model-taskset-authoring-contracts.js\";\nimport { TasksetDraftSchema } from \"./taskset-draft-document.js\";\nimport { decodeTasksetDraftFileContent } from \"./taskset-draft-files.js\";\nimport { MAX_TASKSET_DRAFT_WORKSPACE_BYTES } from \"./taskset-draft-workspace.js\";\nimport { TasksetPackageReceiptSchema } from \"./taskset-package-client.js\";\nimport { TasksetDraftCreateRequestSchema, type TasksetDraftCreateRequest, TasksetDraftSourceDescriptorSchema, TasksetDraftReadbackSchema, TasksetDraftListSchema, TasksetDraftSaveRequestSchema, TasksetDraftRefreshRequestSchema,\n TasksetDraftValidationRequestSchema, TasksetDraftValidationSchema, TasksetDraftPublicationRequestSchema, TasksetDraftFileListSchema, TasksetDraftFileReadbackSchema, TasksetDraftDeletionSchema,\n type TasksetDraftSaveRequest, type TasksetDraftRefreshRequest, type TasksetDraftValidationRequest, type TasksetDraftPublicationRequest } from \"./taskset-draft-api-contracts.js\";\n\ntype Options = { signal?: AbortSignal };\nconst IdSchema = TasksetDraftSchema.shape.id;\nconst RevisionSchema = z.number().int().positive();\n\nexport class OpenPondTasksetDraftError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondTasksetDraftError\"; }\n}\n\n/** Scoped mutable drafts use explicit CAS and never retry writes automatically. */\nexport class OpenPondTasksetDraftClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.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(\"Taskset draft client requires a clean HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async inspectSource(modelId: string, expectedModelRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const revision = RevisionSchema.parse(expectedModelRevision);\n const response = this.#scope(TasksetDraftSourceDescriptorSchema.parse(await this.#request(model, `/source?expectedModelRevision=${revision}`, \"GET\", undefined, options.signal)), model);\n if (response.expectedModelRevision !== revision) this.#mismatch();\n return response;\n }\n\n async initialize(input: ModelTasksetDraftRequest, options: Options = {}) {\n const request = ModelTasksetDraftRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const source = response.draft.modelScope?.source;\n if (!source || source.requestHash !== contentHash(request) || source.sourcePackageHash !== request.sourcePackageHash || source.draftId !== response.draft.id\n || source.lineage.owner.scopeId !== this.#options.teamId || source.lineage.owner.modelId !== request.modelId) this.#mismatch();\n return response;\n }\n\n async create(input: TasksetDraftCreateRequest, options: Options = {}) {\n const request = TasksetDraftCreateRequestSchema.parse(input);\n const response = this.#draft(await this.#request(request.modelId, \"\", \"POST\", request, options.signal), request.modelId);\n const expectedId = `model-taskset-draft-${contentHash({ owner: { scopeId: this.#options.teamId, modelId: request.modelId }, operationId: request.operationId })}`;\n if (response.draft.id !== expectedId || response.draft.modelScope?.source !== undefined) this.#mismatch();\n return response;\n }\n\n async list(modelId: string, options: Options & { limit?: number; cursor?: string } = {}) {\n const model = IdSchema.parse(modelId);\n const query = new URLSearchParams();\n if (options.limit !== undefined) query.set(\"limit\", String(z.number().int().min(1).max(100).parse(options.limit)));\n if (options.cursor !== undefined) query.set(\"cursor\", z.string().min(1).max(2_000).parse(options.cursor));\n return this.#scope(TasksetDraftListSchema.parse(await this.#request(model, query.size ? `?${query}` : \"\", \"GET\", undefined, options.signal)), model);\n }\n\n async get(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(id)}`, \"GET\", undefined, options.signal), model, id);\n }\n\n async save(modelId: string, input: TasksetDraftSaveRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftSaveRequestSchema.parse(input);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draft.id)}`, \"PUT\", request, options.signal), model, request.draft.id, request.expectedDraftRevision + 1);\n }\n\n async refreshModel(modelId: string, draftId: string, input: TasksetDraftRefreshRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftRefreshRequestSchema.parse(input);\n const response = this.#draft(await this.#request(model, `/${encodeURIComponent(id)}/refresh-model`, \"POST\", request, options.signal), model, id, request.expectedDraftRevision + 1);\n if (response.draft.modelScope?.expectedModelRevision !== request.expectedModelRevision) this.#mismatch();\n return response;\n }\n\n async files(modelId: string, draftId: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const response = this.#scope(TasksetDraftFileListSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/files`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id) this.#mismatch();\n return response;\n }\n\n async readFile(modelId: string, draftId: string, path: string, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const relative = TasksetDraftFilePathSchema.parse(path);\n const response = this.#scope(TasksetDraftFileReadbackSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/file?path=${encodeURIComponent(relative)}`, \"GET\", undefined, options.signal)), model);\n if (response.draftId !== id || response.file.path !== relative) this.#mismatch();\n const bytes = decodeTasksetDraftFileContent(response.file.content);\n if (bytes.byteLength !== response.file.sizeBytes || sha256(bytes) !== response.file.contentHash) this.#mismatch();\n return response;\n }\n\n async saveFile(modelId: string, input: TasksetDraftFileMutation, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const request = TasksetDraftFileMutationSchema.parse(input);\n if (request.content) decodeTasksetDraftFileContent(request.content);\n return this.#draft(await this.#request(model, `/${encodeURIComponent(request.draftId)}/file`, \"PUT\", request, options.signal), model, request.draftId, request.expectedDraftRevision + 1);\n }\n\n async validate(modelId: string, draftId: string, input: TasksetDraftValidationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftValidationRequestSchema.parse(input);\n const response = this.#scope(TasksetDraftValidationSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/validate`, \"POST\", request, options.signal)), model);\n if (response.draftId !== id || response.draftRevision !== request.expectedDraftRevision || response.workspaceHash !== request.expectedWorkspaceHash) this.#mismatch();\n return response;\n }\n\n async publish(modelId: string, draftId: string, input: TasksetDraftPublicationRequest, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const request = TasksetDraftPublicationRequestSchema.parse(input);\n const response = TasksetPackageReceiptSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}/publish`, \"POST\", request, options.signal));\n if (response.teamId !== this.#options.teamId || response.modelProjectId !== model || response.operationId !== request.operationId\n || response.packageHash !== request.expectedPackageHash || !sameLearningRef(response.taskset, request.expectedTasksetRef) || response.selection !== \"select\") this.#mismatch();\n return response;\n }\n\n async delete(modelId: string, draftId: string, expectedDraftRevision: number, options: Options = {}) {\n const model = IdSchema.parse(modelId);\n const id = IdSchema.parse(draftId);\n const revision = RevisionSchema.parse(expectedDraftRevision);\n const response = this.#scope(TasksetDraftDeletionSchema.parse(await this.#request(model, `/${encodeURIComponent(id)}?expectedDraftRevision=${revision}`, \"DELETE\", undefined, options.signal)), model);\n if (response.draftId !== id || response.revision !== revision + 1) this.#mismatch();\n return response;\n }\n\n #scope<T extends { teamId: string; modelId: string }>(value: T, modelId: string): T {\n if (value.teamId !== this.#options.teamId || value.modelId !== modelId) this.#mismatch();\n return value;\n }\n #draft(input: unknown, modelId: string, draftId?: string, revision?: number) {\n const value = this.#scope(TasksetDraftReadbackSchema.parse(input), modelId);\n if ((draftId !== undefined && value.draft.id !== draftId) || (revision !== undefined && value.draft.revision !== revision)) this.#mismatch();\n return value;\n }\n #mismatch(): never { throw new OpenPondTasksetDraftError(502, \"draft_response_mismatch\", \"Taskset draft response differs from the requested owner, revision or content.\"); }\n\n async #request(model: string, path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const serialized = body === undefined ? undefined : JSON.stringify(body);\n if (serialized && new TextEncoder().encode(serialized).byteLength > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft exceeds the 64 MiB envelope.\");\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/models/${encodeURIComponent(model)}/taskset-drafts${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\", ...(serialized ? { \"Content-Type\": \"application/json\" } : {}) },\n body: serialized, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetDraftError(response.status, \"empty_response\", \"Taskset draft response was empty.\");\n let bytes = 0;\n let text = \"\";\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > MAX_TASKSET_DRAFT_WORKSPACE_BYTES) throw new OpenPondTasksetDraftError(413, \"draft_too_large\", \"Taskset draft response exceeds the 64 MiB envelope.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const value: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new OpenPondTasksetDraftError(response.status, error.success ? error.data.code : \"draft_request_failed\", error.success ? error.data.message : `Taskset draft request failed (${response.status}).`);\n }\n return value;\n }\n}\n", "import { z } from \"zod\";\nimport type { GraderSpec } from \"./taskset-draft-core.js\";\n\nconst Id = z.string().trim().min(1).max(500);\nexport const TaskInventoryQuerySchema = z.object({\n projectId: Id.optional(), tasksetId: Id.optional(), draftId: Id.optional(), taskId: Id.optional(),\n query: z.string().trim().max(1_000).default(\"\"),\n split: z.enum([\"train\", \"validation\", \"test\", \"frozen_eval\"]).optional(),\n after: z.string().min(1).max(2_000).optional(), limit: z.number().int().min(1).max(100).default(30),\n}).strict();\nexport const TaskScoringSummarySchema = z.object({ id: Id, method: z.enum([\"code\", \"judge\", \"human\"]), required: z.boolean() });\nexport const TaskInventoryItemSchema = z.object({\n tasksetId: Id, tasksetName: z.string(), tasksetRevision: z.number().int().positive(), tasksetHash: z.string(),\n taskId: Id, ordinal: z.number().int().nonnegative(), title: z.string(), description: z.string(), split: z.string(),\n scoring: z.array(TaskScoringSummarySchema), configuration: z.enum([\"configured\", \"needs_reward\", \"needs_checks\"]),\n draftId: Id.nullable().default(null), modelId: Id.nullable().default(null),\n});\nexport const TaskInventoryPageSchema = z.object({ items: z.array(TaskInventoryItemSchema).max(100), nextCursor: z.string().nullable() });\nexport type TaskInventoryQuery = z.infer<typeof TaskInventoryQuerySchema>;\nexport type TaskScoringSummary = z.infer<typeof TaskScoringSummarySchema>;\nexport type TaskInventoryItem = z.infer<typeof TaskInventoryItemSchema>;\nexport type TaskInventoryPage = z.infer<typeof TaskInventoryPageSchema>;\n\n/** Discovery derives only from public task input, never private references. */\nexport function describeTaskInput(input: Record<string, unknown>, id: string) {\n const text = [input.instruction, input.prompt, input.request, input.question, input.message]\n .find((value): value is string => typeof value === \"string\" && value.trim().length > 0);\n const explicitTitle = typeof input.title === \"string\" ? input.title.trim() : \"\";\n const description = text?.trim() ?? \"\";\n return { title: (explicitTitle || description || id).slice(0, 180), description: description.slice(0, 2_000) };\n}\nexport function summarizeTaskScoring(graders: GraderSpec[]): TaskScoringSummary[] {\n return graders.map(grader => ({ id: grader.id, method: grader.kind === \"model_judge\" ? \"judge\" : grader.kind === \"human\" ? \"human\" : \"code\", required: grader.hardGate }));\n}\nexport function taskConfiguration(graders: GraderSpec[]): TaskInventoryItem[\"configuration\"] {\n if (!graders.some(grader => grader.kind !== \"human\")) return \"needs_reward\";\n if (graders.some(grader => grader.kind === \"model_judge\" && grader.calibrationStatus !== \"passed\")) return \"needs_checks\";\n return \"configured\";\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["z", "IdSchema", "RevisionSchema", "z", "z"]
7
7
  }
@@ -669,9 +669,10 @@ function prepareAuthoredTasksetSource(tasksetInput, sourceFiles, adapterId) {
669
669
  // src/taskset-draft-package-compiler.ts
670
670
  function compileModelTasksetDraftWorkspace(input) {
671
671
  const workspace = validateTasksetDraftWorkspace(input.workspace);
672
- const preparation = ModelTasksetDraftPreparationSchema.parse(input.preparation);
673
- if (workspace.draft.id !== preparation.draftId || workspace.draft.modelScope?.modelId !== preparation.lineage.owner.modelId || contentHash(workspace.draft.modelScope?.source ?? null) !== contentHash(preparation)) throw new Error("Taskset draft differs from its retained source preparation.");
674
- const taskset = publishTasksetDraft({ draft: workspace.draft, now: input.now, sourcePackageHash: workspace.contentHash });
672
+ const preparation = input.preparation === null ? null : ModelTasksetDraftPreparationSchema.parse(input.preparation);
673
+ if (!workspace.draft.modelScope) throw new Error("Taskset draft requires a Model owner.");
674
+ if (preparation ? workspace.draft.id !== preparation.draftId || workspace.draft.modelScope.modelId !== preparation.lineage.owner.modelId || workspace.draft.profileId !== preparation.lineage.owner.scopeId || contentHash(workspace.draft.modelScope.source ?? null) !== contentHash(preparation) : workspace.draft.modelScope.source !== void 0) throw new Error("Taskset draft differs from its retained source preparation.");
675
+ const taskset = publishTasksetDraft({ draft: workspace.draft, now: workspace.draft.updatedAt, sourcePackageHash: workspace.contentHash });
675
676
  const files = new Map(workspace.files.map((file) => [file.path, decodeTasksetDraftWorkspaceFile(file)]));
676
677
  for (const [path, source] of renderTasksetDraftManifests(workspace.draft)) if (!isGeneratedTasksetPublicationFilePath(path)) files.set(path, new TextEncoder().encode(source));
677
678
  const authored = prepareAuthoredTasksetSource(taskset, files, input.adapterId);
@@ -689,7 +690,7 @@ function compileModelTasksetDraftWorkspace(input) {
689
690
  return { asset: entry.asset, base64: Buffer.from(bytes).toString("base64") };
690
691
  })
691
692
  });
692
- return publishModelTasksetDraftPackage({ preparation, edited });
693
+ return preparation ? publishModelTasksetDraftPackage({ preparation, edited }) : edited;
693
694
  }
694
695
 
695
696
  // src/taskset-draft-source.ts