@slowcook-ai/cli 0.19.0-alpha.8 → 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 (194) hide show
  1. package/AGENTS.md +240 -0
  2. package/REPORTING.md +193 -0
  3. package/dist/cli.js +78 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/brand/index.d.ts +26 -0
  6. package/dist/commands/brand/index.d.ts.map +1 -0
  7. package/dist/commands/brand/index.js +257 -0
  8. package/dist/commands/brand/index.js.map +1 -0
  9. package/dist/commands/brew/agent.d.ts +7 -2
  10. package/dist/commands/brew/agent.d.ts.map +1 -1
  11. package/dist/commands/brew/agent.js +9 -0
  12. package/dist/commands/brew/agent.js.map +1 -1
  13. package/dist/commands/brew/halt.d.ts +26 -0
  14. package/dist/commands/brew/halt.d.ts.map +1 -1
  15. package/dist/commands/brew/halt.js.map +1 -1
  16. package/dist/commands/brew/index.d.ts.map +1 -1
  17. package/dist/commands/brew/index.js +142 -18
  18. package/dist/commands/brew/index.js.map +1 -1
  19. package/dist/commands/brew/pair-navigator.d.ts +119 -0
  20. package/dist/commands/brew/pair-navigator.d.ts.map +1 -0
  21. package/dist/commands/brew/pair-navigator.js +187 -0
  22. package/dist/commands/brew/pair-navigator.js.map +1 -0
  23. package/dist/commands/budget/index.d.ts +2 -0
  24. package/dist/commands/budget/index.d.ts.map +1 -0
  25. package/dist/commands/budget/index.js +252 -0
  26. package/dist/commands/budget/index.js.map +1 -0
  27. package/dist/commands/chef/drift-fix.d.ts +33 -4
  28. package/dist/commands/chef/drift-fix.d.ts.map +1 -1
  29. package/dist/commands/chef/drift-fix.js +417 -29
  30. package/dist/commands/chef/drift-fix.js.map +1 -1
  31. package/dist/commands/chef/index.js +13 -3
  32. package/dist/commands/chef/index.js.map +1 -1
  33. package/dist/commands/chef/orchestrate.d.ts +1 -1
  34. package/dist/commands/chef/orchestrate.d.ts.map +1 -1
  35. package/dist/commands/chef/orchestrate.js +32 -9
  36. package/dist/commands/chef/orchestrate.js.map +1 -1
  37. package/dist/commands/dev-env/config.d.ts +57 -0
  38. package/dist/commands/dev-env/config.d.ts.map +1 -0
  39. package/dist/commands/dev-env/config.js +96 -0
  40. package/dist/commands/dev-env/config.js.map +1 -0
  41. package/dist/commands/dev-env/index.d.ts +27 -0
  42. package/dist/commands/dev-env/index.d.ts.map +1 -0
  43. package/dist/commands/dev-env/index.js +226 -0
  44. package/dist/commands/dev-env/index.js.map +1 -0
  45. package/dist/commands/dev-env/init.d.ts +28 -0
  46. package/dist/commands/dev-env/init.d.ts.map +1 -0
  47. package/dist/commands/dev-env/init.js +135 -0
  48. package/dist/commands/dev-env/init.js.map +1 -0
  49. package/dist/commands/docs/index.d.ts +16 -0
  50. package/dist/commands/docs/index.d.ts.map +1 -0
  51. package/dist/commands/docs/index.js +127 -0
  52. package/dist/commands/docs/index.js.map +1 -0
  53. package/dist/commands/eval/index.d.ts +54 -0
  54. package/dist/commands/eval/index.d.ts.map +1 -0
  55. package/dist/commands/eval/index.js +294 -0
  56. package/dist/commands/eval/index.js.map +1 -0
  57. package/dist/commands/extract/index.d.ts.map +1 -1
  58. package/dist/commands/extract/index.js +23 -1
  59. package/dist/commands/extract/index.js.map +1 -1
  60. package/dist/commands/garnish/index.d.ts +56 -0
  61. package/dist/commands/garnish/index.d.ts.map +1 -0
  62. package/dist/commands/garnish/index.js +281 -0
  63. package/dist/commands/garnish/index.js.map +1 -0
  64. package/dist/commands/garnish/trailer.d.ts +79 -0
  65. package/dist/commands/garnish/trailer.d.ts.map +1 -0
  66. package/dist/commands/garnish/trailer.js +118 -0
  67. package/dist/commands/garnish/trailer.js.map +1 -0
  68. package/dist/commands/init/index.d.ts.map +1 -1
  69. package/dist/commands/init/index.js +33 -0
  70. package/dist/commands/init/index.js.map +1 -1
  71. package/dist/commands/init/mock-vite.d.ts +54 -0
  72. package/dist/commands/init/mock-vite.d.ts.map +1 -0
  73. package/dist/commands/init/mock-vite.js +613 -0
  74. package/dist/commands/init/mock-vite.js.map +1 -0
  75. package/dist/commands/init/mock.d.ts +6 -0
  76. package/dist/commands/init/mock.d.ts.map +1 -1
  77. package/dist/commands/init/mock.js +20 -4
  78. package/dist/commands/init/mock.js.map +1 -1
  79. package/dist/commands/init/plan.d.ts +26 -1
  80. package/dist/commands/init/plan.d.ts.map +1 -1
  81. package/dist/commands/init/plan.js +41 -3
  82. package/dist/commands/init/plan.js.map +1 -1
  83. package/dist/commands/init/templates.d.ts.map +1 -1
  84. package/dist/commands/init/templates.js +12 -4
  85. package/dist/commands/init/templates.js.map +1 -1
  86. package/dist/commands/knowledge-add.d.ts +52 -0
  87. package/dist/commands/knowledge-add.d.ts.map +1 -0
  88. package/dist/commands/knowledge-add.js +232 -0
  89. package/dist/commands/knowledge-add.js.map +1 -0
  90. package/dist/commands/map/emit-typeorm.d.ts +117 -0
  91. package/dist/commands/map/emit-typeorm.d.ts.map +1 -0
  92. package/dist/commands/map/emit-typeorm.js +341 -0
  93. package/dist/commands/map/emit-typeorm.js.map +1 -0
  94. package/dist/commands/map/index.d.ts +18 -0
  95. package/dist/commands/map/index.d.ts.map +1 -1
  96. package/dist/commands/map/index.js +28 -0
  97. package/dist/commands/map/index.js.map +1 -1
  98. package/dist/commands/plate/agent.d.ts +7 -0
  99. package/dist/commands/plate/agent.d.ts.map +1 -1
  100. package/dist/commands/plate/agent.js +1 -1
  101. package/dist/commands/plate/agent.js.map +1 -1
  102. package/dist/commands/plate/index.d.ts.map +1 -1
  103. package/dist/commands/plate/index.js +6 -0
  104. package/dist/commands/plate/index.js.map +1 -1
  105. package/dist/commands/recon/index.d.ts +16 -3
  106. package/dist/commands/recon/index.d.ts.map +1 -1
  107. package/dist/commands/recon/index.js +267 -16
  108. package/dist/commands/recon/index.js.map +1 -1
  109. package/dist/commands/recon/migration-gate.d.ts +59 -0
  110. package/dist/commands/recon/migration-gate.d.ts.map +1 -0
  111. package/dist/commands/recon/migration-gate.js +131 -0
  112. package/dist/commands/recon/migration-gate.js.map +1 -0
  113. package/dist/commands/recon/reuse.d.ts +32 -0
  114. package/dist/commands/recon/reuse.d.ts.map +1 -1
  115. package/dist/commands/recon/reuse.js +66 -0
  116. package/dist/commands/recon/reuse.js.map +1 -1
  117. package/dist/commands/recon/stale-stubs.d.ts +65 -0
  118. package/dist/commands/recon/stale-stubs.d.ts.map +1 -0
  119. package/dist/commands/recon/stale-stubs.js +84 -0
  120. package/dist/commands/recon/stale-stubs.js.map +1 -0
  121. package/dist/commands/refine/agent.d.ts +23 -0
  122. package/dist/commands/refine/agent.d.ts.map +1 -1
  123. package/dist/commands/refine/agent.js +245 -15
  124. package/dist/commands/refine/agent.js.map +1 -1
  125. package/dist/commands/refine/brownfield-answer.d.ts +81 -0
  126. package/dist/commands/refine/brownfield-answer.d.ts.map +1 -0
  127. package/dist/commands/refine/brownfield-answer.js +231 -0
  128. package/dist/commands/refine/brownfield-answer.js.map +1 -0
  129. package/dist/commands/refine/context.d.ts +27 -1
  130. package/dist/commands/refine/context.d.ts.map +1 -1
  131. package/dist/commands/refine/context.js +438 -6
  132. package/dist/commands/refine/context.js.map +1 -1
  133. package/dist/commands/refine/git-attention.d.ts +123 -0
  134. package/dist/commands/refine/git-attention.d.ts.map +1 -0
  135. package/dist/commands/refine/git-attention.js +378 -0
  136. package/dist/commands/refine/git-attention.js.map +1 -0
  137. package/dist/commands/refine/history-index.d.ts +66 -0
  138. package/dist/commands/refine/history-index.d.ts.map +1 -1
  139. package/dist/commands/refine/history-index.js +195 -8
  140. package/dist/commands/refine/history-index.js.map +1 -1
  141. package/dist/commands/refine/index.d.ts.map +1 -1
  142. package/dist/commands/refine/index.js +105 -18
  143. package/dist/commands/refine/index.js.map +1 -1
  144. package/dist/commands/refine/multifurcate.d.ts +129 -0
  145. package/dist/commands/refine/multifurcate.d.ts.map +1 -0
  146. package/dist/commands/refine/multifurcate.js +247 -0
  147. package/dist/commands/refine/multifurcate.js.map +1 -0
  148. package/dist/commands/refine/proposals-synth.d.ts +50 -1
  149. package/dist/commands/refine/proposals-synth.d.ts.map +1 -1
  150. package/dist/commands/refine/proposals-synth.js +199 -35
  151. package/dist/commands/refine/proposals-synth.js.map +1 -1
  152. package/dist/commands/refine/spec-yaml.d.ts +214 -1210
  153. package/dist/commands/refine/spec-yaml.d.ts.map +1 -1
  154. package/dist/commands/refine/spec-yaml.js +10 -0
  155. package/dist/commands/refine/spec-yaml.js.map +1 -1
  156. package/dist/commands/refresh-knowledge.d.ts +126 -0
  157. package/dist/commands/refresh-knowledge.d.ts.map +1 -0
  158. package/dist/commands/refresh-knowledge.js +1010 -0
  159. package/dist/commands/refresh-knowledge.js.map +1 -0
  160. package/dist/commands/run-mock/index.d.ts.map +1 -1
  161. package/dist/commands/run-mock/index.js +135 -22
  162. package/dist/commands/run-mock/index.js.map +1 -1
  163. package/dist/commands/testgen/agent.d.ts +13 -0
  164. package/dist/commands/testgen/agent.d.ts.map +1 -1
  165. package/dist/commands/testgen/agent.js +137 -11
  166. package/dist/commands/testgen/agent.js.map +1 -1
  167. package/dist/commands/upsert-agent-docs.d.ts +48 -0
  168. package/dist/commands/upsert-agent-docs.d.ts.map +1 -0
  169. package/dist/commands/upsert-agent-docs.js +298 -0
  170. package/dist/commands/upsert-agent-docs.js.map +1 -0
  171. package/dist/commands/vibe/agent.d.ts +7 -0
  172. package/dist/commands/vibe/agent.d.ts.map +1 -1
  173. package/dist/commands/vibe/agent.js +2 -2
  174. package/dist/commands/vibe/agent.js.map +1 -1
  175. package/dist/commands/vibe/index.d.ts.map +1 -1
  176. package/dist/commands/vibe/index.js +7 -1
  177. package/dist/commands/vibe/index.js.map +1 -1
  178. package/dist/cost-store.d.ts +52 -0
  179. package/dist/cost-store.d.ts.map +1 -0
  180. package/dist/cost-store.js +108 -0
  181. package/dist/cost-store.js.map +1 -0
  182. package/dist/lib/budget.d.ts +73 -0
  183. package/dist/lib/budget.d.ts.map +1 -0
  184. package/dist/lib/budget.js +225 -0
  185. package/dist/lib/budget.js.map +1 -0
  186. package/dist/lib/mock-shape.d.ts +29 -0
  187. package/dist/lib/mock-shape.d.ts.map +1 -0
  188. package/dist/lib/mock-shape.js +77 -0
  189. package/dist/lib/mock-shape.js.map +1 -0
  190. package/dist/lib/read-only.d.ts +22 -0
  191. package/dist/lib/read-only.d.ts.map +1 -0
  192. package/dist/lib/read-only.js +34 -0
  193. package/dist/lib/read-only.js.map +1 -0
  194. package/package.json +17 -12
@@ -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
- rationale?: string | undefined;
20
- approved_by?: string | undefined;
21
- approved_at?: string | undefined;
22
- }, {
23
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
24
- proposed_by: string;
25
- sql: string;
26
- rationale?: string | undefined;
27
- approved_by?: string | undefined;
28
- approved_at?: 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
- rationale?: string | undefined;
45
- tokens_to_reuse?: string[] | undefined;
46
- tokens_to_add?: string[] | undefined;
47
- components_to_reuse?: string[] | undefined;
48
- approved_by?: string | undefined;
49
- approved_at?: string | undefined;
50
- viewport_coverage?: string[] | undefined;
51
- }, {
52
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
53
- proposed_by: string;
54
- rationale?: string | undefined;
55
- tokens_to_reuse?: string[] | undefined;
56
- tokens_to_add?: string[] | undefined;
57
- components_to_reuse?: string[] | undefined;
58
- approved_by?: string | undefined;
59
- approved_at?: string | undefined;
60
- viewport_coverage?: 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
- rationale?: string | undefined;
87
- approved_by?: string | undefined;
88
- approved_at?: 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
- rationale?: string | undefined;
97
- approved_by?: string | undefined;
98
- approved_at?: 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
- rationale?: string | undefined;
112
- requirements?: string[] | undefined;
113
- approved_by?: string | undefined;
114
- approved_at?: string | undefined;
115
- }, {
116
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
117
- proposed_by: string;
118
- rationale?: string | undefined;
119
- requirements?: string[] | undefined;
120
- approved_by?: string | undefined;
121
- approved_at?: 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
- rationale?: string | undefined;
135
- approved_by?: string | undefined;
136
- approved_at?: string | undefined;
137
- budgets?: Record<string, number> | undefined;
138
- }, {
139
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
140
- proposed_by: string;
141
- rationale?: string | undefined;
142
- approved_by?: string | undefined;
143
- approved_at?: 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
- name: string;
159
- type: string;
160
- }, {
161
- name: string;
162
- type: string;
163
- }>, "many">>;
164
- }, "strip", z.ZodTypeAny, {
165
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
166
- proposed_by: string;
167
- rationale?: string | undefined;
168
- approved_by?: string | undefined;
169
- approved_at?: string | undefined;
170
- log_events?: string[] | undefined;
171
- metrics?: {
172
- name: string;
173
- type: string;
174
- }[] | undefined;
175
- }, {
176
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
177
- proposed_by: string;
178
- rationale?: string | undefined;
179
- approved_by?: string | undefined;
180
- approved_at?: string | undefined;
181
- log_events?: string[] | undefined;
182
- metrics?: {
183
- name: string;
184
- type: 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
- rationale?: string | undefined;
201
- approved_by?: string | undefined;
202
- approved_at?: 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
- rationale?: string | undefined;
210
- approved_by?: string | undefined;
211
- approved_at?: 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
- rationale?: string | undefined;
243
- approved_by?: string | undefined;
244
- approved_at?: 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
- rationale?: string | undefined;
255
- approved_by?: string | undefined;
256
- approved_at?: 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
- rationale?: string | undefined;
308
- by_domain?: Record<string, {
309
- seed: Record<string, unknown>;
310
- }> | undefined;
311
- approved_by?: string | undefined;
312
- approved_at?: string | undefined;
313
- }, {
314
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
315
- proposed_by: string;
316
- rationale?: string | undefined;
317
- by_domain?: Record<string, {
318
- seed: Record<string, unknown>;
319
- }> | undefined;
320
- approved_by?: string | undefined;
321
- approved_at?: string | undefined;
322
- }>>;
323
- }, "strip", z.ZodTypeAny, {
324
- routes?: {
325
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
326
- proposed_by: string;
327
- paths: {
328
- path: string;
329
- file: string;
330
- }[];
331
- rationale?: string | undefined;
332
- approved_by?: string | undefined;
333
- approved_at?: string | undefined;
334
- } | undefined;
335
- auth?: {
336
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
337
- proposed_by: string;
338
- rationale?: string | undefined;
339
- requirements?: string[] | undefined;
340
- approved_by?: string | undefined;
341
- approved_at?: string | undefined;
342
- } | undefined;
343
- schema?: {
344
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
345
- proposed_by: string;
346
- sql: string;
347
- rationale?: string | undefined;
348
- approved_by?: string | undefined;
349
- approved_at?: string | undefined;
350
- } | undefined;
351
- ui_layout?: {
352
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
353
- proposed_by: string;
354
- rationale?: string | undefined;
355
- tokens_to_reuse?: string[] | undefined;
356
- tokens_to_add?: string[] | undefined;
357
- components_to_reuse?: string[] | undefined;
358
- approved_by?: string | undefined;
359
- approved_at?: string | undefined;
360
- viewport_coverage?: string[] | undefined;
361
- } | undefined;
362
- fixtures?: {
363
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
364
- proposed_by: string;
365
- rationale?: string | undefined;
366
- by_domain?: Record<string, {
367
- seed: Record<string, unknown>;
368
- }> | undefined;
369
- approved_by?: string | undefined;
370
- approved_at?: string | undefined;
371
- } | undefined;
372
- perf_budget?: {
373
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
374
- proposed_by: string;
375
- rationale?: string | undefined;
376
- approved_by?: string | undefined;
377
- approved_at?: string | undefined;
378
- budgets?: Record<string, number> | undefined;
379
- } | undefined;
380
- observability?: {
381
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
382
- proposed_by: string;
383
- rationale?: string | undefined;
384
- approved_by?: string | undefined;
385
- approved_at?: string | undefined;
386
- log_events?: string[] | undefined;
387
- metrics?: {
388
- name: string;
389
- type: string;
390
- }[] | undefined;
391
- } | undefined;
392
- infra?: {
393
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
394
- proposed_by: string;
395
- rationale?: string | undefined;
396
- approved_by?: string | undefined;
397
- approved_at?: string | undefined;
398
- runtime?: string | undefined;
399
- deploy_target?: string | undefined;
400
- notes?: string | undefined;
401
- } | undefined;
402
- api_shape?: {
403
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
404
- proposed_by: string;
405
- rationale?: string | undefined;
406
- approved_by?: string | undefined;
407
- approved_at?: string | undefined;
408
- endpoints?: {
409
- path: string;
410
- method: string;
411
- request_schema?: unknown;
412
- responses?: Record<string, unknown> | undefined;
413
- }[] | undefined;
414
- } | undefined;
415
- }, {
416
- routes?: {
417
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
418
- proposed_by: string;
419
- paths: {
420
- path: string;
421
- file: string;
422
- }[];
423
- rationale?: string | undefined;
424
- approved_by?: string | undefined;
425
- approved_at?: string | undefined;
426
- } | undefined;
427
- auth?: {
428
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
429
- proposed_by: string;
430
- rationale?: string | undefined;
431
- requirements?: string[] | undefined;
432
- approved_by?: string | undefined;
433
- approved_at?: string | undefined;
434
- } | undefined;
435
- schema?: {
436
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
437
- proposed_by: string;
438
- sql: string;
439
- rationale?: string | undefined;
440
- approved_by?: string | undefined;
441
- approved_at?: string | undefined;
442
- } | undefined;
443
- ui_layout?: {
444
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
445
- proposed_by: string;
446
- rationale?: string | undefined;
447
- tokens_to_reuse?: string[] | undefined;
448
- tokens_to_add?: string[] | undefined;
449
- components_to_reuse?: string[] | undefined;
450
- approved_by?: string | undefined;
451
- approved_at?: string | undefined;
452
- viewport_coverage?: string[] | undefined;
453
- } | undefined;
454
- fixtures?: {
455
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
456
- proposed_by: string;
457
- rationale?: string | undefined;
458
- by_domain?: Record<string, {
459
- seed: Record<string, unknown>;
460
- }> | undefined;
461
- approved_by?: string | undefined;
462
- approved_at?: string | undefined;
463
- } | undefined;
464
- perf_budget?: {
465
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
466
- proposed_by: string;
467
- rationale?: string | undefined;
468
- approved_by?: string | undefined;
469
- approved_at?: string | undefined;
470
- budgets?: Record<string, number> | undefined;
471
- } | undefined;
472
- observability?: {
473
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
474
- proposed_by: string;
475
- rationale?: string | undefined;
476
- approved_by?: string | undefined;
477
- approved_at?: string | undefined;
478
- log_events?: string[] | undefined;
479
- metrics?: {
480
- name: string;
481
- type: string;
482
- }[] | undefined;
483
- } | undefined;
484
- infra?: {
485
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
486
- proposed_by: string;
487
- rationale?: string | undefined;
488
- approved_by?: string | undefined;
489
- approved_at?: string | undefined;
490
- runtime?: string | undefined;
491
- deploy_target?: string | undefined;
492
- notes?: string | undefined;
493
- } | undefined;
494
- api_shape?: {
495
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
496
- proposed_by: string;
497
- rationale?: string | undefined;
498
- approved_by?: string | undefined;
499
- approved_at?: string | undefined;
500
- endpoints?: {
501
- path: string;
502
- method: string;
503
- request_schema?: unknown;
504
- responses?: Record<string, unknown> | undefined;
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,863 +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
- rationale?: string | undefined;
635
- approved_by?: string | undefined;
636
- approved_at?: string | undefined;
637
- }, {
638
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
639
- proposed_by: string;
640
- sql: string;
641
- rationale?: string | undefined;
642
- approved_by?: string | undefined;
643
- approved_at?: 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
- rationale?: string | undefined;
660
- tokens_to_reuse?: string[] | undefined;
661
- tokens_to_add?: string[] | undefined;
662
- components_to_reuse?: string[] | undefined;
663
- approved_by?: string | undefined;
664
- approved_at?: string | undefined;
665
- viewport_coverage?: string[] | undefined;
666
- }, {
667
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
668
- proposed_by: string;
669
- rationale?: string | undefined;
670
- tokens_to_reuse?: string[] | undefined;
671
- tokens_to_add?: string[] | undefined;
672
- components_to_reuse?: string[] | undefined;
673
- approved_by?: string | undefined;
674
- approved_at?: string | undefined;
675
- viewport_coverage?: 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
- rationale?: string | undefined;
702
- approved_by?: string | undefined;
703
- approved_at?: 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
- rationale?: string | undefined;
712
- approved_by?: string | undefined;
713
- approved_at?: 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
- rationale?: string | undefined;
727
- requirements?: string[] | undefined;
728
- approved_by?: string | undefined;
729
- approved_at?: string | undefined;
730
- }, {
731
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
732
- proposed_by: string;
733
- rationale?: string | undefined;
734
- requirements?: string[] | undefined;
735
- approved_by?: string | undefined;
736
- approved_at?: 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
- rationale?: string | undefined;
750
- approved_by?: string | undefined;
751
- approved_at?: string | undefined;
752
- budgets?: Record<string, number> | undefined;
753
- }, {
754
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
755
- proposed_by: string;
756
- rationale?: string | undefined;
757
- approved_by?: string | undefined;
758
- approved_at?: 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
- name: string;
774
- type: string;
775
- }, {
776
- name: string;
777
- type: string;
778
- }>, "many">>;
779
- }, "strip", z.ZodTypeAny, {
780
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
781
- proposed_by: string;
782
- rationale?: string | undefined;
783
- approved_by?: string | undefined;
784
- approved_at?: string | undefined;
785
- log_events?: string[] | undefined;
786
- metrics?: {
787
- name: string;
788
- type: string;
789
- }[] | undefined;
790
- }, {
791
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
792
- proposed_by: string;
793
- rationale?: string | undefined;
794
- approved_by?: string | undefined;
795
- approved_at?: string | undefined;
796
- log_events?: string[] | undefined;
797
- metrics?: {
798
- name: string;
799
- type: 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
- rationale?: string | undefined;
816
- approved_by?: string | undefined;
817
- approved_at?: 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
- rationale?: string | undefined;
825
- approved_by?: string | undefined;
826
- approved_at?: 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
- rationale?: string | undefined;
858
- approved_by?: string | undefined;
859
- approved_at?: 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
- rationale?: string | undefined;
870
- approved_by?: string | undefined;
871
- approved_at?: 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
- rationale?: string | undefined;
923
- by_domain?: Record<string, {
924
- seed: Record<string, unknown>;
925
- }> | undefined;
926
- approved_by?: string | undefined;
927
- approved_at?: string | undefined;
928
- }, {
929
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
930
- proposed_by: string;
931
- rationale?: string | undefined;
932
- by_domain?: Record<string, {
933
- seed: Record<string, unknown>;
934
- }> | undefined;
935
- approved_by?: string | undefined;
936
- approved_at?: string | undefined;
937
- }>>;
938
- }, "strip", z.ZodTypeAny, {
939
- routes?: {
940
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
941
- proposed_by: string;
942
- paths: {
943
- path: string;
944
- file: string;
945
- }[];
946
- rationale?: string | undefined;
947
- approved_by?: string | undefined;
948
- approved_at?: string | undefined;
949
- } | undefined;
950
- auth?: {
951
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
952
- proposed_by: string;
953
- rationale?: string | undefined;
954
- requirements?: string[] | undefined;
955
- approved_by?: string | undefined;
956
- approved_at?: string | undefined;
957
- } | undefined;
958
- schema?: {
959
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
960
- proposed_by: string;
961
- sql: string;
962
- rationale?: string | undefined;
963
- approved_by?: string | undefined;
964
- approved_at?: string | undefined;
965
- } | undefined;
966
- ui_layout?: {
967
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
968
- proposed_by: string;
969
- rationale?: string | undefined;
970
- tokens_to_reuse?: string[] | undefined;
971
- tokens_to_add?: string[] | undefined;
972
- components_to_reuse?: string[] | undefined;
973
- approved_by?: string | undefined;
974
- approved_at?: string | undefined;
975
- viewport_coverage?: string[] | undefined;
976
- } | undefined;
977
- fixtures?: {
978
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
979
- proposed_by: string;
980
- rationale?: string | undefined;
981
- by_domain?: Record<string, {
982
- seed: Record<string, unknown>;
983
- }> | undefined;
984
- approved_by?: string | undefined;
985
- approved_at?: string | undefined;
986
- } | undefined;
987
- perf_budget?: {
988
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
989
- proposed_by: string;
990
- rationale?: string | undefined;
991
- approved_by?: string | undefined;
992
- approved_at?: string | undefined;
993
- budgets?: Record<string, number> | undefined;
994
- } | undefined;
995
- observability?: {
996
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
997
- proposed_by: string;
998
- rationale?: string | undefined;
999
- approved_by?: string | undefined;
1000
- approved_at?: string | undefined;
1001
- log_events?: string[] | undefined;
1002
- metrics?: {
1003
- name: string;
1004
- type: string;
1005
- }[] | undefined;
1006
- } | undefined;
1007
- infra?: {
1008
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1009
- proposed_by: string;
1010
- rationale?: string | undefined;
1011
- approved_by?: string | undefined;
1012
- approved_at?: string | undefined;
1013
- runtime?: string | undefined;
1014
- deploy_target?: string | undefined;
1015
- notes?: string | undefined;
1016
- } | undefined;
1017
- api_shape?: {
1018
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1019
- proposed_by: string;
1020
- rationale?: string | undefined;
1021
- approved_by?: string | undefined;
1022
- approved_at?: string | undefined;
1023
- endpoints?: {
1024
- path: string;
1025
- method: string;
1026
- request_schema?: unknown;
1027
- responses?: Record<string, unknown> | undefined;
1028
- }[] | undefined;
1029
- } | undefined;
1030
- }, {
1031
- routes?: {
1032
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1033
- proposed_by: string;
1034
- paths: {
1035
- path: string;
1036
- file: string;
1037
- }[];
1038
- rationale?: string | undefined;
1039
- approved_by?: string | undefined;
1040
- approved_at?: string | undefined;
1041
- } | undefined;
1042
- auth?: {
1043
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1044
- proposed_by: string;
1045
- rationale?: string | undefined;
1046
- requirements?: string[] | undefined;
1047
- approved_by?: string | undefined;
1048
- approved_at?: string | undefined;
1049
- } | undefined;
1050
- schema?: {
1051
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1052
- proposed_by: string;
1053
- sql: string;
1054
- rationale?: string | undefined;
1055
- approved_by?: string | undefined;
1056
- approved_at?: string | undefined;
1057
- } | undefined;
1058
- ui_layout?: {
1059
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1060
- proposed_by: string;
1061
- rationale?: string | undefined;
1062
- tokens_to_reuse?: string[] | undefined;
1063
- tokens_to_add?: string[] | undefined;
1064
- components_to_reuse?: string[] | undefined;
1065
- approved_by?: string | undefined;
1066
- approved_at?: string | undefined;
1067
- viewport_coverage?: string[] | undefined;
1068
- } | undefined;
1069
- fixtures?: {
1070
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1071
- proposed_by: string;
1072
- rationale?: string | undefined;
1073
- by_domain?: Record<string, {
1074
- seed: Record<string, unknown>;
1075
- }> | undefined;
1076
- approved_by?: string | undefined;
1077
- approved_at?: string | undefined;
1078
- } | undefined;
1079
- perf_budget?: {
1080
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1081
- proposed_by: string;
1082
- rationale?: string | undefined;
1083
- approved_by?: string | undefined;
1084
- approved_at?: string | undefined;
1085
- budgets?: Record<string, number> | undefined;
1086
- } | undefined;
1087
- observability?: {
1088
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1089
- proposed_by: string;
1090
- rationale?: string | undefined;
1091
- approved_by?: string | undefined;
1092
- approved_at?: string | undefined;
1093
- log_events?: string[] | undefined;
1094
- metrics?: {
1095
- name: string;
1096
- type: string;
1097
- }[] | undefined;
1098
- } | undefined;
1099
- infra?: {
1100
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1101
- proposed_by: string;
1102
- rationale?: string | undefined;
1103
- approved_by?: string | undefined;
1104
- approved_at?: string | undefined;
1105
- runtime?: string | undefined;
1106
- deploy_target?: string | undefined;
1107
- notes?: string | undefined;
1108
- } | undefined;
1109
- api_shape?: {
1110
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1111
- proposed_by: string;
1112
- rationale?: string | undefined;
1113
- approved_by?: string | undefined;
1114
- approved_at?: string | undefined;
1115
- endpoints?: {
1116
- path: string;
1117
- method: string;
1118
- request_schema?: unknown;
1119
- responses?: Record<string, unknown> | undefined;
1120
- }[] | undefined;
1121
- } | undefined;
1122
- }>>;
1123
- }, "strip", z.ZodTypeAny, {
1124
- status: "draft" | "active" | "superseded";
1125
- created_at: string;
1126
- title: string;
1127
- supersedes: string[];
1128
- superseded_by: string | null;
1129
- story_id: string;
1130
- actors: {
1131
- name: string;
1132
- notes?: string | undefined;
1133
- }[];
1134
- preconditions: string[];
1135
- invariants: string[];
1136
- acceptance_scenarios: string[];
1137
- non_goals: string[];
1138
- source_issue?: string | undefined;
1139
- $schema?: string | undefined;
1140
- token_budget_usd?: number | undefined;
1141
- estimate?: "small" | "medium" | "large" | undefined;
1142
- refined_by?: string | undefined;
1143
- api_contract?: unknown[] | undefined;
1144
- ui_behavior?: Record<string, string> | undefined;
1145
- related_specs?: {
1146
- id: string;
1147
- relationship: "superseded" | "overlap" | "related";
1148
- note?: string | undefined;
1149
- }[] | undefined;
1150
- proposals?: {
1151
- routes?: {
1152
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1153
- proposed_by: string;
1154
- paths: {
1155
- path: string;
1156
- file: string;
1157
- }[];
1158
- rationale?: string | undefined;
1159
- approved_by?: string | undefined;
1160
- approved_at?: string | undefined;
1161
- } | undefined;
1162
- auth?: {
1163
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1164
- proposed_by: string;
1165
- rationale?: string | undefined;
1166
- requirements?: string[] | undefined;
1167
- approved_by?: string | undefined;
1168
- approved_at?: string | undefined;
1169
- } | undefined;
1170
- schema?: {
1171
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1172
- proposed_by: string;
1173
- sql: string;
1174
- rationale?: string | undefined;
1175
- approved_by?: string | undefined;
1176
- approved_at?: string | undefined;
1177
- } | undefined;
1178
- ui_layout?: {
1179
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1180
- proposed_by: string;
1181
- rationale?: string | undefined;
1182
- tokens_to_reuse?: string[] | undefined;
1183
- tokens_to_add?: string[] | undefined;
1184
- components_to_reuse?: string[] | undefined;
1185
- approved_by?: string | undefined;
1186
- approved_at?: string | undefined;
1187
- viewport_coverage?: string[] | undefined;
1188
- } | undefined;
1189
- fixtures?: {
1190
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1191
- proposed_by: string;
1192
- rationale?: string | undefined;
1193
- by_domain?: Record<string, {
1194
- seed: Record<string, unknown>;
1195
- }> | undefined;
1196
- approved_by?: string | undefined;
1197
- approved_at?: string | undefined;
1198
- } | undefined;
1199
- perf_budget?: {
1200
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1201
- proposed_by: string;
1202
- rationale?: string | undefined;
1203
- approved_by?: string | undefined;
1204
- approved_at?: string | undefined;
1205
- budgets?: Record<string, number> | undefined;
1206
- } | undefined;
1207
- observability?: {
1208
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1209
- proposed_by: string;
1210
- rationale?: string | undefined;
1211
- approved_by?: string | undefined;
1212
- approved_at?: string | undefined;
1213
- log_events?: string[] | undefined;
1214
- metrics?: {
1215
- name: string;
1216
- type: string;
1217
- }[] | undefined;
1218
- } | undefined;
1219
- infra?: {
1220
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1221
- proposed_by: string;
1222
- rationale?: string | undefined;
1223
- approved_by?: string | undefined;
1224
- approved_at?: string | undefined;
1225
- runtime?: string | undefined;
1226
- deploy_target?: string | undefined;
1227
- notes?: string | undefined;
1228
- } | undefined;
1229
- api_shape?: {
1230
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1231
- proposed_by: string;
1232
- rationale?: string | undefined;
1233
- approved_by?: string | undefined;
1234
- approved_at?: string | undefined;
1235
- endpoints?: {
1236
- path: string;
1237
- method: string;
1238
- request_schema?: unknown;
1239
- responses?: Record<string, unknown> | undefined;
1240
- }[] | undefined;
1241
- } | undefined;
1242
- } | undefined;
1243
- }, {
1244
- status: "draft" | "active" | "superseded";
1245
- created_at: string;
1246
- title: string;
1247
- supersedes: string[];
1248
- superseded_by: string | null;
1249
- story_id: string;
1250
- actors: {
1251
- name: string;
1252
- notes?: string | undefined;
1253
- }[];
1254
- preconditions: string[];
1255
- invariants: string[];
1256
- acceptance_scenarios: string[];
1257
- non_goals: string[];
1258
- source_issue?: string | undefined;
1259
- $schema?: string | undefined;
1260
- token_budget_usd?: number | undefined;
1261
- estimate?: "small" | "medium" | "large" | undefined;
1262
- refined_by?: string | undefined;
1263
- api_contract?: unknown[] | undefined;
1264
- ui_behavior?: Record<string, string> | undefined;
1265
- related_specs?: {
1266
- id: string;
1267
- relationship: "superseded" | "overlap" | "related";
1268
- note?: string | undefined;
1269
- }[] | undefined;
1270
- proposals?: {
1271
- routes?: {
1272
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1273
- proposed_by: string;
1274
- paths: {
1275
- path: string;
1276
- file: string;
1277
- }[];
1278
- rationale?: string | undefined;
1279
- approved_by?: string | undefined;
1280
- approved_at?: string | undefined;
1281
- } | undefined;
1282
- auth?: {
1283
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1284
- proposed_by: string;
1285
- rationale?: string | undefined;
1286
- requirements?: string[] | undefined;
1287
- approved_by?: string | undefined;
1288
- approved_at?: string | undefined;
1289
- } | undefined;
1290
- schema?: {
1291
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1292
- proposed_by: string;
1293
- sql: string;
1294
- rationale?: string | undefined;
1295
- approved_by?: string | undefined;
1296
- approved_at?: string | undefined;
1297
- } | undefined;
1298
- ui_layout?: {
1299
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1300
- proposed_by: string;
1301
- rationale?: string | undefined;
1302
- tokens_to_reuse?: string[] | undefined;
1303
- tokens_to_add?: string[] | undefined;
1304
- components_to_reuse?: string[] | undefined;
1305
- approved_by?: string | undefined;
1306
- approved_at?: string | undefined;
1307
- viewport_coverage?: string[] | undefined;
1308
- } | undefined;
1309
- fixtures?: {
1310
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1311
- proposed_by: string;
1312
- rationale?: string | undefined;
1313
- by_domain?: Record<string, {
1314
- seed: Record<string, unknown>;
1315
- }> | undefined;
1316
- approved_by?: string | undefined;
1317
- approved_at?: string | undefined;
1318
- } | undefined;
1319
- perf_budget?: {
1320
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1321
- proposed_by: string;
1322
- rationale?: string | undefined;
1323
- approved_by?: string | undefined;
1324
- approved_at?: string | undefined;
1325
- budgets?: Record<string, number> | undefined;
1326
- } | undefined;
1327
- observability?: {
1328
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1329
- proposed_by: string;
1330
- rationale?: string | undefined;
1331
- approved_by?: string | undefined;
1332
- approved_at?: string | undefined;
1333
- log_events?: string[] | undefined;
1334
- metrics?: {
1335
- name: string;
1336
- type: string;
1337
- }[] | undefined;
1338
- } | undefined;
1339
- infra?: {
1340
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1341
- proposed_by: string;
1342
- rationale?: string | undefined;
1343
- approved_by?: string | undefined;
1344
- approved_at?: string | undefined;
1345
- runtime?: string | undefined;
1346
- deploy_target?: string | undefined;
1347
- notes?: string | undefined;
1348
- } | undefined;
1349
- api_shape?: {
1350
- status: "pending" | "approved" | "rejected" | "deferred" | "blocked_on_clarification";
1351
- proposed_by: string;
1352
- rationale?: string | undefined;
1353
- approved_by?: string | undefined;
1354
- approved_at?: string | undefined;
1355
- endpoints?: {
1356
- path: string;
1357
- method: string;
1358
- request_schema?: unknown;
1359
- responses?: Record<string, unknown> | undefined;
1360
- }[] | undefined;
1361
- } | undefined;
1362
- } | undefined;
1363
- }>;
372
+ }, z.core.$strip>>>;
373
+ }, z.core.$strip>>;
374
+ }, z.core.$strip>>;
375
+ cost: z.ZodOptional<z.ZodObject<{
376
+ total_usd: z.ZodNumber;
377
+ last_updated: z.ZodString;
378
+ }, z.core.$strip>>;
379
+ }, z.core.$strip>;
1364
380
  SpecIndexEntry: z.ZodObject<{
1365
381
  title: z.ZodString;
1366
- status: z.ZodEnum<["draft", "active", "superseded"]>;
382
+ status: z.ZodEnum<{
383
+ draft: "draft";
384
+ active: "active";
385
+ superseded: "superseded";
386
+ }>;
1367
387
  source_issue: z.ZodOptional<z.ZodString>;
1368
- tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
388
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1369
389
  summary: z.ZodOptional<z.ZodString>;
1370
- supersedes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1371
- superseded_by: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
1372
- }, "strip", z.ZodTypeAny, {
1373
- status: "draft" | "active" | "superseded";
1374
- title: string;
1375
- source_issue?: string | undefined;
1376
- tags?: string[] | undefined;
1377
- summary?: string | undefined;
1378
- supersedes?: string[] | undefined;
1379
- superseded_by?: string | null | undefined;
1380
- }, {
1381
- status: "draft" | "active" | "superseded";
1382
- title: string;
1383
- source_issue?: string | undefined;
1384
- tags?: string[] | undefined;
1385
- summary?: string | undefined;
1386
- supersedes?: string[] | undefined;
1387
- superseded_by?: string | null | undefined;
1388
- }>;
390
+ supersedes: z.ZodOptional<z.ZodArray<z.ZodString>>;
391
+ superseded_by: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
392
+ }, z.core.$strip>;
1389
393
  };
1390
394
  /** Minimal helper for the agent to build a SpecIndexEntry from a Spec. */
1391
395
  export declare function entryFromSpec(spec: Spec): SpecIndexEntry;