@shepai/cli 1.155.0 → 1.156.0-pr485.030e6b4

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 (615) hide show
  1. package/README.md +276 -161
  2. package/apis/json-schema/Language.yaml +13 -0
  3. package/apis/json-schema/UserProfile.yaml +3 -0
  4. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +5 -0
  6. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +7 -0
  8. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/use-cases/features/check-and-unblock-features.use-case.js +11 -1
  10. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +3 -0
  12. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  13. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +5 -0
  14. package/dist/packages/core/src/domain/generated/output.d.ts +14 -0
  15. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  16. package/dist/packages/core/src/domain/generated/output.js +11 -0
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +4 -2
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/049-add-language-preference.d.ts +14 -0
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/049-add-language-preference.d.ts.map +1 -0
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/049-add-language-preference.js +19 -0
  23. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
  25. package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
  26. package/dist/src/presentation/cli/commands/_serve.command.js +5 -3
  27. package/dist/src/presentation/cli/commands/agent/approve.command.d.ts.map +1 -1
  28. package/dist/src/presentation/cli/commands/agent/approve.command.js +9 -4
  29. package/dist/src/presentation/cli/commands/agent/delete.command.d.ts.map +1 -1
  30. package/dist/src/presentation/cli/commands/agent/delete.command.js +9 -5
  31. package/dist/src/presentation/cli/commands/agent/index.d.ts.map +1 -1
  32. package/dist/src/presentation/cli/commands/agent/index.js +3 -1
  33. package/dist/src/presentation/cli/commands/agent/logs.command.d.ts.map +1 -1
  34. package/dist/src/presentation/cli/commands/agent/logs.command.js +7 -5
  35. package/dist/src/presentation/cli/commands/agent/ls.command.d.ts.map +1 -1
  36. package/dist/src/presentation/cli/commands/agent/ls.command.js +12 -10
  37. package/dist/src/presentation/cli/commands/agent/reject.command.d.ts.map +1 -1
  38. package/dist/src/presentation/cli/commands/agent/reject.command.js +10 -5
  39. package/dist/src/presentation/cli/commands/agent/resolve-run.d.ts.map +1 -1
  40. package/dist/src/presentation/cli/commands/agent/resolve-run.js +7 -2
  41. package/dist/src/presentation/cli/commands/agent/show.command.d.ts.map +1 -1
  42. package/dist/src/presentation/cli/commands/agent/show.command.js +8 -6
  43. package/dist/src/presentation/cli/commands/agent/stop.command.d.ts.map +1 -1
  44. package/dist/src/presentation/cli/commands/agent/stop.command.js +9 -4
  45. package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts.map +1 -1
  46. package/dist/src/presentation/cli/commands/daemon/start-daemon.js +10 -8
  47. package/dist/src/presentation/cli/commands/daemon/stop-daemon.d.ts.map +1 -1
  48. package/dist/src/presentation/cli/commands/daemon/stop-daemon.js +5 -3
  49. package/dist/src/presentation/cli/commands/feat/adopt.command.d.ts.map +1 -1
  50. package/dist/src/presentation/cli/commands/feat/adopt.command.js +14 -12
  51. package/dist/src/presentation/cli/commands/feat/approve.command.d.ts.map +1 -1
  52. package/dist/src/presentation/cli/commands/feat/approve.command.js +8 -6
  53. package/dist/src/presentation/cli/commands/feat/archive.command.d.ts.map +1 -1
  54. package/dist/src/presentation/cli/commands/feat/archive.command.js +10 -8
  55. package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -1
  56. package/dist/src/presentation/cli/commands/feat/del.command.js +17 -15
  57. package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
  58. package/dist/src/presentation/cli/commands/feat/index.js +2 -1
  59. package/dist/src/presentation/cli/commands/feat/logs.command.d.ts.map +1 -1
  60. package/dist/src/presentation/cli/commands/feat/logs.command.js +8 -6
  61. package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -1
  62. package/dist/src/presentation/cli/commands/feat/ls.command.js +14 -12
  63. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  64. package/dist/src/presentation/cli/commands/feat/new.command.js +43 -37
  65. package/dist/src/presentation/cli/commands/feat/reject.command.d.ts.map +1 -1
  66. package/dist/src/presentation/cli/commands/feat/reject.command.js +11 -9
  67. package/dist/src/presentation/cli/commands/feat/resolve-waiting-feature.d.ts.map +1 -1
  68. package/dist/src/presentation/cli/commands/feat/resolve-waiting-feature.js +12 -5
  69. package/dist/src/presentation/cli/commands/feat/resume.command.d.ts.map +1 -1
  70. package/dist/src/presentation/cli/commands/feat/resume.command.js +8 -6
  71. package/dist/src/presentation/cli/commands/feat/review.command.d.ts.map +1 -1
  72. package/dist/src/presentation/cli/commands/feat/review.command.js +17 -15
  73. package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
  74. package/dist/src/presentation/cli/commands/feat/show.command.js +89 -45
  75. package/dist/src/presentation/cli/commands/feat/start.command.d.ts.map +1 -1
  76. package/dist/src/presentation/cli/commands/feat/start.command.js +12 -10
  77. package/dist/src/presentation/cli/commands/feat/unarchive.command.d.ts.map +1 -1
  78. package/dist/src/presentation/cli/commands/feat/unarchive.command.js +8 -6
  79. package/dist/src/presentation/cli/commands/ide-open.command.d.ts.map +1 -1
  80. package/dist/src/presentation/cli/commands/ide-open.command.js +10 -5
  81. package/dist/src/presentation/cli/commands/install.command.d.ts.map +1 -1
  82. package/dist/src/presentation/cli/commands/install.command.js +29 -21
  83. package/dist/src/presentation/cli/commands/log-viewer.d.ts.map +1 -1
  84. package/dist/src/presentation/cli/commands/log-viewer.js +6 -3
  85. package/dist/src/presentation/cli/commands/repo/add.command.d.ts.map +1 -1
  86. package/dist/src/presentation/cli/commands/repo/add.command.js +12 -10
  87. package/dist/src/presentation/cli/commands/repo/index.d.ts.map +1 -1
  88. package/dist/src/presentation/cli/commands/repo/index.js +3 -1
  89. package/dist/src/presentation/cli/commands/repo/ls.command.d.ts.map +1 -1
  90. package/dist/src/presentation/cli/commands/repo/ls.command.js +11 -9
  91. package/dist/src/presentation/cli/commands/repo/resolve-repository.d.ts.map +1 -1
  92. package/dist/src/presentation/cli/commands/repo/resolve-repository.js +7 -2
  93. package/dist/src/presentation/cli/commands/repo/show.command.d.ts.map +1 -1
  94. package/dist/src/presentation/cli/commands/repo/show.command.js +21 -10
  95. package/dist/src/presentation/cli/commands/restart.command.d.ts.map +1 -1
  96. package/dist/src/presentation/cli/commands/restart.command.js +6 -4
  97. package/dist/src/presentation/cli/commands/run.command.d.ts.map +1 -1
  98. package/dist/src/presentation/cli/commands/run.command.js +21 -17
  99. package/dist/src/presentation/cli/commands/session/index.d.ts.map +1 -1
  100. package/dist/src/presentation/cli/commands/session/index.js +3 -1
  101. package/dist/src/presentation/cli/commands/session/ls.command.d.ts.map +1 -1
  102. package/dist/src/presentation/cli/commands/session/ls.command.js +11 -9
  103. package/dist/src/presentation/cli/commands/session/show.command.d.ts.map +1 -1
  104. package/dist/src/presentation/cli/commands/session/show.command.js +26 -18
  105. package/dist/src/presentation/cli/commands/settings/agent.command.d.ts.map +1 -1
  106. package/dist/src/presentation/cli/commands/settings/agent.command.js +12 -8
  107. package/dist/src/presentation/cli/commands/settings/ide.command.d.ts.map +1 -1
  108. package/dist/src/presentation/cli/commands/settings/ide.command.js +13 -7
  109. package/dist/src/presentation/cli/commands/settings/index.d.ts +1 -0
  110. package/dist/src/presentation/cli/commands/settings/index.d.ts.map +1 -1
  111. package/dist/src/presentation/cli/commands/settings/index.js +7 -3
  112. package/dist/src/presentation/cli/commands/settings/init.command.d.ts.map +1 -1
  113. package/dist/src/presentation/cli/commands/settings/init.command.js +8 -7
  114. package/dist/src/presentation/cli/commands/settings/language.command.d.ts +14 -0
  115. package/dist/src/presentation/cli/commands/settings/language.command.d.ts.map +1 -0
  116. package/dist/src/presentation/cli/commands/settings/language.command.js +79 -0
  117. package/dist/src/presentation/cli/commands/settings/model.command.d.ts.map +1 -1
  118. package/dist/src/presentation/cli/commands/settings/model.command.js +7 -6
  119. package/dist/src/presentation/cli/commands/settings/show.command.d.ts.map +1 -1
  120. package/dist/src/presentation/cli/commands/settings/show.command.js +4 -3
  121. package/dist/src/presentation/cli/commands/settings/workflow.command.d.ts.map +1 -1
  122. package/dist/src/presentation/cli/commands/settings/workflow.command.js +20 -18
  123. package/dist/src/presentation/cli/commands/start.command.d.ts.map +1 -1
  124. package/dist/src/presentation/cli/commands/start.command.js +5 -3
  125. package/dist/src/presentation/cli/commands/status.command.d.ts.map +1 -1
  126. package/dist/src/presentation/cli/commands/status.command.js +32 -24
  127. package/dist/src/presentation/cli/commands/stop.command.d.ts.map +1 -1
  128. package/dist/src/presentation/cli/commands/stop.command.js +4 -2
  129. package/dist/src/presentation/cli/commands/tools.command.d.ts.map +1 -1
  130. package/dist/src/presentation/cli/commands/tools.command.js +8 -4
  131. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  132. package/dist/src/presentation/cli/commands/ui.command.js +12 -10
  133. package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
  134. package/dist/src/presentation/cli/commands/upgrade.command.js +18 -13
  135. package/dist/src/presentation/cli/commands/version.command.d.ts.map +1 -1
  136. package/dist/src/presentation/cli/commands/version.command.js +5 -3
  137. package/dist/src/presentation/cli/i18n.d.ts +41 -0
  138. package/dist/src/presentation/cli/i18n.d.ts.map +1 -0
  139. package/dist/src/presentation/cli/i18n.js +100 -0
  140. package/dist/src/presentation/cli/index.js +13 -1
  141. package/dist/src/presentation/cli/ui/install-messages.d.ts.map +1 -1
  142. package/dist/src/presentation/cli/ui/install-messages.js +16 -6
  143. package/dist/src/presentation/tui/i18n.d.ts +24 -0
  144. package/dist/src/presentation/tui/i18n.d.ts.map +1 -0
  145. package/dist/src/presentation/tui/i18n.js +48 -0
  146. package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts +13 -31
  147. package/dist/src/presentation/tui/prompts/agent-select.prompt.d.ts.map +1 -1
  148. package/dist/src/presentation/tui/prompts/agent-select.prompt.js +17 -15
  149. package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts +7 -11
  150. package/dist/src/presentation/tui/prompts/auth-method.prompt.d.ts.map +1 -1
  151. package/dist/src/presentation/tui/prompts/auth-method.prompt.js +7 -5
  152. package/dist/src/presentation/tui/prompts/ide-select.prompt.d.ts.map +1 -1
  153. package/dist/src/presentation/tui/prompts/ide-select.prompt.js +2 -1
  154. package/dist/src/presentation/tui/prompts/prd-review-summary.prompt.d.ts.map +1 -1
  155. package/dist/src/presentation/tui/prompts/prd-review-summary.prompt.js +8 -6
  156. package/dist/src/presentation/tui/wizards/agent-config.wizard.d.ts.map +1 -1
  157. package/dist/src/presentation/tui/wizards/agent-config.wizard.js +2 -1
  158. package/dist/src/presentation/tui/wizards/github-import.wizard.d.ts.map +1 -1
  159. package/dist/src/presentation/tui/wizards/github-import.wizard.js +15 -11
  160. package/dist/src/presentation/tui/wizards/merge-review.wizard.d.ts.map +1 -1
  161. package/dist/src/presentation/tui/wizards/merge-review.wizard.js +10 -8
  162. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.d.ts.map +1 -1
  163. package/dist/src/presentation/tui/wizards/onboarding/onboarding.wizard.js +10 -7
  164. package/dist/src/presentation/tui/wizards/onboarding/steps/workflow-defaults.step.d.ts +0 -41
  165. package/dist/src/presentation/tui/wizards/onboarding/steps/workflow-defaults.step.d.ts.map +1 -1
  166. package/dist/src/presentation/tui/wizards/onboarding/steps/workflow-defaults.step.js +15 -15
  167. package/dist/src/presentation/tui/wizards/plan-review.wizard.d.ts.map +1 -1
  168. package/dist/src/presentation/tui/wizards/plan-review.wizard.js +10 -8
  169. package/dist/src/presentation/tui/wizards/prd-review.wizard.d.ts.map +1 -1
  170. package/dist/src/presentation/tui/wizards/prd-review.wizard.js +3 -2
  171. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  172. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +4 -2
  173. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  174. package/dist/src/presentation/web/app/actions/create-feature.js +3 -0
  175. package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
  176. package/dist/src/presentation/web/app/layout.js +5 -2
  177. package/dist/src/presentation/web/components/assistant-ui/thread.d.ts.map +1 -1
  178. package/dist/src/presentation/web/components/assistant-ui/thread.js +13 -10
  179. package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.d.ts.map +1 -1
  180. package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.js +3 -1
  181. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.js +1 -1
  182. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  183. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +5 -2
  184. package/dist/src/presentation/web/components/common/ci-status-badge/ci-status-badge.js +3 -3
  185. package/dist/src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.js +4 -4
  186. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  187. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +7 -1
  188. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +1 -1
  189. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.d.ts.map +1 -1
  190. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.js +3 -1
  191. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.js +2 -2
  192. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
  193. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +6 -2
  194. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.js +2 -2
  195. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  196. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +34 -22
  197. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
  198. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +11 -7
  199. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.d.ts.map +1 -1
  200. package/dist/src/presentation/web/components/common/feature-drawer-tabs/branch-sync-status.js +3 -1
  201. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  202. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +4 -2
  203. package/dist/src/presentation/web/components/common/feature-drawer-tabs/log-tab.d.ts.map +1 -1
  204. package/dist/src/presentation/web/components/common/feature-drawer-tabs/log-tab.js +5 -3
  205. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  206. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +9 -5
  207. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.js +1 -1
  208. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +2 -2
  209. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  210. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +22 -22
  211. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  212. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +49 -36
  213. package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.d.ts.map +1 -1
  214. package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.js +7 -3
  215. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.d.ts.map +1 -1
  216. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.js +4 -2
  217. package/dist/src/presentation/web/components/common/feature-status-config.d.ts +2 -1
  218. package/dist/src/presentation/web/components/common/feature-status-config.d.ts.map +1 -1
  219. package/dist/src/presentation/web/components/common/feature-status-config.js +6 -6
  220. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.js +1 -1
  221. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.d.ts.map +1 -1
  222. package/dist/src/presentation/web/components/common/floating-action-button/floating-action-button.js +4 -2
  223. package/dist/src/presentation/web/components/common/github-import-dialog/github-repo-browser.js +1 -1
  224. package/dist/src/presentation/web/components/common/merge-review/diff-view.js +2 -2
  225. package/dist/src/presentation/web/components/common/merge-review/merge-review.js +2 -2
  226. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +3 -3
  227. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.d.ts.map +1 -1
  228. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.js +6 -4
  229. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  230. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +18 -11
  231. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.js +1 -1
  232. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.d.ts.map +1 -1
  233. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.js +7 -4
  234. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +2 -2
  235. package/dist/src/presentation/web/components/common/version-badge/version-badge.d.ts.map +1 -1
  236. package/dist/src/presentation/web/components/common/version-badge/version-badge.js +3 -1
  237. package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -1
  238. package/dist/src/presentation/web/components/features/chat/ChatComposer.js +3 -1
  239. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.d.ts.map +1 -1
  240. package/dist/src/presentation/web/components/features/chat/ChatMessageBubble.js +7 -5
  241. package/dist/src/presentation/web/components/features/chat/ChatMessageList.js +1 -1
  242. package/dist/src/presentation/web/components/features/chat/ChatSheet.d.ts.map +1 -1
  243. package/dist/src/presentation/web/components/features/chat/ChatSheet.js +5 -3
  244. package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
  245. package/dist/src/presentation/web/components/features/chat/ChatTab.js +5 -3
  246. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
  247. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +15 -11
  248. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  249. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +14 -6
  250. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -2
  251. package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.d.ts.map +1 -1
  252. package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.js +8 -6
  253. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.d.ts.map +1 -1
  254. package/dist/src/presentation/web/components/features/features-canvas/canvas-toolbar.js +3 -1
  255. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  256. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +4 -2
  257. package/dist/src/presentation/web/components/features/settings/AgentModelPicker/index.js +2 -2
  258. package/dist/src/presentation/web/components/features/settings/ModelPicker/index.js +2 -2
  259. package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +1 -1
  260. package/dist/src/presentation/web/components/features/settings/language-settings-section.d.ts +5 -0
  261. package/dist/src/presentation/web/components/features/settings/language-settings-section.d.ts.map +1 -0
  262. package/dist/src/presentation/web/components/features/settings/language-settings-section.js +54 -0
  263. package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts +18 -0
  264. package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts.map +1 -0
  265. package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.js +36 -0
  266. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  267. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +89 -77
  268. package/dist/src/presentation/web/components/features/settings/timeout-slider.js +1 -1
  269. package/dist/src/presentation/web/components/features/skills/category-filter.js +1 -1
  270. package/dist/src/presentation/web/components/features/skills/skills-page-client.js +1 -1
  271. package/dist/src/presentation/web/components/features/tools/tool-card.js +1 -1
  272. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.js +2 -2
  273. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -1
  274. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +5 -1
  275. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  276. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +13 -7
  277. package/dist/src/presentation/web/components/providers/i18n-provider.d.ts +17 -0
  278. package/dist/src/presentation/web/components/providers/i18n-provider.d.ts.map +1 -0
  279. package/dist/src/presentation/web/components/providers/i18n-provider.js +36 -0
  280. package/dist/src/presentation/web/components/ui/alert-dialog.js +1 -1
  281. package/dist/src/presentation/web/components/ui/alert.js +1 -1
  282. package/dist/src/presentation/web/components/ui/checkbox-group.js +1 -1
  283. package/dist/src/presentation/web/components/ui/command.js +1 -1
  284. package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
  285. package/dist/src/presentation/web/components/ui/dialog.js +2 -2
  286. package/dist/src/presentation/web/components/ui/dialog.stories.js +1 -1
  287. package/dist/src/presentation/web/components/ui/drawer.d.ts.map +1 -1
  288. package/dist/src/presentation/web/components/ui/drawer.js +2 -8
  289. package/dist/src/presentation/web/components/ui/dropdown-menu.js +6 -6
  290. package/dist/src/presentation/web/components/ui/scroll-area.js +1 -1
  291. package/dist/src/presentation/web/components/ui/select.js +1 -1
  292. package/dist/src/presentation/web/components/ui/sheet.js +3 -3
  293. package/dist/src/presentation/web/components/ui/sidebar.d.ts.map +1 -1
  294. package/dist/src/presentation/web/components/ui/sidebar.js +15 -15
  295. package/dist/src/presentation/web/components/ui/switch.js +1 -1
  296. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  297. package/dist/src/presentation/web/hooks/use-graph-state.js +7 -4
  298. package/dist/src/presentation/web/hooks/use-sound-action.stories.js +1 -1
  299. package/dist/src/presentation/web/lib/i18n.d.ts +15 -0
  300. package/dist/src/presentation/web/lib/i18n.d.ts.map +1 -0
  301. package/dist/src/presentation/web/lib/i18n.js +64 -0
  302. package/dist/src/presentation/web/lib/language.d.ts +23 -0
  303. package/dist/src/presentation/web/lib/language.d.ts.map +1 -0
  304. package/dist/src/presentation/web/lib/language.js +37 -0
  305. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts +2 -0
  306. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
  307. package/dist/src/presentation/web/lib/layout-with-dagre.js +4 -0
  308. package/dist/src/presentation/web/lib/rtl-fonts.d.ts +19 -0
  309. package/dist/src/presentation/web/lib/rtl-fonts.d.ts.map +1 -0
  310. package/dist/src/presentation/web/lib/rtl-fonts.js +51 -0
  311. package/dist/translations/ar/cli.json +613 -0
  312. package/dist/translations/ar/common.json +55 -0
  313. package/dist/translations/ar/tui.json +130 -0
  314. package/dist/translations/ar/web.json +594 -0
  315. package/dist/translations/de/cli.json +613 -0
  316. package/dist/translations/de/common.json +55 -0
  317. package/dist/translations/de/tui.json +109 -0
  318. package/dist/translations/de/web.json +580 -0
  319. package/dist/translations/en/cli.json +613 -0
  320. package/dist/translations/en/common.json +55 -0
  321. package/dist/translations/en/tui.json +130 -0
  322. package/dist/translations/en/web.json +594 -0
  323. package/dist/translations/es/cli.json +613 -0
  324. package/dist/translations/es/common.json +55 -0
  325. package/dist/translations/es/tui.json +130 -0
  326. package/dist/translations/es/web.json +594 -0
  327. package/dist/translations/fr/cli.json +613 -0
  328. package/dist/translations/fr/common.json +55 -0
  329. package/dist/translations/fr/tui.json +130 -0
  330. package/dist/translations/fr/web.json +594 -0
  331. package/dist/translations/he/cli.json +613 -0
  332. package/dist/translations/he/common.json +55 -0
  333. package/dist/translations/he/tui.json +130 -0
  334. package/dist/translations/he/web.json +594 -0
  335. package/dist/translations/pt/cli.json +613 -0
  336. package/dist/translations/pt/common.json +55 -0
  337. package/dist/translations/pt/tui.json +130 -0
  338. package/dist/translations/pt/web.json +594 -0
  339. package/dist/translations/ru/cli.json +613 -0
  340. package/dist/translations/ru/common.json +55 -0
  341. package/dist/translations/ru/tui.json +130 -0
  342. package/dist/translations/ru/web.json +594 -0
  343. package/dist/tsconfig.build.tsbuildinfo +1 -1
  344. package/package.json +4 -2
  345. package/web/.next/BUILD_ID +1 -1
  346. package/web/.next/build-manifest.json +2 -2
  347. package/web/.next/fallback-build-manifest.json +2 -2
  348. package/web/.next/prerender-manifest.json +3 -3
  349. package/web/.next/required-server-files.js +7 -7
  350. package/web/.next/required-server-files.json +7 -7
  351. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
  352. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +3 -3
  353. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  354. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  355. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +26 -26
  356. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +3 -3
  357. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  358. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  359. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +29 -29
  360. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
  361. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  362. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  363. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  364. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +4 -4
  365. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  366. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  367. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +36 -36
  368. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +4 -4
  369. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  370. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  371. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +26 -26
  372. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +3 -3
  373. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  374. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  375. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  376. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
  377. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  378. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  379. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +26 -26
  380. package/web/.next/server/app/(dashboard)/chat/page.js +3 -3
  381. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  382. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  383. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +29 -29
  384. package/web/.next/server/app/(dashboard)/create/page.js +3 -3
  385. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  386. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  387. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  388. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +4 -4
  389. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  390. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  391. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +36 -36
  392. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +4 -4
  393. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  394. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  395. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +26 -26
  396. package/web/.next/server/app/(dashboard)/page.js +3 -3
  397. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  398. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  399. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +26 -26
  400. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +3 -3
  401. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  402. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  403. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  404. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
  405. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  406. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  407. package/web/.next/server/app/_global-error.html +2 -2
  408. package/web/.next/server/app/_global-error.rsc +1 -1
  409. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  410. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  411. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  412. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  413. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  414. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +5 -5
  415. package/web/.next/server/app/_not-found/page.js +2 -2
  416. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  417. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  418. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  419. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  420. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  421. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  422. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  423. package/web/.next/server/app/settings/page.js +2 -2
  424. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  425. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  426. package/web/.next/server/app/skills/page/server-reference-manifest.json +10 -10
  427. package/web/.next/server/app/skills/page.js +3 -4
  428. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  429. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  430. package/web/.next/server/app/tools/page/server-reference-manifest.json +10 -10
  431. package/web/.next/server/app/tools/page.js +3 -4
  432. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  433. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  434. package/web/.next/server/app/version/page/server-reference-manifest.json +5 -5
  435. package/web/.next/server/app/version/page.js +2 -2
  436. package/web/.next/server/app/version/page.js.nft.json +1 -1
  437. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  438. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  439. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  440. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  441. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js.map +1 -1
  442. package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js +1 -1
  443. package/web/.next/server/chunks/[root-of-the-server]__b4102cc7._.js.map +1 -1
  444. package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js +1 -1
  445. package/web/.next/server/chunks/[root-of-the-server]__beda892a._.js.map +1 -1
  446. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  447. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  448. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  449. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  450. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +3 -3
  451. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__209c9597._.js +4 -0
  453. package/web/.next/server/chunks/ssr/{[root-of-the-server]__88f7e8e6._.js.map → [root-of-the-server]__209c9597._.js.map} +1 -1
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__27301e38._.js +4 -0
  455. package/web/.next/server/chunks/ssr/{[root-of-the-server]__17ed7ed1._.js.map → [root-of-the-server]__27301e38._.js.map} +1 -1
  456. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  457. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js +1 -1
  458. package/web/.next/server/chunks/ssr/[root-of-the-server]__56b70465._.js.map +1 -1
  459. package/web/.next/server/chunks/ssr/[root-of-the-server]__6fecf886._.js +4 -0
  460. package/web/.next/server/chunks/ssr/{[root-of-the-server]__42bf1807._.js.map → [root-of-the-server]__6fecf886._.js.map} +1 -1
  461. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b0aac03._.js +1 -1
  462. package/web/.next/server/chunks/ssr/[root-of-the-server]__8d27866c._.js +4 -0
  463. package/web/.next/server/chunks/ssr/[root-of-the-server]__8d27866c._.js.map +1 -0
  464. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f3504c7._.js +4 -0
  465. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f80bfc75._.js.map → [root-of-the-server]__9f3504c7._.js.map} +1 -1
  466. package/web/.next/server/chunks/ssr/[root-of-the-server]__bd6ed91a._.js +4 -0
  467. package/web/.next/server/chunks/ssr/[root-of-the-server]__bd6ed91a._.js.map +1 -0
  468. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js +1 -1
  469. package/web/.next/server/chunks/ssr/[root-of-the-server]__c30f1f82._.js.map +1 -1
  470. package/web/.next/server/chunks/ssr/[root-of-the-server]__dffa13c5._.js +3 -0
  471. package/web/.next/server/chunks/ssr/[root-of-the-server]__dffa13c5._.js.map +1 -0
  472. package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js +2 -2
  473. package/web/.next/server/chunks/ssr/[root-of-the-server]__e91ffd5e._.js.map +1 -1
  474. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js +1 -1
  475. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8dd4422._.js.map +1 -1
  476. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  477. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  478. package/web/.next/server/chunks/ssr/_0dc06d07._.js +3 -0
  479. package/web/.next/server/chunks/ssr/_0dc06d07._.js.map +1 -0
  480. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  481. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  482. package/web/.next/server/chunks/ssr/_2b858df5._.js +3 -0
  483. package/web/.next/server/chunks/ssr/{_2c7d0c36._.js.map → _2b858df5._.js.map} +1 -1
  484. package/web/.next/server/chunks/ssr/_3a0b989f._.js +2 -2
  485. package/web/.next/server/chunks/ssr/_3a0b989f._.js.map +1 -1
  486. package/web/.next/server/chunks/ssr/{_67104d9e._.js → _3bcda5d7._.js} +2 -2
  487. package/web/.next/server/chunks/ssr/{_67104d9e._.js.map → _3bcda5d7._.js.map} +1 -1
  488. package/web/.next/server/chunks/ssr/{_71e47f04._.js → _4e19e8d2._.js} +2 -2
  489. package/web/.next/server/chunks/ssr/{_71e47f04._.js.map → _4e19e8d2._.js.map} +1 -1
  490. package/web/.next/server/chunks/ssr/_5119a3df._.js +3 -0
  491. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +1 -0
  492. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  493. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  494. package/web/.next/server/chunks/ssr/_5f69c13f._.js +1 -1
  495. package/web/.next/server/chunks/ssr/_5f69c13f._.js.map +1 -1
  496. package/web/.next/server/chunks/ssr/_6645de45._.js +4 -0
  497. package/web/.next/server/chunks/ssr/_6645de45._.js.map +1 -0
  498. package/web/.next/server/chunks/ssr/_7c5b97c6._.js +1 -1
  499. package/web/.next/server/chunks/ssr/_7c5b97c6._.js.map +1 -1
  500. package/web/.next/server/chunks/ssr/_82c57f10._.js +1 -1
  501. package/web/.next/server/chunks/ssr/_82c57f10._.js.map +1 -1
  502. package/web/.next/server/chunks/ssr/_8b57edb8._.js +1 -1
  503. package/web/.next/server/chunks/ssr/_8b57edb8._.js.map +1 -1
  504. package/web/.next/server/chunks/ssr/_8d733ce4._.js +1 -1
  505. package/web/.next/server/chunks/ssr/_8d733ce4._.js.map +1 -1
  506. package/web/.next/server/chunks/ssr/_9495d50b._.js +1 -1
  507. package/web/.next/server/chunks/ssr/_9495d50b._.js.map +1 -1
  508. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js +1 -1
  509. package/web/.next/server/chunks/ssr/_a0e3f7e4._.js.map +1 -1
  510. package/web/.next/server/chunks/ssr/_ac4a3873._.js +1 -1
  511. package/web/.next/server/chunks/ssr/_ac4a3873._.js.map +1 -1
  512. package/web/.next/server/chunks/ssr/{_507a8382._.js → _b9ba2473._.js} +2 -2
  513. package/web/.next/server/chunks/ssr/_b9ba2473._.js.map +1 -0
  514. package/web/.next/server/chunks/ssr/_bcaea66b._.js +3 -0
  515. package/web/.next/server/chunks/ssr/_bcaea66b._.js.map +1 -0
  516. package/web/.next/server/chunks/ssr/_bcfa8457._.js +9 -0
  517. package/web/.next/server/chunks/ssr/_bcfa8457._.js.map +1 -0
  518. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js +1 -1
  519. package/web/.next/server/chunks/ssr/_ca0aa7f0._.js.map +1 -1
  520. package/web/.next/server/chunks/ssr/_cb5a021e._.js +1 -1
  521. package/web/.next/server/chunks/ssr/_cb5a021e._.js.map +1 -1
  522. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +1 -1
  523. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js.map +1 -1
  524. package/web/.next/server/chunks/ssr/_d86175ae._.js +1 -1
  525. package/web/.next/server/chunks/ssr/_d86175ae._.js.map +1 -1
  526. package/web/.next/server/chunks/ssr/_d8bedf13._.js +1 -1
  527. package/web/.next/server/chunks/ssr/_d8bedf13._.js.map +1 -1
  528. package/web/.next/server/chunks/ssr/_d90b0a06._.js +3 -0
  529. package/web/.next/server/chunks/ssr/_d90b0a06._.js.map +1 -0
  530. package/web/.next/server/chunks/ssr/_fa7efce3._.js +2 -2
  531. package/web/.next/server/chunks/ssr/_fa7efce3._.js.map +1 -1
  532. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  533. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  534. package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js +1 -1
  535. package/web/.next/server/chunks/ssr/node_modules__pnpm_8ec2c790._.js.map +1 -1
  536. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  537. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  538. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  539. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +3 -0
  540. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -0
  541. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  542. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  543. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  544. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -1
  545. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  546. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  547. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +3 -0
  548. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -0
  549. package/web/.next/server/pages/500.html +2 -2
  550. package/web/.next/server/server-reference-manifest.js +1 -1
  551. package/web/.next/server/server-reference-manifest.json +45 -45
  552. package/web/.next/static/chunks/{b4cde06eff374c59.js → 0a79dfbb8486b66e.js} +2 -2
  553. package/web/.next/static/chunks/{f50d8e1825fae0fe.js → 0c87b59a0fdd22dd.js} +1 -1
  554. package/web/.next/static/chunks/11e4b9d959a6efa7.js +2 -0
  555. package/web/.next/static/chunks/{f6085a3750b6d8f4.js → 16d35285b664c30c.js} +1 -1
  556. package/web/.next/static/chunks/2273b81cd7c7d2af.css +1 -0
  557. package/web/.next/static/chunks/{60bc4daf6904d5a0.js → 24d701de138b762d.js} +1 -1
  558. package/web/.next/static/chunks/2c5bf14361cf6728.js +1 -0
  559. package/web/.next/static/chunks/{688971d5bad5dc7c.js → 3deefc76ea55047c.js} +1 -1
  560. package/web/.next/static/chunks/42e6a21f1d63dc5c.js +1 -0
  561. package/web/.next/static/chunks/{11091b676d1b3bd4.js → 47477ed4c5871747.js} +1 -1
  562. package/web/.next/static/chunks/4864ff06a738d58b.js +1 -0
  563. package/web/.next/static/chunks/{22c459f1877b1e4f.js → 74db65fa7bfb80bd.js} +1 -1
  564. package/web/.next/static/chunks/9061f08ab7e537a8.js +1 -0
  565. package/web/.next/static/chunks/919509a19de3205b.js +7 -0
  566. package/web/.next/static/chunks/{b3109b268c02449c.js → 9aa752f55e6cfcc9.js} +1 -1
  567. package/web/.next/static/chunks/a72f1d456f0afa8a.js +5 -0
  568. package/web/.next/static/chunks/ad5b1373e5ba0789.js +1 -0
  569. package/web/.next/static/chunks/b447e13b2ac5bb65.js +1 -0
  570. package/web/.next/static/chunks/d2cbeefbc8967b16.js +1 -0
  571. package/web/.next/static/chunks/d5366257d6b9f855.js +1 -0
  572. package/web/.next/static/chunks/{5ae60a052ab5f437.js → d6e702c209c413ce.js} +2 -2
  573. package/web/.next/static/chunks/{97c18bb438f775cf.js → e63d0d79a334fa97.js} +2 -2
  574. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +0 -3
  575. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +0 -1
  576. package/web/.next/server/chunks/ssr/[root-of-the-server]__17ed7ed1._.js +0 -4
  577. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js +0 -4
  578. package/web/.next/server/chunks/ssr/[root-of-the-server]__28d0d265._.js.map +0 -1
  579. package/web/.next/server/chunks/ssr/[root-of-the-server]__42bf1807._.js +0 -4
  580. package/web/.next/server/chunks/ssr/[root-of-the-server]__88f7e8e6._.js +0 -4
  581. package/web/.next/server/chunks/ssr/[root-of-the-server]__f80bfc75._.js +0 -4
  582. package/web/.next/server/chunks/ssr/_2c7d0c36._.js +0 -3
  583. package/web/.next/server/chunks/ssr/_4b432739._.js +0 -3
  584. package/web/.next/server/chunks/ssr/_4b432739._.js.map +0 -1
  585. package/web/.next/server/chunks/ssr/_507a8382._.js.map +0 -1
  586. package/web/.next/server/chunks/ssr/_8219712a._.js +0 -3
  587. package/web/.next/server/chunks/ssr/_8219712a._.js.map +0 -1
  588. package/web/.next/server/chunks/ssr/_d4b20e29._.js +0 -3
  589. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +0 -1
  590. package/web/.next/server/chunks/ssr/_dd0d2cda._.js +0 -4
  591. package/web/.next/server/chunks/ssr/_dd0d2cda._.js.map +0 -1
  592. package/web/.next/server/chunks/ssr/_e9a73a63._.js +0 -9
  593. package/web/.next/server/chunks/ssr/_e9a73a63._.js.map +0 -1
  594. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js +0 -3
  595. package/web/.next/server/chunks/ssr/src_presentation_web_324a47da._.js.map +0 -1
  596. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js +0 -3
  597. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_cdc632e3.js.map +0 -1
  598. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js +0 -3
  599. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_39ca0924.js.map +0 -1
  600. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js +0 -3
  601. package/web/.next/server/chunks/ssr/src_presentation_web_components_357e3eb0._.js.map +0 -1
  602. package/web/.next/static/chunks/08fe461cb16fced0.js +0 -1
  603. package/web/.next/static/chunks/1a1dc6a09c911b70.js +0 -1
  604. package/web/.next/static/chunks/21c8953d720bddcc.js +0 -7
  605. package/web/.next/static/chunks/450bfeed79bb1648.js +0 -1
  606. package/web/.next/static/chunks/4b2c4a5c35ebb70d.js +0 -1
  607. package/web/.next/static/chunks/711a2468a2ea3c85.js +0 -1
  608. package/web/.next/static/chunks/8590bd2e69b24b9e.css +0 -1
  609. package/web/.next/static/chunks/8ba1c07ef18b15a9.js +0 -1
  610. package/web/.next/static/chunks/cd54b758f58061d0.js +0 -1
  611. package/web/.next/static/chunks/d1fa9a48542437bd.js +0 -2
  612. package/web/.next/static/chunks/de8a83cc1a08a5f1.js +0 -5
  613. /package/web/.next/static/{gvtDuAeM3WKFc9kJihv1y → _3mdwhLrxBePUb5DWqy3q}/_buildManifest.js +0 -0
  614. /package/web/.next/static/{gvtDuAeM3WKFc9kJihv1y → _3mdwhLrxBePUb5DWqy3q}/_clientMiddlewareManifest.json +0 -0
  615. /package/web/.next/static/{gvtDuAeM3WKFc9kJihv1y → _3mdwhLrxBePUb5DWqy3q}/_ssgManifest.js +0 -0
@@ -9,26 +9,30 @@
9
9
  import { Command } from 'commander';
10
10
  import { container } from '../../../../packages/core/src/infrastructure/di/container.js';
11
11
  import { ListToolsUseCase } from '../../../../packages/core/src/application/use-cases/tools/list-tools.use-case.js';
12
+ import { getCliI18n } from '../i18n.js';
12
13
  /**
13
14
  * Create the tools command group
14
15
  */
15
16
  export function createToolsCommand() {
16
- const tools = new Command('tools').description('Manage development tools');
17
+ const t = getCliI18n().t;
18
+ const tools = new Command('tools').description(t('cli:commands.tools.description'));
17
19
  tools
18
20
  .command('list')
19
- .description('List all available tools with their installed status')
21
+ .description(t('cli:commands.tools.list.description'))
20
22
  .action(async () => {
21
23
  try {
22
24
  const listToolsUseCase = container.resolve(ListToolsUseCase);
23
25
  const result = await listToolsUseCase.execute();
24
26
  for (const tool of result) {
25
- const statusLabel = tool.status.status === 'available' ? 'installed' : 'missing';
27
+ const statusLabel = tool.status.status === 'available'
28
+ ? t('cli:commands.tools.list.installed')
29
+ : t('cli:commands.tools.list.missing');
26
30
  console.log(`[${statusLabel}] ${tool.id} ${tool.name}`);
27
31
  }
28
32
  }
29
33
  catch (error) {
30
34
  const err = error instanceof Error ? error : new Error(String(error));
31
- console.error(`Error listing tools: ${err.message}`);
35
+ console.error(t('cli:commands.tools.list.failedToList', { error: err.message }));
32
36
  process.exitCode = 1;
33
37
  }
34
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ui.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/ui.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAiC1D;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CA4FzC"}
1
+ {"version":3,"file":"ui.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/ui.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAkC1D;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CA+FzC"}
@@ -24,10 +24,11 @@ import { initializePrSyncWatcher, getPrSyncWatcher, } from '../../../../packages
24
24
  import { getExistingConnection } from '../../../../packages/core/src/infrastructure/persistence/sqlite/connection.js';
25
25
  import { BrowserOpenerService } from '../../../../packages/core/src/infrastructure/services/browser-opener.service.js';
26
26
  import { colors, fmt, messages } from '../ui/index.js';
27
+ import { getCliI18n } from '../i18n.js';
27
28
  function parsePort(value) {
28
29
  const port = parseInt(value, 10);
29
30
  if (isNaN(port) || port < 1024 || port > 65535) {
30
- throw new InvalidArgumentError('Port must be an integer between 1024 and 65535');
31
+ throw new InvalidArgumentError(getCliI18n().t('cli:commands.ui.portValidation'));
31
32
  }
32
33
  return port;
33
34
  }
@@ -35,10 +36,11 @@ function parsePort(value) {
35
36
  * Create the ui command
36
37
  */
37
38
  export function createUiCommand() {
39
+ const t = getCliI18n().t;
38
40
  return new Command('ui')
39
- .description('Start the Shep web UI')
40
- .option('-p, --port <number>', 'Port number (1024-65535)', parsePort)
41
- .option('--no-open', 'Do not auto-open browser')
41
+ .description(t('cli:commands.ui.description'))
42
+ .option('-p, --port <number>', t('cli:commands.ui.portOption'), parsePort)
43
+ .option('--no-open', t('cli:commands.ui.noOpenOption'))
42
44
  .addHelpText('after', `
43
45
  Examples:
44
46
  $ shep ui Start on default port (4050)
@@ -53,8 +55,8 @@ Examples:
53
55
  const versionService = container.resolve('IVersionService');
54
56
  setVersionEnvVars(versionService.getVersion());
55
57
  messages.newline();
56
- console.log(fmt.heading('Shep Web UI'));
57
- console.log(colors.muted(`Starting web server${dev ? ' (dev mode)' : ''}...`));
58
+ console.log(fmt.heading(t('cli:commands.ui.heading')));
59
+ console.log(colors.muted(dev ? t('cli:commands.ui.startingDev') : t('cli:commands.ui.starting')));
58
60
  messages.newline();
59
61
  const service = container.resolve('IWebServerService');
60
62
  await service.start(port, dir, dev);
@@ -72,8 +74,8 @@ Examples:
72
74
  initializePrSyncWatcher(featureRepo, runRepo, gitPrService, notificationService, undefined, db, gitForkService);
73
75
  getPrSyncWatcher().start();
74
76
  const url = `http://localhost:${port}`;
75
- messages.success(`Server ready at ${fmt.code(url)}`);
76
- messages.info('Press Ctrl+C to stop');
77
+ messages.success(t('cli:commands.ui.serverReady', { url: fmt.code(url) }));
78
+ messages.info(t('cli:commands.ui.pressCtrlC'));
77
79
  messages.newline();
78
80
  // Auto-open browser (unless --no-open)
79
81
  if (options.open !== false) {
@@ -88,7 +90,7 @@ Examples:
88
90
  return;
89
91
  isShuttingDown = true;
90
92
  messages.newline();
91
- messages.info('Shutting down...');
93
+ messages.info(t('cli:commands.ui.shuttingDown'));
92
94
  // Force exit after 5s if graceful shutdown stalls
93
95
  const forceExit = setTimeout(() => process.exit(0), 5000);
94
96
  forceExit.unref();
@@ -102,7 +104,7 @@ Examples:
102
104
  }
103
105
  catch (error) {
104
106
  const err = error instanceof Error ? error : new Error(String(error));
105
- messages.error('Failed to start web UI', err);
107
+ messages.error(t('cli:commands.ui.failedToStart'), err);
106
108
  process.exitCode = 1;
107
109
  }
108
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/upgrade.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAQ9E,KAAK,OAAO,GAAG,OAAO,YAAY,CAAC;AA8EnC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,OAAsB,GAAG,OAAO,CA+D7E"}
1
+ {"version":3,"file":"upgrade.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/upgrade.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAS9E,KAAK,OAAO,GAAG,OAAO,YAAY,CAAC;AA8EnC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,OAAsB,GAAG,OAAO,CAqE7E"}
@@ -10,6 +10,7 @@ import { Command } from 'commander';
10
10
  import { spawn as defaultSpawn } from 'node:child_process';
11
11
  import { container } from '../../../../packages/core/src/infrastructure/di/container.js';
12
12
  import { messages } from '../ui/index.js';
13
+ import { getCliI18n } from '../i18n.js';
13
14
  import { stopDaemon } from './daemon/stop-daemon.js';
14
15
  import { startDaemon } from './daemon/start-daemon.js';
15
16
  const VERSION_CHECK_TIMEOUT_MS = 10_000;
@@ -31,7 +32,7 @@ function getLatestVersion(spawnFn) {
31
32
  if (!settled) {
32
33
  settled = true;
33
34
  child.kill();
34
- messages.warning('Could not complete version check (timed out)');
35
+ messages.warning(getCliI18n().t('cli:commands.upgrade.versionCheckTimeout'));
35
36
  resolve(null);
36
37
  }
37
38
  }, VERSION_CHECK_TIMEOUT_MS);
@@ -54,7 +55,7 @@ function getLatestVersion(spawnFn) {
54
55
  if (!settled) {
55
56
  settled = true;
56
57
  clearTimeout(timeout);
57
- messages.warning('Could not complete version check');
58
+ messages.warning(getCliI18n().t('cli:commands.upgrade.versionCheckFailed'));
58
59
  resolve(null);
59
60
  }
60
61
  });
@@ -82,8 +83,9 @@ function runNpmInstall(spawnFn) {
82
83
  * Create the upgrade command
83
84
  */
84
85
  export function createUpgradeCommand(spawnFn = defaultSpawn) {
86
+ const t = getCliI18n().t;
85
87
  return new Command('upgrade')
86
- .description('Upgrade Shep CLI to the latest version')
88
+ .description(t('cli:commands.upgrade.description'))
87
89
  .action(async () => {
88
90
  try {
89
91
  const versionService = container.resolve('IVersionService');
@@ -92,15 +94,18 @@ export function createUpgradeCommand(spawnFn = defaultSpawn) {
92
94
  const latestVersion = await getLatestVersion(spawnFn);
93
95
  // 2. Compare — exit early if up to date
94
96
  if (latestVersion && latestVersion === currentVersion) {
95
- messages.success(`Already up to date (v${currentVersion})`);
97
+ messages.success(t('cli:commands.upgrade.alreadyUpToDate', { version: currentVersion }));
96
98
  return;
97
99
  }
98
100
  // 3. Show what we're doing
99
101
  if (latestVersion) {
100
- messages.info(`Upgrading from v${currentVersion} to v${latestVersion}`);
102
+ messages.info(t('cli:commands.upgrade.upgradingFromTo', {
103
+ current: currentVersion,
104
+ latest: latestVersion,
105
+ }));
101
106
  }
102
107
  else {
103
- messages.info(`Upgrading from v${currentVersion} to latest`);
108
+ messages.info(t('cli:commands.upgrade.upgradingToLatest', { current: currentVersion }));
104
109
  }
105
110
  // 4. Check daemon state before install (FR-1)
106
111
  const daemonService = container.resolve('IDaemonService');
@@ -108,7 +113,7 @@ export function createUpgradeCommand(spawnFn = defaultSpawn) {
108
113
  const daemonWasRunning = daemonState !== null && daemonService.isAlive(daemonState.pid);
109
114
  const previousPort = daemonWasRunning ? daemonState.port : undefined;
110
115
  if (daemonWasRunning) {
111
- messages.info('Stopping daemon before upgrade...');
116
+ messages.info(t('cli:commands.upgrade.stoppingDaemon'));
112
117
  await stopDaemon(daemonService);
113
118
  }
114
119
  // 5. Run npm i -g @shepai/cli@latest; always restore daemon in finally (FR-2, FR-3)
@@ -118,27 +123,27 @@ export function createUpgradeCommand(spawnFn = defaultSpawn) {
118
123
  }
119
124
  finally {
120
125
  if (daemonWasRunning) {
121
- messages.info('Restarting daemon...');
126
+ messages.info(t('cli:commands.upgrade.restartingDaemon'));
122
127
  await startDaemon({ port: previousPort });
123
- messages.success('Daemon restarted successfully.');
128
+ messages.success(t('cli:commands.upgrade.daemonRestarted'));
124
129
  }
125
130
  }
126
131
  if (installExitCode === 0) {
127
- messages.success('Shep CLI upgraded successfully');
132
+ messages.success(t('cli:commands.upgrade.upgradeSuccess'));
128
133
  }
129
134
  else {
130
135
  if (daemonWasRunning) {
131
- messages.error('Upgrade failed — daemon restored on previous version.');
136
+ messages.error(t('cli:commands.upgrade.upgradeFailedDaemonRestored'));
132
137
  }
133
138
  else {
134
- messages.error('Upgrade failed');
139
+ messages.error(t('cli:commands.upgrade.upgradeFailed'));
135
140
  }
136
141
  process.exitCode = 1;
137
142
  }
138
143
  }
139
144
  catch (error) {
140
145
  const err = error instanceof Error ? error : new Error(String(error));
141
- messages.error('Upgrade failed', err);
146
+ messages.error(t('cli:commands.upgrade.upgradeFailed'), err);
142
147
  process.exitCode = 1;
143
148
  }
144
149
  });
@@ -1 +1 @@
1
- {"version":3,"file":"version.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/version.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAa9C"}
1
+ {"version":3,"file":"version.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/version.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAgB9C"}
@@ -17,19 +17,21 @@
17
17
  import { Command } from 'commander';
18
18
  import { container } from '../../../../packages/core/src/infrastructure/di/container.js';
19
19
  import { colors, fmt, messages } from '../ui/index.js';
20
+ import { getCliI18n } from '../i18n.js';
20
21
  /**
21
22
  * Create the version command
22
23
  */
23
24
  export function createVersionCommand() {
24
- return new Command('version').description('Display version information').action(() => {
25
+ const t = getCliI18n().t;
26
+ return new Command('version').description(t('cli:commands.version.description')).action(() => {
25
27
  const versionService = container.resolve('IVersionService');
26
28
  const info = versionService.getVersion();
27
29
  messages.newline();
28
30
  console.log(`${fmt.heading(info.name)} ${fmt.version(info.version)}`);
29
31
  console.log(colors.muted(info.description));
30
32
  messages.newline();
31
- console.log(`${fmt.label('Node:')} ${process.version}`);
32
- console.log(`${fmt.label('Platform:')} ${process.platform} ${process.arch}`);
33
+ console.log(`${fmt.label(t('cli:commands.version.nodeLabel'))} ${process.version}`);
34
+ console.log(`${fmt.label(t('cli:commands.version.platformLabel'))} ${process.platform} ${process.arch}`);
33
35
  messages.newline();
34
36
  });
35
37
  }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * CLI i18n initialization module.
3
+ *
4
+ * Configures i18next for the CLI presentation layer using the
5
+ * common and cli namespaces. Translation files are loaded from
6
+ * the shared translations/ directory at the project root.
7
+ */
8
+ import { type i18n } from 'i18next';
9
+ declare const FALLBACK_LANGUAGE = "en";
10
+ /**
11
+ * Resolve the translations directory. In development this is at the
12
+ * project root; in production (dist/) it is resolved relative to this
13
+ * file's location.
14
+ */
15
+ declare function getTranslationsDir(): string;
16
+ /**
17
+ * Load a single namespace JSON file for a given locale.
18
+ * Returns an empty object if the file does not exist or cannot be parsed.
19
+ */
20
+ export declare function loadNamespace(translationsDir: string, locale: string, ns: string): Record<string, unknown>;
21
+ /**
22
+ * Build i18next resources object by loading namespace files from disk.
23
+ */
24
+ export declare function buildResources(translationsDir: string, language: string, namespaces: readonly string[]): Record<string, Record<string, Record<string, unknown>>>;
25
+ /**
26
+ * Initialize i18next for the CLI layer.
27
+ *
28
+ * Creates a dedicated i18next instance (via createInstance) to avoid
29
+ * conflicts with other presentation layers sharing the same process.
30
+ *
31
+ * @param language - BCP-47 language code (e.g. 'en', 'ru', 'ar')
32
+ * @returns The initialized i18next instance
33
+ */
34
+ export declare function initI18n(language: string): Promise<i18n>;
35
+ /**
36
+ * Get the initialized CLI i18next instance.
37
+ * Throws if initI18n() has not been called.
38
+ */
39
+ export declare function getCliI18n(): i18n;
40
+ export { FALLBACK_LANGUAGE, getTranslationsDir };
41
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/presentation/cli/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAgB,EAAE,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAM7C,QAAA,MAAM,iBAAiB,OAAO,CAAC;AAE/B;;;;GAIG;AACH,iBAAS,kBAAkB,IAAI,MAAM,CAcpC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAazD;AAKD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB9D;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAKjC;AAED,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * CLI i18n initialization module.
3
+ *
4
+ * Configures i18next for the CLI presentation layer using the
5
+ * common and cli namespaces. Translation files are loaded from
6
+ * the shared translations/ directory at the project root.
7
+ */
8
+ import i18next from 'i18next';
9
+ import { readFileSync, existsSync } from 'node:fs';
10
+ import { resolve, dirname } from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
12
+ const NAMESPACES = ['common', 'cli'];
13
+ const FALLBACK_LANGUAGE = 'en';
14
+ /**
15
+ * Resolve the translations directory. In development this is at the
16
+ * project root; in production (dist/) it is resolved relative to this
17
+ * file's location.
18
+ */
19
+ function getTranslationsDir() {
20
+ const thisDir = dirname(fileURLToPath(import.meta.url));
21
+ // Walk up from src/presentation/cli/ (or dist/src/presentation/cli/)
22
+ // to reach the project root where translations/ lives.
23
+ const candidates = [
24
+ resolve(thisDir, '../../../translations'),
25
+ resolve(thisDir, '../../../../translations'),
26
+ ];
27
+ for (const candidate of candidates) {
28
+ if (existsSync(candidate)) {
29
+ return candidate;
30
+ }
31
+ }
32
+ return candidates[0];
33
+ }
34
+ /**
35
+ * Load a single namespace JSON file for a given locale.
36
+ * Returns an empty object if the file does not exist or cannot be parsed.
37
+ */
38
+ export function loadNamespace(translationsDir, locale, ns) {
39
+ const filePath = resolve(translationsDir, locale, `${ns}.json`);
40
+ try {
41
+ const content = readFileSync(filePath, 'utf-8');
42
+ return JSON.parse(content);
43
+ }
44
+ catch {
45
+ return {};
46
+ }
47
+ }
48
+ /**
49
+ * Build i18next resources object by loading namespace files from disk.
50
+ */
51
+ export function buildResources(translationsDir, language, namespaces) {
52
+ const resources = {};
53
+ const locales = language === FALLBACK_LANGUAGE ? [FALLBACK_LANGUAGE] : [language, FALLBACK_LANGUAGE];
54
+ for (const locale of locales) {
55
+ resources[locale] = {};
56
+ for (const ns of namespaces) {
57
+ resources[locale][ns] = loadNamespace(translationsDir, locale, ns);
58
+ }
59
+ }
60
+ return resources;
61
+ }
62
+ /** Module-level CLI i18next instance. */
63
+ let cliI18n;
64
+ /**
65
+ * Initialize i18next for the CLI layer.
66
+ *
67
+ * Creates a dedicated i18next instance (via createInstance) to avoid
68
+ * conflicts with other presentation layers sharing the same process.
69
+ *
70
+ * @param language - BCP-47 language code (e.g. 'en', 'ru', 'ar')
71
+ * @returns The initialized i18next instance
72
+ */
73
+ export async function initI18n(language) {
74
+ const translationsDir = getTranslationsDir();
75
+ const resources = buildResources(translationsDir, language, NAMESPACES);
76
+ const instance = i18next.createInstance();
77
+ await instance.init({
78
+ lng: language,
79
+ fallbackLng: FALLBACK_LANGUAGE,
80
+ defaultNS: 'common',
81
+ ns: [...NAMESPACES],
82
+ resources,
83
+ interpolation: {
84
+ escapeValue: false, // CLI output is not HTML
85
+ },
86
+ });
87
+ cliI18n = instance;
88
+ return instance;
89
+ }
90
+ /**
91
+ * Get the initialized CLI i18next instance.
92
+ * Throws if initI18n() has not been called.
93
+ */
94
+ export function getCliI18n() {
95
+ if (!cliI18n) {
96
+ throw new Error('CLI i18n not initialized. Call initI18n() first.');
97
+ }
98
+ return cliI18n;
99
+ }
100
+ export { FALLBACK_LANGUAGE, getTranslationsDir };
@@ -54,6 +54,8 @@ import { startDaemon } from './commands/daemon/start-daemon.js';
54
54
  import { initializeContainer, container } from '../../../packages/core/src/infrastructure/di/container.js';
55
55
  import { InitializeSettingsUseCase } from '../../../packages/core/src/application/use-cases/settings/initialize-settings.use-case.js';
56
56
  import { initializeSettings } from '../../../packages/core/src/infrastructure/services/settings.service.js';
57
+ import { initI18n as initCliI18n } from './i18n.js';
58
+ import { initI18n as initTuiI18n } from '../tui/i18n.js';
57
59
  /**
58
60
  * Bootstrap function - initializes all dependencies before CLI starts.
59
61
  * Performs async initialization (database, settings) before parsing commands.
@@ -82,7 +84,17 @@ async function bootstrap() {
82
84
  messages.error('Failed to initialize settings', err);
83
85
  throw error;
84
86
  }
85
- // Step 3: Set up Commander CLI
87
+ // Step 3: Initialize i18n for CLI and TUI layers
88
+ try {
89
+ const { getSettings } = await import('../../../packages/core/src/infrastructure/services/settings.service.js');
90
+ const currentSettings = getSettings();
91
+ const language = currentSettings.user?.preferredLanguage ?? 'en';
92
+ await Promise.all([initCliI18n(language), initTuiI18n(language)]);
93
+ }
94
+ catch {
95
+ // i18n init failure is non-fatal — fall back to English
96
+ }
97
+ // Step 4: Set up Commander CLI
86
98
  const versionService = container.resolve('IVersionService');
87
99
  const { version, description } = versionService.getVersion();
88
100
  const program = new Command()
@@ -1 +1 @@
1
- {"version":3,"file":"install-messages.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/install-messages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,uCAAuC;AACvC,eAAO,MAAM,eAAe;IAC1B,6CAA6C;+BAClB,MAAM,GAAG,IAAI;IAIxC,mCAAmC;6BACV,MAAM,GAAG,IAAI;IAItC,mCAAmC;4BACX,MAAM,gBAAgB,MAAM,GAAG,IAAI;IAI3D,iCAAiC;0BACX,MAAM,kBAAkB,MAAM,EAAE,GAAG,IAAI;IAO7D,4CAA4C;mCACb,MAAM,GAAG,IAAI;IAI5C,4CAA4C;8BAClB,MAAM,GAAG,IAAI;CAIxC,CAAC"}
1
+ {"version":3,"file":"install-messages.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/install-messages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,uCAAuC;AACvC,eAAO,MAAM,eAAe;IAC1B,6CAA6C;+BAClB,MAAM,GAAG,IAAI;IAKxC,mCAAmC;6BACV,MAAM,GAAG,IAAI;IAKtC,mCAAmC;4BACX,MAAM,gBAAgB,MAAM,GAAG,IAAI;IAQ3D,iCAAiC;0BACX,MAAM,kBAAkB,MAAM,EAAE,GAAG,IAAI;IAW7D,4CAA4C;mCACb,MAAM,GAAG,IAAI;IAK5C,4CAA4C;8BAClB,MAAM,GAAG,IAAI;CAKxC,CAAC"}
@@ -6,31 +6,41 @@
6
6
  * progress indicators, and result messages.
7
7
  */
8
8
  import { colors, fmt, messages } from './index.js';
9
+ import { getCliI18n } from '../i18n.js';
9
10
  /** Messages for the install command */
10
11
  export const installMessages = {
11
12
  /** Display tool already available message */
12
13
  alreadyInstalled(toolName) {
13
- messages.success(`${toolName} is already installed`);
14
+ const t = getCliI18n().t;
15
+ messages.success(t('cli:ui.installMessages.alreadyInstalled', { tool: toolName }));
14
16
  },
15
17
  /** Display installation success */
16
18
  installSuccess(toolName) {
17
- messages.success(`${toolName} installed successfully`);
19
+ const t = getCliI18n().t;
20
+ messages.success(t('cli:ui.installMessages.installSuccess', { tool: toolName }));
18
21
  },
19
22
  /** Display installation failure */
20
23
  installFailed(toolName, errorMessage) {
21
- messages.error(`Failed to install ${toolName}: ${errorMessage}`, new Error(errorMessage));
24
+ const t = getCliI18n().t;
25
+ messages.error(t('cli:ui.installMessages.installFailed', { tool: toolName, error: errorMessage }), new Error(errorMessage));
22
26
  },
23
27
  /** Display unknown tool error */
24
28
  unknownTool(toolName, availableTools) {
25
- messages.error(`Unknown tool: "${toolName}". Available: ${availableTools.join(', ')}`, new Error(`Unknown tool: ${toolName}`));
29
+ const t = getCliI18n().t;
30
+ messages.error(t('cli:ui.installMessages.unknownTool', {
31
+ tool: toolName,
32
+ available: availableTools.join(', '),
33
+ }), new Error(`Unknown tool: ${toolName}`));
26
34
  },
27
35
  /** Display checking availability message */
28
36
  checkingAvailability(toolName) {
29
- console.log(colors.muted(`Checking if ${toolName} is available...`));
37
+ const t = getCliI18n().t;
38
+ console.log(colors.muted(t('cli:ui.installMessages.checkingAvailability', { tool: toolName })));
30
39
  },
31
40
  /** Display starting installation message */
32
41
  startingInstall(toolName) {
33
- console.log(fmt.heading(`Installing ${toolName}`));
42
+ const t = getCliI18n().t;
43
+ console.log(fmt.heading(t('cli:ui.installMessages.installingHeading', { tool: toolName })));
34
44
  console.log();
35
45
  },
36
46
  };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * TUI i18n initialization module.
3
+ *
4
+ * Configures i18next for the TUI presentation layer using the
5
+ * common and tui namespaces. Shares the same translation file
6
+ * loading infrastructure as the CLI module.
7
+ */
8
+ import { type i18n } from 'i18next';
9
+ /**
10
+ * Initialize i18next for the TUI layer.
11
+ *
12
+ * Creates a dedicated i18next instance (via createInstance) to avoid
13
+ * conflicts with the CLI instance in the same process.
14
+ *
15
+ * @param language - BCP-47 language code (e.g. 'en', 'ru', 'ar')
16
+ * @returns The initialized i18next instance
17
+ */
18
+ export declare function initI18n(language: string): Promise<i18n>;
19
+ /**
20
+ * Get the initialized TUI i18next instance.
21
+ * Throws if initI18n() has not been called.
22
+ */
23
+ export declare function getTuiI18n(): i18n;
24
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAgB,EAAE,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAQ7C;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB9D;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAKjC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * TUI i18n initialization module.
3
+ *
4
+ * Configures i18next for the TUI presentation layer using the
5
+ * common and tui namespaces. Shares the same translation file
6
+ * loading infrastructure as the CLI module.
7
+ */
8
+ import i18next from 'i18next';
9
+ import { FALLBACK_LANGUAGE, getTranslationsDir, buildResources } from '../../presentation/cli/i18n.js';
10
+ const NAMESPACES = ['common', 'tui'];
11
+ /** Module-level TUI i18next instance. */
12
+ let tuiI18n;
13
+ /**
14
+ * Initialize i18next for the TUI layer.
15
+ *
16
+ * Creates a dedicated i18next instance (via createInstance) to avoid
17
+ * conflicts with the CLI instance in the same process.
18
+ *
19
+ * @param language - BCP-47 language code (e.g. 'en', 'ru', 'ar')
20
+ * @returns The initialized i18next instance
21
+ */
22
+ export async function initI18n(language) {
23
+ const translationsDir = getTranslationsDir();
24
+ const resources = buildResources(translationsDir, language, NAMESPACES);
25
+ const instance = i18next.createInstance();
26
+ await instance.init({
27
+ lng: language,
28
+ fallbackLng: FALLBACK_LANGUAGE,
29
+ defaultNS: 'common',
30
+ ns: [...NAMESPACES],
31
+ resources,
32
+ interpolation: {
33
+ escapeValue: false,
34
+ },
35
+ });
36
+ tuiI18n = instance;
37
+ return instance;
38
+ }
39
+ /**
40
+ * Get the initialized TUI i18next instance.
41
+ * Throws if initI18n() has not been called.
42
+ */
43
+ export function getTuiI18n() {
44
+ if (!tuiI18n) {
45
+ throw new Error('TUI i18n not initialized. Call initI18n() first.');
46
+ }
47
+ return tuiI18n;
48
+ }
@@ -12,37 +12,19 @@ import { AgentType } from '../../../../packages/core/src/domain/generated/output
12
12
  * as disabled with a "Coming Soon" badge.
13
13
  */
14
14
  export declare function createAgentSelectConfig(): {
15
- readonly message: "Select your AI coding agent";
16
- readonly choices: readonly [{
17
- readonly name: "Claude Code";
18
- readonly value: AgentType.ClaudeCode;
19
- readonly description: "Anthropic Claude Code CLI";
20
- }, {
21
- readonly name: "Gemini CLI";
22
- readonly value: AgentType.GeminiCli;
23
- readonly description: "Google Gemini CLI";
24
- }, {
25
- readonly name: "Codex CLI";
26
- readonly value: AgentType.CodexCli;
27
- readonly description: "OpenAI's Codex CLI terminal agent (GPT models)";
28
- }, {
29
- readonly name: "Cursor";
30
- readonly value: AgentType.Cursor;
31
- readonly description: "Cursor AI coding agent";
32
- }, {
33
- readonly name: "Dev (Mock)";
34
- readonly value: AgentType.Dev;
35
- readonly description: "Local development mock — no agent binary required";
36
- }, {
37
- readonly name: "Aider";
38
- readonly value: AgentType.Aider;
39
- readonly disabled: "(Coming Soon)";
40
- }, {
41
- readonly name: "Continue";
42
- readonly value: AgentType.Continue;
43
- readonly disabled: "(Coming Soon)";
44
- }];
45
- readonly theme: {
15
+ message: string;
16
+ choices: ({
17
+ name: string;
18
+ value: AgentType;
19
+ description: string;
20
+ disabled?: undefined;
21
+ } | {
22
+ name: string;
23
+ value: AgentType;
24
+ disabled: string;
25
+ description?: undefined;
26
+ })[];
27
+ theme: {
46
28
  readonly prefix: {
47
29
  readonly idle: string;
48
30
  readonly done: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-select.prompt.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/tui/prompts/agent-select.prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD;;;;;GAKG;AACH,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CtC"}
1
+ {"version":3,"file":"agent-select.prompt.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/tui/prompts/agent-select.prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAIzD;;;;;GAKG;AACH,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;EA2CtC"}