airaknit 1.1.2-rc.10

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 (440) hide show
  1. package/LICENSE +84 -0
  2. package/README.md +204 -0
  3. package/bin/airaknit +9 -0
  4. package/bin/airaknit-project +14 -0
  5. package/bin/kanna +9 -0
  6. package/dist/client/assets/CompactSummaryMessage-c_sQ3ks3.js +1 -0
  7. package/dist/client/assets/ExitPlanModeMessage-BP1c8TZN.js +1 -0
  8. package/dist/client/assets/LocalFilePreviewDialog-Bzod-K9f.js +3 -0
  9. package/dist/client/assets/LocalProjectsSection-C6iLdJEd.js +1 -0
  10. package/dist/client/assets/TextMessage-DgQHhOU5.js +1 -0
  11. package/dist/client/assets/UserMessage-2vWqYqQt.js +1 -0
  12. package/dist/client/assets/_basePickBy-CVrAFfnZ.js +1 -0
  13. package/dist/client/assets/_baseUniq-JL-aaF4P.js +1 -0
  14. package/dist/client/assets/arc-B07zg7ol.js +1 -0
  15. package/dist/client/assets/architecture-YZFGNWBL-PSLVJL3p.js +1 -0
  16. package/dist/client/assets/architectureDiagram-Q4EWVU46-DfWIF1G_.js +36 -0
  17. package/dist/client/assets/array-BGFCBI0e.js +1 -0
  18. package/dist/client/assets/blockDiagram-DXYQGD6D-CzwIeo_B.js +132 -0
  19. package/dist/client/assets/bundle-mjs-BDE2gWbQ.js +1 -0
  20. package/dist/client/assets/button-DO50qOGv.js +1 -0
  21. package/dist/client/assets/c4Diagram-AHTNJAMY-CR8DCQRE.js +10 -0
  22. package/dist/client/assets/channel-Dj-UUfaF.js +1 -0
  23. package/dist/client/assets/chunk-2KRD3SAO-dznP-cn8.js +1 -0
  24. package/dist/client/assets/chunk-336JU56O-Dqss5Vu6.js +2 -0
  25. package/dist/client/assets/chunk-426QAEUC-CEKis_0_.js +1 -0
  26. package/dist/client/assets/chunk-4BX2VUAB-BYOv0Gm1.js +1 -0
  27. package/dist/client/assets/chunk-4TB4RGXK-BxzubH5S.js +206 -0
  28. package/dist/client/assets/chunk-55IACEB6-BSlTj03a.js +1 -0
  29. package/dist/client/assets/chunk-5FUZZQ4R-9Au93Bi1.js +62 -0
  30. package/dist/client/assets/chunk-5PVQY5BW-BhksHFEZ.js +2 -0
  31. package/dist/client/assets/chunk-67CJDMHE-BFwhz-8t.js +1 -0
  32. package/dist/client/assets/chunk-7N4EOEYR-BDUPds87.js +1 -0
  33. package/dist/client/assets/chunk-AA7GKIK3-CEWTdyXO.js +1 -0
  34. package/dist/client/assets/chunk-BO2N2NFS-D0LvxnhU.js +103 -0
  35. package/dist/client/assets/chunk-BSJP7CBP-BNJnK6sq.js +1 -0
  36. package/dist/client/assets/chunk-Bj-mKKzh.js +1 -0
  37. package/dist/client/assets/chunk-CIAEETIT-CYhfoCeN.js +1 -0
  38. package/dist/client/assets/chunk-EDXVE4YY-C5ovJLc0.js +1 -0
  39. package/dist/client/assets/chunk-ENJZ2VHE-HOhYaeGr.js +10 -0
  40. package/dist/client/assets/chunk-FMBD7UC4-BLCiKcAQ.js +15 -0
  41. package/dist/client/assets/chunk-FOC6F5B3-B6GtY2ek.js +1 -0
  42. package/dist/client/assets/chunk-ICPOFSXX-DPoIZoC5.js +122 -0
  43. package/dist/client/assets/chunk-K5T4RW27-BsKN63rv.js +94 -0
  44. package/dist/client/assets/chunk-KGLVRYIC-BUGn9uuY.js +1 -0
  45. package/dist/client/assets/chunk-LIHQZDEY-DhaZyo03.js +1 -0
  46. package/dist/client/assets/chunk-ORNJ4GCN-DlpeeJyi.js +1 -0
  47. package/dist/client/assets/chunk-OYMX7WX6-Dc9q7aYA.js +231 -0
  48. package/dist/client/assets/chunk-QZHKN3VN-BEdrPoSb.js +1 -0
  49. package/dist/client/assets/chunk-U2HBQHQK-CIB3Bjjd.js +70 -0
  50. package/dist/client/assets/chunk-X2U36JSP-CtB-o8Yp.js +1 -0
  51. package/dist/client/assets/chunk-XPW4576I-C6iHhX_8.js +32 -0
  52. package/dist/client/assets/chunk-YZCP3GAM-CTmKr6ZH.js +1 -0
  53. package/dist/client/assets/chunk-ZZ45TVLE-BgU8A2RF.js +1 -0
  54. package/dist/client/assets/classDiagram-6PBFFD2Q-Bqk5e679.js +1 -0
  55. package/dist/client/assets/classDiagram-v2-HSJHXN6E-6pSaZOkC.js +1 -0
  56. package/dist/client/assets/client-D5clbnAu.js +6 -0
  57. package/dist/client/assets/client-OcC7y5mZ.js +1 -0
  58. package/dist/client/assets/client-gw-k2D-Y.js +1 -0
  59. package/dist/client/assets/clone-DWcL7whJ.js +1 -0
  60. package/dist/client/assets/cose-bilkent-S5V4N54A-CrV5wsV_.js +1 -0
  61. package/dist/client/assets/cytoscape.esm--aLzKuep.js +321 -0
  62. package/dist/client/assets/dagre-CuRxWcrj.js +1 -0
  63. package/dist/client/assets/dagre-KV5264BT-BIDiVnkA.js +4 -0
  64. package/dist/client/assets/defaultLocale-CRZydyG6.js +1 -0
  65. package/dist/client/assets/diagram-5BDNPKRD-i1kjKRCB.js +10 -0
  66. package/dist/client/assets/diagram-G4DWMVQ6-9ZSLuhbl.js +24 -0
  67. package/dist/client/assets/diagram-MMDJMWI5-B4_CUjgv.js +43 -0
  68. package/dist/client/assets/diagram-TYMM5635-Ct5eTGS8.js +24 -0
  69. package/dist/client/assets/dist-CuB4kiSK.js +1 -0
  70. package/dist/client/assets/erDiagram-SMLLAGMA-Cy38ercc.js +85 -0
  71. package/dist/client/assets/flowDiagram-DWJPFMVM-CZKuYl0V.js +162 -0
  72. package/dist/client/assets/ganttDiagram-T4ZO3ILL-DLPjCh7a.js +292 -0
  73. package/dist/client/assets/gitGraph-7Q5UKJZL-DqbrtEp9.js +1 -0
  74. package/dist/client/assets/gitGraphDiagram-UUTBAWPF-BoRBkDhQ.js +106 -0
  75. package/dist/client/assets/graphlib-BcQ6qlQh.js +1 -0
  76. package/dist/client/assets/highlighted-body-OFNGDK62-BEpBVDTX.js +1 -0
  77. package/dist/client/assets/index-CxCnkDVM.js +105 -0
  78. package/dist/client/assets/index-N29Mip7A.css +1 -0
  79. package/dist/client/assets/info-OMHHGYJF-D98DRBJX.js +1 -0
  80. package/dist/client/assets/infoDiagram-42DDH7IO-BAcdTWbt.js +2 -0
  81. package/dist/client/assets/init-B8gtcn7T.js +1 -0
  82. package/dist/client/assets/isArrayLikeObject-D8SJFmkN.js +1 -0
  83. package/dist/client/assets/isEmpty-BF3YX5Jk.js +1 -0
  84. package/dist/client/assets/ishikawaDiagram-UXIWVN3A-Ynu2VKdC.js +70 -0
  85. package/dist/client/assets/journeyDiagram-VCZTEJTY-BjfhQaN3.js +139 -0
  86. package/dist/client/assets/jsx-runtime-CyI9ICYU.js +1 -0
  87. package/dist/client/assets/kanban-definition-6JOO6SKY-JLXH9zUJ.js +89 -0
  88. package/dist/client/assets/katex-B94qP8b6.js +265 -0
  89. package/dist/client/assets/lib--QVjyxmL.js +29 -0
  90. package/dist/client/assets/lib-B6rgJiZ9.js +1 -0
  91. package/dist/client/assets/line-DCrYfLBn.js +1 -0
  92. package/dist/client/assets/linear-_4upLmeo.js +1 -0
  93. package/dist/client/assets/mermaid-GHXKKRXX-rwJHYUmW.js +1 -0
  94. package/dist/client/assets/mermaid-parser.core-KZinfW8o.js +4 -0
  95. package/dist/client/assets/mermaid.core-QqY9gSNe.js +11 -0
  96. package/dist/client/assets/mindmap-definition-QFDTVHPH-TWgHDAzp.js +96 -0
  97. package/dist/client/assets/ordinal-CCj7PWgZ.js +1 -0
  98. package/dist/client/assets/packet-4T2RLAQJ-DEvfkn3F.js +1 -0
  99. package/dist/client/assets/path-DZF-JdEe.js +1 -0
  100. package/dist/client/assets/pie-ZZUOXDRM-72e6WVjb.js +1 -0
  101. package/dist/client/assets/pieDiagram-DEJITSTG-Cl8PCsoj.js +30 -0
  102. package/dist/client/assets/preload-helper-rov5CBGT.js +1 -0
  103. package/dist/client/assets/pty-client-Cqfije2a.js +1 -0
  104. package/dist/client/assets/ptyInstancesStore-DAmd6Lxt.js +1 -0
  105. package/dist/client/assets/quadrantDiagram-34T5L4WZ-CHyVGp9E.js +7 -0
  106. package/dist/client/assets/radar-PYXPWWZC-Cp7xd_EY.js +1 -0
  107. package/dist/client/assets/react-CClhXMB2.js +1 -0
  108. package/dist/client/assets/react-Dd6D81m0.js +1 -0
  109. package/dist/client/assets/react-dom--G6_6fQ_.js +1 -0
  110. package/dist/client/assets/requirementDiagram-MS252O5E-DaanG2iM.js +84 -0
  111. package/dist/client/assets/rough.esm-BsmKo2S5.js +1 -0
  112. package/dist/client/assets/sankeyDiagram-XADWPNL6-B_fhLY36.js +10 -0
  113. package/dist/client/assets/sequenceDiagram-FGHM5R23-C5FNrveI.js +157 -0
  114. package/dist/client/assets/src-DeTlMJAU.js +1 -0
  115. package/dist/client/assets/stateDiagram-FHFEXIEX-nTTcdjjQ.js +1 -0
  116. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Dw0632j_.js +1 -0
  117. package/dist/client/assets/timeline-definition-GMOUNBTQ-DkQV1yP8.js +120 -0
  118. package/dist/client/assets/treeView-SZITEDCU-ZLIgC7_K.js +1 -0
  119. package/dist/client/assets/treemap-W4RFUUIX-BqaMbB6N.js +1 -0
  120. package/dist/client/assets/uiIdentityOverlay-Ba7GNj7m.js +1 -0
  121. package/dist/client/assets/vennDiagram-DHZGUBPP-DbZ2xgs6.js +34 -0
  122. package/dist/client/assets/wardley-RL74JXVD-DXQS8zf4.js +1 -0
  123. package/dist/client/assets/wardleyDiagram-NUSXRM2D-BzCJ6MAu.js +20 -0
  124. package/dist/client/assets/xychartDiagram-5P7HB3ND-BSlFecop.js +7 -0
  125. package/dist/client/favicon.png +0 -0
  126. package/dist/client/favicon.svg +15 -0
  127. package/dist/client/fonts/body-medium.woff2 +0 -0
  128. package/dist/client/fonts/body-regular-italic.woff2 +0 -0
  129. package/dist/client/fonts/body-regular.woff2 +0 -0
  130. package/dist/client/fonts/body-semibold.woff2 +0 -0
  131. package/dist/client/index.html +31 -0
  132. package/dist/client/manifest.webmanifest +12 -0
  133. package/dist/client/sw.js +32 -0
  134. package/package.json +122 -0
  135. package/src/nats/auth-callout/callout-config.test.ts +93 -0
  136. package/src/nats/auth-callout/callout-config.ts +109 -0
  137. package/src/nats/auth-callout/callout.integration.test.ts +332 -0
  138. package/src/nats/auth-callout/keys.ts +103 -0
  139. package/src/nats/auth-callout/responder.ts +241 -0
  140. package/src/nats/auth-callout/scope-policy.test.ts +159 -0
  141. package/src/nats/auth-callout/scope-policy.ts +210 -0
  142. package/src/nats/auth-callout/token.test.ts +163 -0
  143. package/src/nats/auth-callout/token.ts +157 -0
  144. package/src/nats/nats-daemon-callout.ts +194 -0
  145. package/src/nats/nats-daemon.test.ts +77 -0
  146. package/src/nats/nats-daemon.ts +50 -0
  147. package/src/nats/nats-token.test.ts +61 -0
  148. package/src/nats/nats-token.ts +59 -0
  149. package/src/runner/coordination-mcp-integration.test.ts +134 -0
  150. package/src/runner/nats-coordination-client.test.ts +49 -0
  151. package/src/runner/nats-coordination-client.ts +94 -0
  152. package/src/runner/runner-agent.test.ts +469 -0
  153. package/src/runner/runner-agent.ts +453 -0
  154. package/src/runner/runner-credential.test.ts +93 -0
  155. package/src/runner/runner-credential.ts +82 -0
  156. package/src/runner/runner-nats.test.ts +495 -0
  157. package/src/runner/runner-nats.ts +323 -0
  158. package/src/runner/runner-pair.test.ts +107 -0
  159. package/src/runner/runner-pair.ts +81 -0
  160. package/src/runner/runner.test.ts +135 -0
  161. package/src/runner/runner.ts +212 -0
  162. package/src/runner/turn-factories.test.ts +97 -0
  163. package/src/runner/turn-factories.ts +475 -0
  164. package/src/server/agent-config-journey.test.ts +106 -0
  165. package/src/server/agent.ts +8 -0
  166. package/src/server/auto-continue/auth-error-detector.ts +66 -0
  167. package/src/server/auto-continue/limit-detector.ts +194 -0
  168. package/src/server/bm25.test.ts +92 -0
  169. package/src/server/bm25.ts +101 -0
  170. package/src/server/chat-events-jetstream.test.ts +135 -0
  171. package/src/server/claude-harness.ts +360 -0
  172. package/src/server/claude-pty/agent-normalizers.ts +309 -0
  173. package/src/server/claude-pty/auth.test.ts +38 -0
  174. package/src/server/claude-pty/auth.ts +32 -0
  175. package/src/server/claude-pty/claude-session-registry.adapter.ts +81 -0
  176. package/src/server/claude-pty/claude-session-registry.test.ts +149 -0
  177. package/src/server/claude-pty/driver.test.ts +902 -0
  178. package/src/server/claude-pty/driver.ts +807 -0
  179. package/src/server/claude-pty/jsonl-path.adapter.ts +57 -0
  180. package/src/server/claude-pty/jsonl-path.test.ts +114 -0
  181. package/src/server/claude-pty/jsonl-to-event.test.ts +241 -0
  182. package/src/server/claude-pty/jsonl-to-event.ts +174 -0
  183. package/src/server/claude-pty/output-ring.test.ts +35 -0
  184. package/src/server/claude-pty/output-ring.ts +25 -0
  185. package/src/server/claude-pty/parity-matrix.test.ts +227 -0
  186. package/src/server/claude-pty/pid-registry.adapter.ts +135 -0
  187. package/src/server/claude-pty/pid-registry.test.ts +122 -0
  188. package/src/server/claude-pty/preflight/binary-fingerprint.adapter.ts +20 -0
  189. package/src/server/claude-pty/preflight/binary-fingerprint.test.ts +32 -0
  190. package/src/server/claude-pty/pty-instance-registry.test.ts +177 -0
  191. package/src/server/claude-pty/pty-instance-registry.ts +166 -0
  192. package/src/server/claude-pty/pty-memory-sampler.adapter.test.ts +103 -0
  193. package/src/server/claude-pty/pty-memory-sampler.adapter.ts +85 -0
  194. package/src/server/claude-pty/pty-process.adapter.ts +66 -0
  195. package/src/server/claude-pty/pty-process.test.ts +49 -0
  196. package/src/server/claude-pty/resolve-binary.adapter.ts +106 -0
  197. package/src/server/claude-pty/resolve-binary.test.ts +118 -0
  198. package/src/server/claude-pty/runtime-dir.adapter.ts +19 -0
  199. package/src/server/claude-pty/settings-writer.adapter.ts +27 -0
  200. package/src/server/claude-pty/settings-writer.test.ts +22 -0
  201. package/src/server/claude-pty/smoke-test-io.adapter.ts +28 -0
  202. package/src/server/claude-pty/smoke-test.test.ts +191 -0
  203. package/src/server/claude-pty/smoke-test.ts +185 -0
  204. package/src/server/claude-pty/subagent-orchestrator.ts +887 -0
  205. package/src/server/claude-pty/tool-callback.ts +274 -0
  206. package/src/server/claude-pty/tui-control.test.ts +272 -0
  207. package/src/server/claude-pty/tui-control.ts +182 -0
  208. package/src/server/claude-pty/tui-source.adapter.test.ts +360 -0
  209. package/src/server/claude-pty/tui-source.adapter.ts +343 -0
  210. package/src/server/claude-pty/tunnel-gateway.ts +12 -0
  211. package/src/server/claude-pty-mcp/canonical-args.ts +15 -0
  212. package/src/server/claude-pty-mcp/fs-stat.adapter.ts +8 -0
  213. package/src/server/claude-pty-mcp/history-primer.ts +90 -0
  214. package/src/server/claude-pty-mcp/http-server.adapter.ts +33 -0
  215. package/src/server/claude-pty-mcp/mcp-http.ts +177 -0
  216. package/src/server/claude-pty-mcp/mcp.ts +412 -0
  217. package/src/server/claude-pty-mcp/mention-parser.ts +25 -0
  218. package/src/server/claude-pty-mcp/paths.ts +24 -0
  219. package/src/server/claude-pty-mcp/permission-gate.ts +243 -0
  220. package/src/server/claude-pty-mcp/terminal-pid-registry.adapter.ts +107 -0
  221. package/src/server/claude-pty-mcp/tools/ask-user-question.test.ts +119 -0
  222. package/src/server/claude-pty-mcp/tools/ask-user-question.ts +61 -0
  223. package/src/server/claude-pty-mcp/tools/bash.adapter.ts +76 -0
  224. package/src/server/claude-pty-mcp/tools/bash.test.ts +56 -0
  225. package/src/server/claude-pty-mcp/tools/delegate-subagent.test.ts +155 -0
  226. package/src/server/claude-pty-mcp/tools/delegate-subagent.ts +111 -0
  227. package/src/server/claude-pty-mcp/tools/edit.adapter.ts +95 -0
  228. package/src/server/claude-pty-mcp/tools/edit.test.ts +93 -0
  229. package/src/server/claude-pty-mcp/tools/exit-plan-mode.test.ts +61 -0
  230. package/src/server/claude-pty-mcp/tools/exit-plan-mode.ts +50 -0
  231. package/src/server/claude-pty-mcp/tools/glob.adapter.ts +86 -0
  232. package/src/server/claude-pty-mcp/tools/glob.test.ts +61 -0
  233. package/src/server/claude-pty-mcp/tools/grep.adapter.ts +126 -0
  234. package/src/server/claude-pty-mcp/tools/grep.test.ts +62 -0
  235. package/src/server/claude-pty-mcp/tools/read.adapter.ts +58 -0
  236. package/src/server/claude-pty-mcp/tools/read.test.ts +62 -0
  237. package/src/server/claude-pty-mcp/tools/tool-callback-shim.ts +42 -0
  238. package/src/server/claude-pty-mcp/tools/webfetch.test.ts +81 -0
  239. package/src/server/claude-pty-mcp/tools/webfetch.ts +82 -0
  240. package/src/server/claude-pty-mcp/tools/websearch.test.ts +40 -0
  241. package/src/server/claude-pty-mcp/tools/websearch.ts +42 -0
  242. package/src/server/claude-pty-mcp/tools/write.adapter.ts +60 -0
  243. package/src/server/claude-pty-mcp/tools/write.test.ts +52 -0
  244. package/src/server/claude-pty-mcp/uploads.adapter.ts +98 -0
  245. package/src/server/claude-pty-mcp/uploads.ts +38 -0
  246. package/src/server/claude-turn.test.ts +176 -0
  247. package/src/server/cli-runtime.test.ts +456 -0
  248. package/src/server/cli-runtime.ts +374 -0
  249. package/src/server/cli-supervisor.ts +81 -0
  250. package/src/server/cli.ts +78 -0
  251. package/src/server/client-log-forwarder.test.ts +74 -0
  252. package/src/server/client-log-forwarder.ts +75 -0
  253. package/src/server/codex-app-server-protocol.ts +449 -0
  254. package/src/server/codex-app-server.test.ts +2990 -0
  255. package/src/server/codex-app-server.ts +1713 -0
  256. package/src/server/coordination-integration.test.ts +63 -0
  257. package/src/server/coordination-mcp.test.ts +149 -0
  258. package/src/server/coordination-mcp.ts +197 -0
  259. package/src/server/delegation-coordinator.test.ts +675 -0
  260. package/src/server/delegation-coordinator.ts +454 -0
  261. package/src/server/discovery.test.ts +211 -0
  262. package/src/server/discovery.ts +301 -0
  263. package/src/server/event-store-agent-config.test.ts +124 -0
  264. package/src/server/event-store-coordination.test.ts +149 -0
  265. package/src/server/event-store-profile.test.ts +132 -0
  266. package/src/server/event-store-repo.test.ts +154 -0
  267. package/src/server/event-store-runner-team.test.ts +104 -0
  268. package/src/server/event-store.test.ts +342 -0
  269. package/src/server/event-store.ts +2208 -0
  270. package/src/server/events.ts +379 -0
  271. package/src/server/extension-router.test.ts +183 -0
  272. package/src/server/extension-router.ts +114 -0
  273. package/src/server/extensions/agents/server.test.ts +191 -0
  274. package/src/server/extensions/agents/server.ts +108 -0
  275. package/src/server/extensions/c3/server.test.ts +284 -0
  276. package/src/server/extensions/c3/server.ts +212 -0
  277. package/src/server/extensions/code/server.test.ts +200 -0
  278. package/src/server/extensions/code/server.ts +150 -0
  279. package/src/server/extensions.config.ts +10 -0
  280. package/src/server/external-open.ts +69 -0
  281. package/src/server/generate-fork-context.ts +58 -0
  282. package/src/server/generate-merge-context.test.ts +290 -0
  283. package/src/server/generate-merge-context.ts +141 -0
  284. package/src/server/generate-title.ts +36 -0
  285. package/src/server/git-clone-policy.test.ts +138 -0
  286. package/src/server/git-clone-policy.ts +27 -0
  287. package/src/server/harness-types.ts +1 -0
  288. package/src/server/journey-verification.test.ts +640 -0
  289. package/src/server/journey-verification.ts +195 -0
  290. package/src/server/machine-name.ts +22 -0
  291. package/src/server/nats-auth.test.ts +92 -0
  292. package/src/server/nats-auth.ts +6 -0
  293. package/src/server/nats-bind-guard.test.ts +71 -0
  294. package/src/server/nats-bind-guard.ts +42 -0
  295. package/src/server/nats-bridge.test.ts +141 -0
  296. package/src/server/nats-bridge.ts +111 -0
  297. package/src/server/nats-connector.test.ts +56 -0
  298. package/src/server/nats-connector.ts +71 -0
  299. package/src/server/nats-daemon-manager.test.ts +76 -0
  300. package/src/server/nats-daemon-manager.ts +174 -0
  301. package/src/server/nats-publisher.test.ts +356 -0
  302. package/src/server/nats-publisher.ts +271 -0
  303. package/src/server/nats-responders.test.ts +1018 -0
  304. package/src/server/nats-responders.ts +925 -0
  305. package/src/server/nats-streams.test.ts +112 -0
  306. package/src/server/nats-streams.ts +129 -0
  307. package/src/server/oauth-pool/oauth-responders.ts +185 -0
  308. package/src/server/oauth-pool/oauth-settings-store.ts +173 -0
  309. package/src/server/oauth-pool/oauth-token-pool.ts +303 -0
  310. package/src/server/orchestration.test.ts +1063 -0
  311. package/src/server/orchestration.ts +716 -0
  312. package/src/server/pairing-endpoints.test.ts +171 -0
  313. package/src/server/pairing-store.test.ts +154 -0
  314. package/src/server/pairing-store.ts +124 -0
  315. package/src/server/paths.ts +27 -0
  316. package/src/server/pr3-liveness.test.ts +252 -0
  317. package/src/server/process-utils.ts +10 -0
  318. package/src/server/project-cli.ts +180 -0
  319. package/src/server/provider-catalog.test.ts +177 -0
  320. package/src/server/provider-catalog.ts +146 -0
  321. package/src/server/pty-responders.ts +345 -0
  322. package/src/server/push-notifications.test.ts +234 -0
  323. package/src/server/push-notifications.ts +188 -0
  324. package/src/server/quick-response.test.ts +196 -0
  325. package/src/server/quick-response.ts +154 -0
  326. package/src/server/read-models-agent-config.test.ts +59 -0
  327. package/src/server/read-models-coordination.test.ts +69 -0
  328. package/src/server/read-models.test.ts +332 -0
  329. package/src/server/read-models.ts +258 -0
  330. package/src/server/repo-journey.test.ts +96 -0
  331. package/src/server/repo-manager.test.ts +118 -0
  332. package/src/server/repo-manager.ts +97 -0
  333. package/src/server/repo-status.test.ts +54 -0
  334. package/src/server/repo-status.ts +82 -0
  335. package/src/server/restart.test.ts +27 -0
  336. package/src/server/restart.ts +30 -0
  337. package/src/server/runner-incompatible-gate.test.ts +383 -0
  338. package/src/server/runner-manager.test.ts +72 -0
  339. package/src/server/runner-manager.ts +312 -0
  340. package/src/server/runner-pairing-urls.test.ts +59 -0
  341. package/src/server/runner-pairing-urls.ts +67 -0
  342. package/src/server/runner-proxy.test.ts +456 -0
  343. package/src/server/runner-proxy.ts +494 -0
  344. package/src/server/runner-router.test.ts +429 -0
  345. package/src/server/runner-router.ts +212 -0
  346. package/src/server/runner-routing.test.ts +584 -0
  347. package/src/server/runtime-registry.test.ts +436 -0
  348. package/src/server/runtime-registry.ts +307 -0
  349. package/src/server/sandbox-health.test.ts +127 -0
  350. package/src/server/sandbox-health.ts +94 -0
  351. package/src/server/sandbox-journey.test.ts +232 -0
  352. package/src/server/sandbox-manager.test.ts +146 -0
  353. package/src/server/sandbox-manager.ts +159 -0
  354. package/src/server/server.test.ts +287 -0
  355. package/src/server/server.ts +1108 -0
  356. package/src/server/session-discovery.test.ts +129 -0
  357. package/src/server/session-discovery.ts +475 -0
  358. package/src/server/session-index.test.ts +362 -0
  359. package/src/server/session-index.ts +119 -0
  360. package/src/server/session-seed.ts +288 -0
  361. package/src/server/share.test.ts +108 -0
  362. package/src/server/share.ts +113 -0
  363. package/src/server/skill-discovery.test.ts +201 -0
  364. package/src/server/skill-discovery.ts +77 -0
  365. package/src/server/storage/test-helpers.ts +67 -0
  366. package/src/server/terminal-manager.test.ts +309 -0
  367. package/src/server/terminal-manager.ts +354 -0
  368. package/src/server/transcript-consumer.test.ts +339 -0
  369. package/src/server/transcript-consumer.ts +162 -0
  370. package/src/server/transcript-search.test.ts +193 -0
  371. package/src/server/transcript-search.ts +83 -0
  372. package/src/server/transcript-utils.ts +52 -0
  373. package/src/server/update-manager.test.ts +107 -0
  374. package/src/server/update-manager.ts +230 -0
  375. package/src/server/workflow-engine.test.ts +251 -0
  376. package/src/server/workflow-engine.ts +169 -0
  377. package/src/server/workflow-mcp.ts +49 -0
  378. package/src/server/workflow-store.test.ts +155 -0
  379. package/src/server/workflow-store.ts +139 -0
  380. package/src/server/workspace-agent-integration.test.ts +167 -0
  381. package/src/server/workspace-agent-routes.test.ts +127 -0
  382. package/src/server/workspace-agent-routes.ts +89 -0
  383. package/src/server/workspace-agent.test.ts +103 -0
  384. package/src/server/workspace-agent.ts +102 -0
  385. package/src/server/workspace-cli.test.ts +79 -0
  386. package/src/server/workspace-config-manager.test.ts +109 -0
  387. package/src/server/workspace-config-manager.ts +83 -0
  388. package/src/server/workspace-directory-policy.test.ts +109 -0
  389. package/src/server/workspace-directory-policy.ts +56 -0
  390. package/src/shared/agent-config-types.ts +25 -0
  391. package/src/shared/branding.test.ts +42 -0
  392. package/src/shared/branding.ts +54 -0
  393. package/src/shared/compression.test.ts +85 -0
  394. package/src/shared/compression.ts +42 -0
  395. package/src/shared/coordination-store.test.ts +24 -0
  396. package/src/shared/coordination-store.ts +26 -0
  397. package/src/shared/dev-ports.test.ts +84 -0
  398. package/src/shared/dev-ports.ts +100 -0
  399. package/src/shared/extension-types.ts +45 -0
  400. package/src/shared/fork-presets.ts +54 -0
  401. package/src/shared/harness-types.test.ts +15 -0
  402. package/src/shared/harness-types.ts +21 -0
  403. package/src/shared/log-sink.test.ts +112 -0
  404. package/src/shared/log-sink.ts +185 -0
  405. package/src/shared/mention-pattern.ts +7 -0
  406. package/src/shared/merge-presets.ts +41 -0
  407. package/src/shared/nats-subjects.test.ts +61 -0
  408. package/src/shared/nats-subjects.ts +131 -0
  409. package/src/shared/permission-policy.ts +136 -0
  410. package/src/shared/ports.ts +3 -0
  411. package/src/shared/preset-types.ts +15 -0
  412. package/src/shared/profile-types.ts +49 -0
  413. package/src/shared/projectFileUrl.ts +36 -0
  414. package/src/shared/protocol.ts +153 -0
  415. package/src/shared/pty-instance.ts +43 -0
  416. package/src/shared/puggy/diagnostics/result.ts +18 -0
  417. package/src/shared/puggy/expressions/evaluate.ts +292 -0
  418. package/src/shared/puggy/index.test.ts +101 -0
  419. package/src/shared/puggy/index.ts +69 -0
  420. package/src/shared/puggy/parser/ast.ts +110 -0
  421. package/src/shared/puggy/parser/parser.ts +624 -0
  422. package/src/shared/puggy/renderer/html.ts +447 -0
  423. package/src/shared/runner-protocol.test.ts +277 -0
  424. package/src/shared/runner-protocol.ts +210 -0
  425. package/src/shared/runner-team-types.ts +73 -0
  426. package/src/shared/runtime-types.ts +48 -0
  427. package/src/shared/sandbox-types.ts +53 -0
  428. package/src/shared/tailwind-build.test.ts +12 -0
  429. package/src/shared/tinkaria-system-prompt.ts +101 -0
  430. package/src/shared/tools.test.ts +335 -0
  431. package/src/shared/tools.ts +397 -0
  432. package/src/shared/transcript-entries.ts +27 -0
  433. package/src/shared/transcript-render.test.ts +225 -0
  434. package/src/shared/transcript-render.ts +467 -0
  435. package/src/shared/types.ts +1031 -0
  436. package/src/shared/vite-config.test.ts +47 -0
  437. package/src/shared/web-context.test.ts +110 -0
  438. package/src/shared/web-context.ts +76 -0
  439. package/src/shared/workflow-types.ts +51 -0
  440. package/src/shared/workspace-types.ts +100 -0
package/LICENSE ADDED
@@ -0,0 +1,84 @@
1
+ Tinkaria Private Use License v1.1
2
+
3
+ Copyright (c) 2026 Tinkaria
4
+ All rights reserved.
5
+
6
+ This repository and all associated source code, assets, documentation, and
7
+ other materials (the "Software") are proprietary to Tinkaria.
8
+
9
+ This license is source-available only. It is not an open-source license.
10
+
11
+ For purposes of this license, "Tinkaria" means the copyright holder or any
12
+ authorized licensor of the Software.
13
+
14
+ 1. Limited Permission
15
+
16
+ Permission is granted to use, copy, modify, and run the Software only for
17
+ strictly private, personal, internal, research, or evaluation purposes that
18
+ are non-commercial in nature.
19
+
20
+ This limited permission is revocable, non-exclusive, non-transferable, and
21
+ non-sublicensable. You must retain this license and all copyright,
22
+ proprietary, and attribution notices on every permitted copy.
23
+
24
+ 2. Commercial Use Prohibited
25
+
26
+ You may not use the Software, or any modified version of it, for any
27
+ commercial purpose without prior written permission from Tinkaria.
28
+
29
+ Commercial use includes, without limitation:
30
+
31
+ - selling, licensing, sublicensing, leasing, or monetizing the Software;
32
+ - offering the Software as part of a paid or revenue-generating product or
33
+ service;
34
+ - making the Software available to third parties as a hosted or networked
35
+ service;
36
+ - providing hosted, managed, SaaS, consulting, or support services based on
37
+ the Software;
38
+ - using the Software in a business workflow, client project, or other activity
39
+ intended for commercial advantage or monetary compensation.
40
+
41
+ 3. No Redistribution or Third-Party Access
42
+
43
+ You may not publish, distribute, sublicense, transfer, assign, or otherwise
44
+ make the Software available to any third party, whether in original or
45
+ modified form, without prior written permission from Tinkaria.
46
+
47
+ For clarity, you may not provide any third party with access to the Software
48
+ except as separately authorized in writing by Tinkaria.
49
+
50
+ 4. No Patent or Other IP License
51
+
52
+ Except for the limited permission expressly stated in this license, no patent,
53
+ trade secret, trademark, publicity, or other intellectual-property rights are
54
+ granted, whether by implication, estoppel, or otherwise.
55
+
56
+ 5. No Trademark or Branding Rights
57
+
58
+ This license does not grant any right to use the Tinkaria name, branding,
59
+ logos, trade dress, or other identifying marks.
60
+
61
+ 6. Reservation of Rights
62
+
63
+ All rights not expressly granted under this license are reserved by Tinkaria.
64
+ Any use beyond the limited private, non-commercial permission above requires
65
+ prior written authorization from Tinkaria.
66
+
67
+ 7. Termination
68
+
69
+ Any breach of this license immediately terminates your rights under it. Upon
70
+ termination, you must stop using the Software and destroy all copies in your
71
+ possession or control, including modified copies.
72
+
73
+ 8. Disclaimer
74
+
75
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
76
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
77
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NONINFRINGEMENT.
78
+
79
+ 9. Limitation of Liability
80
+
81
+ TO THE MAXIMUM EXTENT PERMITTED BY LAW, TINKARIA SHALL NOT BE LIABLE FOR ANY
82
+ CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR
83
+ OTHERWISE, ARISING FROM OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF THE
84
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,204 @@
1
+ <p align="center">
2
+ <img src="assets/tinkaria-logo-fine.svg" alt="Airaknit" width="360" />
3
+ </p>
4
+
5
+ <h1 align="center">Airaknit</h1>
6
+
7
+ <p align="center">
8
+ <strong>A playful workbench UI for Claude Code and Codex</strong>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/airaknit"><img src="https://img.shields.io/npm/v/airaknit?style=flat&label=npm&colorA=18181b&colorB=f472b6" alt="npm version" /></a>
13
+ <a href="https://www.npmjs.com/package/airaknit"><img src="https://img.shields.io/npm/dm/airaknit?style=flat&colorA=18181b&colorB=f472b6" alt="npm downloads" /></a>
14
+ <a href="https://github.com/thanh-dong/airaknit/actions/workflows/release-please.yml"><img src="https://github.com/thanh-dong/airaknit/actions/workflows/release-please.yml/badge.svg?branch=main" alt="Release Please" /></a>
15
+ <a href="https://github.com/thanh-dong/airaknit/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/airaknit?style=flat&colorA=18181b&colorB=f472b6" alt="license" /></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <picture>
20
+ <source media="(prefers-color-scheme: dark)" srcset="assets/screenshot.png" />
21
+ <source media="(prefers-color-scheme: light)" srcset="assets/screenshot-light.png" />
22
+ <img src="assets/screenshot.png" alt="Airaknit screenshot" width="800" />
23
+ </picture>
24
+ </p>
25
+
26
+ Airaknit is a local-first browser workbench for coding agents. It gives Claude Code and Codex a shared UI with project-aware chat, embedded terminals, transcript rendering, session history, and a NATS-backed realtime runtime.
27
+
28
+ It started as a fork of [jakemor/kanna](https://github.com/jakemor/kanna). Kanna remains the upstream inspiration and original beautiful Claude Code web UI. This fork has since diverged heavily in architecture and product direction.
29
+
30
+ ## Quickstart
31
+
32
+ ```bash
33
+ bun install -g airaknit
34
+ airaknit
35
+ ```
36
+
37
+ If Bun is not installed yet:
38
+
39
+ ```bash
40
+ curl -fsSL https://bun.sh/install | bash
41
+ ```
42
+
43
+ Default URL: `http://localhost:3210`
44
+
45
+ ## What Airaknit Adds
46
+
47
+ - Multi-provider chat for Claude Code and Codex
48
+ - Embedded terminals with persisted layout
49
+ - Project-first sidebar and local project discovery
50
+ - Rich transcript rendering for tools, plans, diffs, and structured content
51
+ - Session resumption and local history
52
+ - Embedded NATS transport with snapshots, events, and command subjects
53
+ - Plan-mode approval flows inside the UI
54
+ - Local-first event-log persistence
55
+
56
+ ## Upgrade Safety
57
+
58
+ The current runtime is multi-process and partially ephemeral:
59
+
60
+ - the server starts a dedicated embedded NATS daemon process on boot
61
+ - a separate runner process handles all turn execution (Claude and Codex)
62
+
63
+ For RC upgrades or machine handoff, do not assume live turns survive restart. Quiesce or cancel active work first, then verify a fresh Claude/Codex send after the upgraded instance starts.
64
+
65
+ For proxied deployments, prefer side-by-side cutover over in-place restart:
66
+
67
+ - keep the old backend running on its current port
68
+ - start the new release on a new port
69
+ - verify `/health`, `/auth/token`, `/`, and `/nats-ws` against the new backend directly
70
+ - switch the reverse proxy upstream to the new port
71
+ - retire the old backend only after the public route reports the new backend healthy
72
+
73
+ ## Operational Health
74
+
75
+ `GET /health` returns structured runtime status for the components Airaknit owns:
76
+
77
+ - `natsDaemon`: embedded NATS subprocess pid/ports/aliveness
78
+ - `natsConnection`: hub connection readiness from the Bun server
79
+ - `runner`: runner registration and heartbeat freshness
80
+
81
+ HTTP `503` is reserved for required-component failure:
82
+
83
+ - embedded NATS daemon is down
84
+ - server NATS connection is closed
85
+ - runner is not registered or heartbeat-fresh
86
+
87
+
88
+ ## Install
89
+
90
+ Global install:
91
+
92
+ ```bash
93
+ bun install -g airaknit
94
+ ```
95
+
96
+ Run from source:
97
+
98
+ ```bash
99
+ git clone https://github.com/thanh-dong/airaknit.git
100
+ cd airaknit
101
+ bun install
102
+ bun run build
103
+ bun run start
104
+ ```
105
+
106
+ ## Usage
107
+
108
+ ```bash
109
+ airaknit # start on localhost:3210
110
+ airaknit --port 4000 # custom port
111
+ airaknit --no-open # do not open a browser
112
+ airaknit --share # create a public Cloudflare share URL
113
+ airaknit --remote # bind 0.0.0.0
114
+ airaknit --host dev-box # bind a specific hostname or IP
115
+ ```
116
+
117
+ `--share` is incompatible with `--host` and `--remote`.
118
+
119
+ ## Requirements
120
+
121
+ - [Bun](https://bun.sh) v1.3.5+
122
+ - A working [Claude Code](https://docs.anthropic.com/en/docs/claude-code) setup
123
+ - Optional: [Codex CLI](https://github.com/openai/codex) for Codex support
124
+
125
+ Embedded terminal support currently targets macOS and Linux through Bun PTY APIs.
126
+
127
+ ## Architecture
128
+
129
+ [![Architecture diagram](https://diashort.apps.quickable.co/e/e69a07ad)](https://diashort.apps.quickable.co/d/e69a07ad)
130
+
131
+ The browser connects to an embedded NATS server over WebSocket. The runtime currently includes:
132
+
133
+ - the main Bun HTTP/WebSocket server (thin API gateway)
134
+ - an embedded NATS daemon process
135
+ - a runner process that handles all turn execution (Claude and Codex)
136
+
137
+ Airaknit uses these internal transport families:
138
+
139
+ | Namespace | Pattern | Purpose |
140
+ |-----------|---------|---------|
141
+ | Snapshots | `runtime.snap.*` | Push state for sidebar, chat, settings, terminals |
142
+ | Events | `runtime.evt.*` | JetStream-backed terminal and chat event streams |
143
+ | Commands | `runtime.cmd.*` | Request/reply mutations from browser to server |
144
+ | Runner | `runtime.runner.*` | Runner registration, commands, heartbeats, turn events |
145
+
146
+ The `runtime.*` subject prefix keeps the internal transport namespace generic and separate from product branding.
147
+
148
+ Key patterns:
149
+
150
+ - Event sourcing with JSONL logs plus snapshot compaction
151
+ - CQRS-style split between persisted write path and derived read snapshots
152
+ - Reactive snapshot broadcasting over NATS
153
+ - Shared UI shell for multiple coding-agent providers
154
+
155
+ ## Development
156
+
157
+ ```bash
158
+ bun run dev
159
+ ```
160
+
161
+ Useful commands:
162
+
163
+ | Command | Description |
164
+ |---------|-------------|
165
+ | `bun run build` | Production build |
166
+ | `bun run check` | Typecheck and build |
167
+ | `bun run dev` | Client and server together |
168
+ | `bun run dev:client` | Vite client only |
169
+ | `bun run dev:server` | Bun server only |
170
+ | `bun run start` | Production server |
171
+
172
+ ## Data Storage
173
+
174
+ Airaknit stores local state under:
175
+
176
+ - prod: `~/.tinkaria/data`
177
+ - dev: `~/.tinkaria-dev/data`
178
+
179
+ Main files:
180
+
181
+ | File | Purpose |
182
+ |------|---------|
183
+ | `projects.jsonl` | Project open/remove events |
184
+ | `chats.jsonl` | Chat create/rename/delete events |
185
+ | `messages.jsonl` | Transcript entries |
186
+ | `turns.jsonl` | Agent turn lifecycle events |
187
+ | `snapshot.json` | Compacted startup snapshot |
188
+
189
+ ## Fork Lineage
190
+
191
+ > Airaknit was originally released as **Tinkaria**. The project was renamed to Airaknit; the data directories, internal subject namespace, and some asset filenames still reflect the original name.
192
+
193
+ Airaknit is a fork of [Kanna](https://github.com/jakemor/kanna), created by [@jakemor](https://github.com/jakemor). Kanna is the original inspiration for the UI direction and deserves explicit credit.
194
+
195
+ This fork diverged by:
196
+
197
+ - introducing embedded NATS as the runtime transport
198
+ - expanding into a broader Claude Code + Codex workbench
199
+ - adding local-first event-log persistence and richer session management
200
+ - removing the obsolete Tauri companion path in favor of a browser/PWA-first runtime
201
+
202
+ ## License
203
+
204
+ This repository retains the upstream license terms in [LICENSE](LICENSE). Keep that file intact when redistributing.
package/bin/airaknit ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bun
2
+ import process from "node:process"
3
+ import { CLI_CHILD_MODE, CLI_CHILD_MODE_ENV_VAR } from "../src/server/restart"
4
+
5
+ if (process.env[CLI_CHILD_MODE_ENV_VAR] === CLI_CHILD_MODE) {
6
+ await import("../src/server/cli.ts")
7
+ } else {
8
+ await import("../src/server/cli-supervisor.ts")
9
+ }
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bun
2
+ import { parseProjectCliArgs, executeCommand } from "../src/server/project-cli"
3
+
4
+ const port = process.argv.includes("--port")
5
+ ? process.argv[process.argv.indexOf("--port") + 1]
6
+ : "3210"
7
+ const baseUrl = `http://127.0.0.1:${port}`
8
+
9
+ const args = process.argv.slice(2).filter((a) => a !== "--port" && a !== port)
10
+ const parsed = parseProjectCliArgs(args)
11
+ const { output, exitCode } = await executeCommand(parsed, baseUrl)
12
+
13
+ console.log(output)
14
+ process.exit(exitCode)
package/bin/kanna ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bun
2
+ import process from "node:process"
3
+ import { CLI_CHILD_MODE, CLI_CHILD_MODE_ENV_VAR } from "../src/server/restart"
4
+
5
+ if (process.env[CLI_CHILD_MODE_ENV_VAR] === CLI_CHILD_MODE) {
6
+ await import("../src/server/cli.ts")
7
+ } else {
8
+ await import("../src/server/cli-supervisor.ts")
9
+ }
@@ -0,0 +1 @@
1
+ import{s as e}from"./chunk-Bj-mKKzh.js";import{t}from"./react-CClhXMB2.js";import{t as n}from"./jsx-runtime-CyI9ICYU.js";import{s as r}from"./lib--QVjyxmL.js";import{M as i,_ as a,g as o,h as s,m as c,p as l}from"./index-CxCnkDVM.js";import{t as u}from"./lib-B6rgJiZ9.js";var d=e(t(),1),f=n(),p=(0,d.memo)(function({message:e}){return(0,f.jsx)(s,{children:(0,f.jsxs)(l,{expandedContent:(0,f.jsx)(o,{className:`my-4 text-xs`,children:(0,f.jsx)(`div`,{className:`prose prose-sm dark:prose-invert max-w-none`,children:(0,f.jsx)(u,{remarkPlugins:[r],components:a(),children:e.summary})})}),children:[(0,f.jsx)(`div`,{className:`w-5 h-5 relative flex items-center justify-center`,children:(0,f.jsx)(i,{className:`h-4.5 w-4.5 text-muted-foreground`})}),(0,f.jsx)(c,{children:`Summarized`})]})})});export{p as CompactSummaryMessage};
@@ -0,0 +1 @@
1
+ import{s as e}from"./chunk-Bj-mKKzh.js";import{t}from"./react-CClhXMB2.js";import{c as n,f as r,o as i}from"./uiIdentityOverlay-Ba7GNj7m.js";import{n as a,t as o}from"./button-DO50qOGv.js";import{t as s}from"./jsx-runtime-CyI9ICYU.js";import{s as c}from"./lib--QVjyxmL.js";import{B as l,L as u,T as d,V as f,_ as p,j as m}from"./index-CxCnkDVM.js";import{t as h}from"./lib-B6rgJiZ9.js";var g=r(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),_=r(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),v=r(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),y=e(t(),1),b=s(),x=i({id:`message.plan.area`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),S=i({id:`message.plan.approve.action`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),C=i({id:`message.plan.approve-clear.action`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),w=i({id:`message.plan.suggest-edits.action`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),T=i({id:`message.plan.adjust.action`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),E=(0,y.memo)(function({message:e,onConfirm:t,isLatest:r}){let i=!!e.result,[s,E]=(0,y.useState)(!1),[D,O]=(0,y.useState)(!1),[k,A]=(0,y.useState)(!1),[j,M]=(0,y.useState)(``),N=(0,y.useRef)(null),P=e.input;(0,y.useEffect)(()=>{k&&N.current&&N.current.focus()},[k]);let F=async()=>{P?.plan&&(await navigator.clipboard.writeText(P.plan),O(!0),setTimeout(()=>O(!1),2e3))},I=i?e.result:null,L=I?.discarded===!0;return(0,b.jsxs)(`div`,{className:`flex flex-col gap-3`,...n(x),children:[(0,b.jsxs)(`div`,{className:`relative rounded-2xl border border-border overflow-hidden group/plan`,children:[P?.plan&&(0,b.jsx)(o,{variant:`ghost`,size:`icon`,className:a(`absolute top-2 right-2 z-10 h-8 w-8 rounded-md text-muted-foreground opacity-0 group-hover/plan:opacity-100 transition-opacity`,!D&&`hover:text-foreground`,D&&`hover:!bg-transparent hover:!border-transparent`),onClick:F,children:D?(0,b.jsx)(f,{className:`h-4 w-4 text-green-400`}):(0,b.jsx)(u,{className:`h-4 w-4`})}),(0,b.jsxs)(`div`,{className:a(`!pt-5 !pb-0 px-4 md:py-4.5 md:px-5.5 bg-muted dark:bg-card overflow-scroll no-pre-highlight transition-all`,i&&!s?`max-h-[min(400px,40vh)] `:``,i?`hover:!pb-[32px]`:``),children:[i&&(0,b.jsxs)(o,{variant:`ghost`,className:`absolute z-10 bottom-2 pr-2.5 !pl-3.5 h-[34px] inline-flex gap-1 text-sm left-[50%] -translate-x-[50%] text-muted-foreground backdrop-blur-sm hover:text-foreground opacity-0 group-hover/plan:opacity-100 transition-all rounded-full border border-border`,onClick:()=>E(!s),children:[s?`Show Less`:`Show More`,(0,b.jsx)(l,{className:`size-3.5 transition-transform ${s?`rotate-180`:``}`})]}),P?.plan?(0,b.jsxs)(`div`,{className:`prose prose-sm dark:prose-invert max-w-none`,children:[(0,b.jsx)(h,{remarkPlugins:[c],components:p(),children:P.plan}),(0,b.jsx)(`div`,{className:`mt-5`})]}):(0,b.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No plan provided`})]})]}),i?(0,b.jsx)(`div`,{className:`flex justify-end mx-2`,children:(0,b.jsxs)(`span`,{className:`pl-4 inline text-sm font-medium bg-background text-foreground/60 border border-border py-1.5 px-3 rounded-[20px] leading-relaxed max-w-[85%] sm:max-w-[80%]`,children:[(0,b.jsx)(`em`,{children:L?`Discarded`:I?.clearContext?`Approved & Cleared Context`:I?.confirmed?`Approved`:I?.message?`Adjusted: "${I.message}"`:`Adjusted Plan`}),(0,b.jsx)(_,{className:`inline h-4 w-4 ml-1.5 -mt-0.5`})]})}):r?(0,b.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[!k&&(0,b.jsxs)(`div`,{className:`flex flex-col md:flex-row items-stretch md:items-center justify-end gap-2 mx-2`,children:[(0,b.jsxs)(o,{size:`sm`,onClick:()=>t(e.toolId,!0,!0),className:`rounded-full bg-primary text-background pr-4 md:order-last`,...n(C),children:[(0,b.jsx)(g,{className:`h-4 w-4 mr-1.5`}),`Approve & Clear`]}),(0,b.jsxs)(`div`,{className:`flex items-stretch md:items-center gap-2 md:contents`,children:[(0,b.jsxs)(o,{size:`sm`,variant:`outline`,onClick:()=>A(!0),className:`rounded-full border-border flex-1 md:flex-initial md:order-first`,...n(w),children:[(0,b.jsx)(m,{className:`h-4 w-4 mr-1.5`}),`Suggest Edits`]}),(0,b.jsxs)(o,{size:`sm`,variant:`outline`,onClick:()=>t(e.toolId,!0),className:`rounded-full border-border flex-1 md:flex-initial`,...n(S),children:[(0,b.jsx)(f,{className:`h-4 w-4 mr-1.5`}),`Approve`]})]})]}),k&&(0,b.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,b.jsx)(d,{ref:N,value:j,onChange:e=>M(e.target.value),onKeyDown:n=>{n.key===`Enter`&&!n.shiftKey&&j.trim()&&(n.preventDefault(),t(e.toolId,!1,void 0,j.trim())),n.key===`Escape`&&(A(!1),M(``))},placeholder:`Describe what you'd like to change...`,rows:3,className:`w-full rounded-2xl border border-border bg-muted dark:bg-card px-4 py-3 text-sm text-foreground placeholder:text-muted-foreground resize-none outline-none`}),(0,b.jsxs)(`div`,{className:`flex items-center justify-end gap-2 mx-2`,children:[(0,b.jsx)(o,{size:`sm`,variant:`ghost`,onClick:()=>{A(!1),M(``)},className:`rounded-full text-muted-foreground`,children:`Cancel`}),(0,b.jsxs)(o,{size:`sm`,disabled:!j.trim(),onClick:()=>t(e.toolId,!1,void 0,j.trim()),className:`rounded-full bg-primary text-background disabled:opacity-50 disabled:pointer-events-none`,...n(T),children:[(0,b.jsx)(v,{className:`h-4 w-4 mr-1.5`}),`Adjust Plan`]})]})]})]}):(0,b.jsx)(`div`,{className:`flex justify-end mx-2`,children:(0,b.jsx)(`span`,{className:`inline text-sm text-muted-foreground italic`,children:`Plan pending (newer prompt active)`})})]})});export{E as ExitPlanModeMessage};
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./uiIdentityOverlay-Ba7GNj7m.js";import{t}from"./jsx-runtime-CyI9ICYU.js";import{s as n}from"./lib--QVjyxmL.js";import{_ as r,b as i,f as a,v as o,x as s}from"./index-CxCnkDVM.js";import{t as c}from"./lib-B6rgJiZ9.js";var l={html:`html`,htm:`html`,svg:`svg`,mmd:`mermaid`,mermaid:`mermaid`,d2:`d2`,pug:`pug`},u=new Set([`md`,`markdown`,`mdx`]),d=new Set([`ts`,`tsx`,`js`,`jsx`,`json`,`css`,`scss`,`xml`,`sh`,`bash`,`zsh`,`py`,`rs`,`go`,`java`,`rb`,`php`,`yml`,`yaml`,`sql`]),f=new Set(`png.jpg.jpeg.gif.webp.avif.ico.bmp.tiff.pdf.zip.gz.tar.rar.7z.woff.woff2.ttf.otf.eot.mp4.mov.webm.mp3.wav.ogg.flac.exe.dll.so.dylib.bin.wasm.class.jar`.split(`.`));function p(e){let t=e.split(`/`).pop()??``;return t.includes(`.`)?t.split(`.`).pop()?.toLowerCase()??``:``}function m(e){let t=p(e);if(u.has(t))return{kind:`markdown`};let n=l[t];return n?{kind:`embed`,format:n}:f.has(t)?{kind:`unsupported`}:{kind:`code`,language:d.has(t)?t:null}}var h=t(),g=e({id:`content-preview.dialog`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`});function _(e){let t=e.split(`/`).pop()?.split(`.`).pop()?.toLowerCase()??``;switch(t){case`ts`:case`tsx`:case`js`:case`jsx`:case`json`:case`css`:case`scss`:case`html`:case`xml`:case`svg`:case`sh`:case`bash`:case`zsh`:case`py`:case`rs`:case`go`:case`java`:case`rb`:case`php`:case`yml`:case`yaml`:case`sql`:return t;default:return null}}function v(e,t){return`\`\`\`${_(e)??``}\n${t}\n\`\`\``}function y(e){return/[├└│─]/.test(e)}function b(e){return/^\S.*\/\s*$/.test(e)}function x(e){return/^\s*(```|~~~)/.test(e)}function S(e){let t=e.split(`
2
+ `),n=[],r=0,i=!1;for(;r<t.length;){let e=t[r]??``;if(x(e)){i=!i,n.push(e),r+=1;continue}if(!i&&y(e)){let e=[],i=n[n.length-1];for(i!==void 0&&b(i)&&(n.pop(),e.push(i));r<t.length&&y(t[r]??``);)e.push(t[r]??``),r+=1;if(e.length>1){let i=n[n.length-1];i!==void 0&&i.trim()!==``&&n.push(``),n.push("```text",...e,"```"),(t[r]??``).trim()!==``&&n.push(``);continue}n.push(...e);continue}n.push(e),r+=1}return n.join(`
3
+ `)}function C(e,t){let n=s(e.path,t);return e.line?e.column?`${n}:${e.line}:${e.column}`:`${n}:${e.line}`:n}function w(e){let t=m(e);return t.kind===`markdown`?`markdown`:t.kind===`embed`?`embed`:`code`}function T({preview:e,onOpenLocalLink:t}){let i=m(e.path);if(i.kind===`markdown`){let i=S(e.content);return(0,h.jsx)(`div`,{className:`text-pretty prose prose-sm dark:prose-invert px-0.5 w-full max-w-full space-y-4`,children:(0,h.jsx)(c,{remarkPlugins:[n],components:r({onOpenLocalLink:t,renderRichContentBlocks:!1}),children:i})})}return i.kind===`embed`?(0,h.jsx)(`div`,{className:`w-full max-w-full`,children:(0,h.jsx)(o,{format:i.format,source:e.content,fillHeight:!0})}):i.kind===`unsupported`?(0,h.jsx)(`div`,{className:`px-1 py-10 text-center text-sm text-muted-foreground`,children:`Preview unavailable for this file type.`}):(0,h.jsx)(`div`,{className:`text-pretty prose prose-sm dark:prose-invert px-0.5 w-full max-w-full space-y-4`,children:(0,h.jsx)(c,{remarkPlugins:[n,a],components:r({onOpenLocalLink:t,renderRichContentBlocks:!1}),children:v(e.path,e.content)})})}function E({preview:e,workspacePath:t,onClose:n,onOpenLocalLink:r}){return(0,h.jsx)(i,{open:e!==null,onOpenChange:e=>{e||n()},title:e?C(e,t):`File preview`,type:e?w(e.path):`code`,rawContent:e?.content,rootUiId:g,children:e?(0,h.jsx)(T,{preview:e,onOpenLocalLink:r}):null})}export{E as LocalFilePreviewDialog};
@@ -0,0 +1 @@
1
+ import{c as e,o as t}from"./uiIdentityOverlay-Ba7GNj7m.js";import{n,t as r}from"./button-DO50qOGv.js";import{t as i}from"./jsx-runtime-CyI9ICYU.js";import{C as a,D as o,E as s,F as c,O as l,w as u}from"./index-CxCnkDVM.js";var d=i(),f=t({id:`sidebar.project-group`,c3ComponentId:`c3-113`,c3ComponentLabel:`sidebar`});function p({group:t,expandedGroups:i,onToggleExpandedGroup:p,renderChatRow:m,chatsPerProject:h,onNewLocalChat:g,onRemoveProject:_,isConnected:v,startingLocalPath:y,onMergeSession:b,onOpenCoordination:x,onOpenProject:S}){let{groupKey:C,localPath:w,chats:T}=t,E=i.has(C),D=E?T:T.slice(0,h),O=T.length>h,k=v===!1,A=y===w,j=!!(b||x||S||g||_),M=`/project/${C}`,N=u(w);function P(e){S&&(e.preventDefault(),S(C))}let F=(0,d.jsx)(`a`,{href:M,"aria-label":`Open ${N} overview`,className:n(`sticky top-0 bg-background dark:bg-card z-10 relative p-[10px] flex items-center justify-between`,`rounded-lg text-left transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),onClick:P,children:(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,d.jsx)(`span`,{className:`relative size-3.5 shrink-0`,children:(0,d.jsx)(c,{className:`translate-y-[1px] size-3.5 shrink-0 text-slate-400 dark:text-slate-500 transition-all duration-200`})}),(0,d.jsxs)(s,{children:[(0,d.jsx)(l,{asChild:!0,children:(0,d.jsx)(`span`,{className:`truncate max-w-[150px] whitespace-nowrap text-sm text-slate-500 dark:text-slate-400`,children:N})}),(0,d.jsx)(o,{side:`right`,sideOffset:4,children:w})]})]})});return(0,d.jsxs)(`div`,{...e(f),className:`group/section`,children:[j?(0,d.jsx)(a,{onMergeSession:b?()=>b(C):void 0,mergeDisabled:k,onOpenCoordination:x?()=>x(C):void 0,onOpenProject:S?()=>S(C):void 0,onNewChat:g?()=>g(w):void 0,newChatDisabled:k||A,onRemove:_?()=>_(C):void 0,children:F}):F,(D.length>0||O)&&(0,d.jsxs)(`div`,{className:`space-y-[2px] mb-2 `,children:[D.map(m),O&&(0,d.jsx)(r,{variant:`link`,size:`sm`,onClick:()=>p(C),className:`pl-2.5 py-1 text-xs text-muted-foreground h-auto`,children:E?`Show less`:`Show more (${T.length-h})`})]})]})}function m({workspaceGroups:e,expandedGroups:t,onToggleExpandedGroup:n,renderChatRow:r,chatsPerProject:i,onNewLocalChat:a,onRemoveProject:o,isConnected:s,startingLocalPath:c,onMergeSession:l,onOpenCoordination:u,onOpenProject:f}){return(0,d.jsx)(d.Fragment,{children:e.map(e=>(0,d.jsx)(p,{group:e,expandedGroups:t,onToggleExpandedGroup:n,renderChatRow:r,chatsPerProject:i,onNewLocalChat:a,onRemoveProject:o,isConnected:s,startingLocalPath:c,onMergeSession:l,onOpenCoordination:u,onOpenProject:f},e.groupKey))})}export{m as LocalProjectsSection};
@@ -0,0 +1 @@
1
+ import{s as e}from"./chunk-Bj-mKKzh.js";import{t}from"./react-CClhXMB2.js";import{c as n,i as r}from"./uiIdentityOverlay-Ba7GNj7m.js";import{t as i}from"./jsx-runtime-CyI9ICYU.js";import{s as a}from"./lib--QVjyxmL.js";import{r as o}from"./chunk-BO2N2NFS-D0LvxnhU.js";import{_ as s,f as c,v as l,y as u}from"./index-CxCnkDVM.js";var d=e(t(),1),f=i(),p=800,m=/https:\/\/diashort\.apps\.quickable\.co\/(?:d|e)\/[A-Za-z0-9_-]+(?:\?[^\s<]*)?/g;function h(e){let t=e.match(m)??[];return[...new Set(t)]}var g=(0,d.memo)(function({message:e}){let t=r({id:`message.assistant.response`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),i=e.text.length>p,d=h(e.text),m=(0,f.jsx)(`div`,{className:`text-pretty prose prose-sm dark:prose-invert px-0.5 w-full max-w-none space-y-4`,children:(0,f.jsx)(o,{components:s(),linkSafety:{enabled:!1},remarkPlugins:[a,c],children:e.text})});return(0,f.jsxs)(`div`,{className:`w-full max-w-full`,...n(t),children:[i?(0,f.jsx)(u,{type:`markdown`,title:`Response`,defaultExpanded:!0,chrome:`inline`,controlsVisibility:`hover-or-touch`,bodyClassName:`p-0`,rawContent:e.text,children:m}):m,d.length>0?(0,f.jsx)(`div`,{className:`mt-4 space-y-3`,children:d.map((t,n)=>(0,f.jsx)(u,{type:`embed`,title:`Embedded Diagram`,defaultExpanded:!0,rawContent:t,children:(0,f.jsx)(l,{format:`diashort`,source:t})},`${e.id}-diashort-${n}`))}):null]})});export{g as TextMessage};
@@ -0,0 +1 @@
1
+ import{s as e}from"./chunk-Bj-mKKzh.js";import{t}from"./react-CClhXMB2.js";import{c as n,i as r}from"./uiIdentityOverlay-Ba7GNj7m.js";import{n as i,t as a}from"./button-DO50qOGv.js";import{t as o}from"./jsx-runtime-CyI9ICYU.js";import{s}from"./lib--QVjyxmL.js";import{L as c,S as l,V as u,_ as d}from"./index-CxCnkDVM.js";import{t as f}from"./lib-B6rgJiZ9.js";var p=e(t(),1),m=o(),h=(0,p.memo)(function({skills:e,className:t}){return e.length===0?null:(0,m.jsx)(`div`,{className:i(`flex items-center gap-1 flex-wrap justify-end`,t),children:e.map(e=>(0,m.jsxs)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[11px] font-mono text-muted-foreground`,children:[`/`,e]},e))})});function g(e,t){let n=t??(typeof navigator>`u`?null:navigator.clipboard);return n?n.writeText(e).then(()=>!0,()=>!1):Promise.resolve(!1)}var _=(0,p.memo)(function({content:e}){let t=r({id:`message.user.prompt`,c3ComponentId:`c3-111`,c3ComponentLabel:`messages`}),o=(0,p.useMemo)(()=>l(e),[e]),[_,v]=(0,p.useState)(!1),y=(0,p.useCallback)(async()=>{await g(o.content)&&(v(!0),setTimeout(()=>v(!1),2e3))},[o.content]);return(0,m.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col items-end gap-1.5`,...n(t),children:[o.skills?(0,m.jsx)(h,{skills:o.skills}):null,(0,m.jsx)(`div`,{className:`flex w-full min-w-0 justify-end gap-2 pt-2`,children:(0,m.jsxs)(`div`,{className:`group/user-message relative max-w-full min-w-0 sm:max-w-[80%] sm:min-w-[120px]`,children:[(0,m.jsx)(a,{type:`button`,variant:`ghost`,size:`icon`,className:i(`absolute top-2 right-2 z-10 h-7 w-7 rounded-full border border-border/50 bg-background/80 p-0 text-muted-foreground backdrop-blur-sm`,`opacity-0 transition-opacity duration-150`,`group-hover/user-message:opacity-100`,`group-active/user-message:opacity-100`,!_&&`hover:border-foreground/20 hover:bg-background hover:text-foreground`,_&&`border-emerald-500/30 bg-emerald-500/10 text-emerald-300 !opacity-100`),"aria-label":_?`Copied prompt`:`Copy prompt`,onClick:y,children:_?(0,m.jsx)(u,{className:`h-3 w-3`}):(0,m.jsx)(c,{className:`h-3 w-3`})}),(0,m.jsx)(`div`,{className:`max-w-full overflow-hidden rounded-[20px] py-1.5 px-3.5 bg-logo/[0.10] dark:bg-logo/[0.16] text-foreground border border-logo/25 dark:border-logo/30 shadow-sm prose prose-sm dark:prose-invert break-normal [overflow-wrap:break-word] [&_p]:whitespace-pre-line [&_p]:break-normal [&_p]:[overflow-wrap:break-word]`,children:(0,m.jsx)(f,{remarkPlugins:[s],components:d(),children:o.content})})]})})]})});export{_ as UserMessage};
@@ -0,0 +1 @@
1
+ import{A as e,B as t,C as n,E as r,H as i,M as a,U as o,V as s,k as c,p as l,w as u,z as d}from"./isArrayLikeObject-D8SJFmkN.js";import{A as f,C as p,D as m,M as h,N as g,S as _,T as v,f as y,h as b,u as x,w as S}from"./_baseUniq-JL-aaF4P.js";var C=/\s/;function w(e){for(var t=e.length;t--&&C.test(e.charAt(t)););return t}var ee=/^\s+/;function T(e){return e&&e.slice(0,w(e)+1).replace(ee,``)}var E=NaN,D=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,k=/^0o[0-7]+$/i,A=parseInt;function j(e){if(typeof e==`number`)return e;if(g(e))return E;if(t(e)){var n=typeof e.valueOf==`function`?e.valueOf():e;e=t(n)?n+``:n}if(typeof e!=`string`)return e===0?e:+e;e=T(e);var r=O.test(e);return r||k.test(e)?A(e.slice(2),r?2:8):D.test(e)?E:+e}var M=1/0,N=17976931348623157e292;function P(e){return e?(e=j(e),e===M||e===-M?(e<0?-1:1)*N:e===e?e:0):e===0?e:0}function F(e){var t=P(e),n=t%1;return t===t?n?t-n:t:0}function I(e){return e!=null&&e.length?_(e,1):[]}var L=Object.prototype,R=L.hasOwnProperty,z=r(function(t,r){t=Object(t);var i=-1,a=r.length,o=a>2?r[2]:void 0;for(o&&n(r[0],r[1],o)&&(a=1);++i<a;)for(var s=r[i],c=l(s),u=-1,d=c.length;++u<d;){var f=c[u],p=t[f];(p===void 0||e(p,L[f])&&!R.call(t,f))&&(t[f]=s[f])}return t});function B(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function V(e){return function(t,n,r){var i=Object(t);if(!u(t)){var a=y(n,3);t=m(t),n=function(e){return a(i[e],e,i)}}var o=e(t,n,r);return o>-1?i[a?t[o]:o]:void 0}}var H=Math.max;function U(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=n==null?0:F(n);return i<0&&(i=H(r+i,0)),f(e,y(t,3),i)}var W=V(U);function G(e,t){var n=-1,r=u(e)?Array(e.length):[];return x(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function K(e,t){return(s(e)?h:G)(e,y(t,3))}var q=Object.prototype.hasOwnProperty;function J(e,t){return e!=null&&q.call(e,t)}function Y(e,t){return e!=null&&b(e,t,J)}var X=`[object String]`;function Z(e){return typeof e==`string`||!s(e)&&i(e)&&o(e)==X}function Q(e,t){return e<t}function $(e,t,n){for(var r=-1,i=e.length;++r<i;){var a=e[r],o=t(a);if(o!=null&&(s===void 0?o===o&&!g(o):n(o,s)))var s=o,c=a}return c}function te(e){return e&&e.length?$(e,d,Q):void 0}function ne(e,n,r,i){if(!t(e))return e;n=v(n,e);for(var o=-1,s=n.length,l=s-1,u=e;u!=null&&++o<s;){var d=S(n[o]),f=r;if(d===`__proto__`||d===`constructor`||d===`prototype`)return e;if(o!=l){var p=u[d];f=i?i(p,d,u):void 0,f===void 0&&(f=t(p)?p:a(n[o+1])?[]:{})}c(u,d,f),u=u[d]}return e}function re(e,t,n){for(var r=-1,i=t.length,a={};++r<i;){var o=t[r],s=p(e,o);n(s,o)&&ne(a,v(o,e),s)}return a}export{Z as a,G as c,z as d,I as f,Q as i,W as l,P as m,te as n,Y as o,F as p,$ as r,K as s,re as t,B as u};
@@ -0,0 +1 @@
1
+ import{A as e,B as t,F as n,H as r,M as i,O as a,T as o,U as s,V as c,W as l,_ as u,a as d,b as f,c as p,d as m,g as h,h as g,i as _,k as v,l as y,n as ee,o as b,p as x,r as te,s as ne,u as re,v as ie,w as S,y as C,z as w}from"./isArrayLikeObject-D8SJFmkN.js";import{i as ae,n as T,r as E}from"./isEmpty-BF3YX5Jk.js";var oe=`[object Symbol]`;function D(e){return typeof e==`symbol`||r(e)&&s(e)==oe}function O(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var se=1/0,ce=l?l.prototype:void 0,le=ce?ce.toString:void 0;function ue(e){if(typeof e==`string`)return e;if(c(e))return O(e,ue)+``;if(D(e))return le?le.call(e):``;var t=e+``;return t==`0`&&1/e==-se?`-0`:t}function de(){}function fe(e,t){for(var n=-1,r=e==null?0:e.length;++n<r&&t(e[n],n,e)!==!1;);return e}function pe(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function me(e){return e!==e}function he(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}function ge(e,t,n){return t===t?he(e,t,n):pe(e,me,n)}function _e(e,t){return!!(e!=null&&e.length)&&ge(e,t,0)>-1}function k(e){return S(e)?g(e):ae(e)}var ve=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ye=/^\w*$/;function A(e,t){if(c(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||D(e)?!0:ye.test(e)||!ve.test(e)||t!=null&&e in Object(t)}var be=500;function xe(e){var t=re(e,function(e){return n.size===be&&n.clear(),e}),n=t.cache;return t}var Se=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ce=/\\(\\)?/g,we=xe(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(Se,function(e,n,r,i){t.push(r?i.replace(Ce,`$1`):n||e)}),t});function j(e){return e==null?``:ue(e)}function M(e,t){return c(e)?e:A(e,t)?[e]:we(j(e))}var Te=1/0;function N(e){if(typeof e==`string`||D(e))return e;var t=e+``;return t==`0`&&1/e==-Te?`-0`:t}function P(e,t){t=M(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[N(t[n++])];return n&&n==r?e:void 0}function Ee(e,t,n){var r=e==null?void 0:P(e,t);return r===void 0?n:r}function F(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var I=l?l.isConcatSpreadable:void 0;function De(e){return c(e)||f(e)||!!(I&&e&&e[I])}function L(e,t,n,r,i){var a=-1,o=e.length;for(n||=De,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?L(s,t-1,n,r,i):F(i,s):r||(i[i.length]=s)}return i}function Oe(e,t,n,r){var i=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++i]);++i<a;)n=t(n,e[i],i,e);return n}function ke(e,t){return e&&a(t,k(t),e)}function Ae(e,t){return e&&a(t,x(t),e)}function R(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}function z(){return[]}var je=Object.prototype.propertyIsEnumerable,B=Object.getOwnPropertySymbols,V=B?function(e){return e==null?[]:(e=Object(e),R(B(e),function(t){return je.call(e,t)}))}:z;function Me(e,t){return a(e,V(e),t)}var Ne=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)F(t,V(e)),e=y(e);return t}:z;function Pe(e,t){return a(e,Ne(e),t)}function Fe(e,t,n){var r=t(e);return c(e)?r:F(r,n(e))}function H(e){return Fe(e,k,V)}function Ie(e){return Fe(e,x,Ne)}var Le=Object.prototype.hasOwnProperty;function Re(e){var t=e.length,n=new e.constructor(t);return t&&typeof e[0]==`string`&&Le.call(e,`index`)&&(n.index=e.index,n.input=e.input),n}function ze(e,t){var n=t?d(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var Be=/\w*$/;function Ve(e){var t=new e.constructor(e.source,Be.exec(e));return t.lastIndex=e.lastIndex,t}var He=l?l.prototype:void 0,Ue=He?He.valueOf:void 0;function We(e){return Ue?Object(Ue.call(e)):{}}var Ge=`[object Boolean]`,Ke=`[object Date]`,qe=`[object Map]`,Je=`[object Number]`,Ye=`[object RegExp]`,Xe=`[object Set]`,Ze=`[object String]`,Qe=`[object Symbol]`,$e=`[object ArrayBuffer]`,et=`[object DataView]`,tt=`[object Float32Array]`,nt=`[object Float64Array]`,rt=`[object Int8Array]`,it=`[object Int16Array]`,at=`[object Int32Array]`,ot=`[object Uint8Array]`,st=`[object Uint8ClampedArray]`,ct=`[object Uint16Array]`,lt=`[object Uint32Array]`;function ut(e,t,n){var r=e.constructor;switch(t){case $e:return d(e);case Ge:case Ke:return new r(+e);case et:return ze(e,n);case tt:case nt:case rt:case it:case at:case ot:case st:case ct:case lt:return _(e,n);case qe:return new r;case Je:case Ze:return new r(e);case Ye:return Ve(e);case Xe:return new r;case Qe:return We(e)}}var dt=`[object Map]`;function ft(e){return r(e)&&T(e)==dt}var pt=u&&u.isMap,mt=pt?ie(pt):ft,ht=`[object Set]`;function gt(e){return r(e)&&T(e)==ht}var _t=u&&u.isSet,vt=_t?ie(_t):gt,yt=1,bt=2,xt=4,St=`[object Arguments]`,Ct=`[object Array]`,wt=`[object Boolean]`,Tt=`[object Date]`,Et=`[object Error]`,Dt=`[object Function]`,Ot=`[object GeneratorFunction]`,kt=`[object Map]`,At=`[object Number]`,jt=`[object Object]`,Mt=`[object RegExp]`,Nt=`[object Set]`,Pt=`[object String]`,Ft=`[object Symbol]`,It=`[object WeakMap]`,Lt=`[object ArrayBuffer]`,Rt=`[object DataView]`,zt=`[object Float32Array]`,Bt=`[object Float64Array]`,Vt=`[object Int8Array]`,Ht=`[object Int16Array]`,Ut=`[object Int32Array]`,Wt=`[object Uint8Array]`,Gt=`[object Uint8ClampedArray]`,Kt=`[object Uint16Array]`,qt=`[object Uint32Array]`,U={};U[St]=U[Ct]=U[Lt]=U[Rt]=U[wt]=U[Tt]=U[zt]=U[Bt]=U[Vt]=U[Ht]=U[Ut]=U[kt]=U[At]=U[jt]=U[Mt]=U[Nt]=U[Pt]=U[Ft]=U[Wt]=U[Gt]=U[Kt]=U[qt]=!0,U[Et]=U[Dt]=U[It]=!1;function W(e,r,i,a,o,s){var l,u=r&yt,d=r&bt,f=r&xt;if(i&&(l=o?i(e,a,o,s):i(e)),l!==void 0)return l;if(!t(e))return e;var m=c(e);if(m){if(l=Re(e),!u)return n(e,l)}else{var h=T(e),g=h==Dt||h==Ot;if(C(e))return ne(e,u);if(h==jt||h==St||g&&!o){if(l=d||g?{}:te(e),!u)return d?Pe(e,Ae(l,e)):Me(e,ke(l,e))}else{if(!U[h])return o?e:{};l=ut(e,h,u)}}s||=new p;var _=s.get(e);if(_)return _;s.set(e,l),vt(e)?e.forEach(function(t){l.add(W(t,r,i,t,e,s))}):mt(e)&&e.forEach(function(t,n){l.set(n,W(t,r,i,n,e,s))});var y=m?void 0:(f?d?Ie:H:d?x:k)(e);return fe(y||e,function(t,n){y&&(n=t,t=e[n]),v(l,n,W(t,r,i,n,e,s))}),l}var Jt=`__lodash_hash_undefined__`;function Yt(e){return this.__data__.set(e,Jt),this}function Xt(e){return this.__data__.has(e)}function G(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new m;++t<n;)this.add(e[t])}G.prototype.add=G.prototype.push=Yt,G.prototype.has=Xt;function Zt(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function K(e,t){return e.has(t)}var Qt=1,$t=2;function en(e,t,n,r,i,a){var o=n&Qt,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&$t?new G:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var g=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(g!==void 0){if(g)continue;f=!1;break}if(p){if(!Zt(t,function(e,t){if(!K(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}function tn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function q(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var nn=1,rn=2,an=`[object Boolean]`,on=`[object Date]`,sn=`[object Error]`,cn=`[object Map]`,ln=`[object Number]`,un=`[object RegExp]`,dn=`[object Set]`,fn=`[object String]`,pn=`[object Symbol]`,mn=`[object ArrayBuffer]`,hn=`[object DataView]`,gn=l?l.prototype:void 0,J=gn?gn.valueOf:void 0;function _n(t,n,r,i,a,o,s){switch(r){case hn:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case mn:return!(t.byteLength!=n.byteLength||!o(new b(t),new b(n)));case an:case on:case ln:return e(+t,+n);case sn:return t.name==n.name&&t.message==n.message;case un:case fn:return t==n+``;case cn:var c=tn;case dn:var l=i&nn;if(c||=q,t.size!=n.size&&!l)return!1;var u=s.get(t);if(u)return u==n;i|=rn,s.set(t,n);var d=en(c(t),c(n),i,a,o,s);return s.delete(t),d;case pn:if(J)return J.call(t)==J.call(n)}return!1}var vn=1,yn=Object.prototype.hasOwnProperty;function bn(e,t,n,r,i,a){var o=n&vn,s=H(e),c=s.length;if(c!=H(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:yn.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var h=e[u],g=t[u];if(r)var _=o?r(g,h,u,t,e,a):r(h,g,u,e,t,a);if(!(_===void 0?h===g||i(h,g,n,r,a):_)){p=!1;break}m||=u==`constructor`}if(p&&!m){var v=e.constructor,y=t.constructor;v!=y&&`constructor`in e&&`constructor`in t&&!(typeof v==`function`&&v instanceof v&&typeof y==`function`&&y instanceof y)&&(p=!1)}return a.delete(e),a.delete(t),p}var xn=1,Sn=`[object Arguments]`,Cn=`[object Array]`,Y=`[object Object]`,wn=Object.prototype.hasOwnProperty;function Tn(e,t,n,r,i,a){var o=c(e),s=c(t),l=o?Cn:T(e),u=s?Cn:T(t);l=l==Sn?Y:l,u=u==Sn?Y:u;var d=l==Y,f=u==Y,m=l==u;if(m&&C(e)){if(!C(t))return!1;o=!0,d=!1}if(m&&!d)return a||=new p,o||h(e)?en(e,t,n,r,i,a):_n(e,t,l,n,r,i,a);if(!(n&xn)){var g=d&&wn.call(e,`__wrapped__`),_=f&&wn.call(t,`__wrapped__`);if(g||_){var v=g?e.value():e,y=_?t.value():t;return a||=new p,i(v,y,n,r,a)}}return m?(a||=new p,bn(e,t,n,r,i,a)):!1}function X(e,t,n,i,a){return e===t?!0:e==null||t==null||!r(e)&&!r(t)?e!==e&&t!==t:Tn(e,t,n,i,X,a)}var En=1,Dn=2;function On(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new p;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?X(u,l,En|Dn,r,d):f))return!1}}return!0}function kn(e){return e===e&&!t(e)}function An(e){for(var t=k(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,kn(i)]}return t}function Z(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function jn(e){var t=An(e);return t.length==1&&t[0][2]?Z(t[0][0],t[0][1]):function(n){return n===e||On(n,e,t)}}function Mn(e,t){return e!=null&&t in Object(e)}function Nn(e,t,n){t=M(t,e);for(var r=-1,a=t.length,s=!1;++r<a;){var l=N(t[r]);if(!(s=e!=null&&n(e,l)))break;e=e[l]}return s||++r!=a?s:(a=e==null?0:e.length,!!a&&o(a)&&i(l,a)&&(c(e)||f(e)))}function Pn(e,t){return e!=null&&Nn(e,t,Mn)}var Fn=1,In=2;function Ln(e,t){return A(e)&&kn(t)?Z(N(e),t):function(n){var r=Ee(n,e);return r===void 0&&r===t?Pn(n,e):X(t,r,Fn|In)}}function Rn(e){return function(t){return t?.[e]}}function zn(e){return function(t){return P(t,e)}}function Bn(e){return A(e)?Rn(N(e)):zn(e)}function Q(e){return typeof e==`function`?e:e==null?w:typeof e==`object`?c(e)?Ln(e[0],e[1]):jn(e):Bn(e)}function Vn(e,t){return e&&ee(e,t,k)}function Hn(e,t){return function(n,r){if(n==null)return n;if(!S(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var $=Hn(Vn);function Un(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}function Wn(e){return typeof e==`function`?e:w}function Gn(e,t){return(c(e)?fe:$)(e,Wn(t))}function Kn(e,t){var n=[];return $(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function qn(e,t){return(c(e)?R:Kn)(e,Q(t,3))}function Jn(e,t){return O(t,function(t){return e[t]})}function Yn(e){return e==null?[]:Jn(e,k(e))}function Xn(e){return e===void 0}function Zn(e,t,n,r,i){return i(e,function(e,i,a){n=r?(r=!1,e):t(n,e,i,a)}),n}function Qn(e,t,n){var r=c(e)?Oe:Zn,i=arguments.length<3;return r(e,Q(t,4),n,i,$)}var $n=E&&1/q(new E([,-0]))[1]==1/0?function(e){return new E(e)}:de,er=200;function tr(e,t,n){var r=-1,i=_e,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=Un;else if(a>=er){var l=t?null:$n(e);if(l)return q(l);o=!1,i=K,c=new G}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}export{pe as A,P as C,k as D,j as E,O as M,D as N,_e as O,L as S,M as T,Zt as _,qn as a,Ie as b,Wn as c,Vn as d,Q as f,K as g,Nn as h,Yn as i,de as j,ge as k,Un as l,Pn as m,Qn as n,Kn as o,Rn as p,Xn as r,Gn as s,tr as t,$ as u,G as v,N as w,R as x,W as y};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./path-DZF-JdEe.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-CuB4kiSK.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -0,0 +1 @@
1
+ import"./chunk-K5T4RW27-BsKN63rv.js";import{n as e}from"./chunk-7N4EOEYR-BDUPds87.js";export{e as createArchitectureServices};