specrails-desktop 2.19.0 → 2.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/client/dist/assets/ActivityFeedPage-BgLjSsDn.js +1 -0
  2. package/client/dist/assets/AgentBrowserCapture-R87DoreG.js +1 -0
  3. package/client/dist/assets/AgentModeCodePane-CO8F0ttc.js +2 -0
  4. package/client/dist/assets/AgentModeJobsPane-BecN3lwS.js +1 -0
  5. package/client/dist/assets/AgentsPage-_-Q9plMs.js +86 -0
  6. package/client/dist/assets/AnalyticsPage-Cqh5IGaF.js +1 -0
  7. package/client/dist/assets/{BarChart-HPiao--v.js → BarChart-DZlxRF5i.js} +1 -1
  8. package/client/dist/assets/CodePage-4eiDoOBX.js +2 -0
  9. package/client/dist/assets/{DesktopAnalyticsPage-B2RBxIvj.js → DesktopAnalyticsPage-DyiCeq0h.js} +1 -1
  10. package/client/dist/assets/{DocsDialog-BJDvUEGj.js → DocsDialog-CDZv0FMK.js} +2 -2
  11. package/client/dist/assets/DocsPage-BmwaXyUf.js +11 -0
  12. package/client/dist/assets/{ExportDropdown-CYMcbLTD.js → ExportDropdown-CWafyruY.js} +1 -1
  13. package/client/dist/assets/IntegrationsPage-CY2jfpeW.js +3 -0
  14. package/client/dist/assets/JobDetailPage-p0lsbXRg.js +1 -0
  15. package/client/dist/assets/JobsPage-GeKC3ckC.js +1 -0
  16. package/client/dist/assets/LogViewer-Cz7jzyU2.js +16 -0
  17. package/client/dist/assets/LoopBuilderPage-C_vv7AW2.js +7 -0
  18. package/client/dist/assets/LoopsPage-CettzySP.js +1 -0
  19. package/client/dist/assets/ProjectSettingsDialog-Xw30FTul.js +1 -0
  20. package/client/dist/assets/agent-B7GdHP3Z.js +1 -0
  21. package/client/dist/assets/agent-BHmcgoJf.js +1 -0
  22. package/client/dist/assets/agent-BdY_fii4.js +1 -0
  23. package/client/dist/assets/agent-C32FOi9v.js +1 -0
  24. package/client/dist/assets/agent-CiFQxoaZ2.js +1 -0
  25. package/client/dist/assets/agent-CtAag7V6.js +1 -0
  26. package/client/dist/assets/agent-DE4Mp1fY2.js +1 -0
  27. package/client/dist/assets/agent-DK8qovyG2.js +1 -0
  28. package/client/dist/assets/{dist-js-ClEfL6Bo.js → dist-js-DoZ1SVEs.js} +1 -1
  29. package/client/dist/assets/{dist-js-b2_z7zAi.js → dist-js-zlcAXgob.js} +1 -1
  30. package/client/dist/assets/index-5mbwBNQ-.css +2 -0
  31. package/client/dist/assets/index-CG4z4_Mq.js +152 -0
  32. package/client/dist/assets/{lib-CfphudAm.js → lib-zJbG81CY.js} +2 -2
  33. package/client/dist/assets/nav-BAsYcqdw2.js +1 -0
  34. package/client/dist/assets/nav-BRrNlZkr.js +1 -0
  35. package/client/dist/assets/nav-Bqhyfbcj2.js +1 -0
  36. package/client/dist/assets/nav-CQb9y1km.js +1 -0
  37. package/client/dist/assets/nav-Cibp2KWF.js +1 -0
  38. package/client/dist/assets/nav-CzKzuwH8.js +1 -0
  39. package/client/dist/assets/nav-Danf5sRf2.js +1 -0
  40. package/client/dist/assets/nav-DtTnF9xd.js +1 -0
  41. package/client/dist/assets/{settings-DmyDpuzu.js → settings-BPq9nCJm.js} +1 -1
  42. package/client/dist/assets/{settings-DaXhxNug2.js → settings-BWHGtmU12.js} +1 -1
  43. package/client/dist/assets/{settings-MjYVJvDE.js → settings-C-m3yEZ2.js} +1 -1
  44. package/client/dist/assets/settings-CY8udi0e.js +1 -0
  45. package/client/dist/assets/{settings-CfOWHPzc2.js → settings-DZj7Uqy32.js} +1 -1
  46. package/client/dist/assets/{settings-CX29QcQW.js → settings-VgCsjaYf.js} +1 -1
  47. package/client/dist/assets/{settings-DwPRLcxr2.js → settings-r8Qq2Gzp2.js} +1 -1
  48. package/client/dist/assets/{settings-BOZBX-Vq.js → settings-zZr7NzuB.js} +1 -1
  49. package/client/dist/assets/{upload-Ox9jUq1X.js → upload-Cm4KWhcE.js} +1 -1
  50. package/client/dist/assets/{value-BeQVX5gN.js → value-m3Q84dDF.js} +1 -1
  51. package/client/dist/index.html +5 -5
  52. package/package.json +1 -1
  53. package/server/dist/agent-chat-manager.js +117 -13
  54. package/server/dist/agent-chat-router.js +7 -2
  55. package/server/dist/agent-operator-prompt.js +4 -2
  56. package/server/dist/file-provenance.js +9 -6
  57. package/server/dist/project-git.js +147 -0
  58. package/server/dist/project-router-git.js +43 -0
  59. package/server/dist/project-router.js +2 -0
  60. package/client/dist/assets/ActivityFeedPage-C0_k6n5T.js +0 -1
  61. package/client/dist/assets/AgentBrowserCapture-NHUCEnTh.js +0 -1
  62. package/client/dist/assets/AgentModeCodePane-jddXrhPY.js +0 -2
  63. package/client/dist/assets/AgentsPage-BPjf6bId.js +0 -86
  64. package/client/dist/assets/AnalyticsPage-BaJjj5mO.js +0 -1
  65. package/client/dist/assets/CodePage-CAD4KfkC.js +0 -2
  66. package/client/dist/assets/DocsPage-B6H-DBs8.js +0 -11
  67. package/client/dist/assets/IntegrationsPage-Dx_UpQVk.js +0 -3
  68. package/client/dist/assets/JobDetailPage-BlTnsRAN.js +0 -16
  69. package/client/dist/assets/JobsPage-EB0PbXOk.js +0 -1
  70. package/client/dist/assets/LoopBuilderPage-DfWfhhJY.js +0 -7
  71. package/client/dist/assets/LoopsPage-DCVATTv5.js +0 -1
  72. package/client/dist/assets/agent-B5Ycau5M.js +0 -1
  73. package/client/dist/assets/agent-BEz08l4_2.js +0 -1
  74. package/client/dist/assets/agent-BIX51CEA.js +0 -1
  75. package/client/dist/assets/agent-Bc9Kwf65.js +0 -1
  76. package/client/dist/assets/agent-BiM7puyn.js +0 -1
  77. package/client/dist/assets/agent-C0kYSv3m2.js +0 -1
  78. package/client/dist/assets/agent-CCzWlfqs.js +0 -1
  79. package/client/dist/assets/agent-DiCSo31C.js +0 -1
  80. package/client/dist/assets/index-9yNUBwEi.css +0 -2
  81. package/client/dist/assets/index-BeujshsU.js +0 -152
  82. package/client/dist/assets/nav--1ErXZrS.js +0 -1
  83. package/client/dist/assets/nav-18nqSJ8h.js +0 -1
  84. package/client/dist/assets/nav-BuonHb17.js +0 -1
  85. package/client/dist/assets/nav-C-sCoOLY2.js +0 -1
  86. package/client/dist/assets/nav-ClXz_3Ic2.js +0 -1
  87. package/client/dist/assets/nav-CtqgSQeE2.js +0 -1
  88. package/client/dist/assets/nav-S3YvCaVv.js +0 -1
  89. package/client/dist/assets/nav-czg8NkN-.js +0 -1
  90. package/client/dist/assets/settings-zJFdTzKE.js +0 -1
  91. /package/client/dist/assets/{activity-C5SeKbom.js → activity-B_71BWg3.js} +0 -0
  92. /package/client/dist/assets/{activity-DLdwUYv7.js → activity-BpTTj_PH.js} +0 -0
  93. /package/client/dist/assets/{activity-BlvN5rhP.js → activity-Ch-wbr0C2.js} +0 -0
  94. /package/client/dist/assets/{activity-DVuiy8TI2.js → activity-D0rfjQzT2.js} +0 -0
  95. /package/client/dist/assets/{activity-DIJexk6v2.js → activity-D2e62vbV2.js} +0 -0
  96. /package/client/dist/assets/{activity-Dsf3J7iW.js → activity-DHv2V5Oi.js} +0 -0
  97. /package/client/dist/assets/{activity-DOKV_Wyf.js → activity-DemHQS7l.js} +0 -0
  98. /package/client/dist/assets/{addspec-CXfEOrD42.js → addspec-B6Ns8KU02.js} +0 -0
  99. /package/client/dist/assets/{addspec-D28kw9ow2.js → addspec-CrEm6Fzr2.js} +0 -0
  100. /package/client/dist/assets/{addspec-BXV6sx5l.js → addspec-D6L4ZteP.js} +0 -0
  101. /package/client/dist/assets/{addspec-DC1tgsFG.js → addspec-Dio-H5z0.js} +0 -0
  102. /package/client/dist/assets/{addspec-DcHALPEp.js → addspec-l_zU5gla.js} +0 -0
  103. /package/client/dist/assets/{addspec-CS895X6A.js → addspec-qGyH7MHy2.js} +0 -0
  104. /package/client/dist/assets/{addspec-D39EEg02.js → addspec-xwRX_Pnf.js} +0 -0
  105. /package/client/dist/assets/{agents-CsDEv4Fj.js → agents-CHgCudUV.js} +0 -0
  106. /package/client/dist/assets/{agents-z0kA-y0Q.js → agents-CnaPeSyw.js} +0 -0
  107. /package/client/dist/assets/{agents-BXDCFJQa.js → agents-DuhLEaQ_.js} +0 -0
  108. /package/client/dist/assets/{agents-BFrHy5d-2.js → agents-Dumx4JiM2.js} +0 -0
  109. /package/client/dist/assets/{agents-BFy2Kq_k2.js → agents-OzxCLVW1.js} +0 -0
  110. /package/client/dist/assets/{agents-CTdwacTO.js → agents-Xh-zYHUx2.js} +0 -0
  111. /package/client/dist/assets/{agents-BySH0Gvw.js → agents-hv3sqmPm2.js} +0 -0
  112. /package/client/dist/assets/{agentstudio-CSZo7p8K.js → agentstudio-BIxikDf_.js} +0 -0
  113. /package/client/dist/assets/{agentstudio-B8H2H4Db2.js → agentstudio-Bo91kfUd2.js} +0 -0
  114. /package/client/dist/assets/{agentstudio-B9zthaTJ.js → agentstudio-Bz8cP8_c.js} +0 -0
  115. /package/client/dist/assets/{agentstudio-BDMpU01s.js → agentstudio-CCthUdzR.js} +0 -0
  116. /package/client/dist/assets/{agentstudio-CdD6J23W.js → agentstudio-CcH8Ckql2.js} +0 -0
  117. /package/client/dist/assets/{agentstudio-D80fZu_M2.js → agentstudio-DARgYg5Z2.js} +0 -0
  118. /package/client/dist/assets/{agentstudio-EuKglkaF2.js → agentstudio-VJOa_NVO.js} +0 -0
  119. /package/client/dist/assets/{aiedit-B_VOTUo42.js → aiedit-5ZXN4cep2.js} +0 -0
  120. /package/client/dist/assets/{aiedit-DX3BBpXF.js → aiedit-7B2dvCv-.js} +0 -0
  121. /package/client/dist/assets/{aiedit-TON-4N9S.js → aiedit-B7gAJZVC.js} +0 -0
  122. /package/client/dist/assets/{aiedit-ybQmdsST.js → aiedit-D92V-kUW.js} +0 -0
  123. /package/client/dist/assets/{aiedit-D59sPapq2.js → aiedit-D9ualLVJ.js} +0 -0
  124. /package/client/dist/assets/{aiedit-Cxoe_0wv.js → aiedit-h48tJU0V2.js} +0 -0
  125. /package/client/dist/assets/{aiedit-GYOYWCHJ2.js → aiedit-xkA_mR2a2.js} +0 -0
  126. /package/client/dist/assets/{analytics-DGOoMkaZ.js → analytics-BBAfeB1o.js} +0 -0
  127. /package/client/dist/assets/{analytics-B2jjXLCP2.js → analytics-BM1R5CEp2.js} +0 -0
  128. /package/client/dist/assets/{analytics-BotqRU_R.js → analytics-BjLruoYS.js} +0 -0
  129. /package/client/dist/assets/{analytics-CqMJQb7N.js → analytics-CKwh2zUr.js} +0 -0
  130. /package/client/dist/assets/{analytics-DL7uwNAI2.js → analytics-CpcjUkV72.js} +0 -0
  131. /package/client/dist/assets/{analytics-Ck3vl2Qo2.js → analytics-DbXHdSlk2.js} +0 -0
  132. /package/client/dist/assets/{analytics-BTkXLTfa.js → analytics-Djzr1xUQ.js} +0 -0
  133. /package/client/dist/assets/{attachments-7w-BR2V2.js → attachments-Bnbyj2PN.js} +0 -0
  134. /package/client/dist/assets/{attachments-D0fGlFve.js → attachments-C-gyrCOb.js} +0 -0
  135. /package/client/dist/assets/{attachments-Cbh4AwjP.js → attachments-C11tOKZ_.js} +0 -0
  136. /package/client/dist/assets/{attachments-BcE7kZG-2.js → attachments-CIeLa8l12.js} +0 -0
  137. /package/client/dist/assets/{attachments-B5QX1Xfa2.js → attachments-Cxrs0pyL2.js} +0 -0
  138. /package/client/dist/assets/{attachments-BsJJXFzT.js → attachments-DslHfa-L.js} +0 -0
  139. /package/client/dist/assets/{attachments-D3DJpd3e2.js → attachments-TTPsc0a52.js} +0 -0
  140. /package/client/dist/assets/{browser-CmWGMRGf2.js → browser-BKP6hqQC2.js} +0 -0
  141. /package/client/dist/assets/{browser-CaV3BJNY2.js → browser-BTivfZKE2.js} +0 -0
  142. /package/client/dist/assets/{browser-BOxg0p3n.js → browser-DEEO-OSi.js} +0 -0
  143. /package/client/dist/assets/{browser-D6wbpBOL2.js → browser-DlKLfT612.js} +0 -0
  144. /package/client/dist/assets/{browser-dsgDU1HB.js → browser-DlSXtfu5.js} +0 -0
  145. /package/client/dist/assets/{browser-BSh8xUWV.js → browser-INCUyduh.js} +0 -0
  146. /package/client/dist/assets/{browser-9GR11iTi.js → browser-bpO3onlS.js} +0 -0
  147. /package/client/dist/assets/{chat-CYHUUW0p2.js → chat-5mdg_YIc2.js} +0 -0
  148. /package/client/dist/assets/{chat-CAo0jCnj2.js → chat-BGax2nV62.js} +0 -0
  149. /package/client/dist/assets/{chat-DhpcWjOf.js → chat-BpYxnkr4.js} +0 -0
  150. /package/client/dist/assets/{chat-cFG-UfRA2.js → chat-BvHrebKC2.js} +0 -0
  151. /package/client/dist/assets/{chat-B90iLDI4.js → chat-CZyiLJvQ.js} +0 -0
  152. /package/client/dist/assets/{chat-CW54IP3u.js → chat-DKYP7NnC.js} +0 -0
  153. /package/client/dist/assets/{chat-D1PXX_p2.js → chat-wkTIy9rX.js} +0 -0
  154. /package/client/dist/assets/{code-B5UrmjaE2.js → code-BFxE1Yt62.js} +0 -0
  155. /package/client/dist/assets/{code-B1aOMCVV.js → code-BefYOm5Q.js} +0 -0
  156. /package/client/dist/assets/{code-DZKjfzBN.js → code-BkXpJt99.js} +0 -0
  157. /package/client/dist/assets/{code-CjBHU0nw.js → code-C6Sq7_t8.js} +0 -0
  158. /package/client/dist/assets/{code--qUk_yn-.js → code-CGj3w-2N.js} +0 -0
  159. /package/client/dist/assets/{code-D7GLAjrz2.js → code-Dfsxc9o82.js} +0 -0
  160. /package/client/dist/assets/{code-Cjv4_HkK2.js → code-Y5urks5s2.js} +0 -0
  161. /package/client/dist/assets/{commands-oB9q2vy_2.js → commands-Bb7MnPqn2.js} +0 -0
  162. /package/client/dist/assets/{commands-MqNuGGO4.js → commands-CQkdthjF.js} +0 -0
  163. /package/client/dist/assets/{commands-BCx1uDIE.js → commands-C_7zZwJf.js} +0 -0
  164. /package/client/dist/assets/{commands-Bhw9Hqsa2.js → commands-DBc5llLi2.js} +0 -0
  165. /package/client/dist/assets/{commands-B9XaopQC.js → commands-D_6B8lfU.js} +0 -0
  166. /package/client/dist/assets/{commands-DuaQT-it.js → commands-DhZNhSbl.js} +0 -0
  167. /package/client/dist/assets/{commands-D0RnooQF2.js → commands-uz_uKT242.js} +0 -0
  168. /package/client/dist/assets/{common-wEB9RBdf.js → common-Bb64s3Bm.js} +0 -0
  169. /package/client/dist/assets/{common-BXzqeuiC2.js → common-C8ZD5upH2.js} +0 -0
  170. /package/client/dist/assets/{common-C-jaOdxz2.js → common-CeQUwuHt2.js} +0 -0
  171. /package/client/dist/assets/{common-BaJ6MF7T.js → common-DPxotRK9.js} +0 -0
  172. /package/client/dist/assets/{common-DPGR3Tfo.js → common-KbQuTSGg.js} +0 -0
  173. /package/client/dist/assets/{common-CRd-Ge5u2.js → common-QjVnq9XP2.js} +0 -0
  174. /package/client/dist/assets/{common-CKjy-R8-.js → common-k5MTOHpn.js} +0 -0
  175. /package/client/dist/assets/{dashboard-CcEpALV_.js → dashboard-B8032psZ.js} +0 -0
  176. /package/client/dist/assets/{dashboard-DxEPkALo2.js → dashboard-BHGKtxty2.js} +0 -0
  177. /package/client/dist/assets/{dashboard-MgDVmaYS2.js → dashboard-CXnoUgN22.js} +0 -0
  178. /package/client/dist/assets/{dashboard-CfltY66K.js → dashboard-Ccyxqy7d.js} +0 -0
  179. /package/client/dist/assets/{dashboard-DLeC5ziO.js → dashboard-Dc5ZAgMN.js} +0 -0
  180. /package/client/dist/assets/{dashboard-Bl2_Yjs6.js → dashboard-JMY8ueD3.js} +0 -0
  181. /package/client/dist/assets/{dashboard-C_vS9RaM2.js → dashboard-tkWr1aHD2.js} +0 -0
  182. /package/client/dist/assets/{explore-OZhWV0Eb2.js → explore-BHEhNekP2.js} +0 -0
  183. /package/client/dist/assets/{explore-D-htKul_.js → explore-CWlAXx0f2.js} +0 -0
  184. /package/client/dist/assets/{explore-Dvp-5qOw2.js → explore-DAsroA482.js} +0 -0
  185. /package/client/dist/assets/{explore-IS8VyaSZ.js → explore-DG1CtYqT.js} +0 -0
  186. /package/client/dist/assets/{explore-FaKfWCr72.js → explore-DMSGAnhK.js} +0 -0
  187. /package/client/dist/assets/{explore-B_79NLR5.js → explore-DaXiW9-6.js} +0 -0
  188. /package/client/dist/assets/{explore-D5b2jgvR.js → explore-UwHHj2ux.js} +0 -0
  189. /package/client/dist/assets/{format-command-CHImQv6W.js → format-command-BHymDa4r.js} +0 -0
  190. /package/client/dist/assets/{integrations-B97cGWfo2.js → integrations-B-JVE1_D.js} +0 -0
  191. /package/client/dist/assets/{integrations-C3Ma3GdM.js → integrations-BAujIDoE.js} +0 -0
  192. /package/client/dist/assets/{integrations-Bp3leAh3.js → integrations-CAF21FbQ.js} +0 -0
  193. /package/client/dist/assets/{integrations-Du_0rDfi2.js → integrations-CHCgning2.js} +0 -0
  194. /package/client/dist/assets/{integrations-C5MUA-0-.js → integrations-CtsOpq2D2.js} +0 -0
  195. /package/client/dist/assets/{integrations-CiQbCn_W.js → integrations-DS5FFMes.js} +0 -0
  196. /package/client/dist/assets/{integrations-t4X5UVcx2.js → integrations-axZN4--n2.js} +0 -0
  197. /package/client/dist/assets/{jira-D6IDTIsc2.js → jira-BcZzX9122.js} +0 -0
  198. /package/client/dist/assets/{jira-DdEKW9Pu.js → jira-CTYs7LA12.js} +0 -0
  199. /package/client/dist/assets/{jira-BzFvFn7t2.js → jira-D2nN39e92.js} +0 -0
  200. /package/client/dist/assets/{jira-BCHx9zUF.js → jira-DJxmIkyr.js} +0 -0
  201. /package/client/dist/assets/{jira-DSZ5xFRl.js → jira-IhC1ROIc.js} +0 -0
  202. /package/client/dist/assets/{jira-BqXyykbt2.js → jira-Iw575fN8.js} +0 -0
  203. /package/client/dist/assets/{jira-B1XaR6fj.js → jira-kbWZY7jH.js} +0 -0
  204. /package/client/dist/assets/{jobs-CeOcGHd_2.js → jobs-Bvh_HiRo2.js} +0 -0
  205. /package/client/dist/assets/{jobs-BgHEgCWk2.js → jobs-BzYX5VLd.js} +0 -0
  206. /package/client/dist/assets/{jobs-CU-khJTt.js → jobs-DTfaTfzQ2.js} +0 -0
  207. /package/client/dist/assets/{jobs-Ct5v2p6T.js → jobs-DrPyq5J2.js} +0 -0
  208. /package/client/dist/assets/{jobs-m7L0K9uC2.js → jobs-Dty7cCdI2.js} +0 -0
  209. /package/client/dist/assets/{jobs-Ce0SE81t.js → jobs-Dv8MP-eE.js} +0 -0
  210. /package/client/dist/assets/{jobs-BX9dP3Qn.js → jobs-DvkAoA8D.js} +0 -0
  211. /package/client/dist/assets/{loops-BlrQiK122.js → loops-BR4FmOv12.js} +0 -0
  212. /package/client/dist/assets/{loops-DuuWQWTI.js → loops-BgX_uudn.js} +0 -0
  213. /package/client/dist/assets/{loops-KOTryzk5.js → loops-Bpl2j2LP.js} +0 -0
  214. /package/client/dist/assets/{loops-Bs0ectZ32.js → loops-DW8hSMdS2.js} +0 -0
  215. /package/client/dist/assets/{loops-CLZV8HHY2.js → loops-Q2muu8hW2.js} +0 -0
  216. /package/client/dist/assets/{loops-t1mUZtf0.js → loops-Y3FQsUCh.js} +0 -0
  217. /package/client/dist/assets/{loops-BEUiCzEI.js → loops-q7CNDvfK.js} +0 -0
  218. /package/client/dist/assets/{mcp-CXy61khH.js → mcp-B8omp_Cd.js} +0 -0
  219. /package/client/dist/assets/{mcp-_DUUXTHB2.js → mcp-B_nWlxZa2.js} +0 -0
  220. /package/client/dist/assets/{mcp-dlOyUQQy2.js → mcp-Cb2jtHP72.js} +0 -0
  221. /package/client/dist/assets/{mcp-4QbfLPa4.js → mcp-DPqm2C8-.js} +0 -0
  222. /package/client/dist/assets/{mcp-NlLc9T8u2.js → mcp-DTCCrYHz2.js} +0 -0
  223. /package/client/dist/assets/{mcp-zqSVP7nA.js → mcp-D_oPS6Zc.js} +0 -0
  224. /package/client/dist/assets/{mcp-CmOBPDjE.js → mcp-DytBbASZ.js} +0 -0
  225. /package/client/dist/assets/{setup-BxVydxbl2.js → setup-CNMdCHHt2.js} +0 -0
  226. /package/client/dist/assets/{setup-BmXfxlzA2.js → setup-Cag4XrbL2.js} +0 -0
  227. /package/client/dist/assets/{setup-DIRZ1Lf-.js → setup-D9IHGoWU.js} +0 -0
  228. /package/client/dist/assets/{setup-Dx13pESZ.js → setup-Dg6Ba3JT.js} +0 -0
  229. /package/client/dist/assets/{setup-Z01j3st4.js → setup-DyK36RIW.js} +0 -0
  230. /package/client/dist/assets/{setup-SLAi4xxQ2.js → setup-aTlGxuwi2.js} +0 -0
  231. /package/client/dist/assets/{setup-DwbKSnKQ.js → setup-kWsoAeHQ.js} +0 -0
  232. /package/client/dist/assets/{specs-BYSOlQRw2.js → specs-BFSUPa122.js} +0 -0
  233. /package/client/dist/assets/{specs-BWQ-0EXt2.js → specs-BMzip1WY2.js} +0 -0
  234. /package/client/dist/assets/{specs-d-zU7_3Q.js → specs-C-mtLcXw.js} +0 -0
  235. /package/client/dist/assets/{specs-CkP0B28v2.js → specs-CAzpvADd2.js} +0 -0
  236. /package/client/dist/assets/{specs-57pue7UQ.js → specs-CyRIw_IR.js} +0 -0
  237. /package/client/dist/assets/{specs-nM5Cpcqe.js → specs-DMm7gB_l.js} +0 -0
  238. /package/client/dist/assets/{specs-RSYuLgF4.js → specs-DuottM0Z.js} +0 -0
  239. /package/client/dist/assets/{terminal-D3RTuBwy.js → terminal-58ReNaya.js} +0 -0
  240. /package/client/dist/assets/{terminal-Adi3W-GZ2.js → terminal-CDiOAmBd2.js} +0 -0
  241. /package/client/dist/assets/{terminal-DOuNm2BI.js → terminal-CJN-mQMc.js} +0 -0
  242. /package/client/dist/assets/{terminal-C8KlD61D.js → terminal-CYB4TiAd.js} +0 -0
  243. /package/client/dist/assets/{terminal-BA6FCZna2.js → terminal-DTQ_dPqi2.js} +0 -0
  244. /package/client/dist/assets/{terminal-BCIUSkrg.js → terminal-DawP8xNL.js} +0 -0
  245. /package/client/dist/assets/{terminal-DCkOEjSj2.js → terminal-DsaDTq5N2.js} +0 -0
  246. /package/client/dist/assets/{tickets-Bsyv_znj.js → tickets-CNvIilmP.js} +0 -0
  247. /package/client/dist/assets/{tickets-C_UPra_1.js → tickets-CujsZvkf.js} +0 -0
  248. /package/client/dist/assets/{tickets-B2q36GlQ2.js → tickets-DBfFePwk2.js} +0 -0
  249. /package/client/dist/assets/{tickets-DiUA3rXq.js → tickets-Da15iaRw.js} +0 -0
  250. /package/client/dist/assets/{tickets-DDjU7UfE2.js → tickets-Df6pee-O2.js} +0 -0
  251. /package/client/dist/assets/{tickets-DR4ZrPMf.js → tickets-DoRTUYRT.js} +0 -0
  252. /package/client/dist/assets/{tickets-D72LbUtU2.js → tickets-DvohTziT2.js} +0 -0
@@ -0,0 +1 @@
1
+ import{a as e}from"./chunk-BNv3lrIs.js";import{n as t,t as n}from"./upload-Cm4KWhcE.js";import{$ as r,C as i,Cn as a,Ct as o,G as s,H as c,Hn as l,K as u,Kn as d,Ln as f,P as p,Pt as m,Q as h,Rn as g,S as _,St as v,U as y,Ut as b,V as x,Vt as S,W as C,Wt as w,at as T,b as E,bt as D,cn as O,ct as k,ln as A,nt as ee,ot as te,un as ne,ut as re,w as j,x as M}from"./index-CG4z4_Mq.js";var ie=O(`file-down`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}],[`path`,{d:`m9 15 3 3 3-3`,key:`1npd3o`}]]),ae=O(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),N=e(d(),1);function oe(e){return{specrailsLoops:1,loops:e.map(e=>({name:e.name,description:e.description,graph:e.graph}))}}function P(e){let t=e;return!!t&&typeof t.name==`string`&&!!t.graph&&typeof t.graph==`object`}function se(e){let t;try{t=JSON.parse(e)}catch{throw Error(`invalid-json`)}let n=(Array.isArray(t)?t:Array.isArray(t?.loops)?t.loops:P(t)?[t]:[]).filter(P);if(n.length===0)throw Error(`no-loops`);return n.map(e=>({name:e.name,description:e.description??null,graph:e.graph}))}function ce(e){return e.length===1?`${e[0].name.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`loop`}.loop.json`:`specrails-loops-${e.length}.json`}var F=[`API`,`Automation`,`CI`,`Database`,`Debugging`,`DevOps`,`Docs`,`Git`,`Maintenance`,`Performance`,`Planning`,`Quality`,`Review`,`Security`,`Testing`];function le(e,t){let n=t.query.trim().toLowerCase(),r=t.categories;return e.filter(e=>r.length>0&&!(e.category&&r.includes(e.category))?!1:n?`${e.name} ${e.description} ${e.tags.join(` `)} ${e.category??``} ${e.searchTerms??``}`.toLowerCase().includes(n):!0)}function ue(e){let t=new Map;for(let n of e)n.category&&t.set(n.category,(t.get(n.category)??0)+1);let n=[];for(let e of F){let r=t.get(e);r&&(n.push({category:e,count:r}),t.delete(e))}for(let e of[...t.keys()].sort())n.push({category:e,count:t.get(e)});return n}var I=a(),L={start:v,"ai-step":t,shell:te,decider:m,condition:m,end:k};function R(e){return e.type===`ai-step`?typeof e.data?.prompt==`string`?e.data.prompt:null:e.type===`shell`?typeof e.data?.command==`string`?e.data.command:null:e.type===`decider`?typeof e.data?.goal==`string`?e.data.goal:null:e.type===`end`?e.data?.outcome===`failure`?`failure`:`success`:null}function de({template:e,onClose:n,onUse:r,mode:i=`use`}){let{t:a}=g(`loops`);return(0,I.jsx)(x,{open:e!==null,onOpenChange:e=>{e||n()},children:(0,I.jsx)(c,{movableResizable:!0,className:`max-w-lg`,children:e&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(s,{children:[(0,I.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,I.jsx)(t,{className:`w-4 h-4 text-accent-highlight`}),e.name]}),(0,I.jsx)(y,{children:e.description})]}),(0,I.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[_(e.graph)?(0,I.jsx)(`span`,{title:a(`gallery.needsSpecHint`),className:`px-1.5 py-0.5 rounded text-[10px] bg-accent-secondary/15 text-accent-secondary`,children:a(`gallery.needsSpec`)}):(0,I.jsx)(`span`,{title:a(`gallery.standaloneHint`),className:`px-1.5 py-0.5 rounded text-[10px] bg-accent-success/15 text-accent-success`,children:a(`gallery.standalone`)}),e.category&&(0,I.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-accent-info/15 text-accent-info`,children:a(`categories.${e.category}`,{defaultValue:e.category})}),e.tags.map(e=>(0,I.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e},e))]}),(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:a(`preview.limits`,{iterations:e.graph.config.maxIterations,timeout:e.graph.config.timeoutMinutes})}),(0,I.jsxs)(`div`,{className:`max-h-[50vh] overflow-y-auto space-y-1.5 pr-1`,children:[(0,I.jsx)(`span`,{className:`block text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:a(`preview.steps`)}),e.graph.nodes.map((e,t)=>{let n=L[e.type]??k,r=R(e);return(0,I.jsxs)(`div`,{className:`rounded border border-border bg-surface/30 p-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-medium text-foreground`,children:[(0,I.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[t+1,`.`]}),(0,I.jsx)(n,{className:`w-3.5 h-3.5 text-accent-primary`}),a(`builder.nodes.${e.type}`)]}),r&&(0,I.jsx)(`pre`,{className:`mt-1 whitespace-pre-wrap break-words text-[11px] text-muted-foreground font-mono`,children:r})]},e.id)})]}),(0,I.jsxs)(C,{children:[(0,I.jsx)(h,{variant:`ghost`,onClick:n,children:a(`common:actions.cancel`)}),(0,I.jsxs)(h,{onClick:()=>r(e.id),children:[i===`fork`?(0,I.jsx)(w,{className:`w-3.5 h-3.5 mr-1.5`}):(0,I.jsx)(b,{className:`w-3.5 h-3.5 mr-1.5`}),a(i===`fork`?`actions.fork`:`actions.use`)]})]})]})})})}function fe({loop:e,projects:t,onClose:n,onExecute:r}){let{t:i}=g(`loops`),a=e!==null,[o,l]=(0,N.useState)(``),[d,f]=(0,N.useState)(``),[m,_]=(0,N.useState)(``),[b,S]=(0,N.useState)(`medium`),w=t.find(e=>e.id===(o||t[0]?.id)),T=(0,N.useMemo)(()=>w?.providers??(w?.provider?[w.provider]:[]),[w]),D=d||T[0]||``,O=(0,N.useMemo)(()=>M(D),[D]),k=m||E(D),A=D?p(D):!1;return(0,I.jsx)(x,{open:a,onOpenChange:e=>{e||n()},children:(0,I.jsx)(c,{movableResizable:!0,className:`max-w-sm`,children:e&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(s,{children:[(0,I.jsx)(u,{children:i(`run.title`,{name:e.name})}),(0,I.jsx)(y,{children:i(`run.subtitle`)})]}),(0,I.jsx)(`label`,{className:`block text-[11px] font-medium text-muted-foreground`,children:i(`run.project`)}),t.length===0?(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`run.noProjects`)}):(0,I.jsx)(`select`,{"aria-label":i(`run.project`),"data-testid":`run-project-select`,value:o||t[0]?.id,onChange:e=>{l(e.target.value),f(``),_(``)},className:`w-full text-xs rounded border border-border bg-transparent px-2 py-1 text-foreground focus:outline-none focus:ring-1 focus:ring-accent-primary/40`,children:t.map(e=>(0,I.jsx)(`option`,{value:e.id,children:e.name},e.id))}),T.length>1&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`label`,{className:`block text-[11px] font-medium text-muted-foreground`,children:i(`run.provider`)}),(0,I.jsx)(`select`,{"aria-label":i(`run.provider`),value:D,onChange:e=>{f(e.target.value),_(``)},className:`w-full text-xs rounded border border-border bg-transparent px-2 py-1 text-foreground focus:outline-none focus:ring-1 focus:ring-accent-primary/40`,children:T.map(e=>(0,I.jsx)(`option`,{value:e,children:e},e))})]}),O.length>0&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`label`,{className:`block text-[11px] font-medium text-muted-foreground`,children:i(`run.model`)}),(0,I.jsx)(`select`,{"aria-label":i(`run.model`),"data-testid":`run-model-select`,value:k,onChange:e=>_(e.target.value),className:`w-full text-xs rounded border border-border bg-transparent px-2 py-1 text-foreground focus:outline-none focus:ring-1 focus:ring-accent-primary/40`,children:O.map(e=>(0,I.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),A&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`label`,{className:`block text-[11px] font-medium text-muted-foreground`,children:i(`run.effort`)}),(0,I.jsxs)(`select`,{"aria-label":i(`run.effort`),value:b,onChange:e=>S(e.target.value),className:`w-full text-xs rounded border border-border bg-transparent px-2 py-1 text-foreground focus:outline-none focus:ring-1 focus:ring-accent-primary/40`,children:[(0,I.jsx)(`option`,{value:`low`,children:`low`}),(0,I.jsx)(`option`,{value:`medium`,children:`medium`}),(0,I.jsx)(`option`,{value:`high`,children:`high`})]})]}),(0,I.jsxs)(C,{children:[(0,I.jsx)(h,{variant:`ghost`,onClick:n,children:i(`common:actions.cancel`)}),(0,I.jsxs)(h,{onClick:()=>{let e=o||t[0]?.id;e&&r({projectId:e,provider:T.length>1?D:void 0,model:O.length>0?k:void 0,effort:A?b:void 0})},disabled:t.length===0,children:[(0,I.jsx)(v,{className:`w-3.5 h-3.5 mr-1.5`}),i(`run.execute`)]})]})]})})})}var z={draft:`bg-accent-secondary/15 text-accent-secondary ring-accent-secondary/40`,published:`bg-accent-success/15 text-accent-success ring-accent-success/40`};function B({status:e}){let{t}=g(`loops`);return(0,I.jsx)(`span`,{className:r(`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium ring-1 ring-inset`,z[e]),children:t(`status.${e}`)})}function V(){let{t:e}=g(`loops`),t=l(),n=(0,N.useCallback)(e=>e.replace(/:/g,`_`),[]),a=(0,N.useCallback)((t,r)=>e(`catalog.${n(t)}.name`,{defaultValue:r}),[e,n]),o=(0,N.useCallback)((t,r)=>e(`catalog.${n(t)}.description`,{defaultValue:r}),[e,n]),[d,p]=(0,N.useState)([]),[m,v]=(0,N.useState)([]),[E,O]=(0,N.useState)([]),[k,te]=(0,N.useState)(!0),[M,P]=(0,N.useState)(null),[F,L]=(0,N.useState)(null),[R,z]=(0,N.useState)(`use`),[B,V]=(0,N.useState)(null),[W,pe]=(0,N.useState)(new Set),G=`specrails-desktop:loop-template-filter`,me=(()=>{try{let e=localStorage.getItem(G),t=e?JSON.parse(e):null;return{query:typeof t?.query==`string`?t.query:``,categories:Array.isArray(t?.categories)?t.categories:[]}}catch{return{query:``,categories:[]}}})(),[K,he]=(0,N.useState)(me.query),[q,ge]=(0,N.useState)(me.categories);(0,N.useEffect)(()=>{try{localStorage.setItem(G,JSON.stringify({query:K,categories:q}))}catch{}},[K,q]);let _e=(0,N.useCallback)(e=>{ge(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),ve=(0,N.useCallback)(()=>{he(``),ge([])},[]),ye=(0,N.useRef)(null),{projects:be,setActiveProjectId:xe}=ne(),Se=(0,N.useCallback)(e=>{pe(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),J=(0,N.useCallback)(e=>{if(e.length===0)return;let t=new Blob([JSON.stringify(oe(e),null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=ce(e),r.click(),URL.revokeObjectURL(n)},[]),Y=(0,N.useCallback)(async()=>{try{let[e,t]=await Promise.all([j.list(),j.templates()]);p(e),v(t)}catch{f.error(e(`errors.load`))}finally{te(!1)}try{O(await j.factoryLoops())}catch{O([])}},[e]);(0,N.useEffect)(()=>{Y()},[Y]);let Ce=(0,N.useCallback)(async t=>{try{let n=se(await t.text()),{imported:r,skipped:i}=await j.importLoops(n);await Y(),r.length&&f.success(e(`import.done`,{count:r.length})),i.length&&f.warning(e(`import.skipped`,{count:i.length,names:i.join(`, `)})),!r.length&&!i.length&&f.warning(e(`import.invalid`))}catch(t){let n=t instanceof Error?t.message:``;f.error(e(n===`invalid-json`||n===`no-loops`?`import.invalid`:`errors.save`))}},[Y,e]),X=(0,N.useCallback)(e=>t(`/loops/${e}/edit`),[t]),we=(0,N.useCallback)(async()=>{try{X((await j.create({name:e(`newLoopName`)})).id)}catch{f.error(e(`errors.save`))}},[e,X]),Te=(0,N.useCallback)(async t=>{try{X((await j.fromTemplate(t)).id)}catch{f.error(e(`errors.save`))}},[e,X]),Ee=(0,N.useCallback)(async t=>{try{X((await j.forkFactory(t)).id)}catch{f.error(e(`errors.save`))}},[e,X]),De=(0,N.useCallback)(async({projectId:n,provider:r,model:i,effort:a})=>{let o=B;if(o){V(null);try{let{loopRunId:s}=await j.runStandalone(n,o.id,{aiEngine:r,model:i,reasoning_effort:a});xe(n),t(`/jobs/${s}`),f.success(e(`run.launched`,{name:o.name}))}catch{f.error(e(`errors.save`))}}},[B,t,xe,e]),Oe=(0,N.useCallback)(e=>{z(`fork`),L({id:e.id,name:a(e.id,e.name),description:o(e.id,e.description),tags:e.claudeOnly?[`claude-only`]:[],graph:e.graph})},[a,o]),ke=(0,N.useCallback)(async t=>{try{await j.publish(t),await Y()}catch(t){t instanceof i?f.error(e(`errors.publishInvalid`)):f.error(e(`errors.save`))}},[e,Y]),Ae=(0,N.useCallback)(async t=>{try{await j.unpublish(t),await Y()}catch{f.error(e(`errors.save`))}},[e,Y]),je=(0,N.useCallback)(async t=>{try{await j.duplicate(t),await Y()}catch{f.error(e(`errors.save`))}},[e,Y]),Me=(0,N.useCallback)(e=>P(e),[]),Ne=(0,N.useCallback)(async()=>{let t=M;if(t){P(null);try{await j.remove(t),await Y()}catch{f.error(e(`errors.save`))}}},[M,e,Y]),Z=d.filter(e=>e.status===`draft`),Q=d.filter(e=>e.status===`published`),Pe=ue(m),$=le(m.map(t=>({...t,searchTerms:`${a(t.id,t.name)} ${o(t.id,t.description)} ${t.category?e(`categories.${t.category}`,{defaultValue:t.category}):``}`})),{query:K,categories:q}),Fe=K.trim()!==``||q.length>0;return(0,I.jsxs)(`div`,{className:`h-full overflow-y-auto`,children:[(0,I.jsxs)(`div`,{className:`max-w-5xl mx-auto px-6 py-6`,children:[(0,I.jsxs)(`div`,{className:`flex items-start justify-between mb-6`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,I.jsx)(ee,{className:`w-5 h-5 text-accent-primary`}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:e(`title`)}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:e(`subtitle`)})]})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[W.size>0&&(0,I.jsxs)(`button`,{type:`button`,onClick:()=>J(d.filter(e=>W.has(e.id))),className:`inline-flex items-center gap-1.5 h-8 px-3 rounded-md text-xs font-medium border border-border text-foreground hover:bg-muted`,children:[(0,I.jsx)(ie,{className:`w-3.5 h-3.5`}),e(`actions.export`),` (`,W.size,`)`]}),(0,I.jsxs)(`button`,{type:`button`,onClick:()=>ye.current?.click(),className:`inline-flex items-center gap-1.5 h-8 px-3 rounded-md text-xs font-medium border border-border text-foreground hover:bg-muted`,children:[(0,I.jsx)(ae,{className:`w-3.5 h-3.5`}),e(`actions.import`)]}),(0,I.jsx)(`input`,{ref:ye,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&Ce(t),e.target.value=``}}),(0,I.jsxs)(`button`,{type:`button`,onClick:we,className:`inline-flex items-center gap-1.5 h-8 px-3 rounded-md text-xs font-medium bg-accent-primary text-white hover:bg-accent-primary/90`,children:[(0,I.jsx)(D,{className:`w-3.5 h-3.5`}),e(`newLoop`)]})]})]}),k?(0,I.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`…`}):(0,I.jsxs)(`div`,{className:`space-y-8`,children:[Z.length===0&&Q.length===0&&(0,I.jsxs)(`div`,{className:`rounded-lg border border-dashed border-border p-8 text-center`,children:[(0,I.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:e(`empty.title`)}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:e(`empty.body`)})]}),Q.length>0&&(0,I.jsx)(H,{title:e(`sections.published`),children:Q.map(e=>(0,I.jsx)(U,{loop:e,selected:W.has(e.id),onToggleSelect:()=>Se(e.id),onEdit:()=>X(e.id),onUnpublish:()=>Ae(e.id),onDuplicate:()=>je(e.id),onExport:()=>J([e]),onDelete:()=>Me(e.id),onRun:_(e.graph)?void 0:()=>V(e)},e.id))}),Z.length>0&&(0,I.jsx)(H,{title:e(`sections.drafts`),children:Z.map(e=>(0,I.jsx)(U,{loop:e,selected:W.has(e.id),onToggleSelect:()=>Se(e.id),onEdit:()=>X(e.id),onPublish:()=>ke(e.id),onDuplicate:()=>je(e.id),onExport:()=>J([e]),onDelete:()=>Me(e.id)},e.id))}),E.length>0&&(0,I.jsx)(H,{title:e(`sections.builtIn`),children:E.map(t=>(0,I.jsxs)(`div`,{className:`rounded-lg border border-border bg-card p-3 flex flex-col gap-2`,"data-testid":`factory-loop-card`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(ee,{className:`w-3.5 h-3.5 text-accent-primary`}),(0,I.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:a(t.id,t.name)}),(0,I.jsx)(`span`,{className:`ml-auto px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e(`builtInBadge`)})]}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground flex-1`,children:o(t.id,t.description)}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,I.jsxs)(`button`,{type:`button`,onClick:()=>Oe(t),className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md text-xs border border-border hover:bg-muted text-foreground`,children:[(0,I.jsx)(S,{className:`w-3 h-3`}),e(`actions.preview`)]}),(0,I.jsxs)(`button`,{type:`button`,onClick:()=>void Ee(t.id),className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md text-xs border border-border hover:bg-muted text-foreground`,children:[(0,I.jsx)(w,{className:`w-3 h-3`}),e(`actions.fork`)]})]})]},t.id))}),m.length>0&&(0,I.jsxs)(`section`,{children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-3 mb-2 flex-wrap`,children:[(0,I.jsx)(`h2`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e(`sections.templates`)}),(0,I.jsx)(`input`,{type:`search`,value:K,onChange:e=>he(e.target.value),placeholder:e(`gallery.search`),"aria-label":e(`gallery.search`),"data-testid":`template-search`,className:`h-7 w-48 max-w-full rounded-md border border-border bg-surface/40 px-2.5 text-xs text-foreground placeholder:text-muted-foreground/70 focus:outline-none focus:ring-1 focus:ring-accent-primary`})]}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 mb-3`,"data-testid":`category-chips`,children:[Pe.map(({category:t,count:n})=>{let i=q.includes(t);return(0,I.jsxs)(`button`,{type:`button`,"aria-pressed":i,onClick:()=>_e(t),className:r(`inline-flex items-center gap-1 h-6 px-2 rounded-full text-[11px] border transition-colors`,i?`border-accent-primary bg-accent-primary/15 text-accent-primary`:`border-border bg-surface/40 text-muted-foreground hover:text-foreground hover:bg-muted`),children:[e(`categories.${t}`,{defaultValue:t}),(0,I.jsx)(`span`,{className:`opacity-60 tabular-nums`,children:n})]},t)}),Fe&&(0,I.jsx)(`button`,{type:`button`,onClick:ve,className:`inline-flex items-center h-6 px-2 rounded-full text-[11px] text-accent-primary hover:underline`,children:e(`gallery.clearFilter`)})]}),$.length===0?(0,I.jsxs)(`div`,{className:`rounded-lg border border-dashed border-border p-6 text-center`,"data-testid":`template-empty`,children:[(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`gallery.noResults`)}),(0,I.jsx)(`button`,{type:`button`,onClick:ve,className:`mt-2 text-xs text-accent-primary hover:underline`,children:e(`gallery.clearFilter`)})]}):(0,I.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:$.map(t=>(0,I.jsxs)(`div`,{className:`rounded-lg border border-border bg-card p-3 flex flex-col gap-2`,"data-testid":`template-card`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(re,{className:`w-3.5 h-3.5 text-accent-highlight flex-shrink-0`}),(0,I.jsx)(`span`,{className:`text-sm font-medium text-foreground truncate`,children:a(t.id,t.name)}),t.category&&(0,I.jsx)(`span`,{className:`ml-auto px-1.5 py-0.5 rounded text-[10px] bg-accent-info/15 text-accent-info flex-shrink-0`,children:e(`categories.${t.category}`,{defaultValue:t.category})})]}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground flex-1`,children:o(t.id,t.description)}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[_(t.graph)?(0,I.jsx)(`span`,{title:e(`gallery.needsSpecHint`),className:`px-1.5 py-0.5 rounded text-[10px] bg-accent-secondary/15 text-accent-secondary`,children:e(`gallery.needsSpec`)}):(0,I.jsx)(`span`,{title:e(`gallery.standaloneHint`),className:`px-1.5 py-0.5 rounded text-[10px] bg-accent-success/15 text-accent-success`,children:e(`gallery.standalone`)}),t.tags.map(e=>(0,I.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e},e))]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,I.jsxs)(`button`,{type:`button`,onClick:()=>{z(`use`),L({...t,name:a(t.id,t.name),description:o(t.id,t.description)})},className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md text-xs border border-border hover:bg-muted text-foreground`,children:[(0,I.jsx)(S,{className:`w-3 h-3`}),e(`actions.preview`)]}),(0,I.jsxs)(`button`,{type:`button`,onClick:()=>Te(t.id),className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md text-xs border border-border hover:bg-muted text-foreground`,children:[(0,I.jsx)(b,{className:`w-3 h-3`}),e(`actions.use`)]})]})]},t.id))})]})]})]}),(0,I.jsx)(x,{open:M!==null,onOpenChange:e=>{e||P(null)},children:(0,I.jsxs)(c,{className:`max-w-sm`,children:[(0,I.jsxs)(s,{children:[(0,I.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,I.jsx)(T,{className:`w-4 h-4 text-destructive`}),d.find(e=>e.id===M)?.name??e(`actions.delete`)]}),(0,I.jsx)(y,{children:e(`confirmDelete`)})]}),(0,I.jsxs)(C,{children:[(0,I.jsx)(h,{variant:`ghost`,onClick:()=>P(null),children:e(`common:actions.cancel`)}),(0,I.jsx)(h,{variant:`destructive`,onClick:()=>void Ne(),children:e(`common:actions.delete`)})]})]})}),(0,I.jsx)(de,{template:F,mode:R,onClose:()=>L(null),onUse:e=>{L(null),R===`fork`?Ee(e):Te(e)}}),(0,I.jsx)(fe,{loop:B?{id:B.id,name:B.name}:null,projects:be.map(e=>({id:e.id,name:e.name,providers:A(e)})),onClose:()=>V(null),onExecute:De})]})}function H({title:e,children:t}){return(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h2`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground mb-2`,children:e}),(0,I.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:t})]})}function U({loop:e,selected:t,onToggleSelect:r,onEdit:i,onPublish:a,onUnpublish:s,onDuplicate:c,onExport:l,onDelete:u,onRun:d}){let{t:f}=g(`loops`),p=e.graph?.nodes?.length??0;return(0,I.jsxs)(`div`,{className:`rounded-lg border border-border bg-card p-3 flex flex-col gap-2`,"data-testid":`loop-card`,children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:t,onChange:r,"aria-label":f(`actions.select`,{name:e.name}),className:`accent-accent-primary flex-shrink-0`}),(0,I.jsx)(`span`,{className:`text-sm font-medium text-foreground truncate`,children:e.name})]}),(0,I.jsx)(B,{status:e.status})]}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:f(`card.nodes`,{count:p})}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1 flex-wrap`,children:[d&&(0,I.jsx)(W,{icon:v,label:f(`actions.run`),onClick:d}),(0,I.jsx)(W,{icon:o,label:f(`actions.edit`),onClick:i}),a&&(0,I.jsx)(W,{icon:n,label:f(`actions.publish`),onClick:a}),s&&(0,I.jsx)(W,{icon:b,label:f(`actions.unpublish`),onClick:s}),(0,I.jsx)(W,{icon:w,label:f(`actions.duplicate`),onClick:c}),(0,I.jsx)(W,{icon:ie,label:f(`actions.export`),onClick:l}),(0,I.jsx)(W,{icon:T,label:f(`actions.delete`),onClick:u,danger:!0})]})]})}function W({icon:e,label:t,onClick:n,danger:i}){return(0,I.jsx)(`button`,{type:`button`,onClick:n,title:t,"aria-label":t,className:r(`inline-flex items-center justify-center w-7 h-7 rounded-md transition-colors`,i?`text-muted-foreground hover:text-destructive hover:bg-destructive/10`:`text-muted-foreground hover:text-foreground hover:bg-muted`),children:(0,I.jsx)(e,{className:`w-3.5 h-3.5`})})}export{V as default};
@@ -0,0 +1 @@
1
+ import{a as e}from"./chunk-BNv3lrIs.js";import{$ as t,Cn as n,G as r,H as i,K as a,Kn as o,Rn as s,U as c,V as l,c as u,d,dt as f,ft as p,l as m,lt as h,rt as g,sn as _,u as v,un as y}from"./index-CG4z4_Mq.js";var b=e(o(),1),x=n(),S=[{id:`general`,icon:f,labelKey:`projectDialog.nav.general`},{id:`budget`,icon:g,labelKey:`projectDialog.nav.budget`},{id:`telemetry`,icon:_,labelKey:`projectDialog.nav.telemetry`},{id:`terminal`,icon:h,labelKey:`projectDialog.nav.terminal`}];function C({open:e,onClose:n}){let{t:o}=s(`settings`),{activeProjectId:f,projects:h}=y(),g=h.find(e=>e.id===f),[_,C]=(0,b.useState)(`general`),w=e=>t(`space-y-5`,_===e?``:`hidden`);return(0,x.jsx)(l,{open:e,onOpenChange:e=>{e||n()},children:(0,x.jsxs)(i,{movableResizable:!0,className:`flex max-w-5xl w-[92vw] h-[82vh] flex-col overflow-hidden`,children:[(0,x.jsxs)(r,{children:[(0,x.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,x.jsx)(p,{className:`w-4 h-4`}),g?o(`projectDialog.title`,{name:g.name}):o(`page.title`)]}),(0,x.jsx)(c,{children:o(`projectDialog.description`)})]}),(0,x.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-5 py-2`,children:[(0,x.jsx)(`nav`,{className:`w-40 shrink-0 space-y-0.5 overflow-y-auto border-r border-border pr-2`,children:S.map(e=>{let n=e.icon;return(0,x.jsxs)(`button`,{type:`button`,onClick:()=>C(e.id),className:t(`flex w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-xs transition-colors`,_===e.id?`bg-accent-primary/15 font-medium text-foreground`:`text-muted-foreground hover:bg-muted/40 hover:text-foreground`),children:[(0,x.jsx)(n,{className:`w-3.5 h-3.5 shrink-0`}),(0,x.jsx)(`span`,{className:`truncate`,children:o(e.labelKey)})]},e.id)})}),(0,x.jsxs)(`div`,{className:`min-w-0 flex-1 overflow-y-auto pr-1`,children:[(0,x.jsx)(`div`,{className:w(`general`),children:(0,x.jsx)(m,{})}),(0,x.jsx)(`div`,{className:w(`budget`),children:(0,x.jsx)(u,{})}),(0,x.jsx)(`div`,{className:w(`telemetry`),children:(0,x.jsx)(v,{})}),(0,x.jsx)(`div`,{className:w(`terminal`),children:(0,x.jsx)(d,{mode:`project`})})]})]})]})})}export{C as ProjectSettingsDialog};
@@ -0,0 +1 @@
1
+ var e=`Controle de missões`,t=`Opere o Specrails conversando`,n=`Controle de missões`,r=`Peça ao agente o que quiser…`,i=`Enviar`,a=`Parar`,o=`Copiar`,s=`Maximizar`,c=`Restaurar`,l=`Minimizar`,u=`Fechar`,d=`Nova missão`,f=`Qual é a missão?`,p=`Escolha um projeto e depois pergunte. O quadro é atualizado ao vivo enquanto o agente trabalha.`,m=`Pensando…`,h=`Conectando…`,g=`Consultando o app…`,_={compact:`Compacto`,comfortable:`Confortável`,max:`Maximizar`},v={label:`Modelo`},y={hint:`Explorando histórico — escreva para editar, ↑↓ para navegar`},b={queued:`Na fila`,send:`Enviar para a fila`,sendHint:`O agente ainda está trabalhando — esta mensagem entrará na fila e será executada em seguida`,placeholder:`Adicione mais enquanto o agente trabalha — entrará na fila…`},x={branch:`Branch`,detached:`(detached)`,dirty:`Alterações sem commit`,switched:`Mudou para {{branch}}`,switchFailed:`Não foi possível trocar de branch`,lockedWhileWorking:`Branch bloqueada enquanto o agente trabalha`,searchPlaceholder:`Buscar branches…`,noMatches:`Nenhuma branch corresponde`,worktrees:`Worktrees`,worktreePathCopied:`Caminho do worktree copiado`,copyWorktreePath:`Copiar caminho do worktree`},S={label:`Provedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ para mudar`,observe:{name:`Observa`,desc:`Somente leitura — nada muda`},edit:{name:`Edita`,desc:`Criar e editar (reversível)`},operate:{name:`Opera`,desc:`Lançar IA — tem custo`},autonomous:{name:`Autônomo`,desc:`Excluir e encerrar — irreversível`},lockedTitle:`Precisa de um nível superior`,lockedBody:`Essa ação precisa do nível "{{level}}". Você está no "{{current}}".`,raiseHint:`⇧⇥ para aumentar o nível, ou peça de outra forma.`},w={title:`Confirmar ação`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprovar`,cancel:`Cancelar`,dontAskAgain:`Não perguntar de novo nesta sessão`,approved:`Aprovado`,cancelled:`Cancelado`},T={home:`Início`,searchPlaceholder:`Fale com o Specrails…`,recents:`Recentes`,allProjects:`Todos os projetos`,searchAll:`Buscar em todos os projetos`,addProject:`Adicionar projeto…`,homeHint:`Nenhum projeto selecionado — operando em todos os projetos.`,askCreateOrSearch:`Nenhum projeto está selecionado. Você quer criar um novo projeto ou buscar em todos os projetos?`},E={title:`Nenhum provedor de IA instalado`,body:`O agente precisa de Claude, Codex ou Gemini na sua máquina. Instale um e reabra o agente para começar a conversar.`,placeholder:`Instale um provedor de IA para usar o agente…`},D={title:`O MCP do Specrails está desligado`,body:`O agente precisa do servidor MCP integrado para operar o app.`,enable:`Ativar o MCP do Specrails`,enabling:`Ativando…`,enabled:`MCP ativado`},O={live:`ao vivo`,queued:`na fila`,running:`em execução`,done:`concluído`,failed:`falhou`},k={generic:`Algo deu errado. Tente novamente.`,busy:`O agente está ocupado. Tente novamente em um instante.`},A={kindAgent:`Missão do agente`},j=`Nova missão`,M=`Mudar para o Controle de missões`,N=`Mudar para o quadro`,P=`Buscar`,F=`Início`,I=`Sem título`,L={title:`No workspace`,terminal:`Terminal`,files:`Arquivos`,browser:`Navegador`,requiresProject:`Selecione um projeto para usar esta ferramenta`,resizeCode:`Redimensionar painel de código`,closeFiles:`Fechar código`,browserConfirm:`Adicionar ao agente`,browserCaptured:`Captura adicionada`,uploadFailed:`Falha no upload`,requiresConversation:`Inicie uma missão para usar esta ferramenta`,jobs:`Jobs`,closeJobs:`Fechar jobs`,resizeJobs:`Redimensionar painel de jobs`,noJobs:`Ainda não há jobs — peça ao agente para lançar um`},R=`Anexar arquivo`,z=`Excluir "{{title}}"`,B=`Confirmar exclusão de "{{title}}"`,V=`confirmar?`,H=`Este provedor ainda não lê imagens — anexe arquivos de texto`,U={label:`Esforço`,minimal:`Mínimo`,low:`Baixo`,medium:`Médio`,high:`Alto`,xhigh:`Extra alto`},W=`Qual é a missão, Neo?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -0,0 +1 @@
1
+ var e=`Controllo missioni`,t=`Gestisci Specrails chattando`,n=`Controllo missioni`,r=`Chiedi all'agente qualsiasi cosa…`,i=`Invia`,a=`Ferma`,o=`Copia`,s=`Massimizza`,c=`Ripristina`,l=`Riduci a icona`,u=`Chiudi`,d=`Nuova missione`,f=`Qual è la missione?`,p=`Scegli un progetto, poi chiedi. La board si aggiorna in tempo reale mentre l'agente lavora.`,m=`Sto pensando…`,h=`Connessione…`,g=`Consulto l'app…`,_={compact:`Compatto`,comfortable:`Comodo`,max:`Ingrandisci`},v={label:`Modello`},y={hint:`Cronologia prompt — scrivi per modificare, ↑↓ per navigare`},b={queued:`In coda`,send:`Invia in coda`,sendHint:`L'agente sta ancora lavorando — questo messaggio verrà messo in coda ed eseguito dopo`,placeholder:`Aggiungi altro mentre l'agente lavora — verrà messo in coda…`},x={branch:`Branch`,detached:`(detached)`,dirty:`Modifiche non committate`,switched:`Passato a {{branch}}`,switchFailed:`Impossibile cambiare branch`,lockedWhileWorking:`Branch bloccato mentre l'agente lavora`,searchPlaceholder:`Cerca branch…`,noMatches:`Nessun branch corrisponde`,worktrees:`Worktree`,worktreePathCopied:`Percorso del worktree copiato`,copyWorktreePath:`Copia percorso del worktree`},S={label:`Provider`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ per cambiare`,observe:{name:`Osserva`,desc:`Solo lettura — niente cambia`},edit:{name:`Modifica`,desc:`Crea e modifica (reversibile)`},operate:{name:`Opera`,desc:`Avvia l'IA — ha un costo`},autonomous:{name:`Autonomo`,desc:`Elimina e arresta — irreversibile`},lockedTitle:`Serve un livello superiore`,lockedBody:`Quell'azione richiede il livello «{{level}}». Sei su «{{current}}».`,raiseHint:`⇧⇥ per alzare il livello, o chiedi in un altro modo.`},w={title:`Conferma azione`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approva`,cancel:`Annulla`,dontAskAgain:`Non chiedere più in questa sessione`,approved:`Approvato`,cancelled:`Annullato`},T={home:`Home`,searchPlaceholder:`Parla con Specrails…`,recents:`Recenti`,allProjects:`Tutti i progetti`,searchAll:`Cerca in tutti i progetti`,addProject:`Aggiungi progetto…`,homeHint:`Nessun progetto selezionato — operando su tutti i progetti.`,askCreateOrSearch:`Nessun progetto è selezionato. Vuoi creare un nuovo progetto o cercare in tutti i progetti?`},E={title:`Nessun provider IA installato`,body:`L'agente richiede Claude, Codex o Gemini sul tuo computer. Installane uno e riapri l'agente per iniziare a chattare.`,placeholder:`Installa un provider IA per usare l'agente…`},D={title:`L'MCP di Specrails è spento`,body:`L'agente ha bisogno del server MCP integrato per gestire l'app.`,enable:`Attiva l'MCP di Specrails`,enabling:`Attivazione…`,enabled:`MCP attivato`},O={live:`in diretta`,queued:`in coda`,running:`in corso`,done:`completato`,failed:`fallito`},k={generic:`Qualcosa è andato storto. Riprova.`,busy:`L'agente è occupato. Riprova tra un momento.`},A={kindAgent:`Missione dell'agente`},j=`Nuova missione`,M=`Passa al Controllo missioni`,N=`Passa alla board`,P=`Cerca`,F=`Home`,I=`Senza titolo`,L={title:`Nel workspace`,terminal:`Terminale`,files:`File`,browser:`Browser`,requiresProject:`Seleziona un progetto per usare questo strumento`,resizeCode:`Ridimensiona pannello codice`,closeFiles:`Chiudi codice`,browserConfirm:`Aggiungi all'agente`,browserCaptured:`Cattura aggiunta`,uploadFailed:`Caricamento non riuscito`,requiresConversation:`Avvia una missione per usare questo strumento`,jobs:`Jobs`,closeJobs:`Chiudi jobs`,resizeJobs:`Ridimensiona pannello jobs`,noJobs:`Ancora nessun job — chiedi all'agente di lanciarne uno`},R=`Allega file`,z=`Elimina «{{title}}»`,B=`Conferma eliminazione di «{{title}}»`,V=`confermare?`,H=`Questo provider non legge ancora le immagini — allega file di testo`,U={label:`Sforzo`,minimal:`Minimo`,low:`Basso`,medium:`Medio`,high:`Alto`,xhigh:`Extra alto`},W=`Qual è la missione, Neo?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -0,0 +1 @@
1
+ var e=`Contrôle des missions`,t=`Pilotez Specrails en discutant`,n=`Contrôle des missions`,r=`Demandez à l'agent ce que vous voulez…`,i=`Envoyer`,a=`Arrêter`,o=`Copier`,s=`Agrandir`,c=`Restaurer`,l=`Réduire`,u=`Fermer`,d=`Nouvelle mission`,f=`Quelle est la mission ?`,p=`Choisissez un projet, puis demandez. Le tableau se met à jour en direct pendant que l'agent travaille.`,m=`Réflexion…`,h=`Connexion…`,g=`Consultation de l'app…`,_={compact:`Compact`,comfortable:`Confortable`,max:`Agrandir`},v={label:`Modèle`},y={hint:`Parcours de l'historique — tapez pour modifier, ↑↓ pour naviguer`},b={queued:`En file`,send:`Envoyer dans la file`,sendHint:`L'agent travaille encore — ce message sera mis en file puis traité`,placeholder:`Ajoutez-en pendant que l'agent travaille — mis en file…`},x={branch:`Branche`,detached:`(détaché)`,dirty:`Modifications non commitées`,switched:`Basculé sur {{branch}}`,switchFailed:`Impossible de changer de branche`,lockedWhileWorking:`Branche verrouillée pendant que l'agent travaille`,searchPlaceholder:`Rechercher des branches…`,noMatches:`Aucune branche ne correspond`,worktrees:`Worktrees`,worktreePathCopied:`Chemin du worktree copié`,copyWorktreePath:`Copier le chemin du worktree`},S={label:`Fournisseur`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ pour changer`,observe:{name:`Observer`,desc:`Lecture seule — rien ne change`},edit:{name:`Modifier`,desc:`Créer et modifier (réversible)`},operate:{name:`Opérer`,desc:`Lancer l'IA — c'est payant`},autonomous:{name:`Autonome`,desc:`Supprimer et arrêter — irréversible`},lockedTitle:`Nécessite un niveau supérieur`,lockedBody:`Cette action nécessite le niveau « {{level}} ». Vous êtes sur « {{current}} ».`,raiseHint:`⇧⇥ pour augmenter le niveau, ou demandez autrement.`},w={title:`Confirmer l'action`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approuver`,cancel:`Annuler`,dontAskAgain:`Ne plus demander durant cette session`,approved:`Approuvé`,cancelled:`Annulé`},T={home:`Accueil`,searchPlaceholder:`Parlez à Specrails…`,recents:`Récents`,allProjects:`Tous les projets`,searchAll:`Rechercher dans tous les projets`,addProject:`Ajouter un projet…`,homeHint:`Aucun projet sélectionné — opération sur tous les projets.`,askCreateOrSearch:`Aucun projet n'est sélectionné. Voulez-vous créer un nouveau projet ou rechercher dans tous les projets ?`},E={title:`Aucun fournisseur d'IA installé`,body:`L'agent a besoin de Claude, Codex ou Gemini sur votre machine. Installez-en un, puis rouvrez l'agent pour discuter.`,placeholder:`Installez un fournisseur d'IA pour utiliser l'agent…`},D={title:`Le MCP Specrails est désactivé`,body:`L'agent a besoin du serveur MCP intégré pour piloter l'app.`,enable:`Activer le MCP Specrails`,enabling:`Activation…`,enabled:`MCP activé`},O={live:`en direct`,queued:`en file`,running:`en cours`,done:`terminé`,failed:`échoué`},k={generic:`Une erreur est survenue. Réessayez.`,busy:`L'agent est occupé. Réessayez dans un instant.`},A={kindAgent:`Mission de l'agent`},j=`Nouvelle mission`,M=`Passer au Contrôle des missions`,N=`Passer au tableau`,P=`Rechercher`,F=`Accueil`,I=`Sans titre`,L={title:`Espace de travail`,terminal:`Terminal`,files:`Fichiers`,browser:`Navigateur`,requiresProject:`Sélectionnez un projet pour utiliser cet outil`,resizeCode:`Redimensionner le volet de code`,closeFiles:`Fermer le code`,browserConfirm:`Ajouter à l'agent`,browserCaptured:`Capture ajoutée`,uploadFailed:`Échec du téléversement`,requiresConversation:`Lancez une mission pour utiliser cet outil`,jobs:`Jobs`,closeJobs:`Fermer les jobs`,resizeJobs:`Redimensionner le panneau des jobs`,noJobs:`Aucun job pour l'instant — demandez à l'agent d'en lancer un`},R=`Joindre un fichier`,z=`Supprimer «\xA0{{title}}\xA0»`,B=`Confirmer la suppression de «\xA0{{title}}\xA0»`,V=`confirmer\xA0?`,H=`Ce fournisseur ne lit pas encore les images — joignez plutôt des fichiers texte`,U={label:`Effort`,minimal:`Minimal`,low:`Faible`,medium:`Moyen`,high:`Élevé`,xhigh:`Très élevé`},W=`Quelle est la mission, Neo ?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-BNv3lrIs.js";var t=e({approval:()=>E,attachFile:()=>B,chip:()=>M,close:()=>f,composerPlaceholder:()=>a,confirmDeleteConversation:()=>H,confirmShort:()=>U,connecting:()=>_,consultingCode:()=>v,copy:()=>c,default:()=>q,degraded:()=>k,deleteConversation:()=>V,effort:()=>G,emptyHint:()=>h,emptyTitle:()=>m,emptyTitleMatrix:()=>K,error:()=>j,git:()=>C,history:()=>x,home:()=>L,imagesUnsupported:()=>W,maximize:()=>l,minimize:()=>d,model:()=>b,newAgent:()=>N,newConversation:()=>p,noProvider:()=>O,project:()=>D,provider:()=>w,queue:()=>S,restore:()=>u,search:()=>I,send:()=>o,size:()=>y,stop:()=>s,subtitle:()=>r,switchToAgent:()=>P,switchToKanban:()=>F,thinking:()=>g,tier:()=>T,title:()=>n,toolCard:()=>A,trigger:()=>i,untitled:()=>R,workspace:()=>z}),n=`Mission Control`,r=`Operate Specrails by chatting`,i=`Mission Control`,a=`Ask the agent to do anything…`,o=`Send`,s=`Stop`,c=`Copy`,l=`Maximize`,u=`Restore`,d=`Minimize`,f=`Close`,p=`New mission`,m=`What's the mission?`,h=`Pick a project, then ask. The board updates live as the agent works.`,g=`Thinking…`,_=`Connecting…`,v=`Consulting the app…`,y={compact:`Compact`,comfortable:`Comfortable`,max:`Maximize`},b={label:`Model`},x={hint:`Browsing prompt history — type to edit, ↑↓ to navigate`},S={queued:`Queued`,send:`Send to queue`,sendHint:`The agent is still working — this message will queue and run next`,placeholder:`Add more while the agent works — it will queue…`},C={branch:`Branch`,detached:`(detached)`,dirty:`Uncommitted changes`,switched:`Switched to {{branch}}`,switchFailed:`Couldn't switch branch`,lockedWhileWorking:`Branch locked while the agent works`,searchPlaceholder:`Search branches…`,noMatches:`No branches match`,worktrees:`Worktrees`,worktreePathCopied:`Worktree path copied`,copyWorktreePath:`Copy worktree path`},w={label:`Provider`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},T={cycleHint:`⇧⇥ to change`,observe:{name:`Observe`,desc:`Read only — nothing changes`},edit:{name:`Edit`,desc:`Create and edit (reversible)`},operate:{name:`Operate`,desc:`Launch AI — costs money`},autonomous:{name:`Autonomous`,desc:`Delete and kill — irreversible`},lockedTitle:`Needs a higher level`,lockedBody:`That action needs the "{{level}}" level. You're on "{{current}}".`,raiseHint:`⇧⇥ to raise the level, or ask another way.`},E={title:`Confirm action`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approve`,cancel:`Cancel`,dontAskAgain:`Don't ask again this session`,approved:`Approved`,cancelled:`Cancelled`},D={home:`Home`,searchPlaceholder:`Talk to Specrails…`,recents:`Recents`,allProjects:`All projects`,searchAll:`Search across all projects`,addProject:`Add project…`,homeHint:`No project selected — operating across all projects.`,askCreateOrSearch:`No project is selected. Do you want to create a new project, or search across all projects?`},O={title:`No AI provider installed`,body:`The agent needs Claude, Codex or Gemini on your machine. Install one, then reopen the agent to start chatting.`,placeholder:`Install an AI provider to use the agent…`},k={title:`Specrails MCP is off`,body:`The agent needs the embedded MCP server to operate the app.`,enable:`Enable Specrails MCP`,enabling:`Enabling…`,enabled:`MCP enabled`},A={live:`live`,queued:`queued`,running:`running`,done:`done`,failed:`failed`},j={generic:`Something went wrong. Try again.`,busy:`The agent is busy. Try again in a moment.`},M={kindAgent:`Agent mission`},N=`New Mission`,P=`Switch to Mission Control`,F=`Switch to Board`,I=`Search`,L=`Home`,R=`Untitled`,z={title:`On workspace`,terminal:`Terminal`,files:`Files`,browser:`Browser`,requiresProject:`Select a project to use this tool`,resizeCode:`Resize code pane`,closeFiles:`Close code`,browserConfirm:`Add to agent`,browserCaptured:`Capture added`,uploadFailed:`Upload failed`,requiresConversation:`Start a mission to use this tool`,jobs:`Jobs`,closeJobs:`Close jobs`,resizeJobs:`Resize jobs pane`,noJobs:`No jobs yet — ask the agent to launch one`},B=`Attach file`,V=`Delete "{{title}}"`,H=`Confirm delete "{{title}}"`,U=`confirm?`,W=`This provider can't read images yet — attach text files instead`,G={label:`Effort`,minimal:`Minimal`,low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra high`},K=`What's the mission, Neo?`,q={title:n,subtitle:r,trigger:i,composerPlaceholder:a,send:o,stop:s,copy:c,maximize:l,restore:u,minimize:d,close:f,newConversation:p,emptyTitle:m,emptyHint:h,thinking:g,connecting:_,consultingCode:v,size:y,model:b,history:x,queue:S,git:C,provider:w,tier:T,approval:E,project:D,noProvider:O,degraded:k,toolCard:A,error:j,chip:M,newAgent:N,switchToAgent:P,switchToKanban:F,search:I,home:L,untitled:R,workspace:z,attachFile:B,deleteConversation:V,confirmDeleteConversation:H,confirmShort:U,imagesUnsupported:W,effort:G,emptyTitleMatrix:K};export{t};
@@ -0,0 +1 @@
1
+ var e=`ミッションセンター`,t=`チャットで Specrails を操作`,n=`ミッションセンター`,r=`エージェントに何でも頼んでください…`,i=`送信`,a=`停止`,o=`コピー`,s=`最大化`,c=`元に戻す`,l=`最小化`,u=`閉じる`,d=`新しいミッション`,f=`ミッションは何ですか?`,p=`プロジェクトを選んでから尋ねてください。エージェントの作業中、ボードはリアルタイムで更新されます。`,m=`考え中…`,h=`接続中…`,g=`アプリを確認中…`,_={compact:`コンパクト`,comfortable:`快適`,max:`最大化`},v={label:`モデル`},y={hint:`プロンプト履歴を表示中 — 入力で編集、↑↓ で移動`},b={queued:`待機中`,send:`キューに送信`,sendHint:`エージェントは作業中です — このメッセージはキューに入り、次に実行されます`,placeholder:`エージェントの作業中に追加できます — キューに入ります…`},x={branch:`ブランチ`,detached:`(detached)`,dirty:`未コミットの変更あり`,switched:`{{branch}} に切り替えました`,switchFailed:`ブランチを切り替えられませんでした`,lockedWhileWorking:`エージェントの作業中はブランチをロックしています`,searchPlaceholder:`ブランチを検索…`,noMatches:`一致するブランチがありません`,worktrees:`ワークツリー`,worktreePathCopied:`ワークツリーのパスをコピーしました`,copyWorktreePath:`ワークツリーのパスをコピー`},S={label:`プロバイダー`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ で変更`,observe:{name:`観察`,desc:`読み取り専用 — 何も変更しません`},edit:{name:`編集`,desc:`作成と編集(取り消し可能)`},operate:{name:`操作`,desc:`AI を起動 — 費用がかかります`},autonomous:{name:`自律`,desc:`削除と停止 — 取り消し不可`},lockedTitle:`より高いレベルが必要です`,lockedBody:`その操作には「{{level}}」レベルが必要です。現在は「{{current}}」です。`,raiseHint:`⇧⇥ でレベルを上げるか、別の方法で尋ねてください。`},w={title:`操作を確認`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`承認`,cancel:`キャンセル`,dontAskAgain:`このセッションでは今後確認しない`,approved:`承認しました`,cancelled:`キャンセルしました`},T={home:`ホーム`,searchPlaceholder:`Specrails に話しかける…`,recents:`最近`,allProjects:`すべてのプロジェクト`,searchAll:`すべてのプロジェクトを検索`,addProject:`プロジェクトを追加…`,homeHint:`プロジェクトが未選択 — すべてのプロジェクトを横断して操作中。`,askCreateOrSearch:`プロジェクトが選択されていません。新しいプロジェクトを作成しますか、それともすべてのプロジェクトを検索しますか?`},E={title:`AIプロバイダーが未インストール`,body:`エージェントには Claude、Codex、Gemini のいずれかが必要です。インストールしてからエージェントを再度開いてください。`,placeholder:`AIプロバイダーをインストールしてエージェントを利用…`},D={title:`Specrails MCP がオフです`,body:`エージェントがアプリを操作するには、組み込みの MCP サーバーが必要です。`,enable:`Specrails MCP を有効化`,enabling:`有効化中…`,enabled:`MCP を有効化しました`},O={live:`ライブ`,queued:`待機中`,running:`実行中`,done:`完了`,failed:`失敗`},k={generic:`問題が発生しました。もう一度お試しください。`,busy:`エージェントは処理中です。しばらくしてからお試しください。`},A={kindAgent:`エージェントのミッション`},j=`新しいミッション`,M=`ミッションセンターに切り替え`,N=`ボードに切り替え`,P=`検索`,F=`ホーム`,I=`無題`,L={title:`ワークスペース`,terminal:`ターミナル`,files:`ファイル`,browser:`ブラウザ`,requiresProject:`このツールを使うにはプロジェクトを選択してください`,resizeCode:`コードペインをリサイズ`,closeFiles:`コードを閉じる`,browserConfirm:`エージェントに追加`,browserCaptured:`キャプチャを追加しました`,uploadFailed:`アップロードに失敗しました`,requiresConversation:`このツールを使うにはミッションを開始してください`,jobs:`ジョブ`,closeJobs:`ジョブを閉じる`,resizeJobs:`ジョブパネルのサイズ変更`,noJobs:`まだジョブがありません — エージェントに実行を頼んでみましょう`},R=`ファイルを添付`,z=`「{{title}}」を削除`,B=`「{{title}}」の削除を確認`,V=`削除しますか?`,H=`このプロバイダーはまだ画像を読み取れません — テキストファイルを添付してください`,U={label:`エフォート`,minimal:`最小`,low:`低`,medium:`中`,high:`高`,xhigh:`最高`},W=`ミッションは何ですか、ネオ?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -0,0 +1 @@
1
+ var e=`Missionszentrale`,t=`Specrails per Chat bedienen`,n=`Missionszentrale`,r=`Bitte den Agenten um alles…`,i=`Senden`,a=`Stopp`,o=`Kopieren`,s=`Maximieren`,c=`Wiederherstellen`,l=`Minimieren`,u=`Schließen`,d=`Neue Mission`,f=`Wie lautet die Mission?`,p=`Wähle ein Projekt und frag dann. Das Board aktualisiert sich live, während der Agent arbeitet.`,m=`Denkt nach…`,h=`Verbinden…`,g=`App wird abgefragt…`,_={compact:`Kompakt`,comfortable:`Komfortabel`,max:`Maximieren`},v={label:`Modell`},y={hint:`Verlauf durchsuchen — tippen zum Bearbeiten, ↑↓ zum Navigieren`},b={queued:`In Warteschlange`,send:`In Warteschlange senden`,sendHint:`Der Agent arbeitet noch — diese Nachricht wird eingereiht und danach ausgeführt`,placeholder:`Mehr hinzufügen, während der Agent arbeitet — wird eingereiht…`},x={branch:`Branch`,detached:`(detached)`,dirty:`Nicht committete Änderungen`,switched:`Zu {{branch}} gewechselt`,switchFailed:`Branch-Wechsel fehlgeschlagen`,lockedWhileWorking:`Branch gesperrt, während der Agent arbeitet`,searchPlaceholder:`Branches durchsuchen…`,noMatches:`Keine passenden Branches`,worktrees:`Worktrees`,worktreePathCopied:`Worktree-Pfad kopiert`,copyWorktreePath:`Worktree-Pfad kopieren`},S={label:`Anbieter`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ zum Wechseln`,observe:{name:`Beobachten`,desc:`Nur lesen — nichts ändert sich`},edit:{name:`Bearbeiten`,desc:`Erstellen und bearbeiten (umkehrbar)`},operate:{name:`Ausführen`,desc:`KI starten — kostet Geld`},autonomous:{name:`Autonom`,desc:`Löschen und beenden — unumkehrbar`},lockedTitle:`Höhere Stufe erforderlich`,lockedBody:`Diese Aktion erfordert die Stufe „{{level}}“. Du bist auf „{{current}}“.`,raiseHint:`⇧⇥ um die Stufe zu erhöhen, oder frag anders.`},w={title:`Aktion bestätigen`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Genehmigen`,cancel:`Abbrechen`,dontAskAgain:`In dieser Sitzung nicht mehr fragen`,approved:`Genehmigt`,cancelled:`Abgebrochen`},T={home:`Start`,searchPlaceholder:`Mit Specrails sprechen…`,recents:`Zuletzt verwendet`,allProjects:`Alle Projekte`,searchAll:`In allen Projekten suchen`,addProject:`Projekt hinzufügen…`,homeHint:`Kein Projekt ausgewählt — über alle Projekte hinweg.`,askCreateOrSearch:`Es ist kein Projekt ausgewählt. Möchtest du ein neues Projekt erstellen oder über alle Projekte hinweg suchen?`},E={title:`Kein KI-Anbieter installiert`,body:`Der Agent benötigt Claude, Codex oder Gemini auf deinem Rechner. Installiere einen und öffne den Agenten erneut, um zu chatten.`,placeholder:`Installiere einen KI-Anbieter, um den Agenten zu nutzen…`},D={title:`Specrails MCP ist aus`,body:`Der Agent braucht den eingebetteten MCP-Server, um die App zu bedienen.`,enable:`Specrails MCP aktivieren`,enabling:`Wird aktiviert…`,enabled:`MCP aktiviert`},O={live:`live`,queued:`in Warteschlange`,running:`läuft`,done:`fertig`,failed:`fehlgeschlagen`},k={generic:`Etwas ist schiefgelaufen. Versuch es erneut.`,busy:`Der Agent ist beschäftigt. Versuch es gleich noch einmal.`},A={kindAgent:`Agenten-Mission`},j=`Neue Mission`,M=`Zur Missionszentrale wechseln`,N=`Zum Board wechseln`,P=`Suchen`,F=`Start`,I=`Ohne Titel`,L={title:`Im Workspace`,terminal:`Terminal`,files:`Dateien`,browser:`Browser`,requiresProject:`Wähle ein Projekt, um dieses Tool zu nutzen`,resizeCode:`Code-Bereich anpassen`,closeFiles:`Code schließen`,browserConfirm:`Zum Agenten hinzufügen`,browserCaptured:`Aufnahme hinzugefügt`,uploadFailed:`Upload fehlgeschlagen`,requiresConversation:`Starte eine Mission, um dieses Werkzeug zu nutzen`,jobs:`Jobs`,closeJobs:`Jobs schließen`,resizeJobs:`Jobs-Bereich anpassen`,noJobs:`Noch keine Jobs — bitte den Agenten, einen zu starten`},R=`Datei anhängen`,z=`„{{title}}“ löschen`,B=`Löschen von „{{title}}“ bestätigen`,V=`bestätigen?`,H=`Dieser Anbieter kann noch keine Bilder lesen — hänge stattdessen Textdateien an`,U={label:`Aufwand`,minimal:`Minimal`,low:`Niedrig`,medium:`Mittel`,high:`Hoch`,xhigh:`Sehr hoch`},W=`Wie lautet die Mission, Neo?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -0,0 +1 @@
1
+ var e=`Control de misiones`,t=`Maneja Specrails conversando`,n=`Control de misiones`,r=`Pídele al agente lo que necesites…`,i=`Enviar`,a=`Detener`,o=`Copiar`,s=`Maximizar`,c=`Restaurar`,l=`Minimizar`,u=`Cerrar`,d=`Nueva misión`,f=`¿Cuál es la misión?`,p=`Elige un proyecto y luego pregunta. El tablero se actualiza en vivo mientras el agente trabaja.`,m=`Pensando…`,h=`Conectando…`,g=`Consultando la app…`,_={compact:`Compacto`,comfortable:`Cómodo`,max:`Maximizar`},v={label:`Modelo`},y={hint:`Explorando historial de prompts — escribe para editar, ↑↓ para navegar`},b={queued:`En cola`,send:`Enviar a la cola`,sendHint:`El agente sigue trabajando — este mensaje se pondrá en cola y se ejecutará después`,placeholder:`Añade más mientras el agente trabaja — se pondrá en cola…`},x={branch:`Rama`,detached:`(detached)`,dirty:`Cambios sin commitear`,switched:`Cambiado a {{branch}}`,switchFailed:`No se pudo cambiar de rama`,lockedWhileWorking:`Rama bloqueada mientras el agente trabaja`,searchPlaceholder:`Buscar ramas…`,noMatches:`Ninguna rama coincide`,worktrees:`Worktrees`,worktreePathCopied:`Ruta del worktree copiada`,copyWorktreePath:`Copiar ruta del worktree`},S={label:`Proveedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ para cambiar`,observe:{name:`Observa`,desc:`Solo lectura — nada cambia`},edit:{name:`Edita`,desc:`Crear y editar (reversible)`},operate:{name:`Opera`,desc:`Lanzar IA — tiene coste`},autonomous:{name:`Autónomo`,desc:`Borrar y detener — irreversible`},lockedTitle:`Necesita un nivel superior`,lockedBody:`Esa acción necesita el nivel «{{level}}». Estás en «{{current}}».`,raiseHint:`⇧⇥ para subir el nivel, o pídelo de otra forma.`},w={title:`Confirmar acción`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprobar`,cancel:`Cancelar`,dontAskAgain:`No volver a preguntar en esta sesión`,approved:`Aprobado`,cancelled:`Cancelado`},T={home:`Inicio`,searchPlaceholder:`Habla con Specrails…`,recents:`Recientes`,allProjects:`Todos los proyectos`,searchAll:`Buscar en todos los proyectos`,addProject:`Añadir proyecto…`,homeHint:`Ningún proyecto seleccionado — operando en todos los proyectos.`,askCreateOrSearch:`No hay ningún proyecto seleccionado. ¿Quieres crear un proyecto nuevo o buscar en todos los proyectos?`},E={title:`No hay ningún proveedor de IA instalado`,body:`El agente necesita Claude, Codex o Gemini en tu máquina. Instala uno y vuelve a abrir el agente para empezar a chatear.`,placeholder:`Instala un proveedor de IA para usar el agente…`},D={title:`El MCP de Specrails está apagado`,body:`El agente necesita el servidor MCP integrado para manejar la app.`,enable:`Activar el MCP de Specrails`,enabling:`Activando…`,enabled:`MCP activado`},O={live:`en vivo`,queued:`en cola`,running:`en curso`,done:`hecho`,failed:`fallido`},k={generic:`Algo salió mal. Inténtalo de nuevo.`,busy:`El agente está ocupado. Inténtalo de nuevo en un momento.`},A={kindAgent:`Misión del agente`},j=`Nueva misión`,M=`Cambiar a Control de misiones`,N=`Cambiar al tablero`,P=`Buscar`,F=`Inicio`,I=`Sin título`,L={title:`En el workspace`,terminal:`Terminal`,files:`Archivos`,browser:`Navegador`,requiresProject:`Selecciona un proyecto para usar esta herramienta`,resizeCode:`Redimensionar panel de código`,closeFiles:`Cerrar código`,browserConfirm:`Añadir al agente`,browserCaptured:`Captura añadida`,uploadFailed:`Error al subir`,requiresConversation:`Inicia una misión para usar esta herramienta`,jobs:`Jobs`,closeJobs:`Cerrar jobs`,resizeJobs:`Redimensionar panel de jobs`,noJobs:`Aún no hay jobs — pide al agente que lance uno`},R=`Adjuntar archivo`,z=`Borrar «{{title}}»`,B=`Confirmar borrado de «{{title}}»`,V=`¿confirmar?`,H=`Este proveedor aún no lee imágenes — adjunta archivos de texto`,U={label:`Esfuerzo`,minimal:`Mínimo`,low:`Bajo`,medium:`Medio`,high:`Alto`,xhigh:`Extra alto`},W=`¿Cuál es la misión, Neo?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -0,0 +1 @@
1
+ var e=`任务中心`,t=`通过对话操作 Specrails`,n=`任务中心`,r=`让智能体做任何事…`,i=`发送`,a=`停止`,o=`复制`,s=`最大化`,c=`还原`,l=`最小化`,u=`关闭`,d=`新任务`,f=`这次的任务是什么?`,p=`先选择一个项目,然后提问。智能体工作时看板会实时更新。`,m=`思考中…`,h=`连接中…`,g=`正在查询应用…`,_={compact:`紧凑`,comfortable:`舒适`,max:`最大化`},v={label:`模型`},y={hint:`浏览提示历史 — 输入以编辑,↑↓ 导航`},b={queued:`排队中`,send:`发送到队列`,sendHint:`智能体仍在工作——此消息将排队并在之后执行`,placeholder:`智能体工作时可继续输入——消息将排队…`},x={branch:`分支`,detached:`(分离头指针)`,dirty:`有未提交的更改`,switched:`已切换到 {{branch}}`,switchFailed:`无法切换分支`,lockedWhileWorking:`智能体工作时分支已锁定`,searchPlaceholder:`搜索分支…`,noMatches:`没有匹配的分支`,worktrees:`工作树`,worktreePathCopied:`已复制工作树路径`,copyWorktreePath:`复制工作树路径`},S={label:`提供方`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`},C={cycleHint:`⇧⇥ 切换`,observe:{name:`观察`,desc:`只读 — 不做任何更改`},edit:{name:`编辑`,desc:`创建和编辑(可撤销)`},operate:{name:`操作`,desc:`启动 AI — 会产生费用`},autonomous:{name:`自主`,desc:`删除和终止 — 不可逆`},lockedTitle:`需要更高的级别`,lockedBody:`该操作需要「{{level}}」级别。你当前处于「{{current}}」。`,raiseHint:`⇧⇥ 提升级别,或换一种方式询问。`},w={title:`确认操作`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`批准`,cancel:`取消`,dontAskAgain:`本次会话不再询问`,approved:`已批准`,cancelled:`已取消`},T={home:`主页`,searchPlaceholder:`与 Specrails 对话…`,recents:`最近`,allProjects:`所有项目`,searchAll:`在所有项目中搜索`,addProject:`添加项目…`,homeHint:`未选择项目 — 正在跨所有项目操作。`,askCreateOrSearch:`未选择任何项目。你想创建一个新项目,还是在所有项目中搜索?`},E={title:`未安装 AI 提供方`,body:`智能体需要在你的机器上安装 Claude、Codex 或 Gemini。安装其中之一后重新打开智能体即可开始对话。`,placeholder:`请安装 AI 提供方以使用智能体…`},D={title:`Specrails MCP 已关闭`,body:`智能体需要内置的 MCP 服务器来操作应用。`,enable:`启用 Specrails MCP`,enabling:`正在启用…`,enabled:`MCP 已启用`},O={live:`实时`,queued:`排队中`,running:`运行中`,done:`已完成`,failed:`失败`},k={generic:`出了点问题。请重试。`,busy:`智能体正忙。请稍后重试。`},A={kindAgent:`智能体任务`},j=`新任务`,M=`切换到任务中心`,N=`切换到看板`,P=`搜索`,F=`主页`,I=`未命名`,L={title:`工作区`,terminal:`终端`,files:`文件`,browser:`浏览器`,requiresProject:`请选择一个项目以使用此工具`,resizeCode:`调整代码面板`,closeFiles:`关闭代码`,browserConfirm:`添加到智能体`,browserCaptured:`已添加捕获`,uploadFailed:`上传失败`,requiresConversation:`启动任务后才能使用此工具`,jobs:`作业`,closeJobs:`关闭作业`,resizeJobs:`调整作业面板大小`,noJobs:`还没有作业——让智能体启动一个吧`},R=`附加文件`,z=`删除「{{title}}」`,B=`确认删除「{{title}}」`,V=`确认?`,H=`该提供商暂不支持读取图片 — 请附加文本文件`,U={label:`推理强度`,minimal:`最小`,low:`低`,medium:`中`,high:`高`,xhigh:`极高`},W=`这次的任务是什么,Neo?`,G={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,maximize:s,restore:c,minimize:l,close:u,newConversation:d,emptyTitle:f,emptyHint:p,thinking:m,connecting:h,consultingCode:g,size:_,model:v,history:y,queue:b,git:x,provider:S,tier:C,approval:w,project:T,noProvider:E,degraded:D,toolCard:O,error:k,chip:A,newAgent:j,switchToAgent:M,switchToKanban:N,search:P,home:F,untitled:I,workspace:L,attachFile:R,deleteConversation:z,confirmDeleteConversation:B,confirmShort:V,imagesUnsupported:H,effort:U,emptyTitleMatrix:W};export{w as approval,R as attachFile,A as chip,u as close,r as composerPlaceholder,B as confirmDeleteConversation,V as confirmShort,h as connecting,g as consultingCode,o as copy,G as default,D as degraded,z as deleteConversation,U as effort,p as emptyHint,f as emptyTitle,W as emptyTitleMatrix,k as error,x as git,y as history,F as home,H as imagesUnsupported,s as maximize,l as minimize,v as model,j as newAgent,d as newConversation,E as noProvider,T as project,S as provider,b as queue,c as restore,P as search,i as send,_ as size,a as stop,t as subtitle,M as switchToAgent,N as switchToKanban,m as thinking,C as tier,e as title,O as toolCard,n as trigger,I as untitled,L as workspace};
@@ -1 +1 @@
1
- import{a as e,o as t}from"./index-BeujshsU.js";var n=class{constructor(){this.eventListeners=Object.create(null)}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}on(e,t){return e in this.eventListeners?this.eventListeners[e].push(t):this.eventListeners[e]=[t],this}once(e,t){let n=r=>{this.removeListener(e,n),t(r)};return this.addListener(e,n)}off(e,t){return e in this.eventListeners&&(this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)),this}removeAllListeners(e){return e?delete this.eventListeners[e]:this.eventListeners=Object.create(null),this}emit(e,t){if(e in this.eventListeners){let n=this.eventListeners[e];for(let e of n)e(t);return!0}return!1}listenerCount(e){return e in this.eventListeners?this.eventListeners[e].length:0}prependListener(e,t){return e in this.eventListeners?this.eventListeners[e].unshift(t):this.eventListeners[e]=[t],this}prependOnceListener(e,t){let n=r=>{this.removeListener(e,n),t(r)};return this.prependListener(e,n)}},r=class{constructor(e){this.pid=e}async write(e){await t(`plugin:shell|stdin_write`,{pid:this.pid,buffer:e})}async kill(){await t(`plugin:shell|kill`,{cmd:`killChild`,pid:this.pid})}},i=class i extends n{constructor(e,t=[],r){super(),this.stdout=new n,this.stderr=new n,this.program=e,this.args=typeof t==`string`?[t]:t,this.options=r??{}}static create(e,t=[],n){return new i(e,t,n)}static sidecar(e,t=[],n){let r=new i(e,t,n);return r.options.sidecar=!0,r}async spawn(){let n=this.program,i=this.args,a=this.options;typeof i==`object`&&Object.freeze(i);let o=new e;return o.onmessage=e=>{switch(e.event){case`Error`:this.emit(`error`,e.payload);break;case`Terminated`:this.emit(`close`,e.payload);break;case`Stdout`:this.stdout.emit(`data`,e.payload);break;case`Stderr`:this.stderr.emit(`data`,e.payload);break}},await t(`plugin:shell|spawn`,{program:n,args:i,options:a,onEvent:o}).then(e=>new r(e))}async execute(){let e=this.program,n=this.args,r=this.options;return typeof n==`object`&&Object.freeze(n),await t(`plugin:shell|execute`,{program:e,args:n,options:r})}};async function a(e,n){await t(`plugin:shell|open`,{path:e,with:n})}export{r as Child,i as Command,n as EventEmitter,a as open};
1
+ import{a as e,o as t}from"./index-CG4z4_Mq.js";var n=class{constructor(){this.eventListeners=Object.create(null)}addListener(e,t){return this.on(e,t)}removeListener(e,t){return this.off(e,t)}on(e,t){return e in this.eventListeners?this.eventListeners[e].push(t):this.eventListeners[e]=[t],this}once(e,t){let n=r=>{this.removeListener(e,n),t(r)};return this.addListener(e,n)}off(e,t){return e in this.eventListeners&&(this.eventListeners[e]=this.eventListeners[e].filter(e=>e!==t)),this}removeAllListeners(e){return e?delete this.eventListeners[e]:this.eventListeners=Object.create(null),this}emit(e,t){if(e in this.eventListeners){let n=this.eventListeners[e];for(let e of n)e(t);return!0}return!1}listenerCount(e){return e in this.eventListeners?this.eventListeners[e].length:0}prependListener(e,t){return e in this.eventListeners?this.eventListeners[e].unshift(t):this.eventListeners[e]=[t],this}prependOnceListener(e,t){let n=r=>{this.removeListener(e,n),t(r)};return this.prependListener(e,n)}},r=class{constructor(e){this.pid=e}async write(e){await t(`plugin:shell|stdin_write`,{pid:this.pid,buffer:e})}async kill(){await t(`plugin:shell|kill`,{cmd:`killChild`,pid:this.pid})}},i=class i extends n{constructor(e,t=[],r){super(),this.stdout=new n,this.stderr=new n,this.program=e,this.args=typeof t==`string`?[t]:t,this.options=r??{}}static create(e,t=[],n){return new i(e,t,n)}static sidecar(e,t=[],n){let r=new i(e,t,n);return r.options.sidecar=!0,r}async spawn(){let n=this.program,i=this.args,a=this.options;typeof i==`object`&&Object.freeze(i);let o=new e;return o.onmessage=e=>{switch(e.event){case`Error`:this.emit(`error`,e.payload);break;case`Terminated`:this.emit(`close`,e.payload);break;case`Stdout`:this.stdout.emit(`data`,e.payload);break;case`Stderr`:this.stderr.emit(`data`,e.payload);break}},await t(`plugin:shell|spawn`,{program:n,args:i,options:a,onEvent:o}).then(e=>new r(e))}async execute(){let e=this.program,n=this.args,r=this.options;return typeof n==`object`&&Object.freeze(n),await t(`plugin:shell|execute`,{program:e,args:n,options:r})}};async function a(e,n){await t(`plugin:shell|open`,{path:e,with:n})}export{r as Child,i as Command,n as EventEmitter,a as open};
@@ -1 +1 @@
1
- import{o as e}from"./index-BeujshsU.js";function t(e){if(e!==void 0){if(typeof e==`string`)return e;if(`ok`in e&&`cancel`in e)return{OkCancelCustom:[e.ok,e.cancel]};if(`yes`in e&&`no`in e&&`cancel`in e)return{YesNoCancelCustom:[e.yes,e.no,e.cancel]};if(`ok`in e)return{OkCustom:e.ok}}}async function n(t={}){return typeof t==`object`&&Object.freeze(t),await e(`plugin:dialog|open`,{options:t})}async function r(t={}){return typeof t==`object`&&Object.freeze(t),await e(`plugin:dialog|save`,{options:t})}async function i(n,r){return await e(`plugin:dialog|message`,{message:n,title:r?.title,kind:r?.kind,buttons:t(r?.buttons)})}async function a(e,t){let n=typeof t==`string`?{title:t}:t;return n&&!n.buttons&&n.okLabel&&(n.buttons={ok:n.okLabel}),i(e,n)}async function o(e,t){let n=typeof t==`string`?{title:t}:t,r=n?.okLabel||n?.cancelLabel,a=n?.okLabel??`Yes`;return await i(e,{title:n?.title,kind:n?.kind,buttons:r?{ok:a,cancel:n.cancelLabel??`No`}:`YesNo`})===a}async function s(e,t){let n=typeof t==`string`?{title:t}:t,r=n?.okLabel||n?.cancelLabel,a=n?.okLabel??`Ok`;return await i(e,{title:n?.title,kind:n?.kind,buttons:r?{ok:a,cancel:n.cancelLabel??`Cancel`}:`OkCancel`})===a}export{o as ask,s as confirm,a as message,n as open,r as save};
1
+ import{o as e}from"./index-CG4z4_Mq.js";function t(e){if(e!==void 0){if(typeof e==`string`)return e;if(`ok`in e&&`cancel`in e)return{OkCancelCustom:[e.ok,e.cancel]};if(`yes`in e&&`no`in e&&`cancel`in e)return{YesNoCancelCustom:[e.yes,e.no,e.cancel]};if(`ok`in e)return{OkCustom:e.ok}}}async function n(t={}){return typeof t==`object`&&Object.freeze(t),await e(`plugin:dialog|open`,{options:t})}async function r(t={}){return typeof t==`object`&&Object.freeze(t),await e(`plugin:dialog|save`,{options:t})}async function i(n,r){return await e(`plugin:dialog|message`,{message:n,title:r?.title,kind:r?.kind,buttons:t(r?.buttons)})}async function a(e,t){let n=typeof t==`string`?{title:t}:t;return n&&!n.buttons&&n.okLabel&&(n.buttons={ok:n.okLabel}),i(e,n)}async function o(e,t){let n=typeof t==`string`?{title:t}:t,r=n?.okLabel||n?.cancelLabel,a=n?.okLabel??`Yes`;return await i(e,{title:n?.title,kind:n?.kind,buttons:r?{ok:a,cancel:n.cancelLabel??`No`}:`YesNo`})===a}async function s(e,t){let n=typeof t==`string`?{title:t}:t,r=n?.okLabel||n?.cancelLabel,a=n?.okLabel??`Ok`;return await i(e,{title:n?.title,kind:n?.kind,buttons:r?{ok:a,cancel:n.cancelLabel??`Cancel`}:`OkCancel`})===a}export{o as ask,s as confirm,a as message,n as open,r as save};