@claudexor/schema 2.1.3 → 3.0.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/dist/agent-capabilities.d.ts +32 -24
- package/dist/agent-capabilities.d.ts.map +1 -1
- package/dist/agent-capabilities.js +20 -11
- package/dist/agent-capabilities.js.map +1 -1
- package/dist/apply-eligibility.d.ts +166 -0
- package/dist/apply-eligibility.d.ts.map +1 -1
- package/dist/apply-eligibility.js +63 -2
- package/dist/apply-eligibility.js.map +1 -1
- package/dist/attachment.d.ts +5 -5
- package/dist/budget.d.ts +4 -4
- package/dist/config.d.ts +59 -41
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -6
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +6 -6
- package/dist/control-operation-responses.d.ts +190 -97
- package/dist/control-operation-responses.d.ts.map +1 -1
- package/dist/control-operation-responses.js +14 -1
- package/dist/control-operation-responses.js.map +1 -1
- package/dist/control-run-detail.d.ts +347 -215
- package/dist/control-run-detail.d.ts.map +1 -1
- package/dist/control-run-detail.js +34 -7
- package/dist/control-run-detail.js.map +1 -1
- package/dist/control-thread-apply.d.ts +5 -5
- package/dist/control-trust.d.ts +6 -6
- package/dist/control.d.ts +769 -306
- package/dist/control.d.ts.map +1 -1
- package/dist/control.js +164 -61
- package/dist/control.js.map +1 -1
- package/dist/credential-profile.d.ts +400 -1
- package/dist/credential-profile.d.ts.map +1 -1
- package/dist/credential-profile.js +109 -4
- package/dist/credential-profile.js.map +1 -1
- package/dist/decision.d.ts +78 -14
- package/dist/decision.d.ts.map +1 -1
- package/dist/decision.js +53 -20
- package/dist/decision.js.map +1 -1
- package/dist/delivery.d.ts +3 -3
- package/dist/delivery.js +1 -1
- package/dist/delivery.js.map +1 -1
- package/dist/events.d.ts +32 -6
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +45 -11
- package/dist/events.js.map +1 -1
- package/dist/gate.d.ts +4 -4
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +2 -2
- package/dist/gate.js.map +1 -1
- package/dist/harness.d.ts +137 -47
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +65 -16
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/operation.d.ts +66 -7
- package/dist/operation.d.ts.map +1 -1
- package/dist/operation.js +29 -2
- package/dist/operation.js.map +1 -1
- package/dist/output-schema.d.ts +40 -0
- package/dist/output-schema.d.ts.map +1 -0
- package/dist/output-schema.js +109 -0
- package/dist/output-schema.js.map +1 -0
- package/dist/plan.d.ts +206 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +107 -0
- package/dist/plan.js.map +1 -0
- package/dist/primitives.d.ts +14 -10
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +14 -11
- package/dist/primitives.js.map +1 -1
- package/dist/project.d.ts +75 -0
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +17 -0
- package/dist/project.js.map +1 -1
- package/dist/quota.d.ts +119 -0
- package/dist/quota.d.ts.map +1 -1
- package/dist/quota.js +22 -0
- package/dist/quota.js.map +1 -1
- package/dist/raw.d.ts +4 -4
- package/dist/readiness.d.ts +14 -7
- package/dist/readiness.d.ts.map +1 -1
- package/dist/run-strategy.d.ts +17 -0
- package/dist/run-strategy.d.ts.map +1 -0
- package/dist/run-strategy.js +47 -0
- package/dist/run-strategy.js.map +1 -0
- package/dist/setup.d.ts +160 -160
- package/dist/status-projection.d.ts +78 -0
- package/dist/status-projection.d.ts.map +1 -0
- package/dist/status-projection.js +171 -0
- package/dist/status-projection.js.map +1 -0
- package/dist/task.d.ts +48 -316
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +3 -60
- package/dist/task.js.map +1 -1
- package/dist/telemetry.d.ts +89 -89
- package/dist/thread.d.ts +167 -32
- package/dist/thread.d.ts.map +1 -1
- package/dist/thread.js +92 -28
- package/dist/thread.js.map +1 -1
- package/dist/tool-ref.d.ts +1 -1
- package/generated/AgentCapabilityCatalog.schema.json +4 -6
- package/generated/ApplyEligibility.schema.json +1 -1
- package/generated/BudgetLease.schema.json +1 -2
- package/generated/ConformanceReport.schema.json +1 -2
- package/generated/ContinuityDisclosure.schema.json +74 -0
- package/generated/ControlApplyRequest.schema.json +1 -2
- package/generated/ControlCredentialProfileUpdateRequest.schema.json +20 -0
- package/generated/ControlCredentialProfileUpdateResponse.schema.json +142 -0
- package/generated/ControlCredentialProfilesResponse.schema.json +126 -2
- package/generated/ControlDeliveryResponse.schema.json +0 -1
- package/generated/ControlHandshakeResponse.schema.json +31 -3
- package/generated/ControlHarnessListResponse.schema.json +11 -6
- package/generated/ControlHarnessSettingsPatch.schema.json +4 -0
- package/generated/ControlOperationCatalog.schema.json +16 -1
- package/generated/ControlOperationDescriptor.schema.json +15 -0
- package/generated/ControlProject.schema.json +35 -0
- package/generated/ControlProjectListResponse.schema.json +35 -0
- package/generated/ControlProjectOutputsResponse.schema.json +57 -0
- package/generated/ControlQueuedRunInfo.schema.json +2 -11
- package/generated/ControlQuotaResponse.schema.json +42 -0
- package/generated/ControlRunAgainDraft.schema.json +37 -35
- package/generated/ControlRunDecisionRequest.schema.json +0 -1
- package/generated/ControlRunDetail.schema.json +292 -213
- package/generated/ControlRunListResponse.schema.json +88 -27
- package/generated/ControlRunStartRequest.schema.json +37 -35
- package/generated/ControlRunStartResponse.schema.json +2 -11
- package/generated/ControlRunSummary.schema.json +88 -27
- package/generated/ControlSettingsSnapshot.schema.json +6 -11
- package/generated/ControlSettingsUpdateRequest.schema.json +5 -10
- package/generated/ControlThread.schema.json +21 -3
- package/generated/ControlThreadApplyResponse.schema.json +0 -1
- package/generated/ControlThreadCreateRequest.schema.json +12 -3
- package/generated/ControlThreadDetail.schema.json +174 -16
- package/generated/ControlThreadListResponse.schema.json +60 -3
- package/generated/ControlThreadTurnRequest.schema.json +40 -34
- package/generated/ControlThreadUpdateRequest.schema.json +19 -0
- package/generated/DecisionRecord.schema.json +73 -33
- package/generated/GateResult.schema.json +1 -2
- package/generated/GlobalConfig.schema.json +7 -12
- package/generated/HarnessManifest.schema.json +11 -6
- package/generated/HarnessStatusDto.schema.json +11 -6
- package/generated/LaneCheckpoint.schema.json +59 -0
- package/generated/McpRunHandleResult.schema.json +234 -0
- package/generated/McpRunToolResult.schema.json +124 -2
- package/generated/RoutePrimaryDivergedPayload.schema.json +56 -0
- package/generated/RunEvent.schema.json +9 -5
- package/generated/RunTelemetry.schema.json +2 -4
- package/generated/TaskContract.schema.json +3 -135
- package/generated/Thread.schema.json +21 -3
- package/generated/ThreadTurn.schema.json +88 -0
- package/package.json +2 -2
- package/dist/control-spec.d.ts +0 -603
- package/dist/control-spec.d.ts.map +0 -1
- package/dist/control-spec.js +0 -87
- package/dist/control-spec.js.map +0 -1
- package/dist/orchestrate.d.ts +0 -556
- package/dist/orchestrate.d.ts.map +0 -1
- package/dist/orchestrate.js +0 -356
- package/dist/orchestrate.js.map +0 -1
- package/dist/spec.d.ts +0 -678
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js +0 -186
- package/dist/spec.js.map +0 -1
- package/generated/ControlSpecAnswersRequest.schema.json +0 -74
- package/generated/ControlSpecQuestionsRequest.schema.json +0 -209
- package/generated/ControlSpecSession.schema.json +0 -261
- package/generated/ControlSpecSessionListResponse.schema.json +0 -273
- package/generated/OrchestrateContract.schema.json +0 -119
- package/generated/OrchestratePlan.schema.json +0 -264
- package/generated/OrchestratePlanProgress.schema.json +0 -164
- package/generated/SessionReboundLineage.schema.json +0 -73
- package/generated/SpecPack.schema.json +0 -483
package/dist/orchestrate.js
DELETED
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
-
import { Id, ModeKind } from "./primitives.js";
|
|
4
|
-
import { RunStatus } from "./decision.js";
|
|
5
|
-
import { PaidBudget } from "./budget.js";
|
|
6
|
-
/**
|
|
7
|
-
* The autonomous `orchestrate` planner. It is NOT a privileged harness: it is
|
|
8
|
-
* an intent routed like reviewers (doctor-ok + capability + quota headroom),
|
|
9
|
-
* sticky per thread, overridable. Its tool belt maps 1:1 onto existing engine
|
|
10
|
-
* entry points; it never grows its own business logic.
|
|
11
|
-
*
|
|
12
|
-
* Detailed per-tool input/output schemas are introduced alongside their wiring
|
|
13
|
-
* (staged-field discipline); this module fixes the tool vocabulary + contract.
|
|
14
|
-
*/
|
|
15
|
-
export const OrchestrateToolName = z
|
|
16
|
-
.enum(["start_run", "race", "status", "answer_question", "apply", "review"])
|
|
17
|
-
.describe("Tool in the orchestrate planner's belt, mapping 1:1 onto engine entry points: start_run, race (best-of-N), status, answer_question, apply, and review.");
|
|
18
|
-
/** How much the planner may act without confirmation. */
|
|
19
|
-
export const OrchestrateAutonomy = z
|
|
20
|
-
.enum(["suggest", "auto_safe", "auto_full"])
|
|
21
|
-
.describe("How much the orchestrate planner may act without confirmation: suggest (user executes the plan), auto_safe (auto-runs only provably safe steps), auto_full (auto-runs everything).");
|
|
22
|
-
const OrchestrateStepRequirement = {
|
|
23
|
-
required: z
|
|
24
|
-
.boolean()
|
|
25
|
-
.default(true)
|
|
26
|
-
.describe("Whether parent success requires this step to succeed."),
|
|
27
|
-
};
|
|
28
|
-
export const DEFAULT_ORCHESTRATE_TOOL_BELT = [
|
|
29
|
-
"start_run",
|
|
30
|
-
"race",
|
|
31
|
-
"status",
|
|
32
|
-
"apply",
|
|
33
|
-
"review",
|
|
34
|
-
// `answer_question` is intentionally NOT offered by default: safe sub-runs are
|
|
35
|
-
// non-interactive, so an autonomously-executed plan has no pending sub-run
|
|
36
|
-
// interaction to answer. It stays in the vocabulary + executor (honest skip) for
|
|
37
|
-
// future interactive sub-runs; a caller can add it to a custom tool_belt.
|
|
38
|
-
];
|
|
39
|
-
export const OrchestrateContract = z
|
|
40
|
-
.object({
|
|
41
|
-
thread_id: Id.describe("Thread the orchestration belongs to."),
|
|
42
|
-
goal: z.string().describe("The user goal the planner is orchestrating toward."),
|
|
43
|
-
tool_belt: z
|
|
44
|
-
.array(OrchestrateToolName)
|
|
45
|
-
.default([...DEFAULT_ORCHESTRATE_TOOL_BELT])
|
|
46
|
-
.describe("Tools the planner may use this run."),
|
|
47
|
-
budget: z
|
|
48
|
-
.object({
|
|
49
|
-
paid_budget: PaidBudget.default({ kind: "unlimited" }),
|
|
50
|
-
max_tool_calls: z
|
|
51
|
-
.number()
|
|
52
|
-
.int()
|
|
53
|
-
.positive()
|
|
54
|
-
.nullable()
|
|
55
|
-
.default(null)
|
|
56
|
-
.describe("Maximum tool calls the executor will run; null = no cap."),
|
|
57
|
-
})
|
|
58
|
-
.default({})
|
|
59
|
-
.describe("Budget limits for the orchestration."),
|
|
60
|
-
autonomy: OrchestrateAutonomy.default("suggest"),
|
|
61
|
-
})
|
|
62
|
-
.describe("Contract for one orchestrate run: goal, allowed tool belt, budget, and autonomy level.");
|
|
63
|
-
/**
|
|
64
|
-
* Data-driven tool-risk classification. SAFE = provably no live-tree mutation
|
|
65
|
-
* (isolated envelope sub-runs or pure reads); RISKY = mutates the live tree.
|
|
66
|
-
* This is the SSOT the executor classifies against — never a hardcoded
|
|
67
|
-
* enum-in-logic switch. `apply` is the only mutating tool.
|
|
68
|
-
*/
|
|
69
|
-
export const TOOL_RISK = {
|
|
70
|
-
start_run: "safe",
|
|
71
|
-
race: "safe",
|
|
72
|
-
status: "safe",
|
|
73
|
-
answer_question: "safe",
|
|
74
|
-
review: "safe",
|
|
75
|
-
apply: "risky",
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* Classify a tool's risk, FAIL-CLOSED: any unknown/undeclared tool is risky.
|
|
79
|
-
* The executor must never auto-run a tool it cannot prove is safe.
|
|
80
|
-
*/
|
|
81
|
-
export function toolRisk(tool) {
|
|
82
|
-
return TOOL_RISK[tool] ?? "risky";
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* One concrete tool invocation in a planner plan, with PER-TOOL TYPED args via a
|
|
86
|
-
* discriminated union on `tool`. The executor (auto_safe/auto_full) runs these
|
|
87
|
-
* in order; under `suggest` the user executes them. Args are validated by the
|
|
88
|
-
* variant — never an open `z.record` bag — so a malformed plan fails loudly.
|
|
89
|
-
*/
|
|
90
|
-
export const OrchestratePlanCall = z
|
|
91
|
-
.discriminatedUnion("tool", [
|
|
92
|
-
z
|
|
93
|
-
.object({
|
|
94
|
-
...OrchestrateStepRequirement,
|
|
95
|
-
tool: z.literal("start_run"),
|
|
96
|
-
prompt: z.string().min(1).describe("Prompt for the sub-run."),
|
|
97
|
-
mode: ModeKind.default("agent").describe("Mode for the sub-run."),
|
|
98
|
-
harness: z.string().optional().describe("Harness to run on; omitted = engine routing."),
|
|
99
|
-
why: z.string().default("").describe("Planner's reason for this step."),
|
|
100
|
-
})
|
|
101
|
-
.describe("Start one isolated sub-run."),
|
|
102
|
-
z
|
|
103
|
-
.object({
|
|
104
|
-
...OrchestrateStepRequirement,
|
|
105
|
-
tool: z.literal("race"),
|
|
106
|
-
prompt: z.string().min(1).describe("Prompt raced across harnesses."),
|
|
107
|
-
n: z
|
|
108
|
-
.number()
|
|
109
|
-
.int()
|
|
110
|
-
.min(2)
|
|
111
|
-
.default(2)
|
|
112
|
-
.describe("Number of race candidates (one per harness)."),
|
|
113
|
-
why: z.string().default("").describe("Planner's reason for this step."),
|
|
114
|
-
})
|
|
115
|
-
.describe("Race the prompt as a best-of-N run."),
|
|
116
|
-
z
|
|
117
|
-
.object({
|
|
118
|
-
...OrchestrateStepRequirement,
|
|
119
|
-
tool: z.literal("review"),
|
|
120
|
-
run_id: z.string().min(1).describe("Run to review."),
|
|
121
|
-
why: z.string().default("").describe("Planner's reason for this step."),
|
|
122
|
-
})
|
|
123
|
-
.describe("Review an existing run."),
|
|
124
|
-
z
|
|
125
|
-
.object({
|
|
126
|
-
...OrchestrateStepRequirement,
|
|
127
|
-
tool: z.literal("status"),
|
|
128
|
-
run_id: z.string().min(1).describe("Run to inspect."),
|
|
129
|
-
why: z.string().default("").describe("Planner's reason for this step."),
|
|
130
|
-
})
|
|
131
|
-
.describe("Read the status of an existing run."),
|
|
132
|
-
z
|
|
133
|
-
.object({
|
|
134
|
-
...OrchestrateStepRequirement,
|
|
135
|
-
tool: z.literal("answer_question"),
|
|
136
|
-
interaction_id: z.string().min(1).describe("Pending interaction to answer."),
|
|
137
|
-
answers: z
|
|
138
|
-
.array(z.object({
|
|
139
|
-
question_id: z.string().min(1).describe("Id of the question being answered."),
|
|
140
|
-
selected_labels: z
|
|
141
|
-
.array(z.string())
|
|
142
|
-
.default([])
|
|
143
|
-
.describe("Labels of the selected options."),
|
|
144
|
-
free_text: z
|
|
145
|
-
.string()
|
|
146
|
-
.nullable()
|
|
147
|
-
.default(null)
|
|
148
|
-
.describe("Free-text answer; null when only options were selected."),
|
|
149
|
-
}))
|
|
150
|
-
.default([])
|
|
151
|
-
.describe("Answers, one per question."),
|
|
152
|
-
why: z.string().default("").describe("Planner's reason for this step."),
|
|
153
|
-
})
|
|
154
|
-
.describe("Answer a pending interactive question of a sub-run."),
|
|
155
|
-
z
|
|
156
|
-
.object({
|
|
157
|
-
...OrchestrateStepRequirement,
|
|
158
|
-
tool: z.literal("apply"),
|
|
159
|
-
run_id: z.string().min(1).describe("Run whose work product to deliver."),
|
|
160
|
-
mode: z
|
|
161
|
-
.enum(["apply", "branch", "commit", "pr"])
|
|
162
|
-
.default("apply")
|
|
163
|
-
.describe("Delivery mode: apply to the tree, or as a branch, commit, or PR."),
|
|
164
|
-
why: z.string().default("").describe("Planner's reason for this step."),
|
|
165
|
-
})
|
|
166
|
-
.describe("Deliver a run's work product to the project (the only live-tree-mutating tool)."),
|
|
167
|
-
])
|
|
168
|
-
.describe("One concrete tool invocation in a planner plan, with per-tool typed args discriminated on `tool`.");
|
|
169
|
-
/**
|
|
170
|
-
* The TYPED orchestration plan extracted from the planner's report (the fenced
|
|
171
|
-
* JSON block the orchestrate prompt requires). Persisted as
|
|
172
|
-
* `final/orchestration.yaml`; a missing/invalid block is disclosed in the
|
|
173
|
-
* summary, never silently dropped.
|
|
174
|
-
*/
|
|
175
|
-
export const OrchestratePlan = z
|
|
176
|
-
.object({
|
|
177
|
-
tool_calls: z
|
|
178
|
-
.array(OrchestratePlanCall)
|
|
179
|
-
.min(1)
|
|
180
|
-
.describe("Ordered tool invocations of the plan."),
|
|
181
|
-
})
|
|
182
|
-
.describe("The typed orchestration plan extracted from the planner's report; persisted as final/orchestration.yaml.");
|
|
183
|
-
/** Per-step executor status (auto_safe/auto_full). */
|
|
184
|
-
export const OrchestrateStepStatus = z
|
|
185
|
-
.enum(["pending", "running", "done", "skipped", "blocked", "failed"])
|
|
186
|
-
.describe("Executor status of one plan step: pending, running, done, skipped, blocked (risky step awaiting a human), or failed.");
|
|
187
|
-
export const OrchestrateTerminalSource = z.enum([
|
|
188
|
-
"executor",
|
|
189
|
-
"subrun",
|
|
190
|
-
"review",
|
|
191
|
-
"delivery",
|
|
192
|
-
"policy",
|
|
193
|
-
"budget",
|
|
194
|
-
]);
|
|
195
|
-
/**
|
|
196
|
-
* Typed executor progress over a plan's tool_calls. Persisted as
|
|
197
|
-
* `final/orchestration_progress.yaml` and projected into the run detail so a
|
|
198
|
-
* surface renders honest per-step outcomes (which safe steps ran, where a risky
|
|
199
|
-
* step blocked, why it stopped). Producer: the orchestrator executor; consumer:
|
|
200
|
-
* the control-api run-detail projection.
|
|
201
|
-
*/
|
|
202
|
-
export const OrchestratePlanProgress = z
|
|
203
|
-
.object({
|
|
204
|
-
steps: z
|
|
205
|
-
.array(z.object({
|
|
206
|
-
index: z.number().int().nonnegative().describe("Position of the step in the plan."),
|
|
207
|
-
tool: OrchestrateToolName,
|
|
208
|
-
risk: z
|
|
209
|
-
.enum(["safe", "risky"])
|
|
210
|
-
.describe("Risk class of the step: safe (no live-tree mutation) or risky."),
|
|
211
|
-
status: OrchestrateStepStatus,
|
|
212
|
-
required: z.boolean().default(true),
|
|
213
|
-
terminal_status: RunStatus.nullable()
|
|
214
|
-
.default(null)
|
|
215
|
-
.describe("Actual child/delivery terminal used by the parent outcome reducer."),
|
|
216
|
-
terminal_source: OrchestrateTerminalSource.nullable()
|
|
217
|
-
.default(null)
|
|
218
|
-
.describe("Authority that produced terminal_status."),
|
|
219
|
-
evidence_refs: z
|
|
220
|
-
.array(z.string().min(1))
|
|
221
|
-
.default([])
|
|
222
|
-
.describe("Immutable run artifact or delivery receipt references."),
|
|
223
|
-
/** Sub-run id this step started/targeted (start_run/race/review/status/apply), when known. */
|
|
224
|
-
run_id: z
|
|
225
|
-
.string()
|
|
226
|
-
.nullable()
|
|
227
|
-
.default(null)
|
|
228
|
-
.describe("Sub-run id this step started/targeted, when known."),
|
|
229
|
-
detail: z.string().nullable().default(null).describe("Human-readable step detail."),
|
|
230
|
-
}))
|
|
231
|
-
.default([])
|
|
232
|
-
.describe("Per-step outcomes, in plan order."),
|
|
233
|
-
autonomy: OrchestrateAutonomy,
|
|
234
|
-
/** Set when the executor stopped early (first risky step under auto_safe, budget, abort). */
|
|
235
|
-
stopped_reason: z
|
|
236
|
-
.string()
|
|
237
|
-
.nullable()
|
|
238
|
-
.default(null)
|
|
239
|
-
.describe("Set when the executor stopped early (first risky step under auto_safe, budget, abort)."),
|
|
240
|
-
})
|
|
241
|
-
.describe("Typed executor progress over a plan's tool calls, persisted as final/orchestration_progress.yaml and projected into run detail.");
|
|
242
|
-
/**
|
|
243
|
-
* JSON Schema for the planner's typed plan, computed from the LIVE Zod shape
|
|
244
|
-
* (the SSOT) — passed as HarnessRunSpec.output_schema so schema-capable CLIs
|
|
245
|
-
* constrain their final message to a valid OrchestratePlan.
|
|
246
|
-
*/
|
|
247
|
-
let orchestratePlanJsonSchemaCache = null;
|
|
248
|
-
export function orchestratePlanJsonSchema() {
|
|
249
|
-
// INLINE root (no name/$ref wrapper): claude materializes --json-schema as
|
|
250
|
-
// a StructuredOutput TOOL whose input_schema must carry a top-level "type"
|
|
251
|
-
// — a $ref-wrapped root 400s (LIVE-VERIFIED). Codex accepts both.
|
|
252
|
-
orchestratePlanJsonSchemaCache ??= strictifyForStructuredOutput(zodToJsonSchema(OrchestratePlan, { $refStrategy: "none" }));
|
|
253
|
-
return orchestratePlanJsonSchemaCache;
|
|
254
|
-
}
|
|
255
|
-
/** A caller-supplied output schema the structured-output routes cannot carry. */
|
|
256
|
-
export class UnsupportedOutputSchemaError extends Error {
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Validate a CALLER-supplied per-run output schema and return it UNCHANGED —
|
|
260
|
-
* it stays the CONFORMANCE AUTHORITY (the engine validates the final answer
|
|
261
|
-
* against exactly what the caller asked for). The vendor transport separately
|
|
262
|
-
* strictifies via `strictifyOutputSchema`; NEVER validate the answer against
|
|
263
|
-
* the strictified form — strictify turns an optional string into a required
|
|
264
|
-
* `string|null`, so `{"field":null}` would falsely pass a schema that forbids it.
|
|
265
|
-
*
|
|
266
|
-
* Refuses — typed, at the boundary — the shapes the native routes are
|
|
267
|
-
* LIVE-VERIFIED to reject rather than let a vendor 400 surface mid-run: the
|
|
268
|
-
* root must be an inline `type: "object"` (claude materializes --json-schema as
|
|
269
|
-
* a StructuredOutput tool whose input_schema needs a top-level type; a
|
|
270
|
-
* $ref-wrapped root 400s), `$ref` is refused anywhere, and `format` is refused
|
|
271
|
-
* while the pinned claude (<2.1.205) silently drops a format-bearing schema.
|
|
272
|
-
*/
|
|
273
|
-
export function normalizeUserOutputSchema(schema) {
|
|
274
|
-
if (schema["type"] !== "object" || typeof schema["properties"] !== "object") {
|
|
275
|
-
throw new UnsupportedOutputSchemaError('outputSchema root must be an inline object schema ({"type":"object","properties":{...}}); $ref-wrapped or non-object roots are rejected by the native structured-output routes');
|
|
276
|
-
}
|
|
277
|
-
const hasRef = (value) => {
|
|
278
|
-
if (Array.isArray(value))
|
|
279
|
-
return value.some(hasRef);
|
|
280
|
-
if (!value || typeof value !== "object")
|
|
281
|
-
return false;
|
|
282
|
-
const obj = value;
|
|
283
|
-
if ("$ref" in obj)
|
|
284
|
-
return true;
|
|
285
|
-
return Object.values(obj).some(hasRef);
|
|
286
|
-
};
|
|
287
|
-
if (hasRef(schema)) {
|
|
288
|
-
throw new UnsupportedOutputSchemaError("outputSchema must not contain $ref (native structured-output routes do not resolve references); inline the referenced shapes");
|
|
289
|
-
}
|
|
290
|
-
const hasFormat = (value) => {
|
|
291
|
-
if (Array.isArray(value))
|
|
292
|
-
return value.some(hasFormat);
|
|
293
|
-
if (!value || typeof value !== "object")
|
|
294
|
-
return false;
|
|
295
|
-
const obj = value;
|
|
296
|
-
if (typeof obj["format"] === "string")
|
|
297
|
-
return true;
|
|
298
|
-
return Object.values(obj).some(hasFormat);
|
|
299
|
-
};
|
|
300
|
-
if (hasFormat(schema)) {
|
|
301
|
-
throw new UnsupportedOutputSchemaError("outputSchema must not use `format`: the pinned claude CLI (<2.1.205) silently drops the whole schema when format is present; express the constraint with pattern/enum instead");
|
|
302
|
-
}
|
|
303
|
-
return schema;
|
|
304
|
-
}
|
|
305
|
-
/** Vendor-strict transport form of a validated output schema (all keys
|
|
306
|
-
* required, additionalProperties:false, optionals nullable). Used ONLY to
|
|
307
|
-
* constrain the harness — NEVER to judge conformance (see normalizeUserOutputSchema). */
|
|
308
|
-
export function strictifyOutputSchema(schema) {
|
|
309
|
-
return strictifyForStructuredOutput(schema);
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Vendor STRICT structured-output mode (LIVE-VERIFIED against codex 0.137 /
|
|
313
|
-
* the OpenAI Responses API): every object must list ALL property keys in
|
|
314
|
-
* `required` and set `additionalProperties: false` — optional-with-default
|
|
315
|
-
* fields become always-emitted (their Zod defaults make explicit values
|
|
316
|
-
* equivalent). One owner for the transform; a schema that violates this is
|
|
317
|
-
* rejected by the vendor with invalid_json_schema.
|
|
318
|
-
*/
|
|
319
|
-
function strictifyForStructuredOutput(node) {
|
|
320
|
-
const walk = (value) => {
|
|
321
|
-
if (Array.isArray(value))
|
|
322
|
-
return value.map(walk);
|
|
323
|
-
if (!value || typeof value !== "object")
|
|
324
|
-
return value;
|
|
325
|
-
const obj = { ...value };
|
|
326
|
-
for (const key of Object.keys(obj))
|
|
327
|
-
obj[key] = walk(obj[key]);
|
|
328
|
-
if (obj["type"] === "object" && obj["properties"] && typeof obj["properties"] === "object") {
|
|
329
|
-
const props = obj["properties"];
|
|
330
|
-
const originallyRequired = new Set(Array.isArray(obj["required"]) ? obj["required"] : []);
|
|
331
|
-
// Vendor strict mode demands required = ALL keys; fields that were
|
|
332
|
-
// OPTIONAL in the source schema stay expressible by becoming NULLABLE
|
|
333
|
-
// (the OpenAI strict-mode recipe) — otherwise the model would be FORCED
|
|
334
|
-
// to invent values for e.g. start_run.harness on every call.
|
|
335
|
-
for (const key of Object.keys(props)) {
|
|
336
|
-
if (originallyRequired.has(key))
|
|
337
|
-
continue;
|
|
338
|
-
const prop = props[key];
|
|
339
|
-
if (prop && typeof prop === "object" && !Array.isArray(prop)) {
|
|
340
|
-
const p = prop;
|
|
341
|
-
if (typeof p["type"] === "string" && p["type"] !== "null") {
|
|
342
|
-
p["type"] = [p["type"], "null"];
|
|
343
|
-
}
|
|
344
|
-
else if (Array.isArray(p["type"]) && !p["type"].includes("null")) {
|
|
345
|
-
p["type"].push("null");
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
obj["required"] = Object.keys(props);
|
|
350
|
-
obj["additionalProperties"] = false;
|
|
351
|
-
}
|
|
352
|
-
return obj;
|
|
353
|
-
};
|
|
354
|
-
return walk(node);
|
|
355
|
-
}
|
|
356
|
-
//# sourceMappingURL=orchestrate.js.map
|
package/dist/orchestrate.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../src/orchestrate.ts"],"names":[],"mappings":"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"}
|