@prd-improve/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/README.md +38 -0
  2. package/dist/anchor-slicer.d.ts +18 -0
  3. package/dist/anchor-slicer.js +114 -0
  4. package/dist/anchor-slicer.js.map +1 -0
  5. package/dist/api/client.d.ts +68 -0
  6. package/dist/api/client.js +175 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/changelog.d.ts +9 -0
  9. package/dist/changelog.js +34 -0
  10. package/dist/changelog.js.map +1 -0
  11. package/dist/cli.d.ts +2 -0
  12. package/dist/cli.js +258 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/admin/_adminJson.d.ts +18 -0
  15. package/dist/commands/admin/_adminJson.js +27 -0
  16. package/dist/commands/admin/_adminJson.js.map +1 -0
  17. package/dist/commands/admin/_authResolve.d.ts +8 -0
  18. package/dist/commands/admin/_authResolve.js +56 -0
  19. package/dist/commands/admin/_authResolve.js.map +1 -0
  20. package/dist/commands/admin/index.d.ts +22 -0
  21. package/dist/commands/admin/index.js +100 -0
  22. package/dist/commands/admin/index.js.map +1 -0
  23. package/dist/commands/admin/io.d.ts +15 -0
  24. package/dist/commands/admin/io.js +30 -0
  25. package/dist/commands/admin/io.js.map +1 -0
  26. package/dist/commands/admin/member.d.ts +43 -0
  27. package/dist/commands/admin/member.js +362 -0
  28. package/dist/commands/admin/member.js.map +1 -0
  29. package/dist/commands/admin/project.d.ts +40 -0
  30. package/dist/commands/admin/project.js +182 -0
  31. package/dist/commands/admin/project.js.map +1 -0
  32. package/dist/commands/admin/team.d.ts +31 -0
  33. package/dist/commands/admin/team.js +157 -0
  34. package/dist/commands/admin/team.js.map +1 -0
  35. package/dist/commands/admin/teamMember.d.ts +33 -0
  36. package/dist/commands/admin/teamMember.js +262 -0
  37. package/dist/commands/admin/teamMember.js.map +1 -0
  38. package/dist/commands/admin/token.d.ts +29 -0
  39. package/dist/commands/admin/token.js +125 -0
  40. package/dist/commands/admin/token.js.map +1 -0
  41. package/dist/commands/admin/user.d.ts +2 -0
  42. package/dist/commands/admin/user.js +85 -0
  43. package/dist/commands/admin/user.js.map +1 -0
  44. package/dist/commands/config.d.ts +9 -0
  45. package/dist/commands/config.js +178 -0
  46. package/dist/commands/config.js.map +1 -0
  47. package/dist/commands/context.d.ts +11 -0
  48. package/dist/commands/context.js +235 -0
  49. package/dist/commands/context.js.map +1 -0
  50. package/dist/commands/diff.d.ts +6 -0
  51. package/dist/commands/diff.js +208 -0
  52. package/dist/commands/diff.js.map +1 -0
  53. package/dist/commands/freeze.d.ts +10 -0
  54. package/dist/commands/freeze.js +269 -0
  55. package/dist/commands/freeze.js.map +1 -0
  56. package/dist/commands/init.d.ts +24 -0
  57. package/dist/commands/init.js +229 -0
  58. package/dist/commands/init.js.map +1 -0
  59. package/dist/commands/login.d.ts +26 -0
  60. package/dist/commands/login.js +241 -0
  61. package/dist/commands/login.js.map +1 -0
  62. package/dist/commands/logout.d.ts +6 -0
  63. package/dist/commands/logout.js +75 -0
  64. package/dist/commands/logout.js.map +1 -0
  65. package/dist/commands/migrate-yaml.d.ts +17 -0
  66. package/dist/commands/migrate-yaml.js +288 -0
  67. package/dist/commands/migrate-yaml.js.map +1 -0
  68. package/dist/commands/project.d.ts +7 -0
  69. package/dist/commands/project.js +87 -0
  70. package/dist/commands/project.js.map +1 -0
  71. package/dist/commands/pull.d.ts +16 -0
  72. package/dist/commands/pull.js +197 -0
  73. package/dist/commands/pull.js.map +1 -0
  74. package/dist/commands/push.d.ts +9 -0
  75. package/dist/commands/push.js +392 -0
  76. package/dist/commands/push.js.map +1 -0
  77. package/dist/commands/refresh.d.ts +9 -0
  78. package/dist/commands/refresh.js +123 -0
  79. package/dist/commands/refresh.js.map +1 -0
  80. package/dist/commands/status.d.ts +7 -0
  81. package/dist/commands/status.js +190 -0
  82. package/dist/commands/status.js.map +1 -0
  83. package/dist/commands/team.d.ts +6 -0
  84. package/dist/commands/team.js +84 -0
  85. package/dist/commands/team.js.map +1 -0
  86. package/dist/commands/validate.d.ts +5 -0
  87. package/dist/commands/validate.js +129 -0
  88. package/dist/commands/validate.js.map +1 -0
  89. package/dist/commands/whoami.d.ts +6 -0
  90. package/dist/commands/whoami.js +81 -0
  91. package/dist/commands/whoami.js.map +1 -0
  92. package/dist/config/adminBackend.d.ts +43 -0
  93. package/dist/config/adminBackend.js +33 -0
  94. package/dist/config/adminBackend.js.map +1 -0
  95. package/dist/config/rc.d.ts +70 -0
  96. package/dist/config/rc.js +148 -0
  97. package/dist/config/rc.js.map +1 -0
  98. package/dist/config/schema.d.ts +132 -0
  99. package/dist/config/schema.js +36 -0
  100. package/dist/config/schema.js.map +1 -0
  101. package/dist/diff/engine.d.ts +35 -0
  102. package/dist/diff/engine.js +305 -0
  103. package/dist/diff/engine.js.map +1 -0
  104. package/dist/diff/render.d.ts +18 -0
  105. package/dist/diff/render.js +129 -0
  106. package/dist/diff/render.js.map +1 -0
  107. package/dist/formatter/colors.d.ts +17 -0
  108. package/dist/formatter/colors.js +35 -0
  109. package/dist/formatter/colors.js.map +1 -0
  110. package/dist/formatter/human.d.ts +7 -0
  111. package/dist/formatter/human.js +70 -0
  112. package/dist/formatter/human.js.map +1 -0
  113. package/dist/fs/atomicWrite.d.ts +7 -0
  114. package/dist/fs/atomicWrite.js +37 -0
  115. package/dist/fs/atomicWrite.js.map +1 -0
  116. package/dist/i18n/dispatch.d.ts +19 -0
  117. package/dist/i18n/dispatch.js +27 -0
  118. package/dist/i18n/dispatch.js.map +1 -0
  119. package/dist/i18n/en.d.ts +3 -0
  120. package/dist/i18n/en.js +275 -0
  121. package/dist/i18n/en.js.map +1 -0
  122. package/dist/i18n/help.d.ts +3 -0
  123. package/dist/i18n/help.en.d.ts +149 -0
  124. package/dist/i18n/help.en.js +150 -0
  125. package/dist/i18n/help.en.js.map +1 -0
  126. package/dist/i18n/help.js +7 -0
  127. package/dist/i18n/help.js.map +1 -0
  128. package/dist/i18n/help.zh.d.ts +149 -0
  129. package/dist/i18n/help.zh.js +150 -0
  130. package/dist/i18n/help.zh.js.map +1 -0
  131. package/dist/i18n/helpFormat.d.ts +7 -0
  132. package/dist/i18n/helpFormat.js +51 -0
  133. package/dist/i18n/helpFormat.js.map +1 -0
  134. package/dist/i18n/helpGroups.d.ts +3 -0
  135. package/dist/i18n/helpGroups.js +11 -0
  136. package/dist/i18n/helpGroups.js.map +1 -0
  137. package/dist/i18n/index.d.ts +16 -0
  138. package/dist/i18n/index.js +46 -0
  139. package/dist/i18n/index.js.map +1 -0
  140. package/dist/i18n/peekLang.d.ts +1 -0
  141. package/dist/i18n/peekLang.js +16 -0
  142. package/dist/i18n/peekLang.js.map +1 -0
  143. package/dist/i18n/zh.d.ts +680 -0
  144. package/dist/i18n/zh.js +288 -0
  145. package/dist/i18n/zh.js.map +1 -0
  146. package/dist/parser/discover.d.ts +2 -0
  147. package/dist/parser/discover.js +69 -0
  148. package/dist/parser/discover.js.map +1 -0
  149. package/dist/parser/load-yaml.d.ts +11 -0
  150. package/dist/parser/load-yaml.js +25 -0
  151. package/dist/parser/load-yaml.js.map +1 -0
  152. package/dist/pkgVersion.d.ts +9 -0
  153. package/dist/pkgVersion.js +22 -0
  154. package/dist/pkgVersion.js.map +1 -0
  155. package/dist/renderer/context-md.d.ts +27 -0
  156. package/dist/renderer/context-md.js +444 -0
  157. package/dist/renderer/context-md.js.map +1 -0
  158. package/dist/renderer/refresh-md.d.ts +18 -0
  159. package/dist/renderer/refresh-md.js +93 -0
  160. package/dist/renderer/refresh-md.js.map +1 -0
  161. package/dist/schema/index.d.ts +2 -0
  162. package/dist/schema/index.js +3 -0
  163. package/dist/schema/index.js.map +1 -0
  164. package/dist/schema/modules.d.ts +461 -0
  165. package/dist/schema/modules.js +184 -0
  166. package/dist/schema/modules.js.map +1 -0
  167. package/dist/schema/prd.d.ts +1018 -0
  168. package/dist/schema/prd.js +65 -0
  169. package/dist/schema/prd.js.map +1 -0
  170. package/dist/sync/cliRcHelpers.d.ts +25 -0
  171. package/dist/sync/cliRcHelpers.js +62 -0
  172. package/dist/sync/cliRcHelpers.js.map +1 -0
  173. package/dist/sync/conflicts.d.ts +7 -0
  174. package/dist/sync/conflicts.js +72 -0
  175. package/dist/sync/conflicts.js.map +1 -0
  176. package/dist/sync/headProbe.d.ts +1 -0
  177. package/dist/sync/headProbe.js +95 -0
  178. package/dist/sync/headProbe.js.map +1 -0
  179. package/dist/sync/normalize.d.ts +10 -0
  180. package/dist/sync/normalize.js +13 -0
  181. package/dist/sync/normalize.js.map +1 -0
  182. package/dist/sync/syncJson.d.ts +18 -0
  183. package/dist/sync/syncJson.js +42 -0
  184. package/dist/sync/syncJson.js.map +1 -0
  185. package/dist/types.d.ts +70 -0
  186. package/dist/types.js +21 -0
  187. package/dist/types.js.map +1 -0
  188. package/dist/validators/blocking.d.ts +2 -0
  189. package/dist/validators/blocking.js +25 -0
  190. package/dist/validators/blocking.js.map +1 -0
  191. package/dist/validators/duplicate-ids.d.ts +2 -0
  192. package/dist/validators/duplicate-ids.js +58 -0
  193. package/dist/validators/duplicate-ids.js.map +1 -0
  194. package/dist/validators/references.d.ts +5 -0
  195. package/dist/validators/references.js +165 -0
  196. package/dist/validators/references.js.map +1 -0
  197. package/dist/validators/required-modules.d.ts +8 -0
  198. package/dist/validators/required-modules.js +59 -0
  199. package/dist/validators/required-modules.js.map +1 -0
  200. package/dist/validators/runner.d.ts +11 -0
  201. package/dist/validators/runner.js +73 -0
  202. package/dist/validators/runner.js.map +1 -0
  203. package/dist/workspace.d.ts +32 -0
  204. package/dist/workspace.js +37 -0
  205. package/dist/workspace.js.map +1 -0
  206. package/dist/yaml-indexer.d.ts +15 -0
  207. package/dist/yaml-indexer.js +112 -0
  208. package/dist/yaml-indexer.js.map +1 -0
  209. package/package.json +50 -0
@@ -0,0 +1,1018 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * 当前 schema 版本(v1.1 起 yaml meta 必带 team / project / feature 三 slug)。
4
+ * 仍接受 v0.1 以支持 `prd migrate-yaml` 升级前的存量 yaml(spec §3.2 backward compat)。
5
+ */
6
+ export declare const SCHEMA_VERSION_CURRENT: "v0.2";
7
+ export declare const SCHEMA_VERSION_LEGACY: "v0.1";
8
+ export declare const PrdSchema: z.ZodEffects<z.ZodObject<{
9
+ schema_version: z.ZodEnum<["v0.1", "v0.2"]>;
10
+ meta: z.ZodObject<{
11
+ team: z.ZodOptional<z.ZodString>;
12
+ project: z.ZodString;
13
+ feature: z.ZodString;
14
+ title: z.ZodString;
15
+ summary: z.ZodString;
16
+ owner: z.ZodString;
17
+ tags: z.ZodArray<z.ZodString, "many">;
18
+ created_at: z.ZodString;
19
+ source_materials: z.ZodArray<z.ZodObject<{
20
+ type: z.ZodString;
21
+ title: z.ZodString;
22
+ url: z.ZodString;
23
+ excerpt: z.ZodString;
24
+ captured_at: z.ZodString;
25
+ }, "strict", z.ZodTypeAny, {
26
+ type: string;
27
+ title: string;
28
+ url: string;
29
+ excerpt: string;
30
+ captured_at: string;
31
+ }, {
32
+ type: string;
33
+ title: string;
34
+ url: string;
35
+ excerpt: string;
36
+ captured_at: string;
37
+ }>, "many">;
38
+ lifecycle: z.ZodObject<{
39
+ version: z.ZodString;
40
+ status: z.ZodString;
41
+ updated_at: z.ZodString;
42
+ }, "strict", z.ZodTypeAny, {
43
+ status: string;
44
+ version: string;
45
+ updated_at: string;
46
+ }, {
47
+ status: string;
48
+ version: string;
49
+ updated_at: string;
50
+ }>;
51
+ }, "strict", z.ZodTypeAny, {
52
+ title: string;
53
+ project: string;
54
+ feature: string;
55
+ summary: string;
56
+ owner: string;
57
+ tags: string[];
58
+ created_at: string;
59
+ source_materials: {
60
+ type: string;
61
+ title: string;
62
+ url: string;
63
+ excerpt: string;
64
+ captured_at: string;
65
+ }[];
66
+ lifecycle: {
67
+ status: string;
68
+ version: string;
69
+ updated_at: string;
70
+ };
71
+ team?: string | undefined;
72
+ }, {
73
+ title: string;
74
+ project: string;
75
+ feature: string;
76
+ summary: string;
77
+ owner: string;
78
+ tags: string[];
79
+ created_at: string;
80
+ source_materials: {
81
+ type: string;
82
+ title: string;
83
+ url: string;
84
+ excerpt: string;
85
+ captured_at: string;
86
+ }[];
87
+ lifecycle: {
88
+ status: string;
89
+ version: string;
90
+ updated_at: string;
91
+ };
92
+ team?: string | undefined;
93
+ }>;
94
+ background_and_goals: z.ZodObject<{
95
+ background: z.ZodString;
96
+ goals: z.ZodArray<z.ZodString, "many">;
97
+ }, "strict", z.ZodTypeAny, {
98
+ background: string;
99
+ goals: string[];
100
+ }, {
101
+ background: string;
102
+ goals: string[];
103
+ }>;
104
+ users_and_roles: z.ZodArray<z.ZodObject<{
105
+ role: z.ZodString;
106
+ description: z.ZodString;
107
+ typical_goals: z.ZodArray<z.ZodString, "many">;
108
+ }, "strict", z.ZodTypeAny, {
109
+ role: string;
110
+ description: string;
111
+ typical_goals: string[];
112
+ }, {
113
+ role: string;
114
+ description: string;
115
+ typical_goals: string[];
116
+ }>, "many">;
117
+ in_scope: z.ZodArray<z.ZodObject<{
118
+ id: z.ZodString;
119
+ name: z.ZodString;
120
+ summary: z.ZodString;
121
+ }, "strict", z.ZodTypeAny, {
122
+ summary: string;
123
+ id: string;
124
+ name: string;
125
+ }, {
126
+ summary: string;
127
+ id: string;
128
+ name: string;
129
+ }>, "many">;
130
+ out_of_scope: z.ZodArray<z.ZodObject<{
131
+ item: z.ZodString;
132
+ reason: z.ZodString;
133
+ }, "strict", z.ZodTypeAny, {
134
+ item: string;
135
+ reason: string;
136
+ }, {
137
+ item: string;
138
+ reason: string;
139
+ }>, "many">;
140
+ entities: z.ZodArray<z.ZodObject<{
141
+ id: z.ZodString;
142
+ name: z.ZodString;
143
+ description: z.ZodString;
144
+ fields: z.ZodArray<z.ZodObject<{
145
+ name: z.ZodString;
146
+ type: z.ZodString;
147
+ required: z.ZodOptional<z.ZodBoolean>;
148
+ notes: z.ZodOptional<z.ZodString>;
149
+ }, "strict", z.ZodTypeAny, {
150
+ type: string;
151
+ name: string;
152
+ required?: boolean | undefined;
153
+ notes?: string | undefined;
154
+ }, {
155
+ type: string;
156
+ name: string;
157
+ required?: boolean | undefined;
158
+ notes?: string | undefined;
159
+ }>, "many">;
160
+ relations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
161
+ lifecycle_states: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
162
+ }, "strict", z.ZodTypeAny, {
163
+ description: string;
164
+ id: string;
165
+ name: string;
166
+ fields: {
167
+ type: string;
168
+ name: string;
169
+ required?: boolean | undefined;
170
+ notes?: string | undefined;
171
+ }[];
172
+ relations?: string[] | undefined;
173
+ lifecycle_states?: string[] | undefined;
174
+ }, {
175
+ description: string;
176
+ id: string;
177
+ name: string;
178
+ fields: {
179
+ type: string;
180
+ name: string;
181
+ required?: boolean | undefined;
182
+ notes?: string | undefined;
183
+ }[];
184
+ relations?: string[] | undefined;
185
+ lifecycle_states?: string[] | undefined;
186
+ }>, "many">;
187
+ main_flow: z.ZodArray<z.ZodObject<{
188
+ step: z.ZodNumber;
189
+ actor: z.ZodString;
190
+ trigger: z.ZodString;
191
+ action: z.ZodString;
192
+ outcome: z.ZodString;
193
+ }, "strict", z.ZodTypeAny, {
194
+ step: number;
195
+ actor: string;
196
+ trigger: string;
197
+ action: string;
198
+ outcome: string;
199
+ }, {
200
+ step: number;
201
+ actor: string;
202
+ trigger: string;
203
+ action: string;
204
+ outcome: string;
205
+ }>, "many">;
206
+ state_permissions: z.ZodArray<z.ZodObject<{
207
+ entity_id: z.ZodString;
208
+ state: z.ZodString;
209
+ allowed_actions: z.ZodArray<z.ZodObject<{
210
+ action: z.ZodString;
211
+ roles: z.ZodArray<z.ZodString, "many">;
212
+ notes: z.ZodOptional<z.ZodString>;
213
+ }, "strict", z.ZodTypeAny, {
214
+ action: string;
215
+ roles: string[];
216
+ notes?: string | undefined;
217
+ }, {
218
+ action: string;
219
+ roles: string[];
220
+ notes?: string | undefined;
221
+ }>, "many">;
222
+ notes: z.ZodOptional<z.ZodString>;
223
+ }, "strict", z.ZodTypeAny, {
224
+ entity_id: string;
225
+ state: string;
226
+ allowed_actions: {
227
+ action: string;
228
+ roles: string[];
229
+ notes?: string | undefined;
230
+ }[];
231
+ notes?: string | undefined;
232
+ }, {
233
+ entity_id: string;
234
+ state: string;
235
+ allowed_actions: {
236
+ action: string;
237
+ roles: string[];
238
+ notes?: string | undefined;
239
+ }[];
240
+ notes?: string | undefined;
241
+ }>, "many">;
242
+ business_rules: z.ZodArray<z.ZodObject<{
243
+ id: z.ZodString;
244
+ rule: z.ZodString;
245
+ rationale: z.ZodOptional<z.ZodString>;
246
+ applies_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
247
+ }, "strict", z.ZodTypeAny, {
248
+ id: string;
249
+ rule: string;
250
+ rationale?: string | undefined;
251
+ applies_to?: string[] | undefined;
252
+ }, {
253
+ id: string;
254
+ rule: string;
255
+ rationale?: string | undefined;
256
+ applies_to?: string[] | undefined;
257
+ }>, "many">;
258
+ scenarios: z.ZodArray<z.ZodObject<{
259
+ id: z.ZodString;
260
+ condition: z.ZodString;
261
+ expected_behavior: z.ZodString;
262
+ input: z.ZodOptional<z.ZodString>;
263
+ output: z.ZodOptional<z.ZodString>;
264
+ refers_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
265
+ }, "strict", z.ZodTypeAny, {
266
+ id: string;
267
+ condition: string;
268
+ expected_behavior: string;
269
+ input?: string | undefined;
270
+ output?: string | undefined;
271
+ refers_to?: string[] | undefined;
272
+ }, {
273
+ id: string;
274
+ condition: string;
275
+ expected_behavior: string;
276
+ input?: string | undefined;
277
+ output?: string | undefined;
278
+ refers_to?: string[] | undefined;
279
+ }>, "many">;
280
+ edge_cases: z.ZodArray<z.ZodObject<{
281
+ id: z.ZodString;
282
+ situation: z.ZodString;
283
+ expected_behavior: z.ZodString;
284
+ mitigation: z.ZodOptional<z.ZodString>;
285
+ }, "strict", z.ZodTypeAny, {
286
+ id: string;
287
+ expected_behavior: string;
288
+ situation: string;
289
+ mitigation?: string | undefined;
290
+ }, {
291
+ id: string;
292
+ expected_behavior: string;
293
+ situation: string;
294
+ mitigation?: string | undefined;
295
+ }>, "many">;
296
+ ui_interaction: z.ZodArray<z.ZodObject<{
297
+ id: z.ZodString;
298
+ page: z.ZodString;
299
+ purpose: z.ZodString;
300
+ key_elements: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
301
+ user_actions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
302
+ empty_state: z.ZodOptional<z.ZodString>;
303
+ loading_state: z.ZodOptional<z.ZodString>;
304
+ error_state: z.ZodOptional<z.ZodString>;
305
+ }, "strict", z.ZodTypeAny, {
306
+ id: string;
307
+ page: string;
308
+ purpose: string;
309
+ key_elements?: string[] | undefined;
310
+ user_actions?: string[] | undefined;
311
+ empty_state?: string | undefined;
312
+ loading_state?: string | undefined;
313
+ error_state?: string | undefined;
314
+ }, {
315
+ id: string;
316
+ page: string;
317
+ purpose: string;
318
+ key_elements?: string[] | undefined;
319
+ user_actions?: string[] | undefined;
320
+ empty_state?: string | undefined;
321
+ loading_state?: string | undefined;
322
+ error_state?: string | undefined;
323
+ }>, "many">;
324
+ data_and_api: z.ZodObject<{
325
+ data_constraints: z.ZodArray<z.ZodObject<{
326
+ id: z.ZodString;
327
+ text: z.ZodString;
328
+ applies_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
329
+ }, "strict", z.ZodTypeAny, {
330
+ id: string;
331
+ text: string;
332
+ applies_to?: string[] | undefined;
333
+ }, {
334
+ id: string;
335
+ text: string;
336
+ applies_to?: string[] | undefined;
337
+ }>, "many">;
338
+ api_constraints: z.ZodArray<z.ZodObject<{
339
+ id: z.ZodString;
340
+ text: z.ZodString;
341
+ applies_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
342
+ }, "strict", z.ZodTypeAny, {
343
+ id: string;
344
+ text: string;
345
+ applies_to?: string[] | undefined;
346
+ }, {
347
+ id: string;
348
+ text: string;
349
+ applies_to?: string[] | undefined;
350
+ }>, "many">;
351
+ performance_constraints: z.ZodArray<z.ZodObject<{
352
+ id: z.ZodString;
353
+ text: z.ZodString;
354
+ applies_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
355
+ }, "strict", z.ZodTypeAny, {
356
+ id: string;
357
+ text: string;
358
+ applies_to?: string[] | undefined;
359
+ }, {
360
+ id: string;
361
+ text: string;
362
+ applies_to?: string[] | undefined;
363
+ }>, "many">;
364
+ security_constraints: z.ZodArray<z.ZodObject<{
365
+ id: z.ZodString;
366
+ text: z.ZodString;
367
+ applies_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
368
+ }, "strict", z.ZodTypeAny, {
369
+ id: string;
370
+ text: string;
371
+ applies_to?: string[] | undefined;
372
+ }, {
373
+ id: string;
374
+ text: string;
375
+ applies_to?: string[] | undefined;
376
+ }>, "many">;
377
+ }, "strict", z.ZodTypeAny, {
378
+ data_constraints: {
379
+ id: string;
380
+ text: string;
381
+ applies_to?: string[] | undefined;
382
+ }[];
383
+ api_constraints: {
384
+ id: string;
385
+ text: string;
386
+ applies_to?: string[] | undefined;
387
+ }[];
388
+ performance_constraints: {
389
+ id: string;
390
+ text: string;
391
+ applies_to?: string[] | undefined;
392
+ }[];
393
+ security_constraints: {
394
+ id: string;
395
+ text: string;
396
+ applies_to?: string[] | undefined;
397
+ }[];
398
+ }, {
399
+ data_constraints: {
400
+ id: string;
401
+ text: string;
402
+ applies_to?: string[] | undefined;
403
+ }[];
404
+ api_constraints: {
405
+ id: string;
406
+ text: string;
407
+ applies_to?: string[] | undefined;
408
+ }[];
409
+ performance_constraints: {
410
+ id: string;
411
+ text: string;
412
+ applies_to?: string[] | undefined;
413
+ }[];
414
+ security_constraints: {
415
+ id: string;
416
+ text: string;
417
+ applies_to?: string[] | undefined;
418
+ }[];
419
+ }>;
420
+ acceptance_criteria: z.ZodArray<z.ZodObject<{
421
+ id: z.ZodString;
422
+ criterion: z.ZodString;
423
+ priority: z.ZodEnum<["must", "should", "could"]>;
424
+ verification_method: z.ZodString;
425
+ refers_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
426
+ }, "strict", z.ZodTypeAny, {
427
+ id: string;
428
+ criterion: string;
429
+ priority: "must" | "should" | "could";
430
+ verification_method: string;
431
+ refers_to?: string[] | undefined;
432
+ }, {
433
+ id: string;
434
+ criterion: string;
435
+ priority: "must" | "should" | "could";
436
+ verification_method: string;
437
+ refers_to?: string[] | undefined;
438
+ }>, "many">;
439
+ open_questions: z.ZodArray<z.ZodObject<{
440
+ id: z.ZodString;
441
+ question: z.ZodString;
442
+ severity: z.ZodEnum<["blocking", "non_blocking"]>;
443
+ deferred_to: z.ZodString;
444
+ owner: z.ZodString;
445
+ due_date: z.ZodOptional<z.ZodString>;
446
+ }, "strict", z.ZodTypeAny, {
447
+ owner: string;
448
+ id: string;
449
+ question: string;
450
+ severity: "blocking" | "non_blocking";
451
+ deferred_to: string;
452
+ due_date?: string | undefined;
453
+ }, {
454
+ owner: string;
455
+ id: string;
456
+ question: string;
457
+ severity: "blocking" | "non_blocking";
458
+ deferred_to: string;
459
+ due_date?: string | undefined;
460
+ }>, "many">;
461
+ }, "strict", z.ZodTypeAny, {
462
+ meta: {
463
+ title: string;
464
+ project: string;
465
+ feature: string;
466
+ summary: string;
467
+ owner: string;
468
+ tags: string[];
469
+ created_at: string;
470
+ source_materials: {
471
+ type: string;
472
+ title: string;
473
+ url: string;
474
+ excerpt: string;
475
+ captured_at: string;
476
+ }[];
477
+ lifecycle: {
478
+ status: string;
479
+ version: string;
480
+ updated_at: string;
481
+ };
482
+ team?: string | undefined;
483
+ };
484
+ background_and_goals: {
485
+ background: string;
486
+ goals: string[];
487
+ };
488
+ users_and_roles: {
489
+ role: string;
490
+ description: string;
491
+ typical_goals: string[];
492
+ }[];
493
+ in_scope: {
494
+ summary: string;
495
+ id: string;
496
+ name: string;
497
+ }[];
498
+ out_of_scope: {
499
+ item: string;
500
+ reason: string;
501
+ }[];
502
+ entities: {
503
+ description: string;
504
+ id: string;
505
+ name: string;
506
+ fields: {
507
+ type: string;
508
+ name: string;
509
+ required?: boolean | undefined;
510
+ notes?: string | undefined;
511
+ }[];
512
+ relations?: string[] | undefined;
513
+ lifecycle_states?: string[] | undefined;
514
+ }[];
515
+ main_flow: {
516
+ step: number;
517
+ actor: string;
518
+ trigger: string;
519
+ action: string;
520
+ outcome: string;
521
+ }[];
522
+ state_permissions: {
523
+ entity_id: string;
524
+ state: string;
525
+ allowed_actions: {
526
+ action: string;
527
+ roles: string[];
528
+ notes?: string | undefined;
529
+ }[];
530
+ notes?: string | undefined;
531
+ }[];
532
+ business_rules: {
533
+ id: string;
534
+ rule: string;
535
+ rationale?: string | undefined;
536
+ applies_to?: string[] | undefined;
537
+ }[];
538
+ scenarios: {
539
+ id: string;
540
+ condition: string;
541
+ expected_behavior: string;
542
+ input?: string | undefined;
543
+ output?: string | undefined;
544
+ refers_to?: string[] | undefined;
545
+ }[];
546
+ edge_cases: {
547
+ id: string;
548
+ expected_behavior: string;
549
+ situation: string;
550
+ mitigation?: string | undefined;
551
+ }[];
552
+ ui_interaction: {
553
+ id: string;
554
+ page: string;
555
+ purpose: string;
556
+ key_elements?: string[] | undefined;
557
+ user_actions?: string[] | undefined;
558
+ empty_state?: string | undefined;
559
+ loading_state?: string | undefined;
560
+ error_state?: string | undefined;
561
+ }[];
562
+ data_and_api: {
563
+ data_constraints: {
564
+ id: string;
565
+ text: string;
566
+ applies_to?: string[] | undefined;
567
+ }[];
568
+ api_constraints: {
569
+ id: string;
570
+ text: string;
571
+ applies_to?: string[] | undefined;
572
+ }[];
573
+ performance_constraints: {
574
+ id: string;
575
+ text: string;
576
+ applies_to?: string[] | undefined;
577
+ }[];
578
+ security_constraints: {
579
+ id: string;
580
+ text: string;
581
+ applies_to?: string[] | undefined;
582
+ }[];
583
+ };
584
+ acceptance_criteria: {
585
+ id: string;
586
+ criterion: string;
587
+ priority: "must" | "should" | "could";
588
+ verification_method: string;
589
+ refers_to?: string[] | undefined;
590
+ }[];
591
+ open_questions: {
592
+ owner: string;
593
+ id: string;
594
+ question: string;
595
+ severity: "blocking" | "non_blocking";
596
+ deferred_to: string;
597
+ due_date?: string | undefined;
598
+ }[];
599
+ schema_version: "v0.2" | "v0.1";
600
+ }, {
601
+ meta: {
602
+ title: string;
603
+ project: string;
604
+ feature: string;
605
+ summary: string;
606
+ owner: string;
607
+ tags: string[];
608
+ created_at: string;
609
+ source_materials: {
610
+ type: string;
611
+ title: string;
612
+ url: string;
613
+ excerpt: string;
614
+ captured_at: string;
615
+ }[];
616
+ lifecycle: {
617
+ status: string;
618
+ version: string;
619
+ updated_at: string;
620
+ };
621
+ team?: string | undefined;
622
+ };
623
+ background_and_goals: {
624
+ background: string;
625
+ goals: string[];
626
+ };
627
+ users_and_roles: {
628
+ role: string;
629
+ description: string;
630
+ typical_goals: string[];
631
+ }[];
632
+ in_scope: {
633
+ summary: string;
634
+ id: string;
635
+ name: string;
636
+ }[];
637
+ out_of_scope: {
638
+ item: string;
639
+ reason: string;
640
+ }[];
641
+ entities: {
642
+ description: string;
643
+ id: string;
644
+ name: string;
645
+ fields: {
646
+ type: string;
647
+ name: string;
648
+ required?: boolean | undefined;
649
+ notes?: string | undefined;
650
+ }[];
651
+ relations?: string[] | undefined;
652
+ lifecycle_states?: string[] | undefined;
653
+ }[];
654
+ main_flow: {
655
+ step: number;
656
+ actor: string;
657
+ trigger: string;
658
+ action: string;
659
+ outcome: string;
660
+ }[];
661
+ state_permissions: {
662
+ entity_id: string;
663
+ state: string;
664
+ allowed_actions: {
665
+ action: string;
666
+ roles: string[];
667
+ notes?: string | undefined;
668
+ }[];
669
+ notes?: string | undefined;
670
+ }[];
671
+ business_rules: {
672
+ id: string;
673
+ rule: string;
674
+ rationale?: string | undefined;
675
+ applies_to?: string[] | undefined;
676
+ }[];
677
+ scenarios: {
678
+ id: string;
679
+ condition: string;
680
+ expected_behavior: string;
681
+ input?: string | undefined;
682
+ output?: string | undefined;
683
+ refers_to?: string[] | undefined;
684
+ }[];
685
+ edge_cases: {
686
+ id: string;
687
+ expected_behavior: string;
688
+ situation: string;
689
+ mitigation?: string | undefined;
690
+ }[];
691
+ ui_interaction: {
692
+ id: string;
693
+ page: string;
694
+ purpose: string;
695
+ key_elements?: string[] | undefined;
696
+ user_actions?: string[] | undefined;
697
+ empty_state?: string | undefined;
698
+ loading_state?: string | undefined;
699
+ error_state?: string | undefined;
700
+ }[];
701
+ data_and_api: {
702
+ data_constraints: {
703
+ id: string;
704
+ text: string;
705
+ applies_to?: string[] | undefined;
706
+ }[];
707
+ api_constraints: {
708
+ id: string;
709
+ text: string;
710
+ applies_to?: string[] | undefined;
711
+ }[];
712
+ performance_constraints: {
713
+ id: string;
714
+ text: string;
715
+ applies_to?: string[] | undefined;
716
+ }[];
717
+ security_constraints: {
718
+ id: string;
719
+ text: string;
720
+ applies_to?: string[] | undefined;
721
+ }[];
722
+ };
723
+ acceptance_criteria: {
724
+ id: string;
725
+ criterion: string;
726
+ priority: "must" | "should" | "could";
727
+ verification_method: string;
728
+ refers_to?: string[] | undefined;
729
+ }[];
730
+ open_questions: {
731
+ owner: string;
732
+ id: string;
733
+ question: string;
734
+ severity: "blocking" | "non_blocking";
735
+ deferred_to: string;
736
+ due_date?: string | undefined;
737
+ }[];
738
+ schema_version: "v0.2" | "v0.1";
739
+ }>, {
740
+ meta: {
741
+ title: string;
742
+ project: string;
743
+ feature: string;
744
+ summary: string;
745
+ owner: string;
746
+ tags: string[];
747
+ created_at: string;
748
+ source_materials: {
749
+ type: string;
750
+ title: string;
751
+ url: string;
752
+ excerpt: string;
753
+ captured_at: string;
754
+ }[];
755
+ lifecycle: {
756
+ status: string;
757
+ version: string;
758
+ updated_at: string;
759
+ };
760
+ team?: string | undefined;
761
+ };
762
+ background_and_goals: {
763
+ background: string;
764
+ goals: string[];
765
+ };
766
+ users_and_roles: {
767
+ role: string;
768
+ description: string;
769
+ typical_goals: string[];
770
+ }[];
771
+ in_scope: {
772
+ summary: string;
773
+ id: string;
774
+ name: string;
775
+ }[];
776
+ out_of_scope: {
777
+ item: string;
778
+ reason: string;
779
+ }[];
780
+ entities: {
781
+ description: string;
782
+ id: string;
783
+ name: string;
784
+ fields: {
785
+ type: string;
786
+ name: string;
787
+ required?: boolean | undefined;
788
+ notes?: string | undefined;
789
+ }[];
790
+ relations?: string[] | undefined;
791
+ lifecycle_states?: string[] | undefined;
792
+ }[];
793
+ main_flow: {
794
+ step: number;
795
+ actor: string;
796
+ trigger: string;
797
+ action: string;
798
+ outcome: string;
799
+ }[];
800
+ state_permissions: {
801
+ entity_id: string;
802
+ state: string;
803
+ allowed_actions: {
804
+ action: string;
805
+ roles: string[];
806
+ notes?: string | undefined;
807
+ }[];
808
+ notes?: string | undefined;
809
+ }[];
810
+ business_rules: {
811
+ id: string;
812
+ rule: string;
813
+ rationale?: string | undefined;
814
+ applies_to?: string[] | undefined;
815
+ }[];
816
+ scenarios: {
817
+ id: string;
818
+ condition: string;
819
+ expected_behavior: string;
820
+ input?: string | undefined;
821
+ output?: string | undefined;
822
+ refers_to?: string[] | undefined;
823
+ }[];
824
+ edge_cases: {
825
+ id: string;
826
+ expected_behavior: string;
827
+ situation: string;
828
+ mitigation?: string | undefined;
829
+ }[];
830
+ ui_interaction: {
831
+ id: string;
832
+ page: string;
833
+ purpose: string;
834
+ key_elements?: string[] | undefined;
835
+ user_actions?: string[] | undefined;
836
+ empty_state?: string | undefined;
837
+ loading_state?: string | undefined;
838
+ error_state?: string | undefined;
839
+ }[];
840
+ data_and_api: {
841
+ data_constraints: {
842
+ id: string;
843
+ text: string;
844
+ applies_to?: string[] | undefined;
845
+ }[];
846
+ api_constraints: {
847
+ id: string;
848
+ text: string;
849
+ applies_to?: string[] | undefined;
850
+ }[];
851
+ performance_constraints: {
852
+ id: string;
853
+ text: string;
854
+ applies_to?: string[] | undefined;
855
+ }[];
856
+ security_constraints: {
857
+ id: string;
858
+ text: string;
859
+ applies_to?: string[] | undefined;
860
+ }[];
861
+ };
862
+ acceptance_criteria: {
863
+ id: string;
864
+ criterion: string;
865
+ priority: "must" | "should" | "could";
866
+ verification_method: string;
867
+ refers_to?: string[] | undefined;
868
+ }[];
869
+ open_questions: {
870
+ owner: string;
871
+ id: string;
872
+ question: string;
873
+ severity: "blocking" | "non_blocking";
874
+ deferred_to: string;
875
+ due_date?: string | undefined;
876
+ }[];
877
+ schema_version: "v0.2" | "v0.1";
878
+ }, {
879
+ meta: {
880
+ title: string;
881
+ project: string;
882
+ feature: string;
883
+ summary: string;
884
+ owner: string;
885
+ tags: string[];
886
+ created_at: string;
887
+ source_materials: {
888
+ type: string;
889
+ title: string;
890
+ url: string;
891
+ excerpt: string;
892
+ captured_at: string;
893
+ }[];
894
+ lifecycle: {
895
+ status: string;
896
+ version: string;
897
+ updated_at: string;
898
+ };
899
+ team?: string | undefined;
900
+ };
901
+ background_and_goals: {
902
+ background: string;
903
+ goals: string[];
904
+ };
905
+ users_and_roles: {
906
+ role: string;
907
+ description: string;
908
+ typical_goals: string[];
909
+ }[];
910
+ in_scope: {
911
+ summary: string;
912
+ id: string;
913
+ name: string;
914
+ }[];
915
+ out_of_scope: {
916
+ item: string;
917
+ reason: string;
918
+ }[];
919
+ entities: {
920
+ description: string;
921
+ id: string;
922
+ name: string;
923
+ fields: {
924
+ type: string;
925
+ name: string;
926
+ required?: boolean | undefined;
927
+ notes?: string | undefined;
928
+ }[];
929
+ relations?: string[] | undefined;
930
+ lifecycle_states?: string[] | undefined;
931
+ }[];
932
+ main_flow: {
933
+ step: number;
934
+ actor: string;
935
+ trigger: string;
936
+ action: string;
937
+ outcome: string;
938
+ }[];
939
+ state_permissions: {
940
+ entity_id: string;
941
+ state: string;
942
+ allowed_actions: {
943
+ action: string;
944
+ roles: string[];
945
+ notes?: string | undefined;
946
+ }[];
947
+ notes?: string | undefined;
948
+ }[];
949
+ business_rules: {
950
+ id: string;
951
+ rule: string;
952
+ rationale?: string | undefined;
953
+ applies_to?: string[] | undefined;
954
+ }[];
955
+ scenarios: {
956
+ id: string;
957
+ condition: string;
958
+ expected_behavior: string;
959
+ input?: string | undefined;
960
+ output?: string | undefined;
961
+ refers_to?: string[] | undefined;
962
+ }[];
963
+ edge_cases: {
964
+ id: string;
965
+ expected_behavior: string;
966
+ situation: string;
967
+ mitigation?: string | undefined;
968
+ }[];
969
+ ui_interaction: {
970
+ id: string;
971
+ page: string;
972
+ purpose: string;
973
+ key_elements?: string[] | undefined;
974
+ user_actions?: string[] | undefined;
975
+ empty_state?: string | undefined;
976
+ loading_state?: string | undefined;
977
+ error_state?: string | undefined;
978
+ }[];
979
+ data_and_api: {
980
+ data_constraints: {
981
+ id: string;
982
+ text: string;
983
+ applies_to?: string[] | undefined;
984
+ }[];
985
+ api_constraints: {
986
+ id: string;
987
+ text: string;
988
+ applies_to?: string[] | undefined;
989
+ }[];
990
+ performance_constraints: {
991
+ id: string;
992
+ text: string;
993
+ applies_to?: string[] | undefined;
994
+ }[];
995
+ security_constraints: {
996
+ id: string;
997
+ text: string;
998
+ applies_to?: string[] | undefined;
999
+ }[];
1000
+ };
1001
+ acceptance_criteria: {
1002
+ id: string;
1003
+ criterion: string;
1004
+ priority: "must" | "should" | "could";
1005
+ verification_method: string;
1006
+ refers_to?: string[] | undefined;
1007
+ }[];
1008
+ open_questions: {
1009
+ owner: string;
1010
+ id: string;
1011
+ question: string;
1012
+ severity: "blocking" | "non_blocking";
1013
+ deferred_to: string;
1014
+ due_date?: string | undefined;
1015
+ }[];
1016
+ schema_version: "v0.2" | "v0.1";
1017
+ }>;
1018
+ export type Prd = z.infer<typeof PrdSchema>;