@slowcook-ai/cli 0.19.0-alpha.41 → 0.19.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.
Files changed (83) hide show
  1. package/AGENTS.md +2 -2
  2. package/dist/cli.js +19 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/brand/index.d.ts +3 -35
  5. package/dist/commands/brand/index.d.ts.map +1 -1
  6. package/dist/commands/brew/agent.d.ts +7 -2
  7. package/dist/commands/brew/agent.d.ts.map +1 -1
  8. package/dist/commands/brew/agent.js +9 -0
  9. package/dist/commands/brew/agent.js.map +1 -1
  10. package/dist/commands/brew/halt.d.ts +26 -0
  11. package/dist/commands/brew/halt.d.ts.map +1 -1
  12. package/dist/commands/brew/halt.js.map +1 -1
  13. package/dist/commands/brew/index.d.ts.map +1 -1
  14. package/dist/commands/brew/index.js +81 -29
  15. package/dist/commands/brew/index.js.map +1 -1
  16. package/dist/commands/brew/pair-navigator.d.ts +7 -0
  17. package/dist/commands/brew/pair-navigator.d.ts.map +1 -1
  18. package/dist/commands/brew/pair-navigator.js +4 -0
  19. package/dist/commands/brew/pair-navigator.js.map +1 -1
  20. package/dist/commands/chef/drift-fix.d.ts +32 -3
  21. package/dist/commands/chef/drift-fix.d.ts.map +1 -1
  22. package/dist/commands/chef/drift-fix.js +381 -14
  23. package/dist/commands/chef/drift-fix.js.map +1 -1
  24. package/dist/commands/dev-env/config.d.ts +18 -97
  25. package/dist/commands/dev-env/config.d.ts.map +1 -1
  26. package/dist/commands/eval/index.d.ts.map +1 -1
  27. package/dist/commands/eval/index.js +13 -2
  28. package/dist/commands/eval/index.js.map +1 -1
  29. package/dist/commands/init/index.d.ts.map +1 -1
  30. package/dist/commands/init/index.js +33 -0
  31. package/dist/commands/init/index.js.map +1 -1
  32. package/dist/commands/init/mock-vite.d.ts.map +1 -1
  33. package/dist/commands/init/mock-vite.js +2 -0
  34. package/dist/commands/init/mock-vite.js.map +1 -1
  35. package/dist/commands/knowledge-add.d.ts +52 -0
  36. package/dist/commands/knowledge-add.d.ts.map +1 -0
  37. package/dist/commands/knowledge-add.js +232 -0
  38. package/dist/commands/knowledge-add.js.map +1 -0
  39. package/dist/commands/recon/index.d.ts +14 -1
  40. package/dist/commands/recon/index.d.ts.map +1 -1
  41. package/dist/commands/recon/index.js +43 -2
  42. package/dist/commands/recon/index.js.map +1 -1
  43. package/dist/commands/refine/agent.d.ts +11 -0
  44. package/dist/commands/refine/agent.d.ts.map +1 -1
  45. package/dist/commands/refine/agent.js +72 -2
  46. package/dist/commands/refine/agent.js.map +1 -1
  47. package/dist/commands/refine/context.d.ts +27 -1
  48. package/dist/commands/refine/context.d.ts.map +1 -1
  49. package/dist/commands/refine/context.js +425 -11
  50. package/dist/commands/refine/context.js.map +1 -1
  51. package/dist/commands/refine/git-attention.d.ts +123 -0
  52. package/dist/commands/refine/git-attention.d.ts.map +1 -0
  53. package/dist/commands/refine/git-attention.js +378 -0
  54. package/dist/commands/refine/git-attention.js.map +1 -0
  55. package/dist/commands/refine/history-index.d.ts +7 -0
  56. package/dist/commands/refine/history-index.d.ts.map +1 -1
  57. package/dist/commands/refine/history-index.js.map +1 -1
  58. package/dist/commands/refine/index.d.ts.map +1 -1
  59. package/dist/commands/refine/index.js +76 -20
  60. package/dist/commands/refine/index.js.map +1 -1
  61. package/dist/commands/refine/multifurcate.d.ts +129 -0
  62. package/dist/commands/refine/multifurcate.d.ts.map +1 -0
  63. package/dist/commands/refine/multifurcate.js +247 -0
  64. package/dist/commands/refine/multifurcate.js.map +1 -0
  65. package/dist/commands/refine/spec-yaml.d.ts +211 -1231
  66. package/dist/commands/refine/spec-yaml.d.ts.map +1 -1
  67. package/dist/commands/refresh-knowledge.d.ts +126 -0
  68. package/dist/commands/refresh-knowledge.d.ts.map +1 -0
  69. package/dist/commands/refresh-knowledge.js +1010 -0
  70. package/dist/commands/refresh-knowledge.js.map +1 -0
  71. package/dist/commands/testgen/agent.d.ts +13 -0
  72. package/dist/commands/testgen/agent.d.ts.map +1 -1
  73. package/dist/commands/testgen/agent.js +103 -2
  74. package/dist/commands/testgen/agent.js.map +1 -1
  75. package/dist/commands/upsert-agent-docs.d.ts +48 -0
  76. package/dist/commands/upsert-agent-docs.d.ts.map +1 -0
  77. package/dist/commands/upsert-agent-docs.js +298 -0
  78. package/dist/commands/upsert-agent-docs.js.map +1 -0
  79. package/dist/lib/budget.d.ts +2 -52
  80. package/dist/lib/budget.d.ts.map +1 -1
  81. package/dist/lib/mock-shape.d.ts +5 -20
  82. package/dist/lib/mock-shape.d.ts.map +1 -1
  83. package/package.json +9 -6
@@ -5,506 +5,151 @@ export declare const SPECS_DIR = "specs";
5
5
  export declare const INDEX_FILE: string;
6
6
  export declare const SpecProposalsSchema: z.ZodObject<{
7
7
  schema: z.ZodOptional<z.ZodObject<{
8
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
8
+ status: z.ZodEnum<{
9
+ pending: "pending";
10
+ approved: "approved";
11
+ rejected: "rejected";
12
+ deferred: "deferred";
13
+ blocked_on_clarification: "blocked_on_clarification";
14
+ }>;
9
15
  proposed_by: z.ZodString;
10
16
  approved_by: z.ZodOptional<z.ZodString>;
11
17
  approved_at: z.ZodOptional<z.ZodString>;
12
18
  rationale: z.ZodOptional<z.ZodString>;
13
- } & {
14
19
  sql: z.ZodString;
15
- }, "strip", z.ZodTypeAny, {
16
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
17
- proposed_by: string;
18
- sql: string;
19
- approved_by?: string | undefined;
20
- approved_at?: string | undefined;
21
- rationale?: string | undefined;
22
- }, {
23
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
24
- proposed_by: string;
25
- sql: string;
26
- approved_by?: string | undefined;
27
- approved_at?: string | undefined;
28
- rationale?: string | undefined;
29
- }>>;
20
+ }, z.core.$strip>>;
30
21
  ui_layout: z.ZodOptional<z.ZodObject<{
31
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
22
+ status: z.ZodEnum<{
23
+ pending: "pending";
24
+ approved: "approved";
25
+ rejected: "rejected";
26
+ deferred: "deferred";
27
+ blocked_on_clarification: "blocked_on_clarification";
28
+ }>;
32
29
  proposed_by: z.ZodString;
33
30
  approved_by: z.ZodOptional<z.ZodString>;
34
31
  approved_at: z.ZodOptional<z.ZodString>;
35
32
  rationale: z.ZodOptional<z.ZodString>;
36
- } & {
37
- viewport_coverage: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
- components_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
39
- tokens_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
40
- tokens_to_add: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
41
- }, "strip", z.ZodTypeAny, {
42
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
43
- proposed_by: string;
44
- approved_by?: string | undefined;
45
- approved_at?: string | undefined;
46
- rationale?: string | undefined;
47
- viewport_coverage?: string[] | undefined;
48
- components_to_reuse?: string[] | undefined;
49
- tokens_to_reuse?: string[] | undefined;
50
- tokens_to_add?: string[] | undefined;
51
- }, {
52
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
53
- proposed_by: string;
54
- approved_by?: string | undefined;
55
- approved_at?: string | undefined;
56
- rationale?: string | undefined;
57
- viewport_coverage?: string[] | undefined;
58
- components_to_reuse?: string[] | undefined;
59
- tokens_to_reuse?: string[] | undefined;
60
- tokens_to_add?: string[] | undefined;
61
- }>>;
33
+ viewport_coverage: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ components_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ tokens_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ tokens_to_add: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
+ }, z.core.$strip>>;
62
38
  routes: z.ZodOptional<z.ZodObject<{
63
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
39
+ status: z.ZodEnum<{
40
+ pending: "pending";
41
+ approved: "approved";
42
+ rejected: "rejected";
43
+ deferred: "deferred";
44
+ blocked_on_clarification: "blocked_on_clarification";
45
+ }>;
64
46
  proposed_by: z.ZodString;
65
47
  approved_by: z.ZodOptional<z.ZodString>;
66
48
  approved_at: z.ZodOptional<z.ZodString>;
67
49
  rationale: z.ZodOptional<z.ZodString>;
68
- } & {
69
50
  paths: z.ZodArray<z.ZodObject<{
70
51
  path: z.ZodString;
71
52
  file: z.ZodString;
72
- }, "strip", z.ZodTypeAny, {
73
- path: string;
74
- file: string;
75
- }, {
76
- path: string;
77
- file: string;
78
- }>, "many">;
79
- }, "strip", z.ZodTypeAny, {
80
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
81
- proposed_by: string;
82
- paths: {
83
- path: string;
84
- file: string;
85
- }[];
86
- approved_by?: string | undefined;
87
- approved_at?: string | undefined;
88
- rationale?: string | undefined;
89
- }, {
90
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
91
- proposed_by: string;
92
- paths: {
93
- path: string;
94
- file: string;
95
- }[];
96
- approved_by?: string | undefined;
97
- approved_at?: string | undefined;
98
- rationale?: string | undefined;
99
- }>>;
53
+ }, z.core.$strip>>;
54
+ }, z.core.$strip>>;
100
55
  auth: z.ZodOptional<z.ZodObject<{
101
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
56
+ status: z.ZodEnum<{
57
+ pending: "pending";
58
+ approved: "approved";
59
+ rejected: "rejected";
60
+ deferred: "deferred";
61
+ blocked_on_clarification: "blocked_on_clarification";
62
+ }>;
102
63
  proposed_by: z.ZodString;
103
64
  approved_by: z.ZodOptional<z.ZodString>;
104
65
  approved_at: z.ZodOptional<z.ZodString>;
105
66
  rationale: z.ZodOptional<z.ZodString>;
106
- } & {
107
- requirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
108
- }, "strip", z.ZodTypeAny, {
109
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
110
- proposed_by: string;
111
- approved_by?: string | undefined;
112
- approved_at?: string | undefined;
113
- rationale?: string | undefined;
114
- requirements?: string[] | undefined;
115
- }, {
116
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
117
- proposed_by: string;
118
- approved_by?: string | undefined;
119
- approved_at?: string | undefined;
120
- rationale?: string | undefined;
121
- requirements?: string[] | undefined;
122
- }>>;
67
+ requirements: z.ZodOptional<z.ZodArray<z.ZodString>>;
68
+ }, z.core.$strip>>;
123
69
  perf_budget: z.ZodOptional<z.ZodObject<{
124
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
70
+ status: z.ZodEnum<{
71
+ pending: "pending";
72
+ approved: "approved";
73
+ rejected: "rejected";
74
+ deferred: "deferred";
75
+ blocked_on_clarification: "blocked_on_clarification";
76
+ }>;
125
77
  proposed_by: z.ZodString;
126
78
  approved_by: z.ZodOptional<z.ZodString>;
127
79
  approved_at: z.ZodOptional<z.ZodString>;
128
80
  rationale: z.ZodOptional<z.ZodString>;
129
- } & {
130
81
  budgets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
131
- }, "strip", z.ZodTypeAny, {
132
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
133
- proposed_by: string;
134
- approved_by?: string | undefined;
135
- approved_at?: string | undefined;
136
- rationale?: string | undefined;
137
- budgets?: Record<string, number> | undefined;
138
- }, {
139
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
140
- proposed_by: string;
141
- approved_by?: string | undefined;
142
- approved_at?: string | undefined;
143
- rationale?: string | undefined;
144
- budgets?: Record<string, number> | undefined;
145
- }>>;
82
+ }, z.core.$strip>>;
146
83
  observability: z.ZodOptional<z.ZodObject<{
147
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
84
+ status: z.ZodEnum<{
85
+ pending: "pending";
86
+ approved: "approved";
87
+ rejected: "rejected";
88
+ deferred: "deferred";
89
+ blocked_on_clarification: "blocked_on_clarification";
90
+ }>;
148
91
  proposed_by: z.ZodString;
149
92
  approved_by: z.ZodOptional<z.ZodString>;
150
93
  approved_at: z.ZodOptional<z.ZodString>;
151
94
  rationale: z.ZodOptional<z.ZodString>;
152
- } & {
153
- log_events: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
+ log_events: z.ZodOptional<z.ZodArray<z.ZodString>>;
154
96
  metrics: z.ZodOptional<z.ZodArray<z.ZodObject<{
155
97
  name: z.ZodString;
156
98
  type: z.ZodString;
157
- }, "strip", z.ZodTypeAny, {
158
- type: string;
159
- name: string;
160
- }, {
161
- type: string;
162
- name: string;
163
- }>, "many">>;
164
- }, "strip", z.ZodTypeAny, {
165
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
166
- proposed_by: string;
167
- approved_by?: string | undefined;
168
- approved_at?: string | undefined;
169
- rationale?: string | undefined;
170
- log_events?: string[] | undefined;
171
- metrics?: {
172
- type: string;
173
- name: string;
174
- }[] | undefined;
175
- }, {
176
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
177
- proposed_by: string;
178
- approved_by?: string | undefined;
179
- approved_at?: string | undefined;
180
- rationale?: string | undefined;
181
- log_events?: string[] | undefined;
182
- metrics?: {
183
- type: string;
184
- name: string;
185
- }[] | undefined;
186
- }>>;
99
+ }, z.core.$strip>>>;
100
+ }, z.core.$strip>>;
187
101
  infra: z.ZodOptional<z.ZodObject<{
188
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
102
+ status: z.ZodEnum<{
103
+ pending: "pending";
104
+ approved: "approved";
105
+ rejected: "rejected";
106
+ deferred: "deferred";
107
+ blocked_on_clarification: "blocked_on_clarification";
108
+ }>;
189
109
  proposed_by: z.ZodString;
190
110
  approved_by: z.ZodOptional<z.ZodString>;
191
111
  approved_at: z.ZodOptional<z.ZodString>;
192
112
  rationale: z.ZodOptional<z.ZodString>;
193
- } & {
194
113
  runtime: z.ZodOptional<z.ZodString>;
195
114
  deploy_target: z.ZodOptional<z.ZodString>;
196
115
  notes: z.ZodOptional<z.ZodString>;
197
- }, "strip", z.ZodTypeAny, {
198
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
199
- proposed_by: string;
200
- approved_by?: string | undefined;
201
- approved_at?: string | undefined;
202
- rationale?: string | undefined;
203
- runtime?: string | undefined;
204
- deploy_target?: string | undefined;
205
- notes?: string | undefined;
206
- }, {
207
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
208
- proposed_by: string;
209
- approved_by?: string | undefined;
210
- approved_at?: string | undefined;
211
- rationale?: string | undefined;
212
- runtime?: string | undefined;
213
- deploy_target?: string | undefined;
214
- notes?: string | undefined;
215
- }>>;
116
+ }, z.core.$strip>>;
216
117
  api_shape: z.ZodOptional<z.ZodObject<{
217
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
118
+ status: z.ZodEnum<{
119
+ pending: "pending";
120
+ approved: "approved";
121
+ rejected: "rejected";
122
+ deferred: "deferred";
123
+ blocked_on_clarification: "blocked_on_clarification";
124
+ }>;
218
125
  proposed_by: z.ZodString;
219
126
  approved_by: z.ZodOptional<z.ZodString>;
220
127
  approved_at: z.ZodOptional<z.ZodString>;
221
128
  rationale: z.ZodOptional<z.ZodString>;
222
- } & {
223
129
  endpoints: z.ZodOptional<z.ZodArray<z.ZodObject<{
224
130
  method: z.ZodString;
225
131
  path: z.ZodString;
226
132
  request_schema: z.ZodOptional<z.ZodUnknown>;
227
133
  responses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
228
- }, "strip", z.ZodTypeAny, {
229
- path: string;
230
- method: string;
231
- request_schema?: unknown;
232
- responses?: Record<string, unknown> | undefined;
233
- }, {
234
- path: string;
235
- method: string;
236
- request_schema?: unknown;
237
- responses?: Record<string, unknown> | undefined;
238
- }>, "many">>;
239
- }, "strip", z.ZodTypeAny, {
240
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
241
- proposed_by: string;
242
- approved_by?: string | undefined;
243
- approved_at?: string | undefined;
244
- rationale?: string | undefined;
245
- endpoints?: {
246
- path: string;
247
- method: string;
248
- request_schema?: unknown;
249
- responses?: Record<string, unknown> | undefined;
250
- }[] | undefined;
251
- }, {
252
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
253
- proposed_by: string;
254
- approved_by?: string | undefined;
255
- approved_at?: string | undefined;
256
- rationale?: string | undefined;
257
- endpoints?: {
258
- path: string;
259
- method: string;
260
- request_schema?: unknown;
261
- responses?: Record<string, unknown> | undefined;
262
- }[] | undefined;
263
- }>>;
264
- /**
265
- * 0.14.0-α.1 (mockup-first refinement, data-layer seam) — fixtures
266
- * the agent has hand-authored to make a mockup behaviorally complete.
267
- * Keyed by domain (a single-word slug derived from the story's primary
268
- * resource: `notifications`, `bookmarks`, `feed`). Each domain's
269
- * `seed` is an arbitrary record of named arrays/values that the
270
- * generated `<domain>.mock.ts` will export verbatim.
271
- *
272
- * Example:
273
- * fixtures:
274
- * status: pending
275
- * proposed_by: refine-agent
276
- * by_domain:
277
- * notifications:
278
- * seed:
279
- * list:
280
- * - { id: "n-1", actor_handle: "@alice", read_at: null }
281
- * - { id: "n-2", actor_handle: "@bob", read_at: "2026-04-25T12:00:00Z" }
282
- * unread_count: 1
283
- *
284
- * Refine writes `src/lib/data/notifications.mock.ts` exporting
285
- * `seed.list` and `seed.unread_count` as JSON-equivalent constants.
286
- * The page/component imports from `@/lib/data/notifications`; an
287
- * env flag `MOCK_STORY_N=1` routes the import to the mock module.
288
- * Brew (later) writes the real `notifications.ts` and removes the flag.
289
- */
134
+ }, z.core.$strip>>>;
135
+ }, z.core.$strip>>;
290
136
  fixtures: z.ZodOptional<z.ZodObject<{
291
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
137
+ status: z.ZodEnum<{
138
+ pending: "pending";
139
+ approved: "approved";
140
+ rejected: "rejected";
141
+ deferred: "deferred";
142
+ blocked_on_clarification: "blocked_on_clarification";
143
+ }>;
292
144
  proposed_by: z.ZodString;
293
145
  approved_by: z.ZodOptional<z.ZodString>;
294
146
  approved_at: z.ZodOptional<z.ZodString>;
295
147
  rationale: z.ZodOptional<z.ZodString>;
296
- } & {
297
148
  by_domain: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
298
149
  seed: z.ZodRecord<z.ZodString, z.ZodUnknown>;
299
- }, "strip", z.ZodTypeAny, {
300
- seed: Record<string, unknown>;
301
- }, {
302
- seed: Record<string, unknown>;
303
- }>>>;
304
- }, "strip", z.ZodTypeAny, {
305
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
306
- proposed_by: string;
307
- approved_by?: string | undefined;
308
- approved_at?: string | undefined;
309
- rationale?: string | undefined;
310
- by_domain?: Record<string, {
311
- seed: Record<string, unknown>;
312
- }> | undefined;
313
- }, {
314
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
315
- proposed_by: string;
316
- approved_by?: string | undefined;
317
- approved_at?: string | undefined;
318
- rationale?: string | undefined;
319
- by_domain?: Record<string, {
320
- seed: Record<string, unknown>;
321
- }> | undefined;
322
- }>>;
323
- }, "strip", z.ZodTypeAny, {
324
- schema?: {
325
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
326
- proposed_by: string;
327
- sql: string;
328
- approved_by?: string | undefined;
329
- approved_at?: string | undefined;
330
- rationale?: string | undefined;
331
- } | undefined;
332
- ui_layout?: {
333
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
334
- proposed_by: string;
335
- approved_by?: string | undefined;
336
- approved_at?: string | undefined;
337
- rationale?: string | undefined;
338
- viewport_coverage?: string[] | undefined;
339
- components_to_reuse?: string[] | undefined;
340
- tokens_to_reuse?: string[] | undefined;
341
- tokens_to_add?: string[] | undefined;
342
- } | undefined;
343
- routes?: {
344
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
345
- proposed_by: string;
346
- paths: {
347
- path: string;
348
- file: string;
349
- }[];
350
- approved_by?: string | undefined;
351
- approved_at?: string | undefined;
352
- rationale?: string | undefined;
353
- } | undefined;
354
- auth?: {
355
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
356
- proposed_by: string;
357
- approved_by?: string | undefined;
358
- approved_at?: string | undefined;
359
- rationale?: string | undefined;
360
- requirements?: string[] | undefined;
361
- } | undefined;
362
- perf_budget?: {
363
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
364
- proposed_by: string;
365
- approved_by?: string | undefined;
366
- approved_at?: string | undefined;
367
- rationale?: string | undefined;
368
- budgets?: Record<string, number> | undefined;
369
- } | undefined;
370
- observability?: {
371
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
372
- proposed_by: string;
373
- approved_by?: string | undefined;
374
- approved_at?: string | undefined;
375
- rationale?: string | undefined;
376
- log_events?: string[] | undefined;
377
- metrics?: {
378
- type: string;
379
- name: string;
380
- }[] | undefined;
381
- } | undefined;
382
- infra?: {
383
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
384
- proposed_by: string;
385
- approved_by?: string | undefined;
386
- approved_at?: string | undefined;
387
- rationale?: string | undefined;
388
- runtime?: string | undefined;
389
- deploy_target?: string | undefined;
390
- notes?: string | undefined;
391
- } | undefined;
392
- api_shape?: {
393
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
394
- proposed_by: string;
395
- approved_by?: string | undefined;
396
- approved_at?: string | undefined;
397
- rationale?: string | undefined;
398
- endpoints?: {
399
- path: string;
400
- method: string;
401
- request_schema?: unknown;
402
- responses?: Record<string, unknown> | undefined;
403
- }[] | undefined;
404
- } | undefined;
405
- fixtures?: {
406
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
407
- proposed_by: string;
408
- approved_by?: string | undefined;
409
- approved_at?: string | undefined;
410
- rationale?: string | undefined;
411
- by_domain?: Record<string, {
412
- seed: Record<string, unknown>;
413
- }> | undefined;
414
- } | undefined;
415
- }, {
416
- schema?: {
417
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
418
- proposed_by: string;
419
- sql: string;
420
- approved_by?: string | undefined;
421
- approved_at?: string | undefined;
422
- rationale?: string | undefined;
423
- } | undefined;
424
- ui_layout?: {
425
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
426
- proposed_by: string;
427
- approved_by?: string | undefined;
428
- approved_at?: string | undefined;
429
- rationale?: string | undefined;
430
- viewport_coverage?: string[] | undefined;
431
- components_to_reuse?: string[] | undefined;
432
- tokens_to_reuse?: string[] | undefined;
433
- tokens_to_add?: string[] | undefined;
434
- } | undefined;
435
- routes?: {
436
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
437
- proposed_by: string;
438
- paths: {
439
- path: string;
440
- file: string;
441
- }[];
442
- approved_by?: string | undefined;
443
- approved_at?: string | undefined;
444
- rationale?: string | undefined;
445
- } | undefined;
446
- auth?: {
447
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
448
- proposed_by: string;
449
- approved_by?: string | undefined;
450
- approved_at?: string | undefined;
451
- rationale?: string | undefined;
452
- requirements?: string[] | undefined;
453
- } | undefined;
454
- perf_budget?: {
455
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
456
- proposed_by: string;
457
- approved_by?: string | undefined;
458
- approved_at?: string | undefined;
459
- rationale?: string | undefined;
460
- budgets?: Record<string, number> | undefined;
461
- } | undefined;
462
- observability?: {
463
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
464
- proposed_by: string;
465
- approved_by?: string | undefined;
466
- approved_at?: string | undefined;
467
- rationale?: string | undefined;
468
- log_events?: string[] | undefined;
469
- metrics?: {
470
- type: string;
471
- name: string;
472
- }[] | undefined;
473
- } | undefined;
474
- infra?: {
475
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
476
- proposed_by: string;
477
- approved_by?: string | undefined;
478
- approved_at?: string | undefined;
479
- rationale?: string | undefined;
480
- runtime?: string | undefined;
481
- deploy_target?: string | undefined;
482
- notes?: string | undefined;
483
- } | undefined;
484
- api_shape?: {
485
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
486
- proposed_by: string;
487
- approved_by?: string | undefined;
488
- approved_at?: string | undefined;
489
- rationale?: string | undefined;
490
- endpoints?: {
491
- path: string;
492
- method: string;
493
- request_schema?: unknown;
494
- responses?: Record<string, unknown> | undefined;
495
- }[] | undefined;
496
- } | undefined;
497
- fixtures?: {
498
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
499
- proposed_by: string;
500
- approved_by?: string | undefined;
501
- approved_at?: string | undefined;
502
- rationale?: string | undefined;
503
- by_domain?: Record<string, {
504
- seed: Record<string, unknown>;
505
- }> | undefined;
506
- } | undefined;
507
- }>;
150
+ }, z.core.$strip>>>;
151
+ }, z.core.$strip>>;
152
+ }, z.core.$strip>;
508
153
  export declare function readIndex(repoRoot: string): SpecIndex;
509
154
  export declare function writeIndex(repoRoot: string, index: SpecIndex): void;
510
155
  export declare function readSpec(repoRoot: string, storyId: string): Spec;
@@ -529,887 +174,222 @@ export declare const schemas: {
529
174
  schema_version: z.ZodLiteral<1>;
530
175
  stories: z.ZodRecord<z.ZodString, z.ZodObject<{
531
176
  title: z.ZodString;
532
- status: z.ZodEnum<["draft", "active", "superseded"]>;
177
+ status: z.ZodEnum<{
178
+ draft: "draft";
179
+ active: "active";
180
+ superseded: "superseded";
181
+ }>;
533
182
  source_issue: z.ZodOptional<z.ZodString>;
534
- tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
183
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
535
184
  summary: z.ZodOptional<z.ZodString>;
536
- supersedes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
537
- superseded_by: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
538
- }, "strip", z.ZodTypeAny, {
539
- status: "draft" | "active" | "superseded";
540
- title: string;
541
- source_issue?: string | undefined;
542
- tags?: string[] | undefined;
543
- summary?: string | undefined;
544
- supersedes?: string[] | undefined;
545
- superseded_by?: string | null | undefined;
546
- }, {
547
- status: "draft" | "active" | "superseded";
548
- title: string;
549
- source_issue?: string | undefined;
550
- tags?: string[] | undefined;
551
- summary?: string | undefined;
552
- supersedes?: string[] | undefined;
553
- superseded_by?: string | null | undefined;
554
- }>>;
555
- }, "strip", z.ZodTypeAny, {
556
- schema_version: 1;
557
- stories: Record<string, {
558
- status: "draft" | "active" | "superseded";
559
- title: string;
560
- source_issue?: string | undefined;
561
- tags?: string[] | undefined;
562
- summary?: string | undefined;
563
- supersedes?: string[] | undefined;
564
- superseded_by?: string | null | undefined;
565
- }>;
566
- $schema?: string | undefined;
567
- }, {
568
- schema_version: 1;
569
- stories: Record<string, {
570
- status: "draft" | "active" | "superseded";
571
- title: string;
572
- source_issue?: string | undefined;
573
- tags?: string[] | undefined;
574
- summary?: string | undefined;
575
- supersedes?: string[] | undefined;
576
- superseded_by?: string | null | undefined;
577
- }>;
578
- $schema?: string | undefined;
579
- }>;
185
+ supersedes: z.ZodOptional<z.ZodArray<z.ZodString>>;
186
+ superseded_by: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
187
+ }, z.core.$strip>>;
188
+ }, z.core.$strip>;
580
189
  Spec: z.ZodObject<{
581
190
  $schema: z.ZodOptional<z.ZodString>;
582
191
  story_id: z.ZodString;
583
192
  title: z.ZodString;
584
- status: z.ZodEnum<["draft", "active", "superseded"]>;
193
+ status: z.ZodEnum<{
194
+ draft: "draft";
195
+ active: "active";
196
+ superseded: "superseded";
197
+ }>;
585
198
  created_at: z.ZodString;
586
- supersedes: z.ZodArray<z.ZodString, "many">;
587
- superseded_by: z.ZodUnion<[z.ZodString, z.ZodNull]>;
199
+ supersedes: z.ZodArray<z.ZodString>;
200
+ superseded_by: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
588
201
  token_budget_usd: z.ZodOptional<z.ZodNumber>;
589
- estimate: z.ZodOptional<z.ZodEnum<["small", "medium", "large"]>>;
202
+ estimate: z.ZodOptional<z.ZodEnum<{
203
+ small: "small";
204
+ medium: "medium";
205
+ large: "large";
206
+ }>>;
590
207
  source_issue: z.ZodOptional<z.ZodString>;
591
208
  refined_by: z.ZodOptional<z.ZodString>;
592
209
  actors: z.ZodArray<z.ZodObject<{
593
210
  name: z.ZodString;
594
211
  notes: z.ZodOptional<z.ZodString>;
595
- }, "strip", z.ZodTypeAny, {
596
- name: string;
597
- notes?: string | undefined;
598
- }, {
599
- name: string;
600
- notes?: string | undefined;
601
- }>, "many">;
602
- preconditions: z.ZodArray<z.ZodString, "many">;
603
- invariants: z.ZodArray<z.ZodString, "many">;
604
- api_contract: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
212
+ }, z.core.$strip>>;
213
+ preconditions: z.ZodArray<z.ZodString>;
214
+ invariants: z.ZodArray<z.ZodString>;
215
+ api_contract: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
605
216
  ui_behavior: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
606
- acceptance_scenarios: z.ZodArray<z.ZodString, "many">;
607
- non_goals: z.ZodArray<z.ZodString, "many">;
217
+ acceptance_scenarios: z.ZodArray<z.ZodString>;
218
+ non_goals: z.ZodArray<z.ZodString>;
608
219
  related_specs: z.ZodOptional<z.ZodArray<z.ZodObject<{
609
220
  id: z.ZodString;
610
- relationship: z.ZodEnum<["overlap", "related", "superseded"]>;
221
+ relationship: z.ZodEnum<{
222
+ superseded: "superseded";
223
+ overlap: "overlap";
224
+ related: "related";
225
+ }>;
611
226
  note: z.ZodOptional<z.ZodString>;
612
- }, "strip", z.ZodTypeAny, {
613
- id: string;
614
- relationship: "superseded" | "overlap" | "related";
615
- note?: string | undefined;
616
- }, {
617
- id: string;
618
- relationship: "superseded" | "overlap" | "related";
619
- note?: string | undefined;
620
- }>, "many">>;
227
+ }, z.core.$strip>>>;
621
228
  proposals: z.ZodOptional<z.ZodObject<{
622
229
  schema: z.ZodOptional<z.ZodObject<{
623
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
230
+ status: z.ZodEnum<{
231
+ pending: "pending";
232
+ approved: "approved";
233
+ rejected: "rejected";
234
+ deferred: "deferred";
235
+ blocked_on_clarification: "blocked_on_clarification";
236
+ }>;
624
237
  proposed_by: z.ZodString;
625
238
  approved_by: z.ZodOptional<z.ZodString>;
626
239
  approved_at: z.ZodOptional<z.ZodString>;
627
240
  rationale: z.ZodOptional<z.ZodString>;
628
- } & {
629
241
  sql: z.ZodString;
630
- }, "strip", z.ZodTypeAny, {
631
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
632
- proposed_by: string;
633
- sql: string;
634
- approved_by?: string | undefined;
635
- approved_at?: string | undefined;
636
- rationale?: string | undefined;
637
- }, {
638
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
639
- proposed_by: string;
640
- sql: string;
641
- approved_by?: string | undefined;
642
- approved_at?: string | undefined;
643
- rationale?: string | undefined;
644
- }>>;
242
+ }, z.core.$strip>>;
645
243
  ui_layout: z.ZodOptional<z.ZodObject<{
646
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
244
+ status: z.ZodEnum<{
245
+ pending: "pending";
246
+ approved: "approved";
247
+ rejected: "rejected";
248
+ deferred: "deferred";
249
+ blocked_on_clarification: "blocked_on_clarification";
250
+ }>;
647
251
  proposed_by: z.ZodString;
648
252
  approved_by: z.ZodOptional<z.ZodString>;
649
253
  approved_at: z.ZodOptional<z.ZodString>;
650
254
  rationale: z.ZodOptional<z.ZodString>;
651
- } & {
652
- viewport_coverage: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
653
- components_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
654
- tokens_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
655
- tokens_to_add: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
656
- }, "strip", z.ZodTypeAny, {
657
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
658
- proposed_by: string;
659
- approved_by?: string | undefined;
660
- approved_at?: string | undefined;
661
- rationale?: string | undefined;
662
- viewport_coverage?: string[] | undefined;
663
- components_to_reuse?: string[] | undefined;
664
- tokens_to_reuse?: string[] | undefined;
665
- tokens_to_add?: string[] | undefined;
666
- }, {
667
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
668
- proposed_by: string;
669
- approved_by?: string | undefined;
670
- approved_at?: string | undefined;
671
- rationale?: string | undefined;
672
- viewport_coverage?: string[] | undefined;
673
- components_to_reuse?: string[] | undefined;
674
- tokens_to_reuse?: string[] | undefined;
675
- tokens_to_add?: string[] | undefined;
676
- }>>;
255
+ viewport_coverage: z.ZodOptional<z.ZodArray<z.ZodString>>;
256
+ components_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString>>;
257
+ tokens_to_reuse: z.ZodOptional<z.ZodArray<z.ZodString>>;
258
+ tokens_to_add: z.ZodOptional<z.ZodArray<z.ZodString>>;
259
+ }, z.core.$strip>>;
677
260
  routes: z.ZodOptional<z.ZodObject<{
678
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
261
+ status: z.ZodEnum<{
262
+ pending: "pending";
263
+ approved: "approved";
264
+ rejected: "rejected";
265
+ deferred: "deferred";
266
+ blocked_on_clarification: "blocked_on_clarification";
267
+ }>;
679
268
  proposed_by: z.ZodString;
680
269
  approved_by: z.ZodOptional<z.ZodString>;
681
270
  approved_at: z.ZodOptional<z.ZodString>;
682
271
  rationale: z.ZodOptional<z.ZodString>;
683
- } & {
684
272
  paths: z.ZodArray<z.ZodObject<{
685
273
  path: z.ZodString;
686
274
  file: z.ZodString;
687
- }, "strip", z.ZodTypeAny, {
688
- path: string;
689
- file: string;
690
- }, {
691
- path: string;
692
- file: string;
693
- }>, "many">;
694
- }, "strip", z.ZodTypeAny, {
695
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
696
- proposed_by: string;
697
- paths: {
698
- path: string;
699
- file: string;
700
- }[];
701
- approved_by?: string | undefined;
702
- approved_at?: string | undefined;
703
- rationale?: string | undefined;
704
- }, {
705
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
706
- proposed_by: string;
707
- paths: {
708
- path: string;
709
- file: string;
710
- }[];
711
- approved_by?: string | undefined;
712
- approved_at?: string | undefined;
713
- rationale?: string | undefined;
714
- }>>;
275
+ }, z.core.$strip>>;
276
+ }, z.core.$strip>>;
715
277
  auth: z.ZodOptional<z.ZodObject<{
716
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
278
+ status: z.ZodEnum<{
279
+ pending: "pending";
280
+ approved: "approved";
281
+ rejected: "rejected";
282
+ deferred: "deferred";
283
+ blocked_on_clarification: "blocked_on_clarification";
284
+ }>;
717
285
  proposed_by: z.ZodString;
718
286
  approved_by: z.ZodOptional<z.ZodString>;
719
287
  approved_at: z.ZodOptional<z.ZodString>;
720
288
  rationale: z.ZodOptional<z.ZodString>;
721
- } & {
722
- requirements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
723
- }, "strip", z.ZodTypeAny, {
724
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
725
- proposed_by: string;
726
- approved_by?: string | undefined;
727
- approved_at?: string | undefined;
728
- rationale?: string | undefined;
729
- requirements?: string[] | undefined;
730
- }, {
731
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
732
- proposed_by: string;
733
- approved_by?: string | undefined;
734
- approved_at?: string | undefined;
735
- rationale?: string | undefined;
736
- requirements?: string[] | undefined;
737
- }>>;
289
+ requirements: z.ZodOptional<z.ZodArray<z.ZodString>>;
290
+ }, z.core.$strip>>;
738
291
  perf_budget: z.ZodOptional<z.ZodObject<{
739
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
292
+ status: z.ZodEnum<{
293
+ pending: "pending";
294
+ approved: "approved";
295
+ rejected: "rejected";
296
+ deferred: "deferred";
297
+ blocked_on_clarification: "blocked_on_clarification";
298
+ }>;
740
299
  proposed_by: z.ZodString;
741
300
  approved_by: z.ZodOptional<z.ZodString>;
742
301
  approved_at: z.ZodOptional<z.ZodString>;
743
302
  rationale: z.ZodOptional<z.ZodString>;
744
- } & {
745
303
  budgets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
746
- }, "strip", z.ZodTypeAny, {
747
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
748
- proposed_by: string;
749
- approved_by?: string | undefined;
750
- approved_at?: string | undefined;
751
- rationale?: string | undefined;
752
- budgets?: Record<string, number> | undefined;
753
- }, {
754
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
755
- proposed_by: string;
756
- approved_by?: string | undefined;
757
- approved_at?: string | undefined;
758
- rationale?: string | undefined;
759
- budgets?: Record<string, number> | undefined;
760
- }>>;
304
+ }, z.core.$strip>>;
761
305
  observability: z.ZodOptional<z.ZodObject<{
762
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
306
+ status: z.ZodEnum<{
307
+ pending: "pending";
308
+ approved: "approved";
309
+ rejected: "rejected";
310
+ deferred: "deferred";
311
+ blocked_on_clarification: "blocked_on_clarification";
312
+ }>;
763
313
  proposed_by: z.ZodString;
764
314
  approved_by: z.ZodOptional<z.ZodString>;
765
315
  approved_at: z.ZodOptional<z.ZodString>;
766
316
  rationale: z.ZodOptional<z.ZodString>;
767
- } & {
768
- log_events: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
317
+ log_events: z.ZodOptional<z.ZodArray<z.ZodString>>;
769
318
  metrics: z.ZodOptional<z.ZodArray<z.ZodObject<{
770
319
  name: z.ZodString;
771
320
  type: z.ZodString;
772
- }, "strip", z.ZodTypeAny, {
773
- type: string;
774
- name: string;
775
- }, {
776
- type: string;
777
- name: string;
778
- }>, "many">>;
779
- }, "strip", z.ZodTypeAny, {
780
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
781
- proposed_by: string;
782
- approved_by?: string | undefined;
783
- approved_at?: string | undefined;
784
- rationale?: string | undefined;
785
- log_events?: string[] | undefined;
786
- metrics?: {
787
- type: string;
788
- name: string;
789
- }[] | undefined;
790
- }, {
791
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
792
- proposed_by: string;
793
- approved_by?: string | undefined;
794
- approved_at?: string | undefined;
795
- rationale?: string | undefined;
796
- log_events?: string[] | undefined;
797
- metrics?: {
798
- type: string;
799
- name: string;
800
- }[] | undefined;
801
- }>>;
321
+ }, z.core.$strip>>>;
322
+ }, z.core.$strip>>;
802
323
  infra: z.ZodOptional<z.ZodObject<{
803
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
324
+ status: z.ZodEnum<{
325
+ pending: "pending";
326
+ approved: "approved";
327
+ rejected: "rejected";
328
+ deferred: "deferred";
329
+ blocked_on_clarification: "blocked_on_clarification";
330
+ }>;
804
331
  proposed_by: z.ZodString;
805
332
  approved_by: z.ZodOptional<z.ZodString>;
806
333
  approved_at: z.ZodOptional<z.ZodString>;
807
334
  rationale: z.ZodOptional<z.ZodString>;
808
- } & {
809
335
  runtime: z.ZodOptional<z.ZodString>;
810
336
  deploy_target: z.ZodOptional<z.ZodString>;
811
337
  notes: z.ZodOptional<z.ZodString>;
812
- }, "strip", z.ZodTypeAny, {
813
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
814
- proposed_by: string;
815
- approved_by?: string | undefined;
816
- approved_at?: string | undefined;
817
- rationale?: string | undefined;
818
- runtime?: string | undefined;
819
- deploy_target?: string | undefined;
820
- notes?: string | undefined;
821
- }, {
822
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
823
- proposed_by: string;
824
- approved_by?: string | undefined;
825
- approved_at?: string | undefined;
826
- rationale?: string | undefined;
827
- runtime?: string | undefined;
828
- deploy_target?: string | undefined;
829
- notes?: string | undefined;
830
- }>>;
338
+ }, z.core.$strip>>;
831
339
  api_shape: z.ZodOptional<z.ZodObject<{
832
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
340
+ status: z.ZodEnum<{
341
+ pending: "pending";
342
+ approved: "approved";
343
+ rejected: "rejected";
344
+ deferred: "deferred";
345
+ blocked_on_clarification: "blocked_on_clarification";
346
+ }>;
833
347
  proposed_by: z.ZodString;
834
348
  approved_by: z.ZodOptional<z.ZodString>;
835
349
  approved_at: z.ZodOptional<z.ZodString>;
836
350
  rationale: z.ZodOptional<z.ZodString>;
837
- } & {
838
351
  endpoints: z.ZodOptional<z.ZodArray<z.ZodObject<{
839
352
  method: z.ZodString;
840
353
  path: z.ZodString;
841
354
  request_schema: z.ZodOptional<z.ZodUnknown>;
842
355
  responses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
843
- }, "strip", z.ZodTypeAny, {
844
- path: string;
845
- method: string;
846
- request_schema?: unknown;
847
- responses?: Record<string, unknown> | undefined;
848
- }, {
849
- path: string;
850
- method: string;
851
- request_schema?: unknown;
852
- responses?: Record<string, unknown> | undefined;
853
- }>, "many">>;
854
- }, "strip", z.ZodTypeAny, {
855
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
856
- proposed_by: string;
857
- approved_by?: string | undefined;
858
- approved_at?: string | undefined;
859
- rationale?: string | undefined;
860
- endpoints?: {
861
- path: string;
862
- method: string;
863
- request_schema?: unknown;
864
- responses?: Record<string, unknown> | undefined;
865
- }[] | undefined;
866
- }, {
867
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
868
- proposed_by: string;
869
- approved_by?: string | undefined;
870
- approved_at?: string | undefined;
871
- rationale?: string | undefined;
872
- endpoints?: {
873
- path: string;
874
- method: string;
875
- request_schema?: unknown;
876
- responses?: Record<string, unknown> | undefined;
877
- }[] | undefined;
878
- }>>;
879
- /**
880
- * 0.14.0-α.1 (mockup-first refinement, data-layer seam) — fixtures
881
- * the agent has hand-authored to make a mockup behaviorally complete.
882
- * Keyed by domain (a single-word slug derived from the story's primary
883
- * resource: `notifications`, `bookmarks`, `feed`). Each domain's
884
- * `seed` is an arbitrary record of named arrays/values that the
885
- * generated `<domain>.mock.ts` will export verbatim.
886
- *
887
- * Example:
888
- * fixtures:
889
- * status: pending
890
- * proposed_by: refine-agent
891
- * by_domain:
892
- * notifications:
893
- * seed:
894
- * list:
895
- * - { id: "n-1", actor_handle: "@alice", read_at: null }
896
- * - { id: "n-2", actor_handle: "@bob", read_at: "2026-04-25T12:00:00Z" }
897
- * unread_count: 1
898
- *
899
- * Refine writes `src/lib/data/notifications.mock.ts` exporting
900
- * `seed.list` and `seed.unread_count` as JSON-equivalent constants.
901
- * The page/component imports from `@/lib/data/notifications`; an
902
- * env flag `MOCK_STORY_N=1` routes the import to the mock module.
903
- * Brew (later) writes the real `notifications.ts` and removes the flag.
904
- */
356
+ }, z.core.$strip>>>;
357
+ }, z.core.$strip>>;
905
358
  fixtures: z.ZodOptional<z.ZodObject<{
906
- status: z.ZodEnum<["pending", "approved", "rejected", "deferred", "blocked_on_clarification"]>;
359
+ status: z.ZodEnum<{
360
+ pending: "pending";
361
+ approved: "approved";
362
+ rejected: "rejected";
363
+ deferred: "deferred";
364
+ blocked_on_clarification: "blocked_on_clarification";
365
+ }>;
907
366
  proposed_by: z.ZodString;
908
367
  approved_by: z.ZodOptional<z.ZodString>;
909
368
  approved_at: z.ZodOptional<z.ZodString>;
910
369
  rationale: z.ZodOptional<z.ZodString>;
911
- } & {
912
370
  by_domain: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
913
371
  seed: z.ZodRecord<z.ZodString, z.ZodUnknown>;
914
- }, "strip", z.ZodTypeAny, {
915
- seed: Record<string, unknown>;
916
- }, {
917
- seed: Record<string, unknown>;
918
- }>>>;
919
- }, "strip", z.ZodTypeAny, {
920
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
921
- proposed_by: string;
922
- approved_by?: string | undefined;
923
- approved_at?: string | undefined;
924
- rationale?: string | undefined;
925
- by_domain?: Record<string, {
926
- seed: Record<string, unknown>;
927
- }> | undefined;
928
- }, {
929
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
930
- proposed_by: string;
931
- approved_by?: string | undefined;
932
- approved_at?: string | undefined;
933
- rationale?: string | undefined;
934
- by_domain?: Record<string, {
935
- seed: Record<string, unknown>;
936
- }> | undefined;
937
- }>>;
938
- }, "strip", z.ZodTypeAny, {
939
- schema?: {
940
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
941
- proposed_by: string;
942
- sql: string;
943
- approved_by?: string | undefined;
944
- approved_at?: string | undefined;
945
- rationale?: string | undefined;
946
- } | undefined;
947
- ui_layout?: {
948
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
949
- proposed_by: string;
950
- approved_by?: string | undefined;
951
- approved_at?: string | undefined;
952
- rationale?: string | undefined;
953
- viewport_coverage?: string[] | undefined;
954
- components_to_reuse?: string[] | undefined;
955
- tokens_to_reuse?: string[] | undefined;
956
- tokens_to_add?: string[] | undefined;
957
- } | undefined;
958
- routes?: {
959
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
960
- proposed_by: string;
961
- paths: {
962
- path: string;
963
- file: string;
964
- }[];
965
- approved_by?: string | undefined;
966
- approved_at?: string | undefined;
967
- rationale?: string | undefined;
968
- } | undefined;
969
- auth?: {
970
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
971
- proposed_by: string;
972
- approved_by?: string | undefined;
973
- approved_at?: string | undefined;
974
- rationale?: string | undefined;
975
- requirements?: string[] | undefined;
976
- } | undefined;
977
- perf_budget?: {
978
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
979
- proposed_by: string;
980
- approved_by?: string | undefined;
981
- approved_at?: string | undefined;
982
- rationale?: string | undefined;
983
- budgets?: Record<string, number> | undefined;
984
- } | undefined;
985
- observability?: {
986
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
987
- proposed_by: string;
988
- approved_by?: string | undefined;
989
- approved_at?: string | undefined;
990
- rationale?: string | undefined;
991
- log_events?: string[] | undefined;
992
- metrics?: {
993
- type: string;
994
- name: string;
995
- }[] | undefined;
996
- } | undefined;
997
- infra?: {
998
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
999
- proposed_by: string;
1000
- approved_by?: string | undefined;
1001
- approved_at?: string | undefined;
1002
- rationale?: string | undefined;
1003
- runtime?: string | undefined;
1004
- deploy_target?: string | undefined;
1005
- notes?: string | undefined;
1006
- } | undefined;
1007
- api_shape?: {
1008
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1009
- proposed_by: string;
1010
- approved_by?: string | undefined;
1011
- approved_at?: string | undefined;
1012
- rationale?: string | undefined;
1013
- endpoints?: {
1014
- path: string;
1015
- method: string;
1016
- request_schema?: unknown;
1017
- responses?: Record<string, unknown> | undefined;
1018
- }[] | undefined;
1019
- } | undefined;
1020
- fixtures?: {
1021
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1022
- proposed_by: string;
1023
- approved_by?: string | undefined;
1024
- approved_at?: string | undefined;
1025
- rationale?: string | undefined;
1026
- by_domain?: Record<string, {
1027
- seed: Record<string, unknown>;
1028
- }> | undefined;
1029
- } | undefined;
1030
- }, {
1031
- schema?: {
1032
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1033
- proposed_by: string;
1034
- sql: string;
1035
- approved_by?: string | undefined;
1036
- approved_at?: string | undefined;
1037
- rationale?: string | undefined;
1038
- } | undefined;
1039
- ui_layout?: {
1040
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1041
- proposed_by: string;
1042
- approved_by?: string | undefined;
1043
- approved_at?: string | undefined;
1044
- rationale?: string | undefined;
1045
- viewport_coverage?: string[] | undefined;
1046
- components_to_reuse?: string[] | undefined;
1047
- tokens_to_reuse?: string[] | undefined;
1048
- tokens_to_add?: string[] | undefined;
1049
- } | undefined;
1050
- routes?: {
1051
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1052
- proposed_by: string;
1053
- paths: {
1054
- path: string;
1055
- file: string;
1056
- }[];
1057
- approved_by?: string | undefined;
1058
- approved_at?: string | undefined;
1059
- rationale?: string | undefined;
1060
- } | undefined;
1061
- auth?: {
1062
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1063
- proposed_by: string;
1064
- approved_by?: string | undefined;
1065
- approved_at?: string | undefined;
1066
- rationale?: string | undefined;
1067
- requirements?: string[] | undefined;
1068
- } | undefined;
1069
- perf_budget?: {
1070
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1071
- proposed_by: string;
1072
- approved_by?: string | undefined;
1073
- approved_at?: string | undefined;
1074
- rationale?: string | undefined;
1075
- budgets?: Record<string, number> | undefined;
1076
- } | undefined;
1077
- observability?: {
1078
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1079
- proposed_by: string;
1080
- approved_by?: string | undefined;
1081
- approved_at?: string | undefined;
1082
- rationale?: string | undefined;
1083
- log_events?: string[] | undefined;
1084
- metrics?: {
1085
- type: string;
1086
- name: string;
1087
- }[] | undefined;
1088
- } | undefined;
1089
- infra?: {
1090
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1091
- proposed_by: string;
1092
- approved_by?: string | undefined;
1093
- approved_at?: string | undefined;
1094
- rationale?: string | undefined;
1095
- runtime?: string | undefined;
1096
- deploy_target?: string | undefined;
1097
- notes?: string | undefined;
1098
- } | undefined;
1099
- api_shape?: {
1100
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1101
- proposed_by: string;
1102
- approved_by?: string | undefined;
1103
- approved_at?: string | undefined;
1104
- rationale?: string | undefined;
1105
- endpoints?: {
1106
- path: string;
1107
- method: string;
1108
- request_schema?: unknown;
1109
- responses?: Record<string, unknown> | undefined;
1110
- }[] | undefined;
1111
- } | undefined;
1112
- fixtures?: {
1113
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1114
- proposed_by: string;
1115
- approved_by?: string | undefined;
1116
- approved_at?: string | undefined;
1117
- rationale?: string | undefined;
1118
- by_domain?: Record<string, {
1119
- seed: Record<string, unknown>;
1120
- }> | undefined;
1121
- } | undefined;
1122
- }>>;
1123
- /**
1124
- * 0.19.0-α.34 (sc#67) — canonical story cost. Aggregated from the
1125
- * `specs/story-<id>.cost.jsonl` sidecar by `applyCostToSpec`. Optional
1126
- * because older specs predate this and the sidecar is the
1127
- * source-of-truth — the spec field is a glance-readable mirror.
1128
- */
372
+ }, z.core.$strip>>>;
373
+ }, z.core.$strip>>;
374
+ }, z.core.$strip>>;
1129
375
  cost: z.ZodOptional<z.ZodObject<{
1130
376
  total_usd: z.ZodNumber;
1131
377
  last_updated: z.ZodString;
1132
- }, "strip", z.ZodTypeAny, {
1133
- total_usd: number;
1134
- last_updated: string;
1135
- }, {
1136
- total_usd: number;
1137
- last_updated: string;
1138
- }>>;
1139
- }, "strip", z.ZodTypeAny, {
1140
- status: "draft" | "active" | "superseded";
1141
- title: string;
1142
- supersedes: string[];
1143
- superseded_by: string | null;
1144
- story_id: string;
1145
- created_at: string;
1146
- actors: {
1147
- name: string;
1148
- notes?: string | undefined;
1149
- }[];
1150
- preconditions: string[];
1151
- invariants: string[];
1152
- acceptance_scenarios: string[];
1153
- non_goals: string[];
1154
- $schema?: string | undefined;
1155
- source_issue?: string | undefined;
1156
- token_budget_usd?: number | undefined;
1157
- estimate?: "small" | "medium" | "large" | undefined;
1158
- refined_by?: string | undefined;
1159
- api_contract?: unknown[] | undefined;
1160
- ui_behavior?: Record<string, string> | undefined;
1161
- related_specs?: {
1162
- id: string;
1163
- relationship: "superseded" | "overlap" | "related";
1164
- note?: string | undefined;
1165
- }[] | undefined;
1166
- proposals?: {
1167
- schema?: {
1168
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1169
- proposed_by: string;
1170
- sql: string;
1171
- approved_by?: string | undefined;
1172
- approved_at?: string | undefined;
1173
- rationale?: string | undefined;
1174
- } | undefined;
1175
- ui_layout?: {
1176
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1177
- proposed_by: string;
1178
- approved_by?: string | undefined;
1179
- approved_at?: string | undefined;
1180
- rationale?: string | undefined;
1181
- viewport_coverage?: string[] | undefined;
1182
- components_to_reuse?: string[] | undefined;
1183
- tokens_to_reuse?: string[] | undefined;
1184
- tokens_to_add?: string[] | undefined;
1185
- } | undefined;
1186
- routes?: {
1187
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1188
- proposed_by: string;
1189
- paths: {
1190
- path: string;
1191
- file: string;
1192
- }[];
1193
- approved_by?: string | undefined;
1194
- approved_at?: string | undefined;
1195
- rationale?: string | undefined;
1196
- } | undefined;
1197
- auth?: {
1198
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1199
- proposed_by: string;
1200
- approved_by?: string | undefined;
1201
- approved_at?: string | undefined;
1202
- rationale?: string | undefined;
1203
- requirements?: string[] | undefined;
1204
- } | undefined;
1205
- perf_budget?: {
1206
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1207
- proposed_by: string;
1208
- approved_by?: string | undefined;
1209
- approved_at?: string | undefined;
1210
- rationale?: string | undefined;
1211
- budgets?: Record<string, number> | undefined;
1212
- } | undefined;
1213
- observability?: {
1214
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1215
- proposed_by: string;
1216
- approved_by?: string | undefined;
1217
- approved_at?: string | undefined;
1218
- rationale?: string | undefined;
1219
- log_events?: string[] | undefined;
1220
- metrics?: {
1221
- type: string;
1222
- name: string;
1223
- }[] | undefined;
1224
- } | undefined;
1225
- infra?: {
1226
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1227
- proposed_by: string;
1228
- approved_by?: string | undefined;
1229
- approved_at?: string | undefined;
1230
- rationale?: string | undefined;
1231
- runtime?: string | undefined;
1232
- deploy_target?: string | undefined;
1233
- notes?: string | undefined;
1234
- } | undefined;
1235
- api_shape?: {
1236
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1237
- proposed_by: string;
1238
- approved_by?: string | undefined;
1239
- approved_at?: string | undefined;
1240
- rationale?: string | undefined;
1241
- endpoints?: {
1242
- path: string;
1243
- method: string;
1244
- request_schema?: unknown;
1245
- responses?: Record<string, unknown> | undefined;
1246
- }[] | undefined;
1247
- } | undefined;
1248
- fixtures?: {
1249
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1250
- proposed_by: string;
1251
- approved_by?: string | undefined;
1252
- approved_at?: string | undefined;
1253
- rationale?: string | undefined;
1254
- by_domain?: Record<string, {
1255
- seed: Record<string, unknown>;
1256
- }> | undefined;
1257
- } | undefined;
1258
- } | undefined;
1259
- cost?: {
1260
- total_usd: number;
1261
- last_updated: string;
1262
- } | undefined;
1263
- }, {
1264
- status: "draft" | "active" | "superseded";
1265
- title: string;
1266
- supersedes: string[];
1267
- superseded_by: string | null;
1268
- story_id: string;
1269
- created_at: string;
1270
- actors: {
1271
- name: string;
1272
- notes?: string | undefined;
1273
- }[];
1274
- preconditions: string[];
1275
- invariants: string[];
1276
- acceptance_scenarios: string[];
1277
- non_goals: string[];
1278
- $schema?: string | undefined;
1279
- source_issue?: string | undefined;
1280
- token_budget_usd?: number | undefined;
1281
- estimate?: "small" | "medium" | "large" | undefined;
1282
- refined_by?: string | undefined;
1283
- api_contract?: unknown[] | undefined;
1284
- ui_behavior?: Record<string, string> | undefined;
1285
- related_specs?: {
1286
- id: string;
1287
- relationship: "superseded" | "overlap" | "related";
1288
- note?: string | undefined;
1289
- }[] | undefined;
1290
- proposals?: {
1291
- schema?: {
1292
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1293
- proposed_by: string;
1294
- sql: string;
1295
- approved_by?: string | undefined;
1296
- approved_at?: string | undefined;
1297
- rationale?: string | undefined;
1298
- } | undefined;
1299
- ui_layout?: {
1300
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1301
- proposed_by: string;
1302
- approved_by?: string | undefined;
1303
- approved_at?: string | undefined;
1304
- rationale?: string | undefined;
1305
- viewport_coverage?: string[] | undefined;
1306
- components_to_reuse?: string[] | undefined;
1307
- tokens_to_reuse?: string[] | undefined;
1308
- tokens_to_add?: string[] | undefined;
1309
- } | undefined;
1310
- routes?: {
1311
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1312
- proposed_by: string;
1313
- paths: {
1314
- path: string;
1315
- file: string;
1316
- }[];
1317
- approved_by?: string | undefined;
1318
- approved_at?: string | undefined;
1319
- rationale?: string | undefined;
1320
- } | undefined;
1321
- auth?: {
1322
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1323
- proposed_by: string;
1324
- approved_by?: string | undefined;
1325
- approved_at?: string | undefined;
1326
- rationale?: string | undefined;
1327
- requirements?: string[] | undefined;
1328
- } | undefined;
1329
- perf_budget?: {
1330
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1331
- proposed_by: string;
1332
- approved_by?: string | undefined;
1333
- approved_at?: string | undefined;
1334
- rationale?: string | undefined;
1335
- budgets?: Record<string, number> | undefined;
1336
- } | undefined;
1337
- observability?: {
1338
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1339
- proposed_by: string;
1340
- approved_by?: string | undefined;
1341
- approved_at?: string | undefined;
1342
- rationale?: string | undefined;
1343
- log_events?: string[] | undefined;
1344
- metrics?: {
1345
- type: string;
1346
- name: string;
1347
- }[] | undefined;
1348
- } | undefined;
1349
- infra?: {
1350
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1351
- proposed_by: string;
1352
- approved_by?: string | undefined;
1353
- approved_at?: string | undefined;
1354
- rationale?: string | undefined;
1355
- runtime?: string | undefined;
1356
- deploy_target?: string | undefined;
1357
- notes?: string | undefined;
1358
- } | undefined;
1359
- api_shape?: {
1360
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1361
- proposed_by: string;
1362
- approved_by?: string | undefined;
1363
- approved_at?: string | undefined;
1364
- rationale?: string | undefined;
1365
- endpoints?: {
1366
- path: string;
1367
- method: string;
1368
- request_schema?: unknown;
1369
- responses?: Record<string, unknown> | undefined;
1370
- }[] | undefined;
1371
- } | undefined;
1372
- fixtures?: {
1373
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1374
- proposed_by: string;
1375
- approved_by?: string | undefined;
1376
- approved_at?: string | undefined;
1377
- rationale?: string | undefined;
1378
- by_domain?: Record<string, {
1379
- seed: Record<string, unknown>;
1380
- }> | undefined;
1381
- } | undefined;
1382
- } | undefined;
1383
- cost?: {
1384
- total_usd: number;
1385
- last_updated: string;
1386
- } | undefined;
1387
- }>;
378
+ }, z.core.$strip>>;
379
+ }, z.core.$strip>;
1388
380
  SpecIndexEntry: z.ZodObject<{
1389
381
  title: z.ZodString;
1390
- status: z.ZodEnum<["draft", "active", "superseded"]>;
382
+ status: z.ZodEnum<{
383
+ draft: "draft";
384
+ active: "active";
385
+ superseded: "superseded";
386
+ }>;
1391
387
  source_issue: z.ZodOptional<z.ZodString>;
1392
- tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
388
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1393
389
  summary: z.ZodOptional<z.ZodString>;
1394
- supersedes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1395
- superseded_by: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
1396
- }, "strip", z.ZodTypeAny, {
1397
- status: "draft" | "active" | "superseded";
1398
- title: string;
1399
- source_issue?: string | undefined;
1400
- tags?: string[] | undefined;
1401
- summary?: string | undefined;
1402
- supersedes?: string[] | undefined;
1403
- superseded_by?: string | null | undefined;
1404
- }, {
1405
- status: "draft" | "active" | "superseded";
1406
- title: string;
1407
- source_issue?: string | undefined;
1408
- tags?: string[] | undefined;
1409
- summary?: string | undefined;
1410
- supersedes?: string[] | undefined;
1411
- superseded_by?: string | null | undefined;
1412
- }>;
390
+ supersedes: z.ZodOptional<z.ZodArray<z.ZodString>>;
391
+ superseded_by: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
392
+ }, z.core.$strip>;
1413
393
  };
1414
394
  /** Minimal helper for the agent to build a SpecIndexEntry from a Spec. */
1415
395
  export declare function entryFromSpec(spec: Spec): SpecIndexEntry;