openpond-sdk 0.3.3 → 0.4.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/TASKSETS.md +55 -0
- package/dist/actions-local.js +67 -118
- package/dist/actions-local.js.map +4 -4
- package/dist/actions.js +4 -92
- package/dist/actions.js.map +4 -4
- package/dist/chunk-27ETSPHQ.js +83 -0
- package/dist/chunk-27ETSPHQ.js.map +7 -0
- package/dist/chunk-5PRP457R.js +477 -0
- package/dist/chunk-5PRP457R.js.map +7 -0
- package/dist/chunk-65D4C7HP.js +273 -0
- package/dist/chunk-65D4C7HP.js.map +7 -0
- package/dist/chunk-747CMU2Y.js +222 -0
- package/dist/chunk-747CMU2Y.js.map +7 -0
- package/dist/chunk-7O5X7DBU.js +80 -0
- package/dist/chunk-7O5X7DBU.js.map +7 -0
- package/dist/chunk-A4ZDOZKP.js +115 -0
- package/dist/chunk-A4ZDOZKP.js.map +7 -0
- package/dist/chunk-APHPXQEA.js +155 -0
- package/dist/chunk-APHPXQEA.js.map +7 -0
- package/dist/chunk-AVW35YOH.js +574 -0
- package/dist/chunk-AVW35YOH.js.map +7 -0
- package/dist/chunk-AZUCY3E5.js +2395 -0
- package/dist/chunk-AZUCY3E5.js.map +7 -0
- package/dist/chunk-IVEXCIHO.js +1373 -0
- package/dist/chunk-IVEXCIHO.js.map +7 -0
- package/dist/chunk-K5ZCYOZO.js +49 -0
- package/dist/chunk-K5ZCYOZO.js.map +7 -0
- package/dist/chunk-LLHE4BOD.js +220 -0
- package/dist/chunk-LLHE4BOD.js.map +7 -0
- package/dist/chunk-LXXQVGQY.js +1 -0
- package/dist/chunk-LXXQVGQY.js.map +7 -0
- package/dist/chunk-P27DQ65Z.js +138 -0
- package/dist/chunk-P27DQ65Z.js.map +7 -0
- package/dist/chunk-QLEJOCQX.js +72 -0
- package/dist/chunk-QLEJOCQX.js.map +7 -0
- package/dist/chunk-S7I45WJQ.js +57 -0
- package/dist/chunk-S7I45WJQ.js.map +7 -0
- package/dist/chunk-ZPCK222K.js +586 -0
- package/dist/chunk-ZPCK222K.js.map +7 -0
- package/dist/index.js +33 -2488
- package/dist/index.js.map +4 -4
- package/dist/learning.js +16 -2042
- package/dist/learning.js.map +4 -4
- package/dist/model-batch-review.js +5 -42
- package/dist/model-batch-review.js.map +3 -3
- package/dist/model-projects.js +29 -430
- package/dist/model-projects.js.map +3 -3
- package/dist/model-starter-attempts.js +53 -310
- package/dist/model-starter-attempts.js.map +4 -4
- package/dist/model-starter-catalog.js +17 -460
- package/dist/model-starter-catalog.js.map +4 -4
- package/dist/model-starters.js +32 -709
- package/dist/model-starters.js.map +4 -4
- package/dist/model-taskset-authoring.js +11 -44
- package/dist/model-taskset-authoring.js.map +3 -3
- package/dist/profile-actions.js +4 -211
- package/dist/profile-actions.js.map +3 -3
- package/dist/project-actions.js +4 -224
- package/dist/project-actions.js.map +3 -3
- package/dist/refiner.js +14 -554
- package/dist/refiner.js.map +4 -4
- package/dist/taskset-catalog.js +9 -104
- package/dist/taskset-catalog.js.map +3 -3
- package/dist/taskset-drafts.js +465 -0
- package/dist/taskset-drafts.js.map +7 -0
- package/dist/taskset-packages.js +946 -3089
- package/dist/taskset-packages.js.map +4 -4
- package/dist/training.js +43 -822
- package/dist/training.js.map +4 -4
- package/dist/types/packages/sdk/src/index.d.ts +3 -3
- package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/learning-client.d.ts +130 -0
- package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/learning.d.ts +1 -129
- package/dist/types/packages/sdk/src/learning.d.ts.map +1 -1
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +1170 -0
- package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +560 -0
- package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts +92 -0
- package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-authored-tool-environment.d.ts +15 -0
- package/dist/types/packages/sdk/src/taskset-authored-tool-environment.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts +18 -0
- package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +1681 -0
- package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts +19 -0
- package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +2713 -0
- package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +1000 -0
- package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +429 -0
- package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +284 -0
- package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +846 -0
- package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-files.d.ts +8 -0
- package/dist/types/packages/sdk/src/taskset-draft-files.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-harness-actions.d.ts +28 -0
- package/dist/types/packages/sdk/src/taskset-draft-harness-actions.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-manifests.d.ts +8 -0
- package/dist/types/packages/sdk/src/taskset-draft-manifests.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +967 -0
- package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-publication.d.ts +10 -0
- package/dist/types/packages/sdk/src/taskset-draft-publication.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +1297 -0
- package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +1597 -0
- package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-drafts.d.ts +16 -0
- package/dist/types/packages/sdk/src/taskset-drafts.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +64 -0
- package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +1514 -0
- package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/taskset-packages.d.ts +6 -0
- package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
- package/dist/workflows.js +4 -221
- package/dist/workflows.js.map +3 -3
- package/package.json +5 -1
|
@@ -0,0 +1,1373 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FailureClassSchema,
|
|
3
|
+
HarnessRefinerCapabilitiesSchema,
|
|
4
|
+
HarnessRefinerEvidenceBasisSchema,
|
|
5
|
+
ImmutableArtifactRefSchema,
|
|
6
|
+
ImmutableAssetRefSchema,
|
|
7
|
+
ImmutableReleaseRefSchema,
|
|
8
|
+
MetadataSchema,
|
|
9
|
+
ReleaseHashSchema,
|
|
10
|
+
ReleaseIdSchema,
|
|
11
|
+
ReleaseTimestampSchema,
|
|
12
|
+
contentHash
|
|
13
|
+
} from "./chunk-ZPCK222K.js";
|
|
14
|
+
|
|
15
|
+
// ../harness/dist/tools.js
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
var ToolDeclarationSchema = z.object({
|
|
18
|
+
name: z.string().trim().min(1).max(64).regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/),
|
|
19
|
+
description: z.string().trim().min(1).max(2e3),
|
|
20
|
+
inputSchema: z.record(z.string(), z.unknown()),
|
|
21
|
+
inputSchemaHash: ReleaseHashSchema,
|
|
22
|
+
sideEffect: z.enum(["read", "write"]),
|
|
23
|
+
timeoutMs: z.number().int().positive().max(36e5)
|
|
24
|
+
}).strict();
|
|
25
|
+
var CapabilityRequirementSchema = z.object({
|
|
26
|
+
id: ReleaseIdSchema,
|
|
27
|
+
required: z.boolean(),
|
|
28
|
+
scopes: z.array(z.string().trim().min(1).max(500)).max(100).default([]),
|
|
29
|
+
portability: z.enum(["portable", "host_adapter", "local_only", "hosted_only"])
|
|
30
|
+
}).strict();
|
|
31
|
+
|
|
32
|
+
// ../harness/dist/models.js
|
|
33
|
+
import { z as z2 } from "zod";
|
|
34
|
+
var ModelRefSchema = z2.object({
|
|
35
|
+
provider: ReleaseIdSchema,
|
|
36
|
+
model: ReleaseIdSchema,
|
|
37
|
+
revision: z2.string().trim().min(1).max(500).nullable().default(null),
|
|
38
|
+
artifactHash: ReleaseHashSchema.nullable().default(null),
|
|
39
|
+
tokenizerRevision: z2.string().trim().min(1).max(500).nullable().default(null),
|
|
40
|
+
chatTemplateHash: ReleaseHashSchema.nullable().default(null)
|
|
41
|
+
}).strict();
|
|
42
|
+
var PROVIDER_IDS = [
|
|
43
|
+
"openpond",
|
|
44
|
+
"codex",
|
|
45
|
+
"anthropic",
|
|
46
|
+
"openai",
|
|
47
|
+
"xai",
|
|
48
|
+
"google",
|
|
49
|
+
"openrouter",
|
|
50
|
+
"deepseek",
|
|
51
|
+
"zai",
|
|
52
|
+
"moonshot",
|
|
53
|
+
"together",
|
|
54
|
+
"groq",
|
|
55
|
+
"custom-openai-compatible"
|
|
56
|
+
];
|
|
57
|
+
var ProviderIdSchema = z2.enum(PROVIDER_IDS);
|
|
58
|
+
var ChatModelRefSchema = z2.object({
|
|
59
|
+
providerId: ProviderIdSchema,
|
|
60
|
+
modelId: z2.string().trim().min(1).max(300)
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// ../harness/dist/evaluation-review.js
|
|
64
|
+
import { z as z3 } from "zod";
|
|
65
|
+
var BoundedTextSchema = z3.string().trim().min(1).max(1e5);
|
|
66
|
+
var HarnessEvaluationReviewClassificationSchema = z3.enum([
|
|
67
|
+
"no_action",
|
|
68
|
+
"harness_maintenance",
|
|
69
|
+
"runtime",
|
|
70
|
+
"product",
|
|
71
|
+
"taskset",
|
|
72
|
+
"model_improvement"
|
|
73
|
+
]);
|
|
74
|
+
var HarnessEvaluationReviewAuthoritySchema = z3.enum([
|
|
75
|
+
"none",
|
|
76
|
+
"runtime_service",
|
|
77
|
+
"product_team",
|
|
78
|
+
"human_review",
|
|
79
|
+
"evaluation_system",
|
|
80
|
+
"training_system"
|
|
81
|
+
]);
|
|
82
|
+
var HarnessReviewEvidenceKindSchema = z3.enum([
|
|
83
|
+
"observation",
|
|
84
|
+
"trigger",
|
|
85
|
+
"route_decision",
|
|
86
|
+
"refiner_outcome",
|
|
87
|
+
"proposal",
|
|
88
|
+
"validation",
|
|
89
|
+
"apply_receipt",
|
|
90
|
+
"harness_advance",
|
|
91
|
+
"rollback",
|
|
92
|
+
"work_outcome",
|
|
93
|
+
"taskset",
|
|
94
|
+
"evaluation",
|
|
95
|
+
"training_qualification",
|
|
96
|
+
"model_candidate"
|
|
97
|
+
]);
|
|
98
|
+
var HarnessReviewOwnerScopeSchema = z3.object({
|
|
99
|
+
kind: z3.enum(["personal", "team"]),
|
|
100
|
+
id: ReleaseIdSchema
|
|
101
|
+
}).strict();
|
|
102
|
+
var HarnessReviewSourcePolicyRefSchema = z3.object({
|
|
103
|
+
policy: ImmutableReleaseRefSchema,
|
|
104
|
+
state: z3.enum(["authorized", "revoked", "deleted", "expired"]),
|
|
105
|
+
checkedAt: ReleaseTimestampSchema
|
|
106
|
+
}).strict();
|
|
107
|
+
var HarnessReviewEvidenceRefSchema = z3.object({
|
|
108
|
+
evidence: ImmutableReleaseRefSchema,
|
|
109
|
+
kind: HarnessReviewEvidenceKindSchema,
|
|
110
|
+
sourceRef: ReleaseIdSchema,
|
|
111
|
+
sourcePolicy: HarnessReviewSourcePolicyRefSchema,
|
|
112
|
+
occurrenceKey: ReleaseHashSchema,
|
|
113
|
+
occurredAt: ReleaseTimestampSchema
|
|
114
|
+
}).strict();
|
|
115
|
+
var HarnessReviewExcludedEvidenceSchema = z3.object({
|
|
116
|
+
evidence: ImmutableReleaseRefSchema,
|
|
117
|
+
sourcePolicy: HarnessReviewSourcePolicyRefSchema.nullable(),
|
|
118
|
+
reason: z3.enum([
|
|
119
|
+
"outside_scope",
|
|
120
|
+
"before_watermark",
|
|
121
|
+
"duplicate",
|
|
122
|
+
"resolved",
|
|
123
|
+
"revoked",
|
|
124
|
+
"deleted",
|
|
125
|
+
"expired",
|
|
126
|
+
"sensitive",
|
|
127
|
+
"unverified",
|
|
128
|
+
"budget"
|
|
129
|
+
])
|
|
130
|
+
}).strict();
|
|
131
|
+
var HarnessReviewWatermarkSchema = z3.object({
|
|
132
|
+
cursor: ReleaseHashSchema,
|
|
133
|
+
throughCreatedAt: ReleaseTimestampSchema
|
|
134
|
+
}).strict();
|
|
135
|
+
var HarnessReviewClaimSchema = z3.object({
|
|
136
|
+
fingerprint: ReleaseHashSchema,
|
|
137
|
+
recurrenceFamily: z3.string().trim().min(1).max(1e3),
|
|
138
|
+
statement: BoundedTextSchema,
|
|
139
|
+
candidateDisposition: z3.enum(["observe", "confirm"]).optional(),
|
|
140
|
+
independentOccurrences: z3.number().int().positive().max(1e6),
|
|
141
|
+
unresolvedOccurrences: z3.number().int().positive().max(1e6)
|
|
142
|
+
}).strict().refine((claim) => claim.unresolvedOccurrences <= claim.independentOccurrences, "unresolved occurrences cannot exceed independent occurrences");
|
|
143
|
+
var HarnessReviewTriageLayerSchema = z3.enum([
|
|
144
|
+
"harness",
|
|
145
|
+
"runtime",
|
|
146
|
+
"product",
|
|
147
|
+
"retrieval",
|
|
148
|
+
"tools",
|
|
149
|
+
"evaluation",
|
|
150
|
+
"model"
|
|
151
|
+
]);
|
|
152
|
+
var HarnessReviewTriageDecisionSchema = z3.object({
|
|
153
|
+
layer: HarnessReviewTriageLayerSchema,
|
|
154
|
+
status: z3.enum(["not_applicable", "unresolved", "resolved", "blocked"]),
|
|
155
|
+
reason: BoundedTextSchema,
|
|
156
|
+
evidenceRefs: z3.array(ImmutableReleaseRefSchema).max(1e3)
|
|
157
|
+
}).strict();
|
|
158
|
+
var HarnessEvaluationReviewReceiptContentSchema = z3.object({
|
|
159
|
+
schemaVersion: z3.literal("openpond.harnessEvaluationReviewReceipt.v1"),
|
|
160
|
+
id: ReleaseIdSchema,
|
|
161
|
+
ownerScope: HarnessReviewOwnerScopeSchema,
|
|
162
|
+
workspaceRef: ReleaseIdSchema,
|
|
163
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
164
|
+
previousWatermark: HarnessReviewWatermarkSchema.nullable(),
|
|
165
|
+
nextWatermark: HarnessReviewWatermarkSchema,
|
|
166
|
+
selectedEvidence: z3.array(HarnessReviewEvidenceRefSchema).max(1e4),
|
|
167
|
+
excludedEvidence: z3.array(HarnessReviewExcludedEvidenceSchema).max(1e4),
|
|
168
|
+
claim: HarnessReviewClaimSchema.nullable(),
|
|
169
|
+
classification: HarnessEvaluationReviewClassificationSchema,
|
|
170
|
+
triage: z3.array(HarnessReviewTriageDecisionSchema).max(16),
|
|
171
|
+
reason: BoundedTextSchema,
|
|
172
|
+
nextAuthority: HarnessEvaluationReviewAuthoritySchema,
|
|
173
|
+
maxEstimatedCostUsd: z3.number().finite().nonnegative(),
|
|
174
|
+
tasksetProposal: ImmutableReleaseRefSchema.nullable(),
|
|
175
|
+
evaluation: ImmutableReleaseRefSchema.nullable(),
|
|
176
|
+
trainingQualification: ImmutableReleaseRefSchema.nullable(),
|
|
177
|
+
policyVersion: ReleaseIdSchema,
|
|
178
|
+
createdAt: ReleaseTimestampSchema,
|
|
179
|
+
metadata: MetadataSchema
|
|
180
|
+
}).strict().superRefine((receipt, context) => {
|
|
181
|
+
const selectedKeys = receipt.selectedEvidence.map((item) => `${item.evidence.id}:${item.evidence.contentHash}`);
|
|
182
|
+
if (new Set(selectedKeys).size !== selectedKeys.length) {
|
|
183
|
+
context.addIssue({
|
|
184
|
+
code: "custom",
|
|
185
|
+
message: "selected review evidence must be unique",
|
|
186
|
+
path: ["selectedEvidence"]
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (receipt.selectedEvidence.some((item) => item.sourcePolicy.state !== "authorized")) {
|
|
190
|
+
context.addIssue({
|
|
191
|
+
code: "custom",
|
|
192
|
+
message: "selected review evidence must be authorized at review time",
|
|
193
|
+
path: ["selectedEvidence"]
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
if (receipt.classification === "no_action") {
|
|
197
|
+
if (receipt.nextAuthority !== "none") {
|
|
198
|
+
context.addIssue({
|
|
199
|
+
code: "custom",
|
|
200
|
+
message: "no-action review receipts require no next authority",
|
|
201
|
+
path: ["nextAuthority"]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (receipt.tasksetProposal || receipt.evaluation || receipt.trainingQualification) {
|
|
205
|
+
context.addIssue({
|
|
206
|
+
code: "custom",
|
|
207
|
+
message: "no-action review receipts cannot carry downstream refs"
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
} else if (!receipt.claim || receipt.selectedEvidence.length === 0) {
|
|
211
|
+
context.addIssue({
|
|
212
|
+
code: "custom",
|
|
213
|
+
message: "actionable review receipts require a claim and selected evidence"
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (receipt.classification === "runtime" && receipt.nextAuthority !== "runtime_service") {
|
|
217
|
+
context.addIssue({
|
|
218
|
+
code: "custom",
|
|
219
|
+
message: "runtime classifications route to runtime-service authority",
|
|
220
|
+
path: ["nextAuthority"]
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (receipt.classification === "product" && receipt.nextAuthority !== "product_team") {
|
|
224
|
+
context.addIssue({
|
|
225
|
+
code: "custom",
|
|
226
|
+
message: "product classifications route to product-team authority",
|
|
227
|
+
path: ["nextAuthority"]
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
if (receipt.classification === "taskset" && receipt.nextAuthority !== "human_review") {
|
|
231
|
+
context.addIssue({
|
|
232
|
+
code: "custom",
|
|
233
|
+
message: "Taskset classifications require human review"
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
if (receipt.classification === "model_improvement" && (!receipt.evaluation || !receipt.trainingQualification || !["human_review", "training_system"].includes(receipt.nextAuthority))) {
|
|
237
|
+
context.addIssue({
|
|
238
|
+
code: "custom",
|
|
239
|
+
message: "model-improvement classifications require Evaluation and qualification refs plus explicit authority"
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
var HarnessEvaluationReviewReceiptSchema = HarnessEvaluationReviewReceiptContentSchema.extend({
|
|
244
|
+
contentHash: ReleaseHashSchema
|
|
245
|
+
}).strict();
|
|
246
|
+
var HarnessEvaluationReviewModelEvidenceSchema = z3.object({
|
|
247
|
+
id: ReleaseIdSchema,
|
|
248
|
+
evidence: ImmutableReleaseRefSchema,
|
|
249
|
+
kind: HarnessReviewEvidenceKindSchema,
|
|
250
|
+
sourceRef: ReleaseIdSchema,
|
|
251
|
+
occurredAt: ReleaseTimestampSchema,
|
|
252
|
+
payload: z3.record(z3.string(), z3.unknown())
|
|
253
|
+
}).strict();
|
|
254
|
+
var HarnessEvaluationReviewModelNoActionSchema = z3.object({
|
|
255
|
+
schemaVersion: z3.literal("openpond.harnessEvaluationReviewModelDecision.v2"),
|
|
256
|
+
decision: z3.literal("no_action"),
|
|
257
|
+
reason: BoundedTextSchema,
|
|
258
|
+
ignoredEvidence: z3.array(z3.object({
|
|
259
|
+
id: ReleaseIdSchema,
|
|
260
|
+
reason: z3.string().trim().min(1).max(2e3)
|
|
261
|
+
}).strict()).max(1e3)
|
|
262
|
+
}).strict();
|
|
263
|
+
var HarnessEvaluationReviewModelActionSchema = z3.object({
|
|
264
|
+
schemaVersion: z3.literal("openpond.harnessEvaluationReviewModelDecision.v2"),
|
|
265
|
+
decision: z3.literal("review"),
|
|
266
|
+
classification: z3.enum([
|
|
267
|
+
"harness_maintenance",
|
|
268
|
+
"runtime",
|
|
269
|
+
"product",
|
|
270
|
+
"taskset"
|
|
271
|
+
]),
|
|
272
|
+
selectedEvidenceIds: z3.array(ReleaseIdSchema).min(1).max(1e3),
|
|
273
|
+
ignoredEvidence: z3.array(z3.object({
|
|
274
|
+
id: ReleaseIdSchema,
|
|
275
|
+
reason: z3.string().trim().min(1).max(2e3)
|
|
276
|
+
}).strict()).max(1e3),
|
|
277
|
+
recurrenceFamily: z3.string().trim().min(1).max(1e3),
|
|
278
|
+
statement: BoundedTextSchema,
|
|
279
|
+
triageLayer: HarnessReviewTriageLayerSchema,
|
|
280
|
+
expectedOutcome: BoundedTextSchema,
|
|
281
|
+
counterevidence: z3.string().trim().max(1e4),
|
|
282
|
+
confidence: z3.number().min(0).max(1),
|
|
283
|
+
candidateDisposition: z3.enum(["observe", "confirm"]).nullable(),
|
|
284
|
+
reason: BoundedTextSchema
|
|
285
|
+
}).strict().superRefine((decision, context) => {
|
|
286
|
+
const requiresDisposition = decision.classification === "harness_maintenance";
|
|
287
|
+
if (requiresDisposition !== (decision.candidateDisposition !== null)) {
|
|
288
|
+
context.addIssue({
|
|
289
|
+
code: "custom",
|
|
290
|
+
message: "Harness maintenance requires a candidate disposition; external routes require null",
|
|
291
|
+
path: ["candidateDisposition"]
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
var HarnessEvaluationReviewModelResolutionSchema = z3.object({
|
|
296
|
+
schemaVersion: z3.literal("openpond.harnessEvaluationReviewModelDecision.v2"),
|
|
297
|
+
decision: z3.literal("resolve_candidate"),
|
|
298
|
+
candidateId: ReleaseIdSchema,
|
|
299
|
+
candidateFingerprint: ReleaseHashSchema,
|
|
300
|
+
selectedEvidenceIds: z3.array(ReleaseIdSchema).min(1).max(1e3),
|
|
301
|
+
ignoredEvidence: z3.array(z3.object({
|
|
302
|
+
id: ReleaseIdSchema,
|
|
303
|
+
reason: z3.string().trim().min(1).max(2e3)
|
|
304
|
+
}).strict()).max(1e3),
|
|
305
|
+
confidence: z3.number().min(0).max(1),
|
|
306
|
+
reason: BoundedTextSchema
|
|
307
|
+
}).strict();
|
|
308
|
+
var HarnessEvaluationReviewModelDecisionSchema = z3.discriminatedUnion("decision", [
|
|
309
|
+
HarnessEvaluationReviewModelNoActionSchema,
|
|
310
|
+
HarnessEvaluationReviewModelActionSchema,
|
|
311
|
+
HarnessEvaluationReviewModelResolutionSchema
|
|
312
|
+
]);
|
|
313
|
+
var HarnessEvaluationReviewNavigationDecisionSchema = z3.object({
|
|
314
|
+
schemaVersion: z3.literal("openpond.harnessEvaluationReviewNavigationDecision.v1"),
|
|
315
|
+
selectedEvidenceIds: z3.array(ReleaseIdSchema).min(1).max(50),
|
|
316
|
+
reason: BoundedTextSchema
|
|
317
|
+
}).strict();
|
|
318
|
+
|
|
319
|
+
// ../harness/dist/harness.js
|
|
320
|
+
import { z as z4 } from "zod";
|
|
321
|
+
var PortabilityReportSchema = z4.object({
|
|
322
|
+
portable: z4.boolean(),
|
|
323
|
+
blockers: z4.array(z4.string().trim().min(1).max(2e3)).max(1e3),
|
|
324
|
+
localOnlyAssetRefs: z4.array(ReleaseIdSchema).max(1e4),
|
|
325
|
+
hostPrivateAssetRefs: z4.array(ReleaseIdSchema).max(1e4)
|
|
326
|
+
}).strict();
|
|
327
|
+
var AgentSnapshotContentSchema = z4.object({
|
|
328
|
+
schemaVersion: z4.literal("openpond.agentSnapshot.v2"),
|
|
329
|
+
id: ReleaseIdSchema,
|
|
330
|
+
sourceRelease: ImmutableReleaseRefSchema.nullable(),
|
|
331
|
+
instructions: z4.array(ImmutableAssetRefSchema).max(1e4),
|
|
332
|
+
skills: z4.array(ImmutableAssetRefSchema).max(1e4),
|
|
333
|
+
agents: z4.array(ImmutableAssetRefSchema).max(1e4),
|
|
334
|
+
toolDeclarations: z4.array(ToolDeclarationSchema).max(200),
|
|
335
|
+
capabilityRequirements: z4.array(CapabilityRequirementSchema).max(200),
|
|
336
|
+
dependencyLock: ImmutableAssetRefSchema,
|
|
337
|
+
portability: PortabilityReportSchema,
|
|
338
|
+
metadata: MetadataSchema
|
|
339
|
+
}).strict();
|
|
340
|
+
var AgentSnapshotSchema = AgentSnapshotContentSchema.extend({ contentHash: ReleaseHashSchema }).strict();
|
|
341
|
+
var LifecycleContractSchema = z4.object({
|
|
342
|
+
create: z4.literal(true),
|
|
343
|
+
reset: z4.literal(true),
|
|
344
|
+
step: z4.literal(true),
|
|
345
|
+
collect: z4.literal(true),
|
|
346
|
+
destroy: z4.literal(true),
|
|
347
|
+
resetScope: z4.enum(["task", "attempt"])
|
|
348
|
+
}).strict();
|
|
349
|
+
var GraderInterfaceContractSchema = z4.object({
|
|
350
|
+
visibleEvidence: z4.array(ReleaseIdSchema).max(1e3),
|
|
351
|
+
privilegedEvidence: z4.array(ReleaseIdSchema).max(1e3),
|
|
352
|
+
privateVerifierIsolation: z4.boolean()
|
|
353
|
+
}).strict();
|
|
354
|
+
var HarnessReleaseContentSchema = z4.object({
|
|
355
|
+
schemaVersion: z4.literal("openpond.harnessRelease.v2"),
|
|
356
|
+
id: ReleaseIdSchema,
|
|
357
|
+
agentSnapshot: ImmutableReleaseRefSchema,
|
|
358
|
+
program: ImmutableAssetRefSchema,
|
|
359
|
+
tools: z4.array(ToolDeclarationSchema).max(200),
|
|
360
|
+
lifecycle: LifecycleContractSchema,
|
|
361
|
+
graderInterface: GraderInterfaceContractSchema,
|
|
362
|
+
files: z4.array(ImmutableAssetRefSchema).max(1e5),
|
|
363
|
+
metadata: MetadataSchema
|
|
364
|
+
}).strict();
|
|
365
|
+
var HarnessReleaseSchema = HarnessReleaseContentSchema.extend({ contentHash: ReleaseHashSchema }).strict();
|
|
366
|
+
var ModelActionSchema = z4.object({
|
|
367
|
+
id: ReleaseIdSchema,
|
|
368
|
+
turn: z4.number().int().nonnegative(),
|
|
369
|
+
kind: z4.enum(["message", "tool_call", "terminal"]),
|
|
370
|
+
name: ReleaseIdSchema.nullable(),
|
|
371
|
+
arguments: z4.record(z4.string(), z4.unknown()),
|
|
372
|
+
content: z4.string().max(1e6).nullable()
|
|
373
|
+
}).strict();
|
|
374
|
+
var ToolObservationSchema = z4.object({
|
|
375
|
+
actionId: ReleaseIdSchema,
|
|
376
|
+
turn: z4.number().int().nonnegative(),
|
|
377
|
+
terminal: z4.boolean(),
|
|
378
|
+
output: z4.record(z4.string(), z4.unknown()),
|
|
379
|
+
artifactRefs: z4.array(ImmutableArtifactRefSchema).max(1e5)
|
|
380
|
+
}).strict();
|
|
381
|
+
var HarnessLifecycleEventSchema = z4.object({
|
|
382
|
+
sequence: z4.number().int().nonnegative(),
|
|
383
|
+
type: z4.enum(["created", "reset", "action", "observation", "terminal", "failure", "collected", "destroyed"]),
|
|
384
|
+
payloadHash: ReleaseHashSchema,
|
|
385
|
+
metadata: MetadataSchema
|
|
386
|
+
}).strict();
|
|
387
|
+
var HarnessTraceSchema = z4.object({
|
|
388
|
+
schemaVersion: z4.literal("openpond.harnessTrace.v1"),
|
|
389
|
+
manifest: ImmutableReleaseRefSchema,
|
|
390
|
+
taskId: ReleaseIdSchema,
|
|
391
|
+
seed: z4.string().trim().min(1).max(500),
|
|
392
|
+
events: z4.array(HarnessLifecycleEventSchema).max(1e6),
|
|
393
|
+
actions: z4.array(ModelActionSchema).max(1e5),
|
|
394
|
+
observations: z4.array(ToolObservationSchema).max(1e5),
|
|
395
|
+
terminal: z4.boolean(),
|
|
396
|
+
failureClass: FailureClassSchema.nullable(),
|
|
397
|
+
output: z4.record(z4.string(), z4.unknown()),
|
|
398
|
+
contentHash: ReleaseHashSchema
|
|
399
|
+
}).strict();
|
|
400
|
+
|
|
401
|
+
// ../harness/dist/harness-improvements.js
|
|
402
|
+
import { z as z6 } from "zod";
|
|
403
|
+
|
|
404
|
+
// ../harness/dist/harness-workspaces.js
|
|
405
|
+
import { z as z5 } from "zod";
|
|
406
|
+
var MetadataSchema2 = z5.record(z5.string(), z5.unknown()).default({});
|
|
407
|
+
var RevisionSchema = z5.number().int().nonnegative();
|
|
408
|
+
var BoundedTextSchema2 = z5.string().trim().min(1).max(1e5);
|
|
409
|
+
var HarnessOwnerScopeSchema = z5.object({
|
|
410
|
+
kind: z5.enum(["personal", "team"]),
|
|
411
|
+
id: ReleaseIdSchema
|
|
412
|
+
}).strict();
|
|
413
|
+
var HarnessCurrentChannelSchema = z5.object({
|
|
414
|
+
name: ReleaseIdSchema,
|
|
415
|
+
release: ImmutableReleaseRefSchema.nullable(),
|
|
416
|
+
revision: RevisionSchema
|
|
417
|
+
}).strict();
|
|
418
|
+
var HarnessWorkspaceSchema = z5.object({
|
|
419
|
+
schemaVersion: z5.literal("openpond.harnessWorkspace.v1"),
|
|
420
|
+
id: ReleaseIdSchema,
|
|
421
|
+
ownerScope: HarnessOwnerScopeSchema,
|
|
422
|
+
name: z5.string().trim().min(1).max(240),
|
|
423
|
+
location: z5.enum(["local", "hosted"]),
|
|
424
|
+
sourceRevision: z5.string().trim().min(1).max(500),
|
|
425
|
+
revision: RevisionSchema,
|
|
426
|
+
dirty: z5.boolean(),
|
|
427
|
+
currentChannel: HarnessCurrentChannelSchema,
|
|
428
|
+
createdAt: ReleaseTimestampSchema,
|
|
429
|
+
updatedAt: ReleaseTimestampSchema,
|
|
430
|
+
metadata: MetadataSchema2
|
|
431
|
+
}).strict();
|
|
432
|
+
var HarnessImprovementRouteSchema = z5.enum([
|
|
433
|
+
"runtime",
|
|
434
|
+
"memory",
|
|
435
|
+
"prompt",
|
|
436
|
+
"skill",
|
|
437
|
+
"agent",
|
|
438
|
+
"product",
|
|
439
|
+
"taskset",
|
|
440
|
+
"training"
|
|
441
|
+
]);
|
|
442
|
+
var HarnessChangeEffectSchema = z5.enum([
|
|
443
|
+
"text_instruction",
|
|
444
|
+
"memory",
|
|
445
|
+
"dependency_selection",
|
|
446
|
+
"executable_code",
|
|
447
|
+
"business_logic",
|
|
448
|
+
"financial_logic",
|
|
449
|
+
"permission",
|
|
450
|
+
"connected_app",
|
|
451
|
+
"publication",
|
|
452
|
+
"deployment",
|
|
453
|
+
"training",
|
|
454
|
+
"model_binding",
|
|
455
|
+
"team_or_global"
|
|
456
|
+
]);
|
|
457
|
+
var HarnessOverlayEditSchema = z5.object({
|
|
458
|
+
id: ReleaseIdSchema,
|
|
459
|
+
route: HarnessImprovementRouteSchema,
|
|
460
|
+
operation: z5.enum(["create", "update", "delete"]),
|
|
461
|
+
target: z5.string().trim().min(1).max(2e3),
|
|
462
|
+
summary: z5.string().trim().min(1).max(2e3),
|
|
463
|
+
content: z5.string().max(1e6).nullable(),
|
|
464
|
+
contentHash: ReleaseHashSchema.nullable(),
|
|
465
|
+
effects: z5.array(HarnessChangeEffectSchema).min(1).max(20)
|
|
466
|
+
}).strict().superRefine((edit, context) => {
|
|
467
|
+
if (edit.operation === "delete") {
|
|
468
|
+
if (edit.content !== null || edit.contentHash !== null) {
|
|
469
|
+
context.addIssue({
|
|
470
|
+
code: "custom",
|
|
471
|
+
message: "delete edits cannot include replacement content",
|
|
472
|
+
path: ["content"]
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
if (edit.content === null || edit.contentHash === null) {
|
|
478
|
+
context.addIssue({
|
|
479
|
+
code: "custom",
|
|
480
|
+
message: "create and update edits require content and contentHash",
|
|
481
|
+
path: ["content"]
|
|
482
|
+
});
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
const expected = contentHash(edit.content);
|
|
486
|
+
if (edit.contentHash !== expected) {
|
|
487
|
+
context.addIssue({
|
|
488
|
+
code: "custom",
|
|
489
|
+
message: `edit contentHash is ${edit.contentHash}; expected ${expected}`,
|
|
490
|
+
path: ["contentHash"]
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
var HarnessWorkspaceRevisionRefSchema = z5.object({
|
|
495
|
+
workspaceId: ReleaseIdSchema,
|
|
496
|
+
revision: RevisionSchema,
|
|
497
|
+
sourceRevision: z5.string().trim().min(1).max(500),
|
|
498
|
+
channelRevision: RevisionSchema
|
|
499
|
+
}).strict();
|
|
500
|
+
var HarnessOverlaySnapshotRefSchema = z5.object({
|
|
501
|
+
id: ReleaseIdSchema,
|
|
502
|
+
revision: RevisionSchema,
|
|
503
|
+
contentHash: ReleaseHashSchema
|
|
504
|
+
}).strict();
|
|
505
|
+
var HarnessTurnSnapshotSchema = z5.object({
|
|
506
|
+
schemaVersion: z5.literal("openpond.harnessTurnSnapshot.v1"),
|
|
507
|
+
workspaceId: ReleaseIdSchema,
|
|
508
|
+
workspaceRevision: RevisionSchema,
|
|
509
|
+
sourceRevision: z5.string().trim().min(1).max(500),
|
|
510
|
+
channelName: ReleaseIdSchema,
|
|
511
|
+
channelRevision: RevisionSchema,
|
|
512
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
513
|
+
toolCatalogHash: ReleaseHashSchema.nullable().optional(),
|
|
514
|
+
overlay: HarnessOverlaySnapshotRefSchema.nullable().optional().default(null)
|
|
515
|
+
}).strict();
|
|
516
|
+
var HarnessRunOverlayContentSchema = z5.object({
|
|
517
|
+
schemaVersion: z5.literal("openpond.harnessRunOverlay.v1"),
|
|
518
|
+
id: ReleaseIdSchema,
|
|
519
|
+
runId: ReleaseIdSchema,
|
|
520
|
+
baseHarnessRelease: ImmutableReleaseRefSchema,
|
|
521
|
+
workspace: HarnessWorkspaceRevisionRefSchema,
|
|
522
|
+
revision: RevisionSchema,
|
|
523
|
+
status: z5.enum(["active", "frozen", "abandoned"]),
|
|
524
|
+
edits: z5.array(HarnessOverlayEditSchema).max(1e3),
|
|
525
|
+
createdAt: ReleaseTimestampSchema,
|
|
526
|
+
updatedAt: ReleaseTimestampSchema,
|
|
527
|
+
metadata: MetadataSchema2
|
|
528
|
+
}).strict();
|
|
529
|
+
var HarnessRunOverlaySchema = HarnessRunOverlayContentSchema.extend({
|
|
530
|
+
contentHash: ReleaseHashSchema
|
|
531
|
+
}).strict();
|
|
532
|
+
var HarnessProposalEvidenceRefSchema = z5.object({
|
|
533
|
+
kind: z5.enum([
|
|
534
|
+
"tool_event",
|
|
535
|
+
"recovery",
|
|
536
|
+
"validation",
|
|
537
|
+
"user_turn",
|
|
538
|
+
"work_output",
|
|
539
|
+
"work_receipt"
|
|
540
|
+
]),
|
|
541
|
+
id: ReleaseIdSchema,
|
|
542
|
+
contentHash: ReleaseHashSchema.nullable()
|
|
543
|
+
}).strict();
|
|
544
|
+
var HarnessValidationPlanItemSchema = z5.object({
|
|
545
|
+
id: ReleaseIdSchema,
|
|
546
|
+
kind: z5.enum([
|
|
547
|
+
"dependency",
|
|
548
|
+
"schema",
|
|
549
|
+
"package",
|
|
550
|
+
"file_render",
|
|
551
|
+
"skill",
|
|
552
|
+
"prompt",
|
|
553
|
+
"business_formula",
|
|
554
|
+
"targeted_evaluation",
|
|
555
|
+
"observed_recovery",
|
|
556
|
+
"memory",
|
|
557
|
+
"component_activation"
|
|
558
|
+
]),
|
|
559
|
+
description: BoundedTextSchema2,
|
|
560
|
+
required: z5.boolean()
|
|
561
|
+
}).strict();
|
|
562
|
+
var HarnessImprovementProposalContentSchema = z5.object({
|
|
563
|
+
schemaVersion: z5.literal("openpond.harnessImprovementProposal.v1"),
|
|
564
|
+
id: ReleaseIdSchema,
|
|
565
|
+
overlay: HarnessOverlaySnapshotRefSchema,
|
|
566
|
+
baseHarnessRelease: ImmutableReleaseRefSchema,
|
|
567
|
+
expectedWorkspace: HarnessWorkspaceRevisionRefSchema,
|
|
568
|
+
requestedScope: z5.enum(["personal", "team", "global"]),
|
|
569
|
+
route: HarnessImprovementRouteSchema,
|
|
570
|
+
risk: z5.enum(["low", "review", "restricted"]),
|
|
571
|
+
effects: z5.array(HarnessChangeEffectSchema).min(1).max(20),
|
|
572
|
+
evidence: z5.array(HarnessProposalEvidenceRefSchema).min(1).max(1e3),
|
|
573
|
+
edits: z5.array(HarnessOverlayEditSchema).min(1).max(1e3),
|
|
574
|
+
validationPlan: z5.array(HarnessValidationPlanItemSchema).min(1).max(100),
|
|
575
|
+
expectedOutcome: BoundedTextSchema2,
|
|
576
|
+
createdAt: ReleaseTimestampSchema,
|
|
577
|
+
metadata: MetadataSchema2
|
|
578
|
+
}).strict().superRefine((proposal, context) => {
|
|
579
|
+
const declaredEffects = new Set(proposal.effects);
|
|
580
|
+
for (const [index, edit] of proposal.edits.entries()) {
|
|
581
|
+
if (edit.route !== proposal.route) {
|
|
582
|
+
context.addIssue({
|
|
583
|
+
code: "custom",
|
|
584
|
+
message: "every edit route must match the proposal route",
|
|
585
|
+
path: ["edits", index, "route"]
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
for (const effect of edit.effects) {
|
|
589
|
+
if (!declaredEffects.has(effect)) {
|
|
590
|
+
context.addIssue({
|
|
591
|
+
code: "custom",
|
|
592
|
+
message: `edit effect ${effect} is missing from proposal effects`,
|
|
593
|
+
path: ["edits", index, "effects"]
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
if (new Set(proposal.validationPlan.map((item) => item.id)).size !== proposal.validationPlan.length) {
|
|
599
|
+
context.addIssue({
|
|
600
|
+
code: "custom",
|
|
601
|
+
message: "validation plan ids must be unique",
|
|
602
|
+
path: ["validationPlan"]
|
|
603
|
+
});
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
var HarnessImprovementProposalSchema = HarnessImprovementProposalContentSchema.extend({
|
|
607
|
+
contentHash: ReleaseHashSchema
|
|
608
|
+
}).strict();
|
|
609
|
+
var HarnessTargetedValidationReceiptContentSchema = z5.object({
|
|
610
|
+
schemaVersion: z5.literal("openpond.harnessTargetedValidationReceipt.v1"),
|
|
611
|
+
id: ReleaseIdSchema,
|
|
612
|
+
proposal: ImmutableReleaseRefSchema,
|
|
613
|
+
validationId: ReleaseIdSchema,
|
|
614
|
+
kind: HarnessValidationPlanItemSchema.shape.kind,
|
|
615
|
+
status: z5.enum(["passed", "failed", "blocked", "skipped"]),
|
|
616
|
+
summary: BoundedTextSchema2,
|
|
617
|
+
evidenceRefs: z5.array(HarnessProposalEvidenceRefSchema).max(1e3),
|
|
618
|
+
createdAt: ReleaseTimestampSchema,
|
|
619
|
+
metadata: MetadataSchema2
|
|
620
|
+
}).strict();
|
|
621
|
+
var HarnessTargetedValidationReceiptSchema = HarnessTargetedValidationReceiptContentSchema.extend({
|
|
622
|
+
contentHash: ReleaseHashSchema
|
|
623
|
+
}).strict();
|
|
624
|
+
var HarnessAdvanceDecisionSchema = z5.enum([
|
|
625
|
+
"advanced",
|
|
626
|
+
"retained",
|
|
627
|
+
"conflict",
|
|
628
|
+
"rolled_back"
|
|
629
|
+
]);
|
|
630
|
+
var HarnessAdvanceReceiptContentSchema = z5.object({
|
|
631
|
+
schemaVersion: z5.literal("openpond.harnessAdvanceReceipt.v1"),
|
|
632
|
+
id: ReleaseIdSchema,
|
|
633
|
+
workspaceId: ReleaseIdSchema,
|
|
634
|
+
ownerScope: HarnessOwnerScopeSchema,
|
|
635
|
+
proposal: ImmutableReleaseRefSchema.nullable(),
|
|
636
|
+
expectedWorkspaceRevision: RevisionSchema,
|
|
637
|
+
observedWorkspaceRevision: RevisionSchema,
|
|
638
|
+
previousChannelRevision: RevisionSchema,
|
|
639
|
+
nextChannelRevision: RevisionSchema,
|
|
640
|
+
previousRelease: ImmutableReleaseRefSchema.nullable(),
|
|
641
|
+
nextRelease: ImmutableReleaseRefSchema.nullable(),
|
|
642
|
+
validationReceipts: z5.array(ImmutableReleaseRefSchema).max(100),
|
|
643
|
+
decision: HarnessAdvanceDecisionSchema,
|
|
644
|
+
reason: BoundedTextSchema2,
|
|
645
|
+
rollbackOf: ImmutableReleaseRefSchema.nullable(),
|
|
646
|
+
createdAt: ReleaseTimestampSchema,
|
|
647
|
+
metadata: MetadataSchema2
|
|
648
|
+
}).strict().superRefine((receipt, context) => {
|
|
649
|
+
const changed = receipt.nextChannelRevision === receipt.previousChannelRevision + 1;
|
|
650
|
+
if (["advanced", "rolled_back"].includes(receipt.decision) !== changed) {
|
|
651
|
+
context.addIssue({
|
|
652
|
+
code: "custom",
|
|
653
|
+
message: "only successful advancement or rollback increments the channel revision",
|
|
654
|
+
path: ["nextChannelRevision"]
|
|
655
|
+
});
|
|
656
|
+
}
|
|
657
|
+
if (receipt.decision === "rolled_back" && receipt.rollbackOf === null) {
|
|
658
|
+
context.addIssue({
|
|
659
|
+
code: "custom",
|
|
660
|
+
message: "rollback receipts require rollbackOf",
|
|
661
|
+
path: ["rollbackOf"]
|
|
662
|
+
});
|
|
663
|
+
}
|
|
664
|
+
if (receipt.decision !== "rolled_back" && receipt.rollbackOf !== null) {
|
|
665
|
+
context.addIssue({
|
|
666
|
+
code: "custom",
|
|
667
|
+
message: "rollbackOf is only valid for rollback receipts",
|
|
668
|
+
path: ["rollbackOf"]
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
});
|
|
672
|
+
var HarnessAdvanceReceiptSchema = HarnessAdvanceReceiptContentSchema.extend({
|
|
673
|
+
contentHash: ReleaseHashSchema
|
|
674
|
+
}).strict();
|
|
675
|
+
var HarnessOverlayMergeReceiptContentSchema = z5.object({
|
|
676
|
+
schemaVersion: z5.literal("openpond.harnessOverlayMergeReceipt.v1"),
|
|
677
|
+
id: ReleaseIdSchema,
|
|
678
|
+
workspaceId: ReleaseIdSchema,
|
|
679
|
+
baseHarnessRelease: ImmutableReleaseRefSchema,
|
|
680
|
+
leftOverlay: HarnessOverlaySnapshotRefSchema,
|
|
681
|
+
rightOverlay: HarnessOverlaySnapshotRefSchema,
|
|
682
|
+
decision: z5.enum(["merged", "conflict"]),
|
|
683
|
+
mergedOverlay: HarnessOverlaySnapshotRefSchema.nullable(),
|
|
684
|
+
conflictTargets: z5.array(z5.string().trim().min(1).max(2e3)).max(1e3),
|
|
685
|
+
requiresRevalidation: z5.literal(true),
|
|
686
|
+
createdAt: ReleaseTimestampSchema,
|
|
687
|
+
metadata: MetadataSchema2
|
|
688
|
+
}).strict().superRefine((receipt, context) => {
|
|
689
|
+
if (receipt.decision === "merged" !== (receipt.mergedOverlay !== null)) {
|
|
690
|
+
context.addIssue({
|
|
691
|
+
code: "custom",
|
|
692
|
+
message: "merged decisions require a merged overlay; conflicts cannot provide one",
|
|
693
|
+
path: ["mergedOverlay"]
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
if (receipt.decision === "conflict" !== receipt.conflictTargets.length > 0) {
|
|
697
|
+
context.addIssue({
|
|
698
|
+
code: "custom",
|
|
699
|
+
message: "conflict decisions require conflict targets and merged decisions cannot include them",
|
|
700
|
+
path: ["conflictTargets"]
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
});
|
|
704
|
+
var HarnessOverlayMergeReceiptSchema = HarnessOverlayMergeReceiptContentSchema.extend({
|
|
705
|
+
contentHash: ReleaseHashSchema
|
|
706
|
+
}).strict();
|
|
707
|
+
|
|
708
|
+
// ../harness/dist/harness-improvements.js
|
|
709
|
+
var BoundedTextSchema3 = z6.string().trim().min(1).max(1e5);
|
|
710
|
+
var MetadataSchema3 = z6.record(z6.string(), z6.unknown()).default({});
|
|
711
|
+
var ImprovementSafeBoundaryKindSchema = z6.enum([
|
|
712
|
+
"completed_tool_batch",
|
|
713
|
+
"before_model_step",
|
|
714
|
+
"turn_completed",
|
|
715
|
+
"turn_paused"
|
|
716
|
+
]);
|
|
717
|
+
var ImprovementSafeBoundarySchema = z6.object({
|
|
718
|
+
kind: ImprovementSafeBoundaryKindSchema,
|
|
719
|
+
eventSequence: z6.number().int().nonnegative(),
|
|
720
|
+
occurredAt: ReleaseTimestampSchema
|
|
721
|
+
}).strict();
|
|
722
|
+
var ImprovementEventRefSchema = z6.object({
|
|
723
|
+
id: ReleaseIdSchema,
|
|
724
|
+
sequence: z6.number().int().nonnegative().nullable(),
|
|
725
|
+
contentHash: ReleaseHashSchema
|
|
726
|
+
}).strict();
|
|
727
|
+
var ImprovementObservationKindSchema = z6.enum([
|
|
728
|
+
"tool_failure",
|
|
729
|
+
"retry",
|
|
730
|
+
"recovery",
|
|
731
|
+
"validation",
|
|
732
|
+
"user_turn",
|
|
733
|
+
"reusable_success",
|
|
734
|
+
"completion_detour"
|
|
735
|
+
]);
|
|
736
|
+
var ImprovementObservationStateSchema = z6.enum([
|
|
737
|
+
"open",
|
|
738
|
+
"recovered",
|
|
739
|
+
"terminal"
|
|
740
|
+
]);
|
|
741
|
+
var ImprovementToolIdentitySchema = z6.object({
|
|
742
|
+
name: z6.string().trim().min(1).max(500),
|
|
743
|
+
invocationKey: ReleaseHashSchema
|
|
744
|
+
}).strict();
|
|
745
|
+
var ImprovementObservationContentSchema = z6.object({
|
|
746
|
+
schemaVersion: z6.literal("openpond.improvementObservation.v1"),
|
|
747
|
+
id: ReleaseIdSchema,
|
|
748
|
+
runRef: ReleaseIdSchema,
|
|
749
|
+
turnId: ReleaseIdSchema,
|
|
750
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
751
|
+
overlay: HarnessOverlaySnapshotRefSchema.nullable(),
|
|
752
|
+
eventRefs: z6.array(ImprovementEventRefSchema).min(1).max(100),
|
|
753
|
+
kind: ImprovementObservationKindSchema,
|
|
754
|
+
state: ImprovementObservationStateSchema,
|
|
755
|
+
tool: ImprovementToolIdentitySchema.nullable(),
|
|
756
|
+
deterministicClass: z6.string().trim().min(1).max(500).nullable(),
|
|
757
|
+
summary: BoundedTextSchema3,
|
|
758
|
+
createdAt: ReleaseTimestampSchema,
|
|
759
|
+
metadata: MetadataSchema3
|
|
760
|
+
}).strict().superRefine((observation, context) => {
|
|
761
|
+
if (new Set(observation.eventRefs.map((reference) => reference.id)).size !== observation.eventRefs.length) {
|
|
762
|
+
context.addIssue({
|
|
763
|
+
code: "custom",
|
|
764
|
+
message: "observation event refs must be unique",
|
|
765
|
+
path: ["eventRefs"]
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
if (["tool_failure", "retry", "recovery", "completion_detour"].includes(observation.kind) && observation.tool === null) {
|
|
769
|
+
context.addIssue({
|
|
770
|
+
code: "custom",
|
|
771
|
+
message: `${observation.kind} observations require a tool identity`,
|
|
772
|
+
path: ["tool"]
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
});
|
|
776
|
+
var ImprovementObservationSchema = ImprovementObservationContentSchema.extend({
|
|
777
|
+
contentHash: ReleaseHashSchema
|
|
778
|
+
}).strict();
|
|
779
|
+
var RefinementTriggerPolicySchema = z6.object({
|
|
780
|
+
schemaVersion: z6.literal("openpond.refinementTriggerPolicy.v1"),
|
|
781
|
+
maxEstimatedCostUsd: z6.number().finite().nonnegative(),
|
|
782
|
+
cooldownMs: z6.number().int().nonnegative(),
|
|
783
|
+
maxPendingPlans: z6.number().int().min(1).max(100),
|
|
784
|
+
maxEvidenceEvents: z6.number().int().min(1).max(1e3),
|
|
785
|
+
maxProposalEdits: z6.number().int().min(1).max(1e3),
|
|
786
|
+
maxProposalBytes: z6.number().int().min(1).max(1e7)
|
|
787
|
+
}).strict();
|
|
788
|
+
var RefinementTriggerDecisionKindSchema = z6.enum([
|
|
789
|
+
"no_action",
|
|
790
|
+
"route_deterministically",
|
|
791
|
+
"queue_refiner"
|
|
792
|
+
]);
|
|
793
|
+
var RefinementTriggerDecisionContentSchema = z6.object({
|
|
794
|
+
schemaVersion: z6.literal("openpond.refinementTriggerDecision.v1"),
|
|
795
|
+
id: ReleaseIdSchema,
|
|
796
|
+
runRef: ReleaseIdSchema,
|
|
797
|
+
turnId: ReleaseIdSchema,
|
|
798
|
+
harnessRelease: ImmutableReleaseRefSchema,
|
|
799
|
+
overlay: HarnessOverlaySnapshotRefSchema.nullable(),
|
|
800
|
+
observations: z6.array(ImmutableReleaseRefSchema).max(100),
|
|
801
|
+
decision: RefinementTriggerDecisionKindSchema,
|
|
802
|
+
deterministicRoute: HarnessImprovementRouteSchema.nullable(),
|
|
803
|
+
suggestedRoutes: z6.array(HarnessImprovementRouteSchema).max(8),
|
|
804
|
+
reason: BoundedTextSchema3,
|
|
805
|
+
deduplicationKey: ReleaseHashSchema,
|
|
806
|
+
policy: RefinementTriggerPolicySchema,
|
|
807
|
+
estimatedMaxCostUsd: z6.number().finite().nonnegative(),
|
|
808
|
+
pendingPlanCount: z6.number().int().nonnegative(),
|
|
809
|
+
boundary: ImprovementSafeBoundarySchema,
|
|
810
|
+
cooldownUntil: ReleaseTimestampSchema.nullable(),
|
|
811
|
+
createdAt: ReleaseTimestampSchema,
|
|
812
|
+
metadata: MetadataSchema3
|
|
813
|
+
}).strict().superRefine((trigger, context) => {
|
|
814
|
+
if (trigger.estimatedMaxCostUsd > trigger.policy.maxEstimatedCostUsd) {
|
|
815
|
+
context.addIssue({
|
|
816
|
+
code: "custom",
|
|
817
|
+
message: "estimated Refiner cost exceeds the trigger policy budget",
|
|
818
|
+
path: ["estimatedMaxCostUsd"]
|
|
819
|
+
});
|
|
820
|
+
}
|
|
821
|
+
if (trigger.pendingPlanCount > trigger.policy.maxPendingPlans) {
|
|
822
|
+
context.addIssue({
|
|
823
|
+
code: "custom",
|
|
824
|
+
message: "pending plan count exceeds the trigger policy limit",
|
|
825
|
+
path: ["pendingPlanCount"]
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
if (trigger.observations.length > trigger.policy.maxEvidenceEvents) {
|
|
829
|
+
context.addIssue({
|
|
830
|
+
code: "custom",
|
|
831
|
+
message: "trigger observations exceed the evidence budget",
|
|
832
|
+
path: ["observations"]
|
|
833
|
+
});
|
|
834
|
+
}
|
|
835
|
+
if (trigger.decision === "route_deterministically" && trigger.deterministicRoute === null) {
|
|
836
|
+
context.addIssue({
|
|
837
|
+
code: "custom",
|
|
838
|
+
message: "deterministic decisions require a route",
|
|
839
|
+
path: ["deterministicRoute"]
|
|
840
|
+
});
|
|
841
|
+
}
|
|
842
|
+
if (trigger.decision !== "route_deterministically" && trigger.deterministicRoute !== null) {
|
|
843
|
+
context.addIssue({
|
|
844
|
+
code: "custom",
|
|
845
|
+
message: "only deterministic decisions may declare a deterministic route",
|
|
846
|
+
path: ["deterministicRoute"]
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
if (trigger.decision === "no_action" && trigger.suggestedRoutes.length > 0) {
|
|
850
|
+
context.addIssue({
|
|
851
|
+
code: "custom",
|
|
852
|
+
message: "no-action decisions cannot suggest routes",
|
|
853
|
+
path: ["suggestedRoutes"]
|
|
854
|
+
});
|
|
855
|
+
}
|
|
856
|
+
if (trigger.decision !== "no_action" && trigger.observations.length === 0) {
|
|
857
|
+
context.addIssue({
|
|
858
|
+
code: "custom",
|
|
859
|
+
message: "actionable trigger decisions require observations",
|
|
860
|
+
path: ["observations"]
|
|
861
|
+
});
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
var RefinementTriggerDecisionSchema = RefinementTriggerDecisionContentSchema.extend({
|
|
865
|
+
contentHash: ReleaseHashSchema
|
|
866
|
+
}).strict();
|
|
867
|
+
var ImprovementRouteAuthoritySchema = z6.enum([
|
|
868
|
+
"runtime_service",
|
|
869
|
+
"refiner_model",
|
|
870
|
+
"human_review",
|
|
871
|
+
"evaluation_system",
|
|
872
|
+
"training_system"
|
|
873
|
+
]);
|
|
874
|
+
var ImprovementRouteDecisionContentSchema = z6.object({
|
|
875
|
+
schemaVersion: z6.literal("openpond.improvementRouteDecision.v1"),
|
|
876
|
+
id: ReleaseIdSchema,
|
|
877
|
+
trigger: ImmutableReleaseRefSchema,
|
|
878
|
+
route: HarnessImprovementRouteSchema,
|
|
879
|
+
authority: ImprovementRouteAuthoritySchema,
|
|
880
|
+
automatic: z6.boolean(),
|
|
881
|
+
reason: BoundedTextSchema3,
|
|
882
|
+
createdAt: ReleaseTimestampSchema,
|
|
883
|
+
metadata: MetadataSchema3
|
|
884
|
+
}).strict().superRefine((decision, context) => {
|
|
885
|
+
if (decision.automatic && ["human_review", "evaluation_system", "training_system"].includes(decision.authority)) {
|
|
886
|
+
context.addIssue({
|
|
887
|
+
code: "custom",
|
|
888
|
+
message: `${decision.authority} routes cannot be marked automatic`,
|
|
889
|
+
path: ["automatic"]
|
|
890
|
+
});
|
|
891
|
+
}
|
|
892
|
+
if (decision.route === "training" && decision.automatic && decision.authority !== "training_system") {
|
|
893
|
+
context.addIssue({
|
|
894
|
+
code: "custom",
|
|
895
|
+
message: "automatic training routes require training-system authority",
|
|
896
|
+
path: ["authority"]
|
|
897
|
+
});
|
|
898
|
+
}
|
|
899
|
+
});
|
|
900
|
+
var ImprovementRouteDecisionSchema = ImprovementRouteDecisionContentSchema.extend({
|
|
901
|
+
contentHash: ReleaseHashSchema
|
|
902
|
+
}).strict();
|
|
903
|
+
var HarnessRefinerOutcomeContentSchema = z6.object({
|
|
904
|
+
schemaVersion: z6.literal("openpond.harnessRefinerOutcome.v1"),
|
|
905
|
+
id: ReleaseIdSchema,
|
|
906
|
+
trigger: ImmutableReleaseRefSchema,
|
|
907
|
+
decision: z6.enum(["no_action", "proposed"]),
|
|
908
|
+
proposal: ImmutableReleaseRefSchema.nullable(),
|
|
909
|
+
reason: BoundedTextSchema3,
|
|
910
|
+
evidenceRefs: z6.array(ImmutableReleaseRefSchema).max(100),
|
|
911
|
+
estimatedCostUsd: z6.number().finite().nonnegative(),
|
|
912
|
+
createdAt: ReleaseTimestampSchema,
|
|
913
|
+
metadata: MetadataSchema3
|
|
914
|
+
}).strict().superRefine((outcome, context) => {
|
|
915
|
+
if (outcome.decision === "proposed" !== (outcome.proposal !== null)) {
|
|
916
|
+
context.addIssue({
|
|
917
|
+
code: "custom",
|
|
918
|
+
message: "proposed Refiner outcomes require a proposal; no-action outcomes cannot include one",
|
|
919
|
+
path: ["proposal"]
|
|
920
|
+
});
|
|
921
|
+
}
|
|
922
|
+
});
|
|
923
|
+
var HarnessRefinerOutcomeSchema = HarnessRefinerOutcomeContentSchema.extend({
|
|
924
|
+
contentHash: ReleaseHashSchema
|
|
925
|
+
}).strict();
|
|
926
|
+
var ImprovementApplyDecisionSchema = z6.enum([
|
|
927
|
+
"applied",
|
|
928
|
+
"retained",
|
|
929
|
+
"declined",
|
|
930
|
+
"conflict",
|
|
931
|
+
"rolled_back"
|
|
932
|
+
]);
|
|
933
|
+
var ImprovementApplyReceiptContentSchema = z6.object({
|
|
934
|
+
schemaVersion: z6.literal("openpond.improvementApplyReceipt.v1"),
|
|
935
|
+
id: ReleaseIdSchema,
|
|
936
|
+
proposal: ImmutableReleaseRefSchema,
|
|
937
|
+
beforeOverlay: HarnessOverlaySnapshotRefSchema,
|
|
938
|
+
afterOverlay: HarnessOverlaySnapshotRefSchema.nullable(),
|
|
939
|
+
decision: ImprovementApplyDecisionSchema,
|
|
940
|
+
boundary: ImprovementSafeBoundarySchema,
|
|
941
|
+
validationRefs: z6.array(ImmutableReleaseRefSchema).max(100),
|
|
942
|
+
outcomeEvidenceRefs: z6.array(ImprovementEventRefSchema).max(1e3),
|
|
943
|
+
rollbackOf: ImmutableReleaseRefSchema.nullable(),
|
|
944
|
+
createdAt: ReleaseTimestampSchema,
|
|
945
|
+
metadata: MetadataSchema3
|
|
946
|
+
}).strict().superRefine((receipt, context) => {
|
|
947
|
+
if (receipt.decision === "applied" !== (receipt.afterOverlay !== null)) {
|
|
948
|
+
context.addIssue({
|
|
949
|
+
code: "custom",
|
|
950
|
+
message: "applied receipts require an after-overlay; other decisions cannot include one",
|
|
951
|
+
path: ["afterOverlay"]
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
if (receipt.decision === "rolled_back" !== (receipt.rollbackOf !== null)) {
|
|
955
|
+
context.addIssue({
|
|
956
|
+
code: "custom",
|
|
957
|
+
message: "only rollback receipts require rollbackOf",
|
|
958
|
+
path: ["rollbackOf"]
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
});
|
|
962
|
+
var ImprovementApplyReceiptSchema = ImprovementApplyReceiptContentSchema.extend({
|
|
963
|
+
contentHash: ReleaseHashSchema
|
|
964
|
+
}).strict();
|
|
965
|
+
|
|
966
|
+
// ../harness/dist/refinement-lifecycle.js
|
|
967
|
+
import { z as z7 } from "zod";
|
|
968
|
+
var ShortTextSchema = z7.string().trim().min(1).max(2e3);
|
|
969
|
+
var BoundedTextSchema4 = z7.string().trim().min(1).max(1e5);
|
|
970
|
+
var HarnessRefinerOperationSchema = z7.enum(["create", "update", "delete"]);
|
|
971
|
+
var HarnessRefinerInternalRouteSchema = z7.enum([
|
|
972
|
+
"memory",
|
|
973
|
+
"prompt",
|
|
974
|
+
"skill",
|
|
975
|
+
"agent"
|
|
976
|
+
]);
|
|
977
|
+
var HarnessRefinerExternalRouteSchema = z7.enum([
|
|
978
|
+
"runtime",
|
|
979
|
+
"product",
|
|
980
|
+
"taskset",
|
|
981
|
+
"training"
|
|
982
|
+
]);
|
|
983
|
+
var HarnessRefinerActivityResultSchema = z7.enum([
|
|
984
|
+
"no_action",
|
|
985
|
+
"routed",
|
|
986
|
+
"applied",
|
|
987
|
+
"retained",
|
|
988
|
+
"failed"
|
|
989
|
+
]);
|
|
990
|
+
var HarnessRefinerCritiqueStatusSchema = z7.enum([
|
|
991
|
+
"not_applicable",
|
|
992
|
+
"pending",
|
|
993
|
+
"passed",
|
|
994
|
+
"rejected",
|
|
995
|
+
"failed"
|
|
996
|
+
]);
|
|
997
|
+
var HarnessRefinerValidationStatusSchema = z7.enum([
|
|
998
|
+
"not_applicable",
|
|
999
|
+
"pending",
|
|
1000
|
+
"passed",
|
|
1001
|
+
"failed"
|
|
1002
|
+
]);
|
|
1003
|
+
var HarnessRefinerActivityReceiptContentSchema = z7.object({
|
|
1004
|
+
schemaVersion: z7.literal("openpond.harnessRefinerActivityReceipt.v1"),
|
|
1005
|
+
id: ReleaseIdSchema,
|
|
1006
|
+
runRef: ReleaseIdSchema,
|
|
1007
|
+
turnId: ReleaseIdSchema,
|
|
1008
|
+
result: HarnessRefinerActivityResultSchema,
|
|
1009
|
+
decision: z7.enum(["no_action", "route", "propose"]).nullable(),
|
|
1010
|
+
route: HarnessImprovementRouteSchema.nullable(),
|
|
1011
|
+
operation: HarnessRefinerOperationSchema.nullable(),
|
|
1012
|
+
target: z7.string().trim().min(1).max(2e3).nullable(),
|
|
1013
|
+
summary: ShortTextSchema,
|
|
1014
|
+
evidenceBasis: HarnessRefinerEvidenceBasisSchema.nullable(),
|
|
1015
|
+
critiqueStatus: HarnessRefinerCritiqueStatusSchema,
|
|
1016
|
+
validationStatus: HarnessRefinerValidationStatusSchema,
|
|
1017
|
+
trigger: ImmutableReleaseRefSchema,
|
|
1018
|
+
outcome: ImmutableReleaseRefSchema.nullable(),
|
|
1019
|
+
proposal: ImmutableReleaseRefSchema.nullable(),
|
|
1020
|
+
applyReceipt: ImmutableReleaseRefSchema.nullable(),
|
|
1021
|
+
inputHarness: ImmutableReleaseRefSchema,
|
|
1022
|
+
outputHarness: ImmutableReleaseRefSchema.nullable(),
|
|
1023
|
+
createdAt: ReleaseTimestampSchema
|
|
1024
|
+
}).strict().superRefine((receipt, context) => {
|
|
1025
|
+
const proposalResult = receipt.result === "applied" || receipt.result === "retained";
|
|
1026
|
+
if (receipt.result === "no_action") {
|
|
1027
|
+
requireFields(context, receipt, {
|
|
1028
|
+
decision: "no_action",
|
|
1029
|
+
route: null,
|
|
1030
|
+
operation: null,
|
|
1031
|
+
target: null,
|
|
1032
|
+
evidenceBasis: null,
|
|
1033
|
+
proposal: null,
|
|
1034
|
+
applyReceipt: null,
|
|
1035
|
+
outputHarness: null,
|
|
1036
|
+
critiqueStatus: "not_applicable",
|
|
1037
|
+
validationStatus: "not_applicable"
|
|
1038
|
+
});
|
|
1039
|
+
} else if (receipt.result === "routed") {
|
|
1040
|
+
if (receipt.decision !== "route" || !HarnessRefinerExternalRouteSchema.safeParse(receipt.route).success || receipt.operation !== null || receipt.target !== null || receipt.evidenceBasis === null || receipt.proposal !== null || receipt.applyReceipt !== null || receipt.outputHarness !== null) {
|
|
1041
|
+
context.addIssue({
|
|
1042
|
+
code: "custom",
|
|
1043
|
+
message: "routed activity requires an external route and evidence basis without proposal state"
|
|
1044
|
+
});
|
|
1045
|
+
}
|
|
1046
|
+
requireFields(context, receipt, {
|
|
1047
|
+
critiqueStatus: "not_applicable",
|
|
1048
|
+
validationStatus: "not_applicable"
|
|
1049
|
+
});
|
|
1050
|
+
} else if (proposalResult) {
|
|
1051
|
+
if (receipt.decision !== "propose" || !HarnessRefinerInternalRouteSchema.safeParse(receipt.route).success || receipt.operation === null || receipt.target === null || receipt.evidenceBasis === null || receipt.proposal === null || receipt.applyReceipt === null) {
|
|
1052
|
+
context.addIssue({
|
|
1053
|
+
code: "custom",
|
|
1054
|
+
message: "applied and retained activity requires complete proposal state"
|
|
1055
|
+
});
|
|
1056
|
+
}
|
|
1057
|
+
if (receipt.result === "applied" && receipt.outputHarness === null) {
|
|
1058
|
+
context.addIssue({
|
|
1059
|
+
code: "custom",
|
|
1060
|
+
message: "applied activity requires the advanced Harness release",
|
|
1061
|
+
path: ["outputHarness"]
|
|
1062
|
+
});
|
|
1063
|
+
}
|
|
1064
|
+
if (receipt.result === "applied" && (receipt.critiqueStatus !== "passed" || receipt.validationStatus !== "passed")) {
|
|
1065
|
+
context.addIssue({
|
|
1066
|
+
code: "custom",
|
|
1067
|
+
message: "applied activity requires passed critique and validation"
|
|
1068
|
+
});
|
|
1069
|
+
}
|
|
1070
|
+
if (receipt.result === "retained" && receipt.outputHarness !== null) {
|
|
1071
|
+
context.addIssue({
|
|
1072
|
+
code: "custom",
|
|
1073
|
+
message: "retained activity cannot report a new Harness release",
|
|
1074
|
+
path: ["outputHarness"]
|
|
1075
|
+
});
|
|
1076
|
+
}
|
|
1077
|
+
} else if (receipt.decision !== null || receipt.route !== null || receipt.operation !== null || receipt.target !== null || receipt.evidenceBasis !== null || receipt.outcome !== null || receipt.proposal !== null || receipt.applyReceipt !== null || receipt.outputHarness !== null) {
|
|
1078
|
+
context.addIssue({
|
|
1079
|
+
code: "custom",
|
|
1080
|
+
message: "failed activity cannot claim a decision, route, proposal, or release transition"
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
if (receipt.result !== "failed" && receipt.outcome === null) {
|
|
1084
|
+
context.addIssue({
|
|
1085
|
+
code: "custom",
|
|
1086
|
+
message: "terminal Refiner decisions require an outcome reference",
|
|
1087
|
+
path: ["outcome"]
|
|
1088
|
+
});
|
|
1089
|
+
}
|
|
1090
|
+
});
|
|
1091
|
+
var HarnessRefinerActivityReceiptSchema = HarnessRefinerActivityReceiptContentSchema.extend({
|
|
1092
|
+
contentHash: ReleaseHashSchema
|
|
1093
|
+
}).strict();
|
|
1094
|
+
var HarnessRefinementCandidateStatusSchema = z7.enum([
|
|
1095
|
+
"unresolved",
|
|
1096
|
+
"confirmed",
|
|
1097
|
+
"resolved",
|
|
1098
|
+
"rejected",
|
|
1099
|
+
"expired"
|
|
1100
|
+
]);
|
|
1101
|
+
var HarnessRefinementCandidateResolutionSchema = z7.object({
|
|
1102
|
+
kind: z7.enum([
|
|
1103
|
+
"applied_change",
|
|
1104
|
+
"later_success",
|
|
1105
|
+
"manual_rejection",
|
|
1106
|
+
"source_revoked",
|
|
1107
|
+
"expired"
|
|
1108
|
+
]),
|
|
1109
|
+
reason: BoundedTextSchema4,
|
|
1110
|
+
evidenceRefs: z7.array(ImmutableReleaseRefSchema).max(1e3),
|
|
1111
|
+
resolvedAt: ReleaseTimestampSchema
|
|
1112
|
+
}).strict();
|
|
1113
|
+
var HarnessRefinementCandidateContentSchema = z7.object({
|
|
1114
|
+
schemaVersion: z7.literal("openpond.harnessRefinementCandidate.v1"),
|
|
1115
|
+
id: ReleaseIdSchema,
|
|
1116
|
+
ownerScope: HarnessReviewOwnerScopeSchema,
|
|
1117
|
+
workspaceRef: ReleaseIdSchema,
|
|
1118
|
+
fingerprint: ReleaseHashSchema,
|
|
1119
|
+
recurrenceFamily: z7.string().trim().min(1).max(1e3),
|
|
1120
|
+
statement: BoundedTextSchema4,
|
|
1121
|
+
status: HarnessRefinementCandidateStatusSchema,
|
|
1122
|
+
occurrences: z7.array(HarnessReviewEvidenceRefSchema).max(1e3),
|
|
1123
|
+
counterevidence: z7.array(HarnessReviewEvidenceRefSchema).max(1e3),
|
|
1124
|
+
sourceReviews: z7.array(ImmutableReleaseRefSchema).min(1).max(100),
|
|
1125
|
+
relatedHarnessReleases: z7.array(ImmutableReleaseRefSchema).max(100),
|
|
1126
|
+
firstSeenAt: ReleaseTimestampSchema,
|
|
1127
|
+
lastSeenAt: ReleaseTimestampSchema,
|
|
1128
|
+
lastReviewedAt: ReleaseTimestampSchema,
|
|
1129
|
+
expiresAt: ReleaseTimestampSchema,
|
|
1130
|
+
resolution: HarnessRefinementCandidateResolutionSchema.nullable(),
|
|
1131
|
+
createdAt: ReleaseTimestampSchema,
|
|
1132
|
+
updatedAt: ReleaseTimestampSchema
|
|
1133
|
+
}).strict().superRefine((candidate, context) => {
|
|
1134
|
+
requireUniqueRefs(context, candidate.occurrences, "occurrences");
|
|
1135
|
+
requireUniqueRefs(context, candidate.counterevidence, "counterevidence");
|
|
1136
|
+
requireUniqueRefs(context, candidate.sourceReviews, "sourceReviews");
|
|
1137
|
+
requireUniqueRefs(context, candidate.relatedHarnessReleases, "relatedHarnessReleases");
|
|
1138
|
+
const supportingKeys = new Set(candidate.occurrences.map((item) => item.occurrenceKey));
|
|
1139
|
+
if (candidate.counterevidence.some((item) => supportingKeys.has(item.occurrenceKey))) {
|
|
1140
|
+
context.addIssue({
|
|
1141
|
+
code: "custom",
|
|
1142
|
+
message: "supporting occurrences and counterevidence must be disjoint",
|
|
1143
|
+
path: ["counterevidence"]
|
|
1144
|
+
});
|
|
1145
|
+
}
|
|
1146
|
+
const actionable = candidate.status === "unresolved" || candidate.status === "confirmed";
|
|
1147
|
+
if (actionable && candidate.occurrences.length === 0) {
|
|
1148
|
+
context.addIssue({
|
|
1149
|
+
code: "custom",
|
|
1150
|
+
message: "actionable candidates require at least one supporting occurrence",
|
|
1151
|
+
path: ["occurrences"]
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
if (actionable && [...candidate.occurrences, ...candidate.counterevidence].some((item) => item.sourcePolicy.state !== "authorized")) {
|
|
1155
|
+
context.addIssue({
|
|
1156
|
+
code: "custom",
|
|
1157
|
+
message: "actionable candidates may contain only currently authorized evidence",
|
|
1158
|
+
path: ["occurrences"]
|
|
1159
|
+
});
|
|
1160
|
+
}
|
|
1161
|
+
if (actionable !== (candidate.resolution === null)) {
|
|
1162
|
+
context.addIssue({
|
|
1163
|
+
code: "custom",
|
|
1164
|
+
message: "only resolved, rejected, or expired candidates require a resolution",
|
|
1165
|
+
path: ["resolution"]
|
|
1166
|
+
});
|
|
1167
|
+
}
|
|
1168
|
+
if (candidate.status === "expired" && candidate.resolution?.kind !== "expired") {
|
|
1169
|
+
context.addIssue({
|
|
1170
|
+
code: "custom",
|
|
1171
|
+
message: "expired candidates require an expired resolution",
|
|
1172
|
+
path: ["resolution", "kind"]
|
|
1173
|
+
});
|
|
1174
|
+
}
|
|
1175
|
+
if (candidate.status === "rejected" && candidate.resolution && !["manual_rejection", "source_revoked"].includes(candidate.resolution.kind)) {
|
|
1176
|
+
context.addIssue({
|
|
1177
|
+
code: "custom",
|
|
1178
|
+
message: "rejected candidates require a rejection or revocation resolution",
|
|
1179
|
+
path: ["resolution", "kind"]
|
|
1180
|
+
});
|
|
1181
|
+
}
|
|
1182
|
+
if (candidate.status === "resolved" && candidate.resolution && !["applied_change", "later_success"].includes(candidate.resolution.kind)) {
|
|
1183
|
+
context.addIssue({
|
|
1184
|
+
code: "custom",
|
|
1185
|
+
message: "resolved candidates require applied-change or later-success evidence",
|
|
1186
|
+
path: ["resolution", "kind"]
|
|
1187
|
+
});
|
|
1188
|
+
}
|
|
1189
|
+
requireChronology(context, candidate);
|
|
1190
|
+
});
|
|
1191
|
+
var HarnessRefinementCandidateSchema = HarnessRefinementCandidateContentSchema.extend({
|
|
1192
|
+
contentHash: ReleaseHashSchema
|
|
1193
|
+
}).strict();
|
|
1194
|
+
var HarnessRefinementCandidateLifecycleDecisionSchema = z7.enum([
|
|
1195
|
+
"created",
|
|
1196
|
+
"merged",
|
|
1197
|
+
"rejected",
|
|
1198
|
+
"expired",
|
|
1199
|
+
"reopened",
|
|
1200
|
+
"resolved"
|
|
1201
|
+
]);
|
|
1202
|
+
var HarnessRefinementCandidateLifecycleReceiptContentSchema = z7.object({
|
|
1203
|
+
schemaVersion: z7.literal("openpond.harnessRefinementCandidateLifecycleReceipt.v1"),
|
|
1204
|
+
id: ReleaseIdSchema,
|
|
1205
|
+
candidateId: ReleaseIdSchema,
|
|
1206
|
+
decision: HarnessRefinementCandidateLifecycleDecisionSchema,
|
|
1207
|
+
beforeCandidate: ImmutableReleaseRefSchema.nullable(),
|
|
1208
|
+
afterCandidate: ImmutableReleaseRefSchema,
|
|
1209
|
+
review: ImmutableReleaseRefSchema,
|
|
1210
|
+
addedEvidence: z7.array(HarnessReviewEvidenceRefSchema).max(1e3),
|
|
1211
|
+
removedEvidence: z7.array(ImmutableReleaseRefSchema).max(1e3),
|
|
1212
|
+
reason: BoundedTextSchema4,
|
|
1213
|
+
createdAt: ReleaseTimestampSchema
|
|
1214
|
+
}).strict().superRefine((receipt, context) => {
|
|
1215
|
+
if (receipt.decision === "created" !== (receipt.beforeCandidate === null)) {
|
|
1216
|
+
context.addIssue({
|
|
1217
|
+
code: "custom",
|
|
1218
|
+
message: "only candidate creation omits the previous candidate reference",
|
|
1219
|
+
path: ["beforeCandidate"]
|
|
1220
|
+
});
|
|
1221
|
+
}
|
|
1222
|
+
if (receipt.beforeCandidate && receipt.beforeCandidate.contentHash === receipt.afterCandidate.contentHash) {
|
|
1223
|
+
context.addIssue({
|
|
1224
|
+
code: "custom",
|
|
1225
|
+
message: "candidate lifecycle transitions must change candidate content",
|
|
1226
|
+
path: ["afterCandidate"]
|
|
1227
|
+
});
|
|
1228
|
+
}
|
|
1229
|
+
if (["created", "reopened"].includes(receipt.decision) && receipt.addedEvidence.length === 0) {
|
|
1230
|
+
context.addIssue({
|
|
1231
|
+
code: "custom",
|
|
1232
|
+
message: `${receipt.decision} candidate transitions require added evidence`,
|
|
1233
|
+
path: ["addedEvidence"]
|
|
1234
|
+
});
|
|
1235
|
+
}
|
|
1236
|
+
if (receipt.addedEvidence.some((item) => item.sourcePolicy.state !== "authorized")) {
|
|
1237
|
+
context.addIssue({
|
|
1238
|
+
code: "custom",
|
|
1239
|
+
message: "candidate transitions may add only authorized evidence",
|
|
1240
|
+
path: ["addedEvidence"]
|
|
1241
|
+
});
|
|
1242
|
+
}
|
|
1243
|
+
requireUniqueRefs(context, receipt.addedEvidence, "addedEvidence");
|
|
1244
|
+
requireUniqueRefs(context, receipt.removedEvidence, "removedEvidence");
|
|
1245
|
+
const removedKeys = new Set(receipt.removedEvidence.map((item) => refKey(item)));
|
|
1246
|
+
if (receipt.addedEvidence.some((item) => removedKeys.has(refKey(item.evidence)))) {
|
|
1247
|
+
context.addIssue({
|
|
1248
|
+
code: "custom",
|
|
1249
|
+
message: "candidate lifecycle evidence cannot be added and removed together",
|
|
1250
|
+
path: ["removedEvidence"]
|
|
1251
|
+
});
|
|
1252
|
+
}
|
|
1253
|
+
});
|
|
1254
|
+
var HarnessRefinementCandidateLifecycleReceiptSchema = HarnessRefinementCandidateLifecycleReceiptContentSchema.extend({
|
|
1255
|
+
contentHash: ReleaseHashSchema
|
|
1256
|
+
}).strict();
|
|
1257
|
+
var HarnessCrossRunRefinementRequestContentSchema = z7.object({
|
|
1258
|
+
schemaVersion: z7.literal("openpond.harnessCrossRunRefinementRequest.v1"),
|
|
1259
|
+
id: ReleaseIdSchema,
|
|
1260
|
+
ownerScope: HarnessReviewOwnerScopeSchema,
|
|
1261
|
+
workspaceRef: ReleaseIdSchema,
|
|
1262
|
+
candidate: ImmutableReleaseRefSchema,
|
|
1263
|
+
candidateFingerprint: ReleaseHashSchema,
|
|
1264
|
+
review: ImmutableReleaseRefSchema,
|
|
1265
|
+
admittedHarness: ImmutableReleaseRefSchema,
|
|
1266
|
+
evidence: z7.array(HarnessReviewEvidenceRefSchema).min(1).max(1e3),
|
|
1267
|
+
capabilities: HarnessRefinerCapabilitiesSchema,
|
|
1268
|
+
deduplicationKey: ReleaseHashSchema,
|
|
1269
|
+
createdAt: ReleaseTimestampSchema
|
|
1270
|
+
}).strict().superRefine((request, context) => {
|
|
1271
|
+
if (request.evidence.some((item) => item.sourcePolicy.state !== "authorized")) {
|
|
1272
|
+
context.addIssue({
|
|
1273
|
+
code: "custom",
|
|
1274
|
+
message: "cross-run refinement requires currently authorized evidence",
|
|
1275
|
+
path: ["evidence"]
|
|
1276
|
+
});
|
|
1277
|
+
}
|
|
1278
|
+
requireUniqueRefs(context, request.evidence, "evidence");
|
|
1279
|
+
if (!Object.values(request.capabilities).some(Boolean)) {
|
|
1280
|
+
context.addIssue({
|
|
1281
|
+
code: "custom",
|
|
1282
|
+
message: "cross-run refinement requires at least one available Harness capability",
|
|
1283
|
+
path: ["capabilities"]
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
1286
|
+
const expected = harnessCrossRunRefinementDeduplicationKey(request);
|
|
1287
|
+
if (request.deduplicationKey !== expected) {
|
|
1288
|
+
context.addIssue({
|
|
1289
|
+
code: "custom",
|
|
1290
|
+
message: `cross-run refinement deduplicationKey is ${request.deduplicationKey}; expected ${expected}`,
|
|
1291
|
+
path: ["deduplicationKey"]
|
|
1292
|
+
});
|
|
1293
|
+
}
|
|
1294
|
+
});
|
|
1295
|
+
var HarnessCrossRunRefinementRequestSchema = HarnessCrossRunRefinementRequestContentSchema.extend({
|
|
1296
|
+
contentHash: ReleaseHashSchema
|
|
1297
|
+
}).strict();
|
|
1298
|
+
function harnessCrossRunRefinementDeduplicationKey(input) {
|
|
1299
|
+
return contentHash({
|
|
1300
|
+
schemaVersion: "openpond.harnessCrossRunRefinementIdentity.v1",
|
|
1301
|
+
workspaceRef: input.workspaceRef,
|
|
1302
|
+
candidateFingerprint: input.candidateFingerprint,
|
|
1303
|
+
admittedHarness: input.admittedHarness
|
|
1304
|
+
});
|
|
1305
|
+
}
|
|
1306
|
+
function requireFields(context, value, expected) {
|
|
1307
|
+
for (const [key, expectedValue] of Object.entries(expected)) {
|
|
1308
|
+
if (value[key] === expectedValue)
|
|
1309
|
+
continue;
|
|
1310
|
+
context.addIssue({
|
|
1311
|
+
code: "custom",
|
|
1312
|
+
message: `${key} must be ${String(expectedValue)}`,
|
|
1313
|
+
path: [key]
|
|
1314
|
+
});
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
function requireUniqueRefs(context, values, path) {
|
|
1318
|
+
const keys = values.map((value) => refKey(value));
|
|
1319
|
+
if (new Set(keys).size === keys.length)
|
|
1320
|
+
return;
|
|
1321
|
+
context.addIssue({
|
|
1322
|
+
code: "custom",
|
|
1323
|
+
message: `${path} references must be unique`,
|
|
1324
|
+
path: [path]
|
|
1325
|
+
});
|
|
1326
|
+
}
|
|
1327
|
+
function refKey(value) {
|
|
1328
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
1329
|
+
return String(value);
|
|
1330
|
+
const record = value;
|
|
1331
|
+
if (typeof record.occurrenceKey === "string")
|
|
1332
|
+
return record.occurrenceKey;
|
|
1333
|
+
const nested = record.evidence;
|
|
1334
|
+
if (nested && typeof nested === "object" && !Array.isArray(nested)) {
|
|
1335
|
+
const evidence = nested;
|
|
1336
|
+
return `${String(evidence.id)}:${String(evidence.contentHash)}`;
|
|
1337
|
+
}
|
|
1338
|
+
return `${String(record.id)}:${String(record.contentHash)}`;
|
|
1339
|
+
}
|
|
1340
|
+
function requireChronology(context, candidate) {
|
|
1341
|
+
const chronology = [
|
|
1342
|
+
["firstSeenAt", candidate.firstSeenAt],
|
|
1343
|
+
["lastSeenAt", candidate.lastSeenAt],
|
|
1344
|
+
["lastReviewedAt", candidate.lastReviewedAt],
|
|
1345
|
+
["updatedAt", candidate.updatedAt],
|
|
1346
|
+
["expiresAt", candidate.expiresAt]
|
|
1347
|
+
];
|
|
1348
|
+
for (let index = 1; index < chronology.length; index += 1) {
|
|
1349
|
+
const previous = chronology[index - 1];
|
|
1350
|
+
const current = chronology[index];
|
|
1351
|
+
if (Date.parse(previous[1]) <= Date.parse(current[1]))
|
|
1352
|
+
continue;
|
|
1353
|
+
context.addIssue({
|
|
1354
|
+
code: "custom",
|
|
1355
|
+
message: `${current[0]} must not precede ${previous[0]}`,
|
|
1356
|
+
path: [current[0]]
|
|
1357
|
+
});
|
|
1358
|
+
}
|
|
1359
|
+
if (Date.parse(candidate.createdAt) > Date.parse(candidate.updatedAt)) {
|
|
1360
|
+
context.addIssue({
|
|
1361
|
+
code: "custom",
|
|
1362
|
+
message: "updatedAt must not precede createdAt",
|
|
1363
|
+
path: ["updatedAt"]
|
|
1364
|
+
});
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
export {
|
|
1369
|
+
ToolDeclarationSchema,
|
|
1370
|
+
CapabilityRequirementSchema,
|
|
1371
|
+
ChatModelRefSchema
|
|
1372
|
+
};
|
|
1373
|
+
//# sourceMappingURL=chunk-IVEXCIHO.js.map
|