openpond-sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/MODEL_STARTERS.md CHANGED
@@ -119,3 +119,29 @@ Keep hidden case inputs and expected results in the private initial-state asset.
119
119
  Ordinary task input is policy-visible. The service passes only each hidden case's
120
120
  explicit `input` to candidate code; expected results stay with the authored grader.
121
121
  See the Evals JavaScript environment contract for service fields and Node execution.
122
+
123
+ ### Complete Taskset evaluation runs
124
+
125
+ `OpenPondModelTasksetRunsClient` from `openpond-sdk/model-taskset-runs` exposes
126
+ `create`, `get`, `list`, `cancel` and `result` through
127
+ `/v1/model-taskset-runs`. A request pins a Model attachment and an ordered
128
+ population of `{ receiptId, taskId, seed, fixtureId }` members. Receipt IDs are
129
+ unique within the run; hosted seeds are canonical integer strings between
130
+ `0` and `2147483647`. Requests support up to 10,000 members and never accept
131
+ replacement world state, verifier bytes or caller-generated scores.
132
+
133
+ Use `{ kind: "fixture" }` with each member's authored fixture ID to check a
134
+ package without claiming model execution. Use a `hosted_chat` policy with a
135
+ model ID and sampling/output limits for a model evaluation; those members
136
+ have `fixtureId: null`. A model evaluation pins both the provider snapshot and
137
+ the requested sampling configuration. Reusing an operation ID must return the
138
+ same admitted request or report a conflict.
139
+
140
+ Details retain the request, immutable public run manifest, policy snapshot and
141
+ current summary. Terminal results retain canonical receipts in admitted order
142
+ and the authored metric only for completed evaluations. Failed and cancelled
143
+ runs cannot publish a metric value; completed but entirely unscorable runs
144
+ retain a null metric value. The client verifies workspace, manifest,
145
+ population, grading role, metric references and result hashes on readback.
146
+ Hosts remain responsible for owner-authenticated evidence and durable
147
+ dispatch/cancellation; a content hash is not producer authentication.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ReleaseIdSchema
3
- } from "./chunk-ZPCK222K.js";
3
+ } from "./chunk-NF63YMOL.js";
4
4
 
5
5
  // src/learning-credentials.ts
6
6
  import { z } from "zod";
@@ -217,4 +217,4 @@ export {
217
217
  OpenPondLearningError,
218
218
  OpenPondLearningClient
219
219
  };
220
- //# sourceMappingURL=chunk-LLHE4BOD.js.map
220
+ //# sourceMappingURL=chunk-25TBEGXB.js.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-65D4C7HP.js";
19
19
  import {
20
20
  ChatModelRefSchema
21
- } from "./chunk-IVEXCIHO.js";
21
+ } from "./chunk-EV4PKJWN.js";
22
22
  import {
23
23
  ImmutableAssetRefSchema,
24
24
  ImmutableReleaseRefSchema,
@@ -28,7 +28,7 @@ import {
28
28
  canonicalJson,
29
29
  contentHash,
30
30
  sha256
31
- } from "./chunk-ZPCK222K.js";
31
+ } from "./chunk-NF63YMOL.js";
32
32
  import {
33
33
  HostedModelProjectSummarySchema,
34
34
  HostedModelProjectSyncSchema,
@@ -2392,4 +2392,4 @@ export {
2392
2392
  saveTasksetDraftWorkspaceFile,
2393
2393
  decodeTasksetDraftWorkspaceFile
2394
2394
  };
2395
- //# sourceMappingURL=chunk-AZUCY3E5.js.map
2395
+ //# sourceMappingURL=chunk-6LGGLXAM.js.map
@@ -0,0 +1,177 @@
1
+ import {
2
+ ModelProjectVersionedRefSchema,
3
+ canonicalJson,
4
+ canonicalSha256
5
+ } from "./chunk-5PRP457R.js";
6
+
7
+ // src/model-starter-attempts.ts
8
+ import { z } from "zod";
9
+ import { RewardCompositionSchema } from "@openpond/evals/rewards";
10
+ import { TaskGradeSchema } from "@openpond/evals/graders";
11
+ var IdSchema = z.string().trim().min(1).max(200);
12
+ var HashSchema = z.string().regex(/^[a-f0-9]{64}$/);
13
+ var ModelStarterAttemptPolicySchema = z.discriminatedUnion("kind", [
14
+ z.object({ kind: z.literal("hosted_chat"), modelId: IdSchema, maxOutputTokens: z.number().int().min(1).max(4096).default(1024), temperature: z.number().min(0).max(2).default(0), topP: z.number().gt(0).max(1).default(1) }).strict(),
15
+ z.object({ kind: z.literal("fixture"), fixtureId: IdSchema }).strict()
16
+ ]);
17
+ var ModelStarterAttemptRequestSchema = z.object({
18
+ schemaVersion: z.literal("openpond.modelStarterAttemptRequest.v1"),
19
+ operationId: IdSchema,
20
+ teamId: IdSchema,
21
+ modelProjectId: IdSchema,
22
+ taskset: ModelProjectVersionedRefSchema,
23
+ taskId: IdSchema,
24
+ environmentSeed: z.number().int().min(0).max(2147483647).default(0),
25
+ policy: ModelStarterAttemptPolicySchema
26
+ }).strict();
27
+ var ModelStarterAttemptChoicesQuerySchema = z.object({ modelProjectId: IdSchema, taskset: ModelProjectVersionedRefSchema, afterTaskId: IdSchema.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();
28
+ var ModelStarterAttemptChoicesSchema = z.object({
29
+ modelProjectId: IdSchema,
30
+ taskset: ModelProjectVersionedRefSchema,
31
+ available: z.boolean(),
32
+ unavailableReason: z.string().max(1e3).nullable(),
33
+ models: z.array(z.object({ id: IdSchema, name: z.string().max(500) }).strict()).max(200),
34
+ tasks: z.array(z.object({ id: IdSchema, split: z.enum(["train", "validation", "frozen_eval"]), inputPreview: z.string().max(500), fixtures: z.array(z.object({ id: IdSchema, label: z.string().max(200) }).strict()).max(1e3) }).strict()).max(100),
35
+ nextCursor: IdSchema.nullable()
36
+ }).strict();
37
+ var ModelStarterAttemptSummarySchema = z.object({
38
+ schemaVersion: z.literal("openpond.modelStarterAttemptSummary.v1"),
39
+ id: IdSchema,
40
+ revision: z.number().int().positive(),
41
+ request: ModelStarterAttemptRequestSchema,
42
+ status: z.enum(["queued", "running", "cancelling", "completed", "failed", "cancelled"]),
43
+ policySnapshot: z.object({ modelId: IdSchema, provider: IdSchema, upstreamModelId: z.string().min(1).max(500), configurationHash: HashSchema }).strict().nullable(),
44
+ createdAt: z.iso.datetime(),
45
+ startedAt: z.iso.datetime().nullable(),
46
+ completedAt: z.iso.datetime().nullable(),
47
+ cleanupComplete: z.boolean(),
48
+ resultAvailable: z.boolean(),
49
+ score: z.number().min(0).max(1).nullable(),
50
+ gradingStatus: z.enum(["not_started", "scored", "unscorable", "not_configured"]).default("not_started"),
51
+ passed: z.boolean().nullable(),
52
+ outputPreview: z.string().max(500).nullable(),
53
+ error: z.object({ code: IdSchema, message: z.string().max(2e3) }).strict().nullable()
54
+ }).strict().superRefine((value, context) => {
55
+ if (value.request.policy.kind === "fixture" !== (value.policySnapshot === null)) context.addIssue({ code: "custom", path: ["policySnapshot"], message: "Fixture execution must not claim a model identity." });
56
+ if (value.status === "completed" && (!value.cleanupComplete || !value.resultAvailable || !value.completedAt)) context.addIssue({ code: "custom", message: "Completed attempts require retained results and confirmed cleanup." });
57
+ });
58
+ var ModelStarterAttemptListQuerySchema = z.object({ modelProjectId: IdSchema, afterId: IdSchema.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();
59
+ var ModelStarterAttemptPageSchema = z.object({ items: z.array(ModelStarterAttemptSummarySchema).max(100), nextCursor: IdSchema.nullable() }).strict();
60
+ var ModelStarterAttemptResultSchema = z.object({
61
+ schemaVersion: z.literal("openpond.modelStarterAttemptResult.v1"),
62
+ attempt: ModelStarterAttemptSummarySchema,
63
+ output: z.string().max(1048576).nullable(),
64
+ // Only model-facing messages, never the private environment snapshot.
65
+ messages: z.array(z.record(z.string(), z.unknown())).max(4002),
66
+ composition: RewardCompositionSchema.nullable(),
67
+ // Ordinary Tasksets have no Reward binding. Absence preserves the hash of
68
+ // already retained v1 results; new producers explicitly return null or a grade.
69
+ grade: TaskGradeSchema.nullable().optional(),
70
+ environment: z.object({ status: z.enum(["completed", "budget_exhausted", "cancelled", "timed_out", "policy_failure", "environment_failure"]), collected: z.boolean(), definition: ModelProjectVersionedRefSchema, initialStateHash: HashSchema.nullable(), finalStateHash: HashSchema.nullable(), attemptHash: HashSchema }).strict(),
71
+ providerRequestIds: z.array(IdSchema).max(1001),
72
+ contentHash: HashSchema
73
+ }).strict().superRefine((value, context) => {
74
+ if (!value.grade) return;
75
+ if (value.composition) context.addIssue({ code: "custom", path: ["grade"], message: "An ordinary grade cannot also claim a Reward composition." });
76
+ if (!["completed", "failed"].includes(value.attempt.status) || !value.attempt.resultAvailable || value.attempt.score !== value.grade.score || value.attempt.gradingStatus !== value.grade.gradingStatus || value.attempt.passed !== (value.grade.score === null ? null : value.grade.passed)) context.addIssue({ code: "custom", path: ["grade"], message: "Ordinary grade differs from its terminal attempt summary." });
77
+ });
78
+ var OpenPondModelStarterAttemptError = class extends Error {
79
+ constructor(status, code, message) {
80
+ super(message);
81
+ this.status = status;
82
+ this.code = code;
83
+ this.name = "OpenPondModelStarterAttemptError";
84
+ }
85
+ status;
86
+ code;
87
+ };
88
+ var OpenPondModelStarterAttemptsClient = class {
89
+ #options;
90
+ constructor(options) {
91
+ const url = new URL(options.baseUrl);
92
+ if (!options.apiKey.trim() || !options.teamId.trim() || !["https:", "http:"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error("Starter attempts require an HTTP(S) endpoint and workspace credentials.");
93
+ this.#options = { ...options, baseUrl: url.toString().replace(/\/+$/, "") };
94
+ }
95
+ async create(value, options = {}) {
96
+ const request = ModelStarterAttemptRequestSchema.parse(value);
97
+ if (request.teamId !== this.#options.teamId) throw new Error("Attempt belongs to another workspace.");
98
+ const result = this.#summary(await this.#request("", "POST", request, options.signal));
99
+ if (canonicalJson(result.request) !== canonicalJson(request)) throw new OpenPondModelStarterAttemptError(502, "attempt_request_mismatch", "Attempt receipt differs from the submitted request.");
100
+ return result;
101
+ }
102
+ async get(id, options = {}) {
103
+ return this.#summary(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}`, "GET", void 0, options.signal), id);
104
+ }
105
+ async choices(value, options = {}) {
106
+ const query = ModelStarterAttemptChoicesQuerySchema.parse(value);
107
+ const params = new URLSearchParams({ modelProjectId: query.modelProjectId, tasksetId: query.taskset.id, revision: String(query.taskset.revision), contentHash: query.taskset.contentHash, limit: String(query.limit) });
108
+ if (query.afterTaskId) params.set("afterTaskId", query.afterTaskId);
109
+ const result = ModelStarterAttemptChoicesSchema.parse(await this.#request(`/choices?${params}`, "GET", void 0, options.signal));
110
+ if (result.modelProjectId !== query.modelProjectId || canonicalJson(result.taskset) !== canonicalJson(query.taskset) || result.tasks.length > query.limit || new Set(result.tasks.map((task) => task.id)).size !== result.tasks.length) throw new OpenPondModelStarterAttemptError(502, "attempt_choices_mismatch", "Attempt choices differ from the selected model or Taskset.");
111
+ return result;
112
+ }
113
+ async cancel(id, options = {}) {
114
+ return this.#summary(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/cancel`, "POST", void 0, options.signal), id);
115
+ }
116
+ async result(id, options = {}) {
117
+ const value = ModelStarterAttemptResultSchema.parse(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/result`, "GET", void 0, options.signal));
118
+ this.#summary(value.attempt, id);
119
+ const { contentHash, ...content } = value;
120
+ if (!value.attempt.resultAvailable || await canonicalSha256(content) !== contentHash) throw new OpenPondModelStarterAttemptError(502, "attempt_result_integrity", "Attempt result integrity failed.");
121
+ return value;
122
+ }
123
+ async list(value, options = {}) {
124
+ const query = ModelStarterAttemptListQuerySchema.parse(value);
125
+ const params = new URLSearchParams({ modelProjectId: query.modelProjectId, limit: String(query.limit) });
126
+ if (query.afterId) params.set("afterId", query.afterId);
127
+ const page = ModelStarterAttemptPageSchema.parse(await this.#request(`?${params}`, "GET", void 0, options.signal));
128
+ if (page.items.length > query.limit || new Set(page.items.map((item) => item.id)).size !== page.items.length || page.items.some((item) => this.#summary(item).request.modelProjectId !== query.modelProjectId)) throw new OpenPondModelStarterAttemptError(502, "attempt_page_mismatch", "Attempt page differs from the selected model.");
129
+ return page;
130
+ }
131
+ #summary(value, id) {
132
+ const result = ModelStarterAttemptSummarySchema.parse(value);
133
+ if (result.request.teamId !== this.#options.teamId || id && result.id !== id) throw new OpenPondModelStarterAttemptError(502, "attempt_identity_mismatch", "Attempt receipt belongs to another identity or workspace.");
134
+ return result;
135
+ }
136
+ async #request(path, method, body, signal) {
137
+ const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/model-starter-attempts${path}`, { method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, "X-OpenPond-Team-Id": this.#options.teamId, "Content-Type": "application/json", Accept: "application/json" }, ...body === void 0 ? {} : { body: JSON.stringify(body) }, signal, redirect: "error" });
138
+ const reader = response.body?.getReader();
139
+ if (!reader) throw new OpenPondModelStarterAttemptError(response.status, "attempt_empty_response", "Attempt response was empty.");
140
+ let bytes = 0;
141
+ let text = "";
142
+ const decoder = new TextDecoder();
143
+ try {
144
+ while (true) {
145
+ const chunk = await reader.read();
146
+ if (chunk.done) break;
147
+ bytes += chunk.value.byteLength;
148
+ if (bytes > 16777216) throw new OpenPondModelStarterAttemptError(502, "attempt_response_too_large", "Attempt response exceeded its byte limit.");
149
+ text += decoder.decode(chunk.value, { stream: true });
150
+ }
151
+ text += decoder.decode();
152
+ } finally {
153
+ await reader.cancel();
154
+ reader.releaseLock();
155
+ }
156
+ const value = JSON.parse(text);
157
+ if (!response.ok) {
158
+ const error = z.object({ code: IdSchema, message: z.string().max(2e3) }).safeParse(value);
159
+ throw new OpenPondModelStarterAttemptError(response.status, error.success ? error.data.code : "attempt_request_failed", error.success ? error.data.message : "Attempt request failed.");
160
+ }
161
+ return value;
162
+ }
163
+ };
164
+
165
+ export {
166
+ ModelStarterAttemptPolicySchema,
167
+ ModelStarterAttemptRequestSchema,
168
+ ModelStarterAttemptChoicesQuerySchema,
169
+ ModelStarterAttemptChoicesSchema,
170
+ ModelStarterAttemptSummarySchema,
171
+ ModelStarterAttemptListQuerySchema,
172
+ ModelStarterAttemptPageSchema,
173
+ ModelStarterAttemptResultSchema,
174
+ OpenPondModelStarterAttemptError,
175
+ OpenPondModelStarterAttemptsClient
176
+ };
177
+ //# sourceMappingURL=chunk-EPJM7VEV.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/model-starter-attempts.ts"],
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { RewardCompositionSchema } from \"@openpond/evals/rewards\";\nimport { TaskGradeSchema } from \"@openpond/evals/graders\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { canonicalJson, canonicalSha256 } from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(200);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ModelStarterAttemptPolicySchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"hosted_chat\"), modelId: IdSchema, maxOutputTokens: z.number().int().min(1).max(4_096).default(1_024), temperature: z.number().min(0).max(2).default(0), topP: z.number().gt(0).max(1).default(1) }).strict(),\n z.object({ kind: z.literal(\"fixture\"), fixtureId: IdSchema }).strict(),\n]);\n/** The server resolves task input, private state, verifier and fixture script.\n * A caller can select releases, but cannot submit replacement execution bytes. */\nexport const ModelStarterAttemptRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterAttemptRequest.v1\"),\n operationId: IdSchema, teamId: IdSchema, modelProjectId: IdSchema,\n taskset: ModelProjectVersionedRefSchema, taskId: IdSchema,\n environmentSeed: z.number().int().min(0).max(2_147_483_647).default(0),\n policy: ModelStarterAttemptPolicySchema,\n}).strict();\nexport type ModelStarterAttemptRequest = z.infer<typeof ModelStarterAttemptRequestSchema>;\nexport const ModelStarterAttemptChoicesQuerySchema = z.object({ modelProjectId: IdSchema, taskset: ModelProjectVersionedRefSchema, afterTaskId: IdSchema.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const ModelStarterAttemptChoicesSchema = z.object({\n modelProjectId: IdSchema, taskset: ModelProjectVersionedRefSchema, available: z.boolean(), unavailableReason: z.string().max(1_000).nullable(),\n models: z.array(z.object({ id: IdSchema, name: z.string().max(500) }).strict()).max(200),\n tasks: z.array(z.object({ id: IdSchema, split: z.enum([\"train\", \"validation\", \"frozen_eval\"]), inputPreview: z.string().max(500), fixtures: z.array(z.object({ id: IdSchema, label: z.string().max(200) }).strict()).max(1_000) }).strict()).max(100),\n nextCursor: IdSchema.nullable(),\n}).strict();\nexport const ModelStarterAttemptSummarySchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterAttemptSummary.v1\"),\n id: IdSchema, revision: z.number().int().positive(), request: ModelStarterAttemptRequestSchema,\n status: z.enum([\"queued\", \"running\", \"cancelling\", \"completed\", \"failed\", \"cancelled\"]),\n policySnapshot: z.object({ modelId: IdSchema, provider: IdSchema, upstreamModelId: z.string().min(1).max(500), configurationHash: HashSchema }).strict().nullable(),\n createdAt: z.iso.datetime(), startedAt: z.iso.datetime().nullable(), completedAt: z.iso.datetime().nullable(),\n cleanupComplete: z.boolean(), resultAvailable: z.boolean(), score: z.number().min(0).max(1).nullable(),\n gradingStatus: z.enum([\"not_started\", \"scored\", \"unscorable\", \"not_configured\"]).default(\"not_started\"),\n passed: z.boolean().nullable(), outputPreview: z.string().max(500).nullable(),\n error: z.object({ code: IdSchema, message: z.string().max(2_000) }).strict().nullable(),\n}).strict().superRefine((value, context) => {\n if ((value.request.policy.kind === \"fixture\") !== (value.policySnapshot === null)) context.addIssue({ code: \"custom\", path: [\"policySnapshot\"], message: \"Fixture execution must not claim a model identity.\" });\n if (value.status === \"completed\" && (!value.cleanupComplete || !value.resultAvailable || !value.completedAt)) context.addIssue({ code: \"custom\", message: \"Completed attempts require retained results and confirmed cleanup.\" });\n});\nexport type ModelStarterAttemptSummary = z.infer<typeof ModelStarterAttemptSummarySchema>;\nexport const ModelStarterAttemptListQuerySchema = z.object({ modelProjectId: IdSchema, afterId: IdSchema.optional(), limit: z.number().int().min(1).max(100).default(25) }).strict();\nexport const ModelStarterAttemptPageSchema = z.object({ items: z.array(ModelStarterAttemptSummarySchema).max(100), nextCursor: IdSchema.nullable() }).strict();\nexport const ModelStarterAttemptResultSchema = z.object({\n schemaVersion: z.literal(\"openpond.modelStarterAttemptResult.v1\"),\n attempt: ModelStarterAttemptSummarySchema,\n output: z.string().max(1_048_576).nullable(),\n // Only model-facing messages, never the private environment snapshot.\n messages: z.array(z.record(z.string(), z.unknown())).max(4_002),\n composition: RewardCompositionSchema.nullable(),\n // Ordinary Tasksets have no Reward binding. Absence preserves the hash of\n // already retained v1 results; new producers explicitly return null or a grade.\n grade: TaskGradeSchema.nullable().optional(),\n environment: z.object({ status: z.enum([\"completed\", \"budget_exhausted\", \"cancelled\", \"timed_out\", \"policy_failure\", \"environment_failure\"]), collected: z.boolean(), definition: ModelProjectVersionedRefSchema, initialStateHash: HashSchema.nullable(), finalStateHash: HashSchema.nullable(), attemptHash: HashSchema }).strict(),\n providerRequestIds: z.array(IdSchema).max(1_001),\n contentHash: HashSchema,\n}).strict().superRefine((value, context) => {\n if (!value.grade) return;\n if (value.composition) context.addIssue({ code: \"custom\", path: [\"grade\"], message: \"An ordinary grade cannot also claim a Reward composition.\" });\n if (![\"completed\", \"failed\"].includes(value.attempt.status) || !value.attempt.resultAvailable || value.attempt.score !== value.grade.score || value.attempt.gradingStatus !== value.grade.gradingStatus || value.attempt.passed !== (value.grade.score === null ? null : value.grade.passed)) context.addIssue({ code: \"custom\", path: [\"grade\"], message: \"Ordinary grade differs from its terminal attempt summary.\" });\n});\nexport type ModelStarterAttemptResult = z.infer<typeof ModelStarterAttemptResultSchema>;\n\nexport class OpenPondModelStarterAttemptError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondModelStarterAttemptError\"; }\n}\n\nexport class OpenPondModelStarterAttemptsClient {\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 (!options.apiKey.trim() || !options.teamId.trim() || ![\"https:\", \"http:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error(\"Starter attempts require an HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n async create(value: z.input<typeof ModelStarterAttemptRequestSchema>, options: { signal?: AbortSignal } = {}) {\n const request = ModelStarterAttemptRequestSchema.parse(value);\n if (request.teamId !== this.#options.teamId) throw new Error(\"Attempt belongs to another workspace.\");\n const result = this.#summary(await this.#request(\"\", \"POST\", request, options.signal));\n if (canonicalJson(result.request) !== canonicalJson(request)) throw new OpenPondModelStarterAttemptError(502, \"attempt_request_mismatch\", \"Attempt receipt differs from the submitted request.\");\n return result;\n }\n async get(id: string, options: { signal?: AbortSignal } = {}) { return this.#summary(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}`, \"GET\", undefined, options.signal), id); }\n async choices(value: z.input<typeof ModelStarterAttemptChoicesQuerySchema>, options: { signal?: AbortSignal } = {}) {\n const query = ModelStarterAttemptChoicesQuerySchema.parse(value);\n const params = new URLSearchParams({ modelProjectId: query.modelProjectId, tasksetId: query.taskset.id, revision: String(query.taskset.revision), contentHash: query.taskset.contentHash, limit: String(query.limit) });\n if (query.afterTaskId) params.set(\"afterTaskId\", query.afterTaskId);\n const result = ModelStarterAttemptChoicesSchema.parse(await this.#request(`/choices?${params}`, \"GET\", undefined, options.signal));\n if (result.modelProjectId !== query.modelProjectId || canonicalJson(result.taskset) !== canonicalJson(query.taskset) || result.tasks.length > query.limit || new Set(result.tasks.map(task => task.id)).size !== result.tasks.length) throw new OpenPondModelStarterAttemptError(502, \"attempt_choices_mismatch\", \"Attempt choices differ from the selected model or Taskset.\");\n return result;\n }\n async cancel(id: string, options: { signal?: AbortSignal } = {}) { return this.#summary(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/cancel`, \"POST\", undefined, options.signal), id); }\n async result(id: string, options: { signal?: AbortSignal } = {}) {\n const value = ModelStarterAttemptResultSchema.parse(await this.#request(`/${encodeURIComponent(IdSchema.parse(id))}/result`, \"GET\", undefined, options.signal));\n this.#summary(value.attempt, id);\n const { contentHash, ...content } = value;\n if (!value.attempt.resultAvailable || await canonicalSha256(content) !== contentHash) throw new OpenPondModelStarterAttemptError(502, \"attempt_result_integrity\", \"Attempt result integrity failed.\");\n return value;\n }\n async list(value: z.input<typeof ModelStarterAttemptListQuerySchema>, options: { signal?: AbortSignal } = {}) {\n const query = ModelStarterAttemptListQuerySchema.parse(value);\n const params = new URLSearchParams({ modelProjectId: query.modelProjectId, limit: String(query.limit) });\n if (query.afterId) params.set(\"afterId\", query.afterId);\n const page = ModelStarterAttemptPageSchema.parse(await this.#request(`?${params}`, \"GET\", undefined, options.signal));\n if (page.items.length > query.limit || new Set(page.items.map(item => item.id)).size !== page.items.length || page.items.some(item => this.#summary(item).request.modelProjectId !== query.modelProjectId)) throw new OpenPondModelStarterAttemptError(502, \"attempt_page_mismatch\", \"Attempt page differs from the selected model.\");\n return page;\n }\n #summary(value: unknown, id?: string): ModelStarterAttemptSummary {\n const result = ModelStarterAttemptSummarySchema.parse(value);\n if (result.request.teamId !== this.#options.teamId || (id && result.id !== id)) throw new OpenPondModelStarterAttemptError(502, \"attempt_identity_mismatch\", \"Attempt receipt belongs to another identity or workspace.\");\n return result;\n }\n async #request(path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/model-starter-attempts${path}`, { method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" }, ...(body === undefined ? {} : { body: JSON.stringify(body) }), signal, redirect: \"error\" });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondModelStarterAttemptError(response.status, \"attempt_empty_response\", \"Attempt response was empty.\");\n let bytes = 0; let text = \"\"; const decoder = new TextDecoder();\n try {\n while (true) {\n const chunk = await reader.read(); if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > 16_777_216) throw new OpenPondModelStarterAttemptError(502, \"attempt_response_too_large\", \"Attempt response exceeded its byte limit.\");\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: IdSchema, message: z.string().max(2_000) }).safeParse(value);\n throw new OpenPondModelStarterAttemptError(response.status, error.success ? error.data.code : \"attempt_request_failed\", error.success ? error.data.message : \"Attempt request failed.\");\n }\n return value;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -10,9 +10,9 @@ import {
10
10
  ReleaseIdSchema,
11
11
  ReleaseTimestampSchema,
12
12
  contentHash
13
- } from "./chunk-ZPCK222K.js";
13
+ } from "./chunk-NF63YMOL.js";
14
14
 
15
- // ../harness/dist/tools.js
15
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/tools.js
16
16
  import { z } from "zod";
17
17
  var ToolDeclarationSchema = z.object({
18
18
  name: z.string().trim().min(1).max(64).regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/),
@@ -29,7 +29,7 @@ var CapabilityRequirementSchema = z.object({
29
29
  portability: z.enum(["portable", "host_adapter", "local_only", "hosted_only"])
30
30
  }).strict();
31
31
 
32
- // ../harness/dist/models.js
32
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/models.js
33
33
  import { z as z2 } from "zod";
34
34
  var ModelRefSchema = z2.object({
35
35
  provider: ReleaseIdSchema,
@@ -60,7 +60,7 @@ var ChatModelRefSchema = z2.object({
60
60
  modelId: z2.string().trim().min(1).max(300)
61
61
  });
62
62
 
63
- // ../harness/dist/evaluation-review.js
63
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/evaluation-review.js
64
64
  import { z as z3 } from "zod";
65
65
  var BoundedTextSchema = z3.string().trim().min(1).max(1e5);
66
66
  var HarnessEvaluationReviewClassificationSchema = z3.enum([
@@ -316,7 +316,7 @@ var HarnessEvaluationReviewNavigationDecisionSchema = z3.object({
316
316
  reason: BoundedTextSchema
317
317
  }).strict();
318
318
 
319
- // ../harness/dist/harness.js
319
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/harness.js
320
320
  import { z as z4 } from "zod";
321
321
  var PortabilityReportSchema = z4.object({
322
322
  portable: z4.boolean(),
@@ -398,10 +398,10 @@ var HarnessTraceSchema = z4.object({
398
398
  contentHash: ReleaseHashSchema
399
399
  }).strict();
400
400
 
401
- // ../harness/dist/harness-improvements.js
401
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/harness-improvements.js
402
402
  import { z as z6 } from "zod";
403
403
 
404
- // ../harness/dist/harness-workspaces.js
404
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/harness-workspaces.js
405
405
  import { z as z5 } from "zod";
406
406
  var MetadataSchema2 = z5.record(z5.string(), z5.unknown()).default({});
407
407
  var RevisionSchema = z5.number().int().nonnegative();
@@ -705,7 +705,7 @@ var HarnessOverlayMergeReceiptSchema = HarnessOverlayMergeReceiptContentSchema.e
705
705
  contentHash: ReleaseHashSchema
706
706
  }).strict();
707
707
 
708
- // ../harness/dist/harness-improvements.js
708
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/harness-improvements.js
709
709
  var BoundedTextSchema3 = z6.string().trim().min(1).max(1e5);
710
710
  var MetadataSchema3 = z6.record(z6.string(), z6.unknown()).default({});
711
711
  var ImprovementSafeBoundaryKindSchema = z6.enum([
@@ -963,7 +963,7 @@ var ImprovementApplyReceiptSchema = ImprovementApplyReceiptContentSchema.extend(
963
963
  contentHash: ReleaseHashSchema
964
964
  }).strict();
965
965
 
966
- // ../harness/dist/refinement-lifecycle.js
966
+ // ../../node_modules/.pnpm/@openpond+harness@0.2.6/node_modules/@openpond/harness/dist/refinement-lifecycle.js
967
967
  import { z as z7 } from "zod";
968
968
  var ShortTextSchema = z7.string().trim().min(1).max(2e3);
969
969
  var BoundedTextSchema4 = z7.string().trim().min(1).max(1e5);
@@ -1370,4 +1370,4 @@ export {
1370
1370
  CapabilityRequirementSchema,
1371
1371
  ChatModelRefSchema
1372
1372
  };
1373
- //# sourceMappingURL=chunk-IVEXCIHO.js.map
1373
+ //# sourceMappingURL=chunk-EV4PKJWN.js.map