agent-bober 0.1.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 (212) hide show
  1. package/.claude-plugin/plugin.json +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +495 -0
  4. package/agents/bober-evaluator.md +323 -0
  5. package/agents/bober-generator.md +245 -0
  6. package/agents/bober-planner.md +248 -0
  7. package/dist/cli/commands/eval.d.ts +6 -0
  8. package/dist/cli/commands/eval.d.ts.map +1 -0
  9. package/dist/cli/commands/eval.js +129 -0
  10. package/dist/cli/commands/eval.js.map +1 -0
  11. package/dist/cli/commands/init.d.ts +5 -0
  12. package/dist/cli/commands/init.d.ts.map +1 -0
  13. package/dist/cli/commands/init.js +547 -0
  14. package/dist/cli/commands/init.js.map +1 -0
  15. package/dist/cli/commands/plan.d.ts +5 -0
  16. package/dist/cli/commands/plan.d.ts.map +1 -0
  17. package/dist/cli/commands/plan.js +87 -0
  18. package/dist/cli/commands/plan.js.map +1 -0
  19. package/dist/cli/commands/run.d.ts +5 -0
  20. package/dist/cli/commands/run.d.ts.map +1 -0
  21. package/dist/cli/commands/run.js +120 -0
  22. package/dist/cli/commands/run.js.map +1 -0
  23. package/dist/cli/commands/sprint.d.ts +6 -0
  24. package/dist/cli/commands/sprint.d.ts.map +1 -0
  25. package/dist/cli/commands/sprint.js +206 -0
  26. package/dist/cli/commands/sprint.js.map +1 -0
  27. package/dist/cli/index.d.ts +3 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +124 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/config/defaults.d.ts +15 -0
  32. package/dist/config/defaults.d.ts.map +1 -0
  33. package/dist/config/defaults.js +226 -0
  34. package/dist/config/defaults.js.map +1 -0
  35. package/dist/config/index.d.ts +4 -0
  36. package/dist/config/index.d.ts.map +1 -0
  37. package/dist/config/index.js +8 -0
  38. package/dist/config/index.js.map +1 -0
  39. package/dist/config/loader.d.ts +18 -0
  40. package/dist/config/loader.d.ts.map +1 -0
  41. package/dist/config/loader.js +189 -0
  42. package/dist/config/loader.js.map +1 -0
  43. package/dist/config/schema.d.ts +904 -0
  44. package/dist/config/schema.d.ts.map +1 -0
  45. package/dist/config/schema.js +181 -0
  46. package/dist/config/schema.js.map +1 -0
  47. package/dist/contracts/eval-result.d.ts +205 -0
  48. package/dist/contracts/eval-result.d.ts.map +1 -0
  49. package/dist/contracts/eval-result.js +87 -0
  50. package/dist/contracts/eval-result.js.map +1 -0
  51. package/dist/contracts/index.d.ts +4 -0
  52. package/dist/contracts/index.d.ts.map +1 -0
  53. package/dist/contracts/index.js +16 -0
  54. package/dist/contracts/index.js.map +1 -0
  55. package/dist/contracts/spec.d.ts +101 -0
  56. package/dist/contracts/spec.d.ts.map +1 -0
  57. package/dist/contracts/spec.js +51 -0
  58. package/dist/contracts/spec.js.map +1 -0
  59. package/dist/contracts/sprint-contract.d.ts +141 -0
  60. package/dist/contracts/sprint-contract.d.ts.map +1 -0
  61. package/dist/contracts/sprint-contract.js +80 -0
  62. package/dist/contracts/sprint-contract.js.map +1 -0
  63. package/dist/evaluators/builtin/api-check.d.ts +13 -0
  64. package/dist/evaluators/builtin/api-check.d.ts.map +1 -0
  65. package/dist/evaluators/builtin/api-check.js +152 -0
  66. package/dist/evaluators/builtin/api-check.js.map +1 -0
  67. package/dist/evaluators/builtin/build-check.d.ts +17 -0
  68. package/dist/evaluators/builtin/build-check.d.ts.map +1 -0
  69. package/dist/evaluators/builtin/build-check.js +155 -0
  70. package/dist/evaluators/builtin/build-check.js.map +1 -0
  71. package/dist/evaluators/builtin/command-runner.d.ts +26 -0
  72. package/dist/evaluators/builtin/command-runner.d.ts.map +1 -0
  73. package/dist/evaluators/builtin/command-runner.js +114 -0
  74. package/dist/evaluators/builtin/command-runner.js.map +1 -0
  75. package/dist/evaluators/builtin/lint.d.ts +17 -0
  76. package/dist/evaluators/builtin/lint.d.ts.map +1 -0
  77. package/dist/evaluators/builtin/lint.js +264 -0
  78. package/dist/evaluators/builtin/lint.js.map +1 -0
  79. package/dist/evaluators/builtin/playwright.d.ts +16 -0
  80. package/dist/evaluators/builtin/playwright.d.ts.map +1 -0
  81. package/dist/evaluators/builtin/playwright.js +238 -0
  82. package/dist/evaluators/builtin/playwright.js.map +1 -0
  83. package/dist/evaluators/builtin/typescript-check.d.ts +12 -0
  84. package/dist/evaluators/builtin/typescript-check.d.ts.map +1 -0
  85. package/dist/evaluators/builtin/typescript-check.js +155 -0
  86. package/dist/evaluators/builtin/typescript-check.js.map +1 -0
  87. package/dist/evaluators/builtin/unit-test.d.ts +18 -0
  88. package/dist/evaluators/builtin/unit-test.d.ts.map +1 -0
  89. package/dist/evaluators/builtin/unit-test.js +279 -0
  90. package/dist/evaluators/builtin/unit-test.js.map +1 -0
  91. package/dist/evaluators/index.d.ts +11 -0
  92. package/dist/evaluators/index.d.ts.map +1 -0
  93. package/dist/evaluators/index.js +13 -0
  94. package/dist/evaluators/index.js.map +1 -0
  95. package/dist/evaluators/plugin-interface.d.ts +50 -0
  96. package/dist/evaluators/plugin-interface.d.ts.map +1 -0
  97. package/dist/evaluators/plugin-interface.js +2 -0
  98. package/dist/evaluators/plugin-interface.js.map +1 -0
  99. package/dist/evaluators/plugin-loader.d.ts +18 -0
  100. package/dist/evaluators/plugin-loader.d.ts.map +1 -0
  101. package/dist/evaluators/plugin-loader.js +107 -0
  102. package/dist/evaluators/plugin-loader.js.map +1 -0
  103. package/dist/evaluators/registry.d.ts +78 -0
  104. package/dist/evaluators/registry.d.ts.map +1 -0
  105. package/dist/evaluators/registry.js +238 -0
  106. package/dist/evaluators/registry.js.map +1 -0
  107. package/dist/index.d.ts +17 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +22 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/orchestrator/context-handoff.d.ts +543 -0
  112. package/dist/orchestrator/context-handoff.d.ts.map +1 -0
  113. package/dist/orchestrator/context-handoff.js +133 -0
  114. package/dist/orchestrator/context-handoff.js.map +1 -0
  115. package/dist/orchestrator/evaluator-agent.d.ts +15 -0
  116. package/dist/orchestrator/evaluator-agent.d.ts.map +1 -0
  117. package/dist/orchestrator/evaluator-agent.js +233 -0
  118. package/dist/orchestrator/evaluator-agent.js.map +1 -0
  119. package/dist/orchestrator/generator-agent.d.ts +16 -0
  120. package/dist/orchestrator/generator-agent.d.ts.map +1 -0
  121. package/dist/orchestrator/generator-agent.js +147 -0
  122. package/dist/orchestrator/generator-agent.js.map +1 -0
  123. package/dist/orchestrator/pipeline.d.ts +24 -0
  124. package/dist/orchestrator/pipeline.d.ts.map +1 -0
  125. package/dist/orchestrator/pipeline.js +290 -0
  126. package/dist/orchestrator/pipeline.js.map +1 -0
  127. package/dist/orchestrator/planner-agent.d.ts +10 -0
  128. package/dist/orchestrator/planner-agent.d.ts.map +1 -0
  129. package/dist/orchestrator/planner-agent.js +187 -0
  130. package/dist/orchestrator/planner-agent.js.map +1 -0
  131. package/dist/state/helpers.d.ts +5 -0
  132. package/dist/state/helpers.d.ts.map +1 -0
  133. package/dist/state/helpers.js +8 -0
  134. package/dist/state/helpers.js.map +1 -0
  135. package/dist/state/history.d.ts +39 -0
  136. package/dist/state/history.d.ts.map +1 -0
  137. package/dist/state/history.js +162 -0
  138. package/dist/state/history.js.map +1 -0
  139. package/dist/state/index.d.ts +8 -0
  140. package/dist/state/index.d.ts.map +1 -0
  141. package/dist/state/index.js +22 -0
  142. package/dist/state/index.js.map +1 -0
  143. package/dist/state/plan-state.d.ts +21 -0
  144. package/dist/state/plan-state.d.ts.map +1 -0
  145. package/dist/state/plan-state.js +108 -0
  146. package/dist/state/plan-state.js.map +1 -0
  147. package/dist/state/sprint-state.d.ts +20 -0
  148. package/dist/state/sprint-state.d.ts.map +1 -0
  149. package/dist/state/sprint-state.js +98 -0
  150. package/dist/state/sprint-state.js.map +1 -0
  151. package/dist/utils/fs.d.ts +31 -0
  152. package/dist/utils/fs.d.ts.map +1 -0
  153. package/dist/utils/fs.js +67 -0
  154. package/dist/utils/fs.js.map +1 -0
  155. package/dist/utils/git.d.ts +35 -0
  156. package/dist/utils/git.d.ts.map +1 -0
  157. package/dist/utils/git.js +84 -0
  158. package/dist/utils/git.js.map +1 -0
  159. package/dist/utils/index.d.ts +4 -0
  160. package/dist/utils/index.d.ts.map +1 -0
  161. package/dist/utils/index.js +4 -0
  162. package/dist/utils/index.js.map +1 -0
  163. package/dist/utils/logger.d.ts +45 -0
  164. package/dist/utils/logger.d.ts.map +1 -0
  165. package/dist/utils/logger.js +73 -0
  166. package/dist/utils/logger.js.map +1 -0
  167. package/hooks/hooks.json +10 -0
  168. package/package.json +67 -0
  169. package/scripts/detect-stack.sh +287 -0
  170. package/scripts/init-project.sh +206 -0
  171. package/scripts/run-eval.sh +175 -0
  172. package/skills/bober.anchor/SKILL.md +365 -0
  173. package/skills/bober.anchor/references/anchor-guide.md +567 -0
  174. package/skills/bober.brownfield/SKILL.md +422 -0
  175. package/skills/bober.brownfield/references/codebase-analysis.md +304 -0
  176. package/skills/bober.eval/SKILL.md +235 -0
  177. package/skills/bober.eval/references/eval-strategies.md +407 -0
  178. package/skills/bober.eval/references/feedback-format.md +182 -0
  179. package/skills/bober.plan/SKILL.md +244 -0
  180. package/skills/bober.plan/references/clarification-guide.md +124 -0
  181. package/skills/bober.plan/references/spec-schema.md +253 -0
  182. package/skills/bober.react/SKILL.md +330 -0
  183. package/skills/bober.react/references/react-scaffold.md +344 -0
  184. package/skills/bober.run/SKILL.md +303 -0
  185. package/skills/bober.solidity/SKILL.md +416 -0
  186. package/skills/bober.solidity/references/solidity-guide.md +487 -0
  187. package/skills/bober.sprint/SKILL.md +280 -0
  188. package/skills/bober.sprint/references/contract-schema.md +251 -0
  189. package/templates/base/CLAUDE.md +20 -0
  190. package/templates/base/bober.config.json +35 -0
  191. package/templates/brownfield/CLAUDE.md +34 -0
  192. package/templates/brownfield/bober.config.json +37 -0
  193. package/templates/presets/anchor/CLAUDE.md +163 -0
  194. package/templates/presets/anchor/bober.config.json +9 -0
  195. package/templates/presets/api-node/CLAUDE.md +153 -0
  196. package/templates/presets/api-node/bober.config.json +10 -0
  197. package/templates/presets/nextjs/CLAUDE.md +82 -0
  198. package/templates/presets/nextjs/bober.config.json +14 -0
  199. package/templates/presets/python-api/CLAUDE.md +202 -0
  200. package/templates/presets/python-api/bober.config.json +9 -0
  201. package/templates/presets/react-vite/CLAUDE.md +71 -0
  202. package/templates/presets/react-vite/bober.config.json +53 -0
  203. package/templates/presets/react-vite/scaffold/package.json +45 -0
  204. package/templates/presets/react-vite/scaffold/server/index.ts +38 -0
  205. package/templates/presets/react-vite/scaffold/server/tsconfig.json +24 -0
  206. package/templates/presets/react-vite/scaffold/src/App.tsx +37 -0
  207. package/templates/presets/react-vite/scaffold/src/index.html +12 -0
  208. package/templates/presets/react-vite/scaffold/src/main.tsx +12 -0
  209. package/templates/presets/react-vite/scaffold/tsconfig.json +27 -0
  210. package/templates/presets/react-vite/scaffold/vite.config.ts +34 -0
  211. package/templates/presets/solidity/CLAUDE.md +106 -0
  212. package/templates/presets/solidity/bober.config.json +9 -0
@@ -0,0 +1,904 @@
1
+ import { z } from "zod";
2
+ export declare const ProjectModeSchema: z.ZodEnum<["greenfield", "brownfield"]>;
3
+ export type ProjectMode = z.infer<typeof ProjectModeSchema>;
4
+ export declare const StackSchema: z.ZodObject<{
5
+ frontend: z.ZodOptional<z.ZodString>;
6
+ backend: z.ZodOptional<z.ZodString>;
7
+ blockchain: z.ZodOptional<z.ZodString>;
8
+ testing: z.ZodOptional<z.ZodString>;
9
+ database: z.ZodOptional<z.ZodString>;
10
+ language: z.ZodOptional<z.ZodString>;
11
+ other: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ frontend?: string | undefined;
14
+ backend?: string | undefined;
15
+ blockchain?: string | undefined;
16
+ testing?: string | undefined;
17
+ database?: string | undefined;
18
+ language?: string | undefined;
19
+ other?: string[] | undefined;
20
+ }, {
21
+ frontend?: string | undefined;
22
+ backend?: string | undefined;
23
+ blockchain?: string | undefined;
24
+ testing?: string | undefined;
25
+ database?: string | undefined;
26
+ language?: string | undefined;
27
+ other?: string[] | undefined;
28
+ }>;
29
+ export type Stack = z.infer<typeof StackSchema>;
30
+ export declare const ModelChoiceSchema: z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>;
31
+ export type ModelChoice = z.infer<typeof ModelChoiceSchema>;
32
+ export declare const GeneratorModelSchema: z.ZodEnum<["sonnet", "opus", "haiku"]>;
33
+ export type GeneratorModel = z.infer<typeof GeneratorModelSchema>;
34
+ export declare const SprintSizeSchema: z.ZodEnum<["small", "medium", "large"]>;
35
+ export type SprintSize = z.infer<typeof SprintSizeSchema>;
36
+ export declare const ContextResetSchema: z.ZodEnum<["always", "on-threshold", "never"]>;
37
+ export type ContextReset = z.infer<typeof ContextResetSchema>;
38
+ /**
39
+ * Well-known built-in evaluator strategy types.
40
+ * The type field also accepts ANY string — unknown types are resolved
41
+ * by looking for a matching registered plugin or the `command` field.
42
+ */
43
+ export declare const BUILTIN_STRATEGY_TYPES: readonly ["typecheck", "lint", "unit-test", "playwright", "api-check", "build", "custom"];
44
+ export type BuiltinStrategyType = (typeof BUILTIN_STRATEGY_TYPES)[number];
45
+ export declare const EvalStrategyTypeSchema: z.ZodString;
46
+ export type EvalStrategyType = string;
47
+ export declare const EvalStrategySchema: z.ZodObject<{
48
+ /** Strategy type — built-in name OR any custom name (e.g. "k6", "anchor-verify", "slither"). */
49
+ type: z.ZodString;
50
+ /** Path to a custom plugin module (for type "custom" or any non-built-in type). */
51
+ plugin: z.ZodOptional<z.ZodString>;
52
+ /** Shell command to run directly — shorthand alternative to writing a plugin file. */
53
+ command: z.ZodOptional<z.ZodString>;
54
+ /** Whether this strategy must pass for the sprint to pass. */
55
+ required: z.ZodBoolean;
56
+ /** Arbitrary config passed to the evaluator plugin. */
57
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
58
+ /** Human-readable label (defaults to type if not set). */
59
+ label: z.ZodOptional<z.ZodString>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ type: string;
62
+ required: boolean;
63
+ plugin?: string | undefined;
64
+ command?: string | undefined;
65
+ config?: Record<string, unknown> | undefined;
66
+ label?: string | undefined;
67
+ }, {
68
+ type: string;
69
+ required: boolean;
70
+ plugin?: string | undefined;
71
+ command?: string | undefined;
72
+ config?: Record<string, unknown> | undefined;
73
+ label?: string | undefined;
74
+ }>;
75
+ export type EvalStrategy = z.infer<typeof EvalStrategySchema>;
76
+ export declare const ProjectSectionSchema: z.ZodObject<{
77
+ name: z.ZodString;
78
+ mode: z.ZodEnum<["greenfield", "brownfield"]>;
79
+ preset: z.ZodOptional<z.ZodString>;
80
+ stack: z.ZodOptional<z.ZodObject<{
81
+ frontend: z.ZodOptional<z.ZodString>;
82
+ backend: z.ZodOptional<z.ZodString>;
83
+ blockchain: z.ZodOptional<z.ZodString>;
84
+ testing: z.ZodOptional<z.ZodString>;
85
+ database: z.ZodOptional<z.ZodString>;
86
+ language: z.ZodOptional<z.ZodString>;
87
+ other: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
88
+ }, "strip", z.ZodTypeAny, {
89
+ frontend?: string | undefined;
90
+ backend?: string | undefined;
91
+ blockchain?: string | undefined;
92
+ testing?: string | undefined;
93
+ database?: string | undefined;
94
+ language?: string | undefined;
95
+ other?: string[] | undefined;
96
+ }, {
97
+ frontend?: string | undefined;
98
+ backend?: string | undefined;
99
+ blockchain?: string | undefined;
100
+ testing?: string | undefined;
101
+ database?: string | undefined;
102
+ language?: string | undefined;
103
+ other?: string[] | undefined;
104
+ }>>;
105
+ description: z.ZodOptional<z.ZodString>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ name: string;
108
+ mode: "greenfield" | "brownfield";
109
+ preset?: string | undefined;
110
+ stack?: {
111
+ frontend?: string | undefined;
112
+ backend?: string | undefined;
113
+ blockchain?: string | undefined;
114
+ testing?: string | undefined;
115
+ database?: string | undefined;
116
+ language?: string | undefined;
117
+ other?: string[] | undefined;
118
+ } | undefined;
119
+ description?: string | undefined;
120
+ }, {
121
+ name: string;
122
+ mode: "greenfield" | "brownfield";
123
+ preset?: string | undefined;
124
+ stack?: {
125
+ frontend?: string | undefined;
126
+ backend?: string | undefined;
127
+ blockchain?: string | undefined;
128
+ testing?: string | undefined;
129
+ database?: string | undefined;
130
+ language?: string | undefined;
131
+ other?: string[] | undefined;
132
+ } | undefined;
133
+ description?: string | undefined;
134
+ }>;
135
+ export type ProjectSection = z.infer<typeof ProjectSectionSchema>;
136
+ export declare const PlannerSectionSchema: z.ZodObject<{
137
+ maxClarifications: z.ZodDefault<z.ZodNumber>;
138
+ model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>>;
139
+ contextFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
140
+ }, "strip", z.ZodTypeAny, {
141
+ maxClarifications: number;
142
+ model: "sonnet" | "opus" | "haiku" | "inherit";
143
+ contextFiles?: string[] | undefined;
144
+ }, {
145
+ maxClarifications?: number | undefined;
146
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
147
+ contextFiles?: string[] | undefined;
148
+ }>;
149
+ export type PlannerSection = z.infer<typeof PlannerSectionSchema>;
150
+ export declare const GeneratorSectionSchema: z.ZodObject<{
151
+ model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>;
152
+ maxTurnsPerSprint: z.ZodDefault<z.ZodNumber>;
153
+ autoCommit: z.ZodDefault<z.ZodBoolean>;
154
+ branchPattern: z.ZodDefault<z.ZodString>;
155
+ }, "strip", z.ZodTypeAny, {
156
+ model: "sonnet" | "opus" | "haiku";
157
+ maxTurnsPerSprint: number;
158
+ autoCommit: boolean;
159
+ branchPattern: string;
160
+ }, {
161
+ model?: "sonnet" | "opus" | "haiku" | undefined;
162
+ maxTurnsPerSprint?: number | undefined;
163
+ autoCommit?: boolean | undefined;
164
+ branchPattern?: string | undefined;
165
+ }>;
166
+ export type GeneratorSection = z.infer<typeof GeneratorSectionSchema>;
167
+ export declare const EvaluatorSectionSchema: z.ZodObject<{
168
+ model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>;
169
+ strategies: z.ZodArray<z.ZodObject<{
170
+ /** Strategy type — built-in name OR any custom name (e.g. "k6", "anchor-verify", "slither"). */
171
+ type: z.ZodString;
172
+ /** Path to a custom plugin module (for type "custom" or any non-built-in type). */
173
+ plugin: z.ZodOptional<z.ZodString>;
174
+ /** Shell command to run directly — shorthand alternative to writing a plugin file. */
175
+ command: z.ZodOptional<z.ZodString>;
176
+ /** Whether this strategy must pass for the sprint to pass. */
177
+ required: z.ZodBoolean;
178
+ /** Arbitrary config passed to the evaluator plugin. */
179
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
180
+ /** Human-readable label (defaults to type if not set). */
181
+ label: z.ZodOptional<z.ZodString>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ type: string;
184
+ required: boolean;
185
+ plugin?: string | undefined;
186
+ command?: string | undefined;
187
+ config?: Record<string, unknown> | undefined;
188
+ label?: string | undefined;
189
+ }, {
190
+ type: string;
191
+ required: boolean;
192
+ plugin?: string | undefined;
193
+ command?: string | undefined;
194
+ config?: Record<string, unknown> | undefined;
195
+ label?: string | undefined;
196
+ }>, "many">;
197
+ maxIterations: z.ZodDefault<z.ZodNumber>;
198
+ plugins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
199
+ }, "strip", z.ZodTypeAny, {
200
+ model: "sonnet" | "opus" | "haiku";
201
+ strategies: {
202
+ type: string;
203
+ required: boolean;
204
+ plugin?: string | undefined;
205
+ command?: string | undefined;
206
+ config?: Record<string, unknown> | undefined;
207
+ label?: string | undefined;
208
+ }[];
209
+ maxIterations: number;
210
+ plugins?: string[] | undefined;
211
+ }, {
212
+ strategies: {
213
+ type: string;
214
+ required: boolean;
215
+ plugin?: string | undefined;
216
+ command?: string | undefined;
217
+ config?: Record<string, unknown> | undefined;
218
+ label?: string | undefined;
219
+ }[];
220
+ model?: "sonnet" | "opus" | "haiku" | undefined;
221
+ maxIterations?: number | undefined;
222
+ plugins?: string[] | undefined;
223
+ }>;
224
+ export type EvaluatorSection = z.infer<typeof EvaluatorSectionSchema>;
225
+ export declare const SprintSectionSchema: z.ZodObject<{
226
+ maxSprints: z.ZodDefault<z.ZodNumber>;
227
+ requireContracts: z.ZodDefault<z.ZodBoolean>;
228
+ sprintSize: z.ZodDefault<z.ZodEnum<["small", "medium", "large"]>>;
229
+ }, "strip", z.ZodTypeAny, {
230
+ maxSprints: number;
231
+ requireContracts: boolean;
232
+ sprintSize: "small" | "medium" | "large";
233
+ }, {
234
+ maxSprints?: number | undefined;
235
+ requireContracts?: boolean | undefined;
236
+ sprintSize?: "small" | "medium" | "large" | undefined;
237
+ }>;
238
+ export type SprintSection = z.infer<typeof SprintSectionSchema>;
239
+ export declare const PipelineSectionSchema: z.ZodObject<{
240
+ maxIterations: z.ZodDefault<z.ZodNumber>;
241
+ requireApproval: z.ZodDefault<z.ZodBoolean>;
242
+ contextReset: z.ZodDefault<z.ZodEnum<["always", "on-threshold", "never"]>>;
243
+ }, "strip", z.ZodTypeAny, {
244
+ maxIterations: number;
245
+ requireApproval: boolean;
246
+ contextReset: "never" | "always" | "on-threshold";
247
+ }, {
248
+ maxIterations?: number | undefined;
249
+ requireApproval?: boolean | undefined;
250
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
251
+ }>;
252
+ export type PipelineSection = z.infer<typeof PipelineSectionSchema>;
253
+ export declare const CommandsSectionSchema: z.ZodObject<{
254
+ install: z.ZodOptional<z.ZodString>;
255
+ build: z.ZodOptional<z.ZodString>;
256
+ test: z.ZodOptional<z.ZodString>;
257
+ lint: z.ZodOptional<z.ZodString>;
258
+ dev: z.ZodOptional<z.ZodString>;
259
+ typecheck: z.ZodOptional<z.ZodString>;
260
+ }, "strip", z.ZodTypeAny, {
261
+ install?: string | undefined;
262
+ build?: string | undefined;
263
+ test?: string | undefined;
264
+ lint?: string | undefined;
265
+ dev?: string | undefined;
266
+ typecheck?: string | undefined;
267
+ }, {
268
+ install?: string | undefined;
269
+ build?: string | undefined;
270
+ test?: string | undefined;
271
+ lint?: string | undefined;
272
+ dev?: string | undefined;
273
+ typecheck?: string | undefined;
274
+ }>;
275
+ export type CommandsSection = z.infer<typeof CommandsSectionSchema>;
276
+ export declare const BoberConfigSchema: z.ZodObject<{
277
+ project: z.ZodObject<{
278
+ name: z.ZodString;
279
+ mode: z.ZodEnum<["greenfield", "brownfield"]>;
280
+ preset: z.ZodOptional<z.ZodString>;
281
+ stack: z.ZodOptional<z.ZodObject<{
282
+ frontend: z.ZodOptional<z.ZodString>;
283
+ backend: z.ZodOptional<z.ZodString>;
284
+ blockchain: z.ZodOptional<z.ZodString>;
285
+ testing: z.ZodOptional<z.ZodString>;
286
+ database: z.ZodOptional<z.ZodString>;
287
+ language: z.ZodOptional<z.ZodString>;
288
+ other: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
289
+ }, "strip", z.ZodTypeAny, {
290
+ frontend?: string | undefined;
291
+ backend?: string | undefined;
292
+ blockchain?: string | undefined;
293
+ testing?: string | undefined;
294
+ database?: string | undefined;
295
+ language?: string | undefined;
296
+ other?: string[] | undefined;
297
+ }, {
298
+ frontend?: string | undefined;
299
+ backend?: string | undefined;
300
+ blockchain?: string | undefined;
301
+ testing?: string | undefined;
302
+ database?: string | undefined;
303
+ language?: string | undefined;
304
+ other?: string[] | undefined;
305
+ }>>;
306
+ description: z.ZodOptional<z.ZodString>;
307
+ }, "strip", z.ZodTypeAny, {
308
+ name: string;
309
+ mode: "greenfield" | "brownfield";
310
+ preset?: string | undefined;
311
+ stack?: {
312
+ frontend?: string | undefined;
313
+ backend?: string | undefined;
314
+ blockchain?: string | undefined;
315
+ testing?: string | undefined;
316
+ database?: string | undefined;
317
+ language?: string | undefined;
318
+ other?: string[] | undefined;
319
+ } | undefined;
320
+ description?: string | undefined;
321
+ }, {
322
+ name: string;
323
+ mode: "greenfield" | "brownfield";
324
+ preset?: string | undefined;
325
+ stack?: {
326
+ frontend?: string | undefined;
327
+ backend?: string | undefined;
328
+ blockchain?: string | undefined;
329
+ testing?: string | undefined;
330
+ database?: string | undefined;
331
+ language?: string | undefined;
332
+ other?: string[] | undefined;
333
+ } | undefined;
334
+ description?: string | undefined;
335
+ }>;
336
+ planner: z.ZodObject<{
337
+ maxClarifications: z.ZodDefault<z.ZodNumber>;
338
+ model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>>;
339
+ contextFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
340
+ }, "strip", z.ZodTypeAny, {
341
+ maxClarifications: number;
342
+ model: "sonnet" | "opus" | "haiku" | "inherit";
343
+ contextFiles?: string[] | undefined;
344
+ }, {
345
+ maxClarifications?: number | undefined;
346
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
347
+ contextFiles?: string[] | undefined;
348
+ }>;
349
+ generator: z.ZodObject<{
350
+ model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>;
351
+ maxTurnsPerSprint: z.ZodDefault<z.ZodNumber>;
352
+ autoCommit: z.ZodDefault<z.ZodBoolean>;
353
+ branchPattern: z.ZodDefault<z.ZodString>;
354
+ }, "strip", z.ZodTypeAny, {
355
+ model: "sonnet" | "opus" | "haiku";
356
+ maxTurnsPerSprint: number;
357
+ autoCommit: boolean;
358
+ branchPattern: string;
359
+ }, {
360
+ model?: "sonnet" | "opus" | "haiku" | undefined;
361
+ maxTurnsPerSprint?: number | undefined;
362
+ autoCommit?: boolean | undefined;
363
+ branchPattern?: string | undefined;
364
+ }>;
365
+ evaluator: z.ZodObject<{
366
+ model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>;
367
+ strategies: z.ZodArray<z.ZodObject<{
368
+ /** Strategy type — built-in name OR any custom name (e.g. "k6", "anchor-verify", "slither"). */
369
+ type: z.ZodString;
370
+ /** Path to a custom plugin module (for type "custom" or any non-built-in type). */
371
+ plugin: z.ZodOptional<z.ZodString>;
372
+ /** Shell command to run directly — shorthand alternative to writing a plugin file. */
373
+ command: z.ZodOptional<z.ZodString>;
374
+ /** Whether this strategy must pass for the sprint to pass. */
375
+ required: z.ZodBoolean;
376
+ /** Arbitrary config passed to the evaluator plugin. */
377
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
378
+ /** Human-readable label (defaults to type if not set). */
379
+ label: z.ZodOptional<z.ZodString>;
380
+ }, "strip", z.ZodTypeAny, {
381
+ type: string;
382
+ required: boolean;
383
+ plugin?: string | undefined;
384
+ command?: string | undefined;
385
+ config?: Record<string, unknown> | undefined;
386
+ label?: string | undefined;
387
+ }, {
388
+ type: string;
389
+ required: boolean;
390
+ plugin?: string | undefined;
391
+ command?: string | undefined;
392
+ config?: Record<string, unknown> | undefined;
393
+ label?: string | undefined;
394
+ }>, "many">;
395
+ maxIterations: z.ZodDefault<z.ZodNumber>;
396
+ plugins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
397
+ }, "strip", z.ZodTypeAny, {
398
+ model: "sonnet" | "opus" | "haiku";
399
+ strategies: {
400
+ type: string;
401
+ required: boolean;
402
+ plugin?: string | undefined;
403
+ command?: string | undefined;
404
+ config?: Record<string, unknown> | undefined;
405
+ label?: string | undefined;
406
+ }[];
407
+ maxIterations: number;
408
+ plugins?: string[] | undefined;
409
+ }, {
410
+ strategies: {
411
+ type: string;
412
+ required: boolean;
413
+ plugin?: string | undefined;
414
+ command?: string | undefined;
415
+ config?: Record<string, unknown> | undefined;
416
+ label?: string | undefined;
417
+ }[];
418
+ model?: "sonnet" | "opus" | "haiku" | undefined;
419
+ maxIterations?: number | undefined;
420
+ plugins?: string[] | undefined;
421
+ }>;
422
+ sprint: z.ZodObject<{
423
+ maxSprints: z.ZodDefault<z.ZodNumber>;
424
+ requireContracts: z.ZodDefault<z.ZodBoolean>;
425
+ sprintSize: z.ZodDefault<z.ZodEnum<["small", "medium", "large"]>>;
426
+ }, "strip", z.ZodTypeAny, {
427
+ maxSprints: number;
428
+ requireContracts: boolean;
429
+ sprintSize: "small" | "medium" | "large";
430
+ }, {
431
+ maxSprints?: number | undefined;
432
+ requireContracts?: boolean | undefined;
433
+ sprintSize?: "small" | "medium" | "large" | undefined;
434
+ }>;
435
+ pipeline: z.ZodObject<{
436
+ maxIterations: z.ZodDefault<z.ZodNumber>;
437
+ requireApproval: z.ZodDefault<z.ZodBoolean>;
438
+ contextReset: z.ZodDefault<z.ZodEnum<["always", "on-threshold", "never"]>>;
439
+ }, "strip", z.ZodTypeAny, {
440
+ maxIterations: number;
441
+ requireApproval: boolean;
442
+ contextReset: "never" | "always" | "on-threshold";
443
+ }, {
444
+ maxIterations?: number | undefined;
445
+ requireApproval?: boolean | undefined;
446
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
447
+ }>;
448
+ commands: z.ZodObject<{
449
+ install: z.ZodOptional<z.ZodString>;
450
+ build: z.ZodOptional<z.ZodString>;
451
+ test: z.ZodOptional<z.ZodString>;
452
+ lint: z.ZodOptional<z.ZodString>;
453
+ dev: z.ZodOptional<z.ZodString>;
454
+ typecheck: z.ZodOptional<z.ZodString>;
455
+ }, "strip", z.ZodTypeAny, {
456
+ install?: string | undefined;
457
+ build?: string | undefined;
458
+ test?: string | undefined;
459
+ lint?: string | undefined;
460
+ dev?: string | undefined;
461
+ typecheck?: string | undefined;
462
+ }, {
463
+ install?: string | undefined;
464
+ build?: string | undefined;
465
+ test?: string | undefined;
466
+ lint?: string | undefined;
467
+ dev?: string | undefined;
468
+ typecheck?: string | undefined;
469
+ }>;
470
+ }, "strip", z.ZodTypeAny, {
471
+ project: {
472
+ name: string;
473
+ mode: "greenfield" | "brownfield";
474
+ preset?: string | undefined;
475
+ stack?: {
476
+ frontend?: string | undefined;
477
+ backend?: string | undefined;
478
+ blockchain?: string | undefined;
479
+ testing?: string | undefined;
480
+ database?: string | undefined;
481
+ language?: string | undefined;
482
+ other?: string[] | undefined;
483
+ } | undefined;
484
+ description?: string | undefined;
485
+ };
486
+ planner: {
487
+ maxClarifications: number;
488
+ model: "sonnet" | "opus" | "haiku" | "inherit";
489
+ contextFiles?: string[] | undefined;
490
+ };
491
+ generator: {
492
+ model: "sonnet" | "opus" | "haiku";
493
+ maxTurnsPerSprint: number;
494
+ autoCommit: boolean;
495
+ branchPattern: string;
496
+ };
497
+ evaluator: {
498
+ model: "sonnet" | "opus" | "haiku";
499
+ strategies: {
500
+ type: string;
501
+ required: boolean;
502
+ plugin?: string | undefined;
503
+ command?: string | undefined;
504
+ config?: Record<string, unknown> | undefined;
505
+ label?: string | undefined;
506
+ }[];
507
+ maxIterations: number;
508
+ plugins?: string[] | undefined;
509
+ };
510
+ sprint: {
511
+ maxSprints: number;
512
+ requireContracts: boolean;
513
+ sprintSize: "small" | "medium" | "large";
514
+ };
515
+ pipeline: {
516
+ maxIterations: number;
517
+ requireApproval: boolean;
518
+ contextReset: "never" | "always" | "on-threshold";
519
+ };
520
+ commands: {
521
+ install?: string | undefined;
522
+ build?: string | undefined;
523
+ test?: string | undefined;
524
+ lint?: string | undefined;
525
+ dev?: string | undefined;
526
+ typecheck?: string | undefined;
527
+ };
528
+ }, {
529
+ project: {
530
+ name: string;
531
+ mode: "greenfield" | "brownfield";
532
+ preset?: string | undefined;
533
+ stack?: {
534
+ frontend?: string | undefined;
535
+ backend?: string | undefined;
536
+ blockchain?: string | undefined;
537
+ testing?: string | undefined;
538
+ database?: string | undefined;
539
+ language?: string | undefined;
540
+ other?: string[] | undefined;
541
+ } | undefined;
542
+ description?: string | undefined;
543
+ };
544
+ planner: {
545
+ maxClarifications?: number | undefined;
546
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
547
+ contextFiles?: string[] | undefined;
548
+ };
549
+ generator: {
550
+ model?: "sonnet" | "opus" | "haiku" | undefined;
551
+ maxTurnsPerSprint?: number | undefined;
552
+ autoCommit?: boolean | undefined;
553
+ branchPattern?: string | undefined;
554
+ };
555
+ evaluator: {
556
+ strategies: {
557
+ type: string;
558
+ required: boolean;
559
+ plugin?: string | undefined;
560
+ command?: string | undefined;
561
+ config?: Record<string, unknown> | undefined;
562
+ label?: string | undefined;
563
+ }[];
564
+ model?: "sonnet" | "opus" | "haiku" | undefined;
565
+ maxIterations?: number | undefined;
566
+ plugins?: string[] | undefined;
567
+ };
568
+ sprint: {
569
+ maxSprints?: number | undefined;
570
+ requireContracts?: boolean | undefined;
571
+ sprintSize?: "small" | "medium" | "large" | undefined;
572
+ };
573
+ pipeline: {
574
+ maxIterations?: number | undefined;
575
+ requireApproval?: boolean | undefined;
576
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
577
+ };
578
+ commands: {
579
+ install?: string | undefined;
580
+ build?: string | undefined;
581
+ test?: string | undefined;
582
+ lint?: string | undefined;
583
+ dev?: string | undefined;
584
+ typecheck?: string | undefined;
585
+ };
586
+ }>;
587
+ export type BoberConfig = z.infer<typeof BoberConfigSchema>;
588
+ /**
589
+ * Partial schema used for config files that rely on defaults.
590
+ * Allows every field to be optional except `project` which is always required.
591
+ */
592
+ export declare const PartialBoberConfigSchema: z.ZodObject<{
593
+ planner: z.ZodOptional<z.ZodObject<{
594
+ maxClarifications: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
595
+ model: z.ZodOptional<z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>>>;
596
+ contextFiles: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
597
+ }, "strip", z.ZodTypeAny, {
598
+ maxClarifications?: number | undefined;
599
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
600
+ contextFiles?: string[] | undefined;
601
+ }, {
602
+ maxClarifications?: number | undefined;
603
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
604
+ contextFiles?: string[] | undefined;
605
+ }>>;
606
+ generator: z.ZodOptional<z.ZodObject<{
607
+ model: z.ZodOptional<z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>>;
608
+ maxTurnsPerSprint: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
609
+ autoCommit: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
610
+ branchPattern: z.ZodOptional<z.ZodDefault<z.ZodString>>;
611
+ }, "strip", z.ZodTypeAny, {
612
+ model?: "sonnet" | "opus" | "haiku" | undefined;
613
+ maxTurnsPerSprint?: number | undefined;
614
+ autoCommit?: boolean | undefined;
615
+ branchPattern?: string | undefined;
616
+ }, {
617
+ model?: "sonnet" | "opus" | "haiku" | undefined;
618
+ maxTurnsPerSprint?: number | undefined;
619
+ autoCommit?: boolean | undefined;
620
+ branchPattern?: string | undefined;
621
+ }>>;
622
+ evaluator: z.ZodOptional<z.ZodObject<{
623
+ model: z.ZodOptional<z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>>;
624
+ strategies: z.ZodOptional<z.ZodArray<z.ZodObject<{
625
+ type: z.ZodOptional<z.ZodString>;
626
+ plugin: z.ZodOptional<z.ZodOptional<z.ZodString>>;
627
+ command: z.ZodOptional<z.ZodOptional<z.ZodString>>;
628
+ required: z.ZodOptional<z.ZodBoolean>;
629
+ config: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
630
+ label: z.ZodOptional<z.ZodOptional<z.ZodString>>;
631
+ }, "strip", z.ZodTypeAny, {
632
+ type?: string | undefined;
633
+ plugin?: string | undefined;
634
+ command?: string | undefined;
635
+ required?: boolean | undefined;
636
+ config?: Record<string, unknown> | undefined;
637
+ label?: string | undefined;
638
+ }, {
639
+ type?: string | undefined;
640
+ plugin?: string | undefined;
641
+ command?: string | undefined;
642
+ required?: boolean | undefined;
643
+ config?: Record<string, unknown> | undefined;
644
+ label?: string | undefined;
645
+ }>, "many">>;
646
+ maxIterations: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
647
+ plugins: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
648
+ }, "strip", z.ZodTypeAny, {
649
+ model?: "sonnet" | "opus" | "haiku" | undefined;
650
+ strategies?: {
651
+ type?: string | undefined;
652
+ plugin?: string | undefined;
653
+ command?: string | undefined;
654
+ required?: boolean | undefined;
655
+ config?: Record<string, unknown> | undefined;
656
+ label?: string | undefined;
657
+ }[] | undefined;
658
+ maxIterations?: number | undefined;
659
+ plugins?: string[] | undefined;
660
+ }, {
661
+ model?: "sonnet" | "opus" | "haiku" | undefined;
662
+ strategies?: {
663
+ type?: string | undefined;
664
+ plugin?: string | undefined;
665
+ command?: string | undefined;
666
+ required?: boolean | undefined;
667
+ config?: Record<string, unknown> | undefined;
668
+ label?: string | undefined;
669
+ }[] | undefined;
670
+ maxIterations?: number | undefined;
671
+ plugins?: string[] | undefined;
672
+ }>>;
673
+ sprint: z.ZodOptional<z.ZodObject<{
674
+ maxSprints: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
675
+ requireContracts: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
676
+ sprintSize: z.ZodOptional<z.ZodDefault<z.ZodEnum<["small", "medium", "large"]>>>;
677
+ }, "strip", z.ZodTypeAny, {
678
+ maxSprints?: number | undefined;
679
+ requireContracts?: boolean | undefined;
680
+ sprintSize?: "small" | "medium" | "large" | undefined;
681
+ }, {
682
+ maxSprints?: number | undefined;
683
+ requireContracts?: boolean | undefined;
684
+ sprintSize?: "small" | "medium" | "large" | undefined;
685
+ }>>;
686
+ pipeline: z.ZodOptional<z.ZodObject<{
687
+ maxIterations: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
688
+ requireApproval: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
689
+ contextReset: z.ZodOptional<z.ZodDefault<z.ZodEnum<["always", "on-threshold", "never"]>>>;
690
+ }, "strip", z.ZodTypeAny, {
691
+ maxIterations?: number | undefined;
692
+ requireApproval?: boolean | undefined;
693
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
694
+ }, {
695
+ maxIterations?: number | undefined;
696
+ requireApproval?: boolean | undefined;
697
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
698
+ }>>;
699
+ commands: z.ZodOptional<z.ZodObject<{
700
+ install: z.ZodOptional<z.ZodOptional<z.ZodString>>;
701
+ build: z.ZodOptional<z.ZodOptional<z.ZodString>>;
702
+ test: z.ZodOptional<z.ZodOptional<z.ZodString>>;
703
+ lint: z.ZodOptional<z.ZodOptional<z.ZodString>>;
704
+ dev: z.ZodOptional<z.ZodOptional<z.ZodString>>;
705
+ typecheck: z.ZodOptional<z.ZodOptional<z.ZodString>>;
706
+ }, "strip", z.ZodTypeAny, {
707
+ install?: string | undefined;
708
+ build?: string | undefined;
709
+ test?: string | undefined;
710
+ lint?: string | undefined;
711
+ dev?: string | undefined;
712
+ typecheck?: string | undefined;
713
+ }, {
714
+ install?: string | undefined;
715
+ build?: string | undefined;
716
+ test?: string | undefined;
717
+ lint?: string | undefined;
718
+ dev?: string | undefined;
719
+ typecheck?: string | undefined;
720
+ }>>;
721
+ } & {
722
+ project: z.ZodObject<{
723
+ name: z.ZodOptional<z.ZodString>;
724
+ mode: z.ZodEnum<["greenfield", "brownfield"]>;
725
+ preset: z.ZodOptional<z.ZodString>;
726
+ stack: z.ZodOptional<z.ZodObject<{
727
+ frontend: z.ZodOptional<z.ZodString>;
728
+ backend: z.ZodOptional<z.ZodString>;
729
+ blockchain: z.ZodOptional<z.ZodString>;
730
+ testing: z.ZodOptional<z.ZodString>;
731
+ database: z.ZodOptional<z.ZodString>;
732
+ language: z.ZodOptional<z.ZodString>;
733
+ other: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
734
+ }, "strip", z.ZodTypeAny, {
735
+ frontend?: string | undefined;
736
+ backend?: string | undefined;
737
+ blockchain?: string | undefined;
738
+ testing?: string | undefined;
739
+ database?: string | undefined;
740
+ language?: string | undefined;
741
+ other?: string[] | undefined;
742
+ }, {
743
+ frontend?: string | undefined;
744
+ backend?: string | undefined;
745
+ blockchain?: string | undefined;
746
+ testing?: string | undefined;
747
+ database?: string | undefined;
748
+ language?: string | undefined;
749
+ other?: string[] | undefined;
750
+ }>>;
751
+ description: z.ZodOptional<z.ZodString>;
752
+ }, "strip", z.ZodTypeAny, {
753
+ mode: "greenfield" | "brownfield";
754
+ name?: string | undefined;
755
+ preset?: string | undefined;
756
+ stack?: {
757
+ frontend?: string | undefined;
758
+ backend?: string | undefined;
759
+ blockchain?: string | undefined;
760
+ testing?: string | undefined;
761
+ database?: string | undefined;
762
+ language?: string | undefined;
763
+ other?: string[] | undefined;
764
+ } | undefined;
765
+ description?: string | undefined;
766
+ }, {
767
+ mode: "greenfield" | "brownfield";
768
+ name?: string | undefined;
769
+ preset?: string | undefined;
770
+ stack?: {
771
+ frontend?: string | undefined;
772
+ backend?: string | undefined;
773
+ blockchain?: string | undefined;
774
+ testing?: string | undefined;
775
+ database?: string | undefined;
776
+ language?: string | undefined;
777
+ other?: string[] | undefined;
778
+ } | undefined;
779
+ description?: string | undefined;
780
+ }>;
781
+ }, "strip", z.ZodTypeAny, {
782
+ project: {
783
+ mode: "greenfield" | "brownfield";
784
+ name?: string | undefined;
785
+ preset?: string | undefined;
786
+ stack?: {
787
+ frontend?: string | undefined;
788
+ backend?: string | undefined;
789
+ blockchain?: string | undefined;
790
+ testing?: string | undefined;
791
+ database?: string | undefined;
792
+ language?: string | undefined;
793
+ other?: string[] | undefined;
794
+ } | undefined;
795
+ description?: string | undefined;
796
+ };
797
+ planner?: {
798
+ maxClarifications?: number | undefined;
799
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
800
+ contextFiles?: string[] | undefined;
801
+ } | undefined;
802
+ generator?: {
803
+ model?: "sonnet" | "opus" | "haiku" | undefined;
804
+ maxTurnsPerSprint?: number | undefined;
805
+ autoCommit?: boolean | undefined;
806
+ branchPattern?: string | undefined;
807
+ } | undefined;
808
+ evaluator?: {
809
+ model?: "sonnet" | "opus" | "haiku" | undefined;
810
+ strategies?: {
811
+ type?: string | undefined;
812
+ plugin?: string | undefined;
813
+ command?: string | undefined;
814
+ required?: boolean | undefined;
815
+ config?: Record<string, unknown> | undefined;
816
+ label?: string | undefined;
817
+ }[] | undefined;
818
+ maxIterations?: number | undefined;
819
+ plugins?: string[] | undefined;
820
+ } | undefined;
821
+ sprint?: {
822
+ maxSprints?: number | undefined;
823
+ requireContracts?: boolean | undefined;
824
+ sprintSize?: "small" | "medium" | "large" | undefined;
825
+ } | undefined;
826
+ pipeline?: {
827
+ maxIterations?: number | undefined;
828
+ requireApproval?: boolean | undefined;
829
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
830
+ } | undefined;
831
+ commands?: {
832
+ install?: string | undefined;
833
+ build?: string | undefined;
834
+ test?: string | undefined;
835
+ lint?: string | undefined;
836
+ dev?: string | undefined;
837
+ typecheck?: string | undefined;
838
+ } | undefined;
839
+ }, {
840
+ project: {
841
+ mode: "greenfield" | "brownfield";
842
+ name?: string | undefined;
843
+ preset?: string | undefined;
844
+ stack?: {
845
+ frontend?: string | undefined;
846
+ backend?: string | undefined;
847
+ blockchain?: string | undefined;
848
+ testing?: string | undefined;
849
+ database?: string | undefined;
850
+ language?: string | undefined;
851
+ other?: string[] | undefined;
852
+ } | undefined;
853
+ description?: string | undefined;
854
+ };
855
+ planner?: {
856
+ maxClarifications?: number | undefined;
857
+ model?: "sonnet" | "opus" | "haiku" | "inherit" | undefined;
858
+ contextFiles?: string[] | undefined;
859
+ } | undefined;
860
+ generator?: {
861
+ model?: "sonnet" | "opus" | "haiku" | undefined;
862
+ maxTurnsPerSprint?: number | undefined;
863
+ autoCommit?: boolean | undefined;
864
+ branchPattern?: string | undefined;
865
+ } | undefined;
866
+ evaluator?: {
867
+ model?: "sonnet" | "opus" | "haiku" | undefined;
868
+ strategies?: {
869
+ type?: string | undefined;
870
+ plugin?: string | undefined;
871
+ command?: string | undefined;
872
+ required?: boolean | undefined;
873
+ config?: Record<string, unknown> | undefined;
874
+ label?: string | undefined;
875
+ }[] | undefined;
876
+ maxIterations?: number | undefined;
877
+ plugins?: string[] | undefined;
878
+ } | undefined;
879
+ sprint?: {
880
+ maxSprints?: number | undefined;
881
+ requireContracts?: boolean | undefined;
882
+ sprintSize?: "small" | "medium" | "large" | undefined;
883
+ } | undefined;
884
+ pipeline?: {
885
+ maxIterations?: number | undefined;
886
+ requireApproval?: boolean | undefined;
887
+ contextReset?: "never" | "always" | "on-threshold" | undefined;
888
+ } | undefined;
889
+ commands?: {
890
+ install?: string | undefined;
891
+ build?: string | undefined;
892
+ test?: string | undefined;
893
+ lint?: string | undefined;
894
+ dev?: string | undefined;
895
+ typecheck?: string | undefined;
896
+ } | undefined;
897
+ }>;
898
+ export type PartialBoberConfig = z.infer<typeof PartialBoberConfigSchema>;
899
+ /**
900
+ * Create a full default config for a given project mode and optional preset.
901
+ * Callers can override any section by passing a partial config.
902
+ */
903
+ export declare function createDefaultConfig(projectName: string, mode: ProjectMode, preset?: string, overrides?: Partial<Omit<BoberConfig, "project">>): BoberConfig;
904
+ //# sourceMappingURL=schema.d.ts.map