@iloom/cli 0.13.0-beta.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -18
  3. package/dist/{ClaudeContextManager-RRGREEZQ.js → ClaudeContextManager-ZH6LEA5I.js} +5 -5
  4. package/dist/{ClaudeService-LEPW6QAC.js → ClaudeService-YR66WXZN.js} +4 -4
  5. package/dist/{IssueTrackerFactory-KE2BDCLC.js → IssueTrackerFactory-O2ZBA666.js} +3 -3
  6. package/dist/{LoomLauncher-GKQMR5E6.js → LoomLauncher-V54ENBEF.js} +5 -5
  7. package/dist/{MetadataManager-V4LSJ2PB.js → MetadataManager-HHE6LQF2.js} +2 -2
  8. package/dist/{PromptTemplateManager-I75WKXM4.js → PromptTemplateManager-4RFELNYY.js} +2 -2
  9. package/dist/README.md +3 -18
  10. package/dist/{SettingsManager-KQU7OX7G.js → SettingsManager-SLSYEYDZ.js} +4 -4
  11. package/dist/agents/iloom-artifact-reviewer.md +1 -0
  12. package/dist/agents/iloom-code-reviewer.md +21 -0
  13. package/dist/agents/iloom-issue-analyze-and-plan.md +30 -12
  14. package/dist/agents/iloom-issue-analyzer.md +32 -7
  15. package/dist/agents/iloom-issue-complexity-evaluator.md +32 -12
  16. package/dist/agents/iloom-issue-implementer.md +31 -12
  17. package/dist/agents/iloom-issue-planner.md +30 -12
  18. package/dist/agents/iloom-wave-verifier.md +177 -4
  19. package/dist/{build-V3KADFMO.js → build-ZTGWDHWU.js} +8 -8
  20. package/dist/{chunk-VVQQIG64.js → chunk-55NTREIU.js} +33 -30
  21. package/dist/chunk-55NTREIU.js.map +1 -0
  22. package/dist/{chunk-AYLC633W.js → chunk-7TN5VW4I.js} +65 -7
  23. package/dist/chunk-7TN5VW4I.js.map +1 -0
  24. package/dist/{chunk-RFCAPHL5.js → chunk-C2BVNJW5.js} +2 -2
  25. package/dist/{chunk-3XEXT35Z.js → chunk-E5OM25WK.js} +3 -3
  26. package/dist/{chunk-Q7VXHJP6.js → chunk-EHAITKLS.js} +10 -6
  27. package/dist/{chunk-Q7VXHJP6.js.map → chunk-EHAITKLS.js.map} +1 -1
  28. package/dist/{chunk-ZUIFO7B4.js → chunk-ERMEYFT6.js} +7 -2
  29. package/dist/chunk-ERMEYFT6.js.map +1 -0
  30. package/dist/{chunk-WGUGB54H.js → chunk-F5NKWLMQ.js} +21 -24
  31. package/dist/chunk-F5NKWLMQ.js.map +1 -0
  32. package/dist/{chunk-TN2D2RX7.js → chunk-G2DGDCDP.js} +33 -224
  33. package/dist/chunk-G2DGDCDP.js.map +1 -0
  34. package/dist/{chunk-NUUFP53X.js → chunk-GPBX2BY2.js} +2 -2
  35. package/dist/{chunk-SN4S5CWL.js → chunk-GQDVH6FA.js} +2 -2
  36. package/dist/{chunk-YUOVWWJX.js → chunk-HKEXRZMU.js} +5 -310
  37. package/dist/chunk-HKEXRZMU.js.map +1 -0
  38. package/dist/{chunk-TAEVA4QR.js → chunk-HWDQRW3O.js} +3 -3
  39. package/dist/chunk-HWDQRW3O.js.map +1 -0
  40. package/dist/{chunk-KQSV7FOG.js → chunk-J5JOJPK3.js} +2 -2
  41. package/dist/{chunk-PD75ZCFT.js → chunk-KCAWSZUO.js} +18 -17
  42. package/dist/chunk-KCAWSZUO.js.map +1 -0
  43. package/dist/{chunk-QNPJXO53.js → chunk-KGOBNC5A.js} +4 -4
  44. package/dist/{chunk-H3T3EPF3.js → chunk-LNY2Y32V.js} +2 -2
  45. package/dist/{chunk-7RCUWU3I.js → chunk-MRPIDNZU.js} +1 -1
  46. package/dist/chunk-MRPIDNZU.js.map +1 -0
  47. package/dist/{chunk-VIQOQ463.js → chunk-OLJ54WGW.js} +15 -10
  48. package/dist/chunk-OLJ54WGW.js.map +1 -0
  49. package/dist/{chunk-QQULYI2S.js → chunk-P5MNWBLH.js} +108 -47
  50. package/dist/chunk-P5MNWBLH.js.map +1 -0
  51. package/dist/{chunk-4VQXMEEP.js → chunk-PPQ5LV7U.js} +3 -3
  52. package/dist/{chunk-4VQXMEEP.js.map → chunk-PPQ5LV7U.js.map} +1 -1
  53. package/dist/{chunk-QED2WB2D.js → chunk-PS6K2AOV.js} +5 -5
  54. package/dist/{chunk-JD3K2344.js → chunk-QNRXRSKC.js} +36 -3
  55. package/dist/chunk-QNRXRSKC.js.map +1 -0
  56. package/dist/{chunk-SA446KA2.js → chunk-T4KFKKEB.js} +7 -7
  57. package/dist/{chunk-XCP2WDYA.js → chunk-T4NESGYB.js} +3 -3
  58. package/dist/{chunk-QXGM32TO.js → chunk-TJDKGKQV.js} +2 -2
  59. package/dist/{chunk-X5DRLONY.js → chunk-UXBVDD7U.js} +6 -6
  60. package/dist/{chunk-JDN4SPV3.js → chunk-WYDLOQYO.js} +2 -2
  61. package/dist/{chunk-4JZEQBWV.js → chunk-XIVLGWUX.js} +3 -1
  62. package/dist/chunk-XIVLGWUX.js.map +1 -0
  63. package/dist/{chunk-NTDY5AMO.js → chunk-ZEFTWM5Z.js} +2 -2
  64. package/dist/{cleanup-RJKLI47I.js → cleanup-BCVY7PEF.js} +22 -22
  65. package/dist/cleanup-BCVY7PEF.js.map +1 -0
  66. package/dist/cli.js +136 -105
  67. package/dist/cli.js.map +1 -1
  68. package/dist/{commit-SUHRUMDE.js → commit-L5JNBU4U.js} +8 -8
  69. package/dist/{compile-2MD346PO.js → compile-GPJOHXH4.js} +8 -8
  70. package/dist/{contribute-P4BMRY7C.js → contribute-QEGCI4PS.js} +4 -4
  71. package/dist/{dev-server-ZNTLWOL5.js → dev-server-UQKNKU2S.js} +249 -31
  72. package/dist/dev-server-UQKNKU2S.js.map +1 -0
  73. package/dist/{feedback-Q6WG2WX4.js → feedback-2LWXKLQZ.js} +4 -4
  74. package/dist/{git-TX2IEMB3.js → git-IS7AV3ED.js} +4 -4
  75. package/dist/hooks/iloom-hook.js +40 -2
  76. package/dist/{ignite-P644W2PK.js → ignite-VQDJQ37S.js} +12 -14
  77. package/dist/index.d.ts +73 -75
  78. package/dist/index.js +32 -32
  79. package/dist/index.js.map +1 -1
  80. package/dist/{init-5HFY7JG6.js → init-7SDJUAEZ.js} +8 -8
  81. package/dist/{install-deps-J4ALTM27.js → install-deps-NGSFDNUW.js} +8 -8
  82. package/dist/{issues-LZMIF22U.js → issues-4HQKEUP7.js} +5 -5
  83. package/dist/{lint-XIXKU22H.js → lint-C5FOVRXY.js} +8 -8
  84. package/dist/mcp/issue-management-server.js +19 -22
  85. package/dist/mcp/issue-management-server.js.map +1 -1
  86. package/dist/neon-helpers-LCZAN4U4.js +11 -0
  87. package/dist/{open-KUO35JIJ.js → open-2HL6GV5F.js} +19 -15
  88. package/dist/open-2HL6GV5F.js.map +1 -0
  89. package/dist/{plan-7CF56OIR.js → plan-GC3HF73T.js} +86 -66
  90. package/dist/plan-GC3HF73T.js.map +1 -0
  91. package/dist/{projects-L5AHUBGA.js → projects-3F6T3KZL.js} +2 -2
  92. package/dist/prompts/init-prompt.txt +40 -36
  93. package/dist/prompts/issue-prompt.txt +4 -1
  94. package/dist/prompts/plan-prompt.txt +97 -16
  95. package/dist/prompts/regular-prompt.txt +1 -1
  96. package/dist/prompts/swarm-orchestrator-prompt.txt +25 -12
  97. package/dist/{rebase-MAMWPA2L.js → rebase-MLIN572O.js} +7 -7
  98. package/dist/{recap-IDBO3KM5.js → recap-CKGKFDJL.js} +7 -7
  99. package/dist/{run-RGZHCQ6M.js → run-CUNRQNZS.js} +19 -15
  100. package/dist/run-CUNRQNZS.js.map +1 -0
  101. package/dist/schema/settings.schema.json +35 -31
  102. package/dist/{shell-7ADCDFIV.js → shell-M2YYPNGV.js} +6 -6
  103. package/dist/{summary-7J2HORFD.js → summary-XR4CBJEG.js} +9 -9
  104. package/dist/{test-SRB7EWU6.js → test-ESDAHEVE.js} +8 -8
  105. package/dist/{test-git-G7ATVIXG.js → test-git-KWPLHYSI.js} +4 -4
  106. package/dist/{test-jira-Q2HPA522.js → test-jira-6NK7UHSV.js} +3 -3
  107. package/dist/{test-prefix-JMDGXR5A.js → test-prefix-VVODGHXP.js} +4 -4
  108. package/dist/{test-webserver-GZFVXBGD.js → test-webserver-AHXKC6H4.js} +6 -6
  109. package/dist/{vscode-3I7ISHUU.js → vscode-OY7HOVRO.js} +6 -6
  110. package/package.json +1 -1
  111. package/dist/chunk-4JZEQBWV.js.map +0 -1
  112. package/dist/chunk-7RCUWU3I.js.map +0 -1
  113. package/dist/chunk-AYLC633W.js.map +0 -1
  114. package/dist/chunk-JD3K2344.js.map +0 -1
  115. package/dist/chunk-PD75ZCFT.js.map +0 -1
  116. package/dist/chunk-QQULYI2S.js.map +0 -1
  117. package/dist/chunk-TAEVA4QR.js.map +0 -1
  118. package/dist/chunk-TN2D2RX7.js.map +0 -1
  119. package/dist/chunk-VIQOQ463.js.map +0 -1
  120. package/dist/chunk-VVQQIG64.js.map +0 -1
  121. package/dist/chunk-WGUGB54H.js.map +0 -1
  122. package/dist/chunk-YUOVWWJX.js.map +0 -1
  123. package/dist/chunk-ZUIFO7B4.js.map +0 -1
  124. package/dist/cleanup-RJKLI47I.js.map +0 -1
  125. package/dist/database-helpers-PRDFNDRO.js +0 -11
  126. package/dist/dev-server-ZNTLWOL5.js.map +0 -1
  127. package/dist/open-KUO35JIJ.js.map +0 -1
  128. package/dist/plan-7CF56OIR.js.map +0 -1
  129. package/dist/run-RGZHCQ6M.js.map +0 -1
  130. /package/dist/{ClaudeContextManager-RRGREEZQ.js.map → ClaudeContextManager-ZH6LEA5I.js.map} +0 -0
  131. /package/dist/{ClaudeService-LEPW6QAC.js.map → ClaudeService-YR66WXZN.js.map} +0 -0
  132. /package/dist/{IssueTrackerFactory-KE2BDCLC.js.map → IssueTrackerFactory-O2ZBA666.js.map} +0 -0
  133. /package/dist/{LoomLauncher-GKQMR5E6.js.map → LoomLauncher-V54ENBEF.js.map} +0 -0
  134. /package/dist/{MetadataManager-V4LSJ2PB.js.map → MetadataManager-HHE6LQF2.js.map} +0 -0
  135. /package/dist/{PromptTemplateManager-I75WKXM4.js.map → PromptTemplateManager-4RFELNYY.js.map} +0 -0
  136. /package/dist/{SettingsManager-KQU7OX7G.js.map → SettingsManager-SLSYEYDZ.js.map} +0 -0
  137. /package/dist/{build-V3KADFMO.js.map → build-ZTGWDHWU.js.map} +0 -0
  138. /package/dist/{chunk-RFCAPHL5.js.map → chunk-C2BVNJW5.js.map} +0 -0
  139. /package/dist/{chunk-3XEXT35Z.js.map → chunk-E5OM25WK.js.map} +0 -0
  140. /package/dist/{chunk-NUUFP53X.js.map → chunk-GPBX2BY2.js.map} +0 -0
  141. /package/dist/{chunk-SN4S5CWL.js.map → chunk-GQDVH6FA.js.map} +0 -0
  142. /package/dist/{chunk-KQSV7FOG.js.map → chunk-J5JOJPK3.js.map} +0 -0
  143. /package/dist/{chunk-QNPJXO53.js.map → chunk-KGOBNC5A.js.map} +0 -0
  144. /package/dist/{chunk-H3T3EPF3.js.map → chunk-LNY2Y32V.js.map} +0 -0
  145. /package/dist/{chunk-QED2WB2D.js.map → chunk-PS6K2AOV.js.map} +0 -0
  146. /package/dist/{chunk-SA446KA2.js.map → chunk-T4KFKKEB.js.map} +0 -0
  147. /package/dist/{chunk-XCP2WDYA.js.map → chunk-T4NESGYB.js.map} +0 -0
  148. /package/dist/{chunk-QXGM32TO.js.map → chunk-TJDKGKQV.js.map} +0 -0
  149. /package/dist/{chunk-X5DRLONY.js.map → chunk-UXBVDD7U.js.map} +0 -0
  150. /package/dist/{chunk-JDN4SPV3.js.map → chunk-WYDLOQYO.js.map} +0 -0
  151. /package/dist/{chunk-NTDY5AMO.js.map → chunk-ZEFTWM5Z.js.map} +0 -0
  152. /package/dist/{commit-SUHRUMDE.js.map → commit-L5JNBU4U.js.map} +0 -0
  153. /package/dist/{compile-2MD346PO.js.map → compile-GPJOHXH4.js.map} +0 -0
  154. /package/dist/{contribute-P4BMRY7C.js.map → contribute-QEGCI4PS.js.map} +0 -0
  155. /package/dist/{feedback-Q6WG2WX4.js.map → feedback-2LWXKLQZ.js.map} +0 -0
  156. /package/dist/{database-helpers-PRDFNDRO.js.map → git-IS7AV3ED.js.map} +0 -0
  157. /package/dist/{git-TX2IEMB3.js.map → ignite-VQDJQ37S.js.map} +0 -0
  158. /package/dist/{init-5HFY7JG6.js.map → init-7SDJUAEZ.js.map} +0 -0
  159. /package/dist/{install-deps-J4ALTM27.js.map → install-deps-NGSFDNUW.js.map} +0 -0
  160. /package/dist/{issues-LZMIF22U.js.map → issues-4HQKEUP7.js.map} +0 -0
  161. /package/dist/{lint-XIXKU22H.js.map → lint-C5FOVRXY.js.map} +0 -0
  162. /package/dist/{ignite-P644W2PK.js.map → neon-helpers-LCZAN4U4.js.map} +0 -0
  163. /package/dist/{projects-L5AHUBGA.js.map → projects-3F6T3KZL.js.map} +0 -0
  164. /package/dist/{rebase-MAMWPA2L.js.map → rebase-MLIN572O.js.map} +0 -0
  165. /package/dist/{recap-IDBO3KM5.js.map → recap-CKGKFDJL.js.map} +0 -0
  166. /package/dist/{shell-7ADCDFIV.js.map → shell-M2YYPNGV.js.map} +0 -0
  167. /package/dist/{summary-7J2HORFD.js.map → summary-XR4CBJEG.js.map} +0 -0
  168. /package/dist/{test-SRB7EWU6.js.map → test-ESDAHEVE.js.map} +0 -0
  169. /package/dist/{test-git-G7ATVIXG.js.map → test-git-KWPLHYSI.js.map} +0 -0
  170. /package/dist/{test-jira-Q2HPA522.js.map → test-jira-6NK7UHSV.js.map} +0 -0
  171. /package/dist/{test-prefix-JMDGXR5A.js.map → test-prefix-VVODGHXP.js.map} +0 -0
  172. /package/dist/{test-webserver-GZFVXBGD.js.map → test-webserver-AHXKC6H4.js.map} +0 -0
  173. /package/dist/{vscode-3I7ISHUU.js.map → vscode-OY7HOVRO.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1008,7 +1008,7 @@ __export(SettingsManager_exports, {
1008
1008
  SettingsManager: () => SettingsManager,
1009
1009
  SpinAgentSettingsSchema: () => SpinAgentSettingsSchema,
1010
1010
  SummarySettingsSchema: () => SummarySettingsSchema,
1011
- SupabaseSettingsSchema: () => SupabaseSettingsSchema,
1011
+ VALID_CLAUDE_MODELS: () => VALID_CLAUDE_MODELS,
1012
1012
  WorkflowPermissionSchema: () => WorkflowPermissionSchema,
1013
1013
  WorkflowPermissionSchemaNoDefaults: () => WorkflowPermissionSchemaNoDefaults,
1014
1014
  WorkflowsSettingsSchema: () => WorkflowsSettingsSchema,
@@ -1039,7 +1039,7 @@ function redactSensitiveFields(obj) {
1039
1039
  }
1040
1040
  return result;
1041
1041
  }
1042
- var mergeModeValues, mergeModeTransform, BaseAgentSettingsSchema, AgentSettingsSchema, SpinAgentSettingsSchema, PlanCommandSettingsSchema, SummarySettingsSchema, WorkflowPermissionSchema, WorkflowPermissionSchemaNoDefaults, WorkflowsSettingsSchema, WorkflowsSettingsSchemaNoDefaults, CapabilitiesSettingsSchema, CapabilitiesSettingsSchemaNoDefaults, DevServerSettingsSchema, DevServerSettingsSchemaNoDefaults, NeonSettingsSchema, SupabaseSettingsSchema, DatabaseProvidersSettingsSchema, IloomSettingsSchema, IloomSettingsSchemaNoDefaults, SettingsManager;
1042
+ var mergeModeValues, mergeModeTransform, VALID_CLAUDE_MODELS, BaseAgentSettingsSchema, AgentSettingsSchema, SpinAgentSettingsSchema, PlanCommandSettingsSchema, SummarySettingsSchema, WorkflowPermissionSchema, WorkflowPermissionSchemaNoDefaults, WorkflowsSettingsSchema, WorkflowsSettingsSchemaNoDefaults, CapabilitiesSettingsSchema, CapabilitiesSettingsSchemaNoDefaults, DevServerSettingsSchema, DevServerSettingsSchemaNoDefaults, NeonSettingsSchema, DatabaseProvidersSettingsSchema, IloomSettingsSchema, IloomSettingsSchemaNoDefaults, SettingsManager;
1043
1043
  var init_SettingsManager = __esm({
1044
1044
  "src/lib/SettingsManager.ts"() {
1045
1045
  "use strict";
@@ -1049,9 +1049,10 @@ var init_SettingsManager = __esm({
1049
1049
  const map = { "github-pr": "pr", "github-draft-pr": "draft-pr", "bitbucket-pr": "pr" };
1050
1050
  return map[val] ?? val;
1051
1051
  };
1052
+ VALID_CLAUDE_MODELS = ["sonnet", "opus", "haiku", "sonnet[1m]", "opus[1m]"];
1052
1053
  BaseAgentSettingsSchema = z.object({
1053
- model: z.enum(["sonnet", "opus", "haiku"]).optional().describe("Claude model shorthand: sonnet, opus, or haiku"),
1054
- swarmModel: z.enum(["sonnet", "opus", "haiku"]).optional().describe("Model to use for this agent in swarm mode. Overrides the base model when running inside swarm workers."),
1054
+ model: z.enum(VALID_CLAUDE_MODELS).optional().describe("Claude model shorthand: sonnet, opus, haiku, sonnet[1m], or opus[1m]"),
1055
+ swarmModel: z.enum(VALID_CLAUDE_MODELS).optional().describe("Model to use for this agent in swarm mode. Overrides the base model when running inside swarm workers."),
1055
1056
  enabled: z.boolean().optional().describe("Whether this agent is enabled. Defaults to true."),
1056
1057
  providers: z.record(
1057
1058
  z.enum(["claude", "gemini", "codex"]),
@@ -1062,18 +1063,18 @@ var init_SettingsManager = __esm({
1062
1063
  });
1063
1064
  AgentSettingsSchema = BaseAgentSettingsSchema;
1064
1065
  SpinAgentSettingsSchema = z.object({
1065
- model: z.enum(["sonnet", "opus", "haiku"]).default("opus").describe("Claude model shorthand for spin orchestrator"),
1066
- swarmModel: z.enum(["sonnet", "opus", "haiku"]).optional().describe("Model for the spin orchestrator when running in swarm mode. Overrides spin.model for swarm workflows."),
1066
+ model: z.enum(VALID_CLAUDE_MODELS).default("opus").describe("Claude model shorthand for spin orchestrator"),
1067
+ swarmModel: z.enum(VALID_CLAUDE_MODELS).optional().describe("Model for the spin orchestrator when running in swarm mode. Overrides spin.model for swarm workflows."),
1067
1068
  postSwarmReview: z.boolean().default(true).describe("Run a full code review after swarm completion, auto-fixing issues with confidence 80+. Defaults to true.")
1068
1069
  });
1069
1070
  PlanCommandSettingsSchema = z.object({
1070
- model: z.enum(["sonnet", "opus", "haiku"]).default("opus").describe("Claude model shorthand for plan command"),
1071
+ model: z.enum(VALID_CLAUDE_MODELS).default("opus").describe("Claude model shorthand for plan command"),
1071
1072
  planner: z.enum(["claude", "gemini", "codex"]).default("claude").describe("AI provider for creating the plan"),
1072
1073
  reviewer: z.enum(["claude", "gemini", "codex", "none"]).default("none").describe("AI provider for reviewing the plan (none to skip review)"),
1073
1074
  waveVerification: z.boolean().default(true).describe("When enabled, the planner generates verification child issues between dependency waves to catch integration issues early.")
1074
1075
  });
1075
1076
  SummarySettingsSchema = z.object({
1076
- model: z.enum(["sonnet", "opus", "haiku"]).default("sonnet").describe("Claude model shorthand for session summary generation")
1077
+ model: z.enum(VALID_CLAUDE_MODELS).default("sonnet").describe("Claude model shorthand for session summary generation")
1077
1078
  });
1078
1079
  WorkflowPermissionSchema = z.object({
1079
1080
  permissionMode: z.enum(["plan", "acceptEdits", "bypassPermissions", "default"]).optional().describe("Permission mode for Claude CLI in this workflow type"),
@@ -1106,10 +1107,12 @@ var init_SettingsManager = __esm({
1106
1107
  CapabilitiesSettingsSchema = z.object({
1107
1108
  web: z.object({
1108
1109
  basePort: z.number().min(1, "Base port must be >= 1").max(65535, "Base port must be <= 65535").optional().describe("Base port for web workspace port calculations (default: 3000)"),
1110
+ protocol: z.enum(["http", "https"]).default("http").describe("Protocol for dev server URLs (http or https)"),
1109
1111
  devServer: z.enum(["process", "docker"]).default("process").describe('Dev server mode: "process" runs natively, "docker" runs inside a Docker container with port mapping'),
1110
1112
  dockerFile: z.string().default("./Dockerfile").describe('Path to Dockerfile relative to worktree root (only used when devServer is "docker")'),
1111
1113
  containerPort: z.number().min(1, "Container port must be >= 1").max(65535, "Container port must be <= 65535").optional().describe("Port the app runs on inside the Docker container (auto-detected from EXPOSE directive if not set)"),
1112
1114
  dockerBuildArgs: z.record(z.string()).optional().describe('Build arguments to pass to docker build (e.g., {"NODE_ENV": "development"})'),
1115
+ dockerBuildSecrets: z.record(z.string()).optional().describe('Secret files to mount during docker build via --secret (e.g., {"npmrc": "~/.npmrc"}). Keys are secret IDs, values are source file paths.'),
1113
1116
  dockerRunArgs: z.array(z.string()).optional().describe('Additional arguments for docker run (e.g., ["-v", "./src:/app/src"] for volume mounts)')
1114
1117
  }).optional().describe('Web dev server settings. To declare a project as a web project, add "web" to the capabilities array in .iloom/package.iloom.json or .iloom/package.iloom.local.json.'),
1115
1118
  database: z.object({
@@ -1119,10 +1122,12 @@ var init_SettingsManager = __esm({
1119
1122
  CapabilitiesSettingsSchemaNoDefaults = z.object({
1120
1123
  web: z.object({
1121
1124
  basePort: z.number().min(1, "Base port must be >= 1").max(65535, "Base port must be <= 65535").optional().describe("Base port for web workspace port calculations (default: 3000)"),
1125
+ protocol: z.enum(["http", "https"]).optional().describe("Protocol for dev server URLs (http or https)"),
1122
1126
  devServer: z.enum(["process", "docker"]).optional().describe('Dev server mode: "process" runs natively, "docker" runs inside a Docker container with port mapping'),
1123
1127
  dockerFile: z.string().optional().describe('Path to Dockerfile relative to worktree root (only used when devServer is "docker")'),
1124
1128
  containerPort: z.number().min(1, "Container port must be >= 1").max(65535, "Container port must be <= 65535").optional().describe("Port the app runs on inside the Docker container (auto-detected from EXPOSE directive if not set)"),
1125
1129
  dockerBuildArgs: z.record(z.string()).optional().describe('Build arguments to pass to docker build (e.g., {"NODE_ENV": "development"})'),
1130
+ dockerBuildSecrets: z.record(z.string()).optional().describe('Secret files to mount during docker build via --secret (e.g., {"npmrc": "~/.npmrc"}). Keys are secret IDs, values are source file paths.'),
1126
1131
  dockerRunArgs: z.array(z.string()).optional().describe('Additional arguments for docker run (e.g., ["-v", "./src:/app/src"] for volume mounts)')
1127
1132
  }).optional().describe('Web dev server settings. To declare a project as a web project, add "web" to the capabilities array in .iloom/package.iloom.json or .iloom/package.iloom.local.json.'),
1128
1133
  database: z.object({
@@ -1172,17 +1177,9 @@ var init_SettingsManager = __esm({
1172
1177
  projectId: z.string().min(1).regex(/^[a-zA-Z0-9-]+$/, "Neon project ID must contain only letters, numbers, and hyphens").describe('Neon project ID found in your project URL (e.g., "fantastic-fox-3566354")'),
1173
1178
  parentBranch: z.string().min(1).describe("Branch from which new database branches are created")
1174
1179
  });
1175
- SupabaseSettingsSchema = z.object({
1176
- projectRef: z.string().min(1).describe('Supabase project reference ID (e.g., "abcdefghijklmnop")'),
1177
- parentBranch: z.string().min(1).optional().describe("Reserved for future use. Supabase currently always branches from the default branch."),
1178
- withData: z.boolean().optional().describe("Whether to include data when creating a new branch (defaults to true)")
1179
- });
1180
1180
  DatabaseProvidersSettingsSchema = z.object({
1181
1181
  neon: NeonSettingsSchema.optional().describe(
1182
1182
  "Neon database configuration. Requires Neon CLI installed and authenticated for database branching."
1183
- ),
1184
- supabase: SupabaseSettingsSchema.optional().describe(
1185
- "Supabase database configuration. Requires Supabase CLI installed and authenticated for database branching."
1186
1183
  )
1187
1184
  }).optional();
1188
1185
  IloomSettingsSchema = z.object({
@@ -1328,18 +1325,18 @@ var init_SettingsManager = __esm({
1328
1325
  "Per-agent configuration overrides. Available agents: iloom-issue-analyzer (analyzes issues), iloom-issue-planner (creates implementation plans), iloom-issue-analyze-and-plan (combined analysis and planning), iloom-issue-complexity-evaluator (evaluates complexity), iloom-issue-enhancer (enhances issue descriptions), iloom-issue-implementer (implements code changes), iloom-code-reviewer (reviews code changes against requirements), iloom-artifact-reviewer (reviews artifacts before posting), iloom-swarm-worker (swarm worker agent, dynamically generated). Use swarmModel on any agent to override its model in swarm mode."
1329
1326
  ),
1330
1327
  spin: z.object({
1331
- model: z.enum(["sonnet", "opus", "haiku"]).optional(),
1332
- swarmModel: z.enum(["sonnet", "opus", "haiku"]).optional(),
1328
+ model: z.enum(VALID_CLAUDE_MODELS).optional(),
1329
+ swarmModel: z.enum(VALID_CLAUDE_MODELS).optional(),
1333
1330
  postSwarmReview: z.boolean().optional()
1334
1331
  }).optional().describe("Spin orchestrator configuration"),
1335
1332
  plan: z.object({
1336
- model: z.enum(["sonnet", "opus", "haiku"]).optional(),
1333
+ model: z.enum(VALID_CLAUDE_MODELS).optional(),
1337
1334
  planner: z.enum(["claude", "gemini", "codex"]).optional(),
1338
1335
  reviewer: z.enum(["claude", "gemini", "codex", "none"]).optional(),
1339
1336
  waveVerification: z.boolean().optional()
1340
1337
  }).optional().describe("Plan command configuration"),
1341
1338
  summary: z.object({
1342
- model: z.enum(["sonnet", "opus", "haiku"]).optional()
1339
+ model: z.enum(VALID_CLAUDE_MODELS).optional()
1343
1340
  }).optional().describe("Session summary generation configuration"),
1344
1341
  capabilities: CapabilitiesSettingsSchemaNoDefaults.describe("Project capability configurations"),
1345
1342
  devServer: DevServerSettingsSchemaNoDefaults.optional().describe("Docker-based dev server configuration"),
@@ -1613,7 +1610,7 @@ ${errorMessages.join("\n")}`
1613
1610
  * Default is defined in SpinAgentSettingsSchema
1614
1611
  *
1615
1612
  * @param settings - Pre-loaded settings object
1616
- * @returns Model shorthand ('opus', 'sonnet', or 'haiku')
1613
+ * @returns Model shorthand (e.g. 'opus', 'sonnet', 'haiku', 'sonnet[1m]', 'opus[1m]')
1617
1614
  */
1618
1615
  getSpinModel(settings, mode) {
1619
1616
  var _a, _b;
@@ -1621,7 +1618,7 @@ ${errorMessages.join("\n")}`
1621
1618
  if ((_a = settings == null ? void 0 : settings.spin) == null ? void 0 : _a.swarmModel) {
1622
1619
  return settings.spin.swarmModel;
1623
1620
  }
1624
- return "opus";
1621
+ return "opus[1m]";
1625
1622
  }
1626
1623
  return ((_b = settings == null ? void 0 : settings.spin) == null ? void 0 : _b.model) ?? SpinAgentSettingsSchema.parse({}).model;
1627
1624
  }
@@ -1630,7 +1627,7 @@ ${errorMessages.join("\n")}`
1630
1627
  * Default is defined in PlanCommandSettingsSchema
1631
1628
  *
1632
1629
  * @param settings - Pre-loaded settings object
1633
- * @returns Model shorthand ('opus', 'sonnet', or 'haiku')
1630
+ * @returns Model shorthand (e.g. 'opus', 'sonnet', 'haiku', 'sonnet[1m]', 'opus[1m]')
1634
1631
  */
1635
1632
  getPlanModel(settings) {
1636
1633
  var _a;
@@ -1674,7 +1671,7 @@ ${errorMessages.join("\n")}`
1674
1671
  * Default is defined in SummarySettingsSchema
1675
1672
  *
1676
1673
  * @param settings - Pre-loaded settings object
1677
- * @returns Model shorthand ('opus', 'sonnet', or 'haiku')
1674
+ * @returns Model shorthand (e.g. 'opus', 'sonnet', 'haiku', 'sonnet[1m]', 'opus[1m]')
1678
1675
  */
1679
1676
  getSummaryModel(settings) {
1680
1677
  var _a;
@@ -1945,6 +1942,7 @@ var MetadataManager = class {
1945
1942
  prUrls: data.prUrls ?? {},
1946
1943
  draftPrNumber: data.draftPrNumber ?? null,
1947
1944
  oneShot: data.oneShot ?? null,
1945
+ dangerouslySkipPermissions: data.dangerouslySkipPermissions ?? false,
1948
1946
  complexity: data.complexity ?? null,
1949
1947
  capabilities: data.capabilities ?? [],
1950
1948
  state: data.state ?? null,
@@ -2018,6 +2016,7 @@ var MetadataManager = class {
2018
2016
  capabilities: input.capabilities,
2019
2017
  ...input.draftPrNumber && { draftPrNumber: input.draftPrNumber },
2020
2018
  ...input.oneShot && { oneShot: input.oneShot },
2019
+ ...input.dangerouslySkipPermissions && { dangerouslySkipPermissions: true },
2021
2020
  ...input.complexity && { complexity: input.complexity },
2022
2021
  ...input.state && { state: input.state },
2023
2022
  ...input.childIssueNumbers && input.childIssueNumbers.length > 0 && { childIssueNumbers: input.childIssueNumbers },
@@ -3236,7 +3235,7 @@ var GitWorktreeManager = class {
3236
3235
  */
3237
3236
  async findWorktreeForIssue(issueNumber) {
3238
3237
  const worktrees = await this.listWorktrees({ porcelain: true });
3239
- const pattern = new RegExp(`(?:^|[/_-])issue-${issueNumber}(?:-|__|$)`, "i");
3238
+ const pattern = new RegExp(`(?:^|[/_-])issue[-/]${issueNumber}(?:-|__|$)`, "i");
3240
3239
  return worktrees.find((wt) => pattern.test(wt.branch)) ?? null;
3241
3240
  }
3242
3241
  /**
@@ -5498,14 +5497,15 @@ var DatabaseManager = class {
5498
5497
  return null;
5499
5498
  }
5500
5499
  if (!await this.provider.isCliAvailable()) {
5501
- getLogger().warn(`Skipping database branch creation: ${this.provider.displayName} CLI not available`);
5502
- getLogger().warn(`Install with: ${this.provider.installHint}`);
5500
+ getLogger().warn("Skipping database branch creation: Neon CLI not available");
5501
+ getLogger().warn("Install with: npm install -g neonctl");
5503
5502
  return null;
5504
5503
  }
5505
5504
  try {
5506
5505
  const isAuth = await this.provider.isAuthenticated(cwd);
5507
5506
  if (!isAuth) {
5508
- getLogger().warn(`Skipping database branch creation: Not authenticated with ${this.provider.displayName} CLI`);
5507
+ getLogger().warn("Skipping database branch creation: Not authenticated with Neon CLI");
5508
+ getLogger().warn("Run: neon auth");
5509
5509
  return null;
5510
5510
  }
5511
5511
  } catch (error) {
@@ -5553,24 +5553,24 @@ var DatabaseManager = class {
5553
5553
  };
5554
5554
  }
5555
5555
  if (!await this.provider.isCliAvailable()) {
5556
- getLogger().info(`Skipping database branch deletion: ${this.provider.displayName} CLI not available. Install with: ${this.provider.installHint}`);
5556
+ getLogger().info("Skipping database branch deletion: CLI tool not available");
5557
5557
  return {
5558
5558
  success: false,
5559
5559
  deleted: false,
5560
5560
  notFound: true,
5561
- error: `${this.provider.displayName} CLI not available`,
5561
+ error: "CLI tool not available",
5562
5562
  branchName
5563
5563
  };
5564
5564
  }
5565
5565
  try {
5566
5566
  const isAuth = await this.provider.isAuthenticated(cwd);
5567
5567
  if (!isAuth) {
5568
- getLogger().warn(`Skipping database branch deletion: Not authenticated with ${this.provider.displayName}`);
5568
+ getLogger().warn("Skipping database branch deletion: Not authenticated with DB Provider");
5569
5569
  return {
5570
5570
  success: false,
5571
5571
  deleted: false,
5572
5572
  notFound: false,
5573
- error: `Not authenticated with ${this.provider.displayName}`,
5573
+ error: "Not authenticated with DB Provider",
5574
5574
  branchName
5575
5575
  };
5576
5576
  }