@cuongtran001/kanna 1.47.0 → 1.49.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 (607) hide show
  1. package/dist/client/assets/{BoardsPage-D4n1jKrz.js → BoardsPage-BOtaZF0m.js} +1 -1
  2. package/dist/client/assets/{BoardsRoutePage-DvnA8sgg.js → BoardsRoutePage-DoCf91-N.js} +1 -1
  3. package/dist/client/assets/ChatPage-CrOOmP_t.js +80 -0
  4. package/dist/client/assets/{CronJobRow-BNg3n_6B.js → CronJobRow-BQW4bgZg.js} +1 -1
  5. package/dist/client/assets/{CronJobsPage-DGPCpgi2.js → CronJobsPage-C0_0VTUG.js} +1 -1
  6. package/dist/client/assets/{KannaSocketProvider-ls8_E7wV.js → KannaSocketProvider-B5_HWZYg.js} +1 -1
  7. package/dist/client/assets/{LocalProjectsPage-DjkIU-CI.js → LocalProjectsPage-hvzXFHHp.js} +1 -1
  8. package/dist/client/assets/SettingsPage-B9tpbMfP.js +9 -0
  9. package/dist/client/assets/{StackBoardsRoutePage-DUlZUZ0f.js → StackBoardsRoutePage-BdS4poSl.js} +1 -1
  10. package/dist/client/assets/WorkflowsPage-CAQ96bcV.js +1 -0
  11. package/dist/client/assets/WorkflowsSection-BRdFFWUJ.js +15 -0
  12. package/dist/client/assets/asJsonValue-BrOlPqq2.js +26 -0
  13. package/dist/client/assets/auth-D8QOHWW5.js +1 -0
  14. package/dist/client/assets/{branding-CxXZpUoc.js → branding-BgH6B3fn.js} +1 -1
  15. package/dist/client/assets/{chatFocusPolicy-DlNQnC-P.js → chatFocusPolicy-tMtPcKXU.js} +1 -1
  16. package/dist/client/assets/{chatSounds-vvLzl8A_.js → chatSounds-Hk_7KMLu.js} +1 -1
  17. package/dist/client/assets/chevron-right-DVCE8Gvu.js +1 -0
  18. package/dist/client/assets/{clipboard.adapter-oOX2ilg4.js → clipboard.adapter-DiLT-EFN.js} +1 -1
  19. package/dist/client/assets/{columnStyle-BFon0FD4.js → columnStyle-CMgxbVBF.js} +1 -1
  20. package/dist/client/assets/editor-icons-Mrtv99DC.js +1 -0
  21. package/dist/client/assets/{ellipsis-DxdBZfX2.js → ellipsis-CoLR-tuu.js} +1 -1
  22. package/dist/client/assets/{external-link-Y8PeBHhL.js → external-link-Dx1B31nO.js} +1 -1
  23. package/dist/client/assets/{folder-iHFIywEf.js → folder-Mkn5ByHW.js} +1 -1
  24. package/dist/client/assets/index-C8uoEwKw.css +1 -0
  25. package/dist/client/assets/index-CF0AX578.js +76 -0
  26. package/dist/client/assets/{input-DKS4Wabz.js → input-DR6CLuwz.js} +1 -1
  27. package/dist/client/assets/{monitor-ZCVc54kx.js → monitor-Cn0XMAx6.js} +1 -1
  28. package/dist/client/assets/plus-BOSxTgGx.js +1 -0
  29. package/dist/client/assets/{popover-Z9RcEVxM.js → popover-rmCsIRKK.js} +1 -1
  30. package/dist/client/assets/{pushClient-Bl0yS8dB.js → pushClient-Wd2fnbA0.js} +1 -1
  31. package/dist/client/assets/react-ClperCkW.js +1511 -0
  32. package/dist/client/assets/{settings-header-button-D1jUydbh.js → settings-header-button-CHL_4EXS.js} +1 -1
  33. package/dist/client/assets/{square-pen-i4HSLucd.js → square-pen-Cj__hWwN.js} +1 -1
  34. package/dist/client/assets/{state-mark-BaDrojX-.js → state-mark-rPxEG42t.js} +1 -1
  35. package/dist/client/assets/{status-pill-7oGKnp-A.js → status-pill-Dj1BuHjl.js} +1 -1
  36. package/dist/client/assets/{statusLabel-CCBzc1NW.js → statusLabel-Cy_DMrrm.js} +1 -1
  37. package/dist/client/assets/{terminal-DN6RVlGE.js → terminal-DiIAV50H.js} +1 -1
  38. package/dist/client/assets/{timer.adapter-D4UNPu_T.js → timer.adapter-axrhq7Dh.js} +1 -1
  39. package/dist/client/assets/useKannaState-CIUji3jC.js +5 -0
  40. package/dist/client/assets/workflowsStore-CmfpTbIE.js +1 -0
  41. package/dist/client/index.html +20 -20
  42. package/package.json +27 -21
  43. package/src/server/__fixtures__/plugins/leaky/index.ts +0 -2
  44. package/src/server/__fixtures__/plugins/throwing/panel.client.tsx +0 -2
  45. package/src/server/__fixtures__/tribe-session-fixture.ts +0 -25
  46. package/src/server/agent-coordinator-types.ts +2 -61
  47. package/src/server/agent-coordinator.ts +23 -243
  48. package/src/server/agent-transcript-parse.ts +2 -9
  49. package/src/server/agent.background-task-sdk.test.ts +0 -6
  50. package/src/server/agent.notification-loop-scenario.test.ts +0 -47
  51. package/src/server/agent.oauth-account-info.test.ts +0 -13
  52. package/src/server/agent.oauth-release.test.ts +0 -18
  53. package/src/server/agent.oauth-rotation.test.ts +3 -63
  54. package/src/server/agent.oauth-token-share-cap.test.ts +0 -31
  55. package/src/server/agent.openrouter-model.test.ts +0 -2
  56. package/src/server/agent.openrouter-watchdog.test.ts +0 -14
  57. package/src/server/agent.pty-rotation.test.ts +0 -21
  58. package/src/server/agent.sdk-workflow-register.test.ts +0 -19
  59. package/src/server/agent.stack-spawn.test.ts +0 -11
  60. package/src/server/agent.test.ts +8 -291
  61. package/src/server/agent.ts +1 -11
  62. package/src/server/agent.turn-duration-metric.test.ts +0 -10
  63. package/src/server/agent.turn-tokens-metric.test.ts +0 -14
  64. package/src/server/analytics.ts +5 -4
  65. package/src/server/app-settings-package-updates.ts +1 -14
  66. package/src/server/app-settings.test.ts +1 -31
  67. package/src/server/app-settings.ts +19 -49
  68. package/src/server/auth-session-store.adapter.ts +15 -17
  69. package/src/server/auth.test.ts +0 -5
  70. package/src/server/auth.ts +3 -12
  71. package/src/server/auto-continue/auth-error-detector.test.ts +4 -3
  72. package/src/server/auto-continue/auth-error-detector.ts +7 -26
  73. package/src/server/auto-continue/compact-loop-wakes.test.ts +0 -9
  74. package/src/server/auto-continue/compact-loop-wakes.ts +0 -83
  75. package/src/server/auto-continue/e2e.test.ts +2 -48
  76. package/src/server/auto-continue/events.ts +0 -70
  77. package/src/server/auto-continue/limit-detector.test.ts +9 -13
  78. package/src/server/auto-continue/limit-detector.ts +32 -41
  79. package/src/server/auto-continue/read-model.test.ts +0 -2
  80. package/src/server/auto-continue/read-model.ts +0 -41
  81. package/src/server/auto-continue/schedule-manager.ts +0 -5
  82. package/src/server/background-task-guard.test.ts +153 -0
  83. package/src/server/background-task-guard.ts +63 -0
  84. package/src/server/background-task-output-registry.test.ts +18 -0
  85. package/src/server/background-task-output-registry.ts +4 -1
  86. package/src/server/board-registry.test.ts +0 -23
  87. package/src/server/board-registry.ts +0 -94
  88. package/src/server/board-start-work.integration.test.ts +0 -19
  89. package/src/server/board-start-work.test.ts +0 -39
  90. package/src/server/board-start-work.ts +0 -60
  91. package/src/server/board-store.adapter.test.ts +0 -44
  92. package/src/server/board-store.adapter.ts +11 -95
  93. package/src/server/board-store.ts +1 -125
  94. package/src/server/board-sync-reconcile.test.ts +0 -10
  95. package/src/server/board-sync-reconcile.ts +0 -0
  96. package/src/server/board-sync.test.ts +0 -37
  97. package/src/server/board-sync.ts +1 -79
  98. package/src/server/board-templates.ts +0 -13
  99. package/src/server/board-worktree-cleanup.test.ts +0 -6
  100. package/src/server/board-worktree-cleanup.ts +0 -22
  101. package/src/server/canonical-args.ts +3 -6
  102. package/src/server/chat-op-log.ts +0 -11
  103. package/src/server/chat-ops-diff.test.ts +0 -7
  104. package/src/server/chat-ops-diff.ts +0 -15
  105. package/src/server/chat-ops-parity.test.ts +0 -14
  106. package/src/server/claude-autocontinue-commands.test.ts +1 -37
  107. package/src/server/claude-autocontinue-commands.ts +0 -84
  108. package/src/server/claude-cancel-handler.test.ts +3 -78
  109. package/src/server/claude-cancel-handler.ts +1 -146
  110. package/src/server/claude-chat-management.test.ts +2 -30
  111. package/src/server/claude-chat-management.ts +2 -69
  112. package/src/server/claude-context-commands.test.ts +0 -4
  113. package/src/server/claude-context-commands.ts +0 -38
  114. package/src/server/claude-harness-stream.test.ts +0 -5
  115. package/src/server/claude-harness-stream.ts +1 -16
  116. package/src/server/claude-loop-commands.test.ts +2 -60
  117. package/src/server/claude-loop-commands.ts +2 -219
  118. package/src/server/claude-message-normalizer.test.ts +0 -14
  119. package/src/server/claude-message-normalizer.ts +38 -115
  120. package/src/server/claude-plugin-update-applier.adapter.ts +1 -14
  121. package/src/server/claude-plugin-update-checker.adapter.test.ts +0 -2
  122. package/src/server/claude-plugin-update-checker.adapter.ts +5 -31
  123. package/src/server/claude-prompt-helpers.test.ts +75 -51
  124. package/src/server/claude-prompt-helpers.ts +13 -81
  125. package/src/server/claude-pty/auth.ts +0 -15
  126. package/src/server/claude-pty/claude-session-registry.adapter.ts +0 -13
  127. package/src/server/claude-pty/driver.test.ts +4 -52
  128. package/src/server/claude-pty/driver.ts +22 -300
  129. package/src/server/claude-pty/env.test.ts +0 -4
  130. package/src/server/claude-pty/env.ts +0 -16
  131. package/src/server/claude-pty/jsonl-path.adapter.ts +0 -7
  132. package/src/server/claude-pty/jsonl-path.test.ts +1 -3
  133. package/src/server/claude-pty/jsonl-to-event.test.ts +0 -74
  134. package/src/server/claude-pty/jsonl-to-event.ts +3 -115
  135. package/src/server/claude-pty/parity-matrix.test.ts +0 -17
  136. package/src/server/claude-pty/pid-registry.adapter.ts +7 -52
  137. package/src/server/claude-pty/pid-registry.test.ts +1 -13
  138. package/src/server/claude-pty/pty-instance-registry.test.ts +0 -3
  139. package/src/server/claude-pty/pty-instance-registry.ts +0 -11
  140. package/src/server/claude-pty/pty-process.adapter.ts +4 -10
  141. package/src/server/claude-pty/sandbox/detect.adapter.ts +0 -1
  142. package/src/server/claude-pty/sandbox/platform.test.ts +0 -2
  143. package/src/server/claude-pty/sandbox/platform.ts +0 -9
  144. package/src/server/claude-pty/sandbox/preflight.test.ts +0 -1
  145. package/src/server/claude-pty/sandbox/profile-linux.adapter.ts +0 -17
  146. package/src/server/claude-pty/sandbox/profile-linux.test.ts +0 -3
  147. package/src/server/claude-pty/sandbox/profile-macos.adapter.ts +1 -14
  148. package/src/server/claude-pty/sandbox/profile-macos.test.ts +1 -10
  149. package/src/server/claude-pty/settings-writer.adapter.ts +0 -4
  150. package/src/server/claude-pty/smoke-test.test.ts +2 -5
  151. package/src/server/claude-pty/smoke-test.ts +4 -19
  152. package/src/server/claude-pty/tui-control.test.ts +5 -35
  153. package/src/server/claude-pty/tui-control.ts +0 -59
  154. package/src/server/claude-pty/tui-source.adapter.test.ts +0 -39
  155. package/src/server/claude-pty/tui-source.adapter.ts +0 -56
  156. package/src/server/claude-sdk-queue.test.ts +0 -19
  157. package/src/server/claude-sdk-queue.ts +2 -12
  158. package/src/server/claude-send-command.test.ts +152 -56
  159. package/src/server/claude-send-command.ts +35 -173
  160. package/src/server/claude-session-config-helpers.test.ts +0 -19
  161. package/src/server/claude-session-config-helpers.ts +0 -42
  162. package/src/server/claude-session-config.test.ts +0 -19
  163. package/src/server/claude-session-config.ts +13 -57
  164. package/src/server/claude-session-error-handler.test.ts +5 -34
  165. package/src/server/claude-session-error-handler.ts +2 -122
  166. package/src/server/claude-session-importer.adapter.ts +5 -23
  167. package/src/server/claude-session-importer.test.ts +0 -1
  168. package/src/server/claude-session-lifecycle.test.ts +5 -70
  169. package/src/server/claude-session-lifecycle.ts +0 -96
  170. package/src/server/claude-session-mapper.ts +0 -5
  171. package/src/server/claude-session-parser.adapter.ts +3 -6
  172. package/src/server/claude-session-parser.test.ts +1 -1
  173. package/src/server/claude-session-runner.test.ts +51 -110
  174. package/src/server/claude-session-runner.ts +12 -241
  175. package/src/server/claude-session-scanner.adapter.ts +0 -4
  176. package/src/server/claude-session-spawner.test.ts +1 -19
  177. package/src/server/claude-session-spawner.ts +3 -97
  178. package/src/server/claude-session-start.test.ts +0 -38
  179. package/src/server/claude-session-start.ts +2 -60
  180. package/src/server/claude-session-state-queries.test.ts +9 -61
  181. package/src/server/claude-session-state-queries.ts +2 -175
  182. package/src/server/claude-session-state.test.ts +72 -73
  183. package/src/server/claude-session-state.ts +47 -242
  184. package/src/server/claude-session-types.ts +5 -11
  185. package/src/server/claude-slash-commands.test.ts +0 -13
  186. package/src/server/claude-slash-commands.ts +0 -34
  187. package/src/server/claude-spawn-helpers.test.ts +3 -15
  188. package/src/server/claude-spawn-helpers.ts +10 -67
  189. package/src/server/claude-steer-log.test.ts +0 -19
  190. package/src/server/claude-steer-log.ts +3 -6
  191. package/src/server/claude-subagent-tool-response.test.ts +0 -28
  192. package/src/server/claude-subagent-tool-response.ts +5 -56
  193. package/src/server/claude-subagent-wiring.test.ts +1 -36
  194. package/src/server/claude-subagent-wiring.ts +6 -97
  195. package/src/server/claude-tool-respond.test.ts +18 -34
  196. package/src/server/claude-tool-respond.ts +4 -47
  197. package/src/server/claude-turn-runner.integration.test.ts +0 -8
  198. package/src/server/claude-turn-runner.test.ts +2 -16
  199. package/src/server/claude-turn-runner.ts +7 -92
  200. package/src/server/claude-turn-starter-types.ts +96 -0
  201. package/src/server/claude-turn-starter.test.ts +1 -40
  202. package/src/server/claude-turn-starter.ts +26 -232
  203. package/src/server/claude-usage-math.test.ts +0 -13
  204. package/src/server/claude-usage-math.ts +1 -46
  205. package/src/server/cli-runtime.ts +0 -15
  206. package/src/server/cli-supervisor.adapter.ts +0 -9
  207. package/src/server/cloudflare-tunnel/read-model.test.ts +0 -2
  208. package/src/server/cloudflare-tunnel/read-model.ts +0 -1
  209. package/src/server/codex-app-server-decode.ts +29 -0
  210. package/src/server/codex-app-server-protocol.ts +16 -29
  211. package/src/server/codex-app-server.test.ts +3 -9
  212. package/src/server/codex-app-server.ts +36 -55
  213. package/src/server/codex-plugin-update-applier.adapter.ts +1 -13
  214. package/src/server/codex-plugin-update-checker.adapter.test.ts +1 -12
  215. package/src/server/codex-plugin-update-checker.adapter.ts +5 -19
  216. package/src/server/codex-rollout-to-thread-item.ts +7 -6
  217. package/src/server/codex-tool-payloads.ts +81 -0
  218. package/src/server/codex-transcript-translator.test.ts +26 -5
  219. package/src/server/codex-transcript-translator.ts +52 -94
  220. package/src/server/cron/commands.test.ts +0 -5
  221. package/src/server/cron/commands.ts +1 -53
  222. package/src/server/cron/compact.test.ts +0 -14
  223. package/src/server/cron/compact.ts +0 -0
  224. package/src/server/cron/fire.test.ts +18 -26
  225. package/src/server/cron/fire.ts +2 -62
  226. package/src/server/cron/next-fire.test.ts +4 -18
  227. package/src/server/cron/next-fire.ts +0 -27
  228. package/src/server/cron/preview.ts +0 -13
  229. package/src/server/cron/read-model.test.ts +0 -2
  230. package/src/server/cron/read-model.ts +0 -23
  231. package/src/server/cron/repair.test.ts +0 -15
  232. package/src/server/cron/repair.ts +0 -38
  233. package/src/server/cron/scheduler.test.ts +0 -18
  234. package/src/server/cron/scheduler.ts +0 -0
  235. package/src/server/cron/skip-coalescer.test.ts +0 -18
  236. package/src/server/cron/skip-coalescer.ts +0 -59
  237. package/src/server/design/motion-tokens.test.ts +126 -0
  238. package/src/server/design/prePaint.test.ts +5 -28
  239. package/src/server/design/px-text-ratchet.test.ts +0 -8
  240. package/src/server/design/raw-ink-guard.test.ts +0 -18
  241. package/src/server/design/tone-pairings.test.ts +0 -6
  242. package/src/server/design/typography-css.test.ts +0 -13
  243. package/src/server/diff-store-branch-ops.adapter.test.ts +0 -6
  244. package/src/server/diff-store-commit-ops.adapter.test.ts +0 -2
  245. package/src/server/diff-store-git-branch.adapter.ts +0 -41
  246. package/src/server/diff-store.test.ts +0 -7
  247. package/src/server/diff-store.ts +0 -16
  248. package/src/server/discovery.adapter.ts +4 -5
  249. package/src/server/event-store-apply.test.ts +0 -21
  250. package/src/server/event-store-apply.ts +0 -15
  251. package/src/server/event-store-byte-budget.test.ts +0 -6
  252. package/src/server/event-store-chat-lifecycle.test.ts +1 -29
  253. package/src/server/event-store-chat-lifecycle.ts +0 -62
  254. package/src/server/event-store-helpers.test.ts +0 -32
  255. package/src/server/event-store-helpers.ts +2 -83
  256. package/src/server/event-store-init.ts +0 -29
  257. package/src/server/event-store-messages.adapter.test.ts +8 -89
  258. package/src/server/event-store-messages.adapter.ts +0 -188
  259. package/src/server/event-store-peripheral-events.adapter.test.ts +0 -15
  260. package/src/server/event-store-peripheral-events.adapter.ts +0 -14
  261. package/src/server/event-store-snapshot.test.ts +0 -58
  262. package/src/server/event-store-snapshot.ts +2 -109
  263. package/src/server/event-store-subagent.test.ts +0 -40
  264. package/src/server/event-store-subagent.ts +0 -32
  265. package/src/server/event-store-tail-cache.test.ts +1 -34
  266. package/src/server/event-store-tool-requests.test.ts +0 -24
  267. package/src/server/event-store-tool-requests.ts +0 -34
  268. package/src/server/event-store-transcript-write.adapter.ts +0 -35
  269. package/src/server/event-store-write-ops.test.ts +0 -44
  270. package/src/server/event-store-write-ops.ts +0 -85
  271. package/src/server/event-store.stack-methods.test.ts +0 -12
  272. package/src/server/event-store.test.ts +1 -48
  273. package/src/server/event-store.ts +0 -27
  274. package/src/server/events.ts +4 -17
  275. package/src/server/external-open.ts +0 -6
  276. package/src/server/followed-session-registry.test.ts +3 -3
  277. package/src/server/followed-session-registry.ts +0 -1
  278. package/src/server/generate-commit-message.ts +4 -5
  279. package/src/server/generate-title.ts +3 -4
  280. package/src/server/github-cli.adapter.ts +0 -19
  281. package/src/server/github-issues.adapter.test.ts +0 -14
  282. package/src/server/github-issues.adapter.ts +13 -47
  283. package/src/server/gitleaks-hook.test.ts +0 -1
  284. package/src/server/harness-types.test.ts +0 -6
  285. package/src/server/harness-types.ts +0 -10
  286. package/src/server/history-primer.ts +1 -22
  287. package/src/server/http-dispatcher.ts +0 -21
  288. package/src/server/http-server.adapter.test.ts +0 -6
  289. package/src/server/http-server.adapter.ts +0 -9
  290. package/src/server/http-static.ts +0 -6
  291. package/src/server/import-subagent-drill.e2e.test.ts +0 -22
  292. package/src/server/imported-subagents-dir.test.ts +0 -5
  293. package/src/server/imported-subagents-dir.ts +0 -5
  294. package/src/server/input-validation.ts +0 -20
  295. package/src/server/json-boundary.ts +54 -0
  296. package/src/server/kanna-mcp-boards.test.ts +3 -11
  297. package/src/server/kanna-mcp-boards.ts +6 -36
  298. package/src/server/kanna-mcp-http.test.ts +0 -3
  299. package/src/server/kanna-mcp-http.ts +19 -62
  300. package/src/server/kanna-mcp-plugins.test.ts +4 -9
  301. package/src/server/kanna-mcp-plugins.ts +7 -65
  302. package/src/server/kanna-mcp-tool.ts +5 -8
  303. package/src/server/kanna-mcp-tools/ask-user-question.test.ts +0 -11
  304. package/src/server/kanna-mcp-tools/ask-user-question.ts +0 -6
  305. package/src/server/kanna-mcp-tools/bash.adapter.ts +1 -1
  306. package/src/server/kanna-mcp-tools/bash.test.ts +0 -3
  307. package/src/server/kanna-mcp-tools/delegate-subagent.test.ts +0 -6
  308. package/src/server/kanna-mcp-tools/delegate-subagent.ts +0 -37
  309. package/src/server/kanna-mcp-tools/edit.adapter.ts +0 -3
  310. package/src/server/kanna-mcp-tools/edit.test.ts +0 -1
  311. package/src/server/kanna-mcp-tools/glob.adapter.ts +0 -1
  312. package/src/server/kanna-mcp-tools/glob.test.ts +0 -1
  313. package/src/server/kanna-mcp-tools/grep.adapter.ts +1 -3
  314. package/src/server/kanna-mcp-tools/grep.test.ts +0 -2
  315. package/src/server/kanna-mcp-tools/tool-callback-shim.ts +5 -8
  316. package/src/server/kanna-mcp-tools/webfetch.ts +0 -3
  317. package/src/server/kanna-mcp.test.ts +0 -26
  318. package/src/server/kanna-mcp.ts +12 -172
  319. package/src/server/keybindings.ts +15 -13
  320. package/src/server/llm-provider.ts +9 -9
  321. package/src/server/local-catalog-io.adapter.test.ts +25 -18
  322. package/src/server/local-catalog-io.adapter.ts +20 -57
  323. package/src/server/local-catalog.test.ts +81 -8
  324. package/src/server/local-catalog.ts +46 -23
  325. package/src/server/loop-template-io.adapter.test.ts +0 -2
  326. package/src/server/loop-template-io.adapter.ts +0 -51
  327. package/src/server/loop-template.test.ts +0 -47
  328. package/src/server/loop-template.ts +2 -178
  329. package/src/server/loop-tracking-io.adapter.ts +0 -12
  330. package/src/server/loop-tracking-registry.ts +0 -21
  331. package/src/server/loop-tracking-sync.ts +0 -14
  332. package/src/server/loop-verify-cache.test.ts +0 -3
  333. package/src/server/loop-verify-cache.ts +0 -0
  334. package/src/server/loop-verify-io.adapter.test.ts +0 -7
  335. package/src/server/loop-verify-io.adapter.ts +3 -121
  336. package/src/server/loop-wake-recovery.test.ts +0 -30
  337. package/src/server/loop-wake-recovery.ts +0 -103
  338. package/src/server/mcp-oauth.adapter.ts +0 -19
  339. package/src/server/mcp-oauth.test.ts +2 -34
  340. package/src/server/mcp-validator.test.ts +0 -4
  341. package/src/server/mcp-validator.ts +4 -10
  342. package/src/server/mcp-zod-compat.adapter.ts +20 -0
  343. package/src/server/mermaid-guard.test.ts +0 -10
  344. package/src/server/mermaid-guard.ts +0 -23
  345. package/src/server/mermaid-parse.adapter.test.ts +0 -11
  346. package/src/server/mermaid-parse.adapter.ts +6 -32
  347. package/src/server/model-escalation.ts +0 -16
  348. package/src/server/oauth-errors.ts +0 -11
  349. package/src/server/oauth-pool/oauth-token-pool.test.ts +6 -32
  350. package/src/server/oauth-pool/oauth-token-pool.ts +0 -77
  351. package/src/server/observability.test.ts +1 -16
  352. package/src/server/observability.ts +0 -93
  353. package/src/server/openrouter-models-io.adapter.ts +2 -1
  354. package/src/server/openrouter-models.ts +10 -11
  355. package/src/server/otel-config.ts +0 -14
  356. package/src/server/otel.adapter.test.ts +0 -7
  357. package/src/server/otel.adapter.ts +0 -47
  358. package/src/server/package-inventory-io.adapter.test.ts +0 -1
  359. package/src/server/package-inventory-io.adapter.ts +18 -19
  360. package/src/server/package-update-manager.test.ts +4 -28
  361. package/src/server/package-update-manager.ts +2 -13
  362. package/src/server/paths-route.test.ts +0 -8
  363. package/src/server/pending-tool-slot.test.ts +9 -9
  364. package/src/server/pending-tool-slot.ts +3 -34
  365. package/src/server/permission-gate.test.ts +3 -8
  366. package/src/server/permission-gate.ts +6 -33
  367. package/src/server/plugin-cli-dispatch.test.ts +0 -6
  368. package/src/server/plugin-cli-dispatch.ts +0 -41
  369. package/src/server/plugin-cli.ts +0 -12
  370. package/src/server/plugin-http-routes.ts +5 -39
  371. package/src/server/plugin-system-acceptance.test.tsx +2 -86
  372. package/src/server/plugins/installed-plugin-store.test.ts +1 -10
  373. package/src/server/plugins/installed-plugin-store.ts +5 -19
  374. package/src/server/plugins/plugin-build.adapter.test.ts +0 -13
  375. package/src/server/plugins/plugin-build.adapter.ts +3 -71
  376. package/src/server/plugins/plugin-child-entry.adapter.ts +8 -42
  377. package/src/server/plugins/plugin-rpc-protocol.ts +10 -28
  378. package/src/server/plugins/plugin-scaffold.adapter.ts +0 -12
  379. package/src/server/plugins/plugin-scaffold.ts +0 -27
  380. package/src/server/plugins/plugin-service-host.ts +0 -29
  381. package/src/server/plugins/plugin-service-io.adapter.ts +0 -33
  382. package/src/server/plugins/plugin-service.ts +5 -52
  383. package/src/server/plugins/plugin-settings.ts +0 -43
  384. package/src/server/proactive-compact.test.ts +0 -27
  385. package/src/server/proactive-compact.ts +0 -31
  386. package/src/server/process-utils.adapter.ts +4 -10
  387. package/src/server/project-paths.test.ts +1 -1
  388. package/src/server/projectFileRelocation.adapter.ts +0 -9
  389. package/src/server/provider-catalog.test.ts +0 -10
  390. package/src/server/provider-catalog.ts +0 -18
  391. package/src/server/push/push-manager.test.ts +5 -10
  392. package/src/server/push/push-manager.ts +0 -13
  393. package/src/server/push/vapid.adapter.ts +1 -21
  394. package/src/server/push/vapid.test.ts +3 -4
  395. package/src/server/queued-message-recovery.ts +0 -27
  396. package/src/server/quick-response.test.ts +0 -5
  397. package/src/server/quick-response.ts +30 -49
  398. package/src/server/read-models.test.ts +4 -7
  399. package/src/server/read-models.ts +0 -23
  400. package/src/server/server-io.adapter.ts +2 -2
  401. package/src/server/server.test.ts +0 -17
  402. package/src/server/server.ts +2 -45
  403. package/src/server/session-import-e2e.test.ts +0 -3
  404. package/src/server/skill-invocation.test.ts +123 -0
  405. package/src/server/skill-invocation.ts +69 -0
  406. package/src/server/skill-update-applier.adapter.test.ts +0 -2
  407. package/src/server/skill-update-applier.adapter.ts +5 -23
  408. package/src/server/skill-update-checker.adapter.test.ts +3 -16
  409. package/src/server/skill-update-checker.adapter.ts +16 -42
  410. package/src/server/static-serve.test.ts +0 -5
  411. package/src/server/storage/backend.ts +0 -8
  412. package/src/server/storage/fs-storage.adapter.ts +0 -1
  413. package/src/server/storage/test-helpers.ts +0 -13
  414. package/src/server/structured-doc-io.adapter.ts +0 -8
  415. package/src/server/subagent-entry-cap.adapter.ts +1 -21
  416. package/src/server/subagent-orchestrator.test.ts +3 -113
  417. package/src/server/subagent-orchestrator.ts +0 -295
  418. package/src/server/subagent-pausable-timeout.test.ts +0 -16
  419. package/src/server/subagent-provider-run.test.ts +3 -42
  420. package/src/server/subagent-provider-run.ts +4 -105
  421. package/src/server/subagent-transcript-io.adapter.ts +0 -6
  422. package/src/server/subagent-transcript-registry.test.ts +0 -2
  423. package/src/server/subagent-transcript-registry.ts +0 -9
  424. package/src/server/terminal-manager.test.ts +0 -13
  425. package/src/server/terminal-manager.ts +0 -11
  426. package/src/server/terminal-pid-registry.adapter.ts +6 -12
  427. package/src/server/terminal-pid-registry.test.ts +1 -5
  428. package/src/server/test-helpers/async-event-queue.ts +0 -1
  429. package/src/server/test-helpers/loop-command-fakes.ts +0 -25
  430. package/src/server/test-helpers/metric-recorder.ts +0 -18
  431. package/src/server/test-helpers/wait-for.ts +0 -1
  432. package/src/server/test-helpers/worktree-repo.ts +0 -3
  433. package/src/server/tool-callback.test.ts +3 -33
  434. package/src/server/tool-callback.ts +2 -61
  435. package/src/server/update-manager.ts +2 -1
  436. package/src/server/update-strategy.ts +0 -2
  437. package/src/server/uploads.test.ts +0 -6
  438. package/src/server/watched-registry.ts +0 -15
  439. package/src/server/workflow-agent-transcript-io.adapter.test.ts +0 -2
  440. package/src/server/workflow-agent-transcript-io.adapter.ts +0 -7
  441. package/src/server/workflow-registry.test.ts +4 -17
  442. package/src/server/workflow-registry.ts +3 -80
  443. package/src/server/workflow-watch-io.adapter.test.ts +8 -20
  444. package/src/server/workflow-watch-io.adapter.ts +11 -72
  445. package/src/server/worktree-store.adapter.ts +0 -15
  446. package/src/server/worktree-store.test.ts +0 -1
  447. package/src/server/ws-router-agent-ctrl.test.ts +0 -15
  448. package/src/server/ws-router-agent-ctrl.ts +0 -32
  449. package/src/server/ws-router-boards.test.ts +2 -30
  450. package/src/server/ws-router-boards.ts +0 -53
  451. package/src/server/ws-router-broadcast.ts +0 -54
  452. package/src/server/ws-router-chat.test.ts +0 -48
  453. package/src/server/ws-router-chat.ts +3 -53
  454. package/src/server/ws-router-defaults.test.ts +4 -26
  455. package/src/server/ws-router-defaults.ts +26 -36
  456. package/src/server/ws-router-diff.test.ts +0 -25
  457. package/src/server/ws-router-diff.ts +0 -38
  458. package/src/server/ws-router-envelope.test.ts +0 -6
  459. package/src/server/ws-router-envelope.ts +1 -52
  460. package/src/server/ws-router-misc.test.ts +0 -23
  461. package/src/server/ws-router-misc.ts +2 -63
  462. package/src/server/ws-router-observability.test.ts +0 -20
  463. package/src/server/ws-router-observability.ts +0 -33
  464. package/src/server/ws-router-project.test.ts +1 -45
  465. package/src/server/ws-router-project.ts +3 -77
  466. package/src/server/ws-router-push.test.ts +0 -27
  467. package/src/server/ws-router-push.ts +0 -30
  468. package/src/server/ws-router-settings.test.ts +0 -10
  469. package/src/server/ws-router-settings.ts +4 -47
  470. package/src/server/ws-router-skills.test.ts +0 -2
  471. package/src/server/ws-router-skills.ts +7 -20
  472. package/src/server/ws-router-utils.ts +2 -20
  473. package/src/server/ws-router.stack.test.ts +0 -1
  474. package/src/server/ws-router.test.ts +1 -46
  475. package/src/server/ws-router.ts +3 -15
  476. package/src/server/wsl.adapter.ts +0 -21
  477. package/src/shared/app-settings-types.ts +3 -54
  478. package/src/shared/boards/cardSchema.test.ts +0 -8
  479. package/src/shared/boards/cardSchema.ts +0 -23
  480. package/src/shared/boards/decode.test.ts +2 -29
  481. package/src/shared/boards/decode.ts +34 -110
  482. package/src/shared/boards/dependencies.test.ts +0 -6
  483. package/src/shared/boards/dependencies.ts +0 -76
  484. package/src/shared/boards/rank.test.ts +0 -13
  485. package/src/shared/boards/rank.ts +4 -77
  486. package/src/shared/boards/repo-slug.ts +0 -8
  487. package/src/shared/boards/start-work.test.ts +0 -23
  488. package/src/shared/boards/start-work.ts +0 -81
  489. package/src/shared/boards/sync-types.ts +0 -58
  490. package/src/shared/boards/types.ts +0 -147
  491. package/src/shared/boards/worktree-cleanup.test.ts +0 -1
  492. package/src/shared/boards/worktree-cleanup.ts +0 -41
  493. package/src/shared/branding.ts +0 -1
  494. package/src/shared/builtin-commands.ts +0 -31
  495. package/src/shared/chat-ops.ts +0 -14
  496. package/src/shared/claude-session-id.test.ts +0 -1
  497. package/src/shared/claude-session-id.ts +0 -3
  498. package/src/shared/codex-error-classification.ts +0 -12
  499. package/src/shared/core-types.ts +0 -6
  500. package/src/shared/cron/humanize.test.ts +0 -2
  501. package/src/shared/cron/humanize.ts +0 -17
  502. package/src/shared/cron/parse-command.test.ts +0 -7
  503. package/src/shared/cron/parse-command.ts +0 -61
  504. package/src/shared/cron/parse-schedule.test.ts +0 -1
  505. package/src/shared/cron/parse-schedule.ts +0 -32
  506. package/src/shared/cron/repair-report.test.ts +0 -3
  507. package/src/shared/cron/repair-report.ts +0 -16
  508. package/src/shared/cron/types.ts +0 -98
  509. package/src/shared/design/tone-pairings.ts +0 -19
  510. package/src/shared/design/typography.test.ts +0 -7
  511. package/src/shared/design/typography.ts +8 -22
  512. package/src/shared/dynamic-module.ts +4 -0
  513. package/src/shared/errors.test.ts +56 -0
  514. package/src/shared/errors.ts +6 -10
  515. package/src/shared/git-diff-types.ts +4 -7
  516. package/src/shared/json.test.ts +53 -0
  517. package/src/shared/json.ts +23 -0
  518. package/src/shared/kanna-system-prompt.test.ts +75 -25
  519. package/src/shared/kanna-system-prompt.ts +39 -102
  520. package/src/shared/lazyModule.test.ts +1 -3
  521. package/src/shared/lazyModule.ts +3 -17
  522. package/src/shared/log.ts +0 -3
  523. package/src/shared/loop-progress.test.ts +3 -5
  524. package/src/shared/loop-progress.ts +0 -115
  525. package/src/shared/mcp-types.ts +0 -10
  526. package/src/shared/mention-pattern.ts +0 -2
  527. package/src/shared/mermaid-fences.test.ts +0 -5
  528. package/src/shared/mermaid-fences.ts +0 -22
  529. package/src/shared/mermaid-hints.test.ts +0 -1
  530. package/src/shared/mermaid-hints.ts +0 -19
  531. package/src/shared/mermaid-prompt-drift.test.ts +0 -12
  532. package/src/shared/mermaid-report.ts +0 -12
  533. package/src/shared/mermaid-validate.test.ts +0 -1
  534. package/src/shared/mermaid-validate.ts +0 -9
  535. package/src/shared/mermaid-validation.ts +0 -18
  536. package/src/shared/mermaidError.test.ts +0 -4
  537. package/src/shared/mermaidError.ts +0 -24
  538. package/src/shared/mermaidRepair.parity.test.ts +0 -14
  539. package/src/shared/mermaidRepair.test.ts +0 -5
  540. package/src/shared/mermaidRepair.ts +1 -52
  541. package/src/shared/packages/parse-claude-plugin-marketplace.ts +7 -41
  542. package/src/shared/packages/parse-claude-plugins.test.ts +6 -7
  543. package/src/shared/packages/parse-claude-plugins.ts +13 -31
  544. package/src/shared/packages/parse-codex-plugins.ts +10 -24
  545. package/src/shared/packages/parse-skill-lock.ts +7 -8
  546. package/src/shared/packages/skill-update-classifier.test.ts +0 -4
  547. package/src/shared/packages/skill-update-classifier.ts +0 -56
  548. package/src/shared/packages/tag-order.test.ts +0 -2
  549. package/src/shared/packages/tag-order.ts +0 -17
  550. package/src/shared/packages/types.ts +6 -25
  551. package/src/shared/pane-tab-width.test.ts +0 -3
  552. package/src/shared/pane-tab-width.ts +0 -18
  553. package/src/shared/permission-policy.ts +3 -13
  554. package/src/shared/plugins/host-modules.ts +0 -12
  555. package/src/shared/plugins/kanna-plugin.d.ts +0 -59
  556. package/src/shared/plugins/log-ring.ts +0 -28
  557. package/src/shared/plugins/manifest.test.ts +5 -11
  558. package/src/shared/plugins/manifest.ts +5 -47
  559. package/src/shared/plugins/paths.test.ts +0 -8
  560. package/src/shared/plugins/paths.ts +0 -22
  561. package/src/shared/plugins/settings.ts +0 -19
  562. package/src/shared/projectFileUrl.ts +0 -4
  563. package/src/shared/protocol.ts +10 -59
  564. package/src/shared/provider-model-types.test.ts +26 -0
  565. package/src/shared/provider-model-types.ts +6 -55
  566. package/src/shared/session-share/types.ts +5 -6
  567. package/src/shared/settings/plain-object.ts +1 -3
  568. package/src/shared/settings/typography.ts +0 -1
  569. package/src/shared/skill-agents.ts +0 -14
  570. package/src/shared/slash-expansion.test.ts +230 -0
  571. package/src/shared/slash-expansion.ts +117 -0
  572. package/src/shared/stack-activity.test.ts +0 -2
  573. package/src/shared/stack-activity.ts +0 -25
  574. package/src/shared/structured-doc/markdown.test.ts +0 -5
  575. package/src/shared/structured-doc/markdown.ts +0 -28
  576. package/src/shared/structured-doc/registry.ts +0 -11
  577. package/src/shared/structured-doc/types.ts +0 -56
  578. package/src/shared/subagent-types.ts +2 -44
  579. package/src/shared/terminal-scrollback.ts +0 -5
  580. package/src/shared/token-pricing.test.ts +0 -14
  581. package/src/shared/token-pricing.ts +0 -32
  582. package/src/shared/tool-call-types.ts +24 -39
  583. package/src/shared/tools.test.ts +0 -2
  584. package/src/shared/tools.ts +17 -22
  585. package/src/shared/transcript-types.ts +8 -95
  586. package/src/shared/types.test.ts +0 -12
  587. package/src/shared/types.ts +6 -58
  588. package/src/shared/vapid-subject.test.ts +13 -13
  589. package/src/shared/vapid-subject.ts +0 -25
  590. package/src/shared/workflow-types.test.ts +2 -1
  591. package/src/shared/workflow-types.ts +8 -9
  592. package/dist/client/assets/ChatPage-CaWwjZR4.js +0 -80
  593. package/dist/client/assets/SettingsPage-BQdG2Gpn.js +0 -9
  594. package/dist/client/assets/WorkflowsPage-DuyAZ4os.js +0 -1
  595. package/dist/client/assets/WorkflowsSection-B21zGQbZ.js +0 -15
  596. package/dist/client/assets/auth-CkUMBgRL.js +0 -1
  597. package/dist/client/assets/chevron-right-CfYhmMd0.js +0 -1
  598. package/dist/client/assets/editor-icons-BYPupL7B.js +0 -1
  599. package/dist/client/assets/index-B7QF_u-n.js +0 -68
  600. package/dist/client/assets/index-BTYDMm-o.css +0 -1
  601. package/dist/client/assets/lexicalToReact-CmBG3fG-.js +0 -27
  602. package/dist/client/assets/plus-B-yZJldk.js +0 -1
  603. package/dist/client/assets/react-BBdwAnLG.js +0 -1517
  604. package/dist/client/assets/useKannaState-VCszkCW6.js +0 -5
  605. package/dist/client/assets/workflowsStore-DIyxNBAq.js +0 -1
  606. package/src/shared/safe-json.test.ts +0 -14
  607. package/src/shared/safe-json.ts +0 -15
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{E as n,M as r,O as i}from"./chatFocusPolicy-DlNQnC-P.js";import{t as a}from"./jsx-runtime-NZYk81nU.js";import{t as o}from"./ellipsis-DxdBZfX2.js";import{t as s}from"./plus-B-yZJldk.js";import{t as c}from"./input-DKS4Wabz.js";import{n as l,r as u,t as d}from"./popover-Z9RcEVxM.js";import{o as f,r as p,s as m,t as h}from"./columnStyle-BFon0FD4.js";var g=e(t(),1),_=[],v=r()(e=>({templates:_,openMenuId:null,picking:!1,renamingId:null,error:null,setTemplates:t=>e({templates:Array.isArray(t)?t:[]}),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 y(e){return e.templates}var b=e(a(),1);function x({ownerKind:e,ownerId:t,ownerName:r,socket:i,onOpenBoard:a}){let o=p(e,t),c=m(f(o)),l=v(y),u=v(e=>e.picking),d=v(e=>e.renamingId),h=v(e=>e.error),{openPicker:_,closePicker:x,startRename:C,stopRename:w,setError:E,setTemplates:D}=v.getState();(0,g.useEffect)(()=>i.subscribe({type:`boards`,ownerKind:e,ownerId:t},e=>{m.getState().setBoards(p(e.ownerKind,e.ownerId),e.boards)}),[e,t,i]),(0,g.useEffect)(()=>{let e=!1;return i.command({type:`board.templates.list`}).then(t=>{e||D(t)}).catch(()=>{}),()=>{e=!0}},[i,D]);let O=(0,g.useCallback)(async e=>{try{await i.command(e),E(null)}catch(e){E(e instanceof Error?e.message:`That did not work.`)}},[i,E]),k=(0,g.useCallback)(n=>{x(),O({type:`board.create`,ownerKind:e,ownerId:t,title:n?n.name:`Untitled board`,templateId:n?.id??null})},[x,e,t,O]),A=(0,g.useCallback)((e,t)=>{w();let n=t.trim();n!==``&&O({type:`board.update`,boardId:e,title:n})},[O,w]),j=u||c.length===0;return(0,b.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[(0,b.jsxs)(`header`,{className:`flex items-end justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h1`,{className:`text-lg font-medium leading-tight tracking-[-0.01em] text-foreground`,children:`Boards`}),(0,b.jsxs)(`p`,{className:`truncate text-13 text-muted-foreground`,children:[r,c.length>0?(0,b.jsxs)(`span`,{className:`tabular-nums`,children:[` · `,c.length,` boards`]}):null]})]}),c.length>0?(0,b.jsxs)(n,{size:`sm`,onClick:_,children:[(0,b.jsx)(s,{className:`size-3.5`}),`New board`]}):null]}),h?(0,b.jsx)(`p`,{className:`border-b border-border px-6 py-2 text-13 text-destructive-text`,children:h}):null,(0,b.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[j?(0,b.jsx)(T,{templates:l,firstRun:c.length===0,onPick:k,onCancel:x}):null,c.length>0?(0,b.jsx)(`ul`,{className:`px-4 py-1`,children:c.map(e=>(0,b.jsx)(S,{board:e,renaming:d===e.id,onOpen:a,onStartRename:C,onRename:A,onCancelRename:w,onCommand:O},e.id))}):null]})]})}function S({board:e,renaming:t,onOpen:n,onStartRename:r,onRename:i,onCancelRename:a,onCommand:o}){let s=(0,g.useCallback)(()=>n(e.id),[e.id,n]),l=(0,g.useCallback)(t=>{t.key===`Enter`&&i(e.id,t.currentTarget.value),t.key===`Escape`&&a()},[e.id,a,i]),u=(0,g.useCallback)(t=>i(e.id,t.currentTarget.value),[e.id,i]);return(0,b.jsxs)(`li`,{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,b.jsx)(`div`,{className:`min-w-0`,children:t?(0,b.jsx)(c,{autoFocus:!0,defaultValue:e.title,onKeyDown:l,onBlur:u,className:`h-7 max-w-sm`,"aria-label":`Board name`}):(0,b.jsxs)(`button`,{type:`button`,onClick:s,className:`block w-full text-left`,children:[(0,b.jsx)(`span`,{className:`block truncate text-15 font-semibold tracking-[-0.005em] text-foreground`,children:e.title}),e.description?(0,b.jsx)(`span`,{className:`mt-0.5 block truncate text-13 text-muted-foreground`,children:e.description}):null]})}),(0,b.jsxs)(`div`,{className:`flex items-center gap-4 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.columnCount}),` columns`]}),(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.cardCount}),` cards`]})]}),(0,b.jsx)(C,{board:e,onStartRename:r,onCommand:o})]})}function C({board:e,onStartRename:t,onCommand:n}){let r=v(t=>t.openMenuId===e.id),{openMenu:i,closeMenu:a}=v.getState(),s=(0,g.useCallback)(t=>{t?i(e.id):a()},[e.id,a,i]),c=(0,g.useCallback)(()=>{a(),t(e.id)},[e.id,a,t]),f=(0,g.useCallback)(()=>{a(),n({type:`board.duplicate`,boardId:e.id,title:`${e.title} copy`})},[e.id,e.title,a,n]),p=(0,g.useCallback)(()=>{a(),n({type:`board.saveAsTemplate`,boardId:e.id,name:e.title})},[e.id,e.title,a,n]),m=(0,g.useCallback)(()=>{a(),n({type:`board.archive`,boardId:e.id})},[e.id,a,n]);return(0,b.jsxs)(d,{open:r,onOpenChange:s,children:[(0,b.jsx)(u,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.title}`,className:`rounded-md px-1.5 py-1 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 data-[state=open]:opacity-100`,children:(0,b.jsx)(o,{className:`size-4`})})}),(0,b.jsxs)(l,{align:`end`,className:`w-56 p-1`,children:[(0,b.jsx)(w,{onClick:c,children:`Rename`}),(0,b.jsx)(w,{onClick:f,children:`Duplicate structure`}),(0,b.jsx)(w,{onClick:p,children:`Save as template`}),(0,b.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,b.jsx)(w,{onClick:m,tone:`destructive`,children:`Archive`})]})]})}function w({onClick:e,children:t,tone:n}){return(0,b.jsx)(`button`,{type:`button`,onClick:e,className:i(`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 T({templates:e,firstRun:t,onPick:r,onCancel:i}){let a=(0,g.useCallback)(()=>r(null),[r]);return(0,b.jsxs)(`div`,{className:`px-6 py-8`,children:[t?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`No boards yet.`}),(0,b.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,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`Start from a shape`}),(0,b.jsxs)(`div`,{className:`mt-4 max-w-xl rounded-lg border border-border`,children:[e.map(e=>(0,b.jsx)(E,{template:e,onPick:r},e.id)),(0,b.jsx)(`button`,{type:`button`,onClick:a,className:`flex w-full items-center border-t border-border px-3.5 py-2.5 text-left hover:bg-secondary`,children:(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:`Empty board`}),(0,b.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Name your own columns`})]})})]}),t?null:(0,b.jsx)(n,{variant:`ghost`,size:`sm`,className:`mt-3`,onClick:i,children:`Cancel`})]})}function E({template:e,onPick:t}){let n=(0,g.useCallback)(()=>t(e),[t,e]),r=e.definition.columns;return(0,b.jsxs)(`button`,{type:`button`,onClick:n,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`,children:[(0,b.jsxs)(`span`,{className:`min-w-0`,children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.name}),(0,b.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:r.map(e=>e.title).join(` · `)})]}),(0,b.jsx)(`span`,{"aria-hidden":!0,className:`ml-auto flex shrink-0 gap-1`,children:r.map((t,n)=>(0,b.jsx)(`span`,{className:i(`size-1.5 rounded-full`,t.colorToken?h[t.colorToken]:`bg-muted-icon`)},`${e.id}-${String(n)}`))})]})}export{x as t};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{E as n,M as r,O as i}from"./chatFocusPolicy-tMtPcKXU.js";import{t as a}from"./jsx-runtime-NZYk81nU.js";import{t as o}from"./ellipsis-CoLR-tuu.js";import{t as s}from"./plus-BOSxTgGx.js";import{t as c}from"./input-DR6CLuwz.js";import{n as l,r as u,t as d}from"./popover-rmCsIRKK.js";import{o as f,r as p,s as m,t as h}from"./columnStyle-CMgxbVBF.js";var g=e(t(),1),_=[],v=r()(e=>({templates:_,openMenuId:null,picking:!1,renamingId:null,error:null,setTemplates:t=>e({templates:Array.isArray(t)?t:[]}),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 y(e){return e.templates}var b=e(a(),1);function x({ownerKind:e,ownerId:t,ownerName:r,socket:i,onOpenBoard:a}){let o=p(e,t),c=m(f(o)),l=v(y),u=v(e=>e.picking),d=v(e=>e.renamingId),h=v(e=>e.error),{openPicker:_,closePicker:x,startRename:C,stopRename:w,setError:E,setTemplates:D}=v.getState();(0,g.useEffect)(()=>i.subscribe({type:`boards`,ownerKind:e,ownerId:t},e=>{m.getState().setBoards(p(e.ownerKind,e.ownerId),e.boards)}),[e,t,i]),(0,g.useEffect)(()=>{let e=!1;return i.command({type:`board.templates.list`}).then(t=>{e||D(t)}).catch(()=>{}),()=>{e=!0}},[i,D]);let O=(0,g.useCallback)(async e=>{try{await i.command(e),E(null)}catch(e){E(e instanceof Error?e.message:`That did not work.`)}},[i,E]),k=(0,g.useCallback)(n=>{x(),O({type:`board.create`,ownerKind:e,ownerId:t,title:n?n.name:`Untitled board`,templateId:n?.id??null})},[x,e,t,O]),A=(0,g.useCallback)((e,t)=>{w();let n=t.trim();n!==``&&O({type:`board.update`,boardId:e,title:n})},[O,w]),j=u||c.length===0;return(0,b.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[(0,b.jsxs)(`header`,{className:`flex items-end justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h1`,{className:`text-lg font-medium leading-tight tracking-[-0.01em] text-foreground`,children:`Boards`}),(0,b.jsxs)(`p`,{className:`truncate text-13 text-muted-foreground`,children:[r,c.length>0?(0,b.jsxs)(`span`,{className:`tabular-nums`,children:[` · `,c.length,` boards`]}):null]})]}),c.length>0?(0,b.jsxs)(n,{size:`sm`,onClick:_,children:[(0,b.jsx)(s,{className:`size-3.5`}),`New board`]}):null]}),h?(0,b.jsx)(`p`,{className:`border-b border-border px-6 py-2 text-13 text-destructive-text`,children:h}):null,(0,b.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[j?(0,b.jsx)(T,{templates:l,firstRun:c.length===0,onPick:k,onCancel:x}):null,c.length>0?(0,b.jsx)(`ul`,{className:`px-4 py-1`,children:c.map(e=>(0,b.jsx)(S,{board:e,renaming:d===e.id,onOpen:a,onStartRename:C,onRename:A,onCancelRename:w,onCommand:O},e.id))}):null]})]})}function S({board:e,renaming:t,onOpen:n,onStartRename:r,onRename:i,onCancelRename:a,onCommand:o}){let s=(0,g.useCallback)(()=>n(e.id),[e.id,n]),l=(0,g.useCallback)(t=>{t.key===`Enter`&&i(e.id,t.currentTarget.value),t.key===`Escape`&&a()},[e.id,a,i]),u=(0,g.useCallback)(t=>i(e.id,t.currentTarget.value),[e.id,i]);return(0,b.jsxs)(`li`,{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,b.jsx)(`div`,{className:`min-w-0`,children:t?(0,b.jsx)(c,{autoFocus:!0,defaultValue:e.title,onKeyDown:l,onBlur:u,className:`h-7 max-w-sm`,"aria-label":`Board name`}):(0,b.jsxs)(`button`,{type:`button`,onClick:s,className:`block w-full text-left`,children:[(0,b.jsx)(`span`,{className:`block truncate text-15 font-semibold tracking-[-0.005em] text-foreground`,children:e.title}),e.description?(0,b.jsx)(`span`,{className:`mt-0.5 block truncate text-13 text-muted-foreground`,children:e.description}):null]})}),(0,b.jsxs)(`div`,{className:`flex items-center gap-4 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.columnCount}),` columns`]}),(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`b`,{className:`font-medium tabular-nums text-foreground`,children:e.cardCount}),` cards`]})]}),(0,b.jsx)(C,{board:e,onStartRename:r,onCommand:o})]})}function C({board:e,onStartRename:t,onCommand:n}){let r=v(t=>t.openMenuId===e.id),{openMenu:i,closeMenu:a}=v.getState(),s=(0,g.useCallback)(t=>{t?i(e.id):a()},[e.id,a,i]),c=(0,g.useCallback)(()=>{a(),t(e.id)},[e.id,a,t]),f=(0,g.useCallback)(()=>{a(),n({type:`board.duplicate`,boardId:e.id,title:`${e.title} copy`})},[e.id,e.title,a,n]),p=(0,g.useCallback)(()=>{a(),n({type:`board.saveAsTemplate`,boardId:e.id,name:e.title})},[e.id,e.title,a,n]),m=(0,g.useCallback)(()=>{a(),n({type:`board.archive`,boardId:e.id})},[e.id,a,n]);return(0,b.jsxs)(d,{open:r,onOpenChange:s,children:[(0,b.jsx)(u,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.title}`,className:`rounded-md px-1.5 py-1 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 data-[state=open]:opacity-100`,children:(0,b.jsx)(o,{className:`size-4`})})}),(0,b.jsxs)(l,{align:`end`,className:`w-56 p-1`,children:[(0,b.jsx)(w,{onClick:c,children:`Rename`}),(0,b.jsx)(w,{onClick:f,children:`Duplicate structure`}),(0,b.jsx)(w,{onClick:p,children:`Save as template`}),(0,b.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,b.jsx)(w,{onClick:m,tone:`destructive`,children:`Archive`})]})]})}function w({onClick:e,children:t,tone:n}){return(0,b.jsx)(`button`,{type:`button`,onClick:e,className:i(`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 T({templates:e,firstRun:t,onPick:r,onCancel:i}){let a=(0,g.useCallback)(()=>r(null),[r]);return(0,b.jsxs)(`div`,{className:`px-6 py-8`,children:[t?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`No boards yet.`}),(0,b.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,b.jsx)(`h2`,{className:`text-15 font-semibold text-foreground`,children:`Start from a shape`}),(0,b.jsxs)(`div`,{className:`mt-4 max-w-xl rounded-lg border border-border`,children:[e.map(e=>(0,b.jsx)(E,{template:e,onPick:r},e.id)),(0,b.jsx)(`button`,{type:`button`,onClick:a,className:`flex w-full items-center border-t border-border px-3.5 py-2.5 text-left hover:bg-secondary`,children:(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:`Empty board`}),(0,b.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Name your own columns`})]})})]}),t?null:(0,b.jsx)(n,{variant:`ghost`,size:`sm`,className:`mt-3`,onClick:i,children:`Cancel`})]})}function E({template:e,onPick:t}){let n=(0,g.useCallback)(()=>t(e),[t,e]),r=e.definition.columns;return(0,b.jsxs)(`button`,{type:`button`,onClick:n,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`,children:[(0,b.jsxs)(`span`,{className:`min-w-0`,children:[(0,b.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.name}),(0,b.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:r.map(e=>e.title).join(` · `)})]}),(0,b.jsx)(`span`,{"aria-hidden":!0,className:`ml-auto flex shrink-0 gap-1`,children:r.map((t,n)=>(0,b.jsx)(`span`,{className:i(`size-1.5 rounded-full`,t.colorToken?h[t.colorToken]:`bg-muted-icon`)},`${e.id}-${String(n)}`))})]})}export{x as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{G as n,U as r,W as i}from"./chatFocusPolicy-DlNQnC-P.js";import{t as a}from"./jsx-runtime-NZYk81nU.js";import{o}from"./formatters-wSVyvDFZ.js";import{t as s}from"./BoardsPage-D4n1jKrz.js";var c=e(t(),1),l=e(a(),1);function u(){let e=i(),t=r(),{projectId:a=``}=n(),u=[...e.sidebarData.starredProjectGroups,...e.sidebarData.projectGroups].find(e=>e.groupKey===a),d=u?o(u.localPath):`Project`,f=(0,c.useCallback)(e=>{t(`/boards/${a}/${e}`)},[t,a]);return(0,l.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,children:(0,l.jsx)(s,{ownerKind:`project`,ownerId:a,ownerName:d,socket:e.socket,onOpenBoard:f})})}export{u as BoardsRoutePage};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{G as n,U as r,W as i}from"./chatFocusPolicy-tMtPcKXU.js";import{t as a}from"./jsx-runtime-NZYk81nU.js";import{o}from"./formatters-wSVyvDFZ.js";import{t as s}from"./BoardsPage-BOtaZF0m.js";var c=e(t(),1),l=e(a(),1);function u(){let e=i(),t=r(),{projectId:a=``}=n(),u=[...e.sidebarData.starredProjectGroups,...e.sidebarData.projectGroups].find(e=>e.groupKey===a),d=u?o(u.localPath):`Project`,f=(0,c.useCallback)(e=>{t(`/boards/${a}/${e}`)},[t,a]);return(0,l.jsx)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,children:(0,l.jsx)(s,{ownerKind:`project`,ownerId:a,ownerName:d,socket:e.socket,onOpenBoard:f})})}export{u as BoardsRoutePage};