ralphy-spec 0.2.0 → 0.3.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 (118) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.ja.md +38 -15
  3. package/README.ko.md +38 -15
  4. package/README.md +38 -15
  5. package/README.zh.md +38 -15
  6. package/dist/cli/budget.d.ts +3 -0
  7. package/dist/cli/budget.d.ts.map +1 -0
  8. package/dist/cli/budget.js +77 -0
  9. package/dist/cli/budget.js.map +1 -0
  10. package/dist/cli/init.d.ts.map +1 -1
  11. package/dist/cli/init.js +6 -0
  12. package/dist/cli/init.js.map +1 -1
  13. package/dist/cli/run.d.ts.map +1 -1
  14. package/dist/cli/run.js +42 -9
  15. package/dist/cli/run.js.map +1 -1
  16. package/dist/cli/status.d.ts.map +1 -1
  17. package/dist/cli/status.js +31 -0
  18. package/dist/cli/status.js.map +1 -1
  19. package/dist/core/artifacts/budget-writer.d.ts +11 -0
  20. package/dist/core/artifacts/budget-writer.d.ts.map +1 -0
  21. package/dist/core/artifacts/budget-writer.js +28 -0
  22. package/dist/core/artifacts/budget-writer.js.map +1 -0
  23. package/dist/core/artifacts/run-log-writer.d.ts +20 -0
  24. package/dist/core/artifacts/run-log-writer.d.ts.map +1 -0
  25. package/dist/core/artifacts/run-log-writer.js +40 -0
  26. package/dist/core/artifacts/run-log-writer.js.map +1 -0
  27. package/dist/core/artifacts/run-log-writer.test.d.ts +2 -0
  28. package/dist/core/artifacts/run-log-writer.test.d.ts.map +1 -0
  29. package/dist/core/artifacts/run-log-writer.test.js +37 -0
  30. package/dist/core/artifacts/run-log-writer.test.js.map +1 -0
  31. package/dist/core/artifacts/status-writer.d.ts +16 -0
  32. package/dist/core/artifacts/status-writer.d.ts.map +1 -0
  33. package/dist/core/artifacts/status-writer.js +52 -0
  34. package/dist/core/artifacts/status-writer.js.map +1 -0
  35. package/dist/core/artifacts/status-writer.test.d.ts +2 -0
  36. package/dist/core/artifacts/status-writer.test.d.ts.map +1 -0
  37. package/dist/core/artifacts/status-writer.test.js +47 -0
  38. package/dist/core/artifacts/status-writer.test.js.map +1 -0
  39. package/dist/core/artifacts/task-artifacts.d.ts +19 -0
  40. package/dist/core/artifacts/task-artifacts.d.ts.map +1 -0
  41. package/dist/core/artifacts/task-artifacts.js +35 -0
  42. package/dist/core/artifacts/task-artifacts.js.map +1 -0
  43. package/dist/core/artifacts/tasks-writer.d.ts +19 -0
  44. package/dist/core/artifacts/tasks-writer.d.ts.map +1 -0
  45. package/dist/core/artifacts/tasks-writer.js +67 -0
  46. package/dist/core/artifacts/tasks-writer.js.map +1 -0
  47. package/dist/core/artifacts/tasks-writer.test.d.ts +2 -0
  48. package/dist/core/artifacts/tasks-writer.test.d.ts.map +1 -0
  49. package/dist/core/artifacts/tasks-writer.test.js +28 -0
  50. package/dist/core/artifacts/tasks-writer.test.js.map +1 -0
  51. package/dist/core/budgets/errors.d.ts +5 -0
  52. package/dist/core/budgets/errors.d.ts.map +1 -0
  53. package/dist/core/budgets/errors.js +11 -0
  54. package/dist/core/budgets/errors.js.map +1 -0
  55. package/dist/core/engine/constraints.d.ts +16 -0
  56. package/dist/core/engine/constraints.d.ts.map +1 -0
  57. package/dist/core/engine/constraints.js +21 -0
  58. package/dist/core/engine/constraints.js.map +1 -0
  59. package/dist/core/engine/constraints.policy.test.d.ts +2 -0
  60. package/dist/core/engine/constraints.policy.test.d.ts.map +1 -0
  61. package/dist/core/engine/constraints.policy.test.js +85 -0
  62. package/dist/core/engine/constraints.policy.test.js.map +1 -0
  63. package/dist/core/engine/loop.d.ts.map +1 -1
  64. package/dist/core/engine/loop.hardcap.test.d.ts +2 -0
  65. package/dist/core/engine/loop.hardcap.test.d.ts.map +1 -0
  66. package/dist/core/engine/loop.hardcap.test.js +77 -0
  67. package/dist/core/engine/loop.hardcap.test.js.map +1 -0
  68. package/dist/core/engine/loop.js +511 -13
  69. package/dist/core/engine/loop.js.map +1 -1
  70. package/dist/core/memory/persistence.d.ts +9 -0
  71. package/dist/core/memory/persistence.d.ts.map +1 -1
  72. package/dist/core/memory/persistence.js +19 -1
  73. package/dist/core/memory/persistence.js.map +1 -1
  74. package/dist/core/reporting/failure-summary.d.ts +23 -0
  75. package/dist/core/reporting/failure-summary.d.ts.map +1 -0
  76. package/dist/core/reporting/failure-summary.js +63 -0
  77. package/dist/core/reporting/failure-summary.js.map +1 -0
  78. package/dist/core/reporting/failure-summary.test.d.ts +2 -0
  79. package/dist/core/reporting/failure-summary.test.d.ts.map +1 -0
  80. package/dist/core/reporting/failure-summary.test.js +22 -0
  81. package/dist/core/reporting/failure-summary.test.js.map +1 -0
  82. package/dist/core/spec/loader.d.ts.map +1 -1
  83. package/dist/core/spec/loader.js +12 -1
  84. package/dist/core/spec/loader.js.map +1 -1
  85. package/dist/core/spec/schemas.d.ts +857 -0
  86. package/dist/core/spec/schemas.d.ts.map +1 -1
  87. package/dist/core/spec/schemas.js +28 -0
  88. package/dist/core/spec/schemas.js.map +1 -1
  89. package/dist/core/spec/sprint-defaults.d.ts +16 -0
  90. package/dist/core/spec/sprint-defaults.d.ts.map +1 -0
  91. package/dist/core/spec/sprint-defaults.js +55 -0
  92. package/dist/core/spec/sprint-defaults.js.map +1 -0
  93. package/dist/core/spec/sprint-defaults.test.d.ts +2 -0
  94. package/dist/core/spec/sprint-defaults.test.d.ts.map +1 -0
  95. package/dist/core/spec/sprint-defaults.test.js +51 -0
  96. package/dist/core/spec/sprint-defaults.test.js.map +1 -0
  97. package/dist/core/spec/types.d.ts +11 -0
  98. package/dist/core/spec/types.d.ts.map +1 -1
  99. package/dist/core/validators/types.d.ts +1 -1
  100. package/dist/core/validators/types.d.ts.map +1 -1
  101. package/dist/core/workspace/scope-detector.d.ts +13 -0
  102. package/dist/core/workspace/scope-detector.d.ts.map +1 -0
  103. package/dist/core/workspace/scope-detector.js +34 -0
  104. package/dist/core/workspace/scope-detector.js.map +1 -0
  105. package/dist/core/workspace/worktree-mode.d.ts.map +1 -1
  106. package/dist/core/workspace/worktree-mode.js +2 -1
  107. package/dist/core/workspace/worktree-mode.js.map +1 -1
  108. package/dist/index.js +3 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/templates/claude-code/ralphy-archive.md +1 -1
  111. package/dist/templates/claude-code/ralphy-implement.md +1 -1
  112. package/dist/templates/claude-code/ralphy-plan.md +1 -1
  113. package/dist/templates/claude-code/ralphy-validate.md +1 -1
  114. package/dist/templates/cursor/ralphy-archive.md +1 -1
  115. package/dist/templates/cursor/ralphy-implement.md +1 -1
  116. package/dist/templates/cursor/ralphy-plan.md +1 -1
  117. package/dist/templates/cursor/ralphy-validate.md +1 -1
  118. package/package.json +7 -4
@@ -30,6 +30,637 @@ export declare const projectSpecSchema: z.ZodPipe<z.ZodObject<{
30
30
  checkpointMode?: "patch" | "commit" | undefined;
31
31
  validators?: string[] | undefined;
32
32
  }>>>;
33
+ policies: z.ZodOptional<z.ZodObject<{
34
+ scopeGuard: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
35
+ off: "off";
36
+ warn: "warn";
37
+ block: "block";
38
+ }>>>;
39
+ }, z.core.$strip>>;
40
+ sprint_defaults: z.ZodOptional<z.ZodObject<{
41
+ XS: z.ZodOptional<z.ZodOptional<z.ZodObject<{
42
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
43
+ usd: z.ZodOptional<z.ZodAny>;
44
+ tokens: z.ZodOptional<z.ZodAny>;
45
+ time_minutes: z.ZodOptional<z.ZodAny>;
46
+ timeMinutes: z.ZodOptional<z.ZodAny>;
47
+ max_iterations: z.ZodOptional<z.ZodAny>;
48
+ maxIterations: z.ZodOptional<z.ZodAny>;
49
+ }, z.core.$strip>, z.ZodTransform<{
50
+ usd: number | undefined;
51
+ tokens: number | undefined;
52
+ timeMinutes: number | undefined;
53
+ maxIterations: number | undefined;
54
+ }, {
55
+ usd?: any;
56
+ tokens?: any;
57
+ time_minutes?: any;
58
+ timeMinutes?: any;
59
+ max_iterations?: any;
60
+ maxIterations?: any;
61
+ }>>>>;
62
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
63
+ usd: z.ZodOptional<z.ZodAny>;
64
+ tokens: z.ZodOptional<z.ZodAny>;
65
+ time_minutes: z.ZodOptional<z.ZodAny>;
66
+ timeMinutes: z.ZodOptional<z.ZodAny>;
67
+ max_iterations: z.ZodOptional<z.ZodAny>;
68
+ maxIterations: z.ZodOptional<z.ZodAny>;
69
+ }, z.core.$strip>, z.ZodTransform<{
70
+ usd: number | undefined;
71
+ tokens: number | undefined;
72
+ timeMinutes: number | undefined;
73
+ maxIterations: number | undefined;
74
+ }, {
75
+ usd?: any;
76
+ tokens?: any;
77
+ time_minutes?: any;
78
+ timeMinutes?: any;
79
+ max_iterations?: any;
80
+ maxIterations?: any;
81
+ }>>>>;
82
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
83
+ usd: z.ZodOptional<z.ZodAny>;
84
+ tokens: z.ZodOptional<z.ZodAny>;
85
+ time_minutes: z.ZodOptional<z.ZodAny>;
86
+ timeMinutes: z.ZodOptional<z.ZodAny>;
87
+ max_iterations: z.ZodAny;
88
+ maxIterations: z.ZodOptional<z.ZodAny>;
89
+ }, z.core.$strip>, z.ZodTransform<{
90
+ usd: number | undefined;
91
+ tokens: number | undefined;
92
+ timeMinutes: number | undefined;
93
+ maxIterations: number | undefined;
94
+ }, {
95
+ max_iterations: any;
96
+ usd?: any;
97
+ tokens?: any;
98
+ time_minutes?: any;
99
+ timeMinutes?: any;
100
+ maxIterations?: any;
101
+ }>>>>;
102
+ }, z.core.$strip>>>;
103
+ S: z.ZodOptional<z.ZodOptional<z.ZodObject<{
104
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
105
+ usd: z.ZodOptional<z.ZodAny>;
106
+ tokens: z.ZodOptional<z.ZodAny>;
107
+ time_minutes: z.ZodOptional<z.ZodAny>;
108
+ timeMinutes: z.ZodOptional<z.ZodAny>;
109
+ max_iterations: z.ZodOptional<z.ZodAny>;
110
+ maxIterations: z.ZodOptional<z.ZodAny>;
111
+ }, z.core.$strip>, z.ZodTransform<{
112
+ usd: number | undefined;
113
+ tokens: number | undefined;
114
+ timeMinutes: number | undefined;
115
+ maxIterations: number | undefined;
116
+ }, {
117
+ usd?: any;
118
+ tokens?: any;
119
+ time_minutes?: any;
120
+ timeMinutes?: any;
121
+ max_iterations?: any;
122
+ maxIterations?: any;
123
+ }>>>>;
124
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
125
+ usd: z.ZodOptional<z.ZodAny>;
126
+ tokens: z.ZodOptional<z.ZodAny>;
127
+ time_minutes: z.ZodOptional<z.ZodAny>;
128
+ timeMinutes: z.ZodOptional<z.ZodAny>;
129
+ max_iterations: z.ZodOptional<z.ZodAny>;
130
+ maxIterations: z.ZodOptional<z.ZodAny>;
131
+ }, z.core.$strip>, z.ZodTransform<{
132
+ usd: number | undefined;
133
+ tokens: number | undefined;
134
+ timeMinutes: number | undefined;
135
+ maxIterations: number | undefined;
136
+ }, {
137
+ usd?: any;
138
+ tokens?: any;
139
+ time_minutes?: any;
140
+ timeMinutes?: any;
141
+ max_iterations?: any;
142
+ maxIterations?: any;
143
+ }>>>>;
144
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
145
+ usd: z.ZodOptional<z.ZodAny>;
146
+ tokens: z.ZodOptional<z.ZodAny>;
147
+ time_minutes: z.ZodOptional<z.ZodAny>;
148
+ timeMinutes: z.ZodOptional<z.ZodAny>;
149
+ max_iterations: z.ZodAny;
150
+ maxIterations: z.ZodOptional<z.ZodAny>;
151
+ }, z.core.$strip>, z.ZodTransform<{
152
+ usd: number | undefined;
153
+ tokens: number | undefined;
154
+ timeMinutes: number | undefined;
155
+ maxIterations: number | undefined;
156
+ }, {
157
+ max_iterations: any;
158
+ usd?: any;
159
+ tokens?: any;
160
+ time_minutes?: any;
161
+ timeMinutes?: any;
162
+ maxIterations?: any;
163
+ }>>>>;
164
+ }, z.core.$strip>>>;
165
+ M: z.ZodOptional<z.ZodOptional<z.ZodObject<{
166
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
167
+ usd: z.ZodOptional<z.ZodAny>;
168
+ tokens: z.ZodOptional<z.ZodAny>;
169
+ time_minutes: z.ZodOptional<z.ZodAny>;
170
+ timeMinutes: z.ZodOptional<z.ZodAny>;
171
+ max_iterations: z.ZodOptional<z.ZodAny>;
172
+ maxIterations: z.ZodOptional<z.ZodAny>;
173
+ }, z.core.$strip>, z.ZodTransform<{
174
+ usd: number | undefined;
175
+ tokens: number | undefined;
176
+ timeMinutes: number | undefined;
177
+ maxIterations: number | undefined;
178
+ }, {
179
+ usd?: any;
180
+ tokens?: any;
181
+ time_minutes?: any;
182
+ timeMinutes?: any;
183
+ max_iterations?: any;
184
+ maxIterations?: any;
185
+ }>>>>;
186
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
187
+ usd: z.ZodOptional<z.ZodAny>;
188
+ tokens: z.ZodOptional<z.ZodAny>;
189
+ time_minutes: z.ZodOptional<z.ZodAny>;
190
+ timeMinutes: z.ZodOptional<z.ZodAny>;
191
+ max_iterations: z.ZodOptional<z.ZodAny>;
192
+ maxIterations: z.ZodOptional<z.ZodAny>;
193
+ }, z.core.$strip>, z.ZodTransform<{
194
+ usd: number | undefined;
195
+ tokens: number | undefined;
196
+ timeMinutes: number | undefined;
197
+ maxIterations: number | undefined;
198
+ }, {
199
+ usd?: any;
200
+ tokens?: any;
201
+ time_minutes?: any;
202
+ timeMinutes?: any;
203
+ max_iterations?: any;
204
+ maxIterations?: any;
205
+ }>>>>;
206
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
207
+ usd: z.ZodOptional<z.ZodAny>;
208
+ tokens: z.ZodOptional<z.ZodAny>;
209
+ time_minutes: z.ZodOptional<z.ZodAny>;
210
+ timeMinutes: z.ZodOptional<z.ZodAny>;
211
+ max_iterations: z.ZodAny;
212
+ maxIterations: z.ZodOptional<z.ZodAny>;
213
+ }, z.core.$strip>, z.ZodTransform<{
214
+ usd: number | undefined;
215
+ tokens: number | undefined;
216
+ timeMinutes: number | undefined;
217
+ maxIterations: number | undefined;
218
+ }, {
219
+ max_iterations: any;
220
+ usd?: any;
221
+ tokens?: any;
222
+ time_minutes?: any;
223
+ timeMinutes?: any;
224
+ maxIterations?: any;
225
+ }>>>>;
226
+ }, z.core.$strip>>>;
227
+ L: z.ZodOptional<z.ZodOptional<z.ZodObject<{
228
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
229
+ usd: z.ZodOptional<z.ZodAny>;
230
+ tokens: z.ZodOptional<z.ZodAny>;
231
+ time_minutes: z.ZodOptional<z.ZodAny>;
232
+ timeMinutes: z.ZodOptional<z.ZodAny>;
233
+ max_iterations: z.ZodOptional<z.ZodAny>;
234
+ maxIterations: z.ZodOptional<z.ZodAny>;
235
+ }, z.core.$strip>, z.ZodTransform<{
236
+ usd: number | undefined;
237
+ tokens: number | undefined;
238
+ timeMinutes: number | undefined;
239
+ maxIterations: number | undefined;
240
+ }, {
241
+ usd?: any;
242
+ tokens?: any;
243
+ time_minutes?: any;
244
+ timeMinutes?: any;
245
+ max_iterations?: any;
246
+ maxIterations?: any;
247
+ }>>>>;
248
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
249
+ usd: z.ZodOptional<z.ZodAny>;
250
+ tokens: z.ZodOptional<z.ZodAny>;
251
+ time_minutes: z.ZodOptional<z.ZodAny>;
252
+ timeMinutes: z.ZodOptional<z.ZodAny>;
253
+ max_iterations: z.ZodOptional<z.ZodAny>;
254
+ maxIterations: z.ZodOptional<z.ZodAny>;
255
+ }, z.core.$strip>, z.ZodTransform<{
256
+ usd: number | undefined;
257
+ tokens: number | undefined;
258
+ timeMinutes: number | undefined;
259
+ maxIterations: number | undefined;
260
+ }, {
261
+ usd?: any;
262
+ tokens?: any;
263
+ time_minutes?: any;
264
+ timeMinutes?: any;
265
+ max_iterations?: any;
266
+ maxIterations?: any;
267
+ }>>>>;
268
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
269
+ usd: z.ZodOptional<z.ZodAny>;
270
+ tokens: z.ZodOptional<z.ZodAny>;
271
+ time_minutes: z.ZodOptional<z.ZodAny>;
272
+ timeMinutes: z.ZodOptional<z.ZodAny>;
273
+ max_iterations: z.ZodAny;
274
+ maxIterations: z.ZodOptional<z.ZodAny>;
275
+ }, z.core.$strip>, z.ZodTransform<{
276
+ usd: number | undefined;
277
+ tokens: number | undefined;
278
+ timeMinutes: number | undefined;
279
+ maxIterations: number | undefined;
280
+ }, {
281
+ max_iterations: any;
282
+ usd?: any;
283
+ tokens?: any;
284
+ time_minutes?: any;
285
+ timeMinutes?: any;
286
+ maxIterations?: any;
287
+ }>>>>;
288
+ }, z.core.$strip>>>;
289
+ XL: z.ZodOptional<z.ZodOptional<z.ZodObject<{
290
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
291
+ usd: z.ZodOptional<z.ZodAny>;
292
+ tokens: z.ZodOptional<z.ZodAny>;
293
+ time_minutes: z.ZodOptional<z.ZodAny>;
294
+ timeMinutes: z.ZodOptional<z.ZodAny>;
295
+ max_iterations: z.ZodOptional<z.ZodAny>;
296
+ maxIterations: z.ZodOptional<z.ZodAny>;
297
+ }, z.core.$strip>, z.ZodTransform<{
298
+ usd: number | undefined;
299
+ tokens: number | undefined;
300
+ timeMinutes: number | undefined;
301
+ maxIterations: number | undefined;
302
+ }, {
303
+ usd?: any;
304
+ tokens?: any;
305
+ time_minutes?: any;
306
+ timeMinutes?: any;
307
+ max_iterations?: any;
308
+ maxIterations?: any;
309
+ }>>>>;
310
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
311
+ usd: z.ZodOptional<z.ZodAny>;
312
+ tokens: z.ZodOptional<z.ZodAny>;
313
+ time_minutes: z.ZodOptional<z.ZodAny>;
314
+ timeMinutes: z.ZodOptional<z.ZodAny>;
315
+ max_iterations: z.ZodOptional<z.ZodAny>;
316
+ maxIterations: z.ZodOptional<z.ZodAny>;
317
+ }, z.core.$strip>, z.ZodTransform<{
318
+ usd: number | undefined;
319
+ tokens: number | undefined;
320
+ timeMinutes: number | undefined;
321
+ maxIterations: number | undefined;
322
+ }, {
323
+ usd?: any;
324
+ tokens?: any;
325
+ time_minutes?: any;
326
+ timeMinutes?: any;
327
+ max_iterations?: any;
328
+ maxIterations?: any;
329
+ }>>>>;
330
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
331
+ usd: z.ZodOptional<z.ZodAny>;
332
+ tokens: z.ZodOptional<z.ZodAny>;
333
+ time_minutes: z.ZodOptional<z.ZodAny>;
334
+ timeMinutes: z.ZodOptional<z.ZodAny>;
335
+ max_iterations: z.ZodAny;
336
+ maxIterations: z.ZodOptional<z.ZodAny>;
337
+ }, z.core.$strip>, z.ZodTransform<{
338
+ usd: number | undefined;
339
+ tokens: number | undefined;
340
+ timeMinutes: number | undefined;
341
+ maxIterations: number | undefined;
342
+ }, {
343
+ max_iterations: any;
344
+ usd?: any;
345
+ tokens?: any;
346
+ time_minutes?: any;
347
+ timeMinutes?: any;
348
+ maxIterations?: any;
349
+ }>>>>;
350
+ }, z.core.$strip>>>;
351
+ }, z.core.$strip>>;
352
+ sprintDefaults: z.ZodOptional<z.ZodObject<{
353
+ XS: z.ZodOptional<z.ZodOptional<z.ZodObject<{
354
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
355
+ usd: z.ZodOptional<z.ZodAny>;
356
+ tokens: z.ZodOptional<z.ZodAny>;
357
+ time_minutes: z.ZodOptional<z.ZodAny>;
358
+ timeMinutes: z.ZodOptional<z.ZodAny>;
359
+ max_iterations: z.ZodOptional<z.ZodAny>;
360
+ maxIterations: z.ZodOptional<z.ZodAny>;
361
+ }, z.core.$strip>, z.ZodTransform<{
362
+ usd: number | undefined;
363
+ tokens: number | undefined;
364
+ timeMinutes: number | undefined;
365
+ maxIterations: number | undefined;
366
+ }, {
367
+ usd?: any;
368
+ tokens?: any;
369
+ time_minutes?: any;
370
+ timeMinutes?: any;
371
+ max_iterations?: any;
372
+ maxIterations?: any;
373
+ }>>>>;
374
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
375
+ usd: z.ZodOptional<z.ZodAny>;
376
+ tokens: z.ZodOptional<z.ZodAny>;
377
+ time_minutes: z.ZodOptional<z.ZodAny>;
378
+ timeMinutes: z.ZodOptional<z.ZodAny>;
379
+ max_iterations: z.ZodOptional<z.ZodAny>;
380
+ maxIterations: z.ZodOptional<z.ZodAny>;
381
+ }, z.core.$strip>, z.ZodTransform<{
382
+ usd: number | undefined;
383
+ tokens: number | undefined;
384
+ timeMinutes: number | undefined;
385
+ maxIterations: number | undefined;
386
+ }, {
387
+ usd?: any;
388
+ tokens?: any;
389
+ time_minutes?: any;
390
+ timeMinutes?: any;
391
+ max_iterations?: any;
392
+ maxIterations?: any;
393
+ }>>>>;
394
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
395
+ usd: z.ZodOptional<z.ZodAny>;
396
+ tokens: z.ZodOptional<z.ZodAny>;
397
+ time_minutes: z.ZodOptional<z.ZodAny>;
398
+ timeMinutes: z.ZodOptional<z.ZodAny>;
399
+ max_iterations: z.ZodAny;
400
+ maxIterations: z.ZodOptional<z.ZodAny>;
401
+ }, z.core.$strip>, z.ZodTransform<{
402
+ usd: number | undefined;
403
+ tokens: number | undefined;
404
+ timeMinutes: number | undefined;
405
+ maxIterations: number | undefined;
406
+ }, {
407
+ max_iterations: any;
408
+ usd?: any;
409
+ tokens?: any;
410
+ time_minutes?: any;
411
+ timeMinutes?: any;
412
+ maxIterations?: any;
413
+ }>>>>;
414
+ }, z.core.$strip>>>;
415
+ S: z.ZodOptional<z.ZodOptional<z.ZodObject<{
416
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
417
+ usd: z.ZodOptional<z.ZodAny>;
418
+ tokens: z.ZodOptional<z.ZodAny>;
419
+ time_minutes: z.ZodOptional<z.ZodAny>;
420
+ timeMinutes: z.ZodOptional<z.ZodAny>;
421
+ max_iterations: z.ZodOptional<z.ZodAny>;
422
+ maxIterations: z.ZodOptional<z.ZodAny>;
423
+ }, z.core.$strip>, z.ZodTransform<{
424
+ usd: number | undefined;
425
+ tokens: number | undefined;
426
+ timeMinutes: number | undefined;
427
+ maxIterations: number | undefined;
428
+ }, {
429
+ usd?: any;
430
+ tokens?: any;
431
+ time_minutes?: any;
432
+ timeMinutes?: any;
433
+ max_iterations?: any;
434
+ maxIterations?: any;
435
+ }>>>>;
436
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
437
+ usd: z.ZodOptional<z.ZodAny>;
438
+ tokens: z.ZodOptional<z.ZodAny>;
439
+ time_minutes: z.ZodOptional<z.ZodAny>;
440
+ timeMinutes: z.ZodOptional<z.ZodAny>;
441
+ max_iterations: z.ZodOptional<z.ZodAny>;
442
+ maxIterations: z.ZodOptional<z.ZodAny>;
443
+ }, z.core.$strip>, z.ZodTransform<{
444
+ usd: number | undefined;
445
+ tokens: number | undefined;
446
+ timeMinutes: number | undefined;
447
+ maxIterations: number | undefined;
448
+ }, {
449
+ usd?: any;
450
+ tokens?: any;
451
+ time_minutes?: any;
452
+ timeMinutes?: any;
453
+ max_iterations?: any;
454
+ maxIterations?: any;
455
+ }>>>>;
456
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
457
+ usd: z.ZodOptional<z.ZodAny>;
458
+ tokens: z.ZodOptional<z.ZodAny>;
459
+ time_minutes: z.ZodOptional<z.ZodAny>;
460
+ timeMinutes: z.ZodOptional<z.ZodAny>;
461
+ max_iterations: z.ZodAny;
462
+ maxIterations: z.ZodOptional<z.ZodAny>;
463
+ }, z.core.$strip>, z.ZodTransform<{
464
+ usd: number | undefined;
465
+ tokens: number | undefined;
466
+ timeMinutes: number | undefined;
467
+ maxIterations: number | undefined;
468
+ }, {
469
+ max_iterations: any;
470
+ usd?: any;
471
+ tokens?: any;
472
+ time_minutes?: any;
473
+ timeMinutes?: any;
474
+ maxIterations?: any;
475
+ }>>>>;
476
+ }, z.core.$strip>>>;
477
+ M: z.ZodOptional<z.ZodOptional<z.ZodObject<{
478
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
479
+ usd: z.ZodOptional<z.ZodAny>;
480
+ tokens: z.ZodOptional<z.ZodAny>;
481
+ time_minutes: z.ZodOptional<z.ZodAny>;
482
+ timeMinutes: z.ZodOptional<z.ZodAny>;
483
+ max_iterations: z.ZodOptional<z.ZodAny>;
484
+ maxIterations: z.ZodOptional<z.ZodAny>;
485
+ }, z.core.$strip>, z.ZodTransform<{
486
+ usd: number | undefined;
487
+ tokens: number | undefined;
488
+ timeMinutes: number | undefined;
489
+ maxIterations: number | undefined;
490
+ }, {
491
+ usd?: any;
492
+ tokens?: any;
493
+ time_minutes?: any;
494
+ timeMinutes?: any;
495
+ max_iterations?: any;
496
+ maxIterations?: any;
497
+ }>>>>;
498
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
499
+ usd: z.ZodOptional<z.ZodAny>;
500
+ tokens: z.ZodOptional<z.ZodAny>;
501
+ time_minutes: z.ZodOptional<z.ZodAny>;
502
+ timeMinutes: z.ZodOptional<z.ZodAny>;
503
+ max_iterations: z.ZodOptional<z.ZodAny>;
504
+ maxIterations: z.ZodOptional<z.ZodAny>;
505
+ }, z.core.$strip>, z.ZodTransform<{
506
+ usd: number | undefined;
507
+ tokens: number | undefined;
508
+ timeMinutes: number | undefined;
509
+ maxIterations: number | undefined;
510
+ }, {
511
+ usd?: any;
512
+ tokens?: any;
513
+ time_minutes?: any;
514
+ timeMinutes?: any;
515
+ max_iterations?: any;
516
+ maxIterations?: any;
517
+ }>>>>;
518
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
519
+ usd: z.ZodOptional<z.ZodAny>;
520
+ tokens: z.ZodOptional<z.ZodAny>;
521
+ time_minutes: z.ZodOptional<z.ZodAny>;
522
+ timeMinutes: z.ZodOptional<z.ZodAny>;
523
+ max_iterations: z.ZodAny;
524
+ maxIterations: z.ZodOptional<z.ZodAny>;
525
+ }, z.core.$strip>, z.ZodTransform<{
526
+ usd: number | undefined;
527
+ tokens: number | undefined;
528
+ timeMinutes: number | undefined;
529
+ maxIterations: number | undefined;
530
+ }, {
531
+ max_iterations: any;
532
+ usd?: any;
533
+ tokens?: any;
534
+ time_minutes?: any;
535
+ timeMinutes?: any;
536
+ maxIterations?: any;
537
+ }>>>>;
538
+ }, z.core.$strip>>>;
539
+ L: z.ZodOptional<z.ZodOptional<z.ZodObject<{
540
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
541
+ usd: z.ZodOptional<z.ZodAny>;
542
+ tokens: z.ZodOptional<z.ZodAny>;
543
+ time_minutes: z.ZodOptional<z.ZodAny>;
544
+ timeMinutes: z.ZodOptional<z.ZodAny>;
545
+ max_iterations: z.ZodOptional<z.ZodAny>;
546
+ maxIterations: z.ZodOptional<z.ZodAny>;
547
+ }, z.core.$strip>, z.ZodTransform<{
548
+ usd: number | undefined;
549
+ tokens: number | undefined;
550
+ timeMinutes: number | undefined;
551
+ maxIterations: number | undefined;
552
+ }, {
553
+ usd?: any;
554
+ tokens?: any;
555
+ time_minutes?: any;
556
+ timeMinutes?: any;
557
+ max_iterations?: any;
558
+ maxIterations?: any;
559
+ }>>>>;
560
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
561
+ usd: z.ZodOptional<z.ZodAny>;
562
+ tokens: z.ZodOptional<z.ZodAny>;
563
+ time_minutes: z.ZodOptional<z.ZodAny>;
564
+ timeMinutes: z.ZodOptional<z.ZodAny>;
565
+ max_iterations: z.ZodOptional<z.ZodAny>;
566
+ maxIterations: z.ZodOptional<z.ZodAny>;
567
+ }, z.core.$strip>, z.ZodTransform<{
568
+ usd: number | undefined;
569
+ tokens: number | undefined;
570
+ timeMinutes: number | undefined;
571
+ maxIterations: number | undefined;
572
+ }, {
573
+ usd?: any;
574
+ tokens?: any;
575
+ time_minutes?: any;
576
+ timeMinutes?: any;
577
+ max_iterations?: any;
578
+ maxIterations?: any;
579
+ }>>>>;
580
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
581
+ usd: z.ZodOptional<z.ZodAny>;
582
+ tokens: z.ZodOptional<z.ZodAny>;
583
+ time_minutes: z.ZodOptional<z.ZodAny>;
584
+ timeMinutes: z.ZodOptional<z.ZodAny>;
585
+ max_iterations: z.ZodAny;
586
+ maxIterations: z.ZodOptional<z.ZodAny>;
587
+ }, z.core.$strip>, z.ZodTransform<{
588
+ usd: number | undefined;
589
+ tokens: number | undefined;
590
+ timeMinutes: number | undefined;
591
+ maxIterations: number | undefined;
592
+ }, {
593
+ max_iterations: any;
594
+ usd?: any;
595
+ tokens?: any;
596
+ time_minutes?: any;
597
+ timeMinutes?: any;
598
+ maxIterations?: any;
599
+ }>>>>;
600
+ }, z.core.$strip>>>;
601
+ XL: z.ZodOptional<z.ZodOptional<z.ZodObject<{
602
+ optimal: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
603
+ usd: z.ZodOptional<z.ZodAny>;
604
+ tokens: z.ZodOptional<z.ZodAny>;
605
+ time_minutes: z.ZodOptional<z.ZodAny>;
606
+ timeMinutes: z.ZodOptional<z.ZodAny>;
607
+ max_iterations: z.ZodOptional<z.ZodAny>;
608
+ maxIterations: z.ZodOptional<z.ZodAny>;
609
+ }, z.core.$strip>, z.ZodTransform<{
610
+ usd: number | undefined;
611
+ tokens: number | undefined;
612
+ timeMinutes: number | undefined;
613
+ maxIterations: number | undefined;
614
+ }, {
615
+ usd?: any;
616
+ tokens?: any;
617
+ time_minutes?: any;
618
+ timeMinutes?: any;
619
+ max_iterations?: any;
620
+ maxIterations?: any;
621
+ }>>>>;
622
+ warning: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
623
+ usd: z.ZodOptional<z.ZodAny>;
624
+ tokens: z.ZodOptional<z.ZodAny>;
625
+ time_minutes: z.ZodOptional<z.ZodAny>;
626
+ timeMinutes: z.ZodOptional<z.ZodAny>;
627
+ max_iterations: z.ZodOptional<z.ZodAny>;
628
+ maxIterations: z.ZodOptional<z.ZodAny>;
629
+ }, z.core.$strip>, z.ZodTransform<{
630
+ usd: number | undefined;
631
+ tokens: number | undefined;
632
+ timeMinutes: number | undefined;
633
+ maxIterations: number | undefined;
634
+ }, {
635
+ usd?: any;
636
+ tokens?: any;
637
+ time_minutes?: any;
638
+ timeMinutes?: any;
639
+ max_iterations?: any;
640
+ maxIterations?: any;
641
+ }>>>>;
642
+ hard: z.ZodOptional<z.ZodOptional<z.ZodPipe<z.ZodObject<{
643
+ usd: z.ZodOptional<z.ZodAny>;
644
+ tokens: z.ZodOptional<z.ZodAny>;
645
+ time_minutes: z.ZodOptional<z.ZodAny>;
646
+ timeMinutes: z.ZodOptional<z.ZodAny>;
647
+ max_iterations: z.ZodAny;
648
+ maxIterations: z.ZodOptional<z.ZodAny>;
649
+ }, z.core.$strip>, z.ZodTransform<{
650
+ usd: number | undefined;
651
+ tokens: number | undefined;
652
+ timeMinutes: number | undefined;
653
+ maxIterations: number | undefined;
654
+ }, {
655
+ max_iterations: any;
656
+ usd?: any;
657
+ tokens?: any;
658
+ time_minutes?: any;
659
+ timeMinutes?: any;
660
+ maxIterations?: any;
661
+ }>>>>;
662
+ }, z.core.$strip>>>;
663
+ }, z.core.$strip>>;
33
664
  budgets: z.ZodPipe<z.ZodOptional<z.ZodObject<{
34
665
  run: z.ZodOptional<z.ZodObject<{
35
666
  money_usd: z.ZodOptional<z.ZodAny>;
@@ -192,6 +823,21 @@ export declare const projectSpecSchema: z.ZodPipe<z.ZodObject<{
192
823
  maxIterations?: any;
193
824
  }>>>>;
194
825
  }, z.core.$strip>>;
826
+ sprint: z.ZodOptional<z.ZodObject<{
827
+ size: z.ZodOptional<z.ZodEnum<{
828
+ XS: "XS";
829
+ S: "S";
830
+ M: "M";
831
+ L: "L";
832
+ XL: "XL";
833
+ }>>;
834
+ intent: z.ZodOptional<z.ZodEnum<{
835
+ fix: "fix";
836
+ feature: "feature";
837
+ refactor: "refactor";
838
+ infra: "infra";
839
+ }>>;
840
+ }, z.core.$strip>>;
195
841
  }, z.core.$strip>, z.ZodTransform<TaskSpec, {
196
842
  id: string;
197
843
  title?: string | undefined;
@@ -221,6 +867,10 @@ export declare const projectSpecSchema: z.ZodPipe<z.ZodObject<{
221
867
  maxIterations: number | undefined;
222
868
  } | undefined;
223
869
  } | undefined;
870
+ sprint?: {
871
+ size?: "XS" | "S" | "M" | "L" | "XL" | undefined;
872
+ intent?: "fix" | "feature" | "refactor" | "infra" | undefined;
873
+ } | undefined;
224
874
  }>>>>;
225
875
  artifacts: z.ZodOptional<z.ZodObject<{
226
876
  enabled: z.ZodOptional<z.ZodBoolean>;
@@ -259,6 +909,213 @@ export declare const projectSpecSchema: z.ZodPipe<z.ZodObject<{
259
909
  } | undefined;
260
910
  } | undefined;
261
911
  tasks: TaskSpec[];
912
+ policies?: {
913
+ scopeGuard?: "off" | "warn" | "block" | undefined;
914
+ } | undefined;
915
+ sprint_defaults?: {
916
+ XS?: {
917
+ optimal?: {
918
+ usd: number | undefined;
919
+ tokens: number | undefined;
920
+ timeMinutes: number | undefined;
921
+ maxIterations: number | undefined;
922
+ } | undefined;
923
+ warning?: {
924
+ usd: number | undefined;
925
+ tokens: number | undefined;
926
+ timeMinutes: number | undefined;
927
+ maxIterations: number | undefined;
928
+ } | undefined;
929
+ hard?: {
930
+ usd: number | undefined;
931
+ tokens: number | undefined;
932
+ timeMinutes: number | undefined;
933
+ maxIterations: number | undefined;
934
+ } | undefined;
935
+ } | undefined;
936
+ S?: {
937
+ optimal?: {
938
+ usd: number | undefined;
939
+ tokens: number | undefined;
940
+ timeMinutes: number | undefined;
941
+ maxIterations: number | undefined;
942
+ } | undefined;
943
+ warning?: {
944
+ usd: number | undefined;
945
+ tokens: number | undefined;
946
+ timeMinutes: number | undefined;
947
+ maxIterations: number | undefined;
948
+ } | undefined;
949
+ hard?: {
950
+ usd: number | undefined;
951
+ tokens: number | undefined;
952
+ timeMinutes: number | undefined;
953
+ maxIterations: number | undefined;
954
+ } | undefined;
955
+ } | undefined;
956
+ M?: {
957
+ optimal?: {
958
+ usd: number | undefined;
959
+ tokens: number | undefined;
960
+ timeMinutes: number | undefined;
961
+ maxIterations: number | undefined;
962
+ } | undefined;
963
+ warning?: {
964
+ usd: number | undefined;
965
+ tokens: number | undefined;
966
+ timeMinutes: number | undefined;
967
+ maxIterations: number | undefined;
968
+ } | undefined;
969
+ hard?: {
970
+ usd: number | undefined;
971
+ tokens: number | undefined;
972
+ timeMinutes: number | undefined;
973
+ maxIterations: number | undefined;
974
+ } | undefined;
975
+ } | undefined;
976
+ L?: {
977
+ optimal?: {
978
+ usd: number | undefined;
979
+ tokens: number | undefined;
980
+ timeMinutes: number | undefined;
981
+ maxIterations: number | undefined;
982
+ } | undefined;
983
+ warning?: {
984
+ usd: number | undefined;
985
+ tokens: number | undefined;
986
+ timeMinutes: number | undefined;
987
+ maxIterations: number | undefined;
988
+ } | undefined;
989
+ hard?: {
990
+ usd: number | undefined;
991
+ tokens: number | undefined;
992
+ timeMinutes: number | undefined;
993
+ maxIterations: number | undefined;
994
+ } | undefined;
995
+ } | undefined;
996
+ XL?: {
997
+ optimal?: {
998
+ usd: number | undefined;
999
+ tokens: number | undefined;
1000
+ timeMinutes: number | undefined;
1001
+ maxIterations: number | undefined;
1002
+ } | undefined;
1003
+ warning?: {
1004
+ usd: number | undefined;
1005
+ tokens: number | undefined;
1006
+ timeMinutes: number | undefined;
1007
+ maxIterations: number | undefined;
1008
+ } | undefined;
1009
+ hard?: {
1010
+ usd: number | undefined;
1011
+ tokens: number | undefined;
1012
+ timeMinutes: number | undefined;
1013
+ maxIterations: number | undefined;
1014
+ } | undefined;
1015
+ } | undefined;
1016
+ } | undefined;
1017
+ sprintDefaults?: {
1018
+ XS?: {
1019
+ optimal?: {
1020
+ usd: number | undefined;
1021
+ tokens: number | undefined;
1022
+ timeMinutes: number | undefined;
1023
+ maxIterations: number | undefined;
1024
+ } | undefined;
1025
+ warning?: {
1026
+ usd: number | undefined;
1027
+ tokens: number | undefined;
1028
+ timeMinutes: number | undefined;
1029
+ maxIterations: number | undefined;
1030
+ } | undefined;
1031
+ hard?: {
1032
+ usd: number | undefined;
1033
+ tokens: number | undefined;
1034
+ timeMinutes: number | undefined;
1035
+ maxIterations: number | undefined;
1036
+ } | undefined;
1037
+ } | undefined;
1038
+ S?: {
1039
+ optimal?: {
1040
+ usd: number | undefined;
1041
+ tokens: number | undefined;
1042
+ timeMinutes: number | undefined;
1043
+ maxIterations: number | undefined;
1044
+ } | undefined;
1045
+ warning?: {
1046
+ usd: number | undefined;
1047
+ tokens: number | undefined;
1048
+ timeMinutes: number | undefined;
1049
+ maxIterations: number | undefined;
1050
+ } | undefined;
1051
+ hard?: {
1052
+ usd: number | undefined;
1053
+ tokens: number | undefined;
1054
+ timeMinutes: number | undefined;
1055
+ maxIterations: number | undefined;
1056
+ } | undefined;
1057
+ } | undefined;
1058
+ M?: {
1059
+ optimal?: {
1060
+ usd: number | undefined;
1061
+ tokens: number | undefined;
1062
+ timeMinutes: number | undefined;
1063
+ maxIterations: number | undefined;
1064
+ } | undefined;
1065
+ warning?: {
1066
+ usd: number | undefined;
1067
+ tokens: number | undefined;
1068
+ timeMinutes: number | undefined;
1069
+ maxIterations: number | undefined;
1070
+ } | undefined;
1071
+ hard?: {
1072
+ usd: number | undefined;
1073
+ tokens: number | undefined;
1074
+ timeMinutes: number | undefined;
1075
+ maxIterations: number | undefined;
1076
+ } | undefined;
1077
+ } | undefined;
1078
+ L?: {
1079
+ optimal?: {
1080
+ usd: number | undefined;
1081
+ tokens: number | undefined;
1082
+ timeMinutes: number | undefined;
1083
+ maxIterations: number | undefined;
1084
+ } | undefined;
1085
+ warning?: {
1086
+ usd: number | undefined;
1087
+ tokens: number | undefined;
1088
+ timeMinutes: number | undefined;
1089
+ maxIterations: number | undefined;
1090
+ } | undefined;
1091
+ hard?: {
1092
+ usd: number | undefined;
1093
+ tokens: number | undefined;
1094
+ timeMinutes: number | undefined;
1095
+ maxIterations: number | undefined;
1096
+ } | undefined;
1097
+ } | undefined;
1098
+ XL?: {
1099
+ optimal?: {
1100
+ usd: number | undefined;
1101
+ tokens: number | undefined;
1102
+ timeMinutes: number | undefined;
1103
+ maxIterations: number | undefined;
1104
+ } | undefined;
1105
+ warning?: {
1106
+ usd: number | undefined;
1107
+ tokens: number | undefined;
1108
+ timeMinutes: number | undefined;
1109
+ maxIterations: number | undefined;
1110
+ } | undefined;
1111
+ hard?: {
1112
+ usd: number | undefined;
1113
+ tokens: number | undefined;
1114
+ timeMinutes: number | undefined;
1115
+ maxIterations: number | undefined;
1116
+ } | undefined;
1117
+ } | undefined;
1118
+ } | undefined;
262
1119
  backends?: Record<string, {
263
1120
  command: string;
264
1121
  modelTiers?: Record<string, Record<string, unknown>> | undefined;