@iloom/cli 0.13.3 → 0.13.4
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.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/{BranchNamingService-MEK2WZUD.js → BranchNamingService-PBP6DY3H.js} +2 -2
- package/dist/{ClaudeContextManager-KJ4VEA2F.js → ClaudeContextManager-3HT4LEIU.js} +5 -5
- package/dist/{ClaudeService-WTJO4UW6.js → ClaudeService-7BHL2GWC.js} +4 -4
- package/dist/{IssueTrackerFactory-UEJALI4X.js → IssueTrackerFactory-JH34S4GX.js} +3 -3
- package/dist/{LoomLauncher-KG2VBNQA.js → LoomLauncher-RGXJOCMC.js} +8 -5
- package/dist/LoomLauncher-RGXJOCMC.js.map +1 -0
- package/dist/{MetadataManager-HHE6LQF2.js → MetadataManager-WKM7JJIO.js} +2 -2
- package/dist/README.md +1 -1
- package/dist/{SettingsManager-PVHBSCMI.js → SettingsManager-Y5OU5HCX.js} +4 -2
- package/dist/agents/CLAUDE.md +12 -7
- package/dist/agents/iloom-code-reviewer.md +2 -1
- package/dist/agents/iloom-framework-detector.md +56 -9
- package/dist/agents/iloom-issue-analyze-and-plan.md +1 -0
- package/dist/agents/iloom-issue-analyzer.md +1 -0
- package/dist/agents/iloom-issue-complexity-evaluator.md +1 -0
- package/dist/agents/iloom-issue-enhancer.md +2 -1
- package/dist/agents/iloom-issue-implementer.md +4 -1
- package/dist/agents/iloom-issue-planner.md +2 -1
- package/dist/agents/iloom-wave-verifier.md +1 -0
- package/dist/{build-2FXDYEZQ.js → build-NJJT6UHO.js} +7 -7
- package/dist/{chunk-VUIPDX3T.js → chunk-27CQSBUG.js} +2 -2
- package/dist/{chunk-YVNG35OW.js → chunk-2Z4VKQND.js} +2 -2
- package/dist/{chunk-UQWMPQ2Q.js → chunk-4QROZMPZ.js} +3 -3
- package/dist/{chunk-U2OPXZ6E.js → chunk-5NVJ6N3C.js} +7 -7
- package/dist/{chunk-2WRD6Y5E.js → chunk-5VP2HAWF.js} +2 -2
- package/dist/{chunk-CQHHEW2M.js → chunk-5WJN63T4.js} +1 -1
- package/dist/chunk-5WJN63T4.js.map +1 -0
- package/dist/{chunk-H4TSDALC.js → chunk-64K5SZXC.js} +6 -6
- package/dist/{chunk-5W44AI63.js → chunk-6FHFHMNF.js} +4 -4
- package/dist/{chunk-XC5JKRSH.js → chunk-6RKZDUTQ.js} +2 -2
- package/dist/{chunk-RP6MHV24.js → chunk-7VSOM25S.js} +20 -15
- package/dist/chunk-7VSOM25S.js.map +1 -0
- package/dist/{chunk-UMAOVKQX.js → chunk-CSJ7JNJV.js} +3 -3
- package/dist/{chunk-AQUSMNBF.js → chunk-CWRQ4NU4.js} +2 -2
- package/dist/{chunk-Z3ZEJN3W.js → chunk-EBPFEM5X.js} +13 -12
- package/dist/chunk-EBPFEM5X.js.map +1 -0
- package/dist/{chunk-OMV47LLA.js → chunk-FPM6XDEO.js} +2 -2
- package/dist/{chunk-DYLOITSO.js → chunk-HMMDNIKG.js} +38 -31
- package/dist/chunk-HMMDNIKG.js.map +1 -0
- package/dist/{chunk-XIVLGWUX.js → chunk-JDXJIPXR.js} +3 -1
- package/dist/chunk-JDXJIPXR.js.map +1 -0
- package/dist/{chunk-ZWXJ7G2C.js → chunk-JIMFSNZI.js} +2 -2
- package/dist/{chunk-D6FU4DLN.js → chunk-LULQYBRA.js} +2 -2
- package/dist/{chunk-DDHWZNGL.js → chunk-MB4CB7Q4.js} +6 -5
- package/dist/chunk-MB4CB7Q4.js.map +1 -0
- package/dist/{chunk-OHX3PSAY.js → chunk-MZPVETJH.js} +7 -15
- package/dist/chunk-MZPVETJH.js.map +1 -0
- package/dist/{chunk-OIJNBFMP.js → chunk-OSWL7YDO.js} +2 -2
- package/dist/{chunk-32D4CWWH.js → chunk-R2RGFNR4.js} +2 -2
- package/dist/{chunk-MPHSR6GA.js → chunk-R4Y2ZBOL.js} +5 -5
- package/dist/{chunk-L3P3YJCE.js → chunk-RLFS5KHU.js} +3 -3
- package/dist/{chunk-DMNI225H.js → chunk-SM2YM3YR.js} +4 -4
- package/dist/{chunk-MNPKEWBQ.js → chunk-UVZBZ5IF.js} +52 -1
- package/dist/chunk-UVZBZ5IF.js.map +1 -0
- package/dist/{chunk-Y2JHYPMX.js → chunk-VG7UFVF2.js} +47 -35
- package/dist/chunk-VG7UFVF2.js.map +1 -0
- package/dist/{chunk-OVW26FHW.js → chunk-VQ3Y3PVT.js} +2 -2
- package/dist/{chunk-PH65MFQM.js → chunk-Y2TPRF5H.js} +3 -3
- package/dist/{claude-ACL7G4CF.js → claude-IYLIOOP7.js} +2 -2
- package/dist/{cleanup-W5FP3UKK.js → cleanup-Q6PEKMVF.js} +18 -18
- package/dist/cli.js +79 -73
- package/dist/cli.js.map +1 -1
- package/dist/{commit-7RI2JFFW.js → commit-JKZQYNEB.js} +8 -8
- package/dist/{compile-NWTMKAGL.js → compile-QEMZDLKO.js} +7 -7
- package/dist/{contribute-QWPOT4QR.js → contribute-TCEOVFDN.js} +4 -4
- package/dist/{dev-server-U2XUN57X.js → dev-server-25BIZKTB.js} +9 -9
- package/dist/{feedback-M43SGGK2.js → feedback-CQ42GFZE.js} +6 -6
- package/dist/{git-ZTMT6OAI.js → git-HWDX2KWU.js} +4 -4
- package/dist/{ignite-GUYKYC5G.js → ignite-25QLX2FS.js} +13 -13
- package/dist/index.d.ts +1764 -1709
- package/dist/index.js +105 -8
- package/dist/index.js.map +1 -1
- package/dist/{init-AMLCFVXG.js → init-LRNRRFFU.js} +8 -8
- package/dist/{install-deps-XS2UUCUS.js → install-deps-DHFHT3KI.js} +7 -7
- package/dist/{issues-2IT7PSNZ.js → issues-W722ILMI.js} +5 -5
- package/dist/{lint-DKWJHET3.js → lint-TZDEPVKN.js} +7 -7
- package/dist/mcp/issue-management-server.js +39 -0
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/mcp/recap-server.js +2 -2
- package/dist/mcp/recap-server.js.map +1 -1
- package/dist/{open-XIUV5JMJ.js → open-BCQSZYAD.js} +9 -9
- package/dist/{plan-UPYDB34J.js → plan-2LUGSOYG.js} +28 -26
- package/dist/plan-2LUGSOYG.js.map +1 -0
- package/dist/{projects-3F6T3KZL.js → projects-INTNTWRM.js} +2 -2
- package/dist/prompts/init-prompt.txt +72 -4
- package/dist/prompts/issue-prompt.txt +6 -3
- package/dist/prompts/pr-prompt.txt +3 -2
- package/dist/prompts/regular-prompt.txt +3 -2
- package/dist/prompts/session-summary-prompt.txt +2 -1
- package/dist/prompts/swarm-orchestrator-prompt.txt +2 -2
- package/dist/{rebase-6AXN45AE.js → rebase-ZKZKKQKB.js} +7 -7
- package/dist/{recap-XDKI3MTA.js → recap-XXLLMETY.js} +7 -7
- package/dist/{run-VOGGJGPO.js → run-5P5ULYZY.js} +9 -9
- package/dist/schema/settings.schema.json +50 -0
- package/dist/{shell-XOILFEZW.js → shell-GNDHII2J.js} +6 -6
- package/dist/{summary-BVYOM63C.js → summary-TVLBZNKY.js} +10 -10
- package/dist/{test-6T2UMQ7T.js → test-T5K7FOKQ.js} +7 -7
- package/dist/{test-git-CQ65OL45.js → test-git-AQ3ZQ4RA.js} +4 -4
- package/dist/{test-jira-CQQHGZ3S.js → test-jira-7XQ63U2C.js} +3 -3
- package/dist/{test-prefix-HMTZSS67.js → test-prefix-OTY2HBSB.js} +4 -4
- package/dist/{test-webserver-ZN73CM2T.js → test-webserver-CPQMUCDD.js} +6 -6
- package/dist/{vscode-ABQ5ZSH7.js → vscode-M4KRTKZK.js} +6 -6
- package/package.json +1 -1
- package/dist/LoomLauncher-KG2VBNQA.js.map +0 -1
- package/dist/chunk-CQHHEW2M.js.map +0 -1
- package/dist/chunk-DDHWZNGL.js.map +0 -1
- package/dist/chunk-DYLOITSO.js.map +0 -1
- package/dist/chunk-MNPKEWBQ.js.map +0 -1
- package/dist/chunk-OHX3PSAY.js.map +0 -1
- package/dist/chunk-RP6MHV24.js.map +0 -1
- package/dist/chunk-XIVLGWUX.js.map +0 -1
- package/dist/chunk-Y2JHYPMX.js.map +0 -1
- package/dist/chunk-Z3ZEJN3W.js.map +0 -1
- package/dist/plan-UPYDB34J.js.map +0 -1
- /package/dist/{BranchNamingService-MEK2WZUD.js.map → BranchNamingService-PBP6DY3H.js.map} +0 -0
- /package/dist/{ClaudeContextManager-KJ4VEA2F.js.map → ClaudeContextManager-3HT4LEIU.js.map} +0 -0
- /package/dist/{ClaudeService-WTJO4UW6.js.map → ClaudeService-7BHL2GWC.js.map} +0 -0
- /package/dist/{IssueTrackerFactory-UEJALI4X.js.map → IssueTrackerFactory-JH34S4GX.js.map} +0 -0
- /package/dist/{MetadataManager-HHE6LQF2.js.map → MetadataManager-WKM7JJIO.js.map} +0 -0
- /package/dist/{SettingsManager-PVHBSCMI.js.map → SettingsManager-Y5OU5HCX.js.map} +0 -0
- /package/dist/{build-2FXDYEZQ.js.map → build-NJJT6UHO.js.map} +0 -0
- /package/dist/{chunk-VUIPDX3T.js.map → chunk-27CQSBUG.js.map} +0 -0
- /package/dist/{chunk-YVNG35OW.js.map → chunk-2Z4VKQND.js.map} +0 -0
- /package/dist/{chunk-UQWMPQ2Q.js.map → chunk-4QROZMPZ.js.map} +0 -0
- /package/dist/{chunk-U2OPXZ6E.js.map → chunk-5NVJ6N3C.js.map} +0 -0
- /package/dist/{chunk-2WRD6Y5E.js.map → chunk-5VP2HAWF.js.map} +0 -0
- /package/dist/{chunk-H4TSDALC.js.map → chunk-64K5SZXC.js.map} +0 -0
- /package/dist/{chunk-5W44AI63.js.map → chunk-6FHFHMNF.js.map} +0 -0
- /package/dist/{chunk-XC5JKRSH.js.map → chunk-6RKZDUTQ.js.map} +0 -0
- /package/dist/{chunk-UMAOVKQX.js.map → chunk-CSJ7JNJV.js.map} +0 -0
- /package/dist/{chunk-AQUSMNBF.js.map → chunk-CWRQ4NU4.js.map} +0 -0
- /package/dist/{chunk-OMV47LLA.js.map → chunk-FPM6XDEO.js.map} +0 -0
- /package/dist/{chunk-ZWXJ7G2C.js.map → chunk-JIMFSNZI.js.map} +0 -0
- /package/dist/{chunk-D6FU4DLN.js.map → chunk-LULQYBRA.js.map} +0 -0
- /package/dist/{chunk-OIJNBFMP.js.map → chunk-OSWL7YDO.js.map} +0 -0
- /package/dist/{chunk-32D4CWWH.js.map → chunk-R2RGFNR4.js.map} +0 -0
- /package/dist/{chunk-MPHSR6GA.js.map → chunk-R4Y2ZBOL.js.map} +0 -0
- /package/dist/{chunk-L3P3YJCE.js.map → chunk-RLFS5KHU.js.map} +0 -0
- /package/dist/{chunk-DMNI225H.js.map → chunk-SM2YM3YR.js.map} +0 -0
- /package/dist/{chunk-OVW26FHW.js.map → chunk-VQ3Y3PVT.js.map} +0 -0
- /package/dist/{chunk-PH65MFQM.js.map → chunk-Y2TPRF5H.js.map} +0 -0
- /package/dist/{claude-ACL7G4CF.js.map → claude-IYLIOOP7.js.map} +0 -0
- /package/dist/{cleanup-W5FP3UKK.js.map → cleanup-Q6PEKMVF.js.map} +0 -0
- /package/dist/{commit-7RI2JFFW.js.map → commit-JKZQYNEB.js.map} +0 -0
- /package/dist/{compile-NWTMKAGL.js.map → compile-QEMZDLKO.js.map} +0 -0
- /package/dist/{contribute-QWPOT4QR.js.map → contribute-TCEOVFDN.js.map} +0 -0
- /package/dist/{dev-server-U2XUN57X.js.map → dev-server-25BIZKTB.js.map} +0 -0
- /package/dist/{feedback-M43SGGK2.js.map → feedback-CQ42GFZE.js.map} +0 -0
- /package/dist/{git-ZTMT6OAI.js.map → git-HWDX2KWU.js.map} +0 -0
- /package/dist/{ignite-GUYKYC5G.js.map → ignite-25QLX2FS.js.map} +0 -0
- /package/dist/{init-AMLCFVXG.js.map → init-LRNRRFFU.js.map} +0 -0
- /package/dist/{install-deps-XS2UUCUS.js.map → install-deps-DHFHT3KI.js.map} +0 -0
- /package/dist/{issues-2IT7PSNZ.js.map → issues-W722ILMI.js.map} +0 -0
- /package/dist/{lint-DKWJHET3.js.map → lint-TZDEPVKN.js.map} +0 -0
- /package/dist/{open-XIUV5JMJ.js.map → open-BCQSZYAD.js.map} +0 -0
- /package/dist/{projects-3F6T3KZL.js.map → projects-INTNTWRM.js.map} +0 -0
- /package/dist/{rebase-6AXN45AE.js.map → rebase-ZKZKKQKB.js.map} +0 -0
- /package/dist/{recap-XDKI3MTA.js.map → recap-XXLLMETY.js.map} +0 -0
- /package/dist/{run-VOGGJGPO.js.map → run-5P5ULYZY.js.map} +0 -0
- /package/dist/{shell-XOILFEZW.js.map → shell-GNDHII2J.js.map} +0 -0
- /package/dist/{summary-BVYOM63C.js.map → summary-TVLBZNKY.js.map} +0 -0
- /package/dist/{test-6T2UMQ7T.js.map → test-T5K7FOKQ.js.map} +0 -0
- /package/dist/{test-git-CQ65OL45.js.map → test-git-AQ3ZQ4RA.js.map} +0 -0
- /package/dist/{test-jira-CQQHGZ3S.js.map → test-jira-7XQ63U2C.js.map} +0 -0
- /package/dist/{test-prefix-HMTZSS67.js.map → test-prefix-OTY2HBSB.js.map} +0 -0
- /package/dist/{test-webserver-ZN73CM2T.js.map → test-webserver-CPQMUCDD.js.map} +0 -0
- /package/dist/{vscode-ABQ5ZSH7.js.map → vscode-M4KRTKZK.js.map} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -123,1767 +123,1819 @@ interface WorktreeCleanupOptions {
|
|
|
123
123
|
dryRun?: boolean;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
declare const VALID_CLAUDE_MODELS: readonly ["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"];
|
|
127
|
-
type ClaudeModel = (typeof VALID_CLAUDE_MODELS)[number];
|
|
128
126
|
/**
|
|
129
|
-
*
|
|
127
|
+
* Options for ResourceCleanup operations
|
|
130
128
|
*/
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
startTerminal: boolean;
|
|
219
|
-
generateSummary: boolean;
|
|
220
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
221
|
-
noVerify?: boolean | undefined;
|
|
222
|
-
} | undefined;
|
|
223
|
-
pr?: {
|
|
224
|
-
startIde: boolean;
|
|
225
|
-
startDevServer: boolean;
|
|
226
|
-
startAiAgent: boolean;
|
|
227
|
-
startTerminal: boolean;
|
|
228
|
-
generateSummary: boolean;
|
|
229
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
230
|
-
noVerify?: boolean | undefined;
|
|
231
|
-
} | undefined;
|
|
232
|
-
regular?: {
|
|
233
|
-
startIde: boolean;
|
|
234
|
-
startDevServer: boolean;
|
|
235
|
-
startAiAgent: boolean;
|
|
236
|
-
startTerminal: boolean;
|
|
237
|
-
generateSummary: boolean;
|
|
238
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
239
|
-
noVerify?: boolean | undefined;
|
|
240
|
-
} | undefined;
|
|
241
|
-
}, {
|
|
242
|
-
issue?: {
|
|
243
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
244
|
-
noVerify?: boolean | undefined;
|
|
245
|
-
startIde?: boolean | undefined;
|
|
246
|
-
startDevServer?: boolean | undefined;
|
|
247
|
-
startAiAgent?: boolean | undefined;
|
|
248
|
-
startTerminal?: boolean | undefined;
|
|
249
|
-
generateSummary?: boolean | undefined;
|
|
250
|
-
} | undefined;
|
|
251
|
-
pr?: {
|
|
252
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
253
|
-
noVerify?: boolean | undefined;
|
|
254
|
-
startIde?: boolean | undefined;
|
|
255
|
-
startDevServer?: boolean | undefined;
|
|
256
|
-
startAiAgent?: boolean | undefined;
|
|
257
|
-
startTerminal?: boolean | undefined;
|
|
258
|
-
generateSummary?: boolean | undefined;
|
|
259
|
-
} | undefined;
|
|
260
|
-
regular?: {
|
|
261
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
262
|
-
noVerify?: boolean | undefined;
|
|
263
|
-
startIde?: boolean | undefined;
|
|
264
|
-
startDevServer?: boolean | undefined;
|
|
265
|
-
startAiAgent?: boolean | undefined;
|
|
266
|
-
startTerminal?: boolean | undefined;
|
|
267
|
-
generateSummary?: boolean | undefined;
|
|
268
|
-
} | undefined;
|
|
269
|
-
}>>;
|
|
270
|
-
agents: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
271
|
-
model: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
272
|
-
swarmModel: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
273
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
274
|
-
providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["claude", "gemini", "codex"]>, z.ZodString>>;
|
|
275
|
-
review: z.ZodOptional<z.ZodBoolean>;
|
|
276
|
-
swarmReview: z.ZodOptional<z.ZodBoolean>;
|
|
277
|
-
}, "strip", z.ZodTypeAny, {
|
|
278
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
279
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
280
|
-
enabled?: boolean | undefined;
|
|
281
|
-
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
282
|
-
review?: boolean | undefined;
|
|
283
|
-
swarmReview?: boolean | undefined;
|
|
284
|
-
}, {
|
|
285
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
286
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
287
|
-
enabled?: boolean | undefined;
|
|
288
|
-
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
289
|
-
review?: boolean | undefined;
|
|
290
|
-
swarmReview?: boolean | undefined;
|
|
291
|
-
}>>>>;
|
|
292
|
-
spin: z.ZodOptional<z.ZodObject<{
|
|
293
|
-
model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
294
|
-
swarmModel: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
295
|
-
postSwarmReview: z.ZodDefault<z.ZodBoolean>;
|
|
296
|
-
}, "strip", z.ZodTypeAny, {
|
|
297
|
-
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
298
|
-
postSwarmReview: boolean;
|
|
299
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
300
|
-
}, {
|
|
301
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
302
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
303
|
-
postSwarmReview?: boolean | undefined;
|
|
304
|
-
}>>;
|
|
305
|
-
plan: z.ZodOptional<z.ZodObject<{
|
|
306
|
-
model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
307
|
-
planner: z.ZodDefault<z.ZodEnum<["claude", "gemini", "codex"]>>;
|
|
308
|
-
reviewer: z.ZodDefault<z.ZodEnum<["claude", "gemini", "codex", "none"]>>;
|
|
309
|
-
waveVerification: z.ZodDefault<z.ZodBoolean>;
|
|
310
|
-
}, "strip", z.ZodTypeAny, {
|
|
311
|
-
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
312
|
-
planner: "claude" | "gemini" | "codex";
|
|
313
|
-
reviewer: "claude" | "gemini" | "codex" | "none";
|
|
314
|
-
waveVerification: boolean;
|
|
315
|
-
}, {
|
|
316
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
317
|
-
planner?: "claude" | "gemini" | "codex" | undefined;
|
|
318
|
-
reviewer?: "claude" | "gemini" | "codex" | "none" | undefined;
|
|
319
|
-
waveVerification?: boolean | undefined;
|
|
320
|
-
}>>;
|
|
321
|
-
summary: z.ZodOptional<z.ZodObject<{
|
|
322
|
-
model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
323
|
-
}, "strip", z.ZodTypeAny, {
|
|
324
|
-
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
325
|
-
}, {
|
|
326
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
327
|
-
}>>;
|
|
328
|
-
capabilities: z.ZodOptional<z.ZodObject<{
|
|
329
|
-
web: z.ZodOptional<z.ZodObject<{
|
|
330
|
-
basePort: z.ZodOptional<z.ZodNumber>;
|
|
331
|
-
protocol: z.ZodDefault<z.ZodEnum<["http", "https"]>>;
|
|
332
|
-
devServer: z.ZodDefault<z.ZodEnum<["process", "docker"]>>;
|
|
333
|
-
dockerFile: z.ZodDefault<z.ZodString>;
|
|
334
|
-
containerPort: z.ZodOptional<z.ZodNumber>;
|
|
335
|
-
dockerBuildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
336
|
-
dockerBuildSecrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
337
|
-
dockerRunArgs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
338
|
-
dockerRunEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
339
|
-
}, "strip", z.ZodTypeAny, {
|
|
340
|
-
protocol: "http" | "https";
|
|
341
|
-
devServer: "docker" | "process";
|
|
342
|
-
dockerFile: string;
|
|
343
|
-
basePort?: number | undefined;
|
|
344
|
-
containerPort?: number | undefined;
|
|
345
|
-
dockerBuildArgs?: Record<string, string> | undefined;
|
|
346
|
-
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
347
|
-
dockerRunArgs?: string[] | undefined;
|
|
348
|
-
dockerRunEnv?: Record<string, string> | undefined;
|
|
349
|
-
}, {
|
|
350
|
-
basePort?: number | undefined;
|
|
351
|
-
protocol?: "http" | "https" | undefined;
|
|
352
|
-
devServer?: "docker" | "process" | undefined;
|
|
353
|
-
dockerFile?: string | undefined;
|
|
354
|
-
containerPort?: number | undefined;
|
|
355
|
-
dockerBuildArgs?: Record<string, string> | undefined;
|
|
356
|
-
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
357
|
-
dockerRunArgs?: string[] | undefined;
|
|
358
|
-
dockerRunEnv?: Record<string, string> | undefined;
|
|
359
|
-
}>>;
|
|
360
|
-
database: z.ZodOptional<z.ZodObject<{
|
|
361
|
-
databaseUrlEnvVarName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
362
|
-
}, "strip", z.ZodTypeAny, {
|
|
363
|
-
databaseUrlEnvVarName: string;
|
|
364
|
-
}, {
|
|
365
|
-
databaseUrlEnvVarName?: string | undefined;
|
|
366
|
-
}>>;
|
|
367
|
-
}, "strip", z.ZodTypeAny, {
|
|
368
|
-
web?: {
|
|
369
|
-
protocol: "http" | "https";
|
|
370
|
-
devServer: "docker" | "process";
|
|
371
|
-
dockerFile: string;
|
|
372
|
-
basePort?: number | undefined;
|
|
373
|
-
containerPort?: number | undefined;
|
|
374
|
-
dockerBuildArgs?: Record<string, string> | undefined;
|
|
375
|
-
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
376
|
-
dockerRunArgs?: string[] | undefined;
|
|
377
|
-
dockerRunEnv?: Record<string, string> | undefined;
|
|
378
|
-
} | undefined;
|
|
379
|
-
database?: {
|
|
380
|
-
databaseUrlEnvVarName: string;
|
|
381
|
-
} | undefined;
|
|
382
|
-
}, {
|
|
383
|
-
web?: {
|
|
384
|
-
basePort?: number | undefined;
|
|
385
|
-
protocol?: "http" | "https" | undefined;
|
|
386
|
-
devServer?: "docker" | "process" | undefined;
|
|
387
|
-
dockerFile?: string | undefined;
|
|
388
|
-
containerPort?: number | undefined;
|
|
389
|
-
dockerBuildArgs?: Record<string, string> | undefined;
|
|
390
|
-
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
391
|
-
dockerRunArgs?: string[] | undefined;
|
|
392
|
-
dockerRunEnv?: Record<string, string> | undefined;
|
|
393
|
-
} | undefined;
|
|
394
|
-
database?: {
|
|
395
|
-
databaseUrlEnvVarName?: string | undefined;
|
|
396
|
-
} | undefined;
|
|
397
|
-
}>>;
|
|
398
|
-
devServer: z.ZodOptional<z.ZodObject<{
|
|
399
|
-
mode: z.ZodDefault<z.ZodEnum<["docker"]>>;
|
|
400
|
-
docker: z.ZodOptional<z.ZodObject<{
|
|
401
|
-
dockerFile: z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>;
|
|
402
|
-
containerPort: z.ZodOptional<z.ZodNumber>;
|
|
403
|
-
buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
404
|
-
runArgs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
405
|
-
runEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
406
|
-
}, "strip", z.ZodTypeAny, {
|
|
407
|
-
dockerFile: string;
|
|
408
|
-
containerPort?: number | undefined;
|
|
409
|
-
buildArgs?: Record<string, string> | undefined;
|
|
410
|
-
runArgs?: string[] | undefined;
|
|
411
|
-
runEnv?: Record<string, string> | undefined;
|
|
412
|
-
}, {
|
|
413
|
-
dockerFile?: string | undefined;
|
|
414
|
-
containerPort?: number | undefined;
|
|
415
|
-
buildArgs?: Record<string, string> | undefined;
|
|
416
|
-
runArgs?: string[] | undefined;
|
|
417
|
-
runEnv?: Record<string, string> | undefined;
|
|
418
|
-
}>>;
|
|
419
|
-
}, "strip", z.ZodTypeAny, {
|
|
420
|
-
mode: "docker";
|
|
421
|
-
docker?: {
|
|
422
|
-
dockerFile: string;
|
|
423
|
-
containerPort?: number | undefined;
|
|
424
|
-
buildArgs?: Record<string, string> | undefined;
|
|
425
|
-
runArgs?: string[] | undefined;
|
|
426
|
-
runEnv?: Record<string, string> | undefined;
|
|
427
|
-
} | undefined;
|
|
428
|
-
}, {
|
|
429
|
-
docker?: {
|
|
430
|
-
dockerFile?: string | undefined;
|
|
431
|
-
containerPort?: number | undefined;
|
|
432
|
-
buildArgs?: Record<string, string> | undefined;
|
|
433
|
-
runArgs?: string[] | undefined;
|
|
434
|
-
runEnv?: Record<string, string> | undefined;
|
|
435
|
-
} | undefined;
|
|
436
|
-
mode?: "docker" | undefined;
|
|
437
|
-
}>>;
|
|
438
|
-
databaseProviders: z.ZodOptional<z.ZodObject<{
|
|
439
|
-
neon: z.ZodOptional<z.ZodObject<{
|
|
440
|
-
projectId: z.ZodString;
|
|
441
|
-
parentBranch: z.ZodString;
|
|
442
|
-
}, "strip", z.ZodTypeAny, {
|
|
443
|
-
projectId: string;
|
|
444
|
-
parentBranch: string;
|
|
445
|
-
}, {
|
|
446
|
-
projectId: string;
|
|
447
|
-
parentBranch: string;
|
|
448
|
-
}>>;
|
|
449
|
-
}, "strip", z.ZodTypeAny, {
|
|
450
|
-
neon?: {
|
|
451
|
-
projectId: string;
|
|
452
|
-
parentBranch: string;
|
|
453
|
-
} | undefined;
|
|
454
|
-
}, {
|
|
455
|
-
neon?: {
|
|
456
|
-
projectId: string;
|
|
457
|
-
parentBranch: string;
|
|
458
|
-
} | undefined;
|
|
459
|
-
}>>;
|
|
460
|
-
issueManagement: z.ZodOptional<z.ZodObject<{
|
|
461
|
-
provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["github", "linear", "jira"]>>>;
|
|
462
|
-
github: z.ZodOptional<z.ZodObject<{
|
|
463
|
-
remote: z.ZodString;
|
|
464
|
-
}, "strip", z.ZodTypeAny, {
|
|
465
|
-
remote: string;
|
|
466
|
-
}, {
|
|
467
|
-
remote: string;
|
|
468
|
-
}>>;
|
|
469
|
-
linear: z.ZodOptional<z.ZodObject<{
|
|
470
|
-
teamId: z.ZodString;
|
|
471
|
-
branchFormat: z.ZodOptional<z.ZodString>;
|
|
472
|
-
apiToken: z.ZodOptional<z.ZodString>;
|
|
473
|
-
}, "strip", z.ZodTypeAny, {
|
|
474
|
-
teamId: string;
|
|
475
|
-
branchFormat?: string | undefined;
|
|
476
|
-
apiToken?: string | undefined;
|
|
477
|
-
}, {
|
|
478
|
-
teamId: string;
|
|
479
|
-
branchFormat?: string | undefined;
|
|
480
|
-
apiToken?: string | undefined;
|
|
481
|
-
}>>;
|
|
482
|
-
jira: z.ZodOptional<z.ZodObject<{
|
|
483
|
-
host: z.ZodString;
|
|
484
|
-
username: z.ZodString;
|
|
485
|
-
apiToken: z.ZodOptional<z.ZodString>;
|
|
486
|
-
projectKey: z.ZodString;
|
|
487
|
-
boardId: z.ZodOptional<z.ZodString>;
|
|
488
|
-
transitionMappings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
489
|
-
defaultIssueType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
490
|
-
defaultSubtaskType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
491
|
-
doneStatuses: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
492
|
-
}, "strip", z.ZodTypeAny, {
|
|
493
|
-
host: string;
|
|
494
|
-
username: string;
|
|
495
|
-
projectKey: string;
|
|
496
|
-
defaultIssueType: string;
|
|
497
|
-
defaultSubtaskType: string;
|
|
498
|
-
doneStatuses: string[];
|
|
499
|
-
apiToken?: string | undefined;
|
|
500
|
-
boardId?: string | undefined;
|
|
501
|
-
transitionMappings?: Record<string, string> | undefined;
|
|
502
|
-
}, {
|
|
503
|
-
host: string;
|
|
504
|
-
username: string;
|
|
505
|
-
projectKey: string;
|
|
506
|
-
apiToken?: string | undefined;
|
|
507
|
-
boardId?: string | undefined;
|
|
508
|
-
transitionMappings?: Record<string, string> | undefined;
|
|
509
|
-
defaultIssueType?: string | undefined;
|
|
510
|
-
defaultSubtaskType?: string | undefined;
|
|
511
|
-
doneStatuses?: string[] | undefined;
|
|
512
|
-
}>>;
|
|
513
|
-
}, "strip", z.ZodTypeAny, {
|
|
514
|
-
provider: "github" | "linear" | "jira";
|
|
515
|
-
github?: {
|
|
516
|
-
remote: string;
|
|
517
|
-
} | undefined;
|
|
518
|
-
linear?: {
|
|
519
|
-
teamId: string;
|
|
520
|
-
branchFormat?: string | undefined;
|
|
521
|
-
apiToken?: string | undefined;
|
|
522
|
-
} | undefined;
|
|
523
|
-
jira?: {
|
|
524
|
-
host: string;
|
|
525
|
-
username: string;
|
|
526
|
-
projectKey: string;
|
|
527
|
-
defaultIssueType: string;
|
|
528
|
-
defaultSubtaskType: string;
|
|
529
|
-
doneStatuses: string[];
|
|
530
|
-
apiToken?: string | undefined;
|
|
531
|
-
boardId?: string | undefined;
|
|
532
|
-
transitionMappings?: Record<string, string> | undefined;
|
|
533
|
-
} | undefined;
|
|
534
|
-
}, {
|
|
535
|
-
github?: {
|
|
536
|
-
remote: string;
|
|
537
|
-
} | undefined;
|
|
538
|
-
linear?: {
|
|
539
|
-
teamId: string;
|
|
540
|
-
branchFormat?: string | undefined;
|
|
541
|
-
apiToken?: string | undefined;
|
|
542
|
-
} | undefined;
|
|
543
|
-
jira?: {
|
|
544
|
-
host: string;
|
|
545
|
-
username: string;
|
|
546
|
-
projectKey: string;
|
|
547
|
-
apiToken?: string | undefined;
|
|
548
|
-
boardId?: string | undefined;
|
|
549
|
-
transitionMappings?: Record<string, string> | undefined;
|
|
550
|
-
defaultIssueType?: string | undefined;
|
|
551
|
-
defaultSubtaskType?: string | undefined;
|
|
552
|
-
doneStatuses?: string[] | undefined;
|
|
553
|
-
} | undefined;
|
|
554
|
-
provider?: "github" | "linear" | "jira" | undefined;
|
|
555
|
-
}>>;
|
|
556
|
-
versionControl: z.ZodOptional<z.ZodObject<{
|
|
557
|
-
provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["github", "bitbucket"]>>>;
|
|
558
|
-
bitbucket: z.ZodOptional<z.ZodObject<{
|
|
559
|
-
username: z.ZodString;
|
|
560
|
-
apiToken: z.ZodOptional<z.ZodString>;
|
|
561
|
-
workspace: z.ZodOptional<z.ZodString>;
|
|
562
|
-
repoSlug: z.ZodOptional<z.ZodString>;
|
|
563
|
-
reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
564
|
-
}, "strip", z.ZodTypeAny, {
|
|
565
|
-
username: string;
|
|
566
|
-
apiToken?: string | undefined;
|
|
567
|
-
workspace?: string | undefined;
|
|
568
|
-
repoSlug?: string | undefined;
|
|
569
|
-
reviewers?: string[] | undefined;
|
|
570
|
-
}, {
|
|
571
|
-
username: string;
|
|
572
|
-
apiToken?: string | undefined;
|
|
573
|
-
workspace?: string | undefined;
|
|
574
|
-
repoSlug?: string | undefined;
|
|
575
|
-
reviewers?: string[] | undefined;
|
|
576
|
-
}>>;
|
|
577
|
-
}, "strip", z.ZodTypeAny, {
|
|
578
|
-
provider: "github" | "bitbucket";
|
|
579
|
-
bitbucket?: {
|
|
580
|
-
username: string;
|
|
581
|
-
apiToken?: string | undefined;
|
|
582
|
-
workspace?: string | undefined;
|
|
583
|
-
repoSlug?: string | undefined;
|
|
584
|
-
reviewers?: string[] | undefined;
|
|
585
|
-
} | undefined;
|
|
586
|
-
}, {
|
|
587
|
-
provider?: "github" | "bitbucket" | undefined;
|
|
588
|
-
bitbucket?: {
|
|
589
|
-
username: string;
|
|
590
|
-
apiToken?: string | undefined;
|
|
591
|
-
workspace?: string | undefined;
|
|
592
|
-
repoSlug?: string | undefined;
|
|
593
|
-
reviewers?: string[] | undefined;
|
|
594
|
-
} | undefined;
|
|
595
|
-
}>>;
|
|
596
|
-
mergeBehavior: z.ZodOptional<z.ZodObject<{
|
|
597
|
-
mode: z.ZodEffects<z.ZodDefault<z.ZodEnum<["local", "pr", "draft-pr", "github-pr", "github-draft-pr", "bitbucket-pr"]>>, "pr" | "local" | "draft-pr", "pr" | "local" | "draft-pr" | "github-pr" | "github-draft-pr" | "bitbucket-pr" | undefined>;
|
|
598
|
-
remote: z.ZodOptional<z.ZodString>;
|
|
599
|
-
autoCommitPush: z.ZodOptional<z.ZodBoolean>;
|
|
600
|
-
prTitlePrefix: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
601
|
-
openBrowserOnFinish: z.ZodDefault<z.ZodBoolean>;
|
|
602
|
-
}, "strip", z.ZodTypeAny, {
|
|
603
|
-
mode: "pr" | "local" | "draft-pr";
|
|
604
|
-
openBrowserOnFinish: boolean;
|
|
605
|
-
remote?: string | undefined;
|
|
606
|
-
autoCommitPush?: boolean | undefined;
|
|
607
|
-
prTitlePrefix?: boolean | undefined;
|
|
608
|
-
}, {
|
|
609
|
-
mode?: "pr" | "local" | "draft-pr" | "github-pr" | "github-draft-pr" | "bitbucket-pr" | undefined;
|
|
610
|
-
remote?: string | undefined;
|
|
611
|
-
autoCommitPush?: boolean | undefined;
|
|
612
|
-
prTitlePrefix?: boolean | undefined;
|
|
613
|
-
openBrowserOnFinish?: boolean | undefined;
|
|
614
|
-
}>>;
|
|
615
|
-
ide: z.ZodOptional<z.ZodObject<{
|
|
616
|
-
type: z.ZodDefault<z.ZodEnum<["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]>>;
|
|
617
|
-
}, "strip", z.ZodTypeAny, {
|
|
618
|
-
type: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity";
|
|
619
|
-
}, {
|
|
620
|
-
type?: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity" | undefined;
|
|
621
|
-
}>>;
|
|
622
|
-
colors: z.ZodOptional<z.ZodObject<{
|
|
623
|
-
terminal: z.ZodDefault<z.ZodBoolean>;
|
|
624
|
-
vscode: z.ZodDefault<z.ZodBoolean>;
|
|
625
|
-
}, "strip", z.ZodTypeAny, {
|
|
626
|
-
terminal: boolean;
|
|
627
|
-
vscode: boolean;
|
|
628
|
-
}, {
|
|
629
|
-
terminal?: boolean | undefined;
|
|
630
|
-
vscode?: boolean | undefined;
|
|
631
|
-
}>>;
|
|
632
|
-
attribution: z.ZodDefault<z.ZodEnum<["off", "upstreamOnly", "on"]>>;
|
|
633
|
-
git: z.ZodDefault<z.ZodObject<{
|
|
634
|
-
commitTimeout: z.ZodDefault<z.ZodNumber>;
|
|
635
|
-
}, "strip", z.ZodTypeAny, {
|
|
636
|
-
commitTimeout: number;
|
|
637
|
-
}, {
|
|
638
|
-
commitTimeout?: number | undefined;
|
|
639
|
-
}>>;
|
|
640
|
-
}, "strip", z.ZodTypeAny, {
|
|
641
|
-
sourceEnvOnStart: boolean;
|
|
642
|
-
attribution: "off" | "upstreamOnly" | "on";
|
|
643
|
-
git: {
|
|
644
|
-
commitTimeout: number;
|
|
645
|
-
};
|
|
646
|
-
plan?: {
|
|
647
|
-
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
648
|
-
planner: "claude" | "gemini" | "codex";
|
|
649
|
-
reviewer: "claude" | "gemini" | "codex" | "none";
|
|
650
|
-
waveVerification: boolean;
|
|
651
|
-
} | undefined;
|
|
652
|
-
spin?: {
|
|
653
|
-
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
654
|
-
postSwarmReview: boolean;
|
|
655
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
656
|
-
} | undefined;
|
|
657
|
-
devServer?: {
|
|
658
|
-
mode: "docker";
|
|
659
|
-
docker?: {
|
|
660
|
-
dockerFile: string;
|
|
661
|
-
containerPort?: number | undefined;
|
|
662
|
-
buildArgs?: Record<string, string> | undefined;
|
|
663
|
-
runArgs?: string[] | undefined;
|
|
664
|
-
runEnv?: Record<string, string> | undefined;
|
|
665
|
-
} | undefined;
|
|
666
|
-
} | undefined;
|
|
667
|
-
mainBranch?: string | undefined;
|
|
668
|
-
worktreePrefix?: string | undefined;
|
|
669
|
-
protectedBranches?: string[] | undefined;
|
|
670
|
-
copyGitIgnoredPatterns?: string[] | undefined;
|
|
671
|
-
workflows?: {
|
|
672
|
-
issue?: {
|
|
673
|
-
startIde: boolean;
|
|
674
|
-
startDevServer: boolean;
|
|
675
|
-
startAiAgent: boolean;
|
|
676
|
-
startTerminal: boolean;
|
|
677
|
-
generateSummary: boolean;
|
|
678
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
679
|
-
noVerify?: boolean | undefined;
|
|
680
|
-
} | undefined;
|
|
681
|
-
pr?: {
|
|
682
|
-
startIde: boolean;
|
|
683
|
-
startDevServer: boolean;
|
|
684
|
-
startAiAgent: boolean;
|
|
685
|
-
startTerminal: boolean;
|
|
686
|
-
generateSummary: boolean;
|
|
687
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
688
|
-
noVerify?: boolean | undefined;
|
|
689
|
-
} | undefined;
|
|
690
|
-
regular?: {
|
|
691
|
-
startIde: boolean;
|
|
692
|
-
startDevServer: boolean;
|
|
693
|
-
startAiAgent: boolean;
|
|
694
|
-
startTerminal: boolean;
|
|
695
|
-
generateSummary: boolean;
|
|
696
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
697
|
-
noVerify?: boolean | undefined;
|
|
698
|
-
} | undefined;
|
|
699
|
-
} | undefined;
|
|
700
|
-
agents?: Record<string, {
|
|
701
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
702
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
703
|
-
enabled?: boolean | undefined;
|
|
704
|
-
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
705
|
-
review?: boolean | undefined;
|
|
706
|
-
swarmReview?: boolean | undefined;
|
|
707
|
-
}> | null | undefined;
|
|
708
|
-
summary?: {
|
|
709
|
-
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
710
|
-
} | undefined;
|
|
711
|
-
capabilities?: {
|
|
712
|
-
web?: {
|
|
713
|
-
protocol: "http" | "https";
|
|
714
|
-
devServer: "docker" | "process";
|
|
715
|
-
dockerFile: string;
|
|
716
|
-
basePort?: number | undefined;
|
|
717
|
-
containerPort?: number | undefined;
|
|
718
|
-
dockerBuildArgs?: Record<string, string> | undefined;
|
|
719
|
-
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
720
|
-
dockerRunArgs?: string[] | undefined;
|
|
721
|
-
dockerRunEnv?: Record<string, string> | undefined;
|
|
722
|
-
} | undefined;
|
|
723
|
-
database?: {
|
|
724
|
-
databaseUrlEnvVarName: string;
|
|
725
|
-
} | undefined;
|
|
726
|
-
} | undefined;
|
|
727
|
-
databaseProviders?: {
|
|
728
|
-
neon?: {
|
|
729
|
-
projectId: string;
|
|
730
|
-
parentBranch: string;
|
|
731
|
-
} | undefined;
|
|
732
|
-
} | undefined;
|
|
733
|
-
issueManagement?: {
|
|
734
|
-
provider: "github" | "linear" | "jira";
|
|
735
|
-
github?: {
|
|
736
|
-
remote: string;
|
|
737
|
-
} | undefined;
|
|
738
|
-
linear?: {
|
|
739
|
-
teamId: string;
|
|
740
|
-
branchFormat?: string | undefined;
|
|
741
|
-
apiToken?: string | undefined;
|
|
742
|
-
} | undefined;
|
|
743
|
-
jira?: {
|
|
744
|
-
host: string;
|
|
745
|
-
username: string;
|
|
746
|
-
projectKey: string;
|
|
747
|
-
defaultIssueType: string;
|
|
748
|
-
defaultSubtaskType: string;
|
|
749
|
-
doneStatuses: string[];
|
|
750
|
-
apiToken?: string | undefined;
|
|
751
|
-
boardId?: string | undefined;
|
|
752
|
-
transitionMappings?: Record<string, string> | undefined;
|
|
753
|
-
} | undefined;
|
|
754
|
-
} | undefined;
|
|
755
|
-
versionControl?: {
|
|
756
|
-
provider: "github" | "bitbucket";
|
|
757
|
-
bitbucket?: {
|
|
758
|
-
username: string;
|
|
759
|
-
apiToken?: string | undefined;
|
|
760
|
-
workspace?: string | undefined;
|
|
761
|
-
repoSlug?: string | undefined;
|
|
762
|
-
reviewers?: string[] | undefined;
|
|
763
|
-
} | undefined;
|
|
764
|
-
} | undefined;
|
|
765
|
-
mergeBehavior?: {
|
|
766
|
-
mode: "pr" | "local" | "draft-pr";
|
|
767
|
-
openBrowserOnFinish: boolean;
|
|
768
|
-
remote?: string | undefined;
|
|
769
|
-
autoCommitPush?: boolean | undefined;
|
|
770
|
-
prTitlePrefix?: boolean | undefined;
|
|
771
|
-
} | undefined;
|
|
772
|
-
ide?: {
|
|
773
|
-
type: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity";
|
|
774
|
-
} | undefined;
|
|
775
|
-
colors?: {
|
|
776
|
-
terminal: boolean;
|
|
777
|
-
vscode: boolean;
|
|
778
|
-
} | undefined;
|
|
779
|
-
}, {
|
|
780
|
-
plan?: {
|
|
781
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
782
|
-
planner?: "claude" | "gemini" | "codex" | undefined;
|
|
783
|
-
reviewer?: "claude" | "gemini" | "codex" | "none" | undefined;
|
|
784
|
-
waveVerification?: boolean | undefined;
|
|
785
|
-
} | undefined;
|
|
786
|
-
spin?: {
|
|
787
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
788
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
789
|
-
postSwarmReview?: boolean | undefined;
|
|
790
|
-
} | undefined;
|
|
791
|
-
devServer?: {
|
|
792
|
-
docker?: {
|
|
793
|
-
dockerFile?: string | undefined;
|
|
794
|
-
containerPort?: number | undefined;
|
|
795
|
-
buildArgs?: Record<string, string> | undefined;
|
|
796
|
-
runArgs?: string[] | undefined;
|
|
797
|
-
runEnv?: Record<string, string> | undefined;
|
|
798
|
-
} | undefined;
|
|
799
|
-
mode?: "docker" | undefined;
|
|
800
|
-
} | undefined;
|
|
801
|
-
mainBranch?: string | undefined;
|
|
802
|
-
sourceEnvOnStart?: boolean | undefined;
|
|
803
|
-
worktreePrefix?: string | undefined;
|
|
804
|
-
protectedBranches?: string[] | undefined;
|
|
805
|
-
copyGitIgnoredPatterns?: string[] | undefined;
|
|
806
|
-
workflows?: {
|
|
807
|
-
issue?: {
|
|
808
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
809
|
-
noVerify?: boolean | undefined;
|
|
810
|
-
startIde?: boolean | undefined;
|
|
811
|
-
startDevServer?: boolean | undefined;
|
|
812
|
-
startAiAgent?: boolean | undefined;
|
|
813
|
-
startTerminal?: boolean | undefined;
|
|
814
|
-
generateSummary?: boolean | undefined;
|
|
815
|
-
} | undefined;
|
|
816
|
-
pr?: {
|
|
817
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
818
|
-
noVerify?: boolean | undefined;
|
|
819
|
-
startIde?: boolean | undefined;
|
|
820
|
-
startDevServer?: boolean | undefined;
|
|
821
|
-
startAiAgent?: boolean | undefined;
|
|
822
|
-
startTerminal?: boolean | undefined;
|
|
823
|
-
generateSummary?: boolean | undefined;
|
|
824
|
-
} | undefined;
|
|
825
|
-
regular?: {
|
|
826
|
-
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
827
|
-
noVerify?: boolean | undefined;
|
|
828
|
-
startIde?: boolean | undefined;
|
|
829
|
-
startDevServer?: boolean | undefined;
|
|
830
|
-
startAiAgent?: boolean | undefined;
|
|
831
|
-
startTerminal?: boolean | undefined;
|
|
832
|
-
generateSummary?: boolean | undefined;
|
|
833
|
-
} | undefined;
|
|
834
|
-
} | undefined;
|
|
835
|
-
agents?: Record<string, {
|
|
836
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
837
|
-
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
838
|
-
enabled?: boolean | undefined;
|
|
839
|
-
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
840
|
-
review?: boolean | undefined;
|
|
841
|
-
swarmReview?: boolean | undefined;
|
|
842
|
-
}> | null | undefined;
|
|
843
|
-
summary?: {
|
|
844
|
-
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
845
|
-
} | undefined;
|
|
846
|
-
capabilities?: {
|
|
847
|
-
web?: {
|
|
848
|
-
basePort?: number | undefined;
|
|
849
|
-
protocol?: "http" | "https" | undefined;
|
|
850
|
-
devServer?: "docker" | "process" | undefined;
|
|
851
|
-
dockerFile?: string | undefined;
|
|
852
|
-
containerPort?: number | undefined;
|
|
853
|
-
dockerBuildArgs?: Record<string, string> | undefined;
|
|
854
|
-
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
855
|
-
dockerRunArgs?: string[] | undefined;
|
|
856
|
-
dockerRunEnv?: Record<string, string> | undefined;
|
|
857
|
-
} | undefined;
|
|
858
|
-
database?: {
|
|
859
|
-
databaseUrlEnvVarName?: string | undefined;
|
|
860
|
-
} | undefined;
|
|
861
|
-
} | undefined;
|
|
862
|
-
databaseProviders?: {
|
|
863
|
-
neon?: {
|
|
864
|
-
projectId: string;
|
|
865
|
-
parentBranch: string;
|
|
866
|
-
} | undefined;
|
|
867
|
-
} | undefined;
|
|
868
|
-
issueManagement?: {
|
|
869
|
-
github?: {
|
|
870
|
-
remote: string;
|
|
871
|
-
} | undefined;
|
|
872
|
-
linear?: {
|
|
873
|
-
teamId: string;
|
|
874
|
-
branchFormat?: string | undefined;
|
|
875
|
-
apiToken?: string | undefined;
|
|
876
|
-
} | undefined;
|
|
877
|
-
jira?: {
|
|
878
|
-
host: string;
|
|
879
|
-
username: string;
|
|
880
|
-
projectKey: string;
|
|
881
|
-
apiToken?: string | undefined;
|
|
882
|
-
boardId?: string | undefined;
|
|
883
|
-
transitionMappings?: Record<string, string> | undefined;
|
|
884
|
-
defaultIssueType?: string | undefined;
|
|
885
|
-
defaultSubtaskType?: string | undefined;
|
|
886
|
-
doneStatuses?: string[] | undefined;
|
|
887
|
-
} | undefined;
|
|
888
|
-
provider?: "github" | "linear" | "jira" | undefined;
|
|
889
|
-
} | undefined;
|
|
890
|
-
versionControl?: {
|
|
891
|
-
provider?: "github" | "bitbucket" | undefined;
|
|
892
|
-
bitbucket?: {
|
|
893
|
-
username: string;
|
|
894
|
-
apiToken?: string | undefined;
|
|
895
|
-
workspace?: string | undefined;
|
|
896
|
-
repoSlug?: string | undefined;
|
|
897
|
-
reviewers?: string[] | undefined;
|
|
898
|
-
} | undefined;
|
|
899
|
-
} | undefined;
|
|
900
|
-
mergeBehavior?: {
|
|
901
|
-
mode?: "pr" | "local" | "draft-pr" | "github-pr" | "github-draft-pr" | "bitbucket-pr" | undefined;
|
|
902
|
-
remote?: string | undefined;
|
|
903
|
-
autoCommitPush?: boolean | undefined;
|
|
904
|
-
prTitlePrefix?: boolean | undefined;
|
|
905
|
-
openBrowserOnFinish?: boolean | undefined;
|
|
906
|
-
} | undefined;
|
|
907
|
-
ide?: {
|
|
908
|
-
type?: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity" | undefined;
|
|
909
|
-
} | undefined;
|
|
910
|
-
colors?: {
|
|
911
|
-
terminal?: boolean | undefined;
|
|
912
|
-
vscode?: boolean | undefined;
|
|
913
|
-
} | undefined;
|
|
914
|
-
attribution?: "off" | "upstreamOnly" | "on" | undefined;
|
|
915
|
-
git?: {
|
|
916
|
-
commitTimeout?: number | undefined;
|
|
917
|
-
} | undefined;
|
|
918
|
-
}>;
|
|
129
|
+
interface ResourceCleanupOptions {
|
|
130
|
+
/** Preview operations without executing */
|
|
131
|
+
dryRun?: boolean;
|
|
132
|
+
/** Skip confirmations and safety checks */
|
|
133
|
+
force?: boolean;
|
|
134
|
+
/** Delete the associated branch */
|
|
135
|
+
deleteBranch?: boolean;
|
|
136
|
+
/** Keep database branch instead of deleting */
|
|
137
|
+
keepDatabase?: boolean;
|
|
138
|
+
/** Prompt for confirmation before operations */
|
|
139
|
+
interactive?: boolean;
|
|
140
|
+
/** Check if branch is merged before allowing cleanup (defaults to true when deleteBranch is true) */
|
|
141
|
+
checkMergeSafety?: boolean;
|
|
142
|
+
/** Check if branch exists on remote before allowing cleanup (useful for GitHub-PR mode) */
|
|
143
|
+
checkRemoteBranch?: boolean;
|
|
144
|
+
/** Pre-resolved worktree to clean up (skips the search step) */
|
|
145
|
+
worktree?: {
|
|
146
|
+
path: string;
|
|
147
|
+
branch: string;
|
|
148
|
+
};
|
|
149
|
+
/** Archive metadata instead of deleting (preserves loom in il list --finished) */
|
|
150
|
+
archive?: boolean;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Result of a cleanup operation
|
|
154
|
+
*/
|
|
155
|
+
interface CleanupResult {
|
|
156
|
+
/** Identifier that was cleaned up */
|
|
157
|
+
identifier: string;
|
|
158
|
+
/** Actual branch name that was found (will differ from identifier) */
|
|
159
|
+
branchName?: string;
|
|
160
|
+
/** Overall success status */
|
|
161
|
+
success: boolean;
|
|
162
|
+
/** Whether this was a dry-run operation */
|
|
163
|
+
dryRun?: boolean;
|
|
164
|
+
/** Individual operation results */
|
|
165
|
+
operations: OperationResult[];
|
|
166
|
+
/** Errors encountered during cleanup */
|
|
167
|
+
errors: Error[];
|
|
168
|
+
/** Whether rollback is required */
|
|
169
|
+
rollbackRequired?: boolean;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Result of an individual cleanup operation
|
|
173
|
+
*/
|
|
174
|
+
interface OperationResult {
|
|
175
|
+
/** Type of operation performed */
|
|
176
|
+
type: 'dev-server' | 'worktree' | 'branch' | 'database' | 'cli-symlinks' | 'recap' | 'metadata' | 'trust';
|
|
177
|
+
/** Whether operation succeeded */
|
|
178
|
+
success: boolean;
|
|
179
|
+
/** Human-readable message */
|
|
180
|
+
message: string;
|
|
181
|
+
/** Error message if operation failed */
|
|
182
|
+
error?: string;
|
|
183
|
+
/** For database operations: whether branch was actually deleted (vs not found) */
|
|
184
|
+
deleted?: boolean;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Safety check result
|
|
188
|
+
*/
|
|
189
|
+
interface SafetyCheck {
|
|
190
|
+
/** Whether cleanup is safe to proceed */
|
|
191
|
+
isSafe: boolean;
|
|
192
|
+
/** Non-blocking warnings */
|
|
193
|
+
warnings: string[];
|
|
194
|
+
/** Blocking issues that prevent cleanup */
|
|
195
|
+
blockers: string[];
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Options for branch deletion
|
|
199
|
+
*/
|
|
200
|
+
interface BranchDeleteOptions {
|
|
201
|
+
/** Force delete unmerged branch */
|
|
202
|
+
force?: boolean;
|
|
203
|
+
/** Also delete remote branch */
|
|
204
|
+
remote?: boolean;
|
|
205
|
+
/** Preview without executing */
|
|
206
|
+
dryRun?: boolean;
|
|
207
|
+
/** Path to the worktree being cleaned up (for merge target resolution) - DEPRECATED: use mergeTargetBranch instead */
|
|
208
|
+
worktreePath?: string;
|
|
209
|
+
/** Pre-fetched merge target branch (parent branch for child looms, main branch for others).
|
|
210
|
+
* This must be fetched BEFORE worktree deletion since metadata won't be readable after deletion. */
|
|
211
|
+
mergeTargetBranch?: string;
|
|
212
|
+
/** Safety check has verified no data loss risk. When true, allows force delete
|
|
213
|
+
* if git branch -d fails with "not fully merged" since safety is already confirmed. */
|
|
214
|
+
safetyVerified?: boolean;
|
|
215
|
+
}
|
|
919
216
|
/**
|
|
920
|
-
*
|
|
217
|
+
* Target for batch cleanup - represents a branch that may or may not have a worktree
|
|
921
218
|
*/
|
|
922
|
-
|
|
219
|
+
interface BranchCleanupTarget {
|
|
220
|
+
/** Branch name */
|
|
221
|
+
branchName: string;
|
|
222
|
+
/** Whether this branch has an associated worktree */
|
|
223
|
+
hasWorktree: boolean;
|
|
224
|
+
/** Path to worktree if it exists */
|
|
225
|
+
worktreePath?: string;
|
|
226
|
+
}
|
|
923
227
|
/**
|
|
924
|
-
*
|
|
228
|
+
* Result of batch cleanup operation for an issue
|
|
925
229
|
*/
|
|
926
|
-
|
|
927
|
-
/**
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
/**
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
230
|
+
interface BatchCleanupResult {
|
|
231
|
+
/** Issue number that was cleaned up */
|
|
232
|
+
issueNumber: string | number;
|
|
233
|
+
/** Number of branches found matching the issue */
|
|
234
|
+
targetsFound: number;
|
|
235
|
+
/** Number of worktrees successfully removed */
|
|
236
|
+
worktreesRemoved: number;
|
|
237
|
+
/** Number of branches successfully deleted */
|
|
238
|
+
branchesDeleted: number;
|
|
239
|
+
/** Number of failed operations */
|
|
240
|
+
failed: number;
|
|
241
|
+
/** Individual cleanup results for each branch */
|
|
242
|
+
results: CleanupResult[];
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Strategy interface for generating branch names from issue information
|
|
247
|
+
*/
|
|
248
|
+
interface BranchNameStrategy {
|
|
249
|
+
generate(issueNumber: string | number, title: string): Promise<string>;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Options for branch name generation
|
|
253
|
+
* Supports both simple generation and custom strategy override
|
|
254
|
+
*/
|
|
255
|
+
interface BranchGenerationOptions {
|
|
256
|
+
issueNumber: string | number;
|
|
257
|
+
title: string;
|
|
258
|
+
strategy?: BranchNameStrategy;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
interface EnvVariable {
|
|
262
|
+
key: string;
|
|
263
|
+
value: string;
|
|
264
|
+
}
|
|
265
|
+
interface EnvFileOptions {
|
|
266
|
+
path: string;
|
|
267
|
+
backup?: boolean;
|
|
268
|
+
encoding?: BufferEncoding;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* @deprecated Use exception-based error handling instead
|
|
272
|
+
*/
|
|
273
|
+
interface EnvOperationResult {
|
|
274
|
+
success: boolean;
|
|
275
|
+
backupPath?: string;
|
|
276
|
+
error?: string;
|
|
277
|
+
}
|
|
278
|
+
interface PortAssignmentOptions {
|
|
279
|
+
basePort?: number;
|
|
280
|
+
issueNumber?: string | number;
|
|
281
|
+
prNumber?: number;
|
|
282
|
+
branchName?: string;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
type ProjectCapability = 'cli' | 'web';
|
|
286
|
+
type Capability = ProjectCapability;
|
|
287
|
+
interface Loom {
|
|
288
|
+
id: string;
|
|
289
|
+
path: string;
|
|
290
|
+
branch: string;
|
|
291
|
+
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
292
|
+
identifier: string | number;
|
|
293
|
+
port: number;
|
|
294
|
+
databaseBranch?: string;
|
|
295
|
+
description?: string;
|
|
296
|
+
createdAt: Date;
|
|
297
|
+
lastAccessed: Date;
|
|
298
|
+
issueData?: {
|
|
299
|
+
title?: string;
|
|
300
|
+
body?: string;
|
|
301
|
+
url?: string;
|
|
302
|
+
state?: string;
|
|
303
|
+
};
|
|
304
|
+
capabilities?: ProjectCapability[];
|
|
305
|
+
binEntries?: Record<string, string>;
|
|
306
|
+
cliSymlinks?: string[];
|
|
307
|
+
}
|
|
308
|
+
interface CreateLoomInput {
|
|
309
|
+
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
310
|
+
identifier: string | number;
|
|
311
|
+
originalInput: string;
|
|
312
|
+
baseBranch?: string;
|
|
313
|
+
parentLoom?: {
|
|
314
|
+
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
315
|
+
identifier: string | number;
|
|
316
|
+
branchName: string;
|
|
317
|
+
worktreePath: string;
|
|
318
|
+
databaseBranch?: string;
|
|
319
|
+
};
|
|
320
|
+
options?: {
|
|
321
|
+
skipDatabase?: boolean;
|
|
322
|
+
colorTerminal?: boolean;
|
|
323
|
+
colorVscode?: boolean;
|
|
324
|
+
enableClaude?: boolean;
|
|
325
|
+
enableCode?: boolean;
|
|
326
|
+
enableDevServer?: boolean;
|
|
327
|
+
enableTerminal?: boolean;
|
|
328
|
+
oneShot?: OneShotMode;
|
|
329
|
+
dangerouslySkipPermissions?: boolean;
|
|
330
|
+
complexity?: ComplexityOverride;
|
|
331
|
+
effort?: EffortLevel;
|
|
332
|
+
setArguments?: string[];
|
|
333
|
+
executablePath?: string;
|
|
334
|
+
sourceEnvOnStart?: boolean;
|
|
335
|
+
childIssueNumbers?: string[];
|
|
336
|
+
childIssues?: Array<{
|
|
337
|
+
number: string;
|
|
338
|
+
title: string;
|
|
339
|
+
body: string;
|
|
340
|
+
url: string;
|
|
341
|
+
}>;
|
|
342
|
+
dependencyMap?: Record<string, string[]>;
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
type LaunchMode = 'editor' | 'terminal' | 'both';
|
|
346
|
+
interface LoomSummary {
|
|
347
|
+
id: string;
|
|
348
|
+
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
349
|
+
identifier: string | number;
|
|
350
|
+
title?: string;
|
|
351
|
+
branch: string;
|
|
352
|
+
port: number;
|
|
353
|
+
status: 'active' | 'stale' | 'error';
|
|
354
|
+
lastAccessed: string;
|
|
1040
355
|
}
|
|
1041
356
|
|
|
1042
357
|
/**
|
|
1043
|
-
*
|
|
1044
|
-
* Ports functionality from bash scripts into TypeScript
|
|
358
|
+
* Information about a running process
|
|
1045
359
|
*/
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
/**
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
/**
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
*/
|
|
1157
|
-
findWorktreeForPR(prNumber: number, branchName: string): Promise<GitWorktree | null>;
|
|
360
|
+
interface ProcessInfo {
|
|
361
|
+
/** Process ID */
|
|
362
|
+
pid: number;
|
|
363
|
+
/** Process name (e.g., "node", "pnpm") */
|
|
364
|
+
name: string;
|
|
365
|
+
/** Full command line */
|
|
366
|
+
command: string;
|
|
367
|
+
/** Port the process is listening on */
|
|
368
|
+
port: number;
|
|
369
|
+
/** Whether this appears to be a dev server */
|
|
370
|
+
isDevServer: boolean;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
interface TelemetryConfig {
|
|
374
|
+
enabled: boolean;
|
|
375
|
+
disclosed_at?: string;
|
|
376
|
+
last_version?: string;
|
|
377
|
+
}
|
|
378
|
+
interface CliInstalledProperties {
|
|
379
|
+
version: string;
|
|
380
|
+
os: string;
|
|
381
|
+
node_version: string;
|
|
382
|
+
}
|
|
383
|
+
interface CliUpgradedProperties {
|
|
384
|
+
version: string;
|
|
385
|
+
previous_version: string;
|
|
386
|
+
os: string;
|
|
387
|
+
}
|
|
388
|
+
interface LoomCreatedProperties {
|
|
389
|
+
source_type: 'issue' | 'pr' | 'branch' | 'freeform';
|
|
390
|
+
tracker: string;
|
|
391
|
+
is_child_loom: boolean;
|
|
392
|
+
one_shot_mode: 'default' | 'skip-reviews' | 'yolo';
|
|
393
|
+
complexity_override: boolean;
|
|
394
|
+
create_only: boolean;
|
|
395
|
+
}
|
|
396
|
+
interface LoomFinishedProperties {
|
|
397
|
+
merge_behavior: 'local' | 'pr' | 'draft-pr';
|
|
398
|
+
duration_minutes: number;
|
|
399
|
+
}
|
|
400
|
+
interface LoomAbandonedProperties {
|
|
401
|
+
duration_minutes: number;
|
|
402
|
+
phase_reached: string;
|
|
403
|
+
}
|
|
404
|
+
interface EpicPlannedProperties {
|
|
405
|
+
child_count: number;
|
|
406
|
+
tracker: string;
|
|
407
|
+
}
|
|
408
|
+
interface SwarmStartedProperties {
|
|
409
|
+
child_count: number;
|
|
410
|
+
tracker: string;
|
|
411
|
+
}
|
|
412
|
+
interface SwarmChildCompletedProperties {
|
|
413
|
+
success: boolean;
|
|
414
|
+
duration_minutes: number;
|
|
415
|
+
}
|
|
416
|
+
interface SwarmCompletedProperties {
|
|
417
|
+
total_children: number;
|
|
418
|
+
succeeded: number;
|
|
419
|
+
failed: number;
|
|
420
|
+
duration_minutes: number;
|
|
421
|
+
}
|
|
422
|
+
interface DemoStartedProperties {
|
|
423
|
+
path: string;
|
|
424
|
+
}
|
|
425
|
+
interface DemoCompletedProperties {
|
|
426
|
+
path: string;
|
|
427
|
+
converted_to_real_project: boolean;
|
|
428
|
+
}
|
|
429
|
+
interface ContributeStartedProperties {
|
|
430
|
+
tracker: string;
|
|
431
|
+
}
|
|
432
|
+
interface SessionStartedProperties {
|
|
433
|
+
has_neon: boolean;
|
|
434
|
+
language: string;
|
|
435
|
+
effort?: EffortLevel;
|
|
436
|
+
}
|
|
437
|
+
interface ErrorOccurredProperties {
|
|
438
|
+
error_type: string;
|
|
439
|
+
command: string;
|
|
440
|
+
phase: string;
|
|
441
|
+
}
|
|
442
|
+
interface InitStartedProperties {
|
|
443
|
+
mode: 'accept-defaults' | 'guided' | 'guided-custom-prompt';
|
|
444
|
+
}
|
|
445
|
+
interface InitCompletedProperties {
|
|
446
|
+
mode: 'accept-defaults' | 'guided' | 'guided-custom-prompt';
|
|
447
|
+
}
|
|
448
|
+
interface AutoSwarmStartedProperties {
|
|
449
|
+
source: 'decomposition' | 'fresh';
|
|
450
|
+
planner: string;
|
|
451
|
+
}
|
|
452
|
+
interface AutoSwarmCompletedProperties {
|
|
453
|
+
source: 'decomposition' | 'fresh';
|
|
454
|
+
success: boolean;
|
|
455
|
+
child_count: number;
|
|
456
|
+
duration_minutes: number;
|
|
457
|
+
phase_reached: 'plan' | 'start' | 'spin';
|
|
458
|
+
fallback_to_normal: boolean;
|
|
459
|
+
}
|
|
460
|
+
interface EpicReportGeneratedProperties {
|
|
461
|
+
total_children: number;
|
|
462
|
+
succeeded: number;
|
|
463
|
+
failed: number;
|
|
464
|
+
}
|
|
465
|
+
interface DevServerStartedEvent {
|
|
466
|
+
/** Execution mode for the dev server */
|
|
467
|
+
mode: 'docker' | 'process';
|
|
468
|
+
/** Whether the dev server started successfully */
|
|
469
|
+
success: boolean;
|
|
1158
470
|
/**
|
|
1159
|
-
*
|
|
1160
|
-
*
|
|
1161
|
-
* Automatically filters out the main worktree
|
|
1162
|
-
*
|
|
1163
|
-
* @param worktrees - Array of worktrees to remove
|
|
1164
|
-
* @param settingsManager - SettingsManager instance for determining main worktree
|
|
1165
|
-
* @param options - Cleanup options
|
|
471
|
+
* Time in milliseconds to build the Docker image.
|
|
472
|
+
* Only present when mode is 'docker'.
|
|
1166
473
|
*/
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
}>;
|
|
1171
|
-
failures: Array<{
|
|
1172
|
-
worktree: GitWorktree;
|
|
1173
|
-
error: string;
|
|
1174
|
-
}>;
|
|
1175
|
-
skipped: Array<{
|
|
1176
|
-
worktree: GitWorktree;
|
|
1177
|
-
reason: string;
|
|
1178
|
-
}>;
|
|
1179
|
-
}>;
|
|
474
|
+
buildDurationMs?: number;
|
|
475
|
+
/** Time in milliseconds from start to the server being ready */
|
|
476
|
+
startDurationMs: number;
|
|
1180
477
|
/**
|
|
1181
|
-
*
|
|
478
|
+
* Number of BuildKit secrets mounted during docker build.
|
|
479
|
+
* Only present when mode is 'docker' and secrets are configured.
|
|
480
|
+
* Tracks feature adoption without exposing secret IDs or paths.
|
|
1182
481
|
*/
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
482
|
+
docker_build_secrets_count?: number;
|
|
483
|
+
}
|
|
484
|
+
interface DevServerStoppedEvent {
|
|
485
|
+
/** Execution mode for the dev server */
|
|
486
|
+
mode: 'docker' | 'process';
|
|
487
|
+
/** Reason the dev server stopped */
|
|
488
|
+
reason: 'user' | 'cleanup' | 'error';
|
|
489
|
+
}
|
|
490
|
+
interface TelemetryEventMap {
|
|
491
|
+
'cli.installed': CliInstalledProperties;
|
|
492
|
+
'cli.upgraded': CliUpgradedProperties;
|
|
493
|
+
'loom.created': LoomCreatedProperties;
|
|
494
|
+
'loom.finished': LoomFinishedProperties;
|
|
495
|
+
'loom.abandoned': LoomAbandonedProperties;
|
|
496
|
+
'epic.planned': EpicPlannedProperties;
|
|
497
|
+
'swarm.started': SwarmStartedProperties;
|
|
498
|
+
'swarm.child_completed': SwarmChildCompletedProperties;
|
|
499
|
+
'swarm.completed': SwarmCompletedProperties;
|
|
500
|
+
'demo.started': DemoStartedProperties;
|
|
501
|
+
'demo.completed': DemoCompletedProperties;
|
|
502
|
+
'contribute.started': ContributeStartedProperties;
|
|
503
|
+
'session.started': SessionStartedProperties;
|
|
504
|
+
'error.occurred': ErrorOccurredProperties;
|
|
505
|
+
'init.started': InitStartedProperties;
|
|
506
|
+
'init.completed': InitCompletedProperties;
|
|
507
|
+
'auto_swarm.started': AutoSwarmStartedProperties;
|
|
508
|
+
'auto_swarm.completed': AutoSwarmCompletedProperties;
|
|
509
|
+
'epic.report_generated': EpicReportGeneratedProperties;
|
|
510
|
+
'devServer.started': DevServerStartedEvent;
|
|
511
|
+
'devServer.stopped': DevServerStoppedEvent;
|
|
512
|
+
}
|
|
513
|
+
type TelemetryEventName = keyof TelemetryEventMap;
|
|
514
|
+
|
|
515
|
+
interface Workspace {
|
|
516
|
+
id: string;
|
|
517
|
+
path: string;
|
|
518
|
+
branch: string;
|
|
519
|
+
issueNumber?: string | number;
|
|
520
|
+
prNumber?: number;
|
|
521
|
+
port: number;
|
|
522
|
+
databaseBranch?: string;
|
|
523
|
+
createdAt: Date;
|
|
524
|
+
lastAccessed: Date;
|
|
525
|
+
}
|
|
526
|
+
interface WorkspaceInput {
|
|
527
|
+
identifier: string;
|
|
528
|
+
type: 'issue' | 'pr' | 'branch';
|
|
529
|
+
skipClaude?: boolean;
|
|
530
|
+
}
|
|
531
|
+
interface WorkspaceSummary {
|
|
532
|
+
id: string;
|
|
533
|
+
issueNumber?: string | number;
|
|
534
|
+
prNumber?: number;
|
|
535
|
+
title: string;
|
|
536
|
+
branch: string;
|
|
537
|
+
port: number;
|
|
538
|
+
status: 'active' | 'stale' | 'error';
|
|
539
|
+
lastAccessed: string;
|
|
540
|
+
}
|
|
541
|
+
interface Worktree {
|
|
542
|
+
path: string;
|
|
543
|
+
branch: string;
|
|
544
|
+
commit: string;
|
|
545
|
+
isPR: boolean;
|
|
546
|
+
prNumber?: number;
|
|
547
|
+
issueNumber?: string | number;
|
|
548
|
+
port?: number;
|
|
549
|
+
}
|
|
550
|
+
interface GitStatus {
|
|
551
|
+
hasUncommittedChanges: boolean;
|
|
552
|
+
unstagedFiles: string[];
|
|
553
|
+
stagedFiles: string[];
|
|
554
|
+
currentBranch: string;
|
|
555
|
+
isAheadOfRemote: boolean;
|
|
556
|
+
isBehindRemote: boolean;
|
|
557
|
+
}
|
|
558
|
+
interface Issue {
|
|
559
|
+
number: string | number;
|
|
560
|
+
title: string;
|
|
561
|
+
body: string;
|
|
562
|
+
state: 'open' | 'closed';
|
|
563
|
+
labels: string[];
|
|
564
|
+
assignees: string[];
|
|
565
|
+
url: string;
|
|
566
|
+
}
|
|
567
|
+
interface PullRequest {
|
|
568
|
+
number: number;
|
|
569
|
+
title: string;
|
|
570
|
+
body: string;
|
|
571
|
+
state: 'open' | 'closed' | 'merged';
|
|
572
|
+
branch: string;
|
|
573
|
+
baseBranch: string;
|
|
574
|
+
url: string;
|
|
575
|
+
isDraft: boolean;
|
|
576
|
+
isFork?: boolean;
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Generic input detection result for issue trackers
|
|
580
|
+
* String-based identifier to support non-numeric IDs (e.g., Linear "ENG-123")
|
|
581
|
+
*/
|
|
582
|
+
interface IssueTrackerInputDetection {
|
|
583
|
+
type: 'issue' | 'pr' | 'unknown';
|
|
584
|
+
identifier: string | null;
|
|
585
|
+
rawInput: string;
|
|
1188
586
|
}
|
|
1189
587
|
|
|
1190
588
|
/**
|
|
1191
|
-
*
|
|
589
|
+
* Result of database branch deletion operation
|
|
590
|
+
* Distinguishes between successful deletion, branch not found, and errors
|
|
1192
591
|
*/
|
|
1193
|
-
interface
|
|
1194
|
-
/**
|
|
592
|
+
interface DatabaseDeletionResult {
|
|
593
|
+
/** Overall operation succeeded (true even if branch didn't exist) */
|
|
594
|
+
success: boolean;
|
|
595
|
+
/** True only if a branch was actually deleted */
|
|
596
|
+
deleted: boolean;
|
|
597
|
+
/** True if branch didn't exist (not an error, just nothing to do) */
|
|
598
|
+
notFound: boolean;
|
|
599
|
+
/** Error message if operation failed */
|
|
600
|
+
error?: string;
|
|
601
|
+
/** User declined deletion (for preview databases) */
|
|
602
|
+
userDeclined?: boolean;
|
|
603
|
+
/** Name of the branch that was processed */
|
|
604
|
+
branchName?: string;
|
|
605
|
+
}
|
|
606
|
+
interface DatabaseProvider {
|
|
607
|
+
createBranch(name: string, fromBranch?: string, cwd?: string): Promise<string>;
|
|
608
|
+
deleteBranch(name: string, isPreview?: boolean, cwd?: string): Promise<DatabaseDeletionResult>;
|
|
609
|
+
getConnectionString(branch: string, cwd?: string): Promise<string>;
|
|
610
|
+
listBranches(cwd?: string): Promise<string[]>;
|
|
611
|
+
branchExists(name: string, cwd?: string): Promise<boolean>;
|
|
612
|
+
findPreviewBranch(branchName: string, cwd?: string): Promise<string | null>;
|
|
613
|
+
getBranchNameFromEndpoint(endpointId: string, cwd?: string): Promise<string | null>;
|
|
614
|
+
sanitizeBranchName(branchName: string): string;
|
|
615
|
+
isAuthenticated(cwd?: string): Promise<boolean>;
|
|
616
|
+
isCliAvailable(): Promise<boolean>;
|
|
617
|
+
isConfigured(): boolean;
|
|
618
|
+
}
|
|
619
|
+
interface Config {
|
|
620
|
+
defaultPort: number;
|
|
621
|
+
databaseProvider?: 'neon' | 'supabase' | 'planetscale';
|
|
622
|
+
claudeModel?: ClaudeModel;
|
|
623
|
+
skipClaude?: boolean;
|
|
624
|
+
customWorkspaceRoot?: string;
|
|
625
|
+
}
|
|
626
|
+
type OneShotMode = 'default' | 'noReview' | 'bypassPermissions';
|
|
627
|
+
type ComplexityOverride = 'trivial' | 'simple' | 'complex';
|
|
628
|
+
declare const VALID_EFFORT_LEVELS: readonly ["low", "medium", "high", "max"];
|
|
629
|
+
type EffortLevel = (typeof VALID_EFFORT_LEVELS)[number];
|
|
630
|
+
/**
|
|
631
|
+
* Type guard for EffortLevel values
|
|
632
|
+
* Validates that a value is a valid effort level at runtime
|
|
633
|
+
*/
|
|
634
|
+
declare function isEffortLevel(value: unknown): value is EffortLevel;
|
|
635
|
+
interface StartOptions {
|
|
636
|
+
claude?: boolean;
|
|
637
|
+
code?: boolean;
|
|
638
|
+
devServer?: boolean;
|
|
639
|
+
terminal?: boolean;
|
|
640
|
+
childLoom?: boolean;
|
|
641
|
+
epic?: boolean;
|
|
642
|
+
createOnly?: boolean;
|
|
643
|
+
oneShot?: OneShotMode;
|
|
644
|
+
dangerouslySkipPermissions?: boolean;
|
|
645
|
+
complexity?: ComplexityOverride;
|
|
646
|
+
effort?: EffortLevel;
|
|
647
|
+
body?: string;
|
|
648
|
+
json?: boolean;
|
|
649
|
+
}
|
|
650
|
+
interface AddIssueOptions {
|
|
651
|
+
body?: string;
|
|
652
|
+
json?: boolean;
|
|
653
|
+
}
|
|
654
|
+
interface FeedbackOptions {
|
|
655
|
+
body?: string;
|
|
656
|
+
}
|
|
657
|
+
interface EnhanceOptions {
|
|
658
|
+
noBrowser?: boolean;
|
|
659
|
+
json?: boolean;
|
|
660
|
+
}
|
|
661
|
+
interface FinishOptions {
|
|
662
|
+
force?: boolean;
|
|
1195
663
|
dryRun?: boolean;
|
|
1196
|
-
|
|
664
|
+
pr?: number;
|
|
665
|
+
skipBuild?: boolean;
|
|
666
|
+
noBrowser?: boolean;
|
|
667
|
+
cleanup?: boolean;
|
|
668
|
+
json?: boolean;
|
|
669
|
+
skipToPr?: boolean;
|
|
670
|
+
jsonStream?: boolean;
|
|
671
|
+
review?: boolean;
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Options for the cleanup command
|
|
675
|
+
* All flags are optional and can be combined (subject to validation)
|
|
676
|
+
*/
|
|
677
|
+
interface CleanupOptions {
|
|
678
|
+
/** List all worktrees without removing anything */
|
|
679
|
+
list?: boolean;
|
|
680
|
+
/** Remove all worktrees (interactive confirmation required unless --force) */
|
|
681
|
+
all?: boolean;
|
|
682
|
+
/** Cleanup by specific issue identifier (numeric or alphanumeric like RANDOM-13) */
|
|
683
|
+
issue?: string | number;
|
|
684
|
+
/** Skip confirmations and force removal */
|
|
1197
685
|
force?: boolean;
|
|
1198
|
-
/**
|
|
1199
|
-
|
|
1200
|
-
/**
|
|
1201
|
-
|
|
1202
|
-
/**
|
|
1203
|
-
|
|
1204
|
-
/** Check if branch is merged before allowing cleanup (defaults to true when deleteBranch is true) */
|
|
1205
|
-
checkMergeSafety?: boolean;
|
|
1206
|
-
/** Check if branch exists on remote before allowing cleanup (useful for GitHub-PR mode) */
|
|
1207
|
-
checkRemoteBranch?: boolean;
|
|
1208
|
-
/** Pre-resolved worktree to clean up (skips the search step) */
|
|
1209
|
-
worktree?: {
|
|
1210
|
-
path: string;
|
|
1211
|
-
branch: string;
|
|
1212
|
-
};
|
|
686
|
+
/** Show what would be done without actually doing it */
|
|
687
|
+
dryRun?: boolean;
|
|
688
|
+
/** Output result as JSON */
|
|
689
|
+
json?: boolean;
|
|
690
|
+
/** Wait specified milliseconds before cleanup execution */
|
|
691
|
+
defer?: number;
|
|
1213
692
|
/** Archive metadata instead of deleting (preserves loom in il list --finished) */
|
|
1214
693
|
archive?: boolean;
|
|
1215
694
|
}
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
interface
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
695
|
+
interface ListOptions {
|
|
696
|
+
json?: boolean;
|
|
697
|
+
}
|
|
698
|
+
interface AddIssueResult {
|
|
699
|
+
url: string;
|
|
700
|
+
id: number;
|
|
701
|
+
title: string;
|
|
702
|
+
created_at: string;
|
|
703
|
+
}
|
|
704
|
+
interface EnhanceResult {
|
|
705
|
+
url: string;
|
|
706
|
+
id: number;
|
|
707
|
+
title: string;
|
|
708
|
+
created_at: string;
|
|
709
|
+
enhanced: boolean;
|
|
710
|
+
}
|
|
711
|
+
interface StartResult {
|
|
712
|
+
id: string;
|
|
713
|
+
path: string;
|
|
714
|
+
branch: string;
|
|
715
|
+
port?: number;
|
|
716
|
+
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
717
|
+
identifier: string | number;
|
|
718
|
+
title?: string;
|
|
719
|
+
capabilities?: string[];
|
|
720
|
+
childIssueNumbers?: string[];
|
|
721
|
+
}
|
|
722
|
+
interface FinishResult {
|
|
1225
723
|
success: boolean;
|
|
724
|
+
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
725
|
+
identifier: string | number;
|
|
1226
726
|
/** Whether this was a dry-run operation */
|
|
1227
727
|
dryRun?: boolean;
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
728
|
+
operations: Array<{
|
|
729
|
+
type: 'validation' | 'commit' | 'rebase' | 'merge' | 'cleanup' | 'pr-creation' | 'pr-ready' | 'build';
|
|
730
|
+
message: string;
|
|
731
|
+
success: boolean;
|
|
732
|
+
error?: string;
|
|
733
|
+
}>;
|
|
734
|
+
prUrl?: string;
|
|
735
|
+
cleanupResult?: CleanupResult;
|
|
1234
736
|
}
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
737
|
+
interface SummaryResult {
|
|
738
|
+
summary: string;
|
|
739
|
+
sessionId: string;
|
|
740
|
+
issueNumber?: string | number;
|
|
741
|
+
branchName: string;
|
|
742
|
+
loomType: 'issue' | 'pr' | 'branch' | 'epic';
|
|
743
|
+
}
|
|
744
|
+
interface RebaseResult {
|
|
1242
745
|
success: boolean;
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
746
|
+
conflictsDetected: boolean;
|
|
747
|
+
claudeLaunched: boolean;
|
|
748
|
+
conflictsResolved?: boolean;
|
|
1246
749
|
error?: string;
|
|
1247
|
-
/** For database operations: whether branch was actually deleted (vs not found) */
|
|
1248
|
-
deleted?: boolean;
|
|
1249
750
|
}
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
/** Whether cleanup is safe to proceed */
|
|
1255
|
-
isSafe: boolean;
|
|
1256
|
-
/** Non-blocking warnings */
|
|
1257
|
-
warnings: string[];
|
|
1258
|
-
/** Blocking issues that prevent cleanup */
|
|
1259
|
-
blockers: string[];
|
|
751
|
+
interface RebaseOutcome {
|
|
752
|
+
conflictsDetected: boolean;
|
|
753
|
+
claudeLaunched: boolean;
|
|
754
|
+
conflictsResolved: boolean;
|
|
1260
755
|
}
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
interface BranchDeleteOptions {
|
|
1265
|
-
/** Force delete unmerged branch */
|
|
1266
|
-
force?: boolean;
|
|
1267
|
-
/** Also delete remote branch */
|
|
1268
|
-
remote?: boolean;
|
|
1269
|
-
/** Preview without executing */
|
|
1270
|
-
dryRun?: boolean;
|
|
1271
|
-
/** Path to the worktree being cleaned up (for merge target resolution) - DEPRECATED: use mergeTargetBranch instead */
|
|
1272
|
-
worktreePath?: string;
|
|
1273
|
-
/** Pre-fetched merge target branch (parent branch for child looms, main branch for others).
|
|
1274
|
-
* This must be fetched BEFORE worktree deletion since metadata won't be readable after deletion. */
|
|
1275
|
-
mergeTargetBranch?: string;
|
|
1276
|
-
/** Safety check has verified no data loss risk. When true, allows force delete
|
|
1277
|
-
* if git branch -d fails with "not fully merged" since safety is already confirmed. */
|
|
1278
|
-
safetyVerified?: boolean;
|
|
756
|
+
interface MockOptions {
|
|
757
|
+
scenario: 'empty' | 'existing' | 'conflicts' | 'error';
|
|
758
|
+
data?: unknown;
|
|
1279
759
|
}
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
branchName: string;
|
|
1286
|
-
/** Whether this branch has an associated worktree */
|
|
1287
|
-
hasWorktree: boolean;
|
|
1288
|
-
/** Path to worktree if it exists */
|
|
1289
|
-
worktreePath?: string;
|
|
760
|
+
|
|
761
|
+
interface RgbColor {
|
|
762
|
+
r: number;
|
|
763
|
+
g: number;
|
|
764
|
+
b: number;
|
|
1290
765
|
}
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
/** Issue number that was cleaned up */
|
|
1296
|
-
issueNumber: string | number;
|
|
1297
|
-
/** Number of branches found matching the issue */
|
|
1298
|
-
targetsFound: number;
|
|
1299
|
-
/** Number of worktrees successfully removed */
|
|
1300
|
-
worktreesRemoved: number;
|
|
1301
|
-
/** Number of branches successfully deleted */
|
|
1302
|
-
branchesDeleted: number;
|
|
1303
|
-
/** Number of failed operations */
|
|
1304
|
-
failed: number;
|
|
1305
|
-
/** Individual cleanup results for each branch */
|
|
1306
|
-
results: CleanupResult[];
|
|
766
|
+
interface ColorData {
|
|
767
|
+
rgb: RgbColor;
|
|
768
|
+
hex: string;
|
|
769
|
+
index: number;
|
|
1307
770
|
}
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
771
|
+
type Platform = 'darwin' | 'linux' | 'win32' | 'unsupported';
|
|
772
|
+
interface ValidationOptions {
|
|
773
|
+
dryRun?: boolean;
|
|
774
|
+
skipTypecheck?: boolean;
|
|
775
|
+
skipLint?: boolean;
|
|
776
|
+
skipTests?: boolean;
|
|
777
|
+
jsonStream?: boolean;
|
|
1314
778
|
}
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
strategy?: BranchNameStrategy;
|
|
779
|
+
interface ValidationStepResult {
|
|
780
|
+
step: 'typecheck' | 'compile' | 'lint' | 'test';
|
|
781
|
+
passed: boolean;
|
|
782
|
+
skipped: boolean;
|
|
783
|
+
output?: string;
|
|
784
|
+
error?: string;
|
|
785
|
+
duration?: number;
|
|
1323
786
|
}
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
787
|
+
interface ValidationResult {
|
|
788
|
+
success: boolean;
|
|
789
|
+
steps: ValidationStepResult[];
|
|
790
|
+
totalDuration: number;
|
|
1328
791
|
}
|
|
1329
|
-
interface
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
792
|
+
interface CommitOptions {
|
|
793
|
+
dryRun?: boolean;
|
|
794
|
+
issueNumber?: string | number;
|
|
795
|
+
issuePrefix: string;
|
|
796
|
+
message?: string;
|
|
797
|
+
noReview?: boolean;
|
|
798
|
+
skipVerify?: boolean;
|
|
799
|
+
skipVerifySilent?: boolean;
|
|
800
|
+
trailerType?: 'Refs' | 'Fixes';
|
|
801
|
+
timeout?: number;
|
|
1333
802
|
}
|
|
1334
803
|
/**
|
|
1335
|
-
*
|
|
804
|
+
* Error thrown when user aborts a commit operation
|
|
805
|
+
* Used by CommitManager when user selects 'abort' at the commit prompt
|
|
1336
806
|
*/
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
backupPath?: string;
|
|
1340
|
-
error?: string;
|
|
807
|
+
declare class UserAbortedCommitError extends Error {
|
|
808
|
+
constructor(message?: string);
|
|
1341
809
|
}
|
|
1342
|
-
interface
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
810
|
+
interface MergeOptions {
|
|
811
|
+
dryRun?: boolean;
|
|
812
|
+
force?: boolean;
|
|
813
|
+
repoRoot?: string;
|
|
814
|
+
jsonStream?: boolean;
|
|
1347
815
|
}
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
branch: string;
|
|
1355
|
-
type: 'issue' | 'pr' | 'branch' | 'epic';
|
|
1356
|
-
identifier: string | number;
|
|
1357
|
-
port: number;
|
|
1358
|
-
databaseBranch?: string;
|
|
1359
|
-
description?: string;
|
|
1360
|
-
createdAt: Date;
|
|
1361
|
-
lastAccessed: Date;
|
|
1362
|
-
issueData?: {
|
|
1363
|
-
title?: string;
|
|
1364
|
-
body?: string;
|
|
1365
|
-
url?: string;
|
|
1366
|
-
state?: string;
|
|
1367
|
-
};
|
|
1368
|
-
capabilities?: ProjectCapability[];
|
|
1369
|
-
binEntries?: Record<string, string>;
|
|
1370
|
-
cliSymlinks?: string[];
|
|
816
|
+
interface MergeResult {
|
|
817
|
+
success: boolean;
|
|
818
|
+
branchName: string;
|
|
819
|
+
commitsMerged: number;
|
|
820
|
+
rebaseCompleted: boolean;
|
|
821
|
+
mergeCompleted: boolean;
|
|
1371
822
|
}
|
|
1372
|
-
interface
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
823
|
+
interface UpdateCheckCache {
|
|
824
|
+
lastCheck: number;
|
|
825
|
+
latestVersion: string;
|
|
826
|
+
}
|
|
827
|
+
interface UpdateCheckResult {
|
|
828
|
+
currentVersion: string;
|
|
829
|
+
latestVersion: string;
|
|
830
|
+
updateAvailable: boolean;
|
|
831
|
+
}
|
|
832
|
+
type InstallationMethod = 'global' | 'local' | 'linked' | 'unknown';
|
|
833
|
+
|
|
834
|
+
declare const VALID_CLAUDE_MODELS: readonly ["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"];
|
|
835
|
+
type ClaudeModel = (typeof VALID_CLAUDE_MODELS)[number];
|
|
836
|
+
/**
|
|
837
|
+
* Zod schema for iloom settings
|
|
838
|
+
*/
|
|
839
|
+
declare const IloomSettingsSchema: z.ZodObject<{
|
|
840
|
+
mainBranch: z.ZodOptional<z.ZodString>;
|
|
841
|
+
sourceEnvOnStart: z.ZodDefault<z.ZodBoolean>;
|
|
842
|
+
worktreePrefix: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
|
|
843
|
+
protectedBranches: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
844
|
+
copyGitIgnoredPatterns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
845
|
+
workflows: z.ZodOptional<z.ZodObject<{
|
|
846
|
+
issue: z.ZodOptional<z.ZodObject<{
|
|
847
|
+
permissionMode: z.ZodOptional<z.ZodEnum<["plan", "acceptEdits", "bypassPermissions", "default"]>>;
|
|
848
|
+
noVerify: z.ZodOptional<z.ZodBoolean>;
|
|
849
|
+
startIde: z.ZodDefault<z.ZodBoolean>;
|
|
850
|
+
startDevServer: z.ZodDefault<z.ZodBoolean>;
|
|
851
|
+
startAiAgent: z.ZodDefault<z.ZodBoolean>;
|
|
852
|
+
startTerminal: z.ZodDefault<z.ZodBoolean>;
|
|
853
|
+
generateSummary: z.ZodDefault<z.ZodBoolean>;
|
|
854
|
+
}, "strip", z.ZodTypeAny, {
|
|
855
|
+
startIde: boolean;
|
|
856
|
+
startDevServer: boolean;
|
|
857
|
+
startAiAgent: boolean;
|
|
858
|
+
startTerminal: boolean;
|
|
859
|
+
generateSummary: boolean;
|
|
860
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
861
|
+
noVerify?: boolean | undefined;
|
|
862
|
+
}, {
|
|
863
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
864
|
+
noVerify?: boolean | undefined;
|
|
865
|
+
startIde?: boolean | undefined;
|
|
866
|
+
startDevServer?: boolean | undefined;
|
|
867
|
+
startAiAgent?: boolean | undefined;
|
|
868
|
+
startTerminal?: boolean | undefined;
|
|
869
|
+
generateSummary?: boolean | undefined;
|
|
870
|
+
}>>;
|
|
871
|
+
pr: z.ZodOptional<z.ZodObject<{
|
|
872
|
+
permissionMode: z.ZodOptional<z.ZodEnum<["plan", "acceptEdits", "bypassPermissions", "default"]>>;
|
|
873
|
+
noVerify: z.ZodOptional<z.ZodBoolean>;
|
|
874
|
+
startIde: z.ZodDefault<z.ZodBoolean>;
|
|
875
|
+
startDevServer: z.ZodDefault<z.ZodBoolean>;
|
|
876
|
+
startAiAgent: z.ZodDefault<z.ZodBoolean>;
|
|
877
|
+
startTerminal: z.ZodDefault<z.ZodBoolean>;
|
|
878
|
+
generateSummary: z.ZodDefault<z.ZodBoolean>;
|
|
879
|
+
}, "strip", z.ZodTypeAny, {
|
|
880
|
+
startIde: boolean;
|
|
881
|
+
startDevServer: boolean;
|
|
882
|
+
startAiAgent: boolean;
|
|
883
|
+
startTerminal: boolean;
|
|
884
|
+
generateSummary: boolean;
|
|
885
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
886
|
+
noVerify?: boolean | undefined;
|
|
887
|
+
}, {
|
|
888
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
889
|
+
noVerify?: boolean | undefined;
|
|
890
|
+
startIde?: boolean | undefined;
|
|
891
|
+
startDevServer?: boolean | undefined;
|
|
892
|
+
startAiAgent?: boolean | undefined;
|
|
893
|
+
startTerminal?: boolean | undefined;
|
|
894
|
+
generateSummary?: boolean | undefined;
|
|
895
|
+
}>>;
|
|
896
|
+
regular: z.ZodOptional<z.ZodObject<{
|
|
897
|
+
permissionMode: z.ZodOptional<z.ZodEnum<["plan", "acceptEdits", "bypassPermissions", "default"]>>;
|
|
898
|
+
noVerify: z.ZodOptional<z.ZodBoolean>;
|
|
899
|
+
startIde: z.ZodDefault<z.ZodBoolean>;
|
|
900
|
+
startDevServer: z.ZodDefault<z.ZodBoolean>;
|
|
901
|
+
startAiAgent: z.ZodDefault<z.ZodBoolean>;
|
|
902
|
+
startTerminal: z.ZodDefault<z.ZodBoolean>;
|
|
903
|
+
generateSummary: z.ZodDefault<z.ZodBoolean>;
|
|
904
|
+
}, "strip", z.ZodTypeAny, {
|
|
905
|
+
startIde: boolean;
|
|
906
|
+
startDevServer: boolean;
|
|
907
|
+
startAiAgent: boolean;
|
|
908
|
+
startTerminal: boolean;
|
|
909
|
+
generateSummary: boolean;
|
|
910
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
911
|
+
noVerify?: boolean | undefined;
|
|
912
|
+
}, {
|
|
913
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
914
|
+
noVerify?: boolean | undefined;
|
|
915
|
+
startIde?: boolean | undefined;
|
|
916
|
+
startDevServer?: boolean | undefined;
|
|
917
|
+
startAiAgent?: boolean | undefined;
|
|
918
|
+
startTerminal?: boolean | undefined;
|
|
919
|
+
generateSummary?: boolean | undefined;
|
|
920
|
+
}>>;
|
|
921
|
+
}, "strip", z.ZodTypeAny, {
|
|
922
|
+
issue?: {
|
|
923
|
+
startIde: boolean;
|
|
924
|
+
startDevServer: boolean;
|
|
925
|
+
startAiAgent: boolean;
|
|
926
|
+
startTerminal: boolean;
|
|
927
|
+
generateSummary: boolean;
|
|
928
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
929
|
+
noVerify?: boolean | undefined;
|
|
930
|
+
} | undefined;
|
|
931
|
+
pr?: {
|
|
932
|
+
startIde: boolean;
|
|
933
|
+
startDevServer: boolean;
|
|
934
|
+
startAiAgent: boolean;
|
|
935
|
+
startTerminal: boolean;
|
|
936
|
+
generateSummary: boolean;
|
|
937
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
938
|
+
noVerify?: boolean | undefined;
|
|
939
|
+
} | undefined;
|
|
940
|
+
regular?: {
|
|
941
|
+
startIde: boolean;
|
|
942
|
+
startDevServer: boolean;
|
|
943
|
+
startAiAgent: boolean;
|
|
944
|
+
startTerminal: boolean;
|
|
945
|
+
generateSummary: boolean;
|
|
946
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
947
|
+
noVerify?: boolean | undefined;
|
|
948
|
+
} | undefined;
|
|
949
|
+
}, {
|
|
950
|
+
issue?: {
|
|
951
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
952
|
+
noVerify?: boolean | undefined;
|
|
953
|
+
startIde?: boolean | undefined;
|
|
954
|
+
startDevServer?: boolean | undefined;
|
|
955
|
+
startAiAgent?: boolean | undefined;
|
|
956
|
+
startTerminal?: boolean | undefined;
|
|
957
|
+
generateSummary?: boolean | undefined;
|
|
958
|
+
} | undefined;
|
|
959
|
+
pr?: {
|
|
960
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
961
|
+
noVerify?: boolean | undefined;
|
|
962
|
+
startIde?: boolean | undefined;
|
|
963
|
+
startDevServer?: boolean | undefined;
|
|
964
|
+
startAiAgent?: boolean | undefined;
|
|
965
|
+
startTerminal?: boolean | undefined;
|
|
966
|
+
generateSummary?: boolean | undefined;
|
|
967
|
+
} | undefined;
|
|
968
|
+
regular?: {
|
|
969
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
970
|
+
noVerify?: boolean | undefined;
|
|
971
|
+
startIde?: boolean | undefined;
|
|
972
|
+
startDevServer?: boolean | undefined;
|
|
973
|
+
startAiAgent?: boolean | undefined;
|
|
974
|
+
startTerminal?: boolean | undefined;
|
|
975
|
+
generateSummary?: boolean | undefined;
|
|
976
|
+
} | undefined;
|
|
977
|
+
}>>;
|
|
978
|
+
agents: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
979
|
+
model: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
980
|
+
swarmModel: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
981
|
+
effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
982
|
+
swarmEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
983
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
984
|
+
providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["claude", "gemini", "codex"]>, z.ZodString>>;
|
|
985
|
+
review: z.ZodOptional<z.ZodBoolean>;
|
|
986
|
+
swarmReview: z.ZodOptional<z.ZodBoolean>;
|
|
987
|
+
}, "strip", z.ZodTypeAny, {
|
|
988
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
989
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
990
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
991
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
992
|
+
enabled?: boolean | undefined;
|
|
993
|
+
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
994
|
+
review?: boolean | undefined;
|
|
995
|
+
swarmReview?: boolean | undefined;
|
|
996
|
+
}, {
|
|
997
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
998
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
999
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1000
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1001
|
+
enabled?: boolean | undefined;
|
|
1002
|
+
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
1003
|
+
review?: boolean | undefined;
|
|
1004
|
+
swarmReview?: boolean | undefined;
|
|
1005
|
+
}>>>>;
|
|
1006
|
+
spin: z.ZodOptional<z.ZodObject<{
|
|
1007
|
+
model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
1008
|
+
swarmModel: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
1009
|
+
effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
1010
|
+
swarmEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
1011
|
+
postSwarmReview: z.ZodDefault<z.ZodBoolean>;
|
|
1012
|
+
}, "strip", z.ZodTypeAny, {
|
|
1013
|
+
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
1014
|
+
postSwarmReview: boolean;
|
|
1015
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1016
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1017
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1018
|
+
}, {
|
|
1019
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1020
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1021
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1022
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1023
|
+
postSwarmReview?: boolean | undefined;
|
|
1024
|
+
}>>;
|
|
1025
|
+
plan: z.ZodOptional<z.ZodObject<{
|
|
1026
|
+
model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
1027
|
+
effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
1028
|
+
planner: z.ZodDefault<z.ZodEnum<["claude", "gemini", "codex"]>>;
|
|
1029
|
+
reviewer: z.ZodDefault<z.ZodEnum<["claude", "gemini", "codex", "none"]>>;
|
|
1030
|
+
waveVerification: z.ZodDefault<z.ZodBoolean>;
|
|
1031
|
+
}, "strip", z.ZodTypeAny, {
|
|
1032
|
+
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
1033
|
+
planner: "claude" | "gemini" | "codex";
|
|
1034
|
+
reviewer: "claude" | "gemini" | "codex" | "none";
|
|
1035
|
+
waveVerification: boolean;
|
|
1036
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1037
|
+
}, {
|
|
1038
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1039
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1040
|
+
planner?: "claude" | "gemini" | "codex" | undefined;
|
|
1041
|
+
reviewer?: "claude" | "gemini" | "codex" | "none" | undefined;
|
|
1042
|
+
waveVerification?: boolean | undefined;
|
|
1043
|
+
}>>;
|
|
1044
|
+
summary: z.ZodOptional<z.ZodObject<{
|
|
1045
|
+
model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"]>>;
|
|
1046
|
+
}, "strip", z.ZodTypeAny, {
|
|
1047
|
+
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
1048
|
+
}, {
|
|
1049
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1050
|
+
}>>;
|
|
1051
|
+
capabilities: z.ZodOptional<z.ZodObject<{
|
|
1052
|
+
web: z.ZodOptional<z.ZodObject<{
|
|
1053
|
+
basePort: z.ZodOptional<z.ZodNumber>;
|
|
1054
|
+
protocol: z.ZodDefault<z.ZodEnum<["http", "https"]>>;
|
|
1055
|
+
devServer: z.ZodDefault<z.ZodEnum<["process", "docker"]>>;
|
|
1056
|
+
dockerFile: z.ZodDefault<z.ZodString>;
|
|
1057
|
+
containerPort: z.ZodOptional<z.ZodNumber>;
|
|
1058
|
+
dockerBuildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1059
|
+
dockerBuildSecrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1060
|
+
dockerRunArgs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1061
|
+
dockerRunEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1062
|
+
}, "strip", z.ZodTypeAny, {
|
|
1063
|
+
protocol: "http" | "https";
|
|
1064
|
+
devServer: "docker" | "process";
|
|
1065
|
+
dockerFile: string;
|
|
1066
|
+
basePort?: number | undefined;
|
|
1067
|
+
containerPort?: number | undefined;
|
|
1068
|
+
dockerBuildArgs?: Record<string, string> | undefined;
|
|
1069
|
+
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
1070
|
+
dockerRunArgs?: string[] | undefined;
|
|
1071
|
+
dockerRunEnv?: Record<string, string> | undefined;
|
|
1072
|
+
}, {
|
|
1073
|
+
basePort?: number | undefined;
|
|
1074
|
+
protocol?: "http" | "https" | undefined;
|
|
1075
|
+
devServer?: "docker" | "process" | undefined;
|
|
1076
|
+
dockerFile?: string | undefined;
|
|
1077
|
+
containerPort?: number | undefined;
|
|
1078
|
+
dockerBuildArgs?: Record<string, string> | undefined;
|
|
1079
|
+
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
1080
|
+
dockerRunArgs?: string[] | undefined;
|
|
1081
|
+
dockerRunEnv?: Record<string, string> | undefined;
|
|
1082
|
+
}>>;
|
|
1083
|
+
database: z.ZodOptional<z.ZodObject<{
|
|
1084
|
+
databaseUrlEnvVarName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
1085
|
+
}, "strip", z.ZodTypeAny, {
|
|
1086
|
+
databaseUrlEnvVarName: string;
|
|
1087
|
+
}, {
|
|
1088
|
+
databaseUrlEnvVarName?: string | undefined;
|
|
1089
|
+
}>>;
|
|
1090
|
+
}, "strip", z.ZodTypeAny, {
|
|
1091
|
+
web?: {
|
|
1092
|
+
protocol: "http" | "https";
|
|
1093
|
+
devServer: "docker" | "process";
|
|
1094
|
+
dockerFile: string;
|
|
1095
|
+
basePort?: number | undefined;
|
|
1096
|
+
containerPort?: number | undefined;
|
|
1097
|
+
dockerBuildArgs?: Record<string, string> | undefined;
|
|
1098
|
+
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
1099
|
+
dockerRunArgs?: string[] | undefined;
|
|
1100
|
+
dockerRunEnv?: Record<string, string> | undefined;
|
|
1101
|
+
} | undefined;
|
|
1102
|
+
database?: {
|
|
1103
|
+
databaseUrlEnvVarName: string;
|
|
1104
|
+
} | undefined;
|
|
1105
|
+
}, {
|
|
1106
|
+
web?: {
|
|
1107
|
+
basePort?: number | undefined;
|
|
1108
|
+
protocol?: "http" | "https" | undefined;
|
|
1109
|
+
devServer?: "docker" | "process" | undefined;
|
|
1110
|
+
dockerFile?: string | undefined;
|
|
1111
|
+
containerPort?: number | undefined;
|
|
1112
|
+
dockerBuildArgs?: Record<string, string> | undefined;
|
|
1113
|
+
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
1114
|
+
dockerRunArgs?: string[] | undefined;
|
|
1115
|
+
dockerRunEnv?: Record<string, string> | undefined;
|
|
1116
|
+
} | undefined;
|
|
1117
|
+
database?: {
|
|
1118
|
+
databaseUrlEnvVarName?: string | undefined;
|
|
1119
|
+
} | undefined;
|
|
1120
|
+
}>>;
|
|
1121
|
+
devServer: z.ZodOptional<z.ZodObject<{
|
|
1122
|
+
mode: z.ZodDefault<z.ZodEnum<["docker"]>>;
|
|
1123
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
1124
|
+
dockerFile: z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>;
|
|
1125
|
+
containerPort: z.ZodOptional<z.ZodNumber>;
|
|
1126
|
+
buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1127
|
+
runArgs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1128
|
+
runEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1129
|
+
}, "strip", z.ZodTypeAny, {
|
|
1130
|
+
dockerFile: string;
|
|
1131
|
+
containerPort?: number | undefined;
|
|
1132
|
+
buildArgs?: Record<string, string> | undefined;
|
|
1133
|
+
runArgs?: string[] | undefined;
|
|
1134
|
+
runEnv?: Record<string, string> | undefined;
|
|
1135
|
+
}, {
|
|
1136
|
+
dockerFile?: string | undefined;
|
|
1137
|
+
containerPort?: number | undefined;
|
|
1138
|
+
buildArgs?: Record<string, string> | undefined;
|
|
1139
|
+
runArgs?: string[] | undefined;
|
|
1140
|
+
runEnv?: Record<string, string> | undefined;
|
|
1141
|
+
}>>;
|
|
1142
|
+
}, "strip", z.ZodTypeAny, {
|
|
1143
|
+
mode: "docker";
|
|
1144
|
+
docker?: {
|
|
1145
|
+
dockerFile: string;
|
|
1146
|
+
containerPort?: number | undefined;
|
|
1147
|
+
buildArgs?: Record<string, string> | undefined;
|
|
1148
|
+
runArgs?: string[] | undefined;
|
|
1149
|
+
runEnv?: Record<string, string> | undefined;
|
|
1150
|
+
} | undefined;
|
|
1151
|
+
}, {
|
|
1152
|
+
docker?: {
|
|
1153
|
+
dockerFile?: string | undefined;
|
|
1154
|
+
containerPort?: number | undefined;
|
|
1155
|
+
buildArgs?: Record<string, string> | undefined;
|
|
1156
|
+
runArgs?: string[] | undefined;
|
|
1157
|
+
runEnv?: Record<string, string> | undefined;
|
|
1158
|
+
} | undefined;
|
|
1159
|
+
mode?: "docker" | undefined;
|
|
1160
|
+
}>>;
|
|
1161
|
+
databaseProviders: z.ZodOptional<z.ZodObject<{
|
|
1162
|
+
neon: z.ZodOptional<z.ZodObject<{
|
|
1163
|
+
projectId: z.ZodString;
|
|
1164
|
+
parentBranch: z.ZodString;
|
|
1165
|
+
}, "strip", z.ZodTypeAny, {
|
|
1166
|
+
projectId: string;
|
|
1167
|
+
parentBranch: string;
|
|
1168
|
+
}, {
|
|
1169
|
+
projectId: string;
|
|
1170
|
+
parentBranch: string;
|
|
1171
|
+
}>>;
|
|
1172
|
+
}, "strip", z.ZodTypeAny, {
|
|
1173
|
+
neon?: {
|
|
1174
|
+
projectId: string;
|
|
1175
|
+
parentBranch: string;
|
|
1176
|
+
} | undefined;
|
|
1177
|
+
}, {
|
|
1178
|
+
neon?: {
|
|
1179
|
+
projectId: string;
|
|
1180
|
+
parentBranch: string;
|
|
1181
|
+
} | undefined;
|
|
1182
|
+
}>>;
|
|
1183
|
+
issueManagement: z.ZodOptional<z.ZodObject<{
|
|
1184
|
+
provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["github", "linear", "jira"]>>>;
|
|
1185
|
+
github: z.ZodOptional<z.ZodObject<{
|
|
1186
|
+
remote: z.ZodString;
|
|
1187
|
+
}, "strip", z.ZodTypeAny, {
|
|
1188
|
+
remote: string;
|
|
1189
|
+
}, {
|
|
1190
|
+
remote: string;
|
|
1191
|
+
}>>;
|
|
1192
|
+
linear: z.ZodOptional<z.ZodObject<{
|
|
1193
|
+
teamId: z.ZodString;
|
|
1194
|
+
branchFormat: z.ZodOptional<z.ZodString>;
|
|
1195
|
+
apiToken: z.ZodOptional<z.ZodString>;
|
|
1196
|
+
}, "strip", z.ZodTypeAny, {
|
|
1197
|
+
teamId: string;
|
|
1198
|
+
branchFormat?: string | undefined;
|
|
1199
|
+
apiToken?: string | undefined;
|
|
1200
|
+
}, {
|
|
1201
|
+
teamId: string;
|
|
1202
|
+
branchFormat?: string | undefined;
|
|
1203
|
+
apiToken?: string | undefined;
|
|
1204
|
+
}>>;
|
|
1205
|
+
jira: z.ZodOptional<z.ZodObject<{
|
|
1206
|
+
host: z.ZodString;
|
|
1207
|
+
username: z.ZodString;
|
|
1208
|
+
apiToken: z.ZodOptional<z.ZodString>;
|
|
1209
|
+
projectKey: z.ZodString;
|
|
1210
|
+
boardId: z.ZodOptional<z.ZodString>;
|
|
1211
|
+
transitionMappings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1212
|
+
defaultIssueType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
1213
|
+
defaultSubtaskType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
1214
|
+
doneStatuses: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
1215
|
+
}, "strip", z.ZodTypeAny, {
|
|
1216
|
+
host: string;
|
|
1217
|
+
username: string;
|
|
1218
|
+
projectKey: string;
|
|
1219
|
+
defaultIssueType: string;
|
|
1220
|
+
defaultSubtaskType: string;
|
|
1221
|
+
doneStatuses: string[];
|
|
1222
|
+
apiToken?: string | undefined;
|
|
1223
|
+
boardId?: string | undefined;
|
|
1224
|
+
transitionMappings?: Record<string, string> | undefined;
|
|
1225
|
+
}, {
|
|
1226
|
+
host: string;
|
|
1227
|
+
username: string;
|
|
1228
|
+
projectKey: string;
|
|
1229
|
+
apiToken?: string | undefined;
|
|
1230
|
+
boardId?: string | undefined;
|
|
1231
|
+
transitionMappings?: Record<string, string> | undefined;
|
|
1232
|
+
defaultIssueType?: string | undefined;
|
|
1233
|
+
defaultSubtaskType?: string | undefined;
|
|
1234
|
+
doneStatuses?: string[] | undefined;
|
|
1235
|
+
}>>;
|
|
1236
|
+
}, "strip", z.ZodTypeAny, {
|
|
1237
|
+
provider: "github" | "linear" | "jira";
|
|
1238
|
+
github?: {
|
|
1239
|
+
remote: string;
|
|
1240
|
+
} | undefined;
|
|
1241
|
+
linear?: {
|
|
1242
|
+
teamId: string;
|
|
1243
|
+
branchFormat?: string | undefined;
|
|
1244
|
+
apiToken?: string | undefined;
|
|
1245
|
+
} | undefined;
|
|
1246
|
+
jira?: {
|
|
1247
|
+
host: string;
|
|
1248
|
+
username: string;
|
|
1249
|
+
projectKey: string;
|
|
1250
|
+
defaultIssueType: string;
|
|
1251
|
+
defaultSubtaskType: string;
|
|
1252
|
+
doneStatuses: string[];
|
|
1253
|
+
apiToken?: string | undefined;
|
|
1254
|
+
boardId?: string | undefined;
|
|
1255
|
+
transitionMappings?: Record<string, string> | undefined;
|
|
1256
|
+
} | undefined;
|
|
1257
|
+
}, {
|
|
1258
|
+
github?: {
|
|
1259
|
+
remote: string;
|
|
1260
|
+
} | undefined;
|
|
1261
|
+
linear?: {
|
|
1262
|
+
teamId: string;
|
|
1263
|
+
branchFormat?: string | undefined;
|
|
1264
|
+
apiToken?: string | undefined;
|
|
1265
|
+
} | undefined;
|
|
1266
|
+
jira?: {
|
|
1267
|
+
host: string;
|
|
1268
|
+
username: string;
|
|
1269
|
+
projectKey: string;
|
|
1270
|
+
apiToken?: string | undefined;
|
|
1271
|
+
boardId?: string | undefined;
|
|
1272
|
+
transitionMappings?: Record<string, string> | undefined;
|
|
1273
|
+
defaultIssueType?: string | undefined;
|
|
1274
|
+
defaultSubtaskType?: string | undefined;
|
|
1275
|
+
doneStatuses?: string[] | undefined;
|
|
1276
|
+
} | undefined;
|
|
1277
|
+
provider?: "github" | "linear" | "jira" | undefined;
|
|
1278
|
+
}>>;
|
|
1279
|
+
versionControl: z.ZodOptional<z.ZodObject<{
|
|
1280
|
+
provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["github", "bitbucket"]>>>;
|
|
1281
|
+
bitbucket: z.ZodOptional<z.ZodObject<{
|
|
1282
|
+
username: z.ZodString;
|
|
1283
|
+
apiToken: z.ZodOptional<z.ZodString>;
|
|
1284
|
+
workspace: z.ZodOptional<z.ZodString>;
|
|
1285
|
+
repoSlug: z.ZodOptional<z.ZodString>;
|
|
1286
|
+
reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1287
|
+
}, "strip", z.ZodTypeAny, {
|
|
1288
|
+
username: string;
|
|
1289
|
+
apiToken?: string | undefined;
|
|
1290
|
+
workspace?: string | undefined;
|
|
1291
|
+
repoSlug?: string | undefined;
|
|
1292
|
+
reviewers?: string[] | undefined;
|
|
1293
|
+
}, {
|
|
1294
|
+
username: string;
|
|
1295
|
+
apiToken?: string | undefined;
|
|
1296
|
+
workspace?: string | undefined;
|
|
1297
|
+
repoSlug?: string | undefined;
|
|
1298
|
+
reviewers?: string[] | undefined;
|
|
1299
|
+
}>>;
|
|
1300
|
+
}, "strip", z.ZodTypeAny, {
|
|
1301
|
+
provider: "github" | "bitbucket";
|
|
1302
|
+
bitbucket?: {
|
|
1303
|
+
username: string;
|
|
1304
|
+
apiToken?: string | undefined;
|
|
1305
|
+
workspace?: string | undefined;
|
|
1306
|
+
repoSlug?: string | undefined;
|
|
1307
|
+
reviewers?: string[] | undefined;
|
|
1308
|
+
} | undefined;
|
|
1309
|
+
}, {
|
|
1310
|
+
provider?: "github" | "bitbucket" | undefined;
|
|
1311
|
+
bitbucket?: {
|
|
1312
|
+
username: string;
|
|
1313
|
+
apiToken?: string | undefined;
|
|
1314
|
+
workspace?: string | undefined;
|
|
1315
|
+
repoSlug?: string | undefined;
|
|
1316
|
+
reviewers?: string[] | undefined;
|
|
1317
|
+
} | undefined;
|
|
1318
|
+
}>>;
|
|
1319
|
+
mergeBehavior: z.ZodOptional<z.ZodObject<{
|
|
1320
|
+
mode: z.ZodEffects<z.ZodDefault<z.ZodEnum<["local", "pr", "draft-pr", "github-pr", "github-draft-pr", "bitbucket-pr"]>>, "pr" | "local" | "draft-pr", "pr" | "local" | "draft-pr" | "github-pr" | "github-draft-pr" | "bitbucket-pr" | undefined>;
|
|
1321
|
+
remote: z.ZodOptional<z.ZodString>;
|
|
1322
|
+
autoCommitPush: z.ZodOptional<z.ZodBoolean>;
|
|
1323
|
+
prTitlePrefix: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
1324
|
+
openBrowserOnFinish: z.ZodDefault<z.ZodBoolean>;
|
|
1325
|
+
}, "strip", z.ZodTypeAny, {
|
|
1326
|
+
mode: "pr" | "local" | "draft-pr";
|
|
1327
|
+
openBrowserOnFinish: boolean;
|
|
1328
|
+
remote?: string | undefined;
|
|
1329
|
+
autoCommitPush?: boolean | undefined;
|
|
1330
|
+
prTitlePrefix?: boolean | undefined;
|
|
1331
|
+
}, {
|
|
1332
|
+
mode?: "pr" | "local" | "draft-pr" | "github-pr" | "github-draft-pr" | "bitbucket-pr" | undefined;
|
|
1333
|
+
remote?: string | undefined;
|
|
1334
|
+
autoCommitPush?: boolean | undefined;
|
|
1335
|
+
prTitlePrefix?: boolean | undefined;
|
|
1336
|
+
openBrowserOnFinish?: boolean | undefined;
|
|
1337
|
+
}>>;
|
|
1338
|
+
ide: z.ZodOptional<z.ZodObject<{
|
|
1339
|
+
type: z.ZodDefault<z.ZodEnum<["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]>>;
|
|
1340
|
+
}, "strip", z.ZodTypeAny, {
|
|
1341
|
+
type: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity";
|
|
1342
|
+
}, {
|
|
1343
|
+
type?: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity" | undefined;
|
|
1344
|
+
}>>;
|
|
1345
|
+
colors: z.ZodOptional<z.ZodObject<{
|
|
1346
|
+
terminal: z.ZodDefault<z.ZodBoolean>;
|
|
1347
|
+
vscode: z.ZodDefault<z.ZodBoolean>;
|
|
1348
|
+
}, "strip", z.ZodTypeAny, {
|
|
1349
|
+
terminal: boolean;
|
|
1350
|
+
vscode: boolean;
|
|
1351
|
+
}, {
|
|
1352
|
+
terminal?: boolean | undefined;
|
|
1353
|
+
vscode?: boolean | undefined;
|
|
1354
|
+
}>>;
|
|
1355
|
+
attribution: z.ZodDefault<z.ZodEnum<["off", "upstreamOnly", "on"]>>;
|
|
1356
|
+
git: z.ZodDefault<z.ZodObject<{
|
|
1357
|
+
commitTimeout: z.ZodDefault<z.ZodNumber>;
|
|
1358
|
+
}, "strip", z.ZodTypeAny, {
|
|
1359
|
+
commitTimeout: number;
|
|
1360
|
+
}, {
|
|
1361
|
+
commitTimeout?: number | undefined;
|
|
1362
|
+
}>>;
|
|
1363
|
+
}, "strip", z.ZodTypeAny, {
|
|
1364
|
+
sourceEnvOnStart: boolean;
|
|
1365
|
+
attribution: "off" | "upstreamOnly" | "on";
|
|
1366
|
+
git: {
|
|
1367
|
+
commitTimeout: number;
|
|
1406
1368
|
};
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
}
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
}
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
}
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
}
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
}
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1369
|
+
plan?: {
|
|
1370
|
+
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
1371
|
+
planner: "claude" | "gemini" | "codex";
|
|
1372
|
+
reviewer: "claude" | "gemini" | "codex" | "none";
|
|
1373
|
+
waveVerification: boolean;
|
|
1374
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1375
|
+
} | undefined;
|
|
1376
|
+
spin?: {
|
|
1377
|
+
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
1378
|
+
postSwarmReview: boolean;
|
|
1379
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1380
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1381
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1382
|
+
} | undefined;
|
|
1383
|
+
devServer?: {
|
|
1384
|
+
mode: "docker";
|
|
1385
|
+
docker?: {
|
|
1386
|
+
dockerFile: string;
|
|
1387
|
+
containerPort?: number | undefined;
|
|
1388
|
+
buildArgs?: Record<string, string> | undefined;
|
|
1389
|
+
runArgs?: string[] | undefined;
|
|
1390
|
+
runEnv?: Record<string, string> | undefined;
|
|
1391
|
+
} | undefined;
|
|
1392
|
+
} | undefined;
|
|
1393
|
+
mainBranch?: string | undefined;
|
|
1394
|
+
worktreePrefix?: string | undefined;
|
|
1395
|
+
protectedBranches?: string[] | undefined;
|
|
1396
|
+
copyGitIgnoredPatterns?: string[] | undefined;
|
|
1397
|
+
workflows?: {
|
|
1398
|
+
issue?: {
|
|
1399
|
+
startIde: boolean;
|
|
1400
|
+
startDevServer: boolean;
|
|
1401
|
+
startAiAgent: boolean;
|
|
1402
|
+
startTerminal: boolean;
|
|
1403
|
+
generateSummary: boolean;
|
|
1404
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
1405
|
+
noVerify?: boolean | undefined;
|
|
1406
|
+
} | undefined;
|
|
1407
|
+
pr?: {
|
|
1408
|
+
startIde: boolean;
|
|
1409
|
+
startDevServer: boolean;
|
|
1410
|
+
startAiAgent: boolean;
|
|
1411
|
+
startTerminal: boolean;
|
|
1412
|
+
generateSummary: boolean;
|
|
1413
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
1414
|
+
noVerify?: boolean | undefined;
|
|
1415
|
+
} | undefined;
|
|
1416
|
+
regular?: {
|
|
1417
|
+
startIde: boolean;
|
|
1418
|
+
startDevServer: boolean;
|
|
1419
|
+
startAiAgent: boolean;
|
|
1420
|
+
startTerminal: boolean;
|
|
1421
|
+
generateSummary: boolean;
|
|
1422
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
1423
|
+
noVerify?: boolean | undefined;
|
|
1424
|
+
} | undefined;
|
|
1425
|
+
} | undefined;
|
|
1426
|
+
agents?: Record<string, {
|
|
1427
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1428
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1429
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1430
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1431
|
+
enabled?: boolean | undefined;
|
|
1432
|
+
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
1433
|
+
review?: boolean | undefined;
|
|
1434
|
+
swarmReview?: boolean | undefined;
|
|
1435
|
+
}> | null | undefined;
|
|
1436
|
+
summary?: {
|
|
1437
|
+
model: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]";
|
|
1438
|
+
} | undefined;
|
|
1439
|
+
capabilities?: {
|
|
1440
|
+
web?: {
|
|
1441
|
+
protocol: "http" | "https";
|
|
1442
|
+
devServer: "docker" | "process";
|
|
1443
|
+
dockerFile: string;
|
|
1444
|
+
basePort?: number | undefined;
|
|
1445
|
+
containerPort?: number | undefined;
|
|
1446
|
+
dockerBuildArgs?: Record<string, string> | undefined;
|
|
1447
|
+
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
1448
|
+
dockerRunArgs?: string[] | undefined;
|
|
1449
|
+
dockerRunEnv?: Record<string, string> | undefined;
|
|
1450
|
+
} | undefined;
|
|
1451
|
+
database?: {
|
|
1452
|
+
databaseUrlEnvVarName: string;
|
|
1453
|
+
} | undefined;
|
|
1454
|
+
} | undefined;
|
|
1455
|
+
databaseProviders?: {
|
|
1456
|
+
neon?: {
|
|
1457
|
+
projectId: string;
|
|
1458
|
+
parentBranch: string;
|
|
1459
|
+
} | undefined;
|
|
1460
|
+
} | undefined;
|
|
1461
|
+
issueManagement?: {
|
|
1462
|
+
provider: "github" | "linear" | "jira";
|
|
1463
|
+
github?: {
|
|
1464
|
+
remote: string;
|
|
1465
|
+
} | undefined;
|
|
1466
|
+
linear?: {
|
|
1467
|
+
teamId: string;
|
|
1468
|
+
branchFormat?: string | undefined;
|
|
1469
|
+
apiToken?: string | undefined;
|
|
1470
|
+
} | undefined;
|
|
1471
|
+
jira?: {
|
|
1472
|
+
host: string;
|
|
1473
|
+
username: string;
|
|
1474
|
+
projectKey: string;
|
|
1475
|
+
defaultIssueType: string;
|
|
1476
|
+
defaultSubtaskType: string;
|
|
1477
|
+
doneStatuses: string[];
|
|
1478
|
+
apiToken?: string | undefined;
|
|
1479
|
+
boardId?: string | undefined;
|
|
1480
|
+
transitionMappings?: Record<string, string> | undefined;
|
|
1481
|
+
} | undefined;
|
|
1482
|
+
} | undefined;
|
|
1483
|
+
versionControl?: {
|
|
1484
|
+
provider: "github" | "bitbucket";
|
|
1485
|
+
bitbucket?: {
|
|
1486
|
+
username: string;
|
|
1487
|
+
apiToken?: string | undefined;
|
|
1488
|
+
workspace?: string | undefined;
|
|
1489
|
+
repoSlug?: string | undefined;
|
|
1490
|
+
reviewers?: string[] | undefined;
|
|
1491
|
+
} | undefined;
|
|
1492
|
+
} | undefined;
|
|
1493
|
+
mergeBehavior?: {
|
|
1494
|
+
mode: "pr" | "local" | "draft-pr";
|
|
1495
|
+
openBrowserOnFinish: boolean;
|
|
1496
|
+
remote?: string | undefined;
|
|
1497
|
+
autoCommitPush?: boolean | undefined;
|
|
1498
|
+
prTitlePrefix?: boolean | undefined;
|
|
1499
|
+
} | undefined;
|
|
1500
|
+
ide?: {
|
|
1501
|
+
type: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity";
|
|
1502
|
+
} | undefined;
|
|
1503
|
+
colors?: {
|
|
1504
|
+
terminal: boolean;
|
|
1505
|
+
vscode: boolean;
|
|
1506
|
+
} | undefined;
|
|
1507
|
+
}, {
|
|
1508
|
+
plan?: {
|
|
1509
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1510
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1511
|
+
planner?: "claude" | "gemini" | "codex" | undefined;
|
|
1512
|
+
reviewer?: "claude" | "gemini" | "codex" | "none" | undefined;
|
|
1513
|
+
waveVerification?: boolean | undefined;
|
|
1514
|
+
} | undefined;
|
|
1515
|
+
spin?: {
|
|
1516
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1517
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1518
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1519
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1520
|
+
postSwarmReview?: boolean | undefined;
|
|
1521
|
+
} | undefined;
|
|
1522
|
+
devServer?: {
|
|
1523
|
+
docker?: {
|
|
1524
|
+
dockerFile?: string | undefined;
|
|
1525
|
+
containerPort?: number | undefined;
|
|
1526
|
+
buildArgs?: Record<string, string> | undefined;
|
|
1527
|
+
runArgs?: string[] | undefined;
|
|
1528
|
+
runEnv?: Record<string, string> | undefined;
|
|
1529
|
+
} | undefined;
|
|
1530
|
+
mode?: "docker" | undefined;
|
|
1531
|
+
} | undefined;
|
|
1532
|
+
mainBranch?: string | undefined;
|
|
1533
|
+
sourceEnvOnStart?: boolean | undefined;
|
|
1534
|
+
worktreePrefix?: string | undefined;
|
|
1535
|
+
protectedBranches?: string[] | undefined;
|
|
1536
|
+
copyGitIgnoredPatterns?: string[] | undefined;
|
|
1537
|
+
workflows?: {
|
|
1538
|
+
issue?: {
|
|
1539
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
1540
|
+
noVerify?: boolean | undefined;
|
|
1541
|
+
startIde?: boolean | undefined;
|
|
1542
|
+
startDevServer?: boolean | undefined;
|
|
1543
|
+
startAiAgent?: boolean | undefined;
|
|
1544
|
+
startTerminal?: boolean | undefined;
|
|
1545
|
+
generateSummary?: boolean | undefined;
|
|
1546
|
+
} | undefined;
|
|
1547
|
+
pr?: {
|
|
1548
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
1549
|
+
noVerify?: boolean | undefined;
|
|
1550
|
+
startIde?: boolean | undefined;
|
|
1551
|
+
startDevServer?: boolean | undefined;
|
|
1552
|
+
startAiAgent?: boolean | undefined;
|
|
1553
|
+
startTerminal?: boolean | undefined;
|
|
1554
|
+
generateSummary?: boolean | undefined;
|
|
1555
|
+
} | undefined;
|
|
1556
|
+
regular?: {
|
|
1557
|
+
permissionMode?: "default" | "bypassPermissions" | "plan" | "acceptEdits" | undefined;
|
|
1558
|
+
noVerify?: boolean | undefined;
|
|
1559
|
+
startIde?: boolean | undefined;
|
|
1560
|
+
startDevServer?: boolean | undefined;
|
|
1561
|
+
startAiAgent?: boolean | undefined;
|
|
1562
|
+
startTerminal?: boolean | undefined;
|
|
1563
|
+
generateSummary?: boolean | undefined;
|
|
1564
|
+
} | undefined;
|
|
1565
|
+
} | undefined;
|
|
1566
|
+
agents?: Record<string, {
|
|
1567
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1568
|
+
swarmModel?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1569
|
+
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1570
|
+
swarmEffort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1571
|
+
enabled?: boolean | undefined;
|
|
1572
|
+
providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
|
|
1573
|
+
review?: boolean | undefined;
|
|
1574
|
+
swarmReview?: boolean | undefined;
|
|
1575
|
+
}> | null | undefined;
|
|
1576
|
+
summary?: {
|
|
1577
|
+
model?: "sonnet" | "opus" | "haiku" | "sonnet[1m]" | "opus[1m]" | undefined;
|
|
1578
|
+
} | undefined;
|
|
1579
|
+
capabilities?: {
|
|
1580
|
+
web?: {
|
|
1581
|
+
basePort?: number | undefined;
|
|
1582
|
+
protocol?: "http" | "https" | undefined;
|
|
1583
|
+
devServer?: "docker" | "process" | undefined;
|
|
1584
|
+
dockerFile?: string | undefined;
|
|
1585
|
+
containerPort?: number | undefined;
|
|
1586
|
+
dockerBuildArgs?: Record<string, string> | undefined;
|
|
1587
|
+
dockerBuildSecrets?: Record<string, string> | undefined;
|
|
1588
|
+
dockerRunArgs?: string[] | undefined;
|
|
1589
|
+
dockerRunEnv?: Record<string, string> | undefined;
|
|
1590
|
+
} | undefined;
|
|
1591
|
+
database?: {
|
|
1592
|
+
databaseUrlEnvVarName?: string | undefined;
|
|
1593
|
+
} | undefined;
|
|
1594
|
+
} | undefined;
|
|
1595
|
+
databaseProviders?: {
|
|
1596
|
+
neon?: {
|
|
1597
|
+
projectId: string;
|
|
1598
|
+
parentBranch: string;
|
|
1599
|
+
} | undefined;
|
|
1600
|
+
} | undefined;
|
|
1601
|
+
issueManagement?: {
|
|
1602
|
+
github?: {
|
|
1603
|
+
remote: string;
|
|
1604
|
+
} | undefined;
|
|
1605
|
+
linear?: {
|
|
1606
|
+
teamId: string;
|
|
1607
|
+
branchFormat?: string | undefined;
|
|
1608
|
+
apiToken?: string | undefined;
|
|
1609
|
+
} | undefined;
|
|
1610
|
+
jira?: {
|
|
1611
|
+
host: string;
|
|
1612
|
+
username: string;
|
|
1613
|
+
projectKey: string;
|
|
1614
|
+
apiToken?: string | undefined;
|
|
1615
|
+
boardId?: string | undefined;
|
|
1616
|
+
transitionMappings?: Record<string, string> | undefined;
|
|
1617
|
+
defaultIssueType?: string | undefined;
|
|
1618
|
+
defaultSubtaskType?: string | undefined;
|
|
1619
|
+
doneStatuses?: string[] | undefined;
|
|
1620
|
+
} | undefined;
|
|
1621
|
+
provider?: "github" | "linear" | "jira" | undefined;
|
|
1622
|
+
} | undefined;
|
|
1623
|
+
versionControl?: {
|
|
1624
|
+
provider?: "github" | "bitbucket" | undefined;
|
|
1625
|
+
bitbucket?: {
|
|
1626
|
+
username: string;
|
|
1627
|
+
apiToken?: string | undefined;
|
|
1628
|
+
workspace?: string | undefined;
|
|
1629
|
+
repoSlug?: string | undefined;
|
|
1630
|
+
reviewers?: string[] | undefined;
|
|
1631
|
+
} | undefined;
|
|
1632
|
+
} | undefined;
|
|
1633
|
+
mergeBehavior?: {
|
|
1634
|
+
mode?: "pr" | "local" | "draft-pr" | "github-pr" | "github-draft-pr" | "bitbucket-pr" | undefined;
|
|
1635
|
+
remote?: string | undefined;
|
|
1636
|
+
autoCommitPush?: boolean | undefined;
|
|
1637
|
+
prTitlePrefix?: boolean | undefined;
|
|
1638
|
+
openBrowserOnFinish?: boolean | undefined;
|
|
1639
|
+
} | undefined;
|
|
1640
|
+
ide?: {
|
|
1641
|
+
type?: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity" | undefined;
|
|
1642
|
+
} | undefined;
|
|
1643
|
+
colors?: {
|
|
1644
|
+
terminal?: boolean | undefined;
|
|
1645
|
+
vscode?: boolean | undefined;
|
|
1646
|
+
} | undefined;
|
|
1647
|
+
attribution?: "off" | "upstreamOnly" | "on" | undefined;
|
|
1648
|
+
git?: {
|
|
1649
|
+
commitTimeout?: number | undefined;
|
|
1650
|
+
} | undefined;
|
|
1651
|
+
}>;
|
|
1650
1652
|
/**
|
|
1651
|
-
*
|
|
1652
|
-
* Distinguishes between successful deletion, branch not found, and errors
|
|
1653
|
+
* TypeScript type for iloom settings derived from Zod schema
|
|
1653
1654
|
*/
|
|
1654
|
-
|
|
1655
|
-
/** Overall operation succeeded (true even if branch didn't exist) */
|
|
1656
|
-
success: boolean;
|
|
1657
|
-
/** True only if a branch was actually deleted */
|
|
1658
|
-
deleted: boolean;
|
|
1659
|
-
/** True if branch didn't exist (not an error, just nothing to do) */
|
|
1660
|
-
notFound: boolean;
|
|
1661
|
-
/** Error message if operation failed */
|
|
1662
|
-
error?: string;
|
|
1663
|
-
/** User declined deletion (for preview databases) */
|
|
1664
|
-
userDeclined?: boolean;
|
|
1665
|
-
/** Name of the branch that was processed */
|
|
1666
|
-
branchName?: string;
|
|
1667
|
-
}
|
|
1668
|
-
interface DatabaseProvider {
|
|
1669
|
-
createBranch(name: string, fromBranch?: string, cwd?: string): Promise<string>;
|
|
1670
|
-
deleteBranch(name: string, isPreview?: boolean, cwd?: string): Promise<DatabaseDeletionResult>;
|
|
1671
|
-
getConnectionString(branch: string, cwd?: string): Promise<string>;
|
|
1672
|
-
listBranches(cwd?: string): Promise<string[]>;
|
|
1673
|
-
branchExists(name: string, cwd?: string): Promise<boolean>;
|
|
1674
|
-
findPreviewBranch(branchName: string, cwd?: string): Promise<string | null>;
|
|
1675
|
-
getBranchNameFromEndpoint(endpointId: string, cwd?: string): Promise<string | null>;
|
|
1676
|
-
sanitizeBranchName(branchName: string): string;
|
|
1677
|
-
isAuthenticated(cwd?: string): Promise<boolean>;
|
|
1678
|
-
isCliAvailable(): Promise<boolean>;
|
|
1679
|
-
isConfigured(): boolean;
|
|
1680
|
-
}
|
|
1681
|
-
interface Config {
|
|
1682
|
-
defaultPort: number;
|
|
1683
|
-
databaseProvider?: 'neon' | 'supabase' | 'planetscale';
|
|
1684
|
-
claudeModel?: ClaudeModel;
|
|
1685
|
-
skipClaude?: boolean;
|
|
1686
|
-
customWorkspaceRoot?: string;
|
|
1687
|
-
}
|
|
1688
|
-
type OneShotMode = 'default' | 'noReview' | 'bypassPermissions';
|
|
1689
|
-
type ComplexityOverride = 'trivial' | 'simple' | 'complex';
|
|
1690
|
-
interface StartOptions {
|
|
1691
|
-
claude?: boolean;
|
|
1692
|
-
code?: boolean;
|
|
1693
|
-
devServer?: boolean;
|
|
1694
|
-
terminal?: boolean;
|
|
1695
|
-
childLoom?: boolean;
|
|
1696
|
-
epic?: boolean;
|
|
1697
|
-
createOnly?: boolean;
|
|
1698
|
-
oneShot?: OneShotMode;
|
|
1699
|
-
dangerouslySkipPermissions?: boolean;
|
|
1700
|
-
complexity?: ComplexityOverride;
|
|
1701
|
-
body?: string;
|
|
1702
|
-
json?: boolean;
|
|
1703
|
-
}
|
|
1704
|
-
interface AddIssueOptions {
|
|
1705
|
-
body?: string;
|
|
1706
|
-
json?: boolean;
|
|
1707
|
-
}
|
|
1708
|
-
interface FeedbackOptions {
|
|
1709
|
-
body?: string;
|
|
1710
|
-
}
|
|
1711
|
-
interface EnhanceOptions {
|
|
1712
|
-
noBrowser?: boolean;
|
|
1713
|
-
json?: boolean;
|
|
1714
|
-
}
|
|
1715
|
-
interface FinishOptions {
|
|
1716
|
-
force?: boolean;
|
|
1717
|
-
dryRun?: boolean;
|
|
1718
|
-
pr?: number;
|
|
1719
|
-
skipBuild?: boolean;
|
|
1720
|
-
noBrowser?: boolean;
|
|
1721
|
-
cleanup?: boolean;
|
|
1722
|
-
json?: boolean;
|
|
1723
|
-
skipToPr?: boolean;
|
|
1724
|
-
jsonStream?: boolean;
|
|
1725
|
-
review?: boolean;
|
|
1726
|
-
}
|
|
1655
|
+
type IloomSettings = z.infer<typeof IloomSettingsSchema>;
|
|
1727
1656
|
/**
|
|
1728
|
-
*
|
|
1729
|
-
* All flags are optional and can be combined (subject to validation)
|
|
1657
|
+
* Manages project-level settings from .iloom/settings.json
|
|
1730
1658
|
*/
|
|
1731
|
-
|
|
1732
|
-
/**
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
/**
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
/**
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1659
|
+
declare class SettingsManager {
|
|
1660
|
+
/**
|
|
1661
|
+
* Load settings from global, project, and local sources with proper precedence
|
|
1662
|
+
* Merge hierarchy (lowest to highest priority):
|
|
1663
|
+
* 1. Global settings (~/.config/iloom-ai/settings.json)
|
|
1664
|
+
* 2. Project settings (<PROJECT_ROOT>/.iloom/settings.json)
|
|
1665
|
+
* 3. Local settings (<PROJECT_ROOT>/.iloom/settings.local.json)
|
|
1666
|
+
* 4. CLI overrides (--set flags)
|
|
1667
|
+
* Returns empty object if all files don't exist (not an error)
|
|
1668
|
+
*/
|
|
1669
|
+
loadSettings(projectRoot?: string, cliOverrides?: Partial<IloomSettings>): Promise<IloomSettings>;
|
|
1670
|
+
/**
|
|
1671
|
+
* Log the final merged configuration for debugging
|
|
1672
|
+
*/
|
|
1673
|
+
private logFinalConfiguration;
|
|
1674
|
+
/**
|
|
1675
|
+
* Load and parse a single settings file
|
|
1676
|
+
* Returns empty object if file doesn't exist (not an error)
|
|
1677
|
+
* Uses non-defaulting schema to prevent polluting partial settings with defaults before merge
|
|
1678
|
+
*/
|
|
1679
|
+
private loadSettingsFile;
|
|
1680
|
+
/**
|
|
1681
|
+
* Deep merge two settings objects with priority to override
|
|
1682
|
+
* Uses deepmerge library with array replacement strategy
|
|
1683
|
+
*/
|
|
1684
|
+
private mergeSettings;
|
|
1685
|
+
/**
|
|
1686
|
+
* Format all Zod validation errors into a single error message
|
|
1687
|
+
*/
|
|
1688
|
+
private formatAllZodErrors;
|
|
1689
|
+
/**
|
|
1690
|
+
* Validate settings structure and model names using Zod schema
|
|
1691
|
+
* This method is kept for testing purposes but uses Zod internally
|
|
1692
|
+
* @internal - Only used in tests via bracket notation
|
|
1693
|
+
*/
|
|
1694
|
+
private validateSettings;
|
|
1695
|
+
/**
|
|
1696
|
+
* Get project root (defaults to process.cwd())
|
|
1697
|
+
*/
|
|
1698
|
+
private getProjectRoot;
|
|
1699
|
+
/**
|
|
1700
|
+
* Get global config directory path (~/.config/iloom-ai)
|
|
1701
|
+
*/
|
|
1702
|
+
private getGlobalConfigDir;
|
|
1703
|
+
/**
|
|
1704
|
+
* Get global settings file path (~/.config/iloom-ai/settings.json)
|
|
1705
|
+
*/
|
|
1706
|
+
private getGlobalSettingsPath;
|
|
1707
|
+
/**
|
|
1708
|
+
* Load and parse global settings file
|
|
1709
|
+
* Returns empty object if file doesn't exist (not an error)
|
|
1710
|
+
* Warns but returns empty object on validation/parse errors (graceful degradation)
|
|
1711
|
+
*/
|
|
1712
|
+
private loadGlobalSettingsFile;
|
|
1713
|
+
/**
|
|
1714
|
+
* Get effective protected branches list with mainBranch always included
|
|
1715
|
+
*
|
|
1716
|
+
* This method provides a single source of truth for protected branches logic:
|
|
1717
|
+
* 1. Use configured protectedBranches if provided
|
|
1718
|
+
* 2. Otherwise use defaults: [mainBranch, 'main', 'master', 'develop']
|
|
1719
|
+
* 3. ALWAYS ensure mainBranch is included even if user configured custom list
|
|
1720
|
+
*
|
|
1721
|
+
* @param projectRoot - Optional project root directory (defaults to process.cwd())
|
|
1722
|
+
* @returns Array of protected branch names with mainBranch guaranteed to be included
|
|
1723
|
+
*/
|
|
1724
|
+
getProtectedBranches(projectRoot?: string): Promise<string[]>;
|
|
1725
|
+
/**
|
|
1726
|
+
* Get the spin orchestrator model with default applied
|
|
1727
|
+
* Default is defined in SpinAgentSettingsSchema
|
|
1728
|
+
*
|
|
1729
|
+
* @param settings - Pre-loaded settings object
|
|
1730
|
+
* @returns Model shorthand (e.g. 'opus', 'sonnet', 'haiku', 'sonnet[1m]', 'opus[1m]')
|
|
1731
|
+
*/
|
|
1732
|
+
getSpinModel(settings?: IloomSettings, mode?: 'swarm'): ClaudeModel;
|
|
1733
|
+
/**
|
|
1734
|
+
* Get the plan command model with default applied
|
|
1735
|
+
* Default is defined in PlanCommandSettingsSchema
|
|
1736
|
+
*
|
|
1737
|
+
* @param settings - Pre-loaded settings object
|
|
1738
|
+
* @returns Model shorthand (e.g. 'opus', 'sonnet', 'haiku', 'sonnet[1m]', 'opus[1m]')
|
|
1739
|
+
*/
|
|
1740
|
+
getPlanModel(settings?: IloomSettings): ClaudeModel;
|
|
1741
|
+
/**
|
|
1742
|
+
* Get the plan command planner with default applied
|
|
1743
|
+
* Default is 'claude'
|
|
1744
|
+
*
|
|
1745
|
+
* @param settings - Pre-loaded settings object
|
|
1746
|
+
* @returns Planner provider ('claude', 'gemini', or 'codex')
|
|
1747
|
+
*/
|
|
1748
|
+
getPlanPlanner(settings?: IloomSettings): 'claude' | 'gemini' | 'codex';
|
|
1749
|
+
/**
|
|
1750
|
+
* Get the plan command reviewer with default applied
|
|
1751
|
+
* Default is 'none' (no review step)
|
|
1752
|
+
*
|
|
1753
|
+
* @param settings - Pre-loaded settings object
|
|
1754
|
+
* @returns Reviewer provider ('claude', 'gemini', 'codex', or 'none')
|
|
1755
|
+
*/
|
|
1756
|
+
getPlanReviewer(settings?: IloomSettings): 'claude' | 'gemini' | 'codex' | 'none';
|
|
1757
|
+
/**
|
|
1758
|
+
* Get the plan command waveVerification setting with default applied
|
|
1759
|
+
* Default is true (verification tasks are generated)
|
|
1760
|
+
*
|
|
1761
|
+
* @param settings - Pre-loaded settings object
|
|
1762
|
+
* @returns Whether wave verification is enabled
|
|
1763
|
+
*/
|
|
1764
|
+
getPlanWaveVerification(settings?: IloomSettings): boolean;
|
|
1765
|
+
/**
|
|
1766
|
+
* Get the spin effort level
|
|
1767
|
+
* Defaults to 'high' when not configured
|
|
1768
|
+
*
|
|
1769
|
+
* @param settings - Pre-loaded settings object
|
|
1770
|
+
* @param mode - When 'swarm', returns swarmEffort (defaults to 'high')
|
|
1771
|
+
* @returns Effort level
|
|
1772
|
+
*/
|
|
1773
|
+
getSpinEffort(settings?: IloomSettings, mode?: 'swarm'): EffortLevel;
|
|
1774
|
+
/**
|
|
1775
|
+
* Get the plan effort level
|
|
1776
|
+
* Defaults to 'high' when not configured
|
|
1777
|
+
*
|
|
1778
|
+
* @param settings - Pre-loaded settings object
|
|
1779
|
+
* @returns Effort level
|
|
1780
|
+
*/
|
|
1781
|
+
getPlanEffort(settings?: IloomSettings): EffortLevel;
|
|
1782
|
+
/**
|
|
1783
|
+
* Get the session summary model with default applied
|
|
1784
|
+
* Default is defined in SummarySettingsSchema
|
|
1785
|
+
*
|
|
1786
|
+
* @param settings - Pre-loaded settings object
|
|
1787
|
+
* @returns Model shorthand (e.g. 'opus', 'sonnet', 'haiku', 'sonnet[1m]', 'opus[1m]')
|
|
1788
|
+
*/
|
|
1789
|
+
getSummaryModel(settings?: IloomSettings): ClaudeModel;
|
|
1813
1790
|
}
|
|
1814
1791
|
|
|
1815
|
-
interface RgbColor {
|
|
1816
|
-
r: number;
|
|
1817
|
-
g: number;
|
|
1818
|
-
b: number;
|
|
1819
|
-
}
|
|
1820
|
-
interface ColorData {
|
|
1821
|
-
rgb: RgbColor;
|
|
1822
|
-
hex: string;
|
|
1823
|
-
index: number;
|
|
1824
|
-
}
|
|
1825
|
-
type Platform = 'darwin' | 'linux' | 'win32' | 'unsupported';
|
|
1826
|
-
interface ValidationOptions {
|
|
1827
|
-
dryRun?: boolean;
|
|
1828
|
-
skipTypecheck?: boolean;
|
|
1829
|
-
skipLint?: boolean;
|
|
1830
|
-
skipTests?: boolean;
|
|
1831
|
-
jsonStream?: boolean;
|
|
1832
|
-
}
|
|
1833
|
-
interface ValidationStepResult {
|
|
1834
|
-
step: 'typecheck' | 'compile' | 'lint' | 'test';
|
|
1835
|
-
passed: boolean;
|
|
1836
|
-
skipped: boolean;
|
|
1837
|
-
output?: string;
|
|
1838
|
-
error?: string;
|
|
1839
|
-
duration?: number;
|
|
1840
|
-
}
|
|
1841
|
-
interface ValidationResult {
|
|
1842
|
-
success: boolean;
|
|
1843
|
-
steps: ValidationStepResult[];
|
|
1844
|
-
totalDuration: number;
|
|
1845
|
-
}
|
|
1846
|
-
interface CommitOptions {
|
|
1847
|
-
dryRun?: boolean;
|
|
1848
|
-
issueNumber?: string | number;
|
|
1849
|
-
issuePrefix: string;
|
|
1850
|
-
message?: string;
|
|
1851
|
-
noReview?: boolean;
|
|
1852
|
-
skipVerify?: boolean;
|
|
1853
|
-
skipVerifySilent?: boolean;
|
|
1854
|
-
trailerType?: 'Refs' | 'Fixes';
|
|
1855
|
-
timeout?: number;
|
|
1856
|
-
}
|
|
1857
1792
|
/**
|
|
1858
|
-
*
|
|
1859
|
-
*
|
|
1793
|
+
* Manages Git worktrees for the iloom CLI
|
|
1794
|
+
* Ports functionality from bash scripts into TypeScript
|
|
1860
1795
|
*/
|
|
1861
|
-
declare class
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1796
|
+
declare class GitWorktreeManager {
|
|
1797
|
+
private readonly _workingDirectory;
|
|
1798
|
+
constructor(workingDirectory?: string);
|
|
1799
|
+
/**
|
|
1800
|
+
* Get the working directory for git operations (main worktree path)
|
|
1801
|
+
*/
|
|
1802
|
+
get workingDirectory(): string;
|
|
1803
|
+
/**
|
|
1804
|
+
* List all worktrees in the repository
|
|
1805
|
+
* Defaults to porcelain format for reliable machine parsing
|
|
1806
|
+
* Equivalent to: git worktree list --porcelain
|
|
1807
|
+
*/
|
|
1808
|
+
listWorktrees(options?: WorktreeListOptions): Promise<GitWorktree[]>;
|
|
1809
|
+
/**
|
|
1810
|
+
* Find worktree for a specific branch
|
|
1811
|
+
* Ports: find_worktree_for_branch() from find-worktree-for-branch.sh
|
|
1812
|
+
*/
|
|
1813
|
+
findWorktreeForBranch(branchName: string): Promise<GitWorktree | null>;
|
|
1814
|
+
/**
|
|
1815
|
+
* Check if a worktree is the main repository worktree
|
|
1816
|
+
* Uses findMainWorktreePathWithSettings to determine the main worktree based on settings.
|
|
1817
|
+
*
|
|
1818
|
+
* @param worktree - The worktree to check
|
|
1819
|
+
* @param settingsManager - SettingsManager instance for loading settings
|
|
1820
|
+
* @returns true if the worktree is the main worktree
|
|
1821
|
+
*/
|
|
1822
|
+
isMainWorktree(worktree: GitWorktree, settingsManager: SettingsManager): Promise<boolean>;
|
|
1823
|
+
/**
|
|
1824
|
+
* Check if a worktree is a PR worktree based on naming patterns
|
|
1825
|
+
* Ports: is_pr_worktree() from worktree-utils.sh
|
|
1826
|
+
*/
|
|
1827
|
+
isPRWorktree(worktree: GitWorktree): boolean;
|
|
1828
|
+
/**
|
|
1829
|
+
* Get PR number from worktree branch name
|
|
1830
|
+
* Ports: get_pr_number_from_worktree() from worktree-utils.sh
|
|
1831
|
+
*/
|
|
1832
|
+
getPRNumberFromWorktree(worktree: GitWorktree): number | null;
|
|
1833
|
+
/**
|
|
1834
|
+
* Create a new worktree
|
|
1835
|
+
* Ports worktree creation logic from new-branch-workflow.sh
|
|
1836
|
+
* @returns The absolute path to the created worktree
|
|
1837
|
+
*/
|
|
1838
|
+
createWorktree(options: WorktreeCreateOptions): Promise<string>;
|
|
1839
|
+
/**
|
|
1840
|
+
* Remove a worktree and optionally clean up associated files
|
|
1841
|
+
* Ports worktree removal logic from cleanup-worktree.sh
|
|
1842
|
+
* @returns A message describing what was done (for dry-run mode)
|
|
1843
|
+
*/
|
|
1844
|
+
removeWorktree(worktreePath: string, options?: WorktreeCleanupOptions): Promise<string | void>;
|
|
1845
|
+
/**
|
|
1846
|
+
* Validate worktree state and integrity
|
|
1847
|
+
*/
|
|
1848
|
+
validateWorktree(worktreePath: string): Promise<WorktreeValidation>;
|
|
1849
|
+
/**
|
|
1850
|
+
* Get detailed status information for a worktree
|
|
1851
|
+
*/
|
|
1852
|
+
getWorktreeStatus(worktreePath: string): Promise<WorktreeStatus>;
|
|
1853
|
+
/**
|
|
1854
|
+
* Generate a suggested worktree path for a branch
|
|
1855
|
+
*/
|
|
1856
|
+
generateWorktreePath(branchName: string, customRoot?: string, options?: {
|
|
1857
|
+
isPR?: boolean;
|
|
1858
|
+
prNumber?: number;
|
|
1859
|
+
prefix?: string;
|
|
1860
|
+
}): string;
|
|
1861
|
+
/**
|
|
1862
|
+
* Sanitize a branch name for use as a directory name
|
|
1863
|
+
* Replaces slashes with dashes and removes invalid filesystem characters
|
|
1864
|
+
* Ports logic from bash script line 593: ${BRANCH_NAME//\\//-}
|
|
1865
|
+
*/
|
|
1866
|
+
sanitizeBranchName(branchName: string): string;
|
|
1867
|
+
/**
|
|
1868
|
+
* Check if repository is in a valid state for worktree operations
|
|
1869
|
+
*/
|
|
1870
|
+
isRepoReady(): Promise<boolean>;
|
|
1871
|
+
/**
|
|
1872
|
+
* Get repository information
|
|
1873
|
+
*/
|
|
1874
|
+
getRepoInfo(): Promise<{
|
|
1875
|
+
root: string | null;
|
|
1876
|
+
defaultBranch: string;
|
|
1877
|
+
currentBranch: string | null;
|
|
1878
|
+
}>;
|
|
1879
|
+
/**
|
|
1880
|
+
* Prune stale worktree entries (worktrees that no longer exist on disk)
|
|
1881
|
+
*/
|
|
1882
|
+
pruneWorktrees(): Promise<void>;
|
|
1883
|
+
/**
|
|
1884
|
+
* Lock a worktree to prevent it from being pruned or moved
|
|
1885
|
+
*/
|
|
1886
|
+
lockWorktree(worktreePath: string, reason?: string): Promise<void>;
|
|
1887
|
+
/**
|
|
1888
|
+
* Unlock a previously locked worktree
|
|
1889
|
+
*/
|
|
1890
|
+
unlockWorktree(worktreePath: string): Promise<void>;
|
|
1891
|
+
/**
|
|
1892
|
+
* Find worktrees matching an identifier (branch name, path, or PR number)
|
|
1893
|
+
*/
|
|
1894
|
+
findWorktreesByIdentifier(identifier: string): Promise<GitWorktree[]>;
|
|
1895
|
+
/**
|
|
1896
|
+
* Find worktree for a specific issue number using exact pattern matching
|
|
1897
|
+
* Matches: issue-{N} at start OR after /, -, _ (but NOT issue-{N}X where X is a digit)
|
|
1898
|
+
* Supports patterns like: issue-44, feat/issue-44-feature, feat-issue-44, bugfix_issue-44, etc.
|
|
1899
|
+
* Avoids false matches like: tissue-44, myissue-44
|
|
1900
|
+
* Ports: find_existing_worktree() from bash script lines 131-165
|
|
1901
|
+
*/
|
|
1902
|
+
findWorktreeForIssue(issueNumber: string | number): Promise<GitWorktree | null>;
|
|
1903
|
+
/**
|
|
1904
|
+
* Find worktree for a specific PR by branch name
|
|
1905
|
+
* Ports: find_existing_worktree() for PR type from bash script lines 149-160
|
|
1906
|
+
*/
|
|
1907
|
+
findWorktreeForPR(prNumber: number, branchName: string): Promise<GitWorktree | null>;
|
|
1908
|
+
/**
|
|
1909
|
+
* Remove multiple worktrees
|
|
1910
|
+
* Returns a summary of successes and failures
|
|
1911
|
+
* Automatically filters out the main worktree
|
|
1912
|
+
*
|
|
1913
|
+
* @param worktrees - Array of worktrees to remove
|
|
1914
|
+
* @param settingsManager - SettingsManager instance for determining main worktree
|
|
1915
|
+
* @param options - Cleanup options
|
|
1916
|
+
*/
|
|
1917
|
+
removeWorktrees(worktrees: GitWorktree[], settingsManager: SettingsManager, options?: WorktreeCleanupOptions): Promise<{
|
|
1918
|
+
successes: Array<{
|
|
1919
|
+
worktree: GitWorktree;
|
|
1920
|
+
}>;
|
|
1921
|
+
failures: Array<{
|
|
1922
|
+
worktree: GitWorktree;
|
|
1923
|
+
error: string;
|
|
1924
|
+
}>;
|
|
1925
|
+
skipped: Array<{
|
|
1926
|
+
worktree: GitWorktree;
|
|
1927
|
+
reason: string;
|
|
1928
|
+
}>;
|
|
1929
|
+
}>;
|
|
1930
|
+
/**
|
|
1931
|
+
* Format worktree information for display
|
|
1932
|
+
*/
|
|
1933
|
+
formatWorktree(worktree: GitWorktree): {
|
|
1934
|
+
title: string;
|
|
1935
|
+
path: string;
|
|
1936
|
+
commit: string;
|
|
1937
|
+
};
|
|
1885
1938
|
}
|
|
1886
|
-
type InstallationMethod = 'global' | 'local' | 'linked' | 'unknown';
|
|
1887
1939
|
|
|
1888
1940
|
/**
|
|
1889
1941
|
* IssueTracker interface - abstraction for issue tracking providers
|
|
@@ -2305,6 +2357,7 @@ interface MetadataFile {
|
|
|
2305
2357
|
oneShot?: OneShotMode;
|
|
2306
2358
|
dangerouslySkipPermissions?: boolean;
|
|
2307
2359
|
complexity?: ComplexityOverride;
|
|
2360
|
+
effort?: EffortLevel;
|
|
2308
2361
|
capabilities?: ProjectCapability[];
|
|
2309
2362
|
state?: SwarmState;
|
|
2310
2363
|
childIssueNumbers?: string[];
|
|
@@ -2348,6 +2401,7 @@ interface WriteMetadataInput {
|
|
|
2348
2401
|
oneShot?: OneShotMode;
|
|
2349
2402
|
dangerouslySkipPermissions?: boolean;
|
|
2350
2403
|
complexity?: ComplexityOverride;
|
|
2404
|
+
effort?: EffortLevel;
|
|
2351
2405
|
capabilities: ProjectCapability[];
|
|
2352
2406
|
state?: SwarmState;
|
|
2353
2407
|
childIssueNumbers?: string[];
|
|
@@ -2392,6 +2446,7 @@ interface LoomMetadata {
|
|
|
2392
2446
|
oneShot: OneShotMode | null;
|
|
2393
2447
|
dangerouslySkipPermissions: boolean;
|
|
2394
2448
|
complexity: ComplexityOverride | null;
|
|
2449
|
+
effort: EffortLevel | null;
|
|
2395
2450
|
capabilities: ProjectCapability[];
|
|
2396
2451
|
state: SwarmState | null;
|
|
2397
2452
|
childIssueNumbers: string[];
|
|
@@ -3044,4 +3099,4 @@ declare class TableFormatter {
|
|
|
3044
3099
|
static previewFormatting(headers: string[], options?: TableFormatterOptions): string;
|
|
3045
3100
|
}
|
|
3046
3101
|
|
|
3047
|
-
export { type AddIssueOptions, type AddIssueResult, type AutoSwarmCompletedProperties, type AutoSwarmStartedProperties, type BatchCleanupResult, type BranchCleanupTarget, type BranchDeleteOptions, type BranchGenerationOptions, type BranchNameStrategy, type Capability, type ClaudeContext, ClaudeContextManager, type CleanupOptions, type CleanupResult, type CliInstalledProperties, type CliUpgradedProperties, type ColorData, type CommitOptions, type ComplexityOverride, type Config, type ContributeStartedProperties, type CreateLoomInput, type DatabaseDeletionResult, DatabaseManager, type DatabaseProvider, type DemoCompletedProperties, type DemoStartedProperties, type DevServerStartedEvent, type DevServerStoppedEvent, type EnhanceOptions, type EnhanceResult, type EnvFileOptions, type EnvOperationResult, type EnvVariable, EnvironmentManager, type EpicPlannedProperties, type EpicReportGeneratedProperties, type ErrorOccurredProperties, type FeedbackOptions, type FinishOptions, type FinishResult, GitCommandError, GitHubService, type GitStatus, type GitWorktree, GitWorktreeManager, type InitCompletedProperties, type InitStartedProperties, type InstallationMethod, type Issue, type IssueTracker, IssueTrackerFactory, type IssueTrackerInputDetection, type IssueTrackerProviderType, JiraWikiSanitizer, type LaunchMode, LinearMarkupConverter, type ListOptions, type Logger, type LoggerOptions, type Loom, type LoomAbandonedProperties, type LoomCreatedProperties, type LoomFinishedProperties, type LoomSummary, type MergeOptions, type MergeResult, type MockOptions, type OneShotMode, type OperationResult, PLACEHOLDER_COMMIT_PREFIX, type PRWorktreePattern, type Platform, type PortAssignmentOptions, type ProcessInfo, type ProjectCapability, type PullRequest, type RebaseOutcome, type RebaseResult, type RemoteBranchStatus, type ResourceCleanupOptions, type RgbColor, type SafetyCheck, type SessionStartedProperties, type StartOptions, type StartResult, type SummaryResult, type SwarmChildCompletedProperties, type SwarmCompletedProperties, type SwarmStartedProperties, TableFormatter, type TableFormatterOptions, type TableGenerationOptions, type TelemetryConfig, type TelemetryEventMap, type TelemetryEventName, type UpdateCheckCache, type UpdateCheckResult, UserAbortedCommitError, type ValidationOptions, type ValidationResult, type ValidationStepResult, type Workspace, type WorkspaceInput, WorkspaceManager, type WorkspaceSummary, type Worktree, type WorktreeCleanupOptions, type WorktreeCreateOptions, type WorktreeListOptions, type WorktreeOperationResult, type WorktreeStatus, type WorktreeValidation, branchExists, checkRemoteBranchStatus, createLogger, createStderrLogger, ensureRepositoryHasCommits, executeGitCommand, extractIssueNumber, extractPRNumber, fetchOrigin, findAllBranchesForIssue, findMainWorktreePath, findMainWorktreePathWithSettings, findPlaceholderCommitSha, findWorktreeForBranch, generateWorktreePath, getCurrentBranch, getDefaultBranch, getMergeTargetBranch, getRepoRoot, getThemeMode, getWorktreeRoot, hasUncommittedChanges, isBranchMergedIntoMain, isEmptyRepository, isFileGitignored, isFileTrackedByGit, isPRBranch, isPlaceholderCommit, isRemoteBranchUpToDate, isValidGitRepo, isWorktreePath, logger, parseWorktreeList, pushBranchToRemote, removePlaceholderCommitFromHead, removePlaceholderCommitFromHistory, setThemeMode };
|
|
3102
|
+
export { type AddIssueOptions, type AddIssueResult, type AutoSwarmCompletedProperties, type AutoSwarmStartedProperties, type BatchCleanupResult, type BranchCleanupTarget, type BranchDeleteOptions, type BranchGenerationOptions, type BranchNameStrategy, type Capability, type ClaudeContext, ClaudeContextManager, type CleanupOptions, type CleanupResult, type CliInstalledProperties, type CliUpgradedProperties, type ColorData, type CommitOptions, type ComplexityOverride, type Config, type ContributeStartedProperties, type CreateLoomInput, type DatabaseDeletionResult, DatabaseManager, type DatabaseProvider, type DemoCompletedProperties, type DemoStartedProperties, type DevServerStartedEvent, type DevServerStoppedEvent, type EffortLevel, type EnhanceOptions, type EnhanceResult, type EnvFileOptions, type EnvOperationResult, type EnvVariable, EnvironmentManager, type EpicPlannedProperties, type EpicReportGeneratedProperties, type ErrorOccurredProperties, type FeedbackOptions, type FinishOptions, type FinishResult, GitCommandError, GitHubService, type GitStatus, type GitWorktree, GitWorktreeManager, type InitCompletedProperties, type InitStartedProperties, type InstallationMethod, type Issue, type IssueTracker, IssueTrackerFactory, type IssueTrackerInputDetection, type IssueTrackerProviderType, JiraWikiSanitizer, type LaunchMode, LinearMarkupConverter, type ListOptions, type Logger, type LoggerOptions, type Loom, type LoomAbandonedProperties, type LoomCreatedProperties, type LoomFinishedProperties, type LoomSummary, type MergeOptions, type MergeResult, type MockOptions, type OneShotMode, type OperationResult, PLACEHOLDER_COMMIT_PREFIX, type PRWorktreePattern, type Platform, type PortAssignmentOptions, type ProcessInfo, type ProjectCapability, type PullRequest, type RebaseOutcome, type RebaseResult, type RemoteBranchStatus, type ResourceCleanupOptions, type RgbColor, type SafetyCheck, type SessionStartedProperties, type StartOptions, type StartResult, type SummaryResult, type SwarmChildCompletedProperties, type SwarmCompletedProperties, type SwarmStartedProperties, TableFormatter, type TableFormatterOptions, type TableGenerationOptions, type TelemetryConfig, type TelemetryEventMap, type TelemetryEventName, type UpdateCheckCache, type UpdateCheckResult, UserAbortedCommitError, VALID_EFFORT_LEVELS, type ValidationOptions, type ValidationResult, type ValidationStepResult, type Workspace, type WorkspaceInput, WorkspaceManager, type WorkspaceSummary, type Worktree, type WorktreeCleanupOptions, type WorktreeCreateOptions, type WorktreeListOptions, type WorktreeOperationResult, type WorktreeStatus, type WorktreeValidation, branchExists, checkRemoteBranchStatus, createLogger, createStderrLogger, ensureRepositoryHasCommits, executeGitCommand, extractIssueNumber, extractPRNumber, fetchOrigin, findAllBranchesForIssue, findMainWorktreePath, findMainWorktreePathWithSettings, findPlaceholderCommitSha, findWorktreeForBranch, generateWorktreePath, getCurrentBranch, getDefaultBranch, getMergeTargetBranch, getRepoRoot, getThemeMode, getWorktreeRoot, hasUncommittedChanges, isBranchMergedIntoMain, isEffortLevel, isEmptyRepository, isFileGitignored, isFileTrackedByGit, isPRBranch, isPlaceholderCommit, isRemoteBranchUpToDate, isValidGitRepo, isWorktreePath, logger, parseWorktreeList, pushBranchToRemote, removePlaceholderCommitFromHead, removePlaceholderCommitFromHistory, setThemeMode };
|