openpond-sdk 0.11.4 → 0.11.6

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