@shipit-ai/cli 1.166.2 → 1.167.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 (506) hide show
  1. package/README.md +26 -5
  2. package/apis/json-schema/AgentConfig.yaml +3 -0
  3. package/apis/json-schema/AgentPermissionSettings.yaml +23 -0
  4. package/apis/json-schema/AgentType.yaml +0 -1
  5. package/apis/json-schema/ClaudeCodePermissionMode.yaml +9 -0
  6. package/apis/json-schema/CodexPermissionMode.yaml +8 -0
  7. package/apis/json-schema/CopilotPermissionMode.yaml +8 -0
  8. package/apis/json-schema/CursorPermissionMode.yaml +7 -0
  9. package/apis/json-schema/Feature.yaml +3 -0
  10. package/apis/json-schema/GeminiPermissionMode.yaml +8 -0
  11. package/apis/json-schema/RovoDevPermissionMode.yaml +8 -0
  12. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +8 -0
  13. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  14. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -0
  15. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  16. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts +3 -0
  17. package/dist/packages/core/src/application/ports/output/agents/interactive-agent-executor.interface.d.ts.map +1 -1
  18. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  19. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  20. package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.d.ts +13 -0
  21. package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.d.ts.map +1 -0
  22. package/dist/packages/core/src/application/ports/output/services/settings-reader.interface.js +1 -0
  23. package/dist/packages/core/src/application/use-cases/agents/configure-agent.use-case.d.ts.map +1 -1
  24. package/dist/packages/core/src/application/use-cases/agents/configure-agent.use-case.js +4 -6
  25. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  26. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +1 -0
  27. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  28. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +2 -0
  29. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
  30. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  31. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  32. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +1 -0
  33. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  34. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +1 -0
  35. package/dist/packages/core/src/application/use-cases/settings/complete-onboarding.use-case.d.ts +2 -0
  36. package/dist/packages/core/src/application/use-cases/settings/complete-onboarding.use-case.d.ts.map +1 -1
  37. package/dist/packages/core/src/application/use-cases/settings/complete-onboarding.use-case.js +23 -0
  38. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  39. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +9 -1
  40. package/dist/packages/core/src/domain/generated/output.d.ts +68 -2
  41. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  42. package/dist/packages/core/src/domain/generated/output.js +36 -1
  43. package/dist/packages/core/src/infrastructure/di/modules/agents.module.d.ts.map +1 -1
  44. package/dist/packages/core/src/infrastructure/di/modules/agents.module.js +4 -2
  45. package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +1 -1
  46. package/dist/packages/core/src/infrastructure/di/modules/services.module.js +2 -0
  47. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -0
  48. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  49. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -0
  50. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +6 -0
  51. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  52. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +31 -0
  53. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-agent-permission-modes.d.ts +21 -0
  54. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-agent-permission-modes.d.ts.map +1 -0
  55. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/052-add-agent-permission-modes.js +35 -0
  56. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-feature-permission-mode.d.ts +14 -0
  57. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-feature-permission-mode.d.ts.map +1 -0
  58. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/053-add-feature-permission-mode.js +19 -0
  59. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts +3 -1
  60. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -1
  61. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.js +18 -7
  62. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts +1 -1
  63. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.d.ts.map +1 -1
  64. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +1 -6
  65. package/dist/packages/core/src/infrastructure/services/agents/common/agent-permissions.d.ts +21 -0
  66. package/dist/packages/core/src/infrastructure/services/agents/common/agent-permissions.d.ts.map +1 -0
  67. package/dist/packages/core/src/infrastructure/services/agents/common/agent-permissions.js +49 -0
  68. package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.d.ts +3 -1
  69. package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.d.ts.map +1 -1
  70. package/dist/packages/core/src/infrastructure/services/agents/common/agent-runner.service.js +4 -3
  71. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.d.ts.map +1 -1
  72. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.js +0 -3
  73. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  74. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +11 -0
  75. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.d.ts.map +1 -1
  76. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-interactive-executor.service.js +1 -1
  77. package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.d.ts.map +1 -1
  78. package/dist/packages/core/src/infrastructure/services/agents/common/executors/codex-cli-executor.service.js +4 -1
  79. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.d.ts.map +1 -1
  80. package/dist/packages/core/src/infrastructure/services/agents/common/executors/copilot-cli-executor.service.js +11 -4
  81. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts.map +1 -1
  82. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +11 -1
  83. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts.map +1 -1
  84. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.js +2 -1
  85. package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.d.ts.map +1 -1
  86. package/dist/packages/core/src/infrastructure/services/agents/common/executors/rovo-dev-executor.service.js +11 -4
  87. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.d.ts +3 -1
  88. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.d.ts.map +1 -1
  89. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.js +13 -6
  90. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +3 -1
  91. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +1 -1
  92. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +12 -3
  93. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +5 -0
  94. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  95. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +18 -1
  96. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  97. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -0
  98. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  99. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
  100. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +1 -0
  101. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  102. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +8 -0
  103. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts +3 -1
  104. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
  105. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +3 -2
  106. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts +3 -0
  107. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts.map +1 -1
  108. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +1 -1
  109. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +3 -0
  110. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  111. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +2 -1
  112. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +11 -3
  113. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  114. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +20 -5
  115. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.d.ts.map +1 -1
  116. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.js +6 -0
  117. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +1 -0
  118. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  119. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +4 -0
  120. package/dist/packages/core/src/infrastructure/services/settings-reader.service.d.ts +7 -0
  121. package/dist/packages/core/src/infrastructure/services/settings-reader.service.d.ts.map +1 -0
  122. package/dist/packages/core/src/infrastructure/services/settings-reader.service.js +25 -0
  123. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  124. package/dist/src/presentation/cli/commands/feat/new.command.js +18 -0
  125. package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
  126. package/dist/src/presentation/cli/commands/feat/show.command.js +2 -1
  127. package/dist/src/presentation/cli/commands/settings/agent.command.js +2 -2
  128. package/dist/src/presentation/cli/commands/settings/index.d.ts.map +1 -1
  129. package/dist/src/presentation/cli/commands/settings/index.js +3 -1
  130. package/dist/src/presentation/cli/commands/settings/permission-modes.d.ts +19 -0
  131. package/dist/src/presentation/cli/commands/settings/permission-modes.d.ts.map +1 -0
  132. package/dist/src/presentation/cli/commands/settings/permission-modes.js +38 -0
  133. package/dist/src/presentation/cli/commands/settings/permissions.command.d.ts +16 -0
  134. package/dist/src/presentation/cli/commands/settings/permissions.command.d.ts.map +1 -0
  135. package/dist/src/presentation/cli/commands/settings/permissions.command.js +147 -0
  136. package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +4 -10
  137. package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
  138. package/dist/src/presentation/tui/prompts/agent-select.prompt.js +8 -13
  139. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.d.ts +5 -3
  140. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.d.ts.map +1 -1
  141. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.js +10 -5
  142. package/dist/src/presentation/tui/wizards/onboarding/steps/agent-permissions.step.d.ts +17 -0
  143. package/dist/src/presentation/tui/wizards/onboarding/steps/agent-permissions.step.d.ts.map +1 -0
  144. package/dist/src/presentation/tui/wizards/onboarding/steps/agent-permissions.step.js +48 -0
  145. package/dist/src/presentation/tui/wizards/onboarding/types.d.ts +2 -0
  146. package/dist/src/presentation/tui/wizards/onboarding/types.d.ts.map +1 -1
  147. package/dist/src/presentation/web/app/actions/agent-permissions.d.ts +14 -0
  148. package/dist/src/presentation/web/app/actions/agent-permissions.d.ts.map +1 -0
  149. package/dist/src/presentation/web/app/actions/agent-permissions.js +181 -0
  150. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -1
  151. package/dist/src/presentation/web/app/actions/check-agent-auth.js +2 -5
  152. package/dist/src/presentation/web/app/actions/check-agent-tool.js +1 -1
  153. package/dist/src/presentation/web/app/actions/get-all-agent-models.d.ts.map +1 -1
  154. package/dist/src/presentation/web/app/actions/get-all-agent-models.js +2 -17
  155. package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
  156. package/dist/src/presentation/web/app/actions/get-merge-review-data.js +5 -0
  157. package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
  158. package/dist/src/presentation/web/app/actions/open-shell.js +5 -0
  159. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  160. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +43 -9
  161. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  162. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
  163. package/dist/src/presentation/web/components/common/feature-create-drawer/types.d.ts +2 -0
  164. package/dist/src/presentation/web/components/common/feature-create-drawer/types.d.ts.map +1 -1
  165. package/dist/src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.d.ts +2 -0
  166. package/dist/src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.d.ts.map +1 -1
  167. package/dist/src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.js +6 -0
  168. package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.d.ts +7 -1
  169. package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.d.ts.map +1 -1
  170. package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.js +24 -3
  171. package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.stories.d.ts.map +1 -1
  172. package/dist/src/presentation/web/components/common/feature-create-drawer/workflow-options-section.stories.js +3 -0
  173. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.stories.js +2 -2
  174. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts +2 -2
  175. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.d.ts.map +1 -1
  176. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.js +4 -11
  177. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts +1 -1
  178. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.d.ts.map +1 -1
  179. package/dist/src/presentation/web/components/common/feature-node/agent-type-icons.stories.js +5 -6
  180. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -0
  181. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  182. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  183. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +2 -2
  184. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +10 -10
  185. package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +1 -1
  186. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +2 -2
  187. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts +1 -1
  188. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.d.ts.map +1 -1
  189. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/AgentModelPicker.stories.js +3 -3
  190. package/dist/src/presentation/web/components/features/settings/agent-permission-picker.d.ts +8 -0
  191. package/dist/src/presentation/web/components/features/settings/agent-permission-picker.d.ts.map +1 -0
  192. package/dist/src/presentation/web/components/features/settings/agent-permission-picker.js +33 -0
  193. package/dist/src/presentation/web/components/features/settings/agent-permission-picker.stories.d.ts +15 -0
  194. package/dist/src/presentation/web/components/features/settings/agent-permission-picker.stories.d.ts.map +1 -0
  195. package/dist/src/presentation/web/components/features/settings/agent-permission-picker.stories.js +75 -0
  196. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -1
  197. package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +32 -4
  198. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +1 -1
  199. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -1
  200. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +2 -2
  201. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +2 -2
  202. package/dist/src/presentation/web/lib/path-sanitizers.d.ts.map +1 -1
  203. package/dist/src/presentation/web/lib/path-sanitizers.js +5 -0
  204. package/dist/translations/ar/cli.json +16 -0
  205. package/dist/translations/ar/tui.json +12 -10
  206. package/dist/translations/ar/web.json +15 -0
  207. package/dist/translations/de/cli.json +16 -0
  208. package/dist/translations/de/tui.json +13 -5
  209. package/dist/translations/de/web.json +15 -0
  210. package/dist/translations/en/cli.json +16 -0
  211. package/dist/translations/en/tui.json +12 -10
  212. package/dist/translations/en/web.json +15 -0
  213. package/dist/translations/es/cli.json +16 -0
  214. package/dist/translations/es/tui.json +12 -10
  215. package/dist/translations/es/web.json +15 -0
  216. package/dist/translations/fr/cli.json +16 -0
  217. package/dist/translations/fr/tui.json +12 -10
  218. package/dist/translations/fr/web.json +15 -0
  219. package/dist/translations/he/cli.json +16 -0
  220. package/dist/translations/he/tui.json +12 -10
  221. package/dist/translations/he/web.json +15 -0
  222. package/dist/translations/pt/cli.json +16 -0
  223. package/dist/translations/pt/tui.json +12 -10
  224. package/dist/translations/pt/web.json +15 -0
  225. package/dist/translations/ru/cli.json +16 -0
  226. package/dist/translations/ru/tui.json +12 -10
  227. package/dist/translations/ru/web.json +15 -0
  228. package/dist/tsconfig.build.tsbuildinfo +1 -1
  229. package/package.json +1 -1
  230. package/web/.next/BUILD_ID +1 -1
  231. package/web/.next/build-manifest.json +3 -3
  232. package/web/.next/fallback-build-manifest.json +3 -3
  233. package/web/.next/prerender-manifest.json +3 -3
  234. package/web/.next/required-server-files.js +2 -2
  235. package/web/.next/required-server-files.json +2 -2
  236. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  237. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -3
  238. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  239. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  240. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  241. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +2 -3
  242. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  243. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  244. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +72 -60
  245. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  246. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  247. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  248. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  249. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -4
  250. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  251. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  252. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  253. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -4
  254. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  255. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  256. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  257. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +2 -3
  258. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  259. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  260. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  261. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -3
  262. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  263. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  264. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  265. package/web/.next/server/app/(dashboard)/chat/page.js +2 -3
  266. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  267. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  268. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +72 -60
  269. package/web/.next/server/app/(dashboard)/create/page.js +3 -3
  270. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  271. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  272. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  273. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -4
  274. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  275. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  276. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  277. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -4
  278. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  279. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  280. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  281. package/web/.next/server/app/(dashboard)/page.js +2 -3
  282. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  283. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  284. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  285. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +2 -3
  286. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  287. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  288. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  289. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -3
  290. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  291. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  292. package/web/.next/server/app/_global-error.html +1 -1
  293. package/web/.next/server/app/_global-error.rsc +1 -1
  294. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  295. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  296. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  297. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  298. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  299. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  300. package/web/.next/server/app/_not-found/page.js +2 -3
  301. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  302. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  303. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  304. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  305. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  306. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  307. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  308. package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
  309. package/web/.next/server/app/settings/page.js +3 -4
  310. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  311. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  312. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  313. package/web/.next/server/app/skills/page.js +3 -3
  314. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  315. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  316. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  317. package/web/.next/server/app/tools/page.js +3 -3
  318. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  319. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  320. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  321. package/web/.next/server/app/version/page.js +2 -3
  322. package/web/.next/server/app/version/page.js.nft.json +1 -1
  323. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  324. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js +1 -1
  325. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
  326. package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js.map +1 -1
  327. package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js.map +1 -1
  328. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  329. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  330. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  331. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  332. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  333. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  334. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  335. package/web/.next/server/chunks/ssr/{_01mq~sm._.js → 11es_next_0q-kz~8._.js} +2 -2
  336. package/web/.next/server/chunks/ssr/11es_next_0q-kz~8._.js.map +1 -0
  337. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  338. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__02.89uf._.js +4 -0
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__02.89uf._.js.map +1 -0
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__04rq9lr._.js +4 -0
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__04rq9lr._.js.map +1 -0
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +4 -0
  344. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -0
  345. package/web/.next/server/chunks/ssr/[root-of-the-server]__0c0xoi_._.js +3 -0
  346. package/web/.next/server/chunks/ssr/[root-of-the-server]__0c0xoi_._.js.map +1 -0
  347. package/web/.next/server/chunks/ssr/[root-of-the-server]__0r5zhk.._.js +4 -0
  348. package/web/.next/server/chunks/ssr/[root-of-the-server]__0r5zhk.._.js.map +1 -0
  349. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  350. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js +4 -0
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js.map +1 -0
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +4 -0
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js.map +1 -0
  354. package/web/.next/server/chunks/ssr/[root-of-the-server]__0uy_5rw._.js +4 -0
  355. package/web/.next/server/chunks/ssr/[root-of-the-server]__0uy_5rw._.js.map +1 -0
  356. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +4 -0
  357. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -0
  358. package/web/.next/server/chunks/ssr/{_04rrcmm._.js → _0-.ckn5._.js} +2 -2
  359. package/web/.next/server/chunks/ssr/_0-.ckn5._.js.map +1 -0
  360. package/web/.next/server/chunks/ssr/_00k65h-._.js.map +1 -1
  361. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  362. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  363. package/web/.next/server/chunks/ssr/_069y.js._.js +6 -0
  364. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -0
  365. package/web/.next/server/chunks/ssr/_0__4si~._.js +4 -0
  366. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -0
  367. package/web/.next/server/chunks/ssr/_0_m17kl._.js +4 -0
  368. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -0
  369. package/web/.next/server/chunks/ssr/_0aaotn-._.js +3 -0
  370. package/web/.next/server/chunks/ssr/_0aaotn-._.js.map +1 -0
  371. package/web/.next/server/chunks/ssr/_0d4miu.._.js +4 -0
  372. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -0
  373. package/web/.next/server/chunks/ssr/_0e8ern9._.js +4 -0
  374. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -0
  375. package/web/.next/server/chunks/ssr/{_109n-y4._.js → _0n.magx._.js} +2 -2
  376. package/web/.next/server/chunks/ssr/_0n.magx._.js.map +1 -0
  377. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +6 -0
  378. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -0
  379. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +4 -0
  380. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -0
  381. package/web/.next/server/chunks/ssr/_0t59q8r._.js +4 -0
  382. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -0
  383. package/web/.next/server/chunks/ssr/_0tcccbb._.js +3 -0
  384. package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +1 -0
  385. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  386. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  387. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  388. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  389. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +4 -0
  390. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -0
  391. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  392. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  393. package/web/.next/server/chunks/ssr/_1161g9x._.js +4 -0
  394. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -0
  395. package/web/.next/server/chunks/ssr/{_0c497sr._.js → _138qywk._.js} +2 -2
  396. package/web/.next/server/chunks/ssr/{_0c497sr._.js.map → _138qywk._.js.map} +1 -1
  397. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +3 -0
  398. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -0
  399. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +3 -0
  400. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -0
  401. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  402. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js.map +1 -1
  403. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  404. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js.map +1 -1
  405. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  406. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  407. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_0aji.op._.js +1 -1
  408. package/web/.next/server/middleware-build-manifest.js +3 -3
  409. package/web/.next/server/pages/500.html +1 -1
  410. package/web/.next/server/server-reference-manifest.js +1 -1
  411. package/web/.next/server/server-reference-manifest.json +127 -109
  412. package/web/.next/static/chunks/0-woqr2brccx_.js +3 -0
  413. package/web/.next/static/chunks/{0ex35-_jtxyjc.js → 022nrd6snse79.js} +1 -1
  414. package/web/.next/static/chunks/{0t_6hx6ul7umb.js → 02phgt~f2c-2q.js} +1 -1
  415. package/web/.next/static/chunks/{0whez3wju~9ok.js → 03s7z6w1lj0w~.js} +1 -1
  416. package/web/.next/static/chunks/04~sw.nhpwy6s.css +1 -0
  417. package/web/.next/static/chunks/05enics63g._-.js +7 -0
  418. package/web/.next/static/chunks/08611baheit.t.js +1 -0
  419. package/web/.next/static/chunks/0_9k2ybutuphq.js +1 -0
  420. package/web/.next/static/chunks/{0oq-cvtg8rjjp.js → 0j.wph28jrce1.js} +1 -1
  421. package/web/.next/static/chunks/{0k~55i.ofbdeb.js → 0ls0v8h_qbctm.js} +1 -1
  422. package/web/.next/static/chunks/0ma7k9iohb3bb.js +1 -0
  423. package/web/.next/static/chunks/0ps5sykbi-z5-.js +1 -0
  424. package/web/.next/static/chunks/{0c_bi0dck80dt.js → 0q7ohuqneuur4.js} +1 -1
  425. package/web/.next/static/chunks/{07gx-h_y91lay.js → 0q8ax~44oybo2.js} +2 -2
  426. package/web/.next/static/chunks/15rbgqykl.er8.js +1 -0
  427. package/web/.next/static/chunks/{04xk1iouwcfcq.js → 17z2sq7c5z8cr.js} +3 -3
  428. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts +0 -12
  429. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +0 -1
  430. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +0 -233
  431. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/plan.fixture.d.ts +0 -8
  432. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/plan.fixture.d.ts.map +0 -1
  433. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/plan.fixture.js +0 -94
  434. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/research.fixture.d.ts +0 -8
  435. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/research.fixture.d.ts.map +0 -1
  436. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/research.fixture.js +0 -140
  437. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-analyze.fixture.d.ts +0 -8
  438. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-analyze.fixture.d.ts.map +0 -1
  439. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-analyze.fixture.js +0 -81
  440. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-requirements.fixture.d.ts +0 -8
  441. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-requirements.fixture.d.ts.map +0 -1
  442. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/spec-requirements.fixture.js +0 -131
  443. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/tasks.fixture.d.ts +0 -6
  444. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/tasks.fixture.d.ts.map +0 -1
  445. package/dist/packages/core/src/infrastructure/services/agents/common/executors/fixtures/tasks.fixture.js +0 -146
  446. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js +0 -3
  447. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js.map +0 -1
  448. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js +0 -3
  449. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js.map +0 -1
  450. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js +0 -3
  451. package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js.map +0 -1
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__04nnbmc._.js +0 -3
  453. package/web/.next/server/chunks/ssr/[root-of-the-server]__04nnbmc._.js.map +0 -1
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__07740t6._.js +0 -3
  455. package/web/.next/server/chunks/ssr/[root-of-the-server]__07740t6._.js.map +0 -1
  456. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l~puw4._.js +0 -3
  457. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l~puw4._.js.map +0 -1
  458. package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js +0 -3
  459. package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js.map +0 -1
  460. package/web/.next/server/chunks/ssr/[root-of-the-server]__0vwjc_m._.js +0 -3
  461. package/web/.next/server/chunks/ssr/[root-of-the-server]__0vwjc_m._.js.map +0 -1
  462. package/web/.next/server/chunks/ssr/[root-of-the-server]__0w4__yd._.js +0 -4
  463. package/web/.next/server/chunks/ssr/[root-of-the-server]__0w4__yd._.js.map +0 -1
  464. package/web/.next/server/chunks/ssr/_0.rsra~._.js +0 -3
  465. package/web/.next/server/chunks/ssr/_0.rsra~._.js.map +0 -1
  466. package/web/.next/server/chunks/ssr/_01mq~sm._.js.map +0 -1
  467. package/web/.next/server/chunks/ssr/_04rrcmm._.js.map +0 -1
  468. package/web/.next/server/chunks/ssr/_0c741v_._.js +0 -3
  469. package/web/.next/server/chunks/ssr/_0c741v_._.js.map +0 -1
  470. package/web/.next/server/chunks/ssr/_0jpbsh_._.js +0 -4
  471. package/web/.next/server/chunks/ssr/_0jpbsh_._.js.map +0 -1
  472. package/web/.next/server/chunks/ssr/_109n-y4._.js.map +0 -1
  473. package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js +0 -3
  474. package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js.map +0 -1
  475. package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js +0 -3
  476. package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js.map +0 -1
  477. package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js +0 -5
  478. package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js.map +0 -1
  479. package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js +0 -3
  480. package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js.map +0 -1
  481. package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js +0 -3
  482. package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js.map +0 -1
  483. package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js +0 -5
  484. package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js.map +0 -1
  485. package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js +0 -3
  486. package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js.map +0 -1
  487. package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js +0 -3
  488. package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js.map +0 -1
  489. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js +0 -3
  490. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js.map +0 -1
  491. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js +0 -3
  492. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map +0 -1
  493. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js +0 -3
  494. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map +0 -1
  495. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js +0 -3
  496. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js.map +0 -1
  497. package/web/.next/static/chunks/0-fy~80ui.5os.js +0 -7
  498. package/web/.next/static/chunks/039ic1ygq-to3.js +0 -1
  499. package/web/.next/static/chunks/07a4jt64wdipb.js +0 -1
  500. package/web/.next/static/chunks/0_imq4rg3q.fe.js +0 -3
  501. package/web/.next/static/chunks/0i084mozx131g.js +0 -1
  502. package/web/.next/static/chunks/0j_0i2qsrwh-c.js +0 -1
  503. package/web/.next/static/chunks/0r5dju6f1-i38.css +0 -1
  504. /package/web/.next/static/{ynyh_sSxbFA995FRvBUxs → GSG_c1emY-f_AA00vD56y}/_buildManifest.js +0 -0
  505. /package/web/.next/static/{ynyh_sSxbFA995FRvBUxs → GSG_c1emY-f_AA00vD56y}/_clientMiddlewareManifest.js +0 -0
  506. /package/web/.next/static/{ynyh_sSxbFA995FRvBUxs → GSG_c1emY-f_AA00vD56y}/_ssgManifest.js +0 -0
@@ -0,0 +1,181 @@
1
+ 'use server';
2
+ import { resolve } from '../../lib/server-container.js';
3
+ import { updateSettings as updateSettingsSingleton } from '../../../../../packages/core/src/infrastructure/services/settings.service.js';
4
+ import { revalidatePath } from 'next/cache';
5
+ import { AgentType, ClaudeCodePermissionMode, CursorPermissionMode, GeminiPermissionMode, CodexPermissionMode, CopilotPermissionMode, RovoDevPermissionMode, } from '../../../../../packages/core/src/domain/generated/output.js';
6
+ const VALID_MODES = {
7
+ [AgentType.ClaudeCode]: [
8
+ {
9
+ value: ClaudeCodePermissionMode.BypassPermissions,
10
+ label: 'Bypass permissions',
11
+ description: 'Skip all permission checks. Fastest for batch runs.',
12
+ batchSafe: true,
13
+ },
14
+ {
15
+ value: ClaudeCodePermissionMode.AcceptEdits,
16
+ label: 'Accept edits',
17
+ description: 'Auto-approve file edits; prompt for shell/network.',
18
+ batchSafe: false,
19
+ },
20
+ {
21
+ value: ClaudeCodePermissionMode.Plan,
22
+ label: 'Plan',
23
+ description: 'Read-only; proposes changes without acting.',
24
+ batchSafe: false,
25
+ },
26
+ {
27
+ value: ClaudeCodePermissionMode.Default,
28
+ label: 'Default',
29
+ description: 'Prompt for everything except reads.',
30
+ batchSafe: false,
31
+ },
32
+ ],
33
+ [AgentType.Cursor]: [
34
+ {
35
+ value: CursorPermissionMode.Yolo,
36
+ label: 'Yolo',
37
+ description: 'Write files and execute commands autonomously.',
38
+ batchSafe: true,
39
+ },
40
+ {
41
+ value: CursorPermissionMode.Propose,
42
+ label: 'Propose',
43
+ description: 'Read and analyze; output a diff without writing.',
44
+ batchSafe: true,
45
+ },
46
+ ],
47
+ [AgentType.GeminiCli]: [
48
+ {
49
+ value: GeminiPermissionMode.Yolo,
50
+ label: 'Yolo',
51
+ description: 'Auto-approve all tool calls.',
52
+ batchSafe: true,
53
+ },
54
+ {
55
+ value: GeminiPermissionMode.AutoEdit,
56
+ label: 'Auto-edit',
57
+ description: 'Auto-approve edits; prompt for shell.',
58
+ batchSafe: false,
59
+ },
60
+ {
61
+ value: GeminiPermissionMode.Default,
62
+ label: 'Default',
63
+ description: 'Prompt for every tool call.',
64
+ batchSafe: false,
65
+ },
66
+ ],
67
+ [AgentType.CodexCli]: [
68
+ {
69
+ value: CodexPermissionMode.DangerFullAccess,
70
+ label: 'Full access',
71
+ description: 'No sandbox. Unrestricted access.',
72
+ batchSafe: true,
73
+ },
74
+ {
75
+ value: CodexPermissionMode.WorkspaceWrite,
76
+ label: 'Workspace write',
77
+ description: 'Writes inside worktree, no network.',
78
+ batchSafe: true,
79
+ },
80
+ {
81
+ value: CodexPermissionMode.ReadOnly,
82
+ label: 'Read only',
83
+ description: 'Cannot modify anything.',
84
+ batchSafe: true,
85
+ },
86
+ ],
87
+ [AgentType.CopilotCli]: [
88
+ {
89
+ value: CopilotPermissionMode.Yolo,
90
+ label: 'Yolo',
91
+ description: 'Disable all permission prompts.',
92
+ batchSafe: true,
93
+ },
94
+ {
95
+ value: CopilotPermissionMode.AllowPaths,
96
+ label: 'Allow paths',
97
+ description: 'Filesystem access auto-approved; shell prompts.',
98
+ batchSafe: false,
99
+ },
100
+ {
101
+ value: CopilotPermissionMode.Prompt,
102
+ label: 'Prompt',
103
+ description: 'Built-in tool category defaults.',
104
+ batchSafe: false,
105
+ },
106
+ ],
107
+ [AgentType.RovoDev]: [
108
+ {
109
+ value: RovoDevPermissionMode.Yolo,
110
+ label: 'Yolo',
111
+ description: 'Bypass all prompts.',
112
+ batchSafe: true,
113
+ },
114
+ {
115
+ value: RovoDevPermissionMode.Shadow,
116
+ label: 'Shadow',
117
+ description: 'Temporary workspace clone. Experimental.',
118
+ batchSafe: false,
119
+ },
120
+ {
121
+ value: RovoDevPermissionMode.Config,
122
+ label: 'Config',
123
+ description: 'Respect ~/.rovodev/config.yml settings.',
124
+ batchSafe: false,
125
+ },
126
+ ],
127
+ };
128
+ /** Agent type to AgentPermissionSettings key mapping */
129
+ const AGENT_TYPE_TO_PERMISSION_KEY = {
130
+ [AgentType.ClaudeCode]: 'claudeCode',
131
+ [AgentType.Cursor]: 'cursor',
132
+ [AgentType.GeminiCli]: 'geminiCli',
133
+ [AgentType.CodexCli]: 'codexCli',
134
+ [AgentType.CopilotCli]: 'copilotCli',
135
+ [AgentType.RovoDev]: 'rovoDev',
136
+ };
137
+ export async function getAgentPermissionOptions(agentType) {
138
+ return VALID_MODES[agentType] ?? [];
139
+ }
140
+ export async function getCurrentAgentPermissionMode(agentType) {
141
+ const loadUseCase = resolve('LoadSettingsUseCase');
142
+ const settings = await loadUseCase.execute();
143
+ const key = AGENT_TYPE_TO_PERMISSION_KEY[agentType];
144
+ if (!key)
145
+ return undefined;
146
+ return settings.agent?.permissions?.[key];
147
+ }
148
+ export async function setAgentPermissionMode(agentType, mode) {
149
+ try {
150
+ const key = AGENT_TYPE_TO_PERMISSION_KEY[agentType];
151
+ if (!key) {
152
+ return { success: false, error: `Unsupported agent type: ${agentType}` };
153
+ }
154
+ const modes = VALID_MODES[agentType];
155
+ if (!modes?.some((m) => m.value === mode)) {
156
+ return { success: false, error: `Invalid permission mode: ${mode}` };
157
+ }
158
+ const loadUseCase = resolve('LoadSettingsUseCase');
159
+ const current = await loadUseCase.execute();
160
+ const updatedSettings = {
161
+ ...current,
162
+ agent: {
163
+ ...current.agent,
164
+ permissions: {
165
+ ...current.agent?.permissions,
166
+ [key]: mode,
167
+ },
168
+ },
169
+ updatedAt: new Date(),
170
+ };
171
+ const updateUseCase = resolve('UpdateSettingsUseCase');
172
+ await updateUseCase.execute(updatedSettings);
173
+ updateSettingsSingleton(updatedSettings);
174
+ revalidatePath('/', 'layout');
175
+ return { success: true };
176
+ }
177
+ catch (error) {
178
+ const message = error instanceof Error ? error.message : 'Failed to update permission mode';
179
+ return { success: false, error: message };
180
+ }
181
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"check-agent-auth.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-agent-auth.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0FAA0F;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA+ID;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CA4H/D"}
1
+ {"version":3,"file":"check-agent-auth.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/check-agent-auth.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0FAA0F;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA4ID;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CA4H/D"}
@@ -12,9 +12,6 @@ const AGENT_LABELS = {
12
12
  cursor: 'Cursor CLI',
13
13
  'gemini-cli': 'Gemini CLI',
14
14
  'rovo-dev': 'Rovo Dev CLI',
15
- aider: 'Aider',
16
- continue: 'Continue',
17
- dev: 'Demo',
18
15
  };
19
16
  const AGENT_TOOL_MAP = {
20
17
  'claude-code': 'claude-code',
@@ -92,7 +89,7 @@ function tier1AuthCheck(agentType) {
92
89
  return existsSync(acliDir) ? 'file' : false;
93
90
  }
94
91
  default:
95
- // dev, aider, continue — assume no auth needed
92
+ // Unknown agents — assume no auth needed
96
93
  return 'env-var';
97
94
  }
98
95
  }
@@ -169,7 +166,7 @@ export async function checkAgentAuth() {
169
166
  const label = AGENT_LABELS[agentType] ?? agentType;
170
167
  const toolId = AGENT_TOOL_MAP[agentType] ?? null;
171
168
  const binaryName = AGENT_BINARY_MAP[agentType] ?? null;
172
- // Dev/demo agents — always good
169
+ // Agents without a tool mapping — always good
173
170
  if (!toolId) {
174
171
  return {
175
172
  agentType,
@@ -22,7 +22,7 @@ const AGENT_BINARY_MAP = {
22
22
  export async function checkAgentTool(agentType) {
23
23
  const toolId = AGENT_TOOL_MAP[agentType] ?? null;
24
24
  const binaryName = AGENT_BINARY_MAP[agentType] ?? null;
25
- // Dev agent and unknown agents don't need a tool
25
+ // Agents without a tool mapping don't need a tool check
26
26
  if (!toolId) {
27
27
  return { agentType, toolId: null, tool: null, installed: true, binaryName: null };
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-all-agent-models.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-all-agent-models.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAoCD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAmDpE"}
1
+ {"version":3,"file":"get-all-agent-models.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-all-agent-models.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAkCD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAsCpE"}
@@ -8,9 +8,8 @@ const AGENT_LABELS = {
8
8
  cursor: 'Cursor CLI',
9
9
  'gemini-cli': 'Gemini CLI',
10
10
  'rovo-dev': 'Rovo Dev CLI',
11
- dev: 'Demo',
12
11
  };
13
- /** Sort weight — higher = further down. Demo always last. */
12
+ /** Sort weight — lower = further up in the list. */
14
13
  const AGENT_ORDER = {
15
14
  'claude-code': 0,
16
15
  'codex-cli': 1,
@@ -18,7 +17,6 @@ const AGENT_ORDER = {
18
17
  cursor: 3,
19
18
  'gemini-cli': 4,
20
19
  'rovo-dev': 5,
21
- dev: 99,
22
20
  };
23
21
  /**
24
22
  * Maps agent types to their corresponding tool IDs for availability checks.
@@ -45,25 +43,12 @@ export async function getAllAgentModels() {
45
43
  ...getModelMeta(id),
46
44
  })),
47
45
  }))
48
- .map((g) => {
49
- // Dev agent gets fun demo models
50
- if (g.agentType === 'dev' && g.models.length === 0) {
51
- return {
52
- ...g,
53
- models: [
54
- { id: 'gpt-8', ...getModelMeta('gpt-8') },
55
- { id: 'opus-7', ...getModelMeta('opus-7') },
56
- ],
57
- };
58
- }
59
- return g;
60
- })
61
46
  .filter((g) => g.models.length > 0);
62
47
  // Check which agents are actually installed
63
48
  const toolService = resolve('IToolInstallerService');
64
49
  const groupsWithStatus = await Promise.all(groups.map(async (group) => {
65
50
  const toolId = AGENT_TOOL_IDS[group.agentType];
66
- if (!toolId || group.agentType === 'dev') {
51
+ if (!toolId) {
67
52
  return { ...group, installed: true };
68
53
  }
69
54
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"get-merge-review-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,sDAAsD,CAAC;AAI9D,KAAK,wBAAwB,GAAG,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwDpE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAuI7F"}
1
+ {"version":3,"file":"get-merge-review-data.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,sDAAsD,CAAC;AAI9D,KAAK,wBAAwB,GAAG,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwDpE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4I7F"}
@@ -130,6 +130,11 @@ export async function getMergeReviewData(featureId) {
130
130
  isWithinRoot(resolvedEvidenceDir, resolvedHome)) {
131
131
  const resolvedManifest = realpathOrNull(join(resolvedEvidenceDir, 'manifest.json'));
132
132
  if (resolvedManifest && isWithinRoot(resolvedManifest, resolvedEvidenceDir)) {
133
+ // SECURITY: resolvedManifest validated by realpathOrNull + isWithinRoot
134
+ // containment on line 159. featureId flows through SHA-256 hash in
135
+ // computeEvidenceDir (hex-only output neutralizes injection). Double
136
+ // containment check: home dir → evidence dir → manifest. Alert
137
+ // js/path-injection #27 dismissed as false positive.
133
138
  const raw = JSON.parse(readFileSync(resolvedManifest, 'utf-8'));
134
139
  // Pass the UNRESOLVED evidenceDir so returned paths share the
135
140
  // same root form the evidence route's prefix check expects.
@@ -1 +1 @@
1
- {"version":3,"file":"open-shell.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-shell.ts"],"names":[],"mappings":"AAmDA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2F9E"}
1
+ {"version":3,"file":"open-shell.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-shell.ts"],"names":[],"mappings":"AAmDA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgG9E"}
@@ -77,6 +77,11 @@ export async function openShell(input) {
77
77
  // shell treats as a single literal argument to `cd`.
78
78
  const escapedPath = shellEscapePosixPath(targetPath);
79
79
  const command = config.openDirectory.replaceAll('{dir}', escapedPath);
80
+ // SECURITY: targetPath from realpathSync (must exist on disk); single-quote
81
+ // shell-escaped via shellEscapePosixPath; localhost-only server action.
82
+ // shell:true is required by tool configs using `cd {dir} && exec <tool>`.
83
+ // CodeQL flags this because it does not model custom sanitizer functions —
84
+ // alert js/command-line-injection #29 dismissed as false positive.
80
85
  const child = spawn(command, [], {
81
86
  detached: true,
82
87
  stdio: 'ignore',
@@ -1 +1 @@
1
- {"version":3,"file":"base-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/base-drawer/base-drawer.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiBlE,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGpF,QAAA,MAAM,cAAc;;8EAWlB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,YAAY,CAAC,OAAO,cAAc,CAAC;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yGAAyG;IACzG,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,OAAO,EACP,KAAa,EACb,qBAA6B,EAC7B,KAAgB,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,aAAa,EAAE,MAAM,EACrB,YAAY,GACb,EAAE,eAAe,2CAgJjB"}
1
+ {"version":3,"file":"base-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/base-drawer/base-drawer.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiBlE,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGpF,QAAA,MAAM,cAAc;;8EAWlB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,YAAY,CAAC,OAAO,cAAc,CAAC;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yGAAyG;IACzG,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,OAAO,EACP,KAAa,EACb,qBAA6B,EAC7B,KAAgB,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,aAAa,EAAE,MAAM,EACrB,YAAY,GACb,EAAE,eAAe,2CAmLjB"}
@@ -60,30 +60,64 @@ export function BaseDrawer({ open, onClose, modal = false, dismissOnOutsideClick
60
60
  return () => document.removeEventListener('keydown', handleKeyDown);
61
61
  }, [open, modal, onClose]);
62
62
  // Close when clicking outside the drawer panel (no overlay needed — canvas stays draggable).
63
- // Uses `click` (not `pointerdown`) so canvas drags don't trigger this.
63
+ //
64
+ // Uses `click` (not `pointerdown`) as the trigger so canvas drags don't close the drawer,
65
+ // but tracks the `pointerdown` target separately. When the user presses the mouse on an
66
+ // in-drawer control that opens a portaled popover (Radix Select, DropdownMenu, Popover),
67
+ // Radix calls preventDefault on pointerdown and opens its portal over the trigger. By
68
+ // the time pointerup fires, the cursor is over the portal overlay, and Chrome computes
69
+ // the `click` event's target as the common ancestor of pointerdown/pointerup — which is
70
+ // `<body>` because the portal is detached from the drawer subtree. Without tracking the
71
+ // pointerdown origin we would misread this as an outside click and close the drawer.
64
72
  useEffect(() => {
65
73
  if (!open || modal)
66
74
  return;
75
+ // When dismissOnOutsideClick is false (default), also respect data-no-drawer-close guards.
76
+ const ignoreSelector = dismissOnOutsideClick
77
+ ? '[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]'
78
+ : '[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]';
79
+ /** True when `el` is inside the drawer or an explicitly-ignored overlay. */
80
+ const isInsideOrIgnored = (el) => {
81
+ if (!el)
82
+ return false;
83
+ if (contentRef.current?.contains(el))
84
+ return true;
85
+ if (el.closest(ignoreSelector))
86
+ return true;
87
+ return false;
88
+ };
89
+ // Track the most recent pointerdown target so the click handler can check
90
+ // where the gesture ORIGINATED, not just where it landed.
91
+ let pointerDownOrigin = null;
92
+ const handlePointerDown = (e) => {
93
+ pointerDownOrigin = e.target;
94
+ };
67
95
  const handleClick = (e) => {
96
+ const origin = pointerDownOrigin;
97
+ // Clear for the next gesture regardless of outcome.
98
+ pointerDownOrigin = null;
68
99
  const target = e.target;
69
100
  // If the clicked element was unmounted by React before the event reached
70
101
  // the document (e.g. a "Next" button removed on the last step), it is no
71
102
  // longer in the DOM tree — treat it as an internal click, not an outside one.
72
103
  if (!document.body.contains(target))
73
104
  return;
74
- if (contentRef.current?.contains(target))
105
+ // Click landed inside the drawer or a protected overlay.
106
+ if (isInsideOrIgnored(target))
75
107
  return;
76
- // Don't close when clicking inside Radix overlays.
77
- // When dismissOnOutsideClick is false (default), also respect data-no-drawer-close guards.
78
- const ignoreSelector = dismissOnOutsideClick
79
- ? '[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]'
80
- : '[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]';
81
- if (target.closest(ignoreSelector))
108
+ // Click landed outside, but the gesture ORIGINATED inside the drawer or a
109
+ // protected overlay (e.g. a Radix Select trigger whose portal stole the
110
+ // pointerup target). This is not a real outside click — bail out.
111
+ if (isInsideOrIgnored(origin))
82
112
  return;
83
113
  onClose();
84
114
  };
115
+ document.addEventListener('pointerdown', handlePointerDown, true);
85
116
  document.addEventListener('click', handleClick);
86
- return () => document.removeEventListener('click', handleClick);
117
+ return () => {
118
+ document.removeEventListener('pointerdown', handlePointerDown, true);
119
+ document.removeEventListener('click', handleClick);
120
+ };
87
121
  }, [open, modal, onClose, dismissOnOutsideClick]);
88
122
  return (_jsxs(Drawer, { direction: drawerDirection, modal: modal, handleOnly: true, open: open, onOpenChange: (isOpen) => {
89
123
  if (!isOpen)
@@ -1 +1 @@
1
- {"version":3,"file":"feature-create-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAM5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE3F,YAAY,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAC5E,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,EAAE,wBAAwB,2CA6L1B"}
1
+ {"version":3,"file":"feature-create-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAM5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE3F,YAAY,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAC5E,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,EAAE,wBAAwB,2CAgM1B"}
@@ -46,5 +46,5 @@ export function FeatureCreateDrawer({ open, onClose, onSubmit, repositoryPath, i
46
46
  form.validRepoPath.split('/').pop() })] })) : null, _jsx(PromptSection, { description: form.description, onDescriptionChange: form.setDescription, attachments: form.attachments, onRemoveFile: form.handleRemoveFile, onNotesChange: form.handleNotesChange, onPaste: form.handlePaste, onDragEnter: form.handleDragEnter, onDragLeave: form.handleDragLeave, onDragOver: form.handleDragOver, onDrop: form.handleDrop, onAddFiles: form.handleAddFiles, isDragOver: form.isDragOver, uploadError: form.uploadError, isPromptFocused: form.isPromptFocused, onPromptFocus: () => form.setIsPromptFocused(true), onPromptBlur: () => form.setIsPromptFocused(false), fast: form.fast, onFastChange: form.setFast, pending: form.pending, onPendingChange: form.setPending, overrideAgent: form.overrideAgent, overrideModel: form.overrideModel, currentAgentType: currentAgentType, currentModel: currentModel, onAgentModelChange: (agent, model) => {
47
47
  form.setOverrideAgent(agent);
48
48
  form.setOverrideModel(model);
49
- }, isSubmitting: isSubmitting }), hasFeatures && initialParentId !== undefined ? (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "parent-feature", className: "text-muted-foreground text-xs font-semibold tracking-wider", children: t('createDrawer.parentFeature') }), _jsx(ParentFeatureCombobox, { features: features, value: form.parentId, onChange: form.setParentId, disabled: isSubmitting })] })) : null, _jsx(WorkflowOptionsSection, { approvalGates: form.approvalGates, onApprovalGatesChange: form.setApprovalGates, enableEvidence: form.enableEvidence, onEnableEvidenceChange: form.setEnableEvidence, commitEvidence: form.commitEvidence, onCommitEvidenceChange: form.setCommitEvidence, push: form.push, onPushChange: form.setPush, openPr: form.openPr, onOpenPrChange: form.setOpenPr, ciWatchEnabled: form.ciWatchEnabled, onCiWatchChange: form.setCiWatchEnabled, rebaseBeforeBranch: form.rebaseBeforeBranch, onRebaseBeforeBranchChange: form.setRebaseBeforeBranch, commitSpecs: form.commitSpecs, onCommitSpecsChange: form.setCommitSpecs, forkAndPr: form.forkAndPr, onForkAndPrChange: form.setForkAndPr, canPush: form.canPush, fast: form.fast, computedPush: form.computedPush, computedOpenPr: form.computedOpenPr, isSubmitting: isSubmitting })] }) }) }) }));
49
+ }, isSubmitting: isSubmitting }), hasFeatures && initialParentId !== undefined ? (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(Label, { htmlFor: "parent-feature", className: "text-muted-foreground text-xs font-semibold tracking-wider", children: t('createDrawer.parentFeature') }), _jsx(ParentFeatureCombobox, { features: features, value: form.parentId, onChange: form.setParentId, disabled: isSubmitting })] })) : null, _jsx(WorkflowOptionsSection, { approvalGates: form.approvalGates, onApprovalGatesChange: form.setApprovalGates, enableEvidence: form.enableEvidence, onEnableEvidenceChange: form.setEnableEvidence, commitEvidence: form.commitEvidence, onCommitEvidenceChange: form.setCommitEvidence, push: form.push, onPushChange: form.setPush, openPr: form.openPr, onOpenPrChange: form.setOpenPr, ciWatchEnabled: form.ciWatchEnabled, onCiWatchChange: form.setCiWatchEnabled, rebaseBeforeBranch: form.rebaseBeforeBranch, onRebaseBeforeBranchChange: form.setRebaseBeforeBranch, commitSpecs: form.commitSpecs, onCommitSpecsChange: form.setCommitSpecs, forkAndPr: form.forkAndPr, onForkAndPrChange: form.setForkAndPr, canPush: form.canPush, fast: form.fast, computedPush: form.computedPush, computedOpenPr: form.computedOpenPr, isSubmitting: isSubmitting, agentType: form.overrideAgent ?? currentAgentType, permissionMode: form.permissionMode, onPermissionModeChange: form.setPermissionMode })] }) }) }) }));
50
50
  }
@@ -50,6 +50,8 @@ export interface FeatureCreatePayload {
50
50
  agentType?: string;
51
51
  /** Optional model override for this feature run */
52
52
  model?: string;
53
+ /** Optional per-feature permission mode override (overrides agent default from settings) */
54
+ permissionMode?: string;
53
55
  sessionId?: string;
54
56
  }
55
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAElG,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,WAAW,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAElG,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,WAAW,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -50,6 +50,8 @@ export declare function useFeatureCreateForm({ open, onClose, onSubmit, reposito
50
50
  setOverrideAgent: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
51
51
  overrideModel: string | undefined;
52
52
  setOverrideModel: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
53
+ permissionMode: string | undefined;
54
+ setPermissionMode: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
53
55
  selectedRepoPath: string | undefined;
54
56
  setSelectedRepoPath: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
55
57
  localRepos: RepositoryOption[];
@@ -1 +1 @@
1
- {"version":3,"file":"use-feature-create-form.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAyEtF,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,EAAE,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAwJuB,IAAI,EAAE;yBA8Df,KAAK,CAAC,SAAS;yBASf,KAAK,CAAC,SAAS;wBAShB,KAAK,CAAC,SAAS;oBAMhD,KAAK,CAAC,SAAS;qBAef,KAAK,CAAC,cAAc;sBAqBpB,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;;2BA6GI,MAAM;4BAIL,MAAM,SAAS,MAAM;;EA2EjE"}
1
+ {"version":3,"file":"use-feature-create-form.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/use-feature-create-form.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAyEtF,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAChB,EAAE,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA0JuB,IAAI,EAAE;yBA8Df,KAAK,CAAC,SAAS;yBASf,KAAK,CAAC,SAAS;wBAShB,KAAK,CAAC,SAAS;oBAMhD,KAAK,CAAC,SAAS;qBAef,KAAK,CAAC,cAAc;sBAqBpB,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;;2BA+GI,MAAM;4BAIL,MAAM,SAAS,MAAM;;EA6EjE"}
@@ -111,6 +111,7 @@ export function useFeatureCreateForm({ open, onClose, onSubmit, repositoryPath,
111
111
  const [rebaseBeforeBranch, setRebaseBeforeBranch] = useState(true);
112
112
  const [overrideAgent, setOverrideAgent] = useState(undefined);
113
113
  const [overrideModel, setOverrideModel] = useState(undefined);
114
+ const [permissionMode, setPermissionMode] = useState(undefined);
114
115
  const [selectedRepoPath, setSelectedRepoPath] = useState(validRepoPath || undefined);
115
116
  const [localRepos, setLocalRepos] = useState(repositories ?? []);
116
117
  const [isDragOver, setIsDragOver] = useState(false);
@@ -185,6 +186,7 @@ export function useFeatureCreateForm({ open, onClose, onSubmit, repositoryPath,
185
186
  setRebaseBeforeBranch(true);
186
187
  setOverrideAgent(undefined);
187
188
  setOverrideModel(undefined);
189
+ setPermissionMode(undefined);
188
190
  setUploadError(null);
189
191
  dragCounterRef.current = 0;
190
192
  setIsDragOver(false);
@@ -334,6 +336,7 @@ export function useFeatureCreateForm({ open, onClose, onSubmit, repositoryPath,
334
336
  ...(pending ? { pending } : {}),
335
337
  ...(overrideAgent ? { agentType: overrideAgent } : {}),
336
338
  ...(overrideModel ? { model: overrideModel } : {}),
339
+ ...(permissionMode ? { permissionMode } : {}),
337
340
  ...(parentId ? { parentId } : {}),
338
341
  sessionId: sessionIdRef.current,
339
342
  });
@@ -357,6 +360,7 @@ export function useFeatureCreateForm({ open, onClose, onSubmit, repositoryPath,
357
360
  pending,
358
361
  overrideAgent,
359
362
  overrideModel,
363
+ permissionMode,
360
364
  parentId,
361
365
  createSound,
362
366
  resetForm,
@@ -456,6 +460,8 @@ export function useFeatureCreateForm({ open, onClose, onSubmit, repositoryPath,
456
460
  setOverrideAgent,
457
461
  overrideModel,
458
462
  setOverrideModel,
463
+ permissionMode,
464
+ setPermissionMode,
459
465
  selectedRepoPath,
460
466
  setSelectedRepoPath,
461
467
  localRepos,
@@ -22,6 +22,12 @@ export interface WorkflowOptionsSectionProps {
22
22
  computedPush: boolean;
23
23
  computedOpenPr: boolean;
24
24
  isSubmitting: boolean;
25
+ /** Currently selected agent type (for permission mode options) */
26
+ agentType?: string;
27
+ /** Selected per-feature permission mode override */
28
+ permissionMode?: string;
29
+ /** Callback when permission mode changes */
30
+ onPermissionModeChange?: (mode: string | undefined) => void;
25
31
  }
26
- export declare function WorkflowOptionsSection({ approvalGates, onApprovalGatesChange, enableEvidence, onEnableEvidenceChange, commitEvidence, onCommitEvidenceChange, push: _push, onPushChange, openPr, onOpenPrChange, ciWatchEnabled, onCiWatchChange, rebaseBeforeBranch, onRebaseBeforeBranchChange, commitSpecs, onCommitSpecsChange, forkAndPr, onForkAndPrChange, canPush, fast, computedPush, computedOpenPr, isSubmitting, }: WorkflowOptionsSectionProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function WorkflowOptionsSection({ approvalGates, onApprovalGatesChange, enableEvidence, onEnableEvidenceChange, commitEvidence, onCommitEvidenceChange, push: _push, onPushChange, openPr, onOpenPrChange, ciWatchEnabled, onCiWatchChange, rebaseBeforeBranch, onRebaseBeforeBranchChange, commitSpecs, onCommitSpecsChange, forkAndPr, onForkAndPrChange, canPush, fast, computedPush, computedOpenPr, isSubmitting, agentType, permissionMode, onPermissionModeChange, }: WorkflowOptionsSectionProps): import("react/jsx-runtime").JSX.Element;
27
33
  //# sourceMappingURL=workflow-options-section.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-options-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/workflow-options-section.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,IAAI,EAAE,KAAK,EACX,YAAY,EACZ,MAAM,EACN,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,GACb,EAAE,2BAA2B,2CA4S7B"}
1
+ {"version":3,"file":"workflow-options-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/workflow-options-section.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7D;AAED,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,IAAI,EAAE,KAAK,EACX,YAAY,EACZ,MAAM,EACN,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,EACd,sBAAsB,GACvB,EAAE,2BAA2B,2CAsT7B"}
@@ -1,13 +1,16 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
3
4
  import { useTranslation } from 'react-i18next';
4
- import { GitFork, FileText, RefreshCw } from 'lucide-react';
5
+ import { GitFork, FileText, RefreshCw, Shield } from 'lucide-react';
5
6
  import { cn } from '../../../lib/utils.js';
6
7
  import { Label } from '../../ui/label.js';
7
8
  import { Switch } from '../../ui/switch.js';
9
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../ui/select.js';
8
10
  import { Tooltip, TooltipContent, TooltipTrigger } from '../../ui/tooltip.js';
11
+ import { getAgentPermissionOptions } from '../../../app/actions/agent-permissions.js';
9
12
  const AUTO_APPROVE_OPTION_IDS = ['allowPrd', 'allowPlan', 'allowMerge'];
10
- export function WorkflowOptionsSection({ approvalGates, onApprovalGatesChange, enableEvidence, onEnableEvidenceChange, commitEvidence, onCommitEvidenceChange, push: _push, onPushChange, openPr, onOpenPrChange, ciWatchEnabled, onCiWatchChange, rebaseBeforeBranch, onRebaseBeforeBranchChange, commitSpecs, onCommitSpecsChange, forkAndPr, onForkAndPrChange, canPush, fast, computedPush, computedOpenPr, isSubmitting, }) {
13
+ export function WorkflowOptionsSection({ approvalGates, onApprovalGatesChange, enableEvidence, onEnableEvidenceChange, commitEvidence, onCommitEvidenceChange, push: _push, onPushChange, openPr, onOpenPrChange, ciWatchEnabled, onCiWatchChange, rebaseBeforeBranch, onRebaseBeforeBranchChange, commitSpecs, onCommitSpecsChange, forkAndPr, onForkAndPrChange, canPush, fast, computedPush, computedOpenPr, isSubmitting, agentType, permissionMode, onPermissionModeChange, }) {
11
14
  const { t } = useTranslation('web');
12
15
  const AUTO_APPROVE_OPTIONS = [
13
16
  { id: 'allowPrd', label: t('createDrawer.prd'), description: t('createDrawer.prdDescription') },
@@ -51,5 +54,23 @@ export function WorkflowOptionsSection({ approvalGates, onApprovalGatesChange, e
51
54
  // Auto-flip commitSpecs to false when enabling contribute mode
52
55
  if (v)
53
56
  onCommitSpecsChange(false);
54
- }, disabled: isSubmitting }), _jsxs(Label, { htmlFor: "fork-and-pr", className: "flex cursor-pointer items-center gap-1 text-xs font-medium", children: [_jsx(GitFork, { className: "h-3 w-3" }), t('createDrawer.forkAndPr')] })] }) }), _jsx(TooltipContent, { side: "bottom", children: t('createDrawer.forkAndPrDescription') })] }))] })] })] }));
57
+ }, disabled: isSubmitting }), _jsxs(Label, { htmlFor: "fork-and-pr", className: "flex cursor-pointer items-center gap-1 text-xs font-medium", children: [_jsx(GitFork, { className: "h-3 w-3" }), t('createDrawer.forkAndPr')] })] }) }), _jsx(TooltipContent, { side: "bottom", children: t('createDrawer.forkAndPrDescription') })] }))] })] }), agentType && onPermissionModeChange ? (_jsx(PermissionModeRow, { agentType: agentType, permissionMode: permissionMode, onPermissionModeChange: onPermissionModeChange, isSubmitting: isSubmitting })) : null] }));
58
+ }
59
+ /** Internal sub-component for the permission mode select in the workflow options row. */
60
+ function PermissionModeRow({ agentType, permissionMode, onPermissionModeChange, isSubmitting, }) {
61
+ const { t } = useTranslation('web');
62
+ const [options, setOptions] = useState([]);
63
+ useEffect(() => {
64
+ let cancelled = false;
65
+ getAgentPermissionOptions(agentType).then((opts) => {
66
+ if (!cancelled)
67
+ setOptions(opts);
68
+ });
69
+ return () => {
70
+ cancelled = true;
71
+ };
72
+ }, [agentType]);
73
+ if (options.length === 0)
74
+ return null;
75
+ return (_jsxs("div", { className: "border-input flex items-center gap-4 rounded-md border px-3 py-2.5", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("span", { className: "text-muted-foreground flex w-16 shrink-0 cursor-default items-center gap-1 text-xs font-semibold tracking-wider", children: [_jsx(Shield, { className: "h-3 w-3" }), t('feature.create.permissionMode')] }) }), _jsx(TooltipContent, { side: "bottom", children: t('settings.agent.permissions.description', { agent: agentType }) })] }), _jsx("div", { className: "flex-1", children: _jsxs(Select, { value: permissionMode ?? '__default__', onValueChange: (v) => onPermissionModeChange(v === '__default__' ? undefined : v), disabled: isSubmitting, children: [_jsx(SelectTrigger, { id: "permission-mode", "data-testid": "permission-mode-select", className: "h-7 text-xs", children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__default__", children: t('feature.create.permissionModeDefault') }), options.map((opt) => (_jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value)))] })] }) })] }));
55
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-options-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/workflow-options-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,CAyC7C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErD,kEAAkE;AAClE,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,EAAE,KAI9B,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,cAAc,EAAE,KAK5B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,eAAe,EAAE,KAM7B,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,eAAe,EAAE,KAI7B,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAC"}
1
+ {"version":3,"file":"workflow-options-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-create-drawer/workflow-options-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,CA4C7C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAErD,kEAAkE;AAClE,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,EAAE,KAI9B,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,cAAc,EAAE,KAK5B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,eAAe,EAAE,KAM7B,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,eAAe,EAAE,KAI7B,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EAAE,KAQxB,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAC"}
@@ -36,6 +36,9 @@ const meta = {
36
36
  computedPush: false,
37
37
  computedOpenPr: false,
38
38
  isSubmitting: false,
39
+ agentType: 'claude-code',
40
+ permissionMode: undefined,
41
+ onPermissionModeChange: fn(),
39
42
  },
40
43
  };
41
44
  export default meta;
@@ -67,8 +67,8 @@ export const WithClickHandler = {
67
67
  args: {
68
68
  name: 'API Gateway',
69
69
  status: 'action-needed',
70
- agentType: 'dev',
71
- modelId: 'gpt-8',
70
+ agentType: 'gemini-cli',
71
+ modelId: 'gemini-2.5-pro',
72
72
  onClick: () => alert('Clicked!'),
73
73
  },
74
74
  };
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType, SVGProps } from 'react';
2
- /** Agent type values mirroring the TypeSpec AgentType enum. */
3
- export type AgentTypeValue = 'claude-code' | 'codex-cli' | 'cursor' | 'gemini-cli' | 'aider' | 'continue' | 'dev';
2
+ /** Agent type values mirroring the TypeSpec AgentType enum (UI-visible subset). */
3
+ export type AgentTypeValue = 'claude-code' | 'codex-cli' | 'copilot-cli' | 'cursor' | 'gemini-cli' | 'rovo-dev';
4
4
  type IconProps = SVGProps<SVGSVGElement> & {
5
5
  className?: string;
6
6
  };