@cuongtran001/kanna 1.77.0 → 1.79.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 (187) hide show
  1. package/dist/client/assets/{BoardsPage-CDshMr32.js → BoardsPage-CEXKEgVA.js} +1 -1
  2. package/dist/client/assets/{BoardsRoutePage-Bt5yV0UK.js → BoardsRoutePage-gKDIo3_h.js} +1 -1
  3. package/dist/client/assets/ChatPage-BaW_kyEG.js +98 -0
  4. package/dist/client/assets/CronJobRow-bbxM3wcS.js +1 -0
  5. package/dist/client/assets/CronJobsPage-BJwXBejh.js +1 -0
  6. package/dist/client/assets/CronRunMessage-3pMEEUUV.js +1 -0
  7. package/dist/client/assets/FilePreviewSheet-B19g3op3.js +11 -0
  8. package/dist/client/assets/{FlowSurface-Ci5BUZ0U.js → FlowSurface-BKe8zPpA.js} +1 -1
  9. package/dist/client/assets/GenUIBlock-C40i2kA_.js +2 -0
  10. package/dist/client/assets/KannaSocketProvider-B7pK1ou8.js +1 -0
  11. package/dist/client/assets/{LocalProjectsPage-DU_h_M8x.js → LocalProjectsPage-vcuU8c8-.js} +1 -1
  12. package/dist/client/assets/SettingsPage-DDjk7plP.js +13 -0
  13. package/dist/client/assets/{StackBoardsRoutePage-BFAHFlA9.js → StackBoardsRoutePage-9_7pTCna.js} +1 -1
  14. package/dist/client/assets/{ToolCallMessage-iN0F9bXz.js → ToolCallMessage-BGSSdeKk.js} +2 -2
  15. package/dist/client/assets/{VChartSurface-i5pDpMeO.js → VChartSurface-273lUfc1.js} +1 -1
  16. package/dist/client/assets/WebhooksPage-BYiW5rv1.js +1 -0
  17. package/dist/client/assets/WorkflowsPage-D6NwljfG.js +1 -0
  18. package/dist/client/assets/{WorkflowsSection-DVPLXuBj.js → WorkflowsSection-DZd5b0m0.js} +1 -1
  19. package/dist/client/assets/{abnfDiagram-YUKMZFIV-DDFdMTc_.js → abnfDiagram-YUKMZFIV-DqlELEwO.js} +1 -1
  20. package/dist/client/assets/{architectureDiagram-47P4ROYG-DCVMl_eo.js → architectureDiagram-47P4ROYG-B3ZR6jPX.js} +1 -1
  21. package/dist/client/assets/{blockDiagram-E7TT5TSB-Bk5H-yPa.js → blockDiagram-E7TT5TSB-B7lKKOZc.js} +1 -1
  22. package/dist/client/assets/{c4Diagram-CRA5TL53-DRb3rwj0.js → c4Diagram-CRA5TL53-Dkwq6lSm.js} +1 -1
  23. package/dist/client/assets/channel-DAApoL90.js +1 -0
  24. package/dist/client/assets/{chart-renderer-CootI0ca.js → chart-renderer-K1Ao8T-7.js} +1 -1
  25. package/dist/client/assets/{chatSounds-CNFotzn3.js → chatSounds-DxmZCZYX.js} +1 -1
  26. package/dist/client/assets/chevron-left-UWVzAFoI.js +1 -0
  27. package/dist/client/assets/{chunk-2BW5OAIV-CAk9x6ti.js → chunk-2BW5OAIV-QbnmmR6v.js} +1 -1
  28. package/dist/client/assets/{chunk-3YJQHVM4-BD0QjGHE.js → chunk-3YJQHVM4-Cok6S7CM.js} +1 -1
  29. package/dist/client/assets/{chunk-4EA7E6EY-C-3QyPC4.js → chunk-4EA7E6EY-Bt6QpYgZ.js} +1 -1
  30. package/dist/client/assets/{chunk-7TKQ45FW-B7U4miWo.js → chunk-7TKQ45FW-DUX4UImL.js} +1 -1
  31. package/dist/client/assets/{chunk-AW2ZBBNX-C7Z9OZ45.js → chunk-AW2ZBBNX-D-I1K33n.js} +1 -1
  32. package/dist/client/assets/{chunk-DBDB3WZW-BuRZXbw3.js → chunk-DBDB3WZW-DVPUKLc6.js} +1 -1
  33. package/dist/client/assets/{chunk-E2ZNV5FY-CWsTozRZ.js → chunk-E2ZNV5FY-2MK4llTd.js} +1 -1
  34. package/dist/client/assets/{chunk-EU5HNXII-BwtAKWTK.js → chunk-EU5HNXII-BKqwprfc.js} +1 -1
  35. package/dist/client/assets/{chunk-FVRAUYC3-z2KPe-Z4.js → chunk-FVRAUYC3-hOKiJ4tp.js} +1 -1
  36. package/dist/client/assets/{chunk-HJ2JQQFS-DHgNY4oe.js → chunk-HJ2JQQFS-BO5jR7Xq.js} +1 -1
  37. package/dist/client/assets/{chunk-HTAEGDNF-Bi7Wtyof.js → chunk-HTAEGDNF-BS3V_zBh.js} +1 -1
  38. package/dist/client/assets/{chunk-KQW6MTUR-Bg7sW3yW.js → chunk-KQW6MTUR-D07c2A4L.js} +1 -1
  39. package/dist/client/assets/{chunk-NTY3LDVX-Bvl8xsuC.js → chunk-NTY3LDVX-DwtscyP6.js} +1 -1
  40. package/dist/client/assets/{chunk-OB3PAWPO-CCBUsQEH.js → chunk-OB3PAWPO-DERdSR9u.js} +1 -1
  41. package/dist/client/assets/{chunk-SVEVUXB4-Csc8k5gP.js → chunk-SVEVUXB4-pjOcktdf.js} +2 -2
  42. package/dist/client/assets/{chunk-VPRB5NB3-DdvbFm4G.js → chunk-VPRB5NB3-C8Pw0EsB.js} +1 -1
  43. package/dist/client/assets/{chunk-XC4XBNZT-C7Gta1hk.js → chunk-XC4XBNZT-BfEA2zYv.js} +1 -1
  44. package/dist/client/assets/{chunk-Z6ETV63D-CJv8Kmac.js → chunk-Z6ETV63D-WA0exS0E.js} +1 -1
  45. package/dist/client/assets/{classDiagram-v2-K4WV4PDN--EIM3jTT.js → classDiagram-v2-K4WV4PDN-sKSxYURQ.js} +1 -1
  46. package/dist/client/assets/{clipboard.adapter-Dfr_G1eU.js → clipboard.adapter-D-CMr5eN.js} +1 -1
  47. package/dist/client/assets/{columnStyle-CttzKm8w.js → columnStyle-hNmyiyoE.js} +1 -1
  48. package/dist/client/assets/{contextWindow-CP46e9Bl.js → contextWindow-DbPnmXaM.js} +1 -1
  49. package/dist/client/assets/copyFeedbackStore-BUbSmpLj.js +1 -0
  50. package/dist/client/assets/{createScopedStore-B9MoX0Yk.js → createScopedStore-BxIu2bjk.js} +1 -1
  51. package/dist/client/assets/cronJobsStore-C93xPWzB.js +1 -0
  52. package/dist/client/assets/{cynefinDiagram-3GCD6N5R-7ZbxUax_.js → cynefinDiagram-3GCD6N5R-Dbu9EhE_.js} +1 -1
  53. package/dist/client/assets/{dagre-W4DXFKR2--Fgx23t5.js → dagre-W4DXFKR2-FE1fZ0Ng.js} +1 -1
  54. package/dist/client/assets/{diagram-2UJZ2QOL-C_PHVXvF.js → diagram-2UJZ2QOL-qnIJwEfX.js} +1 -1
  55. package/dist/client/assets/{diagram-OVF4WLC6-jlwkZ7-M.js → diagram-OVF4WLC6-BSWujIlb.js} +1 -1
  56. package/dist/client/assets/{diagram-PFPMY2P6-RHK5hLcM.js → diagram-PFPMY2P6-CSfqm_pZ.js} +1 -1
  57. package/dist/client/assets/{diagram-UMYRVEAY-CZRK2Kvd.js → diagram-UMYRVEAY-DwbIMhe4.js} +1 -1
  58. package/dist/client/assets/{diagram-YEKJPTXX-CgUlPJbo.js → diagram-YEKJPTXX-Ce74Jlew.js} +1 -1
  59. package/dist/client/assets/{diagram-ZIFT7M5P-DmBLxbge.js → diagram-ZIFT7M5P-BNNtTe5t.js} +1 -1
  60. package/dist/client/assets/{dist-BdNQvasR.js → dist-CT9j6DWv.js} +1 -1
  61. package/dist/client/assets/{dist-CNz-veBZ.js → dist-CUWB6mPe.js} +1 -1
  62. package/dist/client/assets/{ebnfDiagram-VR2GEFS7-DbuiXobi.js → ebnfDiagram-VR2GEFS7-DLotSgDv.js} +1 -1
  63. package/dist/client/assets/{elk-IJKZMXRS-u6wcmDiA.js → elk-IJKZMXRS-Bn14FyZV.js} +1 -1
  64. package/dist/client/assets/{ellipsis-D_L4kdMs.js → ellipsis-BUjtIlEq.js} +1 -1
  65. package/dist/client/assets/{erDiagram-O2IAPWRE-28xfq-CO.js → erDiagram-O2IAPWRE-C17ESJNu.js} +1 -1
  66. package/dist/client/assets/{flow-kinds-C5Vp2my7.js → flow-kinds-BY-TQ4WU.js} +1 -1
  67. package/dist/client/assets/flowDiagram-OXPTDLAJ-BPucv135.js +1 -0
  68. package/dist/client/assets/{folder-D8QghOii.js → folder-DXShKNrj.js} +1 -1
  69. package/dist/client/assets/{formatDuration-DosmZjMh.js → formatDuration-BPXP2Wrm.js} +1 -1
  70. package/dist/client/assets/{ganttDiagram-R7TSEDQI-BhWFgPkz.js → ganttDiagram-R7TSEDQI-oxsZCme5.js} +1 -1
  71. package/dist/client/assets/genui-BAZbjkCg.js +122 -0
  72. package/dist/client/assets/{gitGraphDiagram-XJZIOB7I-BLqGp4ws.js → gitGraphDiagram-XJZIOB7I-CA_vzYO1.js} +1 -1
  73. package/dist/client/assets/{globe-CJ4vvlxj.js → globe-CQjLuq6p.js} +1 -1
  74. package/dist/client/assets/{host-BwLxDlOk.js → host-CtWFmA_4.js} +1 -1
  75. package/dist/client/assets/index-CjkObrwF.js +26 -0
  76. package/dist/client/assets/{info-CuU6iz_g.js → info-BGpdV4qW.js} +1 -1
  77. package/dist/client/assets/{infoDiagram-5W2HQ5XZ-DMKTA8zc.js → infoDiagram-5W2HQ5XZ-DfSnayOY.js} +1 -1
  78. package/dist/client/assets/{input-DhaKWLZX.js → input-C1abeIY3.js} +1 -1
  79. package/dist/client/assets/{ishikawaDiagram-K3B6WC7H-CwjDouqD.js → ishikawaDiagram-K3B6WC7H-B06v6mMO.js} +1 -1
  80. package/dist/client/assets/{journeyDiagram-COXZFDF6-dYdj66tB.js → journeyDiagram-COXZFDF6-B1THbOJJ.js} +1 -1
  81. package/dist/client/assets/json-Vx0M6RID.js +1 -0
  82. package/dist/client/assets/{kanban-definition-P3RFRI5V-DqYhFf23.js → kanban-definition-P3RFRI5V-rQDyHi5N.js} +1 -1
  83. package/dist/client/assets/lexicalToReact-SqXUukfW.js +25 -0
  84. package/dist/client/assets/{line-Bu0kN2MJ.js → line-BHMm317E.js} +1 -1
  85. package/dist/client/assets/{log-Divm5wOC.js → log-BEHbw2UB.js} +1 -1
  86. package/dist/client/assets/{mermaid-parser.core-sBwmEtVp.js → mermaid-parser.core-DUIvugRg.js} +1 -1
  87. package/dist/client/assets/{mermaid.core-gRh-26W4.js → mermaid.core-BnoEOeO5.js} +3 -3
  88. package/dist/client/assets/{mindmap-definition-LZFPQGKD-B6yVfjHJ.js → mindmap-definition-LZFPQGKD-8f452qRN.js} +1 -1
  89. package/dist/client/assets/{monitor-Dmk-SumR.js → monitor-B2qM5duW.js} +1 -1
  90. package/dist/client/assets/{pegDiagram-BGZESJAR-ClyHpAxi.js → pegDiagram-BGZESJAR-AH1pGK39.js} +1 -1
  91. package/dist/client/assets/{pendingActionsStore-Cnarb0K6.js → pendingActionsStore-DvTHDSQZ.js} +1 -1
  92. package/dist/client/assets/{pieDiagram-CAPJLFHJ-WFVbdtcQ.js → pieDiagram-CAPJLFHJ-DSYWeu-m.js} +1 -1
  93. package/dist/client/assets/{play-BPtOxK-T.js → play-DBu8231U.js} +1 -1
  94. package/dist/client/assets/{plus-B7lCsTZ4.js → plus-Cwjsb2OS.js} +1 -1
  95. package/dist/client/assets/{popover-C_hhpljU.js → popover-DDefFyM7.js} +1 -1
  96. package/dist/client/assets/preload-helper-BLdHbfdN.js +1 -0
  97. package/dist/client/assets/pushClient-BFW1JtiS.js +1 -0
  98. package/dist/client/assets/{quadrantDiagram-GDMTTRAM-r_q6attF.js → quadrantDiagram-GDMTTRAM-D7TR6wt6.js} +1 -1
  99. package/dist/client/assets/{railroadDiagram-SM67HX2B-AOJ6ETrw.js → railroadDiagram-SM67HX2B-B4lLktF8.js} +1 -1
  100. package/dist/client/assets/{react-CoC1HzJe.js → react-PuijDaWl.js} +1 -1
  101. package/dist/client/assets/refresh-cw-DEShJRd4.js +1 -0
  102. package/dist/client/assets/{requirementDiagram-X7JNWC4A-Bh7hodP7.js → requirementDiagram-X7JNWC4A-4Uoq5QN_.js} +1 -1
  103. package/dist/client/assets/runDetached-E5TrC9Dq.js +1 -0
  104. package/dist/client/assets/{sankeyDiagram-UM26HJRW-DYEynJ9v.js → sankeyDiagram-UM26HJRW-CpcV_RWK.js} +1 -1
  105. package/dist/client/assets/{segmented-control-Dzd0_Dmv.js → segmented-control-C5pOVatw.js} +1 -1
  106. package/dist/client/assets/{select-SFy49-QY.js → select-hK1ZEqXS.js} +1 -1
  107. package/dist/client/assets/{sequenceDiagram-ZO4K6R2Y-DvzfWWQD.js → sequenceDiagram-ZO4K6R2Y-DJ-TEMpy.js} +1 -1
  108. package/dist/client/assets/{settings-header-button-D5V2Emxn.js → settings-header-button-ojhGKCCX.js} +1 -1
  109. package/dist/client/assets/{sidebarPendingActions-rcdthbAS.js → sidebarPendingActions-DsV9HY0N.js} +1 -1
  110. package/dist/client/assets/{square-pen-DdoLzzrk.js → square-pen-Dl9SNXtu.js} +1 -1
  111. package/dist/client/assets/{state-mark-Foa-Y6ag.js → state-mark-BL0qf-AG.js} +1 -1
  112. package/dist/client/assets/{stateDiagram-v2-TBUQTH76-CRVWjkEX.js → stateDiagram-v2-TBUQTH76-BI70-G69.js} +1 -1
  113. package/dist/client/assets/{swimlanes-N4OXWK64-CBibkObe.js → swimlanes-N4OXWK64-BlDDp9tW.js} +1 -1
  114. package/dist/client/assets/swimlanesDiagram-K3J5GTZL-DeTCwNIB.js +8 -0
  115. package/dist/client/assets/{terminal-DuZtawSD.js → terminal-C6xTW7D4.js} +1 -1
  116. package/dist/client/assets/{timeline-definition-YOQAKGHF-71bSSqCF.js → timeline-definition-YOQAKGHF-DDs1Z2xv.js} +1 -1
  117. package/dist/client/assets/{timer.adapter-BUc1NRbm.js → timer.adapter-DXvhxbmx.js} +1 -1
  118. package/dist/client/assets/tools-P2WXAkIm.js +1 -0
  119. package/dist/client/assets/{triangle-alert-6-TWBzpz.js → triangle-alert-D-qVgEcP.js} +1 -1
  120. package/dist/client/assets/useAppGlobalState-GeMu_Zgi.js +1 -0
  121. package/dist/client/assets/useKannaState-CdQ23sZK.js +5 -0
  122. package/dist/client/assets/useQuery-DSVLUkAU.js +1 -0
  123. package/dist/client/assets/{useTheme-0KFNcCXu.js → useTheme-DyjL_bkr.js} +1 -1
  124. package/dist/client/assets/{usecaseDiagram-VIAY4XPW-BTgSYvlK.js → usecaseDiagram-VIAY4XPW-SmOkBrbs.js} +1 -1
  125. package/dist/client/assets/{vennDiagram-BLWOH2XV-BiaO_Ibi.js → vennDiagram-BLWOH2XV-D00EywZm.js} +1 -1
  126. package/dist/client/assets/{wardleyDiagram-YMQ3BMBF-DGeNeGLQ.js → wardleyDiagram-YMQ3BMBF-DT8gqDNH.js} +1 -1
  127. package/dist/client/assets/webhookPresentation-6O2Umpp5.js +3 -0
  128. package/dist/client/assets/webhooksStore-UEe6RI_c.js +1 -0
  129. package/dist/client/assets/{xychartDiagram-TAQBALBS-CpByZdBF.js → xychartDiagram-TAQBALBS-BzxKjvXg.js} +1 -1
  130. package/dist/client/index.html +42 -36
  131. package/package.json +3 -3
  132. package/src/server/agent-app-settings-view.ts +23 -0
  133. package/src/server/claude-turn-starter.test.ts +3 -2
  134. package/src/server/claude-turn-starter.ts +1 -0
  135. package/src/server/http-dispatcher.ts +7 -1
  136. package/src/server/remote-mcp/topics.test.ts +1 -0
  137. package/src/server/server.ts +13 -24
  138. package/src/server/test-helpers/webhook-harness.ts +42 -0
  139. package/src/server/webhooks/webhook-auth.ts +34 -0
  140. package/src/server/webhooks/webhook-boot.ts +15 -0
  141. package/src/server/webhooks/webhook-delivery.test.ts +61 -0
  142. package/src/server/webhooks/webhook-delivery.ts +76 -0
  143. package/src/server/webhooks/webhook-http-routes.test.ts +91 -0
  144. package/src/server/webhooks/webhook-http-routes.ts +105 -0
  145. package/src/server/webhooks/webhook-rate-limit.ts +33 -0
  146. package/src/server/webhooks/webhook-registry.ts +201 -0
  147. package/src/server/webhooks/webhook-service.ts +26 -0
  148. package/src/server/webhooks/webhook-store.adapter.test.ts +51 -0
  149. package/src/server/webhooks/webhook-store.adapter.ts +65 -0
  150. package/src/server/ws-router-broadcast.ts +9 -1
  151. package/src/server/ws-router-envelope.ts +12 -0
  152. package/src/server/ws-router-webhooks.ts +64 -0
  153. package/src/server/ws-router.ts +7 -0
  154. package/src/shared/kanna-system-prompt.test.ts +14 -0
  155. package/src/shared/kanna-system-prompt.ts +10 -0
  156. package/src/shared/protocol.ts +7 -0
  157. package/src/shared/remote-mcp/command-catalog.ts +4 -0
  158. package/src/shared/remote-mcp/topics.ts +1 -0
  159. package/src/shared/transcript-types.ts +12 -0
  160. package/src/shared/webhooks/template.test.ts +37 -0
  161. package/src/shared/webhooks/template.ts +63 -0
  162. package/src/shared/webhooks/types.ts +60 -0
  163. package/src/shared/webhooks/validate.test.ts +16 -0
  164. package/src/shared/webhooks/validate.ts +38 -0
  165. package/dist/client/assets/ChatPage-y4FSht9S.js +0 -98
  166. package/dist/client/assets/CronJobRow-C2bb_zyw.js +0 -1
  167. package/dist/client/assets/CronJobsPage-Bk3pYUIF.js +0 -1
  168. package/dist/client/assets/FilePreviewSheet-QX9IjaMc.js +0 -11
  169. package/dist/client/assets/GenUIBlock-CanpXpjp.js +0 -2
  170. package/dist/client/assets/KannaSocketProvider-B_w2o9lp.js +0 -1
  171. package/dist/client/assets/SettingsPage-ztk2-RMb.js +0 -13
  172. package/dist/client/assets/WorkflowsPage-DaqqMqdU.js +0 -1
  173. package/dist/client/assets/channel-UMoGGbLh.js +0 -1
  174. package/dist/client/assets/chevron-left-D_EmAMOd.js +0 -1
  175. package/dist/client/assets/copyFeedbackStore-T_iiMkJf.js +0 -1
  176. package/dist/client/assets/flowDiagram-OXPTDLAJ-BohhOA9-.js +0 -1
  177. package/dist/client/assets/genui-Bk-RFOJ9.js +0 -68
  178. package/dist/client/assets/index-DDnkNfhN.js +0 -26
  179. package/dist/client/assets/lexicalToReact-C0mubAok.js +0 -25
  180. package/dist/client/assets/preload-helper-DjzSQ1t3.js +0 -1
  181. package/dist/client/assets/pushClient-Cu6HxjIW.js +0 -1
  182. package/dist/client/assets/runDetached-2gt4-pgN.js +0 -1
  183. package/dist/client/assets/swimlanesDiagram-K3J5GTZL-Cr216W7P.js +0 -8
  184. package/dist/client/assets/tools-D8TzG2-S.js +0 -1
  185. package/dist/client/assets/useAppGlobalState-wpxCO-JN.js +0 -1
  186. package/dist/client/assets/useKannaState-CTiwKNJL.js +0 -5
  187. package/dist/client/assets/useQuery-Cqr8_M0q.js +0 -1
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-DiVRNtpo.js";import{t as n}from"./jsx-runtime-BdxMnOeJ.js";import{c as r,i,m as a,t as o}from"./log-Divm5wOC.js";import{a as s,c,i as l,n as u,r as d,s as f,t as p}from"./pendingActionsStore-Cnarb0K6.js";import{t as m}from"./ellipsis-D_L4kdMs.js";import{t as h}from"./plus-B7lCsTZ4.js";import{t as g}from"./input-DhaKWLZX.js";import{n as _,r as v,t as y}from"./popover-C_hhpljU.js";import{o as b,r as x,s as S,t as C}from"./columnStyle-CttzKm8w.js";var w=e(t(),1),T=[],E=r()(e=>({templates:T,templatesStatus:`loading`,openMenuId:null,picking:!1,renamingId:null,error:null,setTemplates:t=>e({templates:Array.isArray(t)?t:[],templatesStatus:`ready`}),beginTemplatesLoad:()=>e({templatesStatus:`loading`}),failTemplatesLoad:()=>e({templatesStatus:`failed`}),openMenu:t=>e({openMenuId:t}),closeMenu:()=>e({openMenuId:null}),openPicker:()=>e({picking:!0,error:null}),closePicker:()=>e({picking:!1}),startRename:t=>e({renamingId:t,picking:!1,openMenuId:null}),stopRename:()=>e({renamingId:null}),setError:t=>e({error:t})}));function D(e){return e.templates}var O=e(n(),1),k=[`board.update`,`board.duplicate`,`board.saveAsTemplate`,`board.archive`];function A(e){return l(t=>k.some(n=>t.inFlight[p(n,e)]===!0))}function j({ownerKind:e,ownerId:t,ownerName:n,socket:r,onOpenBoard:c}){let l=x(e,t),f=S(b(l)),m=E(D),g=E(e=>e.picking),_=E(e=>e.renamingId),v=E(e=>e.error),y=E(e=>e.templatesStatus),C=p(`board.create`,l),T=d(C),{openPicker:k,closePicker:A,startRename:j,stopRename:N,setError:P,setTemplates:I}=E.getState();(0,w.useEffect)(()=>r.subscribe({type:`boards`,ownerKind:e,ownerId:t},e=>{S.getState().setBoards(x(e.ownerKind,e.ownerId),e.boards)}),[e,t,r]),(0,w.useEffect)(()=>{let e=!1,t=E.getState();return t.templatesStatus!==`ready`&&t.beginTemplatesLoad(),r.command({type:`board.templates.list`}).then(t=>{e||I(t)},a(t=>{o.error(i,`board.templates.list failed`,t),e||E.getState().failTemplatesLoad()})),()=>{e=!0}},[r,I]);let L=(0,w.useCallback)(async e=>{try{return await r.command(e),P(null),!0}catch(e){return P(e instanceof Error?e.message:`That did not work.`),!1}},[r,P]),R=(0,w.useCallback)(n=>{u(C,async()=>{await L({type:`board.create`,ownerKind:e,ownerId:t,title:n?n.name:`Untitled board`,templateId:n?.id??null})&&A()})},[A,C,e,t,L]),z=(0,w.useCallback)((e,t)=>{N();let n=t.trim();n!==``&&u(p(`board.update`,e),()=>L({type:`board.update`,boardId:e,title:n}))},[L,N]),B=g||f.length===0;return(0,O.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[(0,O.jsxs)(`header`,{className:`flex items-end justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`h1`,{className:`text-lg font-medium leading-tight tracking-[-0.01em] text-foreground`,children:`Boards`}),(0,O.jsxs)(`p`,{className:`truncate text-13 text-muted-foreground`,children:[n,f.length>0?(0,O.jsxs)(`span`,{className:`tabular-nums`,children:[` · `,f.length,` boards`]}):null]})]}),f.length>0?(0,O.jsxs)(s,{size:`sm`,onClick:k,pending:T,children:[(0,O.jsx)(h,{className:`size-3.5`}),`New board`]}):null]}),v?(0,O.jsx)(`p`,{className:`border-b border-border px-6 py-2 text-13 text-destructive-text`,children:v}):null,(0,O.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[B?(0,O.jsx)(F,{templates:m,templatesStatus:y,creating:T,firstRun:f.length===0,onPick:R,onCancel:A}):null,f.length>0?(0,O.jsx)(`ul`,{className:`px-4 py-1`,children:f.map(e=>(0,O.jsx)(M,{board:e,renaming:_===e.id,onOpen:c,onStartRename:j,onRename:z,onCancelRename:N,onCommand:L},e.id))}):null]})]})}function M({board:e,renaming:t,onOpen:n,onStartRename:r,onRename:i,onCancelRename:a,onCommand:o}){let s=A(e.id),c=(0,w.useCallback)(()=>n(e.id),[e.id,n]),l=(0,w.useCallback)(t=>{t.key===`Enter`&&i(e.id,t.currentTarget.value),t.key===`Escape`&&a()},[e.id,a,i]),u=(0,w.useCallback)(t=>i(e.id,t.currentTarget.value),[e.id,i]);return(0,O.jsxs)(`li`,{"aria-busy":s||void 0,className:`group grid grid-cols-[1fr_auto_auto] items-center gap-5 border-b border-border px-3 py-3 last:border-b-0 hover:bg-secondary`,children:[(0,O.jsx)(`div`,{className:`min-w-0`,children:t?(0,O.jsx)(g,{autoFocus:!0,defaultValue:e.title,onKeyDown:l,onBlur:u,className:`h-7 max-w-sm`,"aria-label":`Board name`}):(0,O.jsxs)(`button`,{type:`button`,onClick:c,className:`block w-full text-left`,children:[(0,O.jsx)(`span`,{className:`block truncate text-15 font-semibold tracking-[-0.005em] text-foreground`,children:e.title}),e.description?(0,O.jsx)(`span`,{className:`mt-0.5 block truncate text-13 text-muted-foreground`,children:e.description}):null]})}),(0,O.jsxs)(`div`,{className:`flex items-center gap-4 text-xs text-muted-foreground`,children:[(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.columnCount}),` columns`]}),(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.cardCount}),` cards`]})]}),(0,O.jsx)(N,{board:e,pending:s,onStartRename:r,onCommand:o})]})}function N({board:e,pending:t,onStartRename:n,onCommand:r}){let i=E(t=>t.openMenuId===e.id),{openMenu:a,closeMenu:o}=E.getState(),s=(0,w.useCallback)(t=>{t?a(e.id):o()},[e.id,o,a]),l=(0,w.useCallback)(()=>{o(),n(e.id)},[e.id,o,n]),d=(0,w.useCallback)(()=>{o(),u(p(`board.duplicate`,e.id),()=>r({type:`board.duplicate`,boardId:e.id,title:`${e.title} copy`}))},[e.id,e.title,o,r]),h=(0,w.useCallback)(()=>{o(),u(p(`board.saveAsTemplate`,e.id),()=>r({type:`board.saveAsTemplate`,boardId:e.id,name:e.title}))},[e.id,e.title,o,r]),g=(0,w.useCallback)(()=>{o(),u(p(`board.archive`,e.id),()=>r({type:`board.archive`,boardId:e.id}))},[e.id,o,r]);return(0,O.jsxs)(y,{open:i,onOpenChange:s,children:[(0,O.jsx)(v,{asChild:!0,children:(0,O.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.title}`,disabled:t,"aria-busy":t||void 0,className:c(`rounded-md px-1.5 py-1 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 data-[state=open]:opacity-100`,t&&`opacity-100`),children:t?(0,O.jsx)(f,{className:`size-4`}):(0,O.jsx)(m,{className:`size-4`})})}),(0,O.jsxs)(_,{align:`end`,className:`w-56 p-1`,children:[(0,O.jsx)(P,{onClick:l,children:`Rename`}),(0,O.jsx)(P,{onClick:d,children:`Duplicate structure`}),(0,O.jsx)(P,{onClick:h,children:`Save as template`}),(0,O.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,O.jsx)(P,{onClick:g,tone:`destructive`,children:`Archive`})]})]})}function P({onClick:e,children:t,tone:n}){return(0,O.jsx)(`button`,{type:`button`,onClick:e,className:c(`flex w-full items-center rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-secondary`,n===`destructive`&&`text-destructive-text`),children:t})}function F({templates:e,templatesStatus:t,creating:n,firstRun:r,onPick:i,onCancel:a}){let o=(0,w.useCallback)(()=>i(null),[i]);return(0,O.jsxs)(`div`,{className:`px-6 py-8`,children:[r?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`No boards yet.`}),(0,O.jsx)(`p`,{className:`mt-1 max-w-[58ch] text-sm text-muted-foreground`,children:`A board turns issues into work your agents can pick up. Start from a shape, or import an existing tracker.`})]}):(0,O.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`Start from a shape`}),(0,O.jsxs)(`div`,{className:`mt-4 max-w-xl rounded-lg border border-border`,"aria-busy":n||void 0,children:[e.map(e=>(0,O.jsx)(I,{template:e,disabled:n,onPick:i},e.id)),t===`loading`?(0,O.jsxs)(`p`,{role:`status`,className:`flex items-center gap-2 px-3.5 py-2.5 text-xs text-muted-foreground`,children:[(0,O.jsx)(f,{}),`Loading templates…`]}):null,t===`failed`?(0,O.jsx)(`p`,{className:`px-3.5 py-2.5 text-xs text-muted-foreground`,children:`Couldn't load templates.`}):null,(0,O.jsx)(`button`,{type:`button`,onClick:o,disabled:n,className:`flex w-full items-center border-t border-border px-3.5 py-2.5 text-left hover:bg-secondary disabled:pointer-events-none disabled:opacity-60`,children:(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:`Empty board`}),(0,O.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Name your own columns`})]})})]}),n?(0,O.jsxs)(`p`,{role:`status`,className:`mt-3 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,O.jsx)(f,{}),`Creating board…`]}):null,r?null:(0,O.jsx)(s,{variant:`ghost`,size:`sm`,className:`mt-3`,onClick:a,children:`Cancel`})]})}function I({template:e,disabled:t,onPick:n}){let r=(0,w.useCallback)(()=>n(e),[n,e]),i=e.definition.columns;return(0,O.jsxs)(`button`,{type:`button`,onClick:r,disabled:t,className:`flex w-full items-center gap-3 border-b border-border px-3.5 py-2.5 text-left last:border-b-0 hover:bg-secondary disabled:pointer-events-none disabled:opacity-60`,children:[(0,O.jsxs)(`span`,{className:`min-w-0`,children:[(0,O.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.name}),(0,O.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:i.map(e=>e.title).join(` · `)})]}),(0,O.jsx)(`span`,{"aria-hidden":!0,className:`ml-auto flex shrink-0 gap-1`,children:i.map((t,n)=>(0,O.jsx)(`span`,{className:c(`size-1.5 rounded-full`,t.colorToken?C[t.colorToken]:`bg-muted-icon`)},`${e.id}-${String(n)}`))})]})}export{j as t};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-DiVRNtpo.js";import{t as n}from"./jsx-runtime-BdxMnOeJ.js";import{c as r,i,m as a,t as o}from"./log-BEHbw2UB.js";import{a as s,c,i as l,n as u,r as d,s as f,t as p}from"./pendingActionsStore-DvTHDSQZ.js";import{t as m}from"./ellipsis-BUjtIlEq.js";import{t as h}from"./plus-Cwjsb2OS.js";import{t as g}from"./input-C1abeIY3.js";import{n as _,r as v,t as y}from"./popover-DDefFyM7.js";import{o as b,r as x,s as S,t as C}from"./columnStyle-hNmyiyoE.js";var w=e(t(),1),T=[],E=r()(e=>({templates:T,templatesStatus:`loading`,openMenuId:null,picking:!1,renamingId:null,error:null,setTemplates:t=>e({templates:Array.isArray(t)?t:[],templatesStatus:`ready`}),beginTemplatesLoad:()=>e({templatesStatus:`loading`}),failTemplatesLoad:()=>e({templatesStatus:`failed`}),openMenu:t=>e({openMenuId:t}),closeMenu:()=>e({openMenuId:null}),openPicker:()=>e({picking:!0,error:null}),closePicker:()=>e({picking:!1}),startRename:t=>e({renamingId:t,picking:!1,openMenuId:null}),stopRename:()=>e({renamingId:null}),setError:t=>e({error:t})}));function D(e){return e.templates}var O=e(n(),1),k=[`board.update`,`board.duplicate`,`board.saveAsTemplate`,`board.archive`];function A(e){return l(t=>k.some(n=>t.inFlight[p(n,e)]===!0))}function j({ownerKind:e,ownerId:t,ownerName:n,socket:r,onOpenBoard:c}){let l=x(e,t),f=S(b(l)),m=E(D),g=E(e=>e.picking),_=E(e=>e.renamingId),v=E(e=>e.error),y=E(e=>e.templatesStatus),C=p(`board.create`,l),T=d(C),{openPicker:k,closePicker:A,startRename:j,stopRename:N,setError:P,setTemplates:I}=E.getState();(0,w.useEffect)(()=>r.subscribe({type:`boards`,ownerKind:e,ownerId:t},e=>{S.getState().setBoards(x(e.ownerKind,e.ownerId),e.boards)}),[e,t,r]),(0,w.useEffect)(()=>{let e=!1,t=E.getState();return t.templatesStatus!==`ready`&&t.beginTemplatesLoad(),r.command({type:`board.templates.list`}).then(t=>{e||I(t)},a(t=>{o.error(i,`board.templates.list failed`,t),e||E.getState().failTemplatesLoad()})),()=>{e=!0}},[r,I]);let L=(0,w.useCallback)(async e=>{try{return await r.command(e),P(null),!0}catch(e){return P(e instanceof Error?e.message:`That did not work.`),!1}},[r,P]),R=(0,w.useCallback)(n=>{u(C,async()=>{await L({type:`board.create`,ownerKind:e,ownerId:t,title:n?n.name:`Untitled board`,templateId:n?.id??null})&&A()})},[A,C,e,t,L]),z=(0,w.useCallback)((e,t)=>{N();let n=t.trim();n!==``&&u(p(`board.update`,e),()=>L({type:`board.update`,boardId:e,title:n}))},[L,N]),B=g||f.length===0;return(0,O.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[(0,O.jsxs)(`header`,{className:`flex items-end justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`h1`,{className:`text-lg font-medium leading-tight tracking-[-0.01em] text-foreground`,children:`Boards`}),(0,O.jsxs)(`p`,{className:`truncate text-13 text-muted-foreground`,children:[n,f.length>0?(0,O.jsxs)(`span`,{className:`tabular-nums`,children:[` · `,f.length,` boards`]}):null]})]}),f.length>0?(0,O.jsxs)(s,{size:`sm`,onClick:k,pending:T,children:[(0,O.jsx)(h,{className:`size-3.5`}),`New board`]}):null]}),v?(0,O.jsx)(`p`,{className:`border-b border-border px-6 py-2 text-13 text-destructive-text`,children:v}):null,(0,O.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[B?(0,O.jsx)(F,{templates:m,templatesStatus:y,creating:T,firstRun:f.length===0,onPick:R,onCancel:A}):null,f.length>0?(0,O.jsx)(`ul`,{className:`px-4 py-1`,children:f.map(e=>(0,O.jsx)(M,{board:e,renaming:_===e.id,onOpen:c,onStartRename:j,onRename:z,onCancelRename:N,onCommand:L},e.id))}):null]})]})}function M({board:e,renaming:t,onOpen:n,onStartRename:r,onRename:i,onCancelRename:a,onCommand:o}){let s=A(e.id),c=(0,w.useCallback)(()=>n(e.id),[e.id,n]),l=(0,w.useCallback)(t=>{t.key===`Enter`&&i(e.id,t.currentTarget.value),t.key===`Escape`&&a()},[e.id,a,i]),u=(0,w.useCallback)(t=>i(e.id,t.currentTarget.value),[e.id,i]);return(0,O.jsxs)(`li`,{"aria-busy":s||void 0,className:`group grid grid-cols-[1fr_auto_auto] items-center gap-5 border-b border-border px-3 py-3 last:border-b-0 hover:bg-secondary`,children:[(0,O.jsx)(`div`,{className:`min-w-0`,children:t?(0,O.jsx)(g,{autoFocus:!0,defaultValue:e.title,onKeyDown:l,onBlur:u,className:`h-7 max-w-sm`,"aria-label":`Board name`}):(0,O.jsxs)(`button`,{type:`button`,onClick:c,className:`block w-full text-left`,children:[(0,O.jsx)(`span`,{className:`block truncate text-15 font-semibold tracking-[-0.005em] text-foreground`,children:e.title}),e.description?(0,O.jsx)(`span`,{className:`mt-0.5 block truncate text-13 text-muted-foreground`,children:e.description}):null]})}),(0,O.jsxs)(`div`,{className:`flex items-center gap-4 text-xs text-muted-foreground`,children:[(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.columnCount}),` columns`]}),(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.cardCount}),` cards`]})]}),(0,O.jsx)(N,{board:e,pending:s,onStartRename:r,onCommand:o})]})}function N({board:e,pending:t,onStartRename:n,onCommand:r}){let i=E(t=>t.openMenuId===e.id),{openMenu:a,closeMenu:o}=E.getState(),s=(0,w.useCallback)(t=>{t?a(e.id):o()},[e.id,o,a]),l=(0,w.useCallback)(()=>{o(),n(e.id)},[e.id,o,n]),d=(0,w.useCallback)(()=>{o(),u(p(`board.duplicate`,e.id),()=>r({type:`board.duplicate`,boardId:e.id,title:`${e.title} copy`}))},[e.id,e.title,o,r]),h=(0,w.useCallback)(()=>{o(),u(p(`board.saveAsTemplate`,e.id),()=>r({type:`board.saveAsTemplate`,boardId:e.id,name:e.title}))},[e.id,e.title,o,r]),g=(0,w.useCallback)(()=>{o(),u(p(`board.archive`,e.id),()=>r({type:`board.archive`,boardId:e.id}))},[e.id,o,r]);return(0,O.jsxs)(y,{open:i,onOpenChange:s,children:[(0,O.jsx)(v,{asChild:!0,children:(0,O.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.title}`,disabled:t,"aria-busy":t||void 0,className:c(`rounded-md px-1.5 py-1 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 data-[state=open]:opacity-100`,t&&`opacity-100`),children:t?(0,O.jsx)(f,{className:`size-4`}):(0,O.jsx)(m,{className:`size-4`})})}),(0,O.jsxs)(_,{align:`end`,className:`w-56 p-1`,children:[(0,O.jsx)(P,{onClick:l,children:`Rename`}),(0,O.jsx)(P,{onClick:d,children:`Duplicate structure`}),(0,O.jsx)(P,{onClick:h,children:`Save as template`}),(0,O.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,O.jsx)(P,{onClick:g,tone:`destructive`,children:`Archive`})]})]})}function P({onClick:e,children:t,tone:n}){return(0,O.jsx)(`button`,{type:`button`,onClick:e,className:c(`flex w-full items-center rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-secondary`,n===`destructive`&&`text-destructive-text`),children:t})}function F({templates:e,templatesStatus:t,creating:n,firstRun:r,onPick:i,onCancel:a}){let o=(0,w.useCallback)(()=>i(null),[i]);return(0,O.jsxs)(`div`,{className:`px-6 py-8`,children:[r?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`No boards yet.`}),(0,O.jsx)(`p`,{className:`mt-1 max-w-[58ch] text-sm text-muted-foreground`,children:`A board turns issues into work your agents can pick up. Start from a shape, or import an existing tracker.`})]}):(0,O.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`Start from a shape`}),(0,O.jsxs)(`div`,{className:`mt-4 max-w-xl rounded-lg border border-border`,"aria-busy":n||void 0,children:[e.map(e=>(0,O.jsx)(I,{template:e,disabled:n,onPick:i},e.id)),t===`loading`?(0,O.jsxs)(`p`,{role:`status`,className:`flex items-center gap-2 px-3.5 py-2.5 text-xs text-muted-foreground`,children:[(0,O.jsx)(f,{}),`Loading templates…`]}):null,t===`failed`?(0,O.jsx)(`p`,{className:`px-3.5 py-2.5 text-xs text-muted-foreground`,children:`Couldn't load templates.`}):null,(0,O.jsx)(`button`,{type:`button`,onClick:o,disabled:n,className:`flex w-full items-center border-t border-border px-3.5 py-2.5 text-left hover:bg-secondary disabled:pointer-events-none disabled:opacity-60`,children:(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:`Empty board`}),(0,O.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Name your own columns`})]})})]}),n?(0,O.jsxs)(`p`,{role:`status`,className:`mt-3 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,O.jsx)(f,{}),`Creating board…`]}):null,r?null:(0,O.jsx)(s,{variant:`ghost`,size:`sm`,className:`mt-3`,onClick:a,children:`Cancel`})]})}function I({template:e,disabled:t,onPick:n}){let r=(0,w.useCallback)(()=>n(e),[n,e]),i=e.definition.columns;return(0,O.jsxs)(`button`,{type:`button`,onClick:r,disabled:t,className:`flex w-full items-center gap-3 border-b border-border px-3.5 py-2.5 text-left last:border-b-0 hover:bg-secondary disabled:pointer-events-none disabled:opacity-60`,children:[(0,O.jsxs)(`span`,{className:`min-w-0`,children:[(0,O.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.name}),(0,O.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:i.map(e=>e.title).join(` · `)})]}),(0,O.jsx)(`span`,{"aria-hidden":!0,className:`ml-auto flex shrink-0 gap-1`,children:i.map((t,n)=>(0,O.jsx)(`span`,{className:c(`size-1.5 rounded-full`,t.colorToken?C[t.colorToken]:`bg-muted-icon`)},`${e.id}-${String(n)}`))})]})}export{j as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-DiVRNtpo.js";import{l as n,u as r}from"./chunk-OB3PAWPO-CCBUsQEH.js";import{t as i}from"./jsx-runtime-BdxMnOeJ.js";import{a}from"./formatters-BGORekd-.js";import{t as o}from"./BoardsPage-CDshMr32.js";var s=e(t(),1),c=e(i(),1);function l({projectId:e}){let t=r(),i=n(),l=[...t.sidebarData.starredProjectGroups,...t.sidebarData.projectGroups].find(t=>t.groupKey===e),u=l?a(l.localPath):`Project`,d=(0,s.useCallback)(t=>{i(`/boards/${e}/${t}`)},[i,e]);return(0,c.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,children:(0,c.jsx)(o,{ownerKind:`project`,ownerId:e,ownerName:u,socket:t.socket,onOpenBoard:d})})}export{l as BoardsRoutePage};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-DiVRNtpo.js";import{l as n,u as r}from"./chunk-OB3PAWPO-DERdSR9u.js";import{t as i}from"./jsx-runtime-BdxMnOeJ.js";import{a}from"./formatters-BGORekd-.js";import{t as o}from"./BoardsPage-CEXKEgVA.js";var s=e(t(),1),c=e(i(),1);function l({projectId:e}){let t=r(),i=n(),l=[...t.sidebarData.starredProjectGroups,...t.sidebarData.projectGroups].find(t=>t.groupKey===e),u=l?a(l.localPath):`Project`,d=(0,s.useCallback)(t=>{i(`/boards/${e}/${t}`)},[i,e]);return(0,c.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,children:(0,c.jsx)(o,{ownerKind:`project`,ownerId:e,ownerName:u,socket:t.socket,onOpenBoard:d})})}export{l as BoardsRoutePage};