specrails-desktop 2.33.0 → 2.34.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 (203) hide show
  1. package/client/dist/assets/{ActivityFeedPage-DaBTALGY.js → ActivityFeedPage-DIDxNsDj.js} +1 -1
  2. package/client/dist/assets/{AgentBrowserCapture-SxwVNrUs.js → AgentBrowserCapture-7pJ2G5VY.js} +1 -1
  3. package/client/dist/assets/AgentModeAnalyticsPane-BSSyTnTM.js +2 -0
  4. package/client/dist/assets/{AgentModeCodePane-CmLgIoDw.js → AgentModeCodePane-DzW6gvDw.js} +2 -2
  5. package/client/dist/assets/{AgentModeJobsPane-BvP_T32M.js → AgentModeJobsPane-9wJff15f.js} +1 -1
  6. package/client/dist/assets/AgentsPage-CIA67psb.js +87 -0
  7. package/client/dist/assets/AnalyticsPage-C0LwYELz.js +1 -0
  8. package/client/dist/assets/CodePage-RtKvHmAO.js +2 -0
  9. package/client/dist/assets/{DesktopAnalyticsPage-DrvNiDb0.js → DesktopAnalyticsPage-BU8Y_Ts1.js} +1 -1
  10. package/client/dist/assets/{DocsDialog-BEQpGC1o.js → DocsDialog-DIpoaGlQ.js} +1 -1
  11. package/client/dist/assets/{DocsPage-Btso3Viq.js → DocsPage-ME47KZpK.js} +1 -1
  12. package/client/dist/assets/InteractiveJobComposer-BGjIe9R6.js +19 -0
  13. package/client/dist/assets/{JobDetailModal-Brk7fL5A.js → JobDetailModal-1UZkqH4I.js} +1 -1
  14. package/client/dist/assets/JobDetailPage-CN65sAf1.js +1 -0
  15. package/client/dist/assets/JobsPage-f-4dqys7.js +1 -0
  16. package/client/dist/assets/LoopBuilderPage-WeiofeL6.js +7 -0
  17. package/client/dist/assets/LoopPreviewModal-DDTnTyH0.js +1 -0
  18. package/client/dist/assets/LoopsPage-BVNchIex.js +1 -0
  19. package/client/dist/assets/MinimizedChatsContext-CHsu3NCX.js +1 -0
  20. package/client/dist/assets/PluginsPage-CdFzGEfQ.js +2 -0
  21. package/client/dist/assets/ProjectSettingsDialog-BkCXBQWk.js +1 -0
  22. package/client/dist/assets/TemplatePreviewModal-RDi0khFG.js +1 -0
  23. package/client/dist/assets/TicketDetailModal-MhJzrqbi.js +14 -0
  24. package/client/dist/assets/{Trans-CpUoGvNy.js → Trans-CTqw6rr9.js} +1 -1
  25. package/client/dist/assets/{addspec-DhmnXER8.js → addspec-A1lDQa4M.js} +1 -1
  26. package/client/dist/assets/{addspec-BRlk8jON.js → addspec-BHZd0N5F.js} +1 -1
  27. package/client/dist/assets/{addspec-CHW9xf_X.js → addspec-BPpZ_olp.js} +1 -1
  28. package/client/dist/assets/{addspec-Di41DpYV.js → addspec-B_TPJt-R.js} +1 -1
  29. package/client/dist/assets/{addspec-4WmLJmBG.js → addspec-CLYLvaVP.js} +1 -1
  30. package/client/dist/assets/{addspec-C7XRejU4.js → addspec-CQBjzt24.js} +1 -1
  31. package/client/dist/assets/{addspec-x3mizDxc.js → addspec-D2YIQ0GU.js} +1 -1
  32. package/client/dist/assets/{addspec-DTmRrWrF.js → addspec-iFdQ6D99.js} +1 -1
  33. package/client/dist/assets/agent-Bd-q3Wqp.js +1 -0
  34. package/client/dist/assets/agent-BlvdW4Hv.js +1 -0
  35. package/client/dist/assets/agent-C-KQhxeM.js +1 -0
  36. package/client/dist/assets/agent-Ca15w5eu.js +1 -0
  37. package/client/dist/assets/agent-D6fKaoMd.js +1 -0
  38. package/client/dist/assets/agent-HFMYMTbB.js +1 -0
  39. package/client/dist/assets/agent-QIEbkBjg.js +1 -0
  40. package/client/dist/assets/agent-mTCsAbCl.js +1 -0
  41. package/client/dist/assets/{analytics-C9RaQcE3.js → analytics-47pYygtV.js} +1 -1
  42. package/client/dist/assets/{analytics-B8Qtptbl.js → analytics-B0vt1g5U.js} +1 -1
  43. package/client/dist/assets/analytics-BMzCvrCU.js +1 -0
  44. package/client/dist/assets/{analytics-BPptRY4f.js → analytics-BlFN3Zwx.js} +1 -1
  45. package/client/dist/assets/{analytics-BxDGOIwf.js → analytics-CZYzL-nR.js} +1 -1
  46. package/client/dist/assets/{analytics-D_OZdQ9O.js → analytics-DAsb9MJ8.js} +1 -1
  47. package/client/dist/assets/{analytics-CJIwqrEl.js → analytics-FXQlQ2Yt.js} +1 -1
  48. package/client/dist/assets/{analytics-We6lUMI8.js → analytics-RnFCNkah.js} +1 -1
  49. package/client/dist/assets/{builder-CWYPw7Cw.js → builder-0IWtosUm.js} +1 -1
  50. package/client/dist/assets/{builder-CX1437hF.js → builder-Bf2N6XWn.js} +1 -1
  51. package/client/dist/assets/{builder-BiUG9Z5K.js → builder-BnqaaBkT.js} +1 -1
  52. package/client/dist/assets/{builder-CGRz_-zP.js → builder-BxxfGgAO.js} +1 -1
  53. package/client/dist/assets/{builder-DwDexYRE.js → builder-C5IIgWsq.js} +1 -1
  54. package/client/dist/assets/builder-CHuahItu.js +1 -0
  55. package/client/dist/assets/{builder-Cowk9jtL.js → builder-CjWosXL_.js} +1 -1
  56. package/client/dist/assets/{builder-3bygQtZi.js → builder-CpCIOoKj.js} +1 -1
  57. package/client/dist/assets/dashboard-BHRqsGCV.js +1 -0
  58. package/client/dist/assets/dashboard-Bfr90vOl.js +1 -0
  59. package/client/dist/assets/dashboard-CTsM8x3m.js +1 -0
  60. package/client/dist/assets/dashboard-CqC6wX0h.js +1 -0
  61. package/client/dist/assets/dashboard-CuZtAszc.js +1 -0
  62. package/client/dist/assets/dashboard-DAcqIc-n.js +1 -0
  63. package/client/dist/assets/dashboard-DekiV-86.js +1 -0
  64. package/client/dist/assets/dashboard-DoDczc5S.js +1 -0
  65. package/client/dist/assets/{dist-js-1QRck05T.js → dist-js-BmsFWRly.js} +1 -1
  66. package/client/dist/assets/{dist-js-K9AsZWxz.js → dist-js-J5W_N5ng.js} +1 -1
  67. package/client/dist/assets/{formatDistanceToNow-2bGOYubE.js → formatDistanceToNow-BOuXgebD.js} +1 -1
  68. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-B_N-0uSl.js → getTimezoneOffsetInMilliseconds-EjGOpn4b.js} +1 -1
  69. package/client/dist/assets/{i18n-B2SaZsf2.js → i18n-nJQvD5zJ.js} +2 -2
  70. package/client/dist/assets/index-C_sdsSZt.js +63 -0
  71. package/client/dist/assets/index-DCN5QbDm.css +2 -0
  72. package/client/dist/assets/{jira-BySfUuQZ.js → jira-BNZu8f9O.js} +1 -1
  73. package/client/dist/assets/{jira-gAvOyije.js → jira-BOoaUXbb.js} +1 -1
  74. package/client/dist/assets/{jira-pRaL7JQo.js → jira-BYVN4L2u.js} +1 -1
  75. package/client/dist/assets/jira-CKJg3HZd.js +1 -0
  76. package/client/dist/assets/{jira-Byw2C0F8.js → jira-DDDsZ4ub.js} +1 -1
  77. package/client/dist/assets/{jira-D38Gj7AT.js → jira-DXwYjVE4.js} +1 -1
  78. package/client/dist/assets/{jira-D11gPhxz.js → jira-Dn6U2nRW.js} +1 -1
  79. package/client/dist/assets/{jira-api-BgFIr8eD.js → jira-api-Bhixwn-d.js} +1 -1
  80. package/client/dist/assets/{jira-CNeYi06w.js → jira-j7hVolR5.js} +1 -1
  81. package/client/dist/assets/nav-ApJVg3xu.js +1 -0
  82. package/client/dist/assets/nav-BKNky1Bg.js +1 -0
  83. package/client/dist/assets/nav-C6vWWKYx.js +1 -0
  84. package/client/dist/assets/nav-CXJ6Aw89.js +1 -0
  85. package/client/dist/assets/nav-CsmFBIDf.js +1 -0
  86. package/client/dist/assets/nav-DjkmQJjd.js +1 -0
  87. package/client/dist/assets/nav-iwjCg5FR.js +1 -0
  88. package/client/dist/assets/nav-pYuXq7sf.js +1 -0
  89. package/client/dist/assets/{provider-capabilities-BvoExILy.js → provider-capabilities-Doej9lfa.js} +1 -1
  90. package/client/dist/assets/setup-3jWaoVUO.js +1 -0
  91. package/client/dist/assets/setup-BjgRneb2.js +1 -0
  92. package/client/dist/assets/setup-BzFIjv-f.js +1 -0
  93. package/client/dist/assets/setup-C4VfQsxE.js +1 -0
  94. package/client/dist/assets/setup-DfUkpDbN.js +1 -0
  95. package/client/dist/assets/setup-ECe90Pmu.js +1 -0
  96. package/client/dist/assets/setup-dlqC4Jmm.js +1 -0
  97. package/client/dist/assets/{setup-CK8IKkeD.js → setup-jwfLMiM2.js} +1 -1
  98. package/client/dist/assets/{spending-B20-uFLQ.js → spending-BpYPsevQ.js} +1 -1
  99. package/client/dist/assets/tickets-B4rjuSYi.js +1 -0
  100. package/client/dist/assets/tickets-Bc71ce1C.js +1 -0
  101. package/client/dist/assets/tickets-CLg7VTJ8.js +1 -0
  102. package/client/dist/assets/tickets-CP9U1GJt.js +1 -0
  103. package/client/dist/assets/tickets-CZNBiHbq.js +1 -0
  104. package/client/dist/assets/tickets-DlX2mEkD.js +1 -0
  105. package/client/dist/assets/tickets-W6pBmbrX.js +1 -0
  106. package/client/dist/assets/tickets-_yKvCt4Y.js +1 -0
  107. package/client/dist/assets/{useBrowserCaptureSession-DACautTD.js → useBrowserCaptureSession-BBXBN0Na.js} +1 -1
  108. package/client/dist/assets/useDesktop-B6Du2N83.js +1 -0
  109. package/client/dist/assets/{useSharedWebSocket-DaPh7QBL.js → useSharedWebSocket-DK96ctb7.js} +1 -1
  110. package/client/dist/index.html +23 -23
  111. package/docs/guide/de/getting-started/3-adding-your-first-project.md +13 -32
  112. package/docs/guide/de/integrations/1-ai-providers.md +27 -16
  113. package/docs/guide/en/getting-started/3-adding-your-first-project.md +8 -27
  114. package/docs/guide/en/integrations/1-ai-providers.md +21 -18
  115. package/docs/guide/es/getting-started/3-adding-your-first-project.md +12 -31
  116. package/docs/guide/es/integrations/1-ai-providers.md +24 -16
  117. package/docs/guide/fr/getting-started/3-adding-your-first-project.md +15 -34
  118. package/docs/guide/fr/integrations/1-ai-providers.md +25 -16
  119. package/docs/guide/it/getting-started/3-adding-your-first-project.md +16 -35
  120. package/docs/guide/it/integrations/1-ai-providers.md +25 -16
  121. package/docs/guide/ja/getting-started/3-adding-your-first-project.md +16 -35
  122. package/docs/guide/ja/integrations/1-ai-providers.md +7 -12
  123. package/docs/guide/pt/getting-started/3-adding-your-first-project.md +15 -34
  124. package/docs/guide/pt/integrations/1-ai-providers.md +24 -16
  125. package/docs/guide/zh/getting-started/3-adding-your-first-project.md +18 -37
  126. package/docs/guide/zh/integrations/1-ai-providers.md +7 -12
  127. package/docs/internals/project-builder.md +11 -6
  128. package/package.json +1 -1
  129. package/server/dist/blueprint-commit.js +1 -1
  130. package/server/dist/desktop-db.js +22 -1
  131. package/server/dist/desktop-router.js +132 -43
  132. package/server/dist/framework-reseed.js +144 -0
  133. package/server/dist/index.js +41 -2
  134. package/server/dist/jira/jira-sync-manager.js +49 -2
  135. package/server/dist/jira-router.js +21 -0
  136. package/server/dist/legacy-migration.js +395 -0
  137. package/server/dist/offline-assemble.js +32 -4
  138. package/server/dist/project-router-spending.js +11 -1
  139. package/server/dist/provider-detection.js +222 -0
  140. package/server/dist/provider-selection.js +71 -19
  141. package/server/dist/rails-router.js +11 -0
  142. package/server/dist/rails-store.js +5 -1
  143. package/server/dist/setup-manager.js +57 -0
  144. package/server/dist/spending.js +45 -0
  145. package/client/dist/assets/AgentsPage-Bz7uDqvI.js +0 -87
  146. package/client/dist/assets/AnalyticsPage-DrNHMTed.js +0 -1
  147. package/client/dist/assets/CodePage-DZtAK2Ac.js +0 -2
  148. package/client/dist/assets/InteractiveJobComposer-Ca9-_4VF.js +0 -19
  149. package/client/dist/assets/JobDetailPage-DiQVcvW7.js +0 -1
  150. package/client/dist/assets/JobsPage-1SvirYQm.js +0 -1
  151. package/client/dist/assets/LoopBuilderPage-X_YwJ-Ik.js +0 -7
  152. package/client/dist/assets/LoopPreviewModal-BeW-cr7A.js +0 -1
  153. package/client/dist/assets/LoopsPage-Na9vDt4p.js +0 -1
  154. package/client/dist/assets/MinimizedChatsContext-BQQohTp2.js +0 -1
  155. package/client/dist/assets/PluginsPage-B-NLA93L.js +0 -2
  156. package/client/dist/assets/ProjectSettingsDialog-CQlq1Mf7.js +0 -1
  157. package/client/dist/assets/TemplatePreviewModal-CPz1o3fP.js +0 -1
  158. package/client/dist/assets/TicketDetailModal-DEoAJOuD.js +0 -14
  159. package/client/dist/assets/agent-BKsuIgIT.js +0 -1
  160. package/client/dist/assets/agent-Bs9NilfI.js +0 -1
  161. package/client/dist/assets/agent-C23h684q.js +0 -1
  162. package/client/dist/assets/agent-CqEjy3Z2.js +0 -1
  163. package/client/dist/assets/agent-D5DZTks1.js +0 -1
  164. package/client/dist/assets/agent-DE8hUYPl.js +0 -1
  165. package/client/dist/assets/agent-DsTuJGSc.js +0 -1
  166. package/client/dist/assets/agent-DwZM05-x.js +0 -1
  167. package/client/dist/assets/analytics-BHqUazhP.js +0 -1
  168. package/client/dist/assets/builder-skfnZ1uC.js +0 -1
  169. package/client/dist/assets/dashboard-BVq6kRJe.js +0 -1
  170. package/client/dist/assets/dashboard-BaKPPmLH.js +0 -1
  171. package/client/dist/assets/dashboard-Bm8e4zYG.js +0 -1
  172. package/client/dist/assets/dashboard-Bt6IesnM.js +0 -1
  173. package/client/dist/assets/dashboard-C_NQZle_.js +0 -1
  174. package/client/dist/assets/dashboard-CyZKoGoI.js +0 -1
  175. package/client/dist/assets/dashboard-HIUdUBQ0.js +0 -1
  176. package/client/dist/assets/dashboard-pm4Mr229.js +0 -1
  177. package/client/dist/assets/index-Bpzm94S9.js +0 -77
  178. package/client/dist/assets/index-ChIuonbC.css +0 -2
  179. package/client/dist/assets/jira-CmKWERE0.js +0 -1
  180. package/client/dist/assets/nav-BHDiSIVu.js +0 -1
  181. package/client/dist/assets/nav-CMiYAq4i.js +0 -1
  182. package/client/dist/assets/nav-CqS7NrDW.js +0 -1
  183. package/client/dist/assets/nav-D-0M7xfv.js +0 -1
  184. package/client/dist/assets/nav-D65O6u9I.js +0 -1
  185. package/client/dist/assets/nav-D_LKYvBr.js +0 -1
  186. package/client/dist/assets/nav-FDTJmU79.js +0 -1
  187. package/client/dist/assets/nav-VaB-C4k5.js +0 -1
  188. package/client/dist/assets/setup-CA9J5hck.js +0 -1
  189. package/client/dist/assets/setup-Cas_jrnl.js +0 -1
  190. package/client/dist/assets/setup-ClcYC8KP.js +0 -1
  191. package/client/dist/assets/setup-CtfFTXdf.js +0 -1
  192. package/client/dist/assets/setup-D73npsqO.js +0 -1
  193. package/client/dist/assets/setup-DXw1UgZB.js +0 -1
  194. package/client/dist/assets/setup-DsKIBie0.js +0 -1
  195. package/client/dist/assets/tickets-BL9r1G0e.js +0 -1
  196. package/client/dist/assets/tickets-B_NyHJ8f.js +0 -1
  197. package/client/dist/assets/tickets-BarF1wuG.js +0 -1
  198. package/client/dist/assets/tickets-CclVhpQA.js +0 -1
  199. package/client/dist/assets/tickets-CqqOHbli.js +0 -1
  200. package/client/dist/assets/tickets-DCkFSiqt.js +0 -1
  201. package/client/dist/assets/tickets-Djn3ccfT.js +0 -1
  202. package/client/dist/assets/tickets-MiHBPsy_.js +0 -1
  203. package/client/dist/assets/useDesktop-Cwyis9DX.js +0 -1
@@ -1 +0,0 @@
1
- var e={critical:`紧急`,high:`高`,medium:`中`,low:`低`},t={todo:`待办`,inProgress:`进行中`,done:`完成`,cancelled:`已取消`},n={manual:`手动创建`,productBacklog:`来自产品 backlog`,proposeSpec:`来自 spec 提案`,getBacklogSpecs:`来自 backlog spec`,freePrompt:`来自 Raw prompt`},r={title:`标题`,description:`描述`,status:`状态`,priority:`优先级`,labels:`标签`,markdownPlaceholder:`Markdown 描述…`,supportsMarkdown:`支持 Markdown`},i={createdAgo:`创建于 {{time}}`,updatedAgo:`更新于 {{time}}`},a=`未命名`,o={title:`删除工单`,body:`确定要删除 <strong>#{{id}} {{title}}</strong> 吗?此操作无法撤销。`},s={toast:{updated:`工单已更新`,updateFailed:`更新工单失败`,deleteFailed:`删除工单失败`},compare:`对比`,compareTooltip:`与另一个 spec 对比`,doneEditing:`完成编辑`,addDescription:`添加描述…`,prerequisites:`前置条件`,addLabel:`添加标签`,addLabelPlaceholder:`添加标签…`,effort:`工作量`,assignee:`负责人`,continueEditing:`继续编辑`,ticketFallbackLabel:`工单 #{{id}}`},c={title:`Contract Layer`,populated:`已填充 {{n}}/5`},l={moveToRail:`放入 Rail`,removeFromRail:`从 Rail 移除`,currentlyOn:`当前位于 {{rail}}`,popoverTitle:`放入 rail`,noRails:`没有可用的 rail。`},u={ariaLabel:`工单操作`,deleteTicket:`删除工单`,changeStatus:`更改状态`,statusOptions:`状态选项`,setPriority:`设置优先级`,priorityOptions:`优先级选项`},d={list:`列表视图`,grid:`网格视图(看板)`,postit:`便签视图`},f={title:`创建工单`,titlePlaceholder:`工单标题…`,labelsPlaceholder:`输入以添加标签…`,create:`创建`,creating:`正在创建…`,toast:{created:`工单已创建`,createFailed:`创建工单失败`}},p={title:`选择对比对象…`,count:`({{n}} 个 spec)`,searchPlaceholder:`搜索 spec…`,noMatches:`没有匹配的 spec`,empty:`没有其他可对比的 spec`},m={ariaLabel:`在分析页查看此工单的支出`,turns_one:`{{count}} 轮`,turns_other:`{{count}} 轮`,active:`活跃 {{duration}}`,breakdownItem:`{{n}} {{label}}`,estimatedTooltip:`根据本地价格表估算 — 此提供商不原生报告成本。`,costUnavailableTooltip:`此工单的所有调用均未提供成本遥测数据。`,costPartiallyUnavailableTooltip:`仅显示已知成本小计;部分调用未提供成本遥测数据。`,turnsUnavailableTooltip:`此工单的轮次遥测数据不可用。`,turnsPartiallyUnavailableTooltip:`仅显示已知轮次小计;部分调用未提供轮次遥测数据。`},h={newTicket:`新工单:{{title}}`,newTicketsAdded_one:`已从产品发现新增 {{count}} 个工单`,newTicketsAdded_other:`已从产品发现新增 {{count}} 个工单`},g={priority:e,ticketStatus:t,source:n,fields:r,meta:i,untitled:a,deleteDialog:o,detailModal:s,contractLayer:c,rail:l,contextMenu:u,viewMode:d,createModal:f,comparePicker:p,spendingLine:m,toasts:h};export{p as comparePicker,u as contextMenu,c as contractLayer,f as createModal,g as default,o as deleteDialog,s as detailModal,r as fields,i as meta,e as priority,l as rail,n as source,m as spendingLine,t as ticketStatus,h as toasts,a as untitled,d as viewMode};
@@ -1 +0,0 @@
1
- var e={critical:`クリティカル`,high:`高`,medium:`中`,low:`低`},t={todo:`Todo`,inProgress:`進行中`,done:`完了`,cancelled:`キャンセル`},n={manual:`手動で作成`,productBacklog:`プロダクトバックログから`,proposeSpec:`スペック提案から`,getBacklogSpecs:`バックログスペックから`,freePrompt:`Raw プロンプトから`},r={title:`タイトル`,description:`説明`,status:`ステータス`,priority:`優先度`,labels:`ラベル`,markdownPlaceholder:`Markdown で説明...`,supportsMarkdown:`Markdown 対応`},i={createdAgo:`{{time}}に作成`,updatedAgo:`{{time}}に更新`},a=`無題`,o={title:`チケットを削除`,body:`<strong>#{{id}} {{title}}</strong> を削除してもよろしいですか?この操作は元に戻せません。`},s={toast:{updated:`チケットを更新しました`,updateFailed:`チケットの更新に失敗しました`,deleteFailed:`チケットの削除に失敗しました`},compare:`比較`,compareTooltip:`別のスペックと比較`,doneEditing:`編集を終了`,addDescription:`説明を追加...`,prerequisites:`前提条件`,addLabel:`ラベルを追加`,addLabelPlaceholder:`ラベルを追加...`,effort:`工数`,assignee:`担当者`,continueEditing:`編集を続ける`,ticketFallbackLabel:`チケット #{{id}}`},c={title:`Contract Layer`,populated:`{{n}}/5 件入力済み`},l={moveToRail:`レールに移動`,removeFromRail:`レールから削除`,currentlyOn:`現在 {{rail}} 上にあります`,popoverTitle:`レールに移動`,noRails:`利用可能なレールがありません。`},u={ariaLabel:`チケット操作`,deleteTicket:`チケットを削除`,changeStatus:`ステータスを変更`,statusOptions:`ステータスオプション`,setPriority:`優先度を設定`,priorityOptions:`優先度オプション`},d={list:`リスト表示`,grid:`グリッド表示(カンバン)`,postit:`付箋表示`},f={title:`チケットを作成`,titlePlaceholder:`チケットのタイトル...`,labelsPlaceholder:`入力してラベルを追加...`,create:`作成`,creating:`作成中...`,toast:{created:`チケットを作成しました`,createFailed:`チケットの作成に失敗しました`}},p={title:`比較対象を選択…`,count:`(スペック {{n}} 件)`,searchPlaceholder:`スペックを検索…`,noMatches:`一致するスペックはありません`,empty:`比較できる他のスペックはありません`},m={ariaLabel:`アナリティクスでチケットの支出を表示`,turns_one:`{{count}} ターン`,turns_other:`{{count}} ターン`,active:`アクティブ {{duration}}`,breakdownItem:`{{n}} {{label}}`,estimatedTooltip:`ローカルの料金表からの推定値 — このプロバイダーはコストをネイティブに報告しません。`,costUnavailableTooltip:`このチケットの呼び出しではコストのテレメトリが提供されませんでした。`,costPartiallyUnavailableTooltip:`既知のコスト小計のみです。一部の呼び出しではコストのテレメトリが提供されませんでした。`,turnsUnavailableTooltip:`このチケットではターンのテレメトリを利用できません。`,turnsPartiallyUnavailableTooltip:`既知のターン小計のみです。一部の呼び出しではターンのテレメトリが提供されませんでした。`},h={newTicket:`新しいチケット: {{title}}`,newTicketsAdded_one:`プロダクトディスカバリーから {{count}} 件の新しいチケットを追加しました`,newTicketsAdded_other:`プロダクトディスカバリーから {{count}} 件の新しいチケットを追加しました`},g={priority:e,ticketStatus:t,source:n,fields:r,meta:i,untitled:a,deleteDialog:o,detailModal:s,contractLayer:c,rail:l,contextMenu:u,viewMode:d,createModal:f,comparePicker:p,spendingLine:m,toasts:h};export{p as comparePicker,u as contextMenu,c as contractLayer,f as createModal,g as default,o as deleteDialog,s as detailModal,r as fields,i as meta,e as priority,l as rail,n as source,m as spendingLine,t as ticketStatus,h as toasts,a as untitled,d as viewMode};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{o as r}from"./i18n-B2SaZsf2.js";import{n as i}from"./dist-bVqfYmby.js";import{a}from"./auth-D_5bQv5W.js";import{n as o}from"./useSharedWebSocket-DaPh7QBL.js";import{n as s}from"./api-B2M7CtDw.js";var c=e(t(),1),l=new Map;function u(e,t){return`${e}:${t}`}function d(e){return(e instanceof Error?e.message:e==null?``:String(e)).trim()||`Request failed`}function f(e){if(!e)return;let t=`${e}:`;for(let e of l.keys())e.startsWith(t)&&l.delete(e)}function p({namespace:e,projectId:t,initialValue:n,fetcher:r,pollInterval:i=0}){let a=t?u(t,e):null,[o,s]=(0,c.useState)(()=>a&&l.has(a)?l.get(a):n),[f,p]=(0,c.useState)(()=>!a||!l.has(a)),[m,h]=(0,c.useState)(f),[g,_]=(0,c.useState)(null),v=(0,c.useRef)(r);v.current=r;let y=(0,c.useRef)(n);y.current=n;let b=(0,c.useRef)(a);b.current=a;let x=(0,c.useRef)(0),S=(0,c.useRef)(null),C=(0,c.useCallback)(async(e,t,n)=>{let r=++x.current;S.current?.abort();let i=new AbortController;S.current=i,n&&b.current===e&&(h(!0),_(null));try{let n=await v.current({projectId:t,signal:i.signal});if(i.signal.aborted||r!==x.current)return;l.set(e,n),b.current===e&&(s(n),_(null))}catch(t){if(i.signal.aborted||r!==x.current)return;b.current===e&&_(d(t))}finally{r===x.current&&(S.current===i&&(S.current=null),b.current===e&&(h(!1),p(!1)))}},[]);return(0,c.useEffect)(()=>{if(x.current+=1,S.current?.abort(),S.current=null,_(null),!a||!t){s(y.current),p(!0),h(!1);return}let e=l.has(a);e?(s(l.get(a)),p(!1),h(!1)):(s(y.current),p(!0),h(!0)),C(a,t,!e);let n;return i>0&&(n=setInterval(()=>{C(a,t,!1)},i)),()=>{x.current+=1,S.current?.abort(),S.current=null,n&&clearInterval(n)}},[a,t,i,C]),{data:o,isLoading:m,isFirstLoad:f,error:g,refresh:(0,c.useCallback)(async()=>{!a||!t||await C(a,t,!0)},[a,t,C])}}var m=n();function h(e){return e.providers&&e.providers.length>0?e.providers:[e.provider]}var g=(0,c.createContext)(null),_=`specrails-desktop:activeProjectId`;function v(e){try{e?localStorage.setItem(_,e):localStorage.removeItem(_)}catch{}}function y(){try{return localStorage.getItem(_)}catch{return null}}function b({children:e}){let[t,n]=(0,c.useState)([]),[l,u]=(0,c.useState)(null),[d,p]=(0,c.useState)(!0),[h,_]=(0,c.useState)(!1),[b,x]=(0,c.useState)(new Set),S=(0,c.useRef)(null),C=(0,c.useRef)(new Set),w=(0,c.useCallback)(e=>{v(e),s(e),u(t=>(t!==null&&t!==e&&(S.current&&clearTimeout(S.current),_(!0),S.current=setTimeout(()=>_(!1),400)),e))},[]),{registerHandler:T,unregisterHandler:E}=o();(0,c.useEffect)(()=>{async function e(){try{let e=await fetch(`${a}/api/projects`);if(!e.ok)return;let t=await e.json();n(t.projects),t.setupProjectIds&&t.setupProjectIds.length>0&&x(new Set(t.setupProjectIds))}catch{}finally{p(!1)}}e()},[]);let D=(0,c.useCallback)(e=>{let t=e;if(typeof t.type==`string`){if(t.type===`desktop.projects`){if(!Array.isArray(t.projects))return;let e=t.projects;n(e),u(t=>{let n;if(t&&e.find(e=>e.id===t))n=t;else{let t=y();n=t&&e.find(e=>e.id===t)?t:e.length>0?e[0].id:null}return v(n),s(n),n}),p(!1)}else if(t.type===`desktop.project_added`){let e=t.project;n(t=>t.find(t=>t.id===e.id)?t:[...t,e]),C.current.has(e.id)?C.current.delete(e.id):(i.success(r.t(`nav:projects.added`,{name:e.name})),w(e.id))}else if(t.type===`desktop.project_removed`){let e=t.projectId;i.success(r.t(`nav:projects.removed`)),f(e),n(t=>t.filter(t=>t.id!==e)),u(t=>t===e?(v(null),s(null),null):t)}}},[]);(0,c.useLayoutEffect)(()=>(T(`desktop`,D),()=>E(`desktop`)),[D,T,E]);let O=(0,c.useCallback)(async(e,t,r=[`claude`])=>{try{let i={path:e,providers:r.length>0?r:[`claude`]};t&&(i.name=t);let a=await fetch(`/api/projects`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)});if(!a.ok){let e=await a.json();throw Error(e.error??`HTTP ${a.status}`)}let o=await a.json();return C.current.add(o.project.id),n(e=>e.find(e=>e.id===o.project.id)?e:[...e,o.project]),w(o.project.id),o}catch(e){throw console.error(`[useDesktop] addProject error:`,e),e}},[w]),k=(0,c.useCallback)(async e=>{try{let t=await fetch(`${a}/api/projects/${e}`,{method:`DELETE`});if(!t.ok){let e=await t.json();throw Error(e.error??`HTTP ${t.status}`)}f(e),n(t=>t.filter(t=>t.id!==e)),x(t=>{if(!t.has(e))return t;let n=new Set(t);return n.delete(e),n}),u(t=>t===e?(v(null),s(null),null):t)}catch(e){throw console.error(`[useDesktop] removeProject error:`,e),e}},[]),A=(0,c.useCallback)(e=>{x(t=>new Set([...t,e]))},[]),j=(0,c.useCallback)(e=>{x(t=>{let n=new Set(t);return n.delete(e),n})},[]),M=(0,c.useMemo)(()=>({projects:t,activeProjectId:l,setActiveProjectId:w,addProject:O,removeProject:k,isLoading:d,isSwitchingProject:h,setupProjectIds:b,startSetupWizard:A,completeSetupWizard:j}),[t,l,w,O,k,d,h,b,A,j]);return(0,m.jsx)(g.Provider,{value:M,children:e})}var x={projects:[],activeProjectId:null,setActiveProjectId:()=>{},addProject:async()=>null,removeProject:async()=>{},isLoading:!1,isSwitchingProject:!1,setupProjectIds:new Set,startSetupWizard:()=>{},completeSetupWizard:()=>{}};function S(){return(0,c.useContext)(g)??x}export{p as i,h as n,S as r,b as t};