@claudexor/schema 2.1.3 → 3.0.1

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 (174) hide show
  1. package/dist/agent-capabilities.d.ts +32 -24
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +20 -11
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts +166 -0
  6. package/dist/apply-eligibility.d.ts.map +1 -1
  7. package/dist/apply-eligibility.js +63 -2
  8. package/dist/apply-eligibility.js.map +1 -1
  9. package/dist/attachment.d.ts +5 -5
  10. package/dist/budget.d.ts +4 -4
  11. package/dist/config.d.ts +59 -41
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +16 -6
  14. package/dist/config.js.map +1 -1
  15. package/dist/context.d.ts +6 -6
  16. package/dist/control-operation-responses.d.ts +190 -97
  17. package/dist/control-operation-responses.d.ts.map +1 -1
  18. package/dist/control-operation-responses.js +14 -1
  19. package/dist/control-operation-responses.js.map +1 -1
  20. package/dist/control-run-detail.d.ts +347 -215
  21. package/dist/control-run-detail.d.ts.map +1 -1
  22. package/dist/control-run-detail.js +34 -7
  23. package/dist/control-run-detail.js.map +1 -1
  24. package/dist/control-thread-apply.d.ts +5 -5
  25. package/dist/control-trust.d.ts +6 -6
  26. package/dist/control.d.ts +769 -306
  27. package/dist/control.d.ts.map +1 -1
  28. package/dist/control.js +164 -61
  29. package/dist/control.js.map +1 -1
  30. package/dist/credential-profile.d.ts +400 -1
  31. package/dist/credential-profile.d.ts.map +1 -1
  32. package/dist/credential-profile.js +109 -4
  33. package/dist/credential-profile.js.map +1 -1
  34. package/dist/decision.d.ts +78 -14
  35. package/dist/decision.d.ts.map +1 -1
  36. package/dist/decision.js +53 -20
  37. package/dist/decision.js.map +1 -1
  38. package/dist/delivery.d.ts +3 -3
  39. package/dist/delivery.js +1 -1
  40. package/dist/delivery.js.map +1 -1
  41. package/dist/events.d.ts +32 -6
  42. package/dist/events.d.ts.map +1 -1
  43. package/dist/events.js +45 -11
  44. package/dist/events.js.map +1 -1
  45. package/dist/gate.d.ts +4 -4
  46. package/dist/gate.d.ts.map +1 -1
  47. package/dist/gate.js +2 -2
  48. package/dist/gate.js.map +1 -1
  49. package/dist/harness.d.ts +137 -47
  50. package/dist/harness.d.ts.map +1 -1
  51. package/dist/harness.js +65 -16
  52. package/dist/harness.js.map +1 -1
  53. package/dist/index.d.ts +4 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +4 -3
  56. package/dist/index.js.map +1 -1
  57. package/dist/operation.d.ts +66 -7
  58. package/dist/operation.d.ts.map +1 -1
  59. package/dist/operation.js +29 -2
  60. package/dist/operation.js.map +1 -1
  61. package/dist/output-schema.d.ts +40 -0
  62. package/dist/output-schema.d.ts.map +1 -0
  63. package/dist/output-schema.js +109 -0
  64. package/dist/output-schema.js.map +1 -0
  65. package/dist/plan.d.ts +206 -0
  66. package/dist/plan.d.ts.map +1 -0
  67. package/dist/plan.js +107 -0
  68. package/dist/plan.js.map +1 -0
  69. package/dist/primitives.d.ts +14 -10
  70. package/dist/primitives.d.ts.map +1 -1
  71. package/dist/primitives.js +14 -11
  72. package/dist/primitives.js.map +1 -1
  73. package/dist/project.d.ts +75 -0
  74. package/dist/project.d.ts.map +1 -1
  75. package/dist/project.js +17 -0
  76. package/dist/project.js.map +1 -1
  77. package/dist/quota.d.ts +119 -0
  78. package/dist/quota.d.ts.map +1 -1
  79. package/dist/quota.js +22 -0
  80. package/dist/quota.js.map +1 -1
  81. package/dist/raw.d.ts +4 -4
  82. package/dist/readiness.d.ts +14 -7
  83. package/dist/readiness.d.ts.map +1 -1
  84. package/dist/run-strategy.d.ts +17 -0
  85. package/dist/run-strategy.d.ts.map +1 -0
  86. package/dist/run-strategy.js +47 -0
  87. package/dist/run-strategy.js.map +1 -0
  88. package/dist/setup.d.ts +160 -160
  89. package/dist/status-projection.d.ts +78 -0
  90. package/dist/status-projection.d.ts.map +1 -0
  91. package/dist/status-projection.js +171 -0
  92. package/dist/status-projection.js.map +1 -0
  93. package/dist/task.d.ts +48 -316
  94. package/dist/task.d.ts.map +1 -1
  95. package/dist/task.js +3 -60
  96. package/dist/task.js.map +1 -1
  97. package/dist/telemetry.d.ts +89 -89
  98. package/dist/thread.d.ts +167 -32
  99. package/dist/thread.d.ts.map +1 -1
  100. package/dist/thread.js +92 -28
  101. package/dist/thread.js.map +1 -1
  102. package/dist/tool-ref.d.ts +1 -1
  103. package/generated/AgentCapabilityCatalog.schema.json +4 -6
  104. package/generated/ApplyEligibility.schema.json +1 -1
  105. package/generated/BudgetLease.schema.json +1 -2
  106. package/generated/ConformanceReport.schema.json +1 -2
  107. package/generated/ContinuityDisclosure.schema.json +74 -0
  108. package/generated/ControlApplyRequest.schema.json +1 -2
  109. package/generated/ControlCredentialProfileUpdateRequest.schema.json +20 -0
  110. package/generated/ControlCredentialProfileUpdateResponse.schema.json +142 -0
  111. package/generated/ControlCredentialProfilesResponse.schema.json +126 -2
  112. package/generated/ControlDeliveryResponse.schema.json +0 -1
  113. package/generated/ControlHandshakeResponse.schema.json +31 -3
  114. package/generated/ControlHarnessListResponse.schema.json +11 -6
  115. package/generated/ControlHarnessSettingsPatch.schema.json +4 -0
  116. package/generated/ControlOperationCatalog.schema.json +16 -1
  117. package/generated/ControlOperationDescriptor.schema.json +15 -0
  118. package/generated/ControlProject.schema.json +35 -0
  119. package/generated/ControlProjectListResponse.schema.json +35 -0
  120. package/generated/ControlProjectOutputsResponse.schema.json +57 -0
  121. package/generated/ControlQueuedRunInfo.schema.json +2 -11
  122. package/generated/ControlQuotaResponse.schema.json +42 -0
  123. package/generated/ControlRunAgainDraft.schema.json +37 -35
  124. package/generated/ControlRunDecisionRequest.schema.json +0 -1
  125. package/generated/ControlRunDetail.schema.json +292 -213
  126. package/generated/ControlRunListResponse.schema.json +88 -27
  127. package/generated/ControlRunStartRequest.schema.json +37 -35
  128. package/generated/ControlRunStartResponse.schema.json +2 -11
  129. package/generated/ControlRunSummary.schema.json +88 -27
  130. package/generated/ControlSettingsSnapshot.schema.json +6 -11
  131. package/generated/ControlSettingsUpdateRequest.schema.json +5 -10
  132. package/generated/ControlThread.schema.json +21 -3
  133. package/generated/ControlThreadApplyResponse.schema.json +0 -1
  134. package/generated/ControlThreadCreateRequest.schema.json +12 -3
  135. package/generated/ControlThreadDetail.schema.json +174 -16
  136. package/generated/ControlThreadListResponse.schema.json +60 -3
  137. package/generated/ControlThreadTurnRequest.schema.json +40 -34
  138. package/generated/ControlThreadUpdateRequest.schema.json +19 -0
  139. package/generated/DecisionRecord.schema.json +73 -33
  140. package/generated/GateResult.schema.json +1 -2
  141. package/generated/GlobalConfig.schema.json +7 -12
  142. package/generated/HarnessManifest.schema.json +11 -6
  143. package/generated/HarnessStatusDto.schema.json +11 -6
  144. package/generated/LaneCheckpoint.schema.json +59 -0
  145. package/generated/McpRunHandleResult.schema.json +234 -0
  146. package/generated/McpRunToolResult.schema.json +124 -2
  147. package/generated/RoutePrimaryDivergedPayload.schema.json +56 -0
  148. package/generated/RunEvent.schema.json +9 -5
  149. package/generated/RunTelemetry.schema.json +2 -4
  150. package/generated/TaskContract.schema.json +3 -135
  151. package/generated/Thread.schema.json +21 -3
  152. package/generated/ThreadTurn.schema.json +88 -0
  153. package/package.json +2 -2
  154. package/dist/control-spec.d.ts +0 -603
  155. package/dist/control-spec.d.ts.map +0 -1
  156. package/dist/control-spec.js +0 -87
  157. package/dist/control-spec.js.map +0 -1
  158. package/dist/orchestrate.d.ts +0 -556
  159. package/dist/orchestrate.d.ts.map +0 -1
  160. package/dist/orchestrate.js +0 -356
  161. package/dist/orchestrate.js.map +0 -1
  162. package/dist/spec.d.ts +0 -678
  163. package/dist/spec.d.ts.map +0 -1
  164. package/dist/spec.js +0 -186
  165. package/dist/spec.js.map +0 -1
  166. package/generated/ControlSpecAnswersRequest.schema.json +0 -74
  167. package/generated/ControlSpecQuestionsRequest.schema.json +0 -209
  168. package/generated/ControlSpecSession.schema.json +0 -261
  169. package/generated/ControlSpecSessionListResponse.schema.json +0 -273
  170. package/generated/OrchestrateContract.schema.json +0 -119
  171. package/generated/OrchestratePlan.schema.json +0 -264
  172. package/generated/OrchestratePlanProgress.schema.json +0 -164
  173. package/generated/SessionReboundLineage.schema.json +0 -73
  174. package/generated/SpecPack.schema.json +0 -483
package/dist/project.d.ts CHANGED
@@ -20,24 +20,66 @@ export declare const Project: z.ZodObject<{
20
20
  root: string;
21
21
  }>;
22
22
  export type Project = z.infer<typeof Project>;
23
+ /** A non-refusing nesting relation between two registered projects (F3,
24
+ * INV-137): `inside` = this project's root lives under `root`; `contains` =
25
+ * `root` (another project) lives under this one. Legit monorepos nest, so this
26
+ * is DISCLOSURE only — surfaces show "nested inside <root>" so an owner is not
27
+ * confused by overlapping roots (e.g. robot_journey inside racing4). */
28
+ export declare const ProjectNesting: z.ZodObject<{
29
+ relation: z.ZodEnum<["inside", "contains"]>;
30
+ root: z.ZodString;
31
+ projectId: z.ZodString;
32
+ }, "strict", z.ZodTypeAny, {
33
+ root: string;
34
+ projectId: string;
35
+ relation: "inside" | "contains";
36
+ }, {
37
+ root: string;
38
+ projectId: string;
39
+ relation: "inside" | "contains";
40
+ }>;
41
+ export type ProjectNesting = z.infer<typeof ProjectNesting>;
23
42
  export declare const ControlProject: z.ZodObject<{
24
43
  schemaVersion: z.ZodLiteral<2>;
25
44
  id: z.ZodString;
26
45
  root: z.ZodString;
27
46
  createdAt: z.ZodString;
28
47
  updatedAt: z.ZodString;
48
+ nesting: z.ZodDefault<z.ZodArray<z.ZodObject<{
49
+ relation: z.ZodEnum<["inside", "contains"]>;
50
+ root: z.ZodString;
51
+ projectId: z.ZodString;
52
+ }, "strict", z.ZodTypeAny, {
53
+ root: string;
54
+ projectId: string;
55
+ relation: "inside" | "contains";
56
+ }, {
57
+ root: string;
58
+ projectId: string;
59
+ relation: "inside" | "contains";
60
+ }>, "many">>;
29
61
  }, "strict", z.ZodTypeAny, {
30
62
  schemaVersion: 2;
31
63
  createdAt: string;
32
64
  id: string;
33
65
  root: string;
34
66
  updatedAt: string;
67
+ nesting: {
68
+ root: string;
69
+ projectId: string;
70
+ relation: "inside" | "contains";
71
+ }[];
35
72
  }, {
36
73
  schemaVersion: 2;
37
74
  createdAt: string;
38
75
  id: string;
39
76
  root: string;
40
77
  updatedAt: string;
78
+ nesting?: {
79
+ root: string;
80
+ projectId: string;
81
+ relation: "inside" | "contains";
82
+ }[] | undefined;
41
83
  }>;
42
84
  export type ControlProject = z.infer<typeof ControlProject>;
43
85
  export declare const ControlProjectListResponse: z.ZodObject<{
@@ -47,18 +89,41 @@ export declare const ControlProjectListResponse: z.ZodObject<{
47
89
  root: z.ZodString;
48
90
  createdAt: z.ZodString;
49
91
  updatedAt: z.ZodString;
92
+ nesting: z.ZodDefault<z.ZodArray<z.ZodObject<{
93
+ relation: z.ZodEnum<["inside", "contains"]>;
94
+ root: z.ZodString;
95
+ projectId: z.ZodString;
96
+ }, "strict", z.ZodTypeAny, {
97
+ root: string;
98
+ projectId: string;
99
+ relation: "inside" | "contains";
100
+ }, {
101
+ root: string;
102
+ projectId: string;
103
+ relation: "inside" | "contains";
104
+ }>, "many">>;
50
105
  }, "strict", z.ZodTypeAny, {
51
106
  schemaVersion: 2;
52
107
  createdAt: string;
53
108
  id: string;
54
109
  root: string;
55
110
  updatedAt: string;
111
+ nesting: {
112
+ root: string;
113
+ projectId: string;
114
+ relation: "inside" | "contains";
115
+ }[];
56
116
  }, {
57
117
  schemaVersion: 2;
58
118
  createdAt: string;
59
119
  id: string;
60
120
  root: string;
61
121
  updatedAt: string;
122
+ nesting?: {
123
+ root: string;
124
+ projectId: string;
125
+ relation: "inside" | "contains";
126
+ }[] | undefined;
62
127
  }>, "many">;
63
128
  }, "strict", z.ZodTypeAny, {
64
129
  projects: {
@@ -67,6 +132,11 @@ export declare const ControlProjectListResponse: z.ZodObject<{
67
132
  id: string;
68
133
  root: string;
69
134
  updatedAt: string;
135
+ nesting: {
136
+ root: string;
137
+ projectId: string;
138
+ relation: "inside" | "contains";
139
+ }[];
70
140
  }[];
71
141
  }, {
72
142
  projects: {
@@ -75,6 +145,11 @@ export declare const ControlProjectListResponse: z.ZodObject<{
75
145
  id: string;
76
146
  root: string;
77
147
  updatedAt: string;
148
+ nesting?: {
149
+ root: string;
150
+ projectId: string;
151
+ relation: "inside" | "contains";
152
+ }[] | undefined;
78
153
  }[];
79
154
  }>;
80
155
  export type ControlProjectListResponse = z.infer<typeof ControlProjectListResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,wDAAwD;AACxD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;EASoE,CAAC;AACzF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EASmC,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA2D,CAAC;AACnG,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;;;EAAiD,CAAC;AAC5F,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE1F,eAAO,MAAM,2BAA2B;;;;;;EAAiD,CAAC;AAC1F,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,wDAAwD;AACxD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;EASoE,CAAC;AACzF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C;;;;wEAIwE;AACxE,eAAO,MAAM,cAAc;;;;;;;;;;;;EAOiE,CAAC;AAC7F,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAemC,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA2D,CAAC;AACnG,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;;;EAAiD,CAAC;AAC5F,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE1F,eAAO,MAAM,2BAA2B;;;;;;EAAiD,CAAC;AAC1F,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
package/dist/project.js CHANGED
@@ -11,6 +11,19 @@ export const Project = z
11
11
  })
12
12
  .strict()
13
13
  .describe("A durable v2 project registration; v1 state is never imported implicitly.");
14
+ /** A non-refusing nesting relation between two registered projects (F3,
15
+ * INV-137): `inside` = this project's root lives under `root`; `contains` =
16
+ * `root` (another project) lives under this one. Legit monorepos nest, so this
17
+ * is DISCLOSURE only — surfaces show "nested inside <root>" so an owner is not
18
+ * confused by overlapping roots (e.g. robot_journey inside racing4). */
19
+ export const ProjectNesting = z
20
+ .object({
21
+ relation: z.enum(["inside", "contains"]).describe("How this project overlaps the other."),
22
+ root: z.string().min(1).describe("The other registered project's root."),
23
+ projectId: Id.describe("The other registered project's id."),
24
+ })
25
+ .strict()
26
+ .describe("A disclosed (never refused) nesting relation with another registered project.");
14
27
  export const ControlProject = z
15
28
  .object({
16
29
  schemaVersion: SchemaVersion,
@@ -18,6 +31,10 @@ export const ControlProject = z
18
31
  root: z.string().min(1),
19
32
  createdAt: IsoTimestamp,
20
33
  updatedAt: IsoTimestamp,
34
+ nesting: z
35
+ .array(ProjectNesting)
36
+ .default([])
37
+ .describe("Disclosed nesting relations with other registered projects (F3) — informational, never a refusal."),
21
38
  })
22
39
  .strict()
23
40
  .describe("Control API projection of a registered project.");
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAElE,wDAAwD;AACxD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,cAAc,EAAE,aAAa;IAC7B,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACpE,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC3E,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC7E,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,2EAA2E,CAAC,CAAC;AAGzF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,aAAa,EAAE,aAAa;IAC5B,EAAE,EAAE,EAAE;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;CACxB,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,iDAAiD,CAAC,CAAC;AAG/D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAGnG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAG5F,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAElE,wDAAwD;AACxD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,cAAc,EAAE,aAAa;IAC7B,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACpE,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC3E,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC7E,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,2EAA2E,CAAC,CAAC;AAGzF;;;;wEAIwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACxE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC7D,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,+EAA+E,CAAC,CAAC;AAG7F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,aAAa,EAAE,aAAa;IAC5B,EAAE,EAAE,EAAE;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,cAAc,CAAC;SACrB,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CACP,mGAAmG,CACpG;CACJ,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,iDAAiD,CAAC,CAAC;AAG/D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAGnG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAG5F,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC"}
package/dist/quota.d.ts CHANGED
@@ -135,6 +135,56 @@ export declare const QuotaSnapshot: z.ZodObject<{
135
135
  freshness: "unknown" | "fresh" | "stale";
136
136
  }>;
137
137
  export type QuotaSnapshot = z.infer<typeof QuotaSnapshot>;
138
+ export declare const QuotaAbsenceReason: z.ZodEnum<["not_logged_in", "transport_unavailable", "platform_unsupported", "refresh_failed", "no_source"]>;
139
+ export type QuotaAbsenceReason = z.infer<typeof QuotaAbsenceReason>;
140
+ export declare const QuotaAbsence: z.ZodObject<{
141
+ subject: z.ZodObject<{
142
+ harness: z.ZodString;
143
+ credential_route: z.ZodEnum<["vendor_native", "managed_api_key", "local"]>;
144
+ plan_label: z.ZodDefault<z.ZodNullable<z.ZodString>>;
145
+ /** The CREDENTIAL SUBJECT the windows belong to (release wave round-16
146
+ * #2): a Claudexor credential-profile id, or null for the harness's
147
+ * engine-default credential. Every producer (oauth-usage refresher,
148
+ * typed-event registry, adapter quota events) uses exactly this
149
+ * vocabulary; budget routing filters snapshots by exact subject so one
150
+ * account's exhaustion never cools another. */
151
+ subject_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
152
+ }, "strict", z.ZodTypeAny, {
153
+ harness: string;
154
+ credential_route: "local" | "vendor_native" | "managed_api_key";
155
+ plan_label: string | null;
156
+ subject_id: string | null;
157
+ }, {
158
+ harness: string;
159
+ credential_route: "local" | "vendor_native" | "managed_api_key";
160
+ plan_label?: string | null | undefined;
161
+ subject_id?: string | null | undefined;
162
+ }>;
163
+ reason: z.ZodEnum<["not_logged_in", "transport_unavailable", "platform_unsupported", "refresh_failed", "no_source"]>;
164
+ detail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
165
+ observed_at: z.ZodString;
166
+ }, "strict", z.ZodTypeAny, {
167
+ detail: string | null;
168
+ reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
169
+ subject: {
170
+ harness: string;
171
+ credential_route: "local" | "vendor_native" | "managed_api_key";
172
+ plan_label: string | null;
173
+ subject_id: string | null;
174
+ };
175
+ observed_at: string;
176
+ }, {
177
+ reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
178
+ subject: {
179
+ harness: string;
180
+ credential_route: "local" | "vendor_native" | "managed_api_key";
181
+ plan_label?: string | null | undefined;
182
+ subject_id?: string | null | undefined;
183
+ };
184
+ observed_at: string;
185
+ detail?: string | null | undefined;
186
+ }>;
187
+ export type QuotaAbsence = z.infer<typeof QuotaAbsence>;
138
188
  export declare const ControlQuotaResponse: z.ZodObject<{
139
189
  snapshots: z.ZodArray<z.ZodObject<{
140
190
  subject: z.ZodObject<{
@@ -221,6 +271,53 @@ export declare const ControlQuotaResponse: z.ZodObject<{
221
271
  observed_at: string;
222
272
  freshness: "unknown" | "fresh" | "stale";
223
273
  }>, "many">;
274
+ absences: z.ZodDefault<z.ZodArray<z.ZodObject<{
275
+ subject: z.ZodObject<{
276
+ harness: z.ZodString;
277
+ credential_route: z.ZodEnum<["vendor_native", "managed_api_key", "local"]>;
278
+ plan_label: z.ZodDefault<z.ZodNullable<z.ZodString>>;
279
+ /** The CREDENTIAL SUBJECT the windows belong to (release wave round-16
280
+ * #2): a Claudexor credential-profile id, or null for the harness's
281
+ * engine-default credential. Every producer (oauth-usage refresher,
282
+ * typed-event registry, adapter quota events) uses exactly this
283
+ * vocabulary; budget routing filters snapshots by exact subject so one
284
+ * account's exhaustion never cools another. */
285
+ subject_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
286
+ }, "strict", z.ZodTypeAny, {
287
+ harness: string;
288
+ credential_route: "local" | "vendor_native" | "managed_api_key";
289
+ plan_label: string | null;
290
+ subject_id: string | null;
291
+ }, {
292
+ harness: string;
293
+ credential_route: "local" | "vendor_native" | "managed_api_key";
294
+ plan_label?: string | null | undefined;
295
+ subject_id?: string | null | undefined;
296
+ }>;
297
+ reason: z.ZodEnum<["not_logged_in", "transport_unavailable", "platform_unsupported", "refresh_failed", "no_source"]>;
298
+ detail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
299
+ observed_at: z.ZodString;
300
+ }, "strict", z.ZodTypeAny, {
301
+ detail: string | null;
302
+ reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
303
+ subject: {
304
+ harness: string;
305
+ credential_route: "local" | "vendor_native" | "managed_api_key";
306
+ plan_label: string | null;
307
+ subject_id: string | null;
308
+ };
309
+ observed_at: string;
310
+ }, {
311
+ reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
312
+ subject: {
313
+ harness: string;
314
+ credential_route: "local" | "vendor_native" | "managed_api_key";
315
+ plan_label?: string | null | undefined;
316
+ subject_id?: string | null | undefined;
317
+ };
318
+ observed_at: string;
319
+ detail?: string | null | undefined;
320
+ }>, "many">>;
224
321
  refreshed_at: z.ZodNullable<z.ZodString>;
225
322
  }, "strict", z.ZodTypeAny, {
226
323
  snapshots: {
@@ -242,6 +339,17 @@ export declare const ControlQuotaResponse: z.ZodObject<{
242
339
  observed_at: string;
243
340
  freshness: "unknown" | "fresh" | "stale";
244
341
  }[];
342
+ absences: {
343
+ detail: string | null;
344
+ reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
345
+ subject: {
346
+ harness: string;
347
+ credential_route: "local" | "vendor_native" | "managed_api_key";
348
+ plan_label: string | null;
349
+ subject_id: string | null;
350
+ };
351
+ observed_at: string;
352
+ }[];
245
353
  refreshed_at: string | null;
246
354
  }, {
247
355
  snapshots: {
@@ -264,6 +372,17 @@ export declare const ControlQuotaResponse: z.ZodObject<{
264
372
  freshness: "unknown" | "fresh" | "stale";
265
373
  }[];
266
374
  refreshed_at: string | null;
375
+ absences?: {
376
+ reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
377
+ subject: {
378
+ harness: string;
379
+ credential_route: "local" | "vendor_native" | "managed_api_key";
380
+ plan_label?: string | null | undefined;
381
+ subject_id?: string | null | undefined;
382
+ };
383
+ observed_at: string;
384
+ detail?: string | null | undefined;
385
+ }[] | undefined;
267
386
  }>;
268
387
  export type ControlQuotaResponse = z.infer<typeof ControlQuotaResponse>;
269
388
  //# sourceMappingURL=quota.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../src/quota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW,iHAQgD,CAAC;AACzE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc,0CAE+B,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;;;;IAKrB;;;;;mDAK+C;;;;;;;;;;;;EAMhD,CAAC;AACJ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAUiD,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa;;;;;QA3BtB;;;;;uDAK+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BkC,CAAC;AACtF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;YAvC7B;;;;;2DAK+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCmB,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../src/quota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW,iHAQgD,CAAC;AACzE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc,0CAE+B,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;;;;IAKrB;;;;;mDAK+C;;;;;;;;;;;;EAMhD,CAAC;AACJ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAUiD,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa;;;;;QA3BtB;;;;;uDAK+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BkC,CAAC;AACtF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,kBAAkB,8GAQ+D,CAAC;AAC/F,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,YAAY;;;;;QAlDrB;;;;;uDAK+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqD8C,CAAC;AAClG,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,oBAAoB;;;;;;YA7D7B;;;;;2DAK+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAL/C;;;;;2DAK+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEmB,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
package/dist/quota.js CHANGED
@@ -48,9 +48,31 @@ export const QuotaSnapshot = z
48
48
  })
49
49
  .strict()
50
50
  .describe("All independently reported quota windows for one vendor-owned subject.");
51
+ export const QuotaAbsenceReason = z
52
+ .enum([
53
+ "not_logged_in",
54
+ "transport_unavailable",
55
+ "platform_unsupported",
56
+ "refresh_failed",
57
+ "no_source",
58
+ ])
59
+ .describe("Why a registered subject has no quota snapshot, in the source's own vocabulary.");
60
+ export const QuotaAbsence = z
61
+ .object({
62
+ subject: QuotaSubject,
63
+ reason: QuotaAbsenceReason,
64
+ detail: z.string().nullable().default(null),
65
+ observed_at: z.string().datetime({ offset: true }),
66
+ })
67
+ .strict()
68
+ .describe("A registered subject's typed missing-snapshot — absence is stated, never inferred.");
51
69
  export const ControlQuotaResponse = z
52
70
  .object({
53
71
  snapshots: z.array(QuotaSnapshot),
72
+ absences: z
73
+ .array(QuotaAbsence)
74
+ .default([])
75
+ .describe("Every registered subject reports either a snapshot or a typed absence — absence is never silent emptiness (zen: absence ≠ empty)."),
54
76
  refreshed_at: z.string().datetime({ offset: true }).nullable(),
55
77
  })
56
78
  .strict()
package/dist/quota.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"quota.js","sourceRoot":"","sources":["../src/quota.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,IAAI,CAAC;IACJ,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;CACrB,CAAC;KACD,QAAQ,CAAC,2DAA2D,CAAC,CAAC;AAGzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KACnC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;AAG3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C;;;;;mDAK+C;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAChD,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CACP,mHAAmH,CACpH,CAAC;AAGJ,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,EAAE,EAAE,EAAE;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/E,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,gEAAgE,CAAC,CAAC;AAG9E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACrC,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClD,SAAS,EAAE,cAAc;CAC1B,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,wEAAwE,CAAC,CAAC;AAGtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC/D,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,yDAAyD,CAAC,CAAC"}
1
+ {"version":3,"file":"quota.js","sourceRoot":"","sources":["../src/quota.ts"],"names":[],"mappings":"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"}
package/dist/raw.d.ts CHANGED
@@ -56,15 +56,15 @@ export declare const RawContextPacket: z.ZodObject<{
56
56
  }, "strip", z.ZodTypeAny, {
57
57
  path: string;
58
58
  disposition: "full" | "included" | "manifest_only" | "excluded" | "sensitive" | "binary" | "vendored" | "oversized" | "read_error" | "omitted";
59
+ reason?: string | undefined;
59
60
  hash?: string | undefined;
60
61
  bytes?: number | undefined;
61
- reason?: string | undefined;
62
62
  }, {
63
63
  path: string;
64
64
  disposition: "full" | "included" | "manifest_only" | "excluded" | "sensitive" | "binary" | "vendored" | "oversized" | "read_error" | "omitted";
65
+ reason?: string | undefined;
65
66
  hash?: string | undefined;
66
67
  bytes?: number | undefined;
67
- reason?: string | undefined;
68
68
  }>, "many">;
69
69
  omissions: z.ZodArray<z.ZodObject<{
70
70
  path: z.ZodString;
@@ -100,9 +100,9 @@ export declare const RawContextPacket: z.ZodObject<{
100
100
  file_manifest: {
101
101
  path: string;
102
102
  disposition: "full" | "included" | "manifest_only" | "excluded" | "sensitive" | "binary" | "vendored" | "oversized" | "read_error" | "omitted";
103
+ reason?: string | undefined;
103
104
  hash?: string | undefined;
104
105
  bytes?: number | undefined;
105
- reason?: string | undefined;
106
106
  }[];
107
107
  omissions: {
108
108
  path: string;
@@ -127,9 +127,9 @@ export declare const RawContextPacket: z.ZodObject<{
127
127
  file_manifest: {
128
128
  path: string;
129
129
  disposition: "full" | "included" | "manifest_only" | "excluded" | "sensitive" | "binary" | "vendored" | "oversized" | "read_error" | "omitted";
130
+ reason?: string | undefined;
130
131
  hash?: string | undefined;
131
132
  bytes?: number | undefined;
132
- reason?: string | undefined;
133
133
  }[];
134
134
  omissions: {
135
135
  path: string;
@@ -104,6 +104,8 @@ export declare const HarnessStatusDto: z.ZodObject<{
104
104
  max_count: number;
105
105
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
106
106
  }>, "many">>;
107
+ mcp_injection: z.ZodDefault<z.ZodBoolean>;
108
+ mcp_injection_requires_full_access: z.ZodDefault<z.ZodBoolean>;
107
109
  }, "strip", z.ZodTypeAny, {
108
110
  auth: {
109
111
  supported_sources: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[];
@@ -127,6 +129,8 @@ export declare const HarnessStatusDto: z.ZodObject<{
127
129
  max_count: number;
128
130
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
129
131
  }[];
132
+ mcp_injection: boolean;
133
+ mcp_injection_requires_full_access: boolean;
130
134
  }, {
131
135
  auth?: {
132
136
  supported_sources?: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[] | undefined;
@@ -150,6 +154,8 @@ export declare const HarnessStatusDto: z.ZodObject<{
150
154
  max_count: number;
151
155
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
152
156
  }[] | undefined;
157
+ mcp_injection?: boolean | undefined;
158
+ mcp_injection_requires_full_access?: boolean | undefined;
153
159
  }>>;
154
160
  capabilities: z.ZodObject<{
155
161
  plan: z.ZodDefault<z.ZodBoolean>;
@@ -165,7 +171,6 @@ export declare const HarnessStatusDto: z.ZodObject<{
165
171
  max_turns: z.ZodDefault<z.ZodBoolean>;
166
172
  tool_lists: z.ZodDefault<z.ZodBoolean>;
167
173
  interactive: z.ZodDefault<z.ZodBoolean>;
168
- orchestrate: z.ZodDefault<z.ZodBoolean>;
169
174
  json_schema_output: z.ZodDefault<z.ZodBoolean>;
170
175
  effort_levels: z.ZodDefault<z.ZodArray<z.ZodEnum<["low", "medium", "high", "xhigh", "max"]>, "many">>;
171
176
  known_models: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
@@ -181,7 +186,6 @@ export declare const HarnessStatusDto: z.ZodObject<{
181
186
  known_models_verified_against: z.ZodDefault<z.ZodNullable<z.ZodString>>;
182
187
  }, "strip", z.ZodTypeAny, {
183
188
  plan: boolean;
184
- orchestrate: boolean;
185
189
  implement: boolean;
186
190
  create_from_scratch: boolean;
187
191
  review: boolean;
@@ -203,7 +207,6 @@ export declare const HarnessStatusDto: z.ZodObject<{
203
207
  known_models_verified_against: string | null;
204
208
  }, {
205
209
  plan?: boolean | undefined;
206
- orchestrate?: boolean | undefined;
207
210
  implement?: boolean | undefined;
208
211
  create_from_scratch?: boolean | undefined;
209
212
  review?: boolean | undefined;
@@ -254,10 +257,11 @@ export declare const HarnessStatusDto: z.ZodObject<{
254
257
  max_count: number;
255
258
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
256
259
  }[];
260
+ mcp_injection: boolean;
261
+ mcp_injection_requires_full_access: boolean;
257
262
  };
258
263
  capabilities: {
259
264
  plan: boolean;
260
- orchestrate: boolean;
261
265
  implement: boolean;
262
266
  create_from_scratch: boolean;
263
267
  review: boolean;
@@ -288,7 +292,6 @@ export declare const HarnessStatusDto: z.ZodObject<{
288
292
  id: string;
289
293
  capabilities: {
290
294
  plan?: boolean | undefined;
291
- orchestrate?: boolean | undefined;
292
295
  implement?: boolean | undefined;
293
296
  create_from_scratch?: boolean | undefined;
294
297
  review?: boolean | undefined;
@@ -335,6 +338,8 @@ export declare const HarnessStatusDto: z.ZodObject<{
335
338
  max_count: number;
336
339
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
337
340
  }[] | undefined;
341
+ mcp_injection?: boolean | undefined;
342
+ mcp_injection_requires_full_access?: boolean | undefined;
338
343
  } | undefined;
339
344
  auth_modes?: ("api_key" | "none" | "local_session")[] | undefined;
340
345
  access_profiles_supported?: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[] | undefined;
@@ -474,10 +479,11 @@ export declare const HarnessStatusDto: z.ZodObject<{
474
479
  max_count: number;
475
480
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
476
481
  }[];
482
+ mcp_injection: boolean;
483
+ mcp_injection_requires_full_access: boolean;
477
484
  };
478
485
  capabilities: {
479
486
  plan: boolean;
480
- orchestrate: boolean;
481
487
  implement: boolean;
482
488
  create_from_scratch: boolean;
483
489
  review: boolean;
@@ -526,7 +532,6 @@ export declare const HarnessStatusDto: z.ZodObject<{
526
532
  id: string;
527
533
  capabilities: {
528
534
  plan?: boolean | undefined;
529
- orchestrate?: boolean | undefined;
530
535
  implement?: boolean | undefined;
531
536
  create_from_scratch?: boolean | undefined;
532
537
  review?: boolean | undefined;
@@ -573,6 +578,8 @@ export declare const HarnessStatusDto: z.ZodObject<{
573
578
  max_count: number;
574
579
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
575
580
  }[] | undefined;
581
+ mcp_injection?: boolean | undefined;
582
+ mcp_injection_requires_full_access?: boolean | undefined;
576
583
  } | undefined;
577
584
  auth_modes?: ("api_key" | "none" | "local_session")[] | undefined;
578
585
  access_profiles_supported?: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAgB2C,CAAC;AAC1E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWzB;;;yEAGqE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBrE;2EACuE;;;;;;;;;;;;;;;;;;;;IAKvE,+DAA+D;;IAM/D;;qDAEiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBlD,CAAC;AACJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAgB2C,CAAC;AAC1E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWzB;;;yEAGqE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBrE;2EACuE;;;;;;;;;;;;;;;;;;;;IAKvE,+DAA+D;;IAM/D;;qDAEiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBlD,CAAC;AACJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ModeKind } from "./primitives.js";
2
+ /** Mode/strategy coherence (D11): meaningless flag combinations are refused
3
+ * at every wire boundary instead of being silently ignored. ONE owner — the
4
+ * control-api normalization funnel throws these as 400s; kept beside the
5
+ * schema (not baked in as a union) so `.omit`/`.shape` consumers survive. */
6
+ export declare function runStartStrategyViolations(value: {
7
+ mode?: ModeKind;
8
+ deepScan?: boolean;
9
+ untilClean?: boolean;
10
+ attempts?: number | null;
11
+ create?: boolean;
12
+ council?: boolean;
13
+ n?: number;
14
+ delegate?: boolean;
15
+ reviewerPanel?: unknown;
16
+ }): string[];
17
+ //# sourceMappingURL=run-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-strategy.d.ts","sourceRoot":"","sources":["../src/run-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;6EAG6E;AAC7E,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,MAAM,EAAE,CA8CX"}
@@ -0,0 +1,47 @@
1
+ /** Mode/strategy coherence (D11): meaningless flag combinations are refused
2
+ * at every wire boundary instead of being silently ignored. ONE owner — the
3
+ * control-api normalization funnel throws these as 400s; kept beside the
4
+ * schema (not baked in as a union) so `.omit`/`.shape` consumers survive. */
5
+ export function runStartStrategyViolations(value) {
6
+ const mode = value.mode ?? "agent";
7
+ const violations = [];
8
+ if (value.deepScan === true && mode !== "ask") {
9
+ violations.push(`deepScan is an ask strategy; mode is '${mode}'`);
10
+ }
11
+ if (value.untilClean === true && mode !== "agent") {
12
+ violations.push(`untilClean is an agent strategy; mode is '${mode}'`);
13
+ }
14
+ if (value.attempts != null && mode !== "agent") {
15
+ violations.push(`attempts is an agent strategy; mode is '${mode}'`);
16
+ }
17
+ if (value.create === true && mode !== "agent") {
18
+ violations.push(`create is an agent strategy; mode is '${mode}'`);
19
+ }
20
+ // Council (INV-031) is a PLAN strategy: N harnesses draft in parallel, the
21
+ // primary merges into one plan + one question set.
22
+ if (value.council === true && mode !== "plan") {
23
+ violations.push(`council is a plan strategy; mode is '${mode}'`);
24
+ }
25
+ // `n` widens best-of (agent), deep-scan (ask), or council membership (plan).
26
+ // On a PLAIN plan run (no council) it is meaningless and refused; council is
27
+ // the one flag that legalizes `n` on a plan.
28
+ const nLegal = mode === "agent" ||
29
+ (mode === "ask" && value.deepScan === true) ||
30
+ (mode === "plan" && value.council === true);
31
+ if (value.n !== undefined && !nLegal) {
32
+ violations.push(mode === "plan"
33
+ ? `n sets council membership width on a plan run; pass --council (mode is 'plan' without council)`
34
+ : `n sets the best-of race width (agent) or deep-scan width (ask); mode is '${mode}'`);
35
+ }
36
+ if (value.council === true && value.n !== undefined && (value.n < 2 || value.n > 4)) {
37
+ violations.push(`council membership n must be between 2 and 4 (got ${value.n})`);
38
+ }
39
+ if (value.delegate === true && mode !== "agent") {
40
+ violations.push(`delegate is an agent strategy; mode is '${mode}'`);
41
+ }
42
+ if (value.reviewerPanel !== undefined && mode !== "agent") {
43
+ violations.push(`reviewerPanel only applies to agent runs (plan review was retired in v3; Council is the plan critique path); mode is '${mode}'`);
44
+ }
45
+ return violations;
46
+ }
47
+ //# sourceMappingURL=run-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-strategy.js","sourceRoot":"","sources":["../src/run-strategy.ts"],"names":[],"mappings":"AAEA;;;6EAG6E;AAC7E,MAAM,UAAU,0BAA0B,CAAC,KAU1C;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;IACnC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC9C,UAAU,CAAC,IAAI,CAAC,yCAAyC,IAAI,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,6CAA6C,IAAI,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/C,UAAU,CAAC,IAAI,CAAC,2CAA2C,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9C,UAAU,CAAC,IAAI,CAAC,yCAAyC,IAAI,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,2EAA2E;IAC3E,mDAAmD;IACnD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9C,UAAU,CAAC,IAAI,CAAC,wCAAwC,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,6EAA6E;IAC7E,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,MAAM,GACV,IAAI,KAAK,OAAO;QAChB,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;QAC3C,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CACb,IAAI,KAAK,MAAM;YACb,CAAC,CAAC,gGAAgG;YAClG,CAAC,CAAC,4EAA4E,IAAI,GAAG,CACxF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpF,UAAU,CAAC,IAAI,CAAC,qDAAqD,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAChD,UAAU,CAAC,IAAI,CAAC,2CAA2C,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1D,UAAU,CAAC,IAAI,CACb,yHAAyH,IAAI,GAAG,CACjI,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}