@bendyline/gezel-service 1.0.7 → 1.1.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 (237) hide show
  1. package/dist/bin/gezeld.js +6253 -3616
  2. package/dist/handboek-content/whats-new/1.26224.md +1 -0
  3. package/dist/handboek-content/whats-new/1.26226.md +1 -0
  4. package/dist/handboek-content/whats-new/1.26231.md +1 -0
  5. package/dist/handboek-content/whats-new/1.26234.md +1 -0
  6. package/dist/handboek-content/whats-new/1.26237.md +1 -0
  7. package/dist/handboek-content/whats-new/1.26244.md +2 -1
  8. package/dist/handboek-content/whats-new/1.26247.md +88 -0
  9. package/dist/handboek-content/whats-new/whats-new-index.md +1 -0
  10. package/dist/index-store/static-index-worker.js +17 -1
  11. package/dist/index.d.ts +473 -209
  12. package/dist/index.js +6251 -3614
  13. package/dist/memory/embed-worker.js +58 -2
  14. package/dist/memory/image-embed-worker.js +8 -0
  15. package/dist/providers/llama-cpp/gguf-metadata-worker.js +2 -0
  16. package/dist/providers/mlx/python/gezel_mlx_server.py +18 -18
  17. package/dist/ui/assets/AmbientDashboardCard-Cf5fi_fY.js +1 -0
  18. package/dist/ui/assets/{AudioEngineSettings-BDrNIGGm.js → AudioEngineSettings-D3L7HOHe.js} +1 -1
  19. package/dist/ui/assets/{BenchmarksView-CHyujjs8.js → BenchmarksView-B68hrLCl.js} +1 -1
  20. package/dist/ui/assets/CatalogBrowser-DEM9t7Es.js +1 -0
  21. package/dist/ui/assets/{ChannelsSettings-Be_W1mr8.js → ChannelsSettings-DtK_k0Ul.js} +1 -1
  22. package/dist/ui/assets/ChatTimelineView-CQ4Sf4Ip.js +7 -0
  23. package/dist/ui/assets/ConfirmDialog-Dt1ed4Fh.js +1 -0
  24. package/dist/ui/assets/ConnectedAppsPanel-Cl8LEkrt.js +1 -0
  25. package/dist/ui/assets/CraftbookEditor-DEQRlQ2p.js +1 -0
  26. package/dist/ui/assets/{CraftbookScriptEditorView-DXIZYZT3.js → CraftbookScriptEditorView-DhXkkIdK.js} +1 -1
  27. package/dist/ui/assets/{CraftbookTabContent-Bm7t_b37.js → CraftbookTabContent-_oIdpQTG.js} +1 -1
  28. package/dist/ui/assets/{CraftbookToolsetSetup-DTEA-3K3.js → CraftbookToolsetSetup-BKg136L1.js} +1 -1
  29. package/dist/ui/assets/{CraftbooksView-C4X99TTe.js → CraftbooksView-Dm2zH-nW.js} +2 -2
  30. package/dist/ui/assets/{DiffpackReviewView-ClcNxtmF.js → DiffpackReviewView-EFLGJnwr.js} +1 -1
  31. package/dist/ui/assets/DocumentDetail-ClDRj2N-.js +1 -0
  32. package/dist/ui/assets/DocumentsView-ny9oieg2.js +1 -0
  33. package/dist/ui/assets/DropdownMenu-S4d9-3j3.js +1 -0
  34. package/dist/ui/assets/Ds4Settings-CeWlm5Vf.js +1 -0
  35. package/dist/ui/assets/EmbeddedChat-Hjrrgpao.js +1 -0
  36. package/dist/ui/assets/{FaceRecognitionCard-D3hdc7uU.js → FaceRecognitionCard-D7ufKqjI.js} +1 -1
  37. package/dist/ui/assets/FileMapView-DRjf59RH.js +1 -0
  38. package/dist/ui/assets/{FoldersSettings-BcNzl4vT.js → FoldersSettings-DDUhaFio.js} +1 -1
  39. package/dist/ui/assets/GezelDetail-Cph6pVGb.js +1 -0
  40. package/dist/ui/assets/{GezelJsonEditor-fOvYclu9.js → GezelJsonEditor-7vDGyBib.js} +1 -1
  41. package/dist/ui/assets/{GezellenView-BTzhHrxi.js → GezellenView-DQhcO1CP.js} +1 -1
  42. package/dist/ui/assets/{GildeUpdatesCard-Bq6XEpLP.js → GildeUpdatesCard-UKKNm_U8.js} +1 -1
  43. package/dist/ui/assets/{GithubSignInChip-CnlTCG8G.js → GithubSignInChip-DjM3qZsL.js} +1 -1
  44. package/dist/ui/assets/{HandboekMediaProvider-BfQW8_Nr.js → HandboekMediaProvider-DixaXTAH.js} +1 -1
  45. package/dist/ui/assets/HandboekView-BeNQqho9.js +1 -0
  46. package/dist/ui/assets/HistoryView-E2szGNGS.js +1 -0
  47. package/dist/ui/assets/{HomeView-CB_5TJIp.css → HomeView-CNeqCFPc.css} +1 -1
  48. package/dist/ui/assets/HomeView-CkiS3DXy.js +1 -0
  49. package/dist/ui/assets/{ImageEngineSettings-BpMfQy4f.js → ImageEngineSettings-BCKT7Gvi.js} +1 -1
  50. package/dist/ui/assets/{ImageRecognitionSettings-Ct-7-Oas.js → ImageRecognitionSettings-DD6syFez.js} +1 -1
  51. package/dist/ui/assets/IncompleteDownloads-BiPaaahS.js +1 -0
  52. package/dist/ui/assets/InstallProgressRow-DyKOI4MU.js +1 -0
  53. package/dist/ui/assets/KnowledgeCatalogsCard-B132vzRa.js +1 -0
  54. package/dist/ui/assets/KnowledgeView-CtPuIlN4.js +1 -0
  55. package/dist/ui/assets/LlamaCppSettings-D6zHcu4W.js +1 -0
  56. package/dist/ui/assets/{MarkdownField-D-0Zw7gM.js → MarkdownField-CK8K3fzj.js} +1 -1
  57. package/dist/ui/assets/MemoriesTree-DzjXzIrM.js +1 -0
  58. package/dist/ui/assets/{MicrophoneSettings-BIaFxyY_.js → MicrophoneSettings-1FH83SCq.js} +1 -1
  59. package/dist/ui/assets/MlxSettings-BYxUqFnJ.js +1 -0
  60. package/dist/ui/assets/ModelPicker-DoXPfQkQ.js +1 -0
  61. package/dist/ui/assets/{NewScriptDialog-D-gkY8TS.js → NewScriptDialog-C5X-7PMt.js} +1 -1
  62. package/dist/ui/assets/NewTaskDialog-Cyqtmigv.js +2 -0
  63. package/dist/ui/assets/{OllamaSettings-oIE2Mech.js → OllamaSettings-DkjmA-sB.js} +1 -1
  64. package/dist/ui/assets/ProjectChat-YEqUME6k.js +5 -0
  65. package/dist/ui/assets/{ProjectConnectionsTab-BZqp-oKI.js → ProjectConnectionsTab-dFCJpW93.js} +1 -1
  66. package/dist/ui/assets/ProjectGitStatusBar-CjZxG54t.js +1 -0
  67. package/dist/ui/assets/{ProjectGithubView-w8suLCsA.js → ProjectGithubView-CQ4-tmPx.js} +1 -1
  68. package/dist/ui/assets/{ProjectMailTab-DGo7eyB8.js → ProjectMailTab-NaScsZJf.js} +1 -1
  69. package/dist/ui/assets/ProjectOverviewView-ChjxbQas.js +1 -0
  70. package/dist/ui/assets/{ProjectTimeline-DRe3D9qY.js → ProjectTimeline-BZpdCisR.js} +1 -1
  71. package/dist/ui/assets/ProjectsView-J77ECk6V.js +7 -0
  72. package/dist/ui/assets/{RecommendedBadge-BKiDixnB.js → RecommendedBadge-D0m68PAu.js} +1 -1
  73. package/dist/ui/assets/{RemoteServersPanel-DGyl6-Rg.js → RemoteServersPanel-BdLOoORu.js} +1 -1
  74. package/dist/ui/assets/ScriptEditorTabs-BFvIiDFZ.js +2 -0
  75. package/dist/ui/assets/ScriptEditorView-B09rm1vz.js +5 -0
  76. package/dist/ui/assets/{ScriptsView-WQc28TmQ.js → ScriptsView-BvNAJXpo.js} +1 -1
  77. package/dist/ui/assets/{SecurityComplianceSettings-DsMEA4J3.js → SecurityComplianceSettings-DzGOnptO.js} +1 -1
  78. package/dist/ui/assets/SessionSwitcher-6okzcxT7.js +1 -0
  79. package/dist/ui/assets/SettingsView-Dur4dLhW.js +3 -0
  80. package/dist/ui/assets/SquisqIntegration-6v3yNOIP.js +2 -0
  81. package/dist/ui/assets/{StorageCleanupDialog-DHqwyMZZ.js → StorageCleanupDialog-OQlomMJD.js} +1 -1
  82. package/dist/ui/assets/{StorageUsageCard-CdT6SU51.js → StorageUsageCard-f6c6qTbM.js} +1 -1
  83. package/dist/ui/assets/Tabs-jE0Z5Tzd.js +1 -0
  84. package/dist/ui/assets/TaskTabContent-0w3kAUWR.js +1 -0
  85. package/dist/ui/assets/TasksView-BVMT4BAY.js +1 -0
  86. package/dist/ui/assets/{TerminalCodeEditor-77pBm6f3.js → TerminalCodeEditor-DO7zLKy-.js} +2 -2
  87. package/dist/ui/assets/ToolsetsEditor-Bb1wD5mV.js +8 -0
  88. package/dist/ui/assets/TransformToolbarButton-BWYkEB0d.js +5 -0
  89. package/dist/ui/assets/UnrecognizedModels-HtdMZUqK.js +1 -0
  90. package/dist/ui/assets/{VideoEngineSettings-DzMeINuv.js → VideoEngineSettings-Dq8Nw_tK.js} +1 -1
  91. package/dist/ui/assets/{WorkspaceIndexPane-DU4yd4Ai.js → WorkspaceIndexPane-fpDz4MwZ.js} +1 -1
  92. package/dist/ui/assets/{api-BX5xXiFs.js → api-BPraLwsh.js} +1 -1
  93. package/dist/ui/assets/chat-thread-memory-Be48zsyG.js +1 -0
  94. package/dist/ui/assets/chunk-6ECMNUIP-DDVjPyfK.js +15 -0
  95. package/dist/ui/assets/{chunk-6N2J7C2B-B5QIrD9m.js → chunk-6N2J7C2B-CsppiLVr.js} +1 -1
  96. package/dist/ui/assets/{chunk-A6N6IN3I-DXok09eC.js → chunk-A6N6IN3I-ofeM4l8g.js} +1 -1
  97. package/dist/ui/assets/chunk-B7GEAZBI-Divd2h1k.js +1 -0
  98. package/dist/ui/assets/chunk-DXYWKZ52-BXcAlClu.js +1 -0
  99. package/dist/ui/assets/chunk-FLR2ARKC-D7wrvQgT.js +2 -0
  100. package/dist/ui/assets/chunk-IIQYS2YH-DKZhWMpn.js +1 -0
  101. package/dist/ui/assets/{chunk-ILCJ3WFD-WRukZ7R1.js → chunk-ILCJ3WFD-CLZxw4Ge.js} +3 -3
  102. package/dist/ui/assets/chunk-OBADJV7C-CDVOcmYt.js +1 -0
  103. package/dist/ui/assets/chunk-Q77KNJIN-BIDRf0aP.js +6 -0
  104. package/dist/ui/assets/chunk-S5PCVMKU-Df5XzhSE.js +6 -0
  105. package/dist/ui/assets/chunk-UBFT2CDQ-FexGDigd.js +31 -0
  106. package/dist/ui/assets/{chunk-USU6HTKB-D5FmDzJU.js → chunk-USU6HTKB-B_p-YcDp.js} +1 -1
  107. package/dist/ui/assets/chunk-VKXOZTYP-BoVvWSBR.js +5 -0
  108. package/dist/ui/assets/{chunk-6RQOV3B3-CwvKotJw.js → chunk-VPWPEMZJ-DRKoa_j0.js} +1 -1
  109. package/dist/ui/assets/{chunk-WATAOG4Y-DXg2lov5.js → chunk-WATAOG4Y-C1EXVPmG.js} +1 -1
  110. package/dist/ui/assets/{container-B7jJtK5V.js → container-Ce94efbg.js} +1 -1
  111. package/dist/ui/assets/csv-62UGQMzZ.js +1 -0
  112. package/dist/ui/assets/data-B2kHjlc5.js +1 -0
  113. package/dist/ui/assets/dist-B9-VrAP8.js +2 -0
  114. package/dist/ui/assets/dist-BaHut5iX.js +2 -0
  115. package/dist/ui/assets/dist-BqGwkOe5.js +225 -0
  116. package/dist/ui/assets/dist-ZnIgkoEi.js +4 -0
  117. package/dist/ui/assets/{dist-BHl1ZAVG.js → dist-l6uUFZMV.js} +2 -2
  118. package/dist/ui/assets/dist-pLLFUPO-.js +1 -0
  119. package/dist/ui/assets/{doc-s6H7T0IO.js → doc-Dr5K49bx.js} +28 -28
  120. package/dist/ui/assets/document-companion-BQk2kS0F.js +1 -0
  121. package/dist/ui/assets/document-import-QoM9UxJr.js +1 -0
  122. package/dist/ui/assets/docx-sXa1Rf41.js +2 -0
  123. package/dist/ui/assets/{epub-B98SgHBz.js → epub-RopMP0ec.js} +4 -4
  124. package/dist/ui/assets/{export-options-Bu-tI6og.js → export-options-f7PKjEBb.js} +1 -1
  125. package/dist/ui/assets/extract-UTAOG7LV-4WDRw1o4.js +1 -0
  126. package/dist/ui/assets/file-browser-c2tf4MIb.js +5 -0
  127. package/dist/ui/assets/html-BGVOMhkv.js +253 -0
  128. package/dist/ui/assets/icons-DWaUNQbT.js +1 -0
  129. package/dist/ui/assets/images-JLBFCDD4-6JitW0hD.js +1 -0
  130. package/dist/ui/assets/index-B8NcxqcR.css +1 -0
  131. package/dist/ui/assets/index-C0DYtvfg.js +34 -0
  132. package/dist/ui/assets/index-J8TOMdvV.js +2 -0
  133. package/dist/ui/assets/{infer-kCLH1C8z.js → infer-LEGOsu64.js} +2 -2
  134. package/dist/ui/assets/ironcalc-BAi5gOlE.js +3 -0
  135. package/dist/ui/assets/layouts-2A7QNF6Y-CVwP7noP.js +1 -0
  136. package/dist/ui/assets/{mail-link-CI6YD6k2.js → mail-link-DXkmCd5b.js} +1 -1
  137. package/dist/ui/assets/markdown-baseline-9B52XlX2.js +1 -0
  138. package/dist/ui/assets/{markdown-Bi9b5f5Y.js → markdown-ryKA_OmY.js} +1 -1
  139. package/dist/ui/assets/materialize-A34OZGEU-xNNKzytx.js +1 -0
  140. package/dist/ui/assets/model-inventory-ykSm_IT5.js +1 -0
  141. package/dist/ui/assets/{model-quantization-BDzrELN_.js → model-quantization-CLO7XLoF.js} +1 -1
  142. package/dist/ui/assets/{monaco-base-BiVSa1J-.js → monaco-base-B1H1U1Sw.js} +1 -1
  143. package/dist/ui/assets/{monaco-setup-UeltVkg_.js → monaco-setup-DjhrGQui.js} +1 -1
  144. package/dist/ui/assets/{new-project-meta-0xhggGA_.js → new-project-meta-_f9sfcRX.js} +1 -1
  145. package/dist/ui/assets/outside-in-D73N1g_b.js +3 -0
  146. package/dist/ui/assets/{pdf-DgTjy3rN.js → pdf-BOjVDlCK.js} +3 -3
  147. package/dist/ui/assets/{pending-drafts-YVW6X55O.js → pending-drafts-B11MKQ9R.js} +1 -1
  148. package/dist/ui/assets/{poppetje-Ce-02Aqi.js → poppetje-DLB8uevw.js} +2 -2
  149. package/dist/ui/assets/pptx-BuxyNxQh.js +6 -0
  150. package/dist/ui/assets/primitives-CWrGZpPI.js +41 -0
  151. package/dist/ui/assets/run-export-ChaMXrKS.js +23 -0
  152. package/dist/ui/assets/squisq-formats-aAdypXoy.js +1 -0
  153. package/dist/ui/assets/standalone-source-q_Zzd1bd.js +11 -0
  154. package/dist/ui/assets/storage-D8pE2zg0.js +1 -0
  155. package/dist/ui/assets/styles-BhnF3s2q.css +1 -0
  156. package/dist/ui/assets/styles-CKVKwqoQ.js +550 -0
  157. package/dist/ui/assets/table-fcouR4db.js +1 -0
  158. package/dist/ui/assets/{terminal-monaco-setup-DNoK2tN4.js → terminal-monaco-setup-BAzrVzeR.js} +1 -1
  159. package/dist/ui/assets/{useCompactLayout-BarJPYcv.js → useCompactLayout-Dtolvzye.js} +0 -0
  160. package/dist/ui/assets/{useCopilotAvailability-BH1nLXQI.js → useCopilotAvailability-3xZvKgTF.js} +1 -1
  161. package/dist/ui/assets/{useDiffpacks-CK8W_OD_.js → useDiffpacks-Dsnr0wtX.js} +1 -1
  162. package/dist/ui/assets/{useGitSync-DWxX5-7K.js → useGitSync-BCTptQsp.js} +1 -1
  163. package/dist/ui/assets/{useShowWorkInProgressFeatures-DwwviLRO.js → useShowWorkInProgressFeatures-BhDNuQiU.js} +1 -1
  164. package/dist/ui/assets/{useTotalRamBytes-WoN_mi-V.js → useTotalRamBytes-DIx-_pf8.js} +1 -1
  165. package/dist/ui/assets/wasm-DdxEDD2H.js +1 -0
  166. package/dist/ui/assets/wasm_bg-DW9Xt_vt.wasm +0 -0
  167. package/dist/ui/assets/xlsx-DyBGuAO1.js +4 -0
  168. package/dist/ui/index.html +19 -18
  169. package/package.json +11 -11
  170. package/dist/ui/assets/AmbientDashboardCard-C1Ee-FKZ.js +0 -1
  171. package/dist/ui/assets/CatalogBrowser-Bz8ZtxPn.js +0 -1
  172. package/dist/ui/assets/ChatTimelineView-Do9EryEH.js +0 -7
  173. package/dist/ui/assets/ConfirmDialog-BHFs6vmJ.js +0 -1
  174. package/dist/ui/assets/ConnectedAppsPanel-BtMayq0R.js +0 -1
  175. package/dist/ui/assets/CraftbookEditor-D5jTzWwF.js +0 -1
  176. package/dist/ui/assets/DocumentDetail-CPU51d04.js +0 -1
  177. package/dist/ui/assets/DocumentsView-B6OyjvJ0.js +0 -1
  178. package/dist/ui/assets/DropdownMenu-D5fCzIrh.js +0 -1
  179. package/dist/ui/assets/Ds4Settings-CrUM_KGP.js +0 -1
  180. package/dist/ui/assets/EmbeddedChat-ue9ia-WY.js +0 -1
  181. package/dist/ui/assets/FileMapView-CxvfDLGA.js +0 -1
  182. package/dist/ui/assets/GezelDetail-DHuqBK55.js +0 -1
  183. package/dist/ui/assets/HandboekView-CPnnyj29.js +0 -1
  184. package/dist/ui/assets/HistoryView-B4VAfEMe.js +0 -1
  185. package/dist/ui/assets/HomeView-ccH60J6f.js +0 -1
  186. package/dist/ui/assets/KnowledgeCatalogsCard-Bi5Rx9Iz.js +0 -1
  187. package/dist/ui/assets/KnowledgeView-DAwjwLZo.js +0 -1
  188. package/dist/ui/assets/LlamaCppSettings-Ceyk9pDP.js +0 -1
  189. package/dist/ui/assets/MemoriesTree-BKZEPJpm.js +0 -1
  190. package/dist/ui/assets/MlxSettings-CG3wfuc3.js +0 -1
  191. package/dist/ui/assets/ModelPicker-CCBVjLMS.js +0 -1
  192. package/dist/ui/assets/NewPathDialog-D4jnNBfP.js +0 -1
  193. package/dist/ui/assets/NewTaskDialog-Ox9D612Z.js +0 -2
  194. package/dist/ui/assets/ProjectChat-DMwKnkW-.js +0 -5
  195. package/dist/ui/assets/ProjectGitStatusBar-C6bkCSby.js +0 -1
  196. package/dist/ui/assets/ProjectOverviewView-NNwXd_QQ.js +0 -1
  197. package/dist/ui/assets/ProjectsView-SBPgYOq8.js +0 -7
  198. package/dist/ui/assets/ScriptEditorTabs-paocQ6dj.js +0 -2
  199. package/dist/ui/assets/ScriptEditorView-N9zSLqqi.js +0 -5
  200. package/dist/ui/assets/SessionSwitcher-C8te7YSe.js +0 -1
  201. package/dist/ui/assets/SettingsView-Brl4JQkW.js +0 -3
  202. package/dist/ui/assets/Tabs-BAY1Q79B.js +0 -1
  203. package/dist/ui/assets/TaskTabContent-CNPJ4DQj.js +0 -1
  204. package/dist/ui/assets/TasksView-DuMjFS8S.js +0 -1
  205. package/dist/ui/assets/ToolsetsEditor-BdxHnIBj.js +0 -8
  206. package/dist/ui/assets/TransformToolbarButton-CVg5nz36.js +0 -5
  207. package/dist/ui/assets/UnrecognizedModels-Cw9Ku_bW.js +0 -1
  208. package/dist/ui/assets/chat-thread-memory-CZGcwgGo.js +0 -1
  209. package/dist/ui/assets/chunk-6ECMNUIP-C1kohb1U.js +0 -15
  210. package/dist/ui/assets/chunk-AONELFLA-Cv2nS9ga.js +0 -1
  211. package/dist/ui/assets/chunk-IIQYS2YH-Dxg6MAfT.js +0 -1
  212. package/dist/ui/assets/chunk-MIKKUKOD-XIkmalSN.js +0 -31
  213. package/dist/ui/assets/chunk-NNJLSQPW-DJA6camf.js +0 -5
  214. package/dist/ui/assets/chunk-S5PCVMKU-DbCZ5AUH.js +0 -6
  215. package/dist/ui/assets/csv-xmd1_Aqd.js +0 -4
  216. package/dist/ui/assets/dist-BPx-FyRH.js +0 -222
  217. package/dist/ui/assets/dist-Bvo52IGx.js +0 -1
  218. package/dist/ui/assets/dist-D5aoNQwk.js +0 -2
  219. package/dist/ui/assets/docx-Cj4A9MhC.js +0 -2
  220. package/dist/ui/assets/extract-UTAOG7LV-C4b7ycaL.js +0 -1
  221. package/dist/ui/assets/file-browser-80qWoVju.js +0 -5
  222. package/dist/ui/assets/html-C9TlzI57.js +0 -253
  223. package/dist/ui/assets/icons-C9dD-bDi.js +0 -1
  224. package/dist/ui/assets/images-ESPQKVTW-D7SgdVJ_.js +0 -1
  225. package/dist/ui/assets/index-D1m4Wx8V.css +0 -1
  226. package/dist/ui/assets/index-DXWR4qW1.js +0 -34
  227. package/dist/ui/assets/layouts-2A7QNF6Y-De2t-YXl.js +0 -1
  228. package/dist/ui/assets/markdown-baseline-HMqF2ChK.js +0 -1
  229. package/dist/ui/assets/outside-in-BFVUUcLa.js +0 -3
  230. package/dist/ui/assets/pptx-6ChgUEf4.js +0 -6
  231. package/dist/ui/assets/primitives-DEsn1shf.js +0 -41
  232. package/dist/ui/assets/run-export-BrYhHj1O.js +0 -23
  233. package/dist/ui/assets/standalone-source-D6mbpa3h.js +0 -11
  234. package/dist/ui/assets/storage-fn4FCEVK.js +0 -1
  235. package/dist/ui/assets/styles-C0EoNJbk.css +0 -1
  236. package/dist/ui/assets/styles-CKr_yrbn.js +0 -541
  237. package/dist/ui/assets/xlsx-DH7sTb3W.js +0 -4
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import"./chunk-4VOD55SX-BFSSw0c8.js";import{k as r}from"./chunk-GAZKTT4R-BkP6-w3z.js";import"./schemas-JY4jmLbC.js";import{t as i}from"./chunk-TT6ENR6T-CaYjVwjm.js";import{a,c as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./chunk-DAMIRKTO-CGniCSiM.js";import{I as p,L as m,a as h,c as g,i as _,n as v,o as y,p as b,r as x,s as S,t as ee,u as C}from"./dist-BHl1ZAVG.js";var w=e(t(),1),T=n(),E=(0,w.createContext)(null);function D(e){let{rootSchema:t,rootData:n,onRootChange:r,density:i,validate:a,onValidate:s,children:c}=e,l=(0,w.useMemo)(()=>a?a(n,t):[],[a,n,t]),u=(0,w.useMemo)(()=>{let e=new Map;for(let t of l){let n=e.get(t.path)??[];n.push(t),e.set(t.path,n)}return e},[l]);(0,w.useEffect)(()=>{s&&s(l)},[l,s]);let d=(0,w.useMemo)(()=>(e,t)=>{let i=o(n,e,t);r(i)},[n,r]),f=(0,w.useMemo)(()=>({rootSchema:t,rootData:n,setAtPath:d,density:i,errors:u}),[t,n,d,i,u]);return(0,T.jsx)(E.Provider,{value:f,children:c})}function O(){let e=(0,w.useContext)(E);if(!e)throw Error(`useJsonEditor must be used inside <JsonEditor>`);return e}function k(e){let{value:t,onChange:n,readOnly:r=!1,placeholder:i,className:a}=e,o=(0,w.useRef)(!1),s=(0,w.useRef)(t),c=b({editable:!r,extensions:[g.configure({codeBlock:{HTMLAttributes:{class:`squisq-code-block`}}}),S.configure({resizable:!1}),y,h,_,x,v.configure({nested:!0}),ee.configure({placeholder:i??``})],content:p(t),onUpdate:({editor:e})=>{if(o.current)return;let t=m(e.getHTML());s.current=t,n(t)},editorProps:{attributes:{class:`squisq-jf-richtext-prose`}}});return(0,w.useEffect)(()=>{if(c&&t!==s.current){o.current=!0;try{c.commands.setContent(p(t),!1),s.current=t}finally{o.current=!1}}},[c,t]),(0,w.useEffect)(()=>{c&&c.setEditable(!r)},[c,r]),(0,T.jsx)(C,{editor:c,className:`squisq-jf-richtext`+(a?` ${a}`:``)})}function A(e){return{id:e.controlId,"aria-labelledby":e.labelledBy,"aria-describedby":e.describedBy,"aria-invalid":e.invalid||void 0}}function j(e){return e==null?``:String(e)}function M(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?t:``}function te(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O();return(0,T.jsx)(`input`,{...A(e),type:`text`,className:`squisq-jf-input`,value:j(t),placeholder:n.squisq?.placeholder,disabled:i,onChange:e=>a(r,e.target.value)})}function N(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=(0,w.useRef)(null);return(0,w.useEffect)(()=>{let e=o.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight+2}px`)},[t]),(0,T.jsx)(`textarea`,{...A(e),ref:o,className:`squisq-jf-textarea`,value:j(t),placeholder:n.squisq?.placeholder,disabled:i,onChange:e=>a(r,e.target.value)})}function P({value:e,schema:t,pointer:n,disabled:r}){let{setAtPath:i}=O();return(0,T.jsx)(k,{value:j(e),placeholder:t.squisq?.placeholder,readOnly:r,onChange:e=>i(n,e)})}function F(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=n.type===`integer`,s=n.squisq?.step??n.multipleOf??(o?1:.1),c=M(t),l=e=>{let t=n.minimum??n.exclusiveMinimum,i=n.maximum??n.exclusiveMaximum,s=e;typeof t==`number`&&(s=Math.max(t,s)),typeof i==`number`&&(s=Math.min(i,s)),a(r,o?Math.round(s):s)};return(0,T.jsxs)(`span`,{className:`squisq-jf-stepper`,children:[(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-stepper__btn`,disabled:i,onClick:()=>l((typeof c==`number`?c:0)-s),"aria-label":`Decrease`,children:`−`}),(0,T.jsx)(`input`,{...A(e),className:`squisq-jf-stepper__input`,type:`number`,value:c===``?``:c,step:s,disabled:i,onChange:e=>{if(e.target.value===``){a(r,void 0);return}let t=Number(e.target.value);Number.isFinite(t)&&l(t)}}),(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-stepper__btn`,disabled:i,onClick:()=>l((typeof c==`number`?c:0)+s),"aria-label":`Increase`,children:`+`})]})}function I(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=n.minimum??n.exclusiveMinimum??0,s=n.maximum??n.exclusiveMaximum??100,c=n.squisq?.step??n.multipleOf??(n.type,1),l=M(t),u=typeof l==`number`?l:o;return(0,T.jsxs)(`span`,{className:`squisq-jf-slider-row`,children:[(0,T.jsx)(`input`,{...A(e),type:`range`,className:`squisq-jf-slider`,min:o,max:s,step:c,value:u,disabled:i,onChange:e=>a(r,Number(e.target.value))}),(0,T.jsx)(`span`,{className:`squisq-jf-slider-readout`,children:u})]})}function L(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=!!t;return(0,T.jsxs)(`button`,{...A(e),type:`button`,className:`squisq-jf-toggle${o?` squisq-jf-toggle--on`:``}`,disabled:i,onClick:()=>a(r,!o),"aria-pressed":o,children:[(0,T.jsx)(`span`,{className:`squisq-jf-toggle__track`,children:(0,T.jsx)(`span`,{className:`squisq-jf-toggle__thumb`})}),(0,T.jsx)(`span`,{className:`squisq-jf-toggle__label`,children:o?n.squisq?.label?`${n.squisq.label}: On`:`On`:n.squisq?.label?`${n.squisq.label}: Off`:`Off`})]})}function R(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=(0,w.useId)(),s=e.controlId??o;return(0,T.jsxs)(`label`,{htmlFor:s,className:`squisq-jf-toggle`,children:[(0,T.jsx)(`input`,{"aria-labelledby":e.labelledBy,"aria-describedby":e.describedBy,"aria-invalid":e.invalid||void 0,id:s,type:`checkbox`,checked:!!t,disabled:i,onChange:e=>a(r,e.target.checked)}),n.squisq?.label??n.title??``]})}function z(e){let t=e.squisq?.enumLabels;return(e.enum??[]).map(e=>({value:e,label:t&&typeof e==`string`?t[e]??String(e):String(e)}))}function B(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=z(n);return(0,T.jsx)(`span`,{...A(e),className:`squisq-jf-segmented`,role:`group`,children:o.map((e,n)=>{let o=t===e.value;return(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-segmented__btn${o?` squisq-jf-segmented__btn--active`:``}`,disabled:i,onClick:()=>a(r,e.value),"aria-pressed":o,children:e.label},n)})})}function V(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=z(n),s=(0,w.useId)();return(0,T.jsx)(`div`,{...A(e),className:`squisq-jf-radio`,role:`radiogroup`,children:o.map((e,n)=>{let o=t===e.value;return(0,T.jsxs)(`label`,{className:`squisq-jf-radio__option`,children:[(0,T.jsx)(`input`,{type:`radio`,name:s,checked:o,disabled:i,onChange:()=>a(r,e.value)}),e.label]},n)})})}function H(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=z(n);return(0,T.jsx)(`select`,{...A(e),className:`squisq-jf-select`,value:j(t),disabled:i,onChange:e=>{let t=e.target.value,n=o.find(e=>String(e.value)===t);a(r,n?n.value:t)},children:o.map((e,t)=>(0,T.jsx)(`option`,{value:String(e.value),children:e.label},t))})}function U(e){let{value:t,pointer:n,disabled:r}=e,{setAtPath:i}=O(),a=typeof t==`string`&&/^#[0-9a-f]{6}$/i.test(t)?t:`#000000`;return(0,T.jsxs)(`span`,{className:`squisq-jf-color`,children:[(0,T.jsx)(`input`,{...A(e),type:`color`,className:`squisq-jf-color__input`,value:a,disabled:r,onChange:e=>i(n,e.target.value)}),(0,T.jsx)(`input`,{type:`text`,className:`squisq-jf-input squisq-jf-color__hex`,value:j(t),disabled:r,onChange:e=>i(n,e.target.value)})]})}function W(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=n.format,s=o===`time`?`time`:o===`date`?`date`:`datetime-local`,c=s===`datetime-local`&&typeof t==`string`&&t.includes(`T`)?t.replace(/Z$|:\d{2}\.\d+Z?$/,``).slice(0,16):j(t);return(0,T.jsx)(`input`,{...A(e),type:s,className:`squisq-jf-input`,value:c,disabled:i,onChange:e=>a(r,e.target.value)})}function G(e){let{value:t,schema:n,pointer:r,disabled:i,suppressTitle:a}=e,o=a?void 0:n.squisq?.label??n.title,s=n.squisq?.help??n.description,c=(t&&typeof t==`object`?t:{})??{},l=Object.entries(n.properties??{});return(0,T.jsxs)(`section`,{className:`squisq-jf-group`,children:[o?(0,T.jsx)(`h3`,{className:`squisq-jf-group__title`,children:o}):null,s?(0,T.jsx)(`p`,{className:`squisq-jf-group__help`,children:s}):null,l.map(([e,t])=>(0,T.jsx)($,{value:c[e],schema:t,pointer:f(r,e),parentDisabled:i},e))]})}function K({value:e,schema:t,pointer:n,disabled:r}){let{setAtPath:i}=O(),a=Array.isArray(e)?e:[],o=(Array.isArray(t.items)?t.items[0]:t.items)??{type:`string`},s=o.squisq?.enumLabels,c=o.enum,[l,u]=(0,w.useState)(``),d=e=>{let t=a.slice();t.splice(e,1),i(n,t)},f=e=>{if(e===``)return;let t=q(e,o);i(n,[...a,t]),u(``)};return(0,T.jsxs)(`div`,{className:`squisq-jf-chip-bin`,children:[a.map((e,t)=>{let n=s&&typeof e==`string`?s[e]??String(e):String(e);return(0,T.jsxs)(`span`,{className:`squisq-jf-chip`,children:[n,(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-chip__remove`,disabled:r,onClick:()=>d(t),"aria-label":`Remove ${n}`,children:`×`})]},t)}),!r&&c&&c.length>0?(0,T.jsxs)(`select`,{className:`squisq-jf-select`,value:``,onChange:e=>f(e.target.value),style:{width:`auto`},children:[(0,T.jsx)(`option`,{value:``,disabled:!0,children:t.squisq?.addLabel??`+ Add`}),c.filter(e=>!a.includes(e)).map((e,t)=>(0,T.jsx)(`option`,{value:String(e),children:s&&typeof e==`string`?s[e]??String(e):String(e)},t))]}):r?null:(0,T.jsx)(`input`,{type:`text`,className:`squisq-jf-chip-bin__add-input`,placeholder:t.squisq?.addLabel??`+ Add`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),f(l.trim()))},onBlur:()=>f(l.trim())})]})}function q(e,t){switch(t.type){case`integer`:return parseInt(e,10);case`number`:return Number(e);case`boolean`:return e===`true`||e===`1`;default:return e}}function J({value:e,schema:t,pointer:n,disabled:r}){let{setAtPath:i}=O(),a=Array.isArray(e)?e:[],o=(Array.isArray(t.items)?t.items[0]:t.items)??{type:`object`},s=o.squisq?.itemLabel,c=t.squisq?.addLabel??`+ Add`,l=e=>i(n,e),u=()=>l([...a,X(o)]),d=e=>{let t=a.slice();t.splice(e,1),l(t)},f=(e,t)=>{let n=e+t;if(n<0||n>=a.length)return;let r=a.slice();[r[e],r[n]]=[r[n],r[e]],l(r)};return(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`squisq-jf-card-stack`,children:a.map((e,i)=>(0,T.jsxs)(`div`,{className:`squisq-jf-card`,children:[(0,T.jsxs)(`div`,{className:`squisq-jf-card__header`,children:[(0,T.jsx)(`h4`,{className:`squisq-jf-card__title`,children:Y(s,e,i)}),r?null:(0,T.jsxs)(`span`,{className:`squisq-jf-card__actions`,children:[(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-icon-btn`,onClick:()=>f(i,-1),disabled:i===0,"aria-label":`Move up`,title:`Move up`,children:`↑`}),(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-icon-btn`,onClick:()=>f(i,1),disabled:i===a.length-1,"aria-label":`Move down`,title:`Move down`,children:`↓`}),(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-icon-btn squisq-jf-icon-btn--danger`,onClick:()=>d(i),"aria-label":t.squisq?.removeLabel??`Remove`,title:t.squisq?.removeLabel??`Remove`,children:`×`})]})]}),(0,T.jsx)($,{value:e,schema:o,pointer:`${n}/${i}`,parentDisabled:r,suppressTopGroupTitle:!0})]},i))}),r?null:(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-add-btn`,onClick:u,style:{marginTop:8},children:c})]})}function Y(e,t,n){if(!e)return`Item ${n+1}`;if(typeof e==`string`)return e;if(t&&typeof t==`object`){let n=t[e.fromField];if(typeof n==`string`&&n!==``)return n;if(typeof n==`number`)return String(n)}return`Item ${n+1}`}function X(e){if(e.default!==void 0)return e.default;switch(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type){case`object`:{let t={};for(let[n,r]of Object.entries(e.properties??{}))t[n]=X(r);return t}case`array`:return[];case`string`:return``;case`number`:case`integer`:return e.minimum??0;case`boolean`:return!1;default:return}}function Z(e){let{value:t,schema:n,pointer:r,disabled:i}=e,a=(0,w.useId)().replace(/:/g,``),o=n.oneOf??n.anyOf??[],[s,c]=(0,w.useState)(Q(o,t));(0,w.useEffect)(()=>{c(Q(o,t))},[t]);let l=o[s];if(!l)return null;let u=e=>{let t=(e+o.length)%o.length;c(t),requestAnimationFrame(()=>document.getElementById(`${a}-tab-${t}`)?.focus())};return(0,T.jsxs)(`div`,{...A(e),children:[(0,T.jsx)(`div`,{className:`squisq-jf-tabs__strip`,role:`tablist`,children:o.map((e,t)=>(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-tabs__tab${t===s?` squisq-jf-tabs__tab--active`:``}`,disabled:i,onClick:()=>c(t),onKeyDown:e=>{e.key===`ArrowRight`||e.key===`ArrowDown`?(e.preventDefault(),u(t+1)):e.key===`ArrowLeft`||e.key===`ArrowUp`?(e.preventDefault(),u(t-1)):e.key===`Home`?(e.preventDefault(),u(0)):e.key===`End`&&(e.preventDefault(),u(o.length-1))},role:`tab`,id:`${a}-tab-${t}`,"aria-selected":t===s,"aria-controls":`${a}-panel`,tabIndex:t===s?0:-1,children:e.squisq?.label??e.title??`Option ${t+1}`},t))}),(0,T.jsx)(`div`,{id:`${a}-panel`,role:`tabpanel`,"aria-labelledby":`${a}-tab-${s}`,children:(0,T.jsx)($,{value:t,schema:l,pointer:r,parentDisabled:i})})]})}function Q(e,t){for(let n=0;n<e.length;n++)if(ne(e[n],t))return n;return 0}function ne(e,t){let n=e.type,r=Array.isArray(n)?n.find(e=>e!==`null`):n;if(!r)return!0;switch(r){case`string`:return typeof t==`string`;case`number`:case`integer`:return typeof t==`number`;case`boolean`:return typeof t==`boolean`;case`null`:return t===null;case`array`:return Array.isArray(t);case`object`:return typeof t==`object`&&!!t&&!Array.isArray(t);default:return!1}}var re={text:te,multiline:N,richtext:P,color:U,date:W,time:W,datetime:W,slider:I,stepper:F,segmented:B,radio:V,combobox:H,toggle:L,checkbox:R,card:G,group:G,"card-stack":J,"chip-bin":K,tabs:Z};function ie(e,t){return e===`group`||e===`card`||e===`tabs`||e===`card-stack`||e===`richtext`||e===`chip-bin`&&c(t)===`object`}function $(e){let t=(0,w.useId)().replace(/:/g,``),{rootSchema:n,rootData:r,errors:i}=O(),o=d(e.schema,n)??e.schema;if(a(o.squisq?.hidden,r))return null;let c=(e.parentDisabled??!1)||a(o.squisq?.disabled,r),l=s(o),u=re[l],f=o.squisq?.label??o.title,p=o.squisq?.help??o.description,m=i.get(e.pointer)??[],h=`squisq-json-control-${t}`,g=f?`${h}-label`:void 0,_=p?`${h}-help`:void 0,v=m.length>0?`${h}-error`:void 0,y=[_,v].filter(Boolean).join(` `)||void 0,b=(0,T.jsx)(u,{value:e.value,schema:o,pointer:e.pointer,disabled:c,controlId:h,labelledBy:g,describedBy:y,invalid:m.length>0,suppressTitle:e.suppressTopGroupTitle});return ie(l,o)?b:(0,T.jsxs)(`div`,{className:`squisq-jf-field${c?` squisq-jf-field--disabled`:``}`,children:[f?(0,T.jsx)(`label`,{id:g,htmlFor:h,className:`squisq-jf-field__label`,children:f}):null,b,p?(0,T.jsx)(`p`,{id:_,className:`squisq-jf-field__help`,children:p}):null,m.length>0?(0,T.jsx)(`p`,{id:v,className:`squisq-jf-field__error`,role:`alert`,children:m[0].message}):null]})}function ae(e,t){let n=i(t===`auto`),r=t===`auto`?n:t??void 0;return(0,w.useMemo)(()=>({style:u(e,r,{prefix:`--squisq-jsonform`}),theme:l(e,r)}),[e,r])}function oe(e){let{schema:t,value:n,onChange:r,theme:i,surface:a,density:o=`comfortable`,validate:s,onValidate:c,className:l}=e,{style:u}=ae(i,a),d=r??(()=>{});return(0,T.jsx)(`div`,{className:`squisq-jsonform`+(o===`compact`?` squisq-jsonform--compact`:``)+(l?` ${l}`:``),style:u,children:(0,T.jsx)(D,{rootSchema:t,rootData:n,onRootChange:d,density:o,validate:s,onValidate:c,children:(0,T.jsx)($,{value:n,schema:t,pointer:``,parentDisabled:!r})})})}var se=r(`gezellig`);function ce({className:e,...t}){let n=[`gezel-json-editor`,e].filter(Boolean).join(` `);return(0,T.jsx)(oe,{...t,className:n,theme:se})}export{ce as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import"./chunk-4VOD55SX-BFSSw0c8.js";import{k as r}from"./chunk-GAZKTT4R-BkP6-w3z.js";import"./schemas-JY4jmLbC.js";import{t as i}from"./chunk-TT6ENR6T-CaYjVwjm.js";import{a,c as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./chunk-DAMIRKTO-CGniCSiM.js";import{I as p,L as m,a as h,c as g,i as _,n as v,o as y,p as b,r as x,s as S,t as ee,u as C}from"./dist-l6uUFZMV.js";var w=e(t(),1),T=n(),E=(0,w.createContext)(null);function D(e){let{rootSchema:t,rootData:n,onRootChange:r,density:i,validate:a,onValidate:s,children:c}=e,l=(0,w.useMemo)(()=>a?a(n,t):[],[a,n,t]),u=(0,w.useMemo)(()=>{let e=new Map;for(let t of l){let n=e.get(t.path)??[];n.push(t),e.set(t.path,n)}return e},[l]);(0,w.useEffect)(()=>{s&&s(l)},[l,s]);let d=(0,w.useMemo)(()=>(e,t)=>{let i=o(n,e,t);r(i)},[n,r]),f=(0,w.useMemo)(()=>({rootSchema:t,rootData:n,setAtPath:d,density:i,errors:u}),[t,n,d,i,u]);return(0,T.jsx)(E.Provider,{value:f,children:c})}function O(){let e=(0,w.useContext)(E);if(!e)throw Error(`useJsonEditor must be used inside <JsonEditor>`);return e}function k(e){let{value:t,onChange:n,readOnly:r=!1,placeholder:i,className:a}=e,o=(0,w.useRef)(!1),s=(0,w.useRef)(t),c=b({editable:!r,extensions:[g.configure({codeBlock:{HTMLAttributes:{class:`squisq-code-block`}}}),S.configure({resizable:!1}),y,h,_,x,v.configure({nested:!0}),ee.configure({placeholder:i??``})],content:p(t),onUpdate:({editor:e})=>{if(o.current)return;let t=m(e.getHTML());s.current=t,n(t)},editorProps:{attributes:{class:`squisq-jf-richtext-prose`}}});return(0,w.useEffect)(()=>{if(c&&t!==s.current){o.current=!0;try{c.commands.setContent(p(t),!1),s.current=t}finally{o.current=!1}}},[c,t]),(0,w.useEffect)(()=>{c&&c.setEditable(!r)},[c,r]),(0,T.jsx)(C,{editor:c,className:`squisq-jf-richtext`+(a?` ${a}`:``)})}function A(e){return{id:e.controlId,"aria-labelledby":e.labelledBy,"aria-describedby":e.describedBy,"aria-invalid":e.invalid||void 0}}function j(e){return e==null?``:String(e)}function M(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?t:``}function te(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O();return(0,T.jsx)(`input`,{...A(e),type:`text`,className:`squisq-jf-input`,value:j(t),placeholder:n.squisq?.placeholder,disabled:i,onChange:e=>a(r,e.target.value)})}function N(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=(0,w.useRef)(null);return(0,w.useEffect)(()=>{let e=o.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight+2}px`)},[t]),(0,T.jsx)(`textarea`,{...A(e),ref:o,className:`squisq-jf-textarea`,value:j(t),placeholder:n.squisq?.placeholder,disabled:i,onChange:e=>a(r,e.target.value)})}function P({value:e,schema:t,pointer:n,disabled:r}){let{setAtPath:i}=O();return(0,T.jsx)(k,{value:j(e),placeholder:t.squisq?.placeholder,readOnly:r,onChange:e=>i(n,e)})}function F(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=n.type===`integer`,s=n.squisq?.step??n.multipleOf??(o?1:.1),c=M(t),l=e=>{let t=n.minimum??n.exclusiveMinimum,i=n.maximum??n.exclusiveMaximum,s=e;typeof t==`number`&&(s=Math.max(t,s)),typeof i==`number`&&(s=Math.min(i,s)),a(r,o?Math.round(s):s)};return(0,T.jsxs)(`span`,{className:`squisq-jf-stepper`,children:[(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-stepper__btn`,disabled:i,onClick:()=>l((typeof c==`number`?c:0)-s),"aria-label":`Decrease`,children:`−`}),(0,T.jsx)(`input`,{...A(e),className:`squisq-jf-stepper__input`,type:`number`,value:c===``?``:c,step:s,disabled:i,onChange:e=>{if(e.target.value===``){a(r,void 0);return}let t=Number(e.target.value);Number.isFinite(t)&&l(t)}}),(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-stepper__btn`,disabled:i,onClick:()=>l((typeof c==`number`?c:0)+s),"aria-label":`Increase`,children:`+`})]})}function I(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=n.minimum??n.exclusiveMinimum??0,s=n.maximum??n.exclusiveMaximum??100,c=n.squisq?.step??n.multipleOf??(n.type,1),l=M(t),u=typeof l==`number`?l:o;return(0,T.jsxs)(`span`,{className:`squisq-jf-slider-row`,children:[(0,T.jsx)(`input`,{...A(e),type:`range`,className:`squisq-jf-slider`,min:o,max:s,step:c,value:u,disabled:i,onChange:e=>a(r,Number(e.target.value))}),(0,T.jsx)(`span`,{className:`squisq-jf-slider-readout`,children:u})]})}function L(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=!!t;return(0,T.jsxs)(`button`,{...A(e),type:`button`,className:`squisq-jf-toggle${o?` squisq-jf-toggle--on`:``}`,disabled:i,onClick:()=>a(r,!o),"aria-pressed":o,children:[(0,T.jsx)(`span`,{className:`squisq-jf-toggle__track`,children:(0,T.jsx)(`span`,{className:`squisq-jf-toggle__thumb`})}),(0,T.jsx)(`span`,{className:`squisq-jf-toggle__label`,children:o?n.squisq?.label?`${n.squisq.label}: On`:`On`:n.squisq?.label?`${n.squisq.label}: Off`:`Off`})]})}function R(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=(0,w.useId)(),s=e.controlId??o;return(0,T.jsxs)(`label`,{htmlFor:s,className:`squisq-jf-toggle`,children:[(0,T.jsx)(`input`,{"aria-labelledby":e.labelledBy,"aria-describedby":e.describedBy,"aria-invalid":e.invalid||void 0,id:s,type:`checkbox`,checked:!!t,disabled:i,onChange:e=>a(r,e.target.checked)}),n.squisq?.label??n.title??``]})}function z(e){let t=e.squisq?.enumLabels;return(e.enum??[]).map(e=>({value:e,label:t&&typeof e==`string`?t[e]??String(e):String(e)}))}function B(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=z(n);return(0,T.jsx)(`span`,{...A(e),className:`squisq-jf-segmented`,role:`group`,children:o.map((e,n)=>{let o=t===e.value;return(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-segmented__btn${o?` squisq-jf-segmented__btn--active`:``}`,disabled:i,onClick:()=>a(r,e.value),"aria-pressed":o,children:e.label},n)})})}function V(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=z(n),s=(0,w.useId)();return(0,T.jsx)(`div`,{...A(e),className:`squisq-jf-radio`,role:`radiogroup`,children:o.map((e,n)=>{let o=t===e.value;return(0,T.jsxs)(`label`,{className:`squisq-jf-radio__option`,children:[(0,T.jsx)(`input`,{type:`radio`,name:s,checked:o,disabled:i,onChange:()=>a(r,e.value)}),e.label]},n)})})}function H(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=z(n);return(0,T.jsx)(`select`,{...A(e),className:`squisq-jf-select`,value:j(t),disabled:i,onChange:e=>{let t=e.target.value,n=o.find(e=>String(e.value)===t);a(r,n?n.value:t)},children:o.map((e,t)=>(0,T.jsx)(`option`,{value:String(e.value),children:e.label},t))})}function U(e){let{value:t,pointer:n,disabled:r}=e,{setAtPath:i}=O(),a=typeof t==`string`&&/^#[0-9a-f]{6}$/i.test(t)?t:`#000000`;return(0,T.jsxs)(`span`,{className:`squisq-jf-color`,children:[(0,T.jsx)(`input`,{...A(e),type:`color`,className:`squisq-jf-color__input`,value:a,disabled:r,onChange:e=>i(n,e.target.value)}),(0,T.jsx)(`input`,{type:`text`,className:`squisq-jf-input squisq-jf-color__hex`,value:j(t),disabled:r,onChange:e=>i(n,e.target.value)})]})}function W(e){let{value:t,schema:n,pointer:r,disabled:i}=e,{setAtPath:a}=O(),o=n.format,s=o===`time`?`time`:o===`date`?`date`:`datetime-local`,c=s===`datetime-local`&&typeof t==`string`&&t.includes(`T`)?t.replace(/Z$|:\d{2}\.\d+Z?$/,``).slice(0,16):j(t);return(0,T.jsx)(`input`,{...A(e),type:s,className:`squisq-jf-input`,value:c,disabled:i,onChange:e=>a(r,e.target.value)})}function G(e){let{value:t,schema:n,pointer:r,disabled:i,suppressTitle:a}=e,o=a?void 0:n.squisq?.label??n.title,s=n.squisq?.help??n.description,c=(t&&typeof t==`object`?t:{})??{},l=Object.entries(n.properties??{});return(0,T.jsxs)(`section`,{className:`squisq-jf-group`,children:[o?(0,T.jsx)(`h3`,{className:`squisq-jf-group__title`,children:o}):null,s?(0,T.jsx)(`p`,{className:`squisq-jf-group__help`,children:s}):null,l.map(([e,t])=>(0,T.jsx)($,{value:c[e],schema:t,pointer:f(r,e),parentDisabled:i},e))]})}function K({value:e,schema:t,pointer:n,disabled:r}){let{setAtPath:i}=O(),a=Array.isArray(e)?e:[],o=(Array.isArray(t.items)?t.items[0]:t.items)??{type:`string`},s=o.squisq?.enumLabels,c=o.enum,[l,u]=(0,w.useState)(``),d=e=>{let t=a.slice();t.splice(e,1),i(n,t)},f=e=>{if(e===``)return;let t=q(e,o);i(n,[...a,t]),u(``)};return(0,T.jsxs)(`div`,{className:`squisq-jf-chip-bin`,children:[a.map((e,t)=>{let n=s&&typeof e==`string`?s[e]??String(e):String(e);return(0,T.jsxs)(`span`,{className:`squisq-jf-chip`,children:[n,(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-chip__remove`,disabled:r,onClick:()=>d(t),"aria-label":`Remove ${n}`,children:`×`})]},t)}),!r&&c&&c.length>0?(0,T.jsxs)(`select`,{className:`squisq-jf-select`,value:``,onChange:e=>f(e.target.value),style:{width:`auto`},children:[(0,T.jsx)(`option`,{value:``,disabled:!0,children:t.squisq?.addLabel??`+ Add`}),c.filter(e=>!a.includes(e)).map((e,t)=>(0,T.jsx)(`option`,{value:String(e),children:s&&typeof e==`string`?s[e]??String(e):String(e)},t))]}):r?null:(0,T.jsx)(`input`,{type:`text`,className:`squisq-jf-chip-bin__add-input`,placeholder:t.squisq?.addLabel??`+ Add`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),f(l.trim()))},onBlur:()=>f(l.trim())})]})}function q(e,t){switch(t.type){case`integer`:return parseInt(e,10);case`number`:return Number(e);case`boolean`:return e===`true`||e===`1`;default:return e}}function J({value:e,schema:t,pointer:n,disabled:r}){let{setAtPath:i}=O(),a=Array.isArray(e)?e:[],o=(Array.isArray(t.items)?t.items[0]:t.items)??{type:`object`},s=o.squisq?.itemLabel,c=t.squisq?.addLabel??`+ Add`,l=e=>i(n,e),u=()=>l([...a,X(o)]),d=e=>{let t=a.slice();t.splice(e,1),l(t)},f=(e,t)=>{let n=e+t;if(n<0||n>=a.length)return;let r=a.slice();[r[e],r[n]]=[r[n],r[e]],l(r)};return(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`squisq-jf-card-stack`,children:a.map((e,i)=>(0,T.jsxs)(`div`,{className:`squisq-jf-card`,children:[(0,T.jsxs)(`div`,{className:`squisq-jf-card__header`,children:[(0,T.jsx)(`h4`,{className:`squisq-jf-card__title`,children:Y(s,e,i)}),r?null:(0,T.jsxs)(`span`,{className:`squisq-jf-card__actions`,children:[(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-icon-btn`,onClick:()=>f(i,-1),disabled:i===0,"aria-label":`Move up`,title:`Move up`,children:`↑`}),(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-icon-btn`,onClick:()=>f(i,1),disabled:i===a.length-1,"aria-label":`Move down`,title:`Move down`,children:`↓`}),(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-icon-btn squisq-jf-icon-btn--danger`,onClick:()=>d(i),"aria-label":t.squisq?.removeLabel??`Remove`,title:t.squisq?.removeLabel??`Remove`,children:`×`})]})]}),(0,T.jsx)($,{value:e,schema:o,pointer:`${n}/${i}`,parentDisabled:r,suppressTopGroupTitle:!0})]},i))}),r?null:(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-add-btn`,onClick:u,style:{marginTop:8},children:c})]})}function Y(e,t,n){if(!e)return`Item ${n+1}`;if(typeof e==`string`)return e;if(t&&typeof t==`object`){let n=t[e.fromField];if(typeof n==`string`&&n!==``)return n;if(typeof n==`number`)return String(n)}return`Item ${n+1}`}function X(e){if(e.default!==void 0)return e.default;switch(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type){case`object`:{let t={};for(let[n,r]of Object.entries(e.properties??{}))t[n]=X(r);return t}case`array`:return[];case`string`:return``;case`number`:case`integer`:return e.minimum??0;case`boolean`:return!1;default:return}}function Z(e){let{value:t,schema:n,pointer:r,disabled:i}=e,a=(0,w.useId)().replace(/:/g,``),o=n.oneOf??n.anyOf??[],[s,c]=(0,w.useState)(Q(o,t));(0,w.useEffect)(()=>{c(Q(o,t))},[t]);let l=o[s];if(!l)return null;let u=e=>{let t=(e+o.length)%o.length;c(t),requestAnimationFrame(()=>document.getElementById(`${a}-tab-${t}`)?.focus())};return(0,T.jsxs)(`div`,{...A(e),children:[(0,T.jsx)(`div`,{className:`squisq-jf-tabs__strip`,role:`tablist`,children:o.map((e,t)=>(0,T.jsx)(`button`,{type:`button`,className:`squisq-jf-tabs__tab${t===s?` squisq-jf-tabs__tab--active`:``}`,disabled:i,onClick:()=>c(t),onKeyDown:e=>{e.key===`ArrowRight`||e.key===`ArrowDown`?(e.preventDefault(),u(t+1)):e.key===`ArrowLeft`||e.key===`ArrowUp`?(e.preventDefault(),u(t-1)):e.key===`Home`?(e.preventDefault(),u(0)):e.key===`End`&&(e.preventDefault(),u(o.length-1))},role:`tab`,id:`${a}-tab-${t}`,"aria-selected":t===s,"aria-controls":`${a}-panel`,tabIndex:t===s?0:-1,children:e.squisq?.label??e.title??`Option ${t+1}`},t))}),(0,T.jsx)(`div`,{id:`${a}-panel`,role:`tabpanel`,"aria-labelledby":`${a}-tab-${s}`,children:(0,T.jsx)($,{value:t,schema:l,pointer:r,parentDisabled:i})})]})}function Q(e,t){for(let n=0;n<e.length;n++)if(ne(e[n],t))return n;return 0}function ne(e,t){let n=e.type,r=Array.isArray(n)?n.find(e=>e!==`null`):n;if(!r)return!0;switch(r){case`string`:return typeof t==`string`;case`number`:case`integer`:return typeof t==`number`;case`boolean`:return typeof t==`boolean`;case`null`:return t===null;case`array`:return Array.isArray(t);case`object`:return typeof t==`object`&&!!t&&!Array.isArray(t);default:return!1}}var re={text:te,multiline:N,richtext:P,color:U,date:W,time:W,datetime:W,slider:I,stepper:F,segmented:B,radio:V,combobox:H,toggle:L,checkbox:R,card:G,group:G,"card-stack":J,"chip-bin":K,tabs:Z};function ie(e,t){return e===`group`||e===`card`||e===`tabs`||e===`card-stack`||e===`richtext`||e===`chip-bin`&&c(t)===`object`}function $(e){let t=(0,w.useId)().replace(/:/g,``),{rootSchema:n,rootData:r,errors:i}=O(),o=d(e.schema,n)??e.schema;if(a(o.squisq?.hidden,r))return null;let c=(e.parentDisabled??!1)||a(o.squisq?.disabled,r),l=s(o),u=re[l],f=o.squisq?.label??o.title,p=o.squisq?.help??o.description,m=i.get(e.pointer)??[],h=`squisq-json-control-${t}`,g=f?`${h}-label`:void 0,_=p?`${h}-help`:void 0,v=m.length>0?`${h}-error`:void 0,y=[_,v].filter(Boolean).join(` `)||void 0,b=(0,T.jsx)(u,{value:e.value,schema:o,pointer:e.pointer,disabled:c,controlId:h,labelledBy:g,describedBy:y,invalid:m.length>0,suppressTitle:e.suppressTopGroupTitle});return ie(l,o)?b:(0,T.jsxs)(`div`,{className:`squisq-jf-field${c?` squisq-jf-field--disabled`:``}`,children:[f?(0,T.jsx)(`label`,{id:g,htmlFor:h,className:`squisq-jf-field__label`,children:f}):null,b,p?(0,T.jsx)(`p`,{id:_,className:`squisq-jf-field__help`,children:p}):null,m.length>0?(0,T.jsx)(`p`,{id:v,className:`squisq-jf-field__error`,role:`alert`,children:m[0].message}):null]})}function ae(e,t){let n=i(t===`auto`),r=t===`auto`?n:t??void 0;return(0,w.useMemo)(()=>({style:u(e,r,{prefix:`--squisq-jsonform`}),theme:l(e,r)}),[e,r])}function oe(e){let{schema:t,value:n,onChange:r,theme:i,surface:a,density:o=`comfortable`,validate:s,onValidate:c,className:l}=e,{style:u}=ae(i,a),d=r??(()=>{});return(0,T.jsx)(`div`,{className:`squisq-jsonform`+(o===`compact`?` squisq-jsonform--compact`:``)+(l?` ${l}`:``),style:u,children:(0,T.jsx)(D,{rootSchema:t,rootData:n,onRootChange:d,density:o,validate:s,onValidate:c,children:(0,T.jsx)($,{value:n,schema:t,pointer:``,parentDisabled:!r})})})}var se=r(`gezellig`);function ce({className:e,...t}){let n=[`gezel-json-editor`,e].filter(Boolean).join(` `);return(0,T.jsx)(oe,{...t,className:n,theme:se})}export{ce as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{i as r,n as i,r as a,t as o}from"./Tabs-BAY1Q79B.js";import{F as s,I as c,M as l,N as u,P as d,j as f,k as p}from"./primitives-DEsn1shf.js";import{Pt as m,Ut as h}from"./dist-BPx-FyRH.js";import{t as g}from"./api-BX5xXiFs.js";import{Lt as _,a as v,u as y}from"./index-DXWR4qW1.js";import{t as b}from"./CatalogBrowser-Bz8ZtxPn.js";import{GezelDetail as x,t as S}from"./GezelDetail-DHuqBK55.js";var C=e(t(),1),w=n();function T({activeProjectsByGezel:e,activeTurnsReady:t}){let[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(void 0),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(void 0),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)(new Set),b=(0,C.useCallback)(async()=>{try{let{gezels:e}=await g.listGezels();r(e)}catch(e){p(e.message)}},[]),T=(0,C.useCallback)(async()=>{try{let e=await g.getConfig();a(e.meesterGezelId),s(e.roleBasedNameOnlyMode??!1)}catch{}},[]);(0,C.useEffect)(()=>{b(),T()},[b,T]),(0,C.useEffect)(()=>{let e=e=>{let t=e.detail;typeof t?.roleBasedNameOnlyMode==`boolean`&&s(t.roleBasedNameOnlyMode)};return window.addEventListener(`gezel:config-updated`,e),()=>window.removeEventListener(`gezel:config-updated`,e)},[]),(0,C.useEffect)(()=>{if(n.length===0){l(void 0);return}l(e=>e&&n.some(t=>t.id===e)?e:n[0].id)},[n]),(0,C.useEffect)(()=>{let e=()=>void b(),t=e=>{let t=e.detail?.gezelId;t&&(r(e=>e.filter(e=>e.id!==t)),l(e=>e===t?void 0:e),h(e=>{if(!e.has(t))return e;let n=new Set(e);return n.delete(t),n})),b(),T()};return window.addEventListener(`gezel:gezel-updated`,e),window.addEventListener(`gezel:growth-updated`,e),window.addEventListener(`gezel:gezel-deleted`,t),()=>{window.removeEventListener(`gezel:gezel-updated`,e),window.removeEventListener(`gezel:growth-updated`,e),window.removeEventListener(`gezel:gezel-deleted`,t)}},[b,T]),(0,C.useEffect)(()=>{v(`gezel`)&&d(!0);let e=()=>{v(`gezel`),d(!0)};return window.addEventListener(`gezel:new-gezel`,e),()=>window.removeEventListener(`gezel:new-gezel`,e)},[]);let D=(0,C.useCallback)((e,t)=>{h(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},[]),O=(0,C.useCallback)(e=>{l(e)},[]),k=(0,C.useCallback)(t=>{O(t),(e?.get(t)?.size??0)>0&&window.dispatchEvent(new CustomEvent(`gezel:prefer-working-project`,{detail:{gezelId:t}}))},[e,O]),A=(0,C.useCallback)((e,t)=>{D(e.id,!0),(async()=>{try{let n=await g.generateGezelIcon(e.id,t?{instruction:t}:{});window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:n}))}catch{}finally{D(e.id,!1)}})(),e.role&&(async()=>{try{let t=await g.generateGezelAbout(e.id,{role:e.role});window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:t}))}catch{}})()},[D]);return(0,w.jsxs)(`div`,{className:`two-col gezellen-view`,"data-testid":`gezels-view`,children:[(0,w.jsx)(E,{open:u,onClose:()=>d(!1),onCreate:(0,C.useCallback)(async(e,t,n,r)=>{let i=await g.createGezel({name:e,gender:n,...t?{role:t}:{}});d(!1),await b(),O(i.id),window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:i})),A(i,r)},[b,O,A]),onTemplateCreated:async e=>{d(!1),await b(),O(e.id),window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:e}))}}),(0,w.jsxs)(`aside`,{className:`side gezels-side`,children:[(0,w.jsx)(`div`,{className:`area-toolbar`,children:(0,w.jsx)(`button`,{type:`button`,className:`area-toolbar-btn`,onClick:()=>d(!0),children:`+ New Gezel`})}),(0,w.jsx)(`ul`,{className:`gezel-list`,children:n.map(t=>{let n=m.has(t.id),r=t.id===c,a=(e?.get(t.id)?.size??0)>0;return(0,w.jsxs)(`li`,{className:`gezel-row-shell${r?` active`:``}`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`gezel-row${r?` active`:``}`,onClick:()=>k(t.id),children:[(0,w.jsx)(_,{svg:t.icon??null,poppetje:t.poppetje,iconOverride:t.iconOverride,name:t.name,size:36,pulsing:n&&!t.icon&&!t.poppetje}),(0,w.jsxs)(`span`,{className:`gezel-row-text`,children:[(0,w.jsxs)(`span`,{className:`gezel-row-name`,children:[t.name,t.growth&&(0,w.jsx)(S,{level:t.growth.level,pending:!!t.growth.pending}),t.storageScope===`machine-shared`&&(0,w.jsx)(`span`,{className:`machine-shared-badge`,title:`Shared with accounts on this machine; chats and memories stay private`,children:`Shared`}),t.id===i&&(0,w.jsx)(`span`,{className:`meester-badge`,title:`Current Meester — change in Settings`,"aria-label":`Current Meester`,children:`⭐`}),t.fixedFunction&&(0,w.jsx)(`span`,{className:`ff-row-badge`,title:`Fixed-function gezel — forwards messages to ${t.fixedFunction.tool} (no LLM)`,"aria-label":`Fixed-function gezel`,children:`⚡`})]}),(t.id===i||t.role)&&(0,w.jsx)(`span`,{className:`gezel-row-role`,children:t.id===i?t.role&&t.role!==`Meester`?`Meester · ${t.role}`:`Meester`:t.role})]})]}),a&&(0,w.jsxs)(`button`,{type:`button`,className:`project-row-thinking gezel-row-thinking`,onClick:()=>k(t.id),title:`${t.name} is working — open`,"aria-label":`${t.name} is working. Open gezel.`,children:[(0,w.jsx)(`span`,{className:`project-row-thinking-dot`,"aria-hidden":`true`}),(0,w.jsx)(`span`,{className:`project-row-thinking-dot`,"aria-hidden":`true`}),(0,w.jsx)(`span`,{className:`project-row-thinking-dot`,"aria-hidden":`true`})]}),(0,w.jsx)(y,{gezel:t,compact:!0,boringMode:o})]},t.id)})}),f&&(0,w.jsx)(`p`,{className:`error`,children:f})]}),(0,w.jsx)(`section`,{children:c?(0,w.jsx)(x,{gezelId:c,workingProjectIds:e?.get(c),activeTurnsReady:t},c):(0,w.jsx)(`p`,{className:`placeholder`,children:`No gezellen yet — create one to get started.`})})]})}function E({open:e,onClose:t,onCreate:n,onTemplateCreated:l}){let[p,m]=(0,C.useState)(`scratch`),[h,g]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{e&&m(`scratch`)},[e]),(0,w.jsx)(s,{open:e,onOpenChange:e=>{!e&&!h&&t()},children:(0,w.jsxs)(d,{children:[(0,w.jsx)(u,{}),(0,w.jsxs)(f,{className:`new-gezel-dialog`,children:[(0,w.jsx)(c,{asChild:!0,children:(0,w.jsx)(`h3`,{style:{margin:0},children:`New Gezel`})}),(0,w.jsxs)(a,{value:p,onValueChange:e=>m(e),children:[(0,w.jsxs)(i,{children:[(0,w.jsx)(r,{value:`scratch`,children:`From scratch`}),(0,w.jsx)(r,{value:`template`,children:`From template`})]}),(0,w.jsx)(o,{value:`scratch`,children:(0,w.jsx)(D,{onCancel:t,onCreate:n})}),(0,w.jsx)(o,{value:`template`,children:(0,w.jsx)(O,{busy:h,setBusy:g,onCancel:t,onCreated:l})})]})]})]})})}function D({onCancel:e,onCreate:t}){let[{name:n,gender:r},i]=(0,C.useState)(m),[a,o]=(0,C.useState)(``),[s,c]=(0,C.useState)(``);return(0,w.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),n.trim()&&t(n.trim(),a.trim(),r,s.trim())},className:`new-gezel-form`,children:[(0,w.jsxs)(`label`,{children:[`Name`,(0,w.jsxs)(`div`,{className:`name-row`,children:[(0,w.jsx)(`input`,{value:n,onChange:e=>i(t=>({...t,name:e.target.value})),placeholder:`e.g. Ada`}),(0,w.jsx)(`button`,{type:`button`,className:`dice-btn`,onClick:()=>i(m()),title:`Pick a random name`,"aria-label":`Pick a random name`,children:`🎲`})]})]}),(0,w.jsxs)(`label`,{className:`new-gezel-gender-field`,children:[`Gender`,(0,w.jsxs)(`select`,{value:r,onChange:e=>i(t=>({...t,gender:e.target.value})),children:[(0,w.jsxs)(`option`,{value:`male`,children:[`male (`,h(`male`),`)`]}),(0,w.jsxs)(`option`,{value:`female`,children:[`female (`,h(`female`),`)`]}),(0,w.jsxs)(`option`,{value:`non-binary`,children:[`non-binary (`,h(`non-binary`),`)`]})]})]}),(0,w.jsxs)(`label`,{children:[`Role`,(0,w.jsx)(`input`,{value:a,onChange:e=>o(e.target.value),placeholder:`e.g. Developer, Marketing`})]}),(0,w.jsxs)(`label`,{children:[`Describe the icon `,(0,w.jsx)(`span`,{className:`muted`,children:`(optional)`}),(0,w.jsx)(`textarea`,{value:s,onChange:e=>c(e.target.value),placeholder:`e.g. a playful owl wearing glasses, warm colors`,rows:3})]}),(0,w.jsxs)(p,{children:[(0,w.jsx)(`button`,{type:`button`,onClick:e,children:`Cancel`}),(0,w.jsx)(`button`,{type:`submit`,className:`primary`,disabled:!n.trim(),children:`Create`})]})]})}function O({busy:e,setBusy:t,onCancel:n,onCreated:r}){let[i,a]=(0,C.useState)(null),[o,s]=(0,C.useState)(``),[c,u]=(0,C.useState)(null),d=async()=>{if(!(!i||!o.trim())){t(!0),u(null);try{r(await g.createGezelFromTemplate(i.id,{name:o.trim()}))}catch(e){u(e.message)}finally{t(!1)}}};return(0,w.jsxs)(`div`,{className:`new-gezel-template-tab`,children:[(0,w.jsx)(l,{className:`muted small`,style:{margin:`0 0 0.5rem 0`},children:`Pick a role to start from. The template's about.md becomes the new gezel's prompt — you can edit it after.`}),c&&(0,w.jsx)(`p`,{className:`error`,children:c}),(0,w.jsx)(b,{kind:`gezel-template`,emptyMessage:`No gezel templates available.`,action:t=>{if(t.manifest.kind!==`gezel-template`)return null;let n=t.manifest,r=i?.id===n.id,o=Array.isArray(n.nameSuggestions)?n.nameSuggestions:[],c=k(n.frontmatter);return(0,w.jsxs)(`div`,{className:`template-action-stack`,children:[c&&(0,w.jsx)(`span`,{className:`gz-badge gz-badge-passthrough`,title:`No LLM — passes your message straight to the configured tool`,children:`No LLM — passthrough`}),(0,w.jsx)(`button`,{type:`button`,disabled:e,className:r?`primary`:``,onClick:()=>{if(a({id:n.id,defaultName:n.name,nameSuggestions:o,isFixedFunction:c}),o.length>0){let e=Math.floor(Math.random()*o.length);s(o[e]??n.name)}else s(n.name)},children:r?`✓ Selected`:`Use this template`})]})}}),i&&(0,w.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),d()},className:`new-gezel-template-form`,children:[(0,w.jsxs)(`div`,{style:{display:`flex`,gap:`0.5rem`,alignItems:`center`},children:[(0,w.jsxs)(`span`,{className:`muted small`,style:{flexShrink:0},children:[`Name your `,i.defaultName.toLowerCase(),`:`]}),(0,w.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),disabled:e,style:{flex:1}})]}),i.nameSuggestions.length>0&&(0,w.jsxs)(`div`,{className:`name-suggestions`,children:[(0,w.jsx)(`span`,{className:`muted small`,children:`Suggestions:`}),i.nameSuggestions.map(t=>(0,w.jsx)(`button`,{type:`button`,className:t===o?`name-chip name-chip-active`:`name-chip`,onClick:()=>s(t),disabled:e,children:t},t))]}),(0,w.jsxs)(p,{children:[(0,w.jsx)(`button`,{type:`button`,onClick:n,disabled:e,children:`Cancel`}),(0,w.jsx)(`button`,{type:`submit`,className:`primary`,disabled:e||!o.trim(),children:e?`Creating…`:`Create`})]})]}),!i&&(0,w.jsx)(p,{children:(0,w.jsx)(`button`,{type:`button`,onClick:n,children:`Cancel`})})]})}function k(e){return!!(e&&typeof e==`object`&&`fixedFunction`in e&&e.fixedFunction)}export{T as GezellenView};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{Kt as r,Lt as i}from"./dist-BqGwkOe5.js";import{t as a}from"./api-BPraLwsh.js";import{i as o,n as s,r as c,t as l}from"./Tabs-jE0Z5Tzd.js";import{G as u,H as d,J as f,K as p,W as m,Y as h,q as g}from"./primitives-CWrGZpPI.js";import{It as _,a as v,f as y}from"./index-C0DYtvfg.js";import{t as b}from"./CatalogBrowser-DEM9t7Es.js";import{GezelDetail as x,t as S}from"./GezelDetail-Cph6pVGb.js";var C=e(t(),1),w=n();function T({activeProjectsByGezel:e,activeTurnsReady:t}){let[n,r]=(0,C.useState)([]),[i,o]=(0,C.useState)(void 0),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(void 0),[d,f]=(0,C.useState)(!1),[p,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(new Set),b=(0,C.useCallback)(async()=>{try{let{gezels:e}=await a.listGezels();r(e)}catch(e){m(e.message)}},[]),T=(0,C.useCallback)(async()=>{try{let e=await a.getConfig();o(e.meesterGezelId),c(e.roleBasedNameOnlyMode??!1)}catch{}},[]);(0,C.useEffect)(()=>{b(),T()},[b,T]),(0,C.useEffect)(()=>{let e=e=>{let t=e.detail;typeof t?.roleBasedNameOnlyMode==`boolean`&&c(t.roleBasedNameOnlyMode)};return window.addEventListener(`gezel:config-updated`,e),()=>window.removeEventListener(`gezel:config-updated`,e)},[]),(0,C.useEffect)(()=>{if(n.length===0){u(void 0);return}u(e=>e&&n.some(t=>t.id===e)?e:n[0].id)},[n]),(0,C.useEffect)(()=>{let e=()=>void b(),t=e=>{let t=e.detail?.gezelId;t&&(r(e=>e.filter(e=>e.id!==t)),u(e=>e===t?void 0:e),g(e=>{if(!e.has(t))return e;let n=new Set(e);return n.delete(t),n})),b(),T()};return window.addEventListener(`gezel:gezel-updated`,e),window.addEventListener(`gezel:growth-updated`,e),window.addEventListener(`gezel:gezel-deleted`,t),()=>{window.removeEventListener(`gezel:gezel-updated`,e),window.removeEventListener(`gezel:growth-updated`,e),window.removeEventListener(`gezel:gezel-deleted`,t)}},[b,T]),(0,C.useEffect)(()=>{v(`gezel`)&&f(!0);let e=()=>{v(`gezel`),f(!0)};return window.addEventListener(`gezel:new-gezel`,e),()=>window.removeEventListener(`gezel:new-gezel`,e)},[]);let D=(0,C.useCallback)((e,t)=>{g(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})},[]),O=(0,C.useCallback)(e=>{u(e)},[]),k=(0,C.useCallback)(t=>{O(t),(e?.get(t)?.size??0)>0&&window.dispatchEvent(new CustomEvent(`gezel:prefer-working-project`,{detail:{gezelId:t}}))},[e,O]),A=(0,C.useCallback)((e,t)=>{D(e.id,!0),(async()=>{try{let n=await a.generateGezelIcon(e.id,t?{instruction:t}:{});window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:n}))}catch{}finally{D(e.id,!1)}})(),e.role&&(async()=>{try{let t=await a.generateGezelAbout(e.id,{role:e.role});window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:t}))}catch{}})()},[D]);return(0,w.jsxs)(`div`,{className:`two-col gezellen-view`,"data-testid":`gezels-view`,children:[(0,w.jsx)(E,{open:d,onClose:()=>f(!1),onCreate:(0,C.useCallback)(async(e,t,n,r)=>{let i=await a.createGezel({name:e,gender:n,...t?{role:t}:{}});f(!1),await b(),O(i.id),window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:i})),A(i,r)},[b,O,A]),onTemplateCreated:async e=>{f(!1),await b(),O(e.id),window.dispatchEvent(new CustomEvent(`gezel:gezel-updated`,{detail:e}))}}),(0,w.jsxs)(`aside`,{className:`side gezels-side`,children:[(0,w.jsx)(`div`,{className:`area-toolbar`,children:(0,w.jsx)(`button`,{type:`button`,className:`area-toolbar-btn`,onClick:()=>f(!0),children:`+ New Gezel`})}),(0,w.jsx)(`ul`,{className:`gezel-list`,children:n.map(t=>{let n=h.has(t.id),r=t.id===l,a=(e?.get(t.id)?.size??0)>0;return(0,w.jsxs)(`li`,{className:`gezel-row-shell${r?` active`:``}`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`gezel-row${r?` active`:``}`,onClick:()=>k(t.id),children:[(0,w.jsx)(_,{svg:t.icon??null,poppetje:t.poppetje,iconOverride:t.iconOverride,name:t.name,size:36,pulsing:n&&!t.icon&&!t.poppetje}),(0,w.jsxs)(`span`,{className:`gezel-row-text`,children:[(0,w.jsxs)(`span`,{className:`gezel-row-name`,children:[t.name,t.growth&&(0,w.jsx)(S,{level:t.growth.level,pending:!!t.growth.pending}),t.storageScope===`machine-shared`&&(0,w.jsx)(`span`,{className:`machine-shared-badge`,title:`Shared with accounts on this machine; chats and memories stay private`,children:`Shared`}),t.id===i&&(0,w.jsx)(`span`,{className:`meester-badge`,title:`Current Meester — change in Settings`,"aria-label":`Current Meester`,children:`⭐`}),t.fixedFunction&&(0,w.jsx)(`span`,{className:`ff-row-badge`,title:`Fixed-function gezel — forwards messages to ${t.fixedFunction.tool} (no LLM)`,"aria-label":`Fixed-function gezel`,children:`⚡`})]}),(t.id===i||t.role)&&(0,w.jsx)(`span`,{className:`gezel-row-role`,children:t.id===i?t.role&&t.role!==`Meester`?`Meester · ${t.role}`:`Meester`:t.role})]})]}),a&&(0,w.jsxs)(`button`,{type:`button`,className:`project-row-thinking gezel-row-thinking`,onClick:()=>k(t.id),title:`${t.name} is working — open`,"aria-label":`${t.name} is working. Open gezel.`,children:[(0,w.jsx)(`span`,{className:`project-row-thinking-dot`,"aria-hidden":`true`}),(0,w.jsx)(`span`,{className:`project-row-thinking-dot`,"aria-hidden":`true`}),(0,w.jsx)(`span`,{className:`project-row-thinking-dot`,"aria-hidden":`true`})]}),(0,w.jsx)(y,{gezel:t,compact:!0,boringMode:s})]},t.id)})}),p&&(0,w.jsx)(`p`,{className:`error`,children:p})]}),(0,w.jsx)(`section`,{children:l?(0,w.jsx)(x,{gezelId:l,workingProjectIds:e?.get(l),activeTurnsReady:t},l):(0,w.jsx)(`p`,{className:`placeholder`,children:`No gezellen yet — create one to get started.`})})]})}function E({open:e,onClose:t,onCreate:n,onTemplateCreated:r}){let[i,a]=(0,C.useState)(`scratch`),[u,d]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{e&&a(`scratch`)},[e]),(0,w.jsx)(f,{open:e,onOpenChange:e=>{!e&&!u&&t()},children:(0,w.jsxs)(g,{children:[(0,w.jsx)(p,{}),(0,w.jsxs)(m,{className:`new-gezel-dialog`,children:[(0,w.jsx)(h,{asChild:!0,children:(0,w.jsx)(`h3`,{style:{margin:0},children:`New Gezel`})}),(0,w.jsxs)(c,{value:i,onValueChange:e=>a(e),children:[(0,w.jsxs)(s,{children:[(0,w.jsx)(o,{value:`scratch`,children:`From scratch`}),(0,w.jsx)(o,{value:`template`,children:`From template`})]}),(0,w.jsx)(l,{value:`scratch`,children:(0,w.jsx)(D,{onCancel:t,onCreate:n})}),(0,w.jsx)(l,{value:`template`,children:(0,w.jsx)(O,{busy:u,setBusy:d,onCancel:t,onCreated:r})})]})]})]})})}function D({onCancel:e,onCreate:t}){let[{name:n,gender:a},o]=(0,C.useState)(i),[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(``);return(0,w.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),n.trim()&&t(n.trim(),s.trim(),a,l.trim())},className:`new-gezel-form`,children:[(0,w.jsxs)(`label`,{children:[`Name`,(0,w.jsxs)(`div`,{className:`name-row`,children:[(0,w.jsx)(`input`,{value:n,onChange:e=>o(t=>({...t,name:e.target.value})),placeholder:`e.g. Ada`}),(0,w.jsx)(`button`,{type:`button`,className:`dice-btn`,onClick:()=>o(i()),title:`Pick a random name`,"aria-label":`Pick a random name`,children:`🎲`})]})]}),(0,w.jsxs)(`label`,{className:`new-gezel-gender-field`,children:[`Gender`,(0,w.jsxs)(`select`,{value:a,onChange:e=>o(t=>({...t,gender:e.target.value})),children:[(0,w.jsxs)(`option`,{value:`male`,children:[`male (`,r(`male`),`)`]}),(0,w.jsxs)(`option`,{value:`female`,children:[`female (`,r(`female`),`)`]}),(0,w.jsxs)(`option`,{value:`non-binary`,children:[`non-binary (`,r(`non-binary`),`)`]})]})]}),(0,w.jsxs)(`label`,{children:[`Role`,(0,w.jsx)(`input`,{value:s,onChange:e=>c(e.target.value),placeholder:`e.g. Developer, Marketing`})]}),(0,w.jsxs)(`label`,{children:[`Describe the icon `,(0,w.jsx)(`span`,{className:`muted`,children:`(optional)`}),(0,w.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),placeholder:`e.g. a playful owl wearing glasses, warm colors`,rows:3})]}),(0,w.jsxs)(d,{children:[(0,w.jsx)(`button`,{type:`button`,onClick:e,children:`Cancel`}),(0,w.jsx)(`button`,{type:`submit`,className:`primary`,disabled:!n.trim(),children:`Create`})]})]})}function O({busy:e,setBusy:t,onCancel:n,onCreated:r}){let[i,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(``),[l,f]=(0,C.useState)(null),p=async()=>{if(!(!i||!s.trim())){t(!0),f(null);try{r(await a.createGezelFromTemplate(i.id,{name:s.trim()}))}catch(e){f(e.message)}finally{t(!1)}}};return(0,w.jsxs)(`div`,{className:`new-gezel-template-tab`,children:[(0,w.jsx)(u,{className:`muted small`,style:{margin:`0 0 0.5rem 0`},children:`Pick a role to start from. The template's about.md becomes the new gezel's prompt — you can edit it after.`}),l&&(0,w.jsx)(`p`,{className:`error`,children:l}),(0,w.jsx)(b,{kind:`gezel-template`,emptyMessage:`No gezel templates available.`,action:t=>{if(t.manifest.kind!==`gezel-template`)return null;let n=t.manifest,r=i?.id===n.id,a=Array.isArray(n.nameSuggestions)?n.nameSuggestions:[],s=k(n.frontmatter);return(0,w.jsxs)(`div`,{className:`template-action-stack`,children:[s&&(0,w.jsx)(`span`,{className:`gz-badge gz-badge-passthrough`,title:`No LLM — passes your message straight to the configured tool`,children:`No LLM — passthrough`}),(0,w.jsx)(`button`,{type:`button`,disabled:e,className:r?`primary`:``,onClick:()=>{if(o({id:n.id,defaultName:n.name,nameSuggestions:a,isFixedFunction:s}),a.length>0){let e=Math.floor(Math.random()*a.length);c(a[e]??n.name)}else c(n.name)},children:r?`✓ Selected`:`Use this template`})]})}}),i&&(0,w.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),p()},className:`new-gezel-template-form`,children:[(0,w.jsxs)(`div`,{style:{display:`flex`,gap:`0.5rem`,alignItems:`center`},children:[(0,w.jsxs)(`span`,{className:`muted small`,style:{flexShrink:0},children:[`Name your `,i.defaultName.toLowerCase(),`:`]}),(0,w.jsx)(`input`,{value:s,onChange:e=>c(e.target.value),disabled:e,style:{flex:1}})]}),i.nameSuggestions.length>0&&(0,w.jsxs)(`div`,{className:`name-suggestions`,children:[(0,w.jsx)(`span`,{className:`muted small`,children:`Suggestions:`}),i.nameSuggestions.map(t=>(0,w.jsx)(`button`,{type:`button`,className:t===s?`name-chip name-chip-active`:`name-chip`,onClick:()=>c(t),disabled:e,children:t},t))]}),(0,w.jsxs)(d,{children:[(0,w.jsx)(`button`,{type:`button`,onClick:n,disabled:e,children:`Cancel`}),(0,w.jsx)(`button`,{type:`submit`,className:`primary`,disabled:e||!s.trim(),children:e?`Creating…`:`Create`})]})]}),!i&&(0,w.jsx)(d,{children:(0,w.jsx)(`button`,{type:`button`,onClick:n,children:`Cancel`})})]})}function k(e){return!!(e&&typeof e==`object`&&`fixedFunction`in e&&e.fixedFunction)}export{T as GezellenView};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./api-BX5xXiFs.js";import{n as i,t as a}from"./relative-time-B2kBaekd.js";var o=e(t(),1),s=n();function c(e){return e.mode===`overridden`?`Content source: developer override (GEZEL_GILDE_DATA_DIR)`:e.mode===`live`&&e.activeVersion?`Content: ${e.activeVersion} (app shipped with ${e.bundledVersion})`:`Content: ${e.bundledVersion} (bundled with the app)`}function l(e){let t=i(e.at);switch(e.outcome){case`up-to-date`:return`checked ${t} — up to date`;case`updated`:return`updated to ${e.version??`?`} ${t}`;case`incompatible`:return`checked ${t} — ${e.version??`a newer version`} needs an app update first`;case`error`:return`check failed ${t} — ${e.message??`unknown error`}`;case`blocked`:return`not checked (${e.message??`blocked`})`}}function u(){let[e,t]=(0,o.useState)(!1),[n,i]=(0,o.useState)(null),[u,d]=(0,o.useState)(null),f=(0,o.useRef)(null),p=(0,o.useCallback)(async()=>{try{let e=await r.getGildeUpdateStatus();return i(e),t(e.enabled),e}catch{return null}},[]),m=(0,o.useCallback)(()=>{if(f.current!==null)return;let e=60,t=async()=>{f.current=null;let n=await p();--e,n?.updateInProgress&&e>0&&(f.current=window.setTimeout(()=>void t(),2e3))};f.current=window.setTimeout(()=>void t(),2e3)},[p]);(0,o.useEffect)(()=>(p(),()=>{f.current!==null&&window.clearTimeout(f.current)}),[p]);let h=(0,o.useCallback)(async n=>{let i=e;t(n),d(null);try{await r.updateConfig({gildeUpdates:{enabled:n}}),n?m():p()}catch(e){t(i),d(e instanceof Error?e.message:String(e))}},[e,m,p]),g=(0,o.useCallback)(async()=>{d(null);try{await r.checkGildeUpdates(),i(e=>e&&{...e,updateInProgress:!0}),m()}catch(e){d(e instanceof Error?e.message:String(e))}},[m]),_=n?.mode===`overridden`||n?.updateInProgress===!0;return(0,s.jsxs)(`section`,{style:{marginBottom:`2rem`},children:[(0,s.jsx)(`h3`,{children:`Catalog content`}),(0,s.jsx)(`p`,{className:`muted`,style:{marginTop:0},children:`Craftbooks, model recommendations, and role templates ship with the app and can also update between releases. When on, Gezel checks about once a day for newer content, verifies it, and applies it. Nothing about you or this install is sent. Turning it off returns to the content that shipped with the app.`}),(0,s.jsxs)(`label`,{className:`debug-toggle`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>void h(e.target.checked)}),(0,s.jsx)(`span`,{children:`Keep catalog content up to date automatically`})]}),(0,s.jsxs)(`div`,{className:`new-row`,style:{marginTop:`0.75rem`,alignItems:`flex-start`,flexDirection:`column`,gap:`0.5rem`},children:[(0,s.jsxs)(`span`,{className:`muted small`,title:n?.lastCheck?a(n.lastCheck.at):void 0,children:[n?c(n):`loading…`,n?.updateInProgress?` · checking…`:n?.lastCheck?` · ${l(n.lastCheck)}`:``]}),e&&(0,s.jsx)(`button`,{type:`button`,onClick:()=>void g(),disabled:_,children:`Check now`})]}),u&&(0,s.jsx)(`p`,{className:`error small`,children:u})]})}export{u as GildeUpdatesCard};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./api-BPraLwsh.js";import{n as i,t as a}from"./relative-time-B2kBaekd.js";var o=e(t(),1),s=n();function c(e){return e.mode===`overridden`?`Content source: developer override (GEZEL_GILDE_DATA_DIR)`:e.mode===`live`&&e.activeVersion?`Content: ${e.activeVersion} (app shipped with ${e.bundledVersion})`:`Content: ${e.bundledVersion} (bundled with the app)`}function l(e){let t=i(e.at);switch(e.outcome){case`up-to-date`:return`checked ${t} — up to date`;case`updated`:return`updated to ${e.version??`?`} ${t}`;case`incompatible`:return`checked ${t} — ${e.version??`a newer version`} needs an app update first`;case`error`:return`check failed ${t} — ${e.message??`unknown error`}`;case`blocked`:return`not checked (${e.message??`blocked`})`}}function u(){let[e,t]=(0,o.useState)(!1),[n,i]=(0,o.useState)(null),[u,d]=(0,o.useState)(null),f=(0,o.useRef)(null),p=(0,o.useCallback)(async()=>{try{let e=await r.getGildeUpdateStatus();return i(e),t(e.enabled),e}catch{return null}},[]),m=(0,o.useCallback)(()=>{if(f.current!==null)return;let e=60,t=async()=>{f.current=null;let n=await p();--e,n?.updateInProgress&&e>0&&(f.current=window.setTimeout(()=>void t(),2e3))};f.current=window.setTimeout(()=>void t(),2e3)},[p]);(0,o.useEffect)(()=>(p(),()=>{f.current!==null&&window.clearTimeout(f.current)}),[p]);let h=(0,o.useCallback)(async n=>{let i=e;t(n),d(null);try{await r.updateConfig({gildeUpdates:{enabled:n}}),n?m():p()}catch(e){t(i),d(e instanceof Error?e.message:String(e))}},[e,m,p]),g=(0,o.useCallback)(async()=>{d(null);try{await r.checkGildeUpdates(),i(e=>e&&{...e,updateInProgress:!0}),m()}catch(e){d(e instanceof Error?e.message:String(e))}},[m]),_=n?.mode===`overridden`||n?.updateInProgress===!0;return(0,s.jsxs)(`section`,{style:{marginBottom:`2rem`},children:[(0,s.jsx)(`h3`,{children:`Catalog content`}),(0,s.jsx)(`p`,{className:`muted`,style:{marginTop:0},children:`Craftbooks, model recommendations, and role templates ship with the app and can also update between releases. When on, Gezel checks about once a day for newer content, verifies it, and applies it. Nothing about you or this install is sent. Turning it off returns to the content that shipped with the app.`}),(0,s.jsxs)(`label`,{className:`debug-toggle`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>void h(e.target.checked)}),(0,s.jsx)(`span`,{children:`Keep catalog content up to date automatically`})]}),(0,s.jsxs)(`div`,{className:`new-row`,style:{marginTop:`0.75rem`,alignItems:`flex-start`,flexDirection:`column`,gap:`0.5rem`},children:[(0,s.jsxs)(`span`,{className:`muted small`,title:n?.lastCheck?a(n.lastCheck.at):void 0,children:[n?c(n):`loading…`,n?.updateInProgress?` · checking…`:n?.lastCheck?` · ${l(n.lastCheck)}`:``]}),e&&(0,s.jsx)(`button`,{type:`button`,onClick:()=>void g(),disabled:_,children:`Check now`})]}),u&&(0,s.jsx)(`p`,{className:`error small`,children:u})]})}export{u as GildeUpdatesCard};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{F as r,I as i,N as a,P as o,j as s,k as c}from"./primitives-DEsn1shf.js";import{t as l}from"./api-BX5xXiFs.js";var u=e(t(),1),d=n();function f({onClose:e,onSignedIn:t}){let[n,f]=(0,u.useState)({kind:`starting`}),[m,h]=(0,u.useState)(!1),g=(0,u.useRef)({cancelled:!1});(0,u.useEffect)(()=>{let e=g.current;return(async()=>{try{let n=await l.startGitHubLogin();if(e.cancelled)return;f({kind:`awaiting`,start:n,status:`Waiting for you to authorize on GitHub…`});let r=n.interval,i=Date.now()+n.expiresIn*1e3;for(;!e.cancelled;){if(await p(r*1e3),e.cancelled)return;if(Date.now()>i){f({kind:`expired`});return}let a;try{a=await l.pollGitHubLogin(n.deviceCode)}catch(e){let t=e instanceof Error?e.message:String(e);f({kind:`error`,message:t});return}if(e.cancelled)return;if(a.status===`success`){t(a.identity);return}if(a.status===`expired`){f({kind:`expired`});return}if(a.status===`denied`){f({kind:`denied`,...a.error?{message:a.error}:{}});return}if(a.status===`not_configured`){f({kind:`error`,message:a.error});return}a.status===`slow_down`&&(r+=5)}}catch(t){if(e.cancelled)return;let n=t instanceof Error?t.message:String(t);f({kind:`error`,message:n})}})(),()=>{e.cancelled=!0}},[t]);let _=(0,u.useCallback)(async()=>{if(n.kind===`awaiting`)try{await navigator.clipboard.writeText(n.start.userCode),h(!0),setTimeout(()=>h(!1),1500)}catch{}},[n]),v=(0,u.useCallback)(()=>{n.kind===`awaiting`&&window.open(n.start.verificationUri,`_blank`,`noopener,noreferrer`)},[n]);return(0,d.jsx)(r,{open:!0,onOpenChange:t=>!t&&e(),children:(0,d.jsxs)(o,{children:[(0,d.jsx)(a,{}),(0,d.jsxs)(s,{children:[(0,d.jsx)(i,{asChild:!0,children:(0,d.jsx)(`h3`,{children:`Sign in to GitHub`})}),n.kind===`starting`&&(0,d.jsx)(`p`,{className:`muted`,children:`Starting sign-in…`}),n.kind===`awaiting`&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`p`,{className:`muted small`,children:`Open GitHub, paste the code below, and authorize Gezel. We'll detect when you're signed in and close this dialog automatically.`}),(0,d.jsxs)(`div`,{className:`gz-github-device-code`,children:[(0,d.jsx)(`code`,{children:n.start.userCode}),(0,d.jsx)(`button`,{type:`button`,onClick:()=>void _(),children:m?`Copied`:`Copy`})]}),(0,d.jsxs)(`div`,{className:`gz-github-device-actions`,children:[(0,d.jsx)(`button`,{type:`button`,className:`primary`,onClick:v,children:`Open GitHub`}),(0,d.jsx)(`span`,{className:`muted small`,children:n.status})]})]}),n.kind===`expired`&&(0,d.jsx)(`p`,{className:`error small`,children:`Sign-in code expired. Close and try again.`}),n.kind===`denied`&&(0,d.jsxs)(`p`,{className:`error small`,children:[`Sign-in was denied`,n.message?`: ${n.message}`:``,`.`]}),n.kind===`error`&&(0,d.jsx)(`p`,{className:`error small`,children:n.message}),(0,d.jsx)(c,{children:(0,d.jsx)(`button`,{type:`button`,onClick:e,children:n.kind===`awaiting`?`Cancel`:`Close`})})]})]})})}function p(e){return new Promise(t=>setTimeout(t,e))}function m({onChange:e,compact:t=!1}){let[n,r]=(0,u.useState)({kind:`loading`}),[i,a]=(0,u.useState)(!1),[o,s]=(0,u.useState)(!1),c=(0,u.useCallback)(async()=>{try{let t=await l.getGitHubIdentity();if(t.signedIn){let n={login:t.login,...t.name?{name:t.name}:{},...t.avatarUrl?{avatarUrl:t.avatarUrl}:{}};r({kind:`signed-in`,identity:n}),e?.(n)}else r({kind:`signed-out`}),e?.(null)}catch(t){let n=t instanceof Error?t.message:String(t);r({kind:`error`,message:n}),e?.(null)}},[e]);(0,u.useEffect)(()=>{c()},[c]);let p=(0,u.useCallback)(t=>{r({kind:`signed-in`,identity:t}),e?.(t),a(!1)},[e]),m=(0,u.useCallback)(async()=>{s(!1);try{await l.gitHubLogout()}finally{r({kind:`signed-out`}),e?.(null)}},[e]),h=`gz-github-chip${t?` compact`:``}`;if(n.kind===`loading`)return(0,d.jsx)(`span`,{className:`${h} muted`,children:`…`});if(n.kind===`error`)return(0,d.jsx)(`button`,{type:`button`,className:`${h} signed-out`,title:n.message,onClick:()=>void c(),children:`retry`});if(n.kind===`signed-out`)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`button`,{type:`button`,className:`${h} signed-out`,onClick:()=>a(!0),title:`Sign in to GitHub`,children:`Sign in`}),i&&(0,d.jsx)(f,{onClose:()=>a(!1),onSignedIn:p})]});let{identity:g}=n;return(0,d.jsxs)(`span`,{className:`${h} signed-in`,children:[(0,d.jsxs)(`button`,{type:`button`,className:`gz-github-chip-id`,onClick:()=>s(e=>!e),title:g.name??g.login,children:[g.avatarUrl?(0,d.jsx)(`img`,{src:g.avatarUrl,alt:``,className:`gz-github-chip-avatar`}):null,(0,d.jsxs)(`span`,{children:[`@`,g.login]})]}),o&&(0,d.jsx)(`span`,{className:`gz-github-chip-menu`,role:`menu`,children:(0,d.jsx)(`button`,{type:`button`,onClick:()=>void m(),children:`Sign out`})})]})}export{m as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./api-BPraLwsh.js";import{H as i,J as a,K as o,W as s,Y as c,q as l}from"./primitives-CWrGZpPI.js";var u=e(t(),1),d=n();function f({onClose:e,onSignedIn:t}){let[n,f]=(0,u.useState)({kind:`starting`}),[m,h]=(0,u.useState)(!1),g=(0,u.useRef)({cancelled:!1});(0,u.useEffect)(()=>{let e=g.current;return(async()=>{try{let n=await r.startGitHubLogin();if(e.cancelled)return;f({kind:`awaiting`,start:n,status:`Waiting for you to authorize on GitHub…`});let i=n.interval,a=Date.now()+n.expiresIn*1e3;for(;!e.cancelled;){if(await p(i*1e3),e.cancelled)return;if(Date.now()>a){f({kind:`expired`});return}let o;try{o=await r.pollGitHubLogin(n.deviceCode)}catch(e){let t=e instanceof Error?e.message:String(e);f({kind:`error`,message:t});return}if(e.cancelled)return;if(o.status===`success`){t(o.identity);return}if(o.status===`expired`){f({kind:`expired`});return}if(o.status===`denied`){f({kind:`denied`,...o.error?{message:o.error}:{}});return}if(o.status===`not_configured`){f({kind:`error`,message:o.error});return}o.status===`slow_down`&&(i+=5)}}catch(t){if(e.cancelled)return;let n=t instanceof Error?t.message:String(t);f({kind:`error`,message:n})}})(),()=>{e.cancelled=!0}},[t]);let _=(0,u.useCallback)(async()=>{if(n.kind===`awaiting`)try{await navigator.clipboard.writeText(n.start.userCode),h(!0),setTimeout(()=>h(!1),1500)}catch{}},[n]),v=(0,u.useCallback)(()=>{n.kind===`awaiting`&&window.open(n.start.verificationUri,`_blank`,`noopener,noreferrer`)},[n]);return(0,d.jsx)(a,{open:!0,onOpenChange:t=>!t&&e(),children:(0,d.jsxs)(l,{children:[(0,d.jsx)(o,{}),(0,d.jsxs)(s,{children:[(0,d.jsx)(c,{asChild:!0,children:(0,d.jsx)(`h3`,{children:`Sign in to GitHub`})}),n.kind===`starting`&&(0,d.jsx)(`p`,{className:`muted`,children:`Starting sign-in…`}),n.kind===`awaiting`&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`p`,{className:`muted small`,children:`Open GitHub, paste the code below, and authorize Gezel. We'll detect when you're signed in and close this dialog automatically.`}),(0,d.jsxs)(`div`,{className:`gz-github-device-code`,children:[(0,d.jsx)(`code`,{children:n.start.userCode}),(0,d.jsx)(`button`,{type:`button`,onClick:()=>void _(),children:m?`Copied`:`Copy`})]}),(0,d.jsxs)(`div`,{className:`gz-github-device-actions`,children:[(0,d.jsx)(`button`,{type:`button`,className:`primary`,onClick:v,children:`Open GitHub`}),(0,d.jsx)(`span`,{className:`muted small`,children:n.status})]})]}),n.kind===`expired`&&(0,d.jsx)(`p`,{className:`error small`,children:`Sign-in code expired. Close and try again.`}),n.kind===`denied`&&(0,d.jsxs)(`p`,{className:`error small`,children:[`Sign-in was denied`,n.message?`: ${n.message}`:``,`.`]}),n.kind===`error`&&(0,d.jsx)(`p`,{className:`error small`,children:n.message}),(0,d.jsx)(i,{children:(0,d.jsx)(`button`,{type:`button`,onClick:e,children:n.kind===`awaiting`?`Cancel`:`Close`})})]})]})})}function p(e){return new Promise(t=>setTimeout(t,e))}function m({onChange:e,compact:t=!1}){let[n,i]=(0,u.useState)({kind:`loading`}),[a,o]=(0,u.useState)(!1),[s,c]=(0,u.useState)(!1),l=(0,u.useCallback)(async()=>{try{let t=await r.getGitHubIdentity();if(t.signedIn){let n={login:t.login,...t.name?{name:t.name}:{},...t.avatarUrl?{avatarUrl:t.avatarUrl}:{}};i({kind:`signed-in`,identity:n}),e?.(n)}else i({kind:`signed-out`}),e?.(null)}catch(t){let n=t instanceof Error?t.message:String(t);i({kind:`error`,message:n}),e?.(null)}},[e]);(0,u.useEffect)(()=>{l()},[l]);let p=(0,u.useCallback)(t=>{i({kind:`signed-in`,identity:t}),e?.(t),o(!1)},[e]),m=(0,u.useCallback)(async()=>{c(!1);try{await r.gitHubLogout()}finally{i({kind:`signed-out`}),e?.(null)}},[e]),h=`gz-github-chip${t?` compact`:``}`;if(n.kind===`loading`)return(0,d.jsx)(`span`,{className:`${h} muted`,children:`…`});if(n.kind===`error`)return(0,d.jsx)(`button`,{type:`button`,className:`${h} signed-out`,title:n.message,onClick:()=>void l(),children:`retry`});if(n.kind===`signed-out`)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`button`,{type:`button`,className:`${h} signed-out`,onClick:()=>o(!0),title:`Sign in to GitHub`,children:`Sign in`}),a&&(0,d.jsx)(f,{onClose:()=>o(!1),onSignedIn:p})]});let{identity:g}=n;return(0,d.jsxs)(`span`,{className:`${h} signed-in`,children:[(0,d.jsxs)(`button`,{type:`button`,className:`gz-github-chip-id`,onClick:()=>c(e=>!e),title:g.name??g.login,children:[g.avatarUrl?(0,d.jsx)(`img`,{src:g.avatarUrl,alt:``,className:`gz-github-chip-avatar`}):null,(0,d.jsxs)(`span`,{children:[`@`,g.login]})]}),s&&(0,d.jsx)(`span`,{className:`gz-github-chip-menu`,role:`menu`,children:(0,d.jsx)(`button`,{type:`button`,onClick:()=>void m(),children:`Sign out`})})]})}export{m as t};
@@ -1,4 +1,4 @@
1
- import{i as e,t}from"./rolldown-runtime-aKtaBQYM.js";import{n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./react-dom-OL4w_gzs.js";import{t as i}from"./poppetje-Ce-02Aqi.js";var a=t((e=>{var t=n(),i=r();function a(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}var o=Symbol.for(`react.transitional.element`),s=Symbol.for(`react.portal`),c=Symbol.for(`react.fragment`),l=Symbol.for(`react.strict_mode`),u=Symbol.for(`react.profiler`),d=Symbol.for(`react.consumer`),f=Symbol.for(`react.context`),p=Symbol.for(`react.forward_ref`),m=Symbol.for(`react.suspense`),h=Symbol.for(`react.suspense_list`),g=Symbol.for(`react.memo`),_=Symbol.for(`react.lazy`),v=Symbol.for(`react.scope`),y=Symbol.for(`react.activity`),b=Symbol.for(`react.legacy_hidden`),x=Symbol.for(`react.memo_cache_sentinel`),S=Symbol.for(`react.view_transition`),C=Symbol.iterator;function ee(e){return typeof e!=`object`||!e?null:(e=C&&e[C]||e[`@@iterator`],typeof e==`function`?e:null)}var w=Array.isArray;function T(e,t){var n=e.length&3,r=e.length-n,i=t;for(t=0;t<r;){var a=e.charCodeAt(t)&255|(e.charCodeAt(++t)&255)<<8|(e.charCodeAt(++t)&255)<<16|(e.charCodeAt(++t)&255)<<24;++t,a=3432918353*(a&65535)+((3432918353*(a>>>16)&65535)<<16)&4294967295,a=a<<15|a>>>17,a=461845907*(a&65535)+((461845907*(a>>>16)&65535)<<16)&4294967295,i^=a,i=i<<13|i>>>19,i=5*(i&65535)+((5*(i>>>16)&65535)<<16)&4294967295,i=(i&65535)+27492+(((i>>>16)+58964&65535)<<16)}switch(a=0,n){case 3:a^=(e.charCodeAt(t+2)&255)<<16;case 2:a^=(e.charCodeAt(t+1)&255)<<8;case 1:a^=e.charCodeAt(t)&255,a=3432918353*(a&65535)+((3432918353*(a>>>16)&65535)<<16)&4294967295,a=a<<15|a>>>17,i^=461845907*(a&65535)+((461845907*(a>>>16)&65535)<<16)&4294967295}return i^=e.length,i^=i>>>16,i=2246822507*(i&65535)+((2246822507*(i>>>16)&65535)<<16)&4294967295,i^=i>>>13,i=3266489909*(i&65535)+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^i>>>16)>>>0}var E=Object.assign,D=Object.prototype.hasOwnProperty,O=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),k={},A={};function te(e){return D.call(A,e)?!0:D.call(k,e)?!1:O.test(e)?A[e]=!0:(k[e]=!0,!1)}var j=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `)),M=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),N=/["'&<>]/;function P(e){if(typeof e==`boolean`||typeof e==`number`||typeof e==`bigint`)return``+e;e=``+e;var t=N.exec(e);if(t){var n=``,r,i=0;for(r=t.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:t=`&quot;`;break;case 38:t=`&amp;`;break;case 39:t=`&#x27;`;break;case 60:t=`&lt;`;break;case 62:t=`&gt;`;break;default:continue}i!==r&&(n+=e.slice(i,r)),i=r+1,n+=t}e=i===r?n:n+e.slice(i,r)}return e}var ne=/([A-Z])/g,re=/^ms-/,F=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function I(e){return F.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}var ie=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ae=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L={pending:!1,data:null,method:null,action:null},R=ae.d;ae.d={f:R.f,r:R.r,D:it,C:at,L:ot,m:st,X:lt,S:ct,M:ut};var oe=[],se=null,ce=/(<\/|<)(s)(cript)/gi;function le(e,t,n,r){return``+t+(n===`s`?`\\u0073`:`\\u0053`)+r}function ue(e,t,n,r,i){return{idPrefix:e===void 0?``:e,nextFormID:0,streamingFormat:0,bootstrapScriptContent:n,bootstrapScripts:r,bootstrapModules:i,instructions:0,hasBody:!1,hasHtml:!1,unknownResources:{},dnsResources:{},connectResources:{default:{},anonymous:{},credentials:{}},imageResources:{},styleResources:{},scriptResources:{},moduleUnknownResources:{},moduleScriptResources:{}}}function z(e,t,n,r){return{insertionMode:e,selectedValue:t,tagScope:n,viewTransition:r}}function de(e,t,n){var r=e.tagScope&-25;switch(t){case`noscript`:return z(2,null,r|1,null);case`select`:return z(2,n.value==null?n.defaultValue:n.value,r,null);case`svg`:return z(4,null,r,null);case`picture`:return z(2,null,r|2,null);case`math`:return z(5,null,r,null);case`foreignObject`:return z(2,null,r,null);case`table`:return z(6,null,r,null);case`thead`:case`tbody`:case`tfoot`:return z(7,null,r,null);case`colgroup`:return z(9,null,r,null);case`tr`:return z(8,null,r,null);case`head`:if(2>e.insertionMode)return z(3,null,r,null);break;case`html`:if(e.insertionMode===0)return z(1,null,r,null)}return 6<=e.insertionMode||2>e.insertionMode?z(2,null,r,null):e.tagScope===r?e:z(e.insertionMode,e.selectedValue,r,null)}function B(e){return e===null?null:{update:e.update,enter:`none`,exit:`none`,share:e.update,name:e.autoName,autoName:e.autoName,nameIdx:0}}function fe(e,t){return t.tagScope&32&&(e.instructions|=128),z(t.insertionMode,t.selectedValue,t.tagScope|12,B(t.viewTransition))}function pe(e,t){e=B(t.viewTransition);var n=t.tagScope|16;return e!==null&&e.share!==`none`&&(n|=64),z(t.insertionMode,t.selectedValue,n,e)}var me=new Map;function he(e,t){if(typeof t!=`object`)throw Error(a(62));var n=!0,r;for(r in t)if(D.call(t,r)){var i=t[r];if(i!=null&&typeof i!=`boolean`&&i!==``){if(r.indexOf(`--`)===0){var o=P(r);i=P((``+i).trim())}else o=me.get(r),o===void 0&&(o=P(r.replace(ne,`-$1`).toLowerCase().replace(re,`-ms-`)),me.set(r,o)),i=typeof i==`number`?i===0||j.has(r)?``+i:i+`px`:P((``+i).trim());n?(n=!1,e.push(` style="`,o,`:`,i)):e.push(`;`,o,`:`,i)}}n||e.push(`"`)}function ge(e,t,n){n&&typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`=""`)}function _e(e,t,n){typeof n!=`function`&&typeof n!=`symbol`&&typeof n!=`boolean`&&e.push(` `,t,`="`,P(n),`"`)}var ve=P(`javascript:throw new Error('React form unexpectedly submitted.')`);function ye(e,t){this.push(`<input type="hidden"`),be(e),_e(this,`name`,t),_e(this,`value`,e),this.push(`/>`)}function be(e){if(typeof e!=`string`)throw Error(a(480))}function xe(e,t){if(typeof t.$$FORM_ACTION==`function`){var n=e.nextFormID++;e=e.idPrefix+n;try{var r=t.$$FORM_ACTION(e);return r&&r.data?.forEach(be),r}catch(e){if(typeof e==`object`&&e&&typeof e.then==`function`)throw e}}return null}function Se(e,t,n,r,i,a,o,s){var c=null;if(typeof r==`function`){var l=xe(t,r);l===null?(e.push(` `,`formAction`,`="`,ve,`"`),o=a=i=r=s=null,Te(t,n)):(s=l.name,r=l.action||``,i=l.encType,a=l.method,o=l.target,c=l.data)}return s!=null&&V(e,`name`,s),r!=null&&V(e,`formAction`,r),i!=null&&V(e,`formEncType`,i),a!=null&&V(e,`formMethod`,a),o!=null&&V(e,`formTarget`,o),c}function V(e,t,n){switch(t){case`className`:_e(e,`class`,n);break;case`tabIndex`:_e(e,`tabindex`,n);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:_e(e,t,n);break;case`style`:he(e,n);break;case`src`:case`href`:if(n===``)break;case`action`:case`formAction`:if(n==null||typeof n==`function`||typeof n==`symbol`||typeof n==`boolean`)break;n=I(``+n),e.push(` `,t,`="`,P(n),`"`);break;case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`ref`:break;case`autoFocus`:case`multiple`:case`muted`:ge(e,t.toLowerCase(),n);break;case`xlinkHref`:if(typeof n==`function`||typeof n==`symbol`||typeof n==`boolean`)break;n=I(``+n),e.push(` `,`xlink:href`,`="`,P(n),`"`);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`="`,P(n),`"`);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:n&&typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`=""`);break;case`capture`:case`download`:!0===n?e.push(` `,t,`=""`):!1!==n&&typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`="`,P(n),`"`);break;case`cols`:case`rows`:case`size`:case`span`:typeof n!=`function`&&typeof n!=`symbol`&&!isNaN(n)&&1<=n&&e.push(` `,t,`="`,P(n),`"`);break;case`rowSpan`:case`start`:typeof n==`function`||typeof n==`symbol`||isNaN(n)||e.push(` `,t,`="`,P(n),`"`);break;case`xlinkActuate`:_e(e,`xlink:actuate`,n);break;case`xlinkArcrole`:_e(e,`xlink:arcrole`,n);break;case`xlinkRole`:_e(e,`xlink:role`,n);break;case`xlinkShow`:_e(e,`xlink:show`,n);break;case`xlinkTitle`:_e(e,`xlink:title`,n);break;case`xlinkType`:_e(e,`xlink:type`,n);break;case`xmlBase`:_e(e,`xml:base`,n);break;case`xmlLang`:_e(e,`xml:lang`,n);break;case`xmlSpace`:_e(e,`xml:space`,n);break;default:if((!(2<t.length)||t[0]!==`o`&&t[0]!==`O`||t[1]!==`n`&&t[1]!==`N`)&&(t=M.get(t)||t,te(t))){switch(typeof n){case`function`:case`symbol`:return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`)return}e.push(` `,t,`="`,P(n),`"`)}}}function Ce(e,t,n){if(t!=null){if(n!=null)throw Error(a(60));if(typeof t!=`object`||!(`__html`in t))throw Error(a(61));t=t.__html,t!=null&&e.push(``+t)}}function we(e){var n=``;return t.Children.forEach(e,function(e){e!=null&&(n+=e)}),n}function Te(e,t){if(!(e.instructions&16)){e.instructions|=16;var n=t.preamble,r=t.bootstrapChunks;(n.htmlChunks||n.headChunks)&&r.length===0?(r.push(t.startInlineScript),nt(r,e),r.push(`>`,`addEventListener("submit",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute("formAction");null!=f&&(e=f,b=null)}"javascript:throw new Error('React form unexpectedly submitted.')"===e&&(a.preventDefault(),b?(a=document.createElement("input"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,`<\/script>`)):r.unshift(t.startInlineScript,`>`,`addEventListener("submit",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute("formAction");null!=f&&(e=f,b=null)}"javascript:throw new Error('React form unexpectedly submitted.')"===e&&(a.preventDefault(),b?(a=document.createElement("input"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,`<\/script>`)}}function Ee(e,t){for(var n in e.push(H(`link`)),t)if(D.call(t,n)){var r=t[n];if(r!=null)switch(n){case`children`:case`dangerouslySetInnerHTML`:throw Error(a(399,`link`));default:V(e,n,r)}}return e.push(`/>`),null}var De=/(<\/|<)(s)(tyle)/gi;function Oe(e,t,n,r){return``+t+(n===`s`?`\\73 `:`\\53 `)+r}function ke(e,t,n){for(var r in e.push(H(n)),t)if(D.call(t,r)){var i=t[r];if(i!=null)switch(r){case`children`:case`dangerouslySetInnerHTML`:throw Error(a(399,n));default:V(e,r,i)}}return e.push(`/>`),null}function Ae(e,t){e.push(H(`title`));var n=null,r=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),t=Array.isArray(n)?2>n.length?n[0]:null:n,typeof t!=`function`&&typeof t!=`symbol`&&t!=null&&e.push(P(``+t)),Ce(e,r,n),e.push(Le(`title`)),null}function je(e,t){e.push(H(`script`));var n=null,r=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),Ce(e,r,n),typeof n==`string`&&e.push((``+n).replace(ce,le)),e.push(Le(`script`)),null}function Me(e,t,n){e.push(H(n));var r=n=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),Ce(e,r,n),n}function Ne(e,t,n){e.push(H(n));var r=n=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),Ce(e,r,n),typeof n==`string`?(e.push(P(n)),null):n}var Pe=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Fe=new Map;function H(e){var t=Fe.get(e);if(t===void 0){if(!Pe.test(e))throw Error(a(65,e));t=`<`+e,Fe.set(e,t)}return t}function U(e,t,n,r,i,o,s,c,l){switch(t){case`div`:case`span`:case`svg`:case`path`:break;case`a`:e.push(H(`a`));var u=null,d=null,f;for(f in n)if(D.call(n,f)){var p=n[f];if(p!=null)switch(f){case`children`:u=p;break;case`dangerouslySetInnerHTML`:d=p;break;case`href`:p===``?_e(e,`href`,``):V(e,f,p);break;default:V(e,f,p)}}if(e.push(`>`),Ce(e,d,u),typeof u==`string`){e.push(P(u));var m=null}else m=u;return m;case`g`:case`p`:case`li`:break;case`select`:e.push(H(`select`));var h=null,g=null,_;for(_ in n)if(D.call(n,_)){var v=n[_];if(v!=null)switch(_){case`children`:h=v;break;case`dangerouslySetInnerHTML`:g=v;break;case`defaultValue`:case`value`:break;default:V(e,_,v)}}return e.push(`>`),Ce(e,g,h),h;case`option`:var y=c.selectedValue;e.push(H(`option`));var b=null,x=null,S=null,C=null,ee;for(ee in n)if(D.call(n,ee)){var T=n[ee];if(T!=null)switch(ee){case`children`:b=T;break;case`selected`:S=T;break;case`dangerouslySetInnerHTML`:C=T;break;case`value`:x=T;default:V(e,ee,T)}}if(y!=null){var O=x===null?we(b):``+x;if(w(y)){for(var k=0;k<y.length;k++)if(``+y[k]===O){e.push(` selected=""`);break}}else``+y===O&&e.push(` selected=""`)}else S&&e.push(` selected=""`);return e.push(`>`),Ce(e,C,b),b;case`textarea`:e.push(H(`textarea`));var A=null,j=null,M=null,N;for(N in n)if(D.call(n,N)){var ne=n[N];if(ne!=null)switch(N){case`children`:M=ne;break;case`value`:A=ne;break;case`defaultValue`:j=ne;break;case`dangerouslySetInnerHTML`:throw Error(a(91));default:V(e,N,ne)}}if(A===null&&j!==null&&(A=j),e.push(`>`),M!=null){if(A!=null)throw Error(a(92));if(w(M)){if(1<M.length)throw Error(a(93));A=``+M[0]}A=``+M}return typeof A==`string`&&A[0]===`
1
+ import{i as e,t}from"./rolldown-runtime-aKtaBQYM.js";import{n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./react-dom-OL4w_gzs.js";import{t as i}from"./poppetje-DLB8uevw.js";var a=t((e=>{var t=n(),i=r();function a(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}var o=Symbol.for(`react.transitional.element`),s=Symbol.for(`react.portal`),c=Symbol.for(`react.fragment`),l=Symbol.for(`react.strict_mode`),u=Symbol.for(`react.profiler`),d=Symbol.for(`react.consumer`),f=Symbol.for(`react.context`),p=Symbol.for(`react.forward_ref`),m=Symbol.for(`react.suspense`),h=Symbol.for(`react.suspense_list`),g=Symbol.for(`react.memo`),_=Symbol.for(`react.lazy`),v=Symbol.for(`react.scope`),y=Symbol.for(`react.activity`),b=Symbol.for(`react.legacy_hidden`),x=Symbol.for(`react.memo_cache_sentinel`),S=Symbol.for(`react.view_transition`),C=Symbol.iterator;function ee(e){return typeof e!=`object`||!e?null:(e=C&&e[C]||e[`@@iterator`],typeof e==`function`?e:null)}var w=Array.isArray;function T(e,t){var n=e.length&3,r=e.length-n,i=t;for(t=0;t<r;){var a=e.charCodeAt(t)&255|(e.charCodeAt(++t)&255)<<8|(e.charCodeAt(++t)&255)<<16|(e.charCodeAt(++t)&255)<<24;++t,a=3432918353*(a&65535)+((3432918353*(a>>>16)&65535)<<16)&4294967295,a=a<<15|a>>>17,a=461845907*(a&65535)+((461845907*(a>>>16)&65535)<<16)&4294967295,i^=a,i=i<<13|i>>>19,i=5*(i&65535)+((5*(i>>>16)&65535)<<16)&4294967295,i=(i&65535)+27492+(((i>>>16)+58964&65535)<<16)}switch(a=0,n){case 3:a^=(e.charCodeAt(t+2)&255)<<16;case 2:a^=(e.charCodeAt(t+1)&255)<<8;case 1:a^=e.charCodeAt(t)&255,a=3432918353*(a&65535)+((3432918353*(a>>>16)&65535)<<16)&4294967295,a=a<<15|a>>>17,i^=461845907*(a&65535)+((461845907*(a>>>16)&65535)<<16)&4294967295}return i^=e.length,i^=i>>>16,i=2246822507*(i&65535)+((2246822507*(i>>>16)&65535)<<16)&4294967295,i^=i>>>13,i=3266489909*(i&65535)+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^i>>>16)>>>0}var E=Object.assign,D=Object.prototype.hasOwnProperty,O=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),k={},A={};function te(e){return D.call(A,e)?!0:D.call(k,e)?!1:O.test(e)?A[e]=!0:(k[e]=!0,!1)}var j=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `)),M=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),N=/["'&<>]/;function P(e){if(typeof e==`boolean`||typeof e==`number`||typeof e==`bigint`)return``+e;e=``+e;var t=N.exec(e);if(t){var n=``,r,i=0;for(r=t.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:t=`&quot;`;break;case 38:t=`&amp;`;break;case 39:t=`&#x27;`;break;case 60:t=`&lt;`;break;case 62:t=`&gt;`;break;default:continue}i!==r&&(n+=e.slice(i,r)),i=r+1,n+=t}e=i===r?n:n+e.slice(i,r)}return e}var ne=/([A-Z])/g,re=/^ms-/,F=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function I(e){return F.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}var ie=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ae=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L={pending:!1,data:null,method:null,action:null},R=ae.d;ae.d={f:R.f,r:R.r,D:it,C:at,L:ot,m:st,X:lt,S:ct,M:ut};var oe=[],se=null,ce=/(<\/|<)(s)(cript)/gi;function le(e,t,n,r){return``+t+(n===`s`?`\\u0073`:`\\u0053`)+r}function ue(e,t,n,r,i){return{idPrefix:e===void 0?``:e,nextFormID:0,streamingFormat:0,bootstrapScriptContent:n,bootstrapScripts:r,bootstrapModules:i,instructions:0,hasBody:!1,hasHtml:!1,unknownResources:{},dnsResources:{},connectResources:{default:{},anonymous:{},credentials:{}},imageResources:{},styleResources:{},scriptResources:{},moduleUnknownResources:{},moduleScriptResources:{}}}function z(e,t,n,r){return{insertionMode:e,selectedValue:t,tagScope:n,viewTransition:r}}function de(e,t,n){var r=e.tagScope&-25;switch(t){case`noscript`:return z(2,null,r|1,null);case`select`:return z(2,n.value==null?n.defaultValue:n.value,r,null);case`svg`:return z(4,null,r,null);case`picture`:return z(2,null,r|2,null);case`math`:return z(5,null,r,null);case`foreignObject`:return z(2,null,r,null);case`table`:return z(6,null,r,null);case`thead`:case`tbody`:case`tfoot`:return z(7,null,r,null);case`colgroup`:return z(9,null,r,null);case`tr`:return z(8,null,r,null);case`head`:if(2>e.insertionMode)return z(3,null,r,null);break;case`html`:if(e.insertionMode===0)return z(1,null,r,null)}return 6<=e.insertionMode||2>e.insertionMode?z(2,null,r,null):e.tagScope===r?e:z(e.insertionMode,e.selectedValue,r,null)}function B(e){return e===null?null:{update:e.update,enter:`none`,exit:`none`,share:e.update,name:e.autoName,autoName:e.autoName,nameIdx:0}}function fe(e,t){return t.tagScope&32&&(e.instructions|=128),z(t.insertionMode,t.selectedValue,t.tagScope|12,B(t.viewTransition))}function pe(e,t){e=B(t.viewTransition);var n=t.tagScope|16;return e!==null&&e.share!==`none`&&(n|=64),z(t.insertionMode,t.selectedValue,n,e)}var me=new Map;function he(e,t){if(typeof t!=`object`)throw Error(a(62));var n=!0,r;for(r in t)if(D.call(t,r)){var i=t[r];if(i!=null&&typeof i!=`boolean`&&i!==``){if(r.indexOf(`--`)===0){var o=P(r);i=P((``+i).trim())}else o=me.get(r),o===void 0&&(o=P(r.replace(ne,`-$1`).toLowerCase().replace(re,`-ms-`)),me.set(r,o)),i=typeof i==`number`?i===0||j.has(r)?``+i:i+`px`:P((``+i).trim());n?(n=!1,e.push(` style="`,o,`:`,i)):e.push(`;`,o,`:`,i)}}n||e.push(`"`)}function ge(e,t,n){n&&typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`=""`)}function _e(e,t,n){typeof n!=`function`&&typeof n!=`symbol`&&typeof n!=`boolean`&&e.push(` `,t,`="`,P(n),`"`)}var ve=P(`javascript:throw new Error('React form unexpectedly submitted.')`);function ye(e,t){this.push(`<input type="hidden"`),be(e),_e(this,`name`,t),_e(this,`value`,e),this.push(`/>`)}function be(e){if(typeof e!=`string`)throw Error(a(480))}function xe(e,t){if(typeof t.$$FORM_ACTION==`function`){var n=e.nextFormID++;e=e.idPrefix+n;try{var r=t.$$FORM_ACTION(e);return r&&r.data?.forEach(be),r}catch(e){if(typeof e==`object`&&e&&typeof e.then==`function`)throw e}}return null}function Se(e,t,n,r,i,a,o,s){var c=null;if(typeof r==`function`){var l=xe(t,r);l===null?(e.push(` `,`formAction`,`="`,ve,`"`),o=a=i=r=s=null,Te(t,n)):(s=l.name,r=l.action||``,i=l.encType,a=l.method,o=l.target,c=l.data)}return s!=null&&V(e,`name`,s),r!=null&&V(e,`formAction`,r),i!=null&&V(e,`formEncType`,i),a!=null&&V(e,`formMethod`,a),o!=null&&V(e,`formTarget`,o),c}function V(e,t,n){switch(t){case`className`:_e(e,`class`,n);break;case`tabIndex`:_e(e,`tabindex`,n);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:_e(e,t,n);break;case`style`:he(e,n);break;case`src`:case`href`:if(n===``)break;case`action`:case`formAction`:if(n==null||typeof n==`function`||typeof n==`symbol`||typeof n==`boolean`)break;n=I(``+n),e.push(` `,t,`="`,P(n),`"`);break;case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`ref`:break;case`autoFocus`:case`multiple`:case`muted`:ge(e,t.toLowerCase(),n);break;case`xlinkHref`:if(typeof n==`function`||typeof n==`symbol`||typeof n==`boolean`)break;n=I(``+n),e.push(` `,`xlink:href`,`="`,P(n),`"`);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`="`,P(n),`"`);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:n&&typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`=""`);break;case`capture`:case`download`:!0===n?e.push(` `,t,`=""`):!1!==n&&typeof n!=`function`&&typeof n!=`symbol`&&e.push(` `,t,`="`,P(n),`"`);break;case`cols`:case`rows`:case`size`:case`span`:typeof n!=`function`&&typeof n!=`symbol`&&!isNaN(n)&&1<=n&&e.push(` `,t,`="`,P(n),`"`);break;case`rowSpan`:case`start`:typeof n==`function`||typeof n==`symbol`||isNaN(n)||e.push(` `,t,`="`,P(n),`"`);break;case`xlinkActuate`:_e(e,`xlink:actuate`,n);break;case`xlinkArcrole`:_e(e,`xlink:arcrole`,n);break;case`xlinkRole`:_e(e,`xlink:role`,n);break;case`xlinkShow`:_e(e,`xlink:show`,n);break;case`xlinkTitle`:_e(e,`xlink:title`,n);break;case`xlinkType`:_e(e,`xlink:type`,n);break;case`xmlBase`:_e(e,`xml:base`,n);break;case`xmlLang`:_e(e,`xml:lang`,n);break;case`xmlSpace`:_e(e,`xml:space`,n);break;default:if((!(2<t.length)||t[0]!==`o`&&t[0]!==`O`||t[1]!==`n`&&t[1]!==`N`)&&(t=M.get(t)||t,te(t))){switch(typeof n){case`function`:case`symbol`:return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`)return}e.push(` `,t,`="`,P(n),`"`)}}}function Ce(e,t,n){if(t!=null){if(n!=null)throw Error(a(60));if(typeof t!=`object`||!(`__html`in t))throw Error(a(61));t=t.__html,t!=null&&e.push(``+t)}}function we(e){var n=``;return t.Children.forEach(e,function(e){e!=null&&(n+=e)}),n}function Te(e,t){if(!(e.instructions&16)){e.instructions|=16;var n=t.preamble,r=t.bootstrapChunks;(n.htmlChunks||n.headChunks)&&r.length===0?(r.push(t.startInlineScript),nt(r,e),r.push(`>`,`addEventListener("submit",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute("formAction");null!=f&&(e=f,b=null)}"javascript:throw new Error('React form unexpectedly submitted.')"===e&&(a.preventDefault(),b?(a=document.createElement("input"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,`<\/script>`)):r.unshift(t.startInlineScript,`>`,`addEventListener("submit",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute("formAction");null!=f&&(e=f,b=null)}"javascript:throw new Error('React form unexpectedly submitted.')"===e&&(a.preventDefault(),b?(a=document.createElement("input"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,`<\/script>`)}}function Ee(e,t){for(var n in e.push(H(`link`)),t)if(D.call(t,n)){var r=t[n];if(r!=null)switch(n){case`children`:case`dangerouslySetInnerHTML`:throw Error(a(399,`link`));default:V(e,n,r)}}return e.push(`/>`),null}var De=/(<\/|<)(s)(tyle)/gi;function Oe(e,t,n,r){return``+t+(n===`s`?`\\73 `:`\\53 `)+r}function ke(e,t,n){for(var r in e.push(H(n)),t)if(D.call(t,r)){var i=t[r];if(i!=null)switch(r){case`children`:case`dangerouslySetInnerHTML`:throw Error(a(399,n));default:V(e,r,i)}}return e.push(`/>`),null}function Ae(e,t){e.push(H(`title`));var n=null,r=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),t=Array.isArray(n)?2>n.length?n[0]:null:n,typeof t!=`function`&&typeof t!=`symbol`&&t!=null&&e.push(P(``+t)),Ce(e,r,n),e.push(Le(`title`)),null}function je(e,t){e.push(H(`script`));var n=null,r=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),Ce(e,r,n),typeof n==`string`&&e.push((``+n).replace(ce,le)),e.push(Le(`script`)),null}function Me(e,t,n){e.push(H(n));var r=n=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),Ce(e,r,n),n}function Ne(e,t,n){e.push(H(n));var r=n=null,i;for(i in t)if(D.call(t,i)){var a=t[i];if(a!=null)switch(i){case`children`:n=a;break;case`dangerouslySetInnerHTML`:r=a;break;default:V(e,i,a)}}return e.push(`>`),Ce(e,r,n),typeof n==`string`?(e.push(P(n)),null):n}var Pe=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Fe=new Map;function H(e){var t=Fe.get(e);if(t===void 0){if(!Pe.test(e))throw Error(a(65,e));t=`<`+e,Fe.set(e,t)}return t}function U(e,t,n,r,i,o,s,c,l){switch(t){case`div`:case`span`:case`svg`:case`path`:break;case`a`:e.push(H(`a`));var u=null,d=null,f;for(f in n)if(D.call(n,f)){var p=n[f];if(p!=null)switch(f){case`children`:u=p;break;case`dangerouslySetInnerHTML`:d=p;break;case`href`:p===``?_e(e,`href`,``):V(e,f,p);break;default:V(e,f,p)}}if(e.push(`>`),Ce(e,d,u),typeof u==`string`){e.push(P(u));var m=null}else m=u;return m;case`g`:case`p`:case`li`:break;case`select`:e.push(H(`select`));var h=null,g=null,_;for(_ in n)if(D.call(n,_)){var v=n[_];if(v!=null)switch(_){case`children`:h=v;break;case`dangerouslySetInnerHTML`:g=v;break;case`defaultValue`:case`value`:break;default:V(e,_,v)}}return e.push(`>`),Ce(e,g,h),h;case`option`:var y=c.selectedValue;e.push(H(`option`));var b=null,x=null,S=null,C=null,ee;for(ee in n)if(D.call(n,ee)){var T=n[ee];if(T!=null)switch(ee){case`children`:b=T;break;case`selected`:S=T;break;case`dangerouslySetInnerHTML`:C=T;break;case`value`:x=T;default:V(e,ee,T)}}if(y!=null){var O=x===null?we(b):``+x;if(w(y)){for(var k=0;k<y.length;k++)if(``+y[k]===O){e.push(` selected=""`);break}}else``+y===O&&e.push(` selected=""`)}else S&&e.push(` selected=""`);return e.push(`>`),Ce(e,C,b),b;case`textarea`:e.push(H(`textarea`));var A=null,j=null,M=null,N;for(N in n)if(D.call(n,N)){var ne=n[N];if(ne!=null)switch(N){case`children`:M=ne;break;case`value`:A=ne;break;case`defaultValue`:j=ne;break;case`dangerouslySetInnerHTML`:throw Error(a(91));default:V(e,N,ne)}}if(A===null&&j!==null&&(A=j),e.push(`>`),M!=null){if(A!=null)throw Error(a(92));if(w(M)){if(1<M.length)throw Error(a(93));A=``+M[0]}A=``+M}return typeof A==`string`&&A[0]===`
2
2
  `&&e.push(`
3
3
  `),A!==null&&e.push(P(``+A)),null;case`input`:e.push(H(`input`));var re=null,F=null,ie=null,ae=null,L=null,R=null,se=null,ce=null,le=null,ue;for(ue in n)if(D.call(n,ue)){var z=n[ue];if(z!=null)switch(ue){case`children`:case`dangerouslySetInnerHTML`:throw Error(a(399,`input`));case`name`:re=z;break;case`formAction`:F=z;break;case`formEncType`:ie=z;break;case`formMethod`:ae=z;break;case`formTarget`:L=z;break;case`defaultChecked`:le=z;break;case`defaultValue`:se=z;break;case`checked`:ce=z;break;case`value`:R=z;break;default:V(e,ue,z)}}var de=Se(e,r,i,F,ie,ae,L,re);return ce===null?le!==null&&ge(e,`checked`,le):ge(e,`checked`,ce),R===null?se!==null&&V(e,`value`,se):V(e,`value`,R),e.push(`/>`),de?.forEach(ye,e),null;case`button`:e.push(H(`button`));var B=null,fe=null,pe=null,me=null,be=null,Pe=null,Fe=null,U;for(U in n)if(D.call(n,U)){var Ie=n[U];if(Ie!=null)switch(U){case`children`:B=Ie;break;case`dangerouslySetInnerHTML`:fe=Ie;break;case`name`:pe=Ie;break;case`formAction`:me=Ie;break;case`formEncType`:be=Ie;break;case`formMethod`:Pe=Ie;break;case`formTarget`:Fe=Ie;break;default:V(e,U,Ie)}}var Re=Se(e,r,i,me,be,Pe,Fe,pe);if(e.push(`>`),Re?.forEach(ye,e),Ce(e,fe,B),typeof B==`string`){e.push(P(B));var ze=null}else ze=B;return ze;case`form`:e.push(H(`form`));var Be=null,Ve=null,He=null,Ue=null,We=null,Ge=null,Ke;for(Ke in n)if(D.call(n,Ke)){var qe=n[Ke];if(qe!=null)switch(Ke){case`children`:Be=qe;break;case`dangerouslySetInnerHTML`:Ve=qe;break;case`action`:He=qe;break;case`encType`:Ue=qe;break;case`method`:We=qe;break;case`target`:Ge=qe;break;default:V(e,Ke,qe)}}var Je=null,Ye=null;if(typeof He==`function`){var W=xe(r,He);W===null?(e.push(` `,`action`,`="`,ve,`"`),Ge=We=Ue=He=null,Te(r,i)):(He=W.action||``,Ue=W.encType,We=W.method,Ge=W.target,Je=W.data,Ye=W.name)}if(He!=null&&V(e,`action`,He),Ue!=null&&V(e,`encType`,Ue),We!=null&&V(e,`method`,We),Ge!=null&&V(e,`target`,Ge),e.push(`>`),Ye!==null&&(e.push(`<input type="hidden"`),_e(e,`name`,Ye),e.push(`/>`),Je?.forEach(ye,e)),Ce(e,Ve,Be),typeof Be==`string`){e.push(P(Be));var Xe=null}else Xe=Be;return Xe;case`menuitem`:for(var Ze in e.push(H(`menuitem`)),n)if(D.call(n,Ze)){var G=n[Ze];if(G!=null)switch(Ze){case`children`:case`dangerouslySetInnerHTML`:throw Error(a(400));default:V(e,Ze,G)}}return e.push(`>`),null;case`object`:e.push(H(`object`));var Qe=null,$e=null,et;for(et in n)if(D.call(n,et)){var tt=n[et];if(tt!=null)switch(et){case`children`:Qe=tt;break;case`dangerouslySetInnerHTML`:$e=tt;break;case`data`:var nt=I(``+tt);if(nt===``)break;e.push(` `,`data`,`="`,P(nt),`"`);break;default:V(e,et,tt)}}if(e.push(`>`),Ce(e,$e,Qe),typeof Qe==`string`){e.push(P(Qe));var rt=null}else rt=Qe;return rt;case`title`:var K=c.tagScope&1,q=c.tagScope&4;if(c.insertionMode===4||K||n.itemProp!=null)var it=Ae(e,n);else q?it=null:(Ae(i.hoistableChunks,n),it=void 0);return it;case`link`:var at=c.tagScope&1,ot=c.tagScope&4,st=n.rel,ct=n.href,lt=n.precedence;if(c.insertionMode===4||at||n.itemProp!=null||typeof st!=`string`||typeof ct!=`string`||ct===``){Ee(e,n);var ut=null}else if(n.rel===`stylesheet`)if(typeof lt!=`string`||n.disabled!=null||n.onLoad||n.onError)ut=Ee(e,n);else{var pt=i.styles.get(lt),mt=r.styleResources.hasOwnProperty(ct)?r.styleResources[ct]:void 0;if(mt!==null){r.styleResources[ct]=null,pt||(pt={precedence:P(lt),rules:[],hrefs:[],sheets:new Map},i.styles.set(lt,pt));var ht={state:0,props:E({},n,{"data-precedence":n.precedence,precedence:null})};if(mt){mt.length===2&&dt(ht.props,mt);var gt=i.preloads.stylesheets.get(ct);gt&&0<gt.length?gt.length=0:ht.state=1}pt.sheets.set(ct,ht),s&&s.stylesheets.add(ht)}else if(pt){var _t=pt.sheets.get(ct);_t&&s&&s.stylesheets.add(_t)}l&&e.push(`<!-- -->`),ut=null}else n.onLoad||n.onError?ut=Ee(e,n):(l&&e.push(`<!-- -->`),ut=ot?null:Ee(i.hoistableChunks,n));return ut;case`script`:var vt=c.tagScope&1,yt=n.async;if(typeof n.src!=`string`||!n.src||!yt||typeof yt==`function`||typeof yt==`symbol`||n.onLoad||n.onError||c.insertionMode===4||vt||n.itemProp!=null)var bt=je(e,n);else{var xt=n.src;if(n.type===`module`)var St=r.moduleScriptResources,Ct=i.preloads.moduleScripts;else St=r.scriptResources,Ct=i.preloads.scripts;var wt=St.hasOwnProperty(xt)?St[xt]:void 0;if(wt!==null){St[xt]=null;var Tt=n;if(wt){wt.length===2&&(Tt=E({},n),dt(Tt,wt));var Et=Ct.get(xt);Et&&(Et.length=0)}var Dt=[];i.scripts.add(Dt),je(Dt,Tt)}l&&e.push(`<!-- -->`),bt=null}return bt;case`style`:var Ot=c.tagScope&1,kt=n.precedence,At=n.href,jt=n.nonce;if(c.insertionMode===4||Ot||n.itemProp!=null||typeof kt!=`string`||typeof At!=`string`||At===``){e.push(H(`style`));var Mt=null,Nt=null,Pt;for(Pt in n)if(D.call(n,Pt)){var Ft=n[Pt];if(Ft!=null)switch(Pt){case`children`:Mt=Ft;break;case`dangerouslySetInnerHTML`:Nt=Ft;break;default:V(e,Pt,Ft)}}e.push(`>`);var It=Array.isArray(Mt)?2>Mt.length?Mt[0]:null:Mt;typeof It!=`function`&&typeof It!=`symbol`&&It!=null&&e.push((``+It).replace(De,Oe)),Ce(e,Nt,Mt),e.push(Le(`style`));var Lt=null}else{var Rt=i.styles.get(kt);if((r.styleResources.hasOwnProperty(At)?r.styleResources[At]:void 0)!==null){r.styleResources[At]=null,Rt||(Rt={precedence:P(kt),rules:[],hrefs:[],sheets:new Map},i.styles.set(kt,Rt));var zt=i.nonce.style;if(!zt||zt===jt){Rt.hrefs.push(P(At));var Bt=Rt.rules,J=null,Vt=null,Ht;for(Ht in n)if(D.call(n,Ht)){var Ut=n[Ht];if(Ut!=null)switch(Ht){case`children`:J=Ut;break;case`dangerouslySetInnerHTML`:Vt=Ut}}var Wt=Array.isArray(J)?2>J.length?J[0]:null:J;typeof Wt!=`function`&&typeof Wt!=`symbol`&&Wt!=null&&Bt.push((``+Wt).replace(De,Oe)),Ce(Bt,Vt,J)}}Rt&&s&&s.styles.add(Rt),l&&e.push(`<!-- -->`),Lt=void 0}return Lt;case`meta`:var Gt=c.tagScope&1,Kt=c.tagScope&4;if(c.insertionMode===4||Gt||n.itemProp!=null)var qt=ke(e,n,`meta`);else l&&e.push(`<!-- -->`),qt=Kt?null:typeof n.charSet==`string`?ke(i.charsetChunks,n,`meta`):n.name===`viewport`?ke(i.viewportChunks,n,`meta`):ke(i.hoistableChunks,n,`meta`);return qt;case`listing`:case`pre`:e.push(H(t));var Jt=null,Yt=null,Xt;for(Xt in n)if(D.call(n,Xt)){var Zt=n[Xt];if(Zt!=null)switch(Xt){case`children`:Jt=Zt;break;case`dangerouslySetInnerHTML`:Yt=Zt;break;default:V(e,Xt,Zt)}}if(e.push(`>`),Yt!=null){if(Jt!=null)throw Error(a(60));if(typeof Yt!=`object`||!(`__html`in Yt))throw Error(a(61));var Y=Yt.__html;Y!=null&&(typeof Y==`string`&&0<Y.length&&Y[0]===`
4
4
  `?e.push(`
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./api-BPraLwsh.js";import{ft as i}from"./doc-Dr5K49bx.js";import{n as a}from"./chunk-GAZKTT4R-BkP6-w3z.js";import{n as o}from"./chunk-UBFT2CDQ-FexGDigd.js";import"./markdown-ryKA_OmY.js";import"./schemas-JY4jmLbC.js";import{Y as s,z as c}from"./chunk-6ECMNUIP-DDVjPyfK.js";import{n as l}from"./chunk-VKXOZTYP-BoVvWSBR.js";import{J as u,M as d,N as f,ht as p,p as m}from"./index-C0DYtvfg.js";import{n as h,t as g}from"./HandboekMediaProvider-DixaXTAH.js";var _=e(t(),1),v=n(),y=`gezel:handboek:article`;function b(){let[e,t]=(0,_.useState)(null),[n,b]=(0,_.useState)(()=>{try{return window.localStorage.getItem(y)}catch{return null}}),[C,ee]=(0,_.useState)(null),[w,T]=(0,_.useState)(null),[E,D]=(0,_.useState)(!1),[O,k]=(0,_.useState)(`doc`),[A,j]=(0,_.useState)(!1),[M,N]=(0,_.useState)(!1),[P,F]=(0,_.useState)(null),[I,L]=(0,_.useState)(!1),[R,z]=(0,_.useState)(()=>new Set),[B,V]=(0,_.useState)(()=>new Set),[H,U]=(0,_.useState)(``),W=(0,_.useMemo)(()=>{let t=H.trim().toLowerCase();return!t||!e?[]:e.areas.flatMap(e=>e.entries).filter(e=>e.title.toLowerCase().includes(t)||(e.summary??``).toLowerCase().includes(t))},[e,H]),G=p()===`light`?d:void 0;(0,_.useEffect)(()=>{let e=!0;return r.getAudioEngineStatus().then(t=>e&&j(t.tts.status===`ok`)).catch(()=>e&&j(!1)),()=>{e=!1}},[]),(0,_.useEffect)(()=>{let e=!0,n=u();return n&&b(n.articleId),r.getHandboekToc().then(n=>{e&&(t(n),b(e=>{let t=new Set(n.areas.flatMap(e=>e.entries.map(e=>e.id)));return e&&t.has(e)?e:n.areas[0]?.entries[0]?.id??null}))}).catch(t=>e&&T(String(t))),()=>{e=!1}},[]),(0,_.useEffect)(()=>{let e=e=>{let t=e.detail;t?.articleId&&b(t.articleId)};return window.addEventListener(`gezel:open-handboek-article`,e),()=>window.removeEventListener(`gezel:open-handboek-article`,e)},[]),(0,_.useEffect)(()=>{if(!n)return;try{window.localStorage.setItem(y,n)}catch{}let e=!0;return D(!0),T(null),r.getHandboekArticle(n).then(t=>{e&&(ee(t),k(`doc`),N(!1),F(e=>{for(let t of e?.urls??[])URL.revokeObjectURL(t);return null}))}).catch(t=>e&&T(String(t))).finally(()=>e&&D(!1)),()=>{e=!1}},[n]),(0,_.useEffect)(()=>{if(!e||!n)return;let t=e.areas.find(e=>e.entries.some(e=>e.id===n)),r=t?.entries.find(e=>e.id===n);if(!(!t||!r)&&(z(e=>{if(!e.has(t.area))return e;let n=new Set(e);return n.delete(t.area),n}),r.subcategory)){let e=S(t.area,r.subcategory.id);V(t=>t.has(e)?t:new Set(t).add(e))}},[e,n]);let K=(0,_.useMemo)(()=>C?g(C.figures):null,[C]),q=(0,_.useRef)(K);(0,_.useEffect)(()=>(q.current=K,()=>q.current?.dispose?.()),[K]);let J=(0,_.useMemo)(()=>{if(!C)return null;try{return i(o(h(C.markdown)),{articleId:C.id,defaultDuration:C.defaultDuration??6})}catch{return null}},[C]),Y=(0,_.useMemo)(()=>{if(!J||J.audio.segments.length>0)return J;let e=a(J);return e<=0?J:{...J,audio:{segments:[{src:``,name:`synthetic`,duration:e,startTime:0}]}}},[J]),X=(0,_.useCallback)(()=>{if(M){N(!1);return}if(P&&P.articleId===C?.id){N(!0);return}!C||I||(L(!0),(async()=>{let e=await r.getHandboekNarration(C.id),t=await Promise.all(e.segments.map(e=>r.fetchHandboekNarrationAudio(e.hash)));return{articleId:C.id,urls:t.map(e=>URL.createObjectURL(e)),durationsMs:e.segments.map(e=>e.durationMs)}})().then(e=>{F(e),N(!0)}).catch(e=>T(`Narration unavailable: ${String(e)}`)).finally(()=>L(!1)))},[M,P,C,I]),Z=(0,_.useMemo)(()=>{if(!J||!M||!P||P.articleId!==C?.id||P.urls.length!==J.blocks.length)return null;let e=0,t=P.urls.map((t,n)=>{let r=P.durationsMs[n]/1e3,i={src:t,name:J.blocks[n].id,duration:r,startTime:e};return e+=r,i});return{...J,audio:{segments:t},blocks:J.blocks.map((e,t)=>({...e,audioSegment:t}))}},[J,M,P,C]),Q=(0,_.useMemo)(()=>{let t=new Set,n=new Map;for(let r of e?.areas??[])for(let e of r.entries){t.add(e.id);let r=e.id.split(`/`).pop();r&&!n.has(r)&&n.set(r,e.id)}return{ids:t,byStem:n}},[e]),te=e=>{let t=e.target.closest(`a`);if(!t)return;let n=t.getAttribute(`href`);if(!n||/^[a-z][a-z0-9+.-]*:/i.test(n)||n.startsWith(`//`)||n.startsWith(`#`))return;e.preventDefault(),e.stopPropagation();let r=n.split(/[?#]/)[0].replace(/\.md$/,``).replace(/^(\.\.?\/)+/,``),i=(Q.ids.has(r)?r:void 0)??Q.byStem.get(r.split(`/`).pop()??``);i&&b(i)},ne=e=>{z(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},re=e=>{V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},$=(e,t=!1)=>(0,v.jsx)(`ul`,{className:t?`handboek-toc-subcategory-entries`:void 0,children:e.map(e=>(0,v.jsx)(`li`,{children:(0,v.jsx)(`button`,{type:`button`,className:e.id===n?`handboek-toc-entry handboek-toc-entry-active`:`handboek-toc-entry`,"aria-current":e.id===n?`page`:void 0,title:e.summary,onClick:()=>b(e.id),children:e.title})},e.id))});return(0,v.jsxs)(`div`,{className:`handboek-view`,"data-testid":`handboek-view`,children:[(0,v.jsxs)(`nav`,{className:`handboek-toc`,"aria-label":`Handboek contents`,children:[(0,v.jsxs)(`div`,{className:`handboek-toc-brand`,children:[(0,v.jsx)(m,{area:`handboek`,size:16}),(0,v.jsx)(`span`,{children:`Handboek`})]}),(0,v.jsx)(`input`,{type:`search`,className:`handboek-toc-filter`,placeholder:`Find an article…`,"aria-label":`Filter Handboek articles`,value:H,onChange:e=>U(e.target.value)}),!e&&!w&&(0,v.jsx)(`div`,{className:`handboek-toc-loading`,children:`Loading contents…`}),H.trim()?(0,v.jsx)(`section`,{className:`handboek-toc-area`,children:W.length>0?$(W):(0,v.jsx)(`div`,{className:`handboek-toc-loading`,children:`No articles match.`})}):null,!H.trim()&&e?.areas.map(e=>{let t=R.has(e.area),n=`handboek-area-${e.area}`,{ungrouped:r,subcategories:i}=x(e);return(0,v.jsxs)(`section`,{className:`handboek-toc-area`,children:[(0,v.jsx)(`h3`,{className:`handboek-toc-area-title`,children:(0,v.jsxs)(`button`,{type:`button`,className:`handboek-toc-disclosure handboek-toc-area-toggle`,"aria-expanded":!t,"aria-controls":n,onClick:()=>ne(e.area),children:[(0,v.jsx)(`span`,{className:`handboek-toc-caret`,"aria-hidden":`true`,children:`›`}),(0,v.jsx)(`span`,{children:e.title})]})}),!t&&(0,v.jsxs)(`div`,{id:n,className:`handboek-toc-area-contents`,children:[r.length>0&&$(r),i.map(t=>{let n=S(e.area,t.id),r=B.has(n),i=`handboek-subcategory-${e.area}-${t.id}`;return(0,v.jsxs)(`section`,{className:`handboek-toc-subcategory`,children:[(0,v.jsx)(`h4`,{className:`handboek-toc-subcategory-title`,children:(0,v.jsxs)(`button`,{type:`button`,className:`handboek-toc-disclosure handboek-toc-subcategory-toggle`,"aria-expanded":r,"aria-controls":i,onClick:()=>re(n),children:[(0,v.jsx)(`span`,{className:`handboek-toc-caret`,"aria-hidden":`true`,children:`›`}),(0,v.jsx)(`span`,{children:t.title})]})}),r&&(0,v.jsx)(`div`,{id:i,children:$(t.entries,!0)})]},t.id)})]})]},e.area)})]}),(0,v.jsxs)(`div`,{className:`handboek-pane`,children:[(0,v.jsxs)(`header`,{className:`handboek-pane-header`,children:[(0,v.jsxs)(`div`,{className:`handboek-pane-titles`,children:[(0,v.jsx)(`h2`,{children:C?.title??`Handboek`}),C?.summary&&(0,v.jsx)(`p`,{className:`handboek-pane-summary`,children:C.summary})]}),(0,v.jsxs)(`div`,{className:`handboek-header-controls`,children:[O===`video`&&A&&(0,v.jsx)(`button`,{type:`button`,className:M?`gz-key gz-key-active handboek-listen-key`:`gz-key handboek-listen-key`,"aria-pressed":M,disabled:I,onClick:X,title:`Narrate this article with the on-device voice`,children:I?`Preparing voice…`:`Listen`}),(0,v.jsxs)(`div`,{className:`gz-tray handboek-mode-tray`,role:`radiogroup`,"aria-label":`View as`,children:[(0,v.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":O===`doc`,className:O===`doc`?`gz-key gz-key-active`:`gz-key`,onClick:()=>k(`doc`),children:`Document`}),(0,v.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":O===`video`,className:O===`video`?`gz-key gz-key-active`:`gz-key`,onClick:()=>k(`video`),children:`Video`})]})]})]}),w&&(0,v.jsx)(`div`,{className:`handboek-error`,children:w}),E&&!C&&(0,v.jsx)(`div`,{className:`handboek-loading`,children:`Loading article…`}),J&&K&&(0,v.jsx)(s.Provider,{value:K,children:O===`doc`?(0,v.jsx)(`div`,{className:`handboek-doc`,"data-testid":`handboek-doc`,onClickCapture:te,children:(0,v.jsx)(c,{doc:J,className:`gezel-article-view`,theme:f,surface:G,imageDisplayMode:`inline`,showCover:!1})}):(0,v.jsx)(`div`,{className:`handboek-player`,"data-testid":`handboek-player`,children:(0,v.jsx)(l,{doc:Z??Y??J,theme:f,surface:G,displayMode:`video`,audioMode:Z?`media`:`synthetic`,captionsEnabled:!0,captionStyle:`social`,autoPlay:!0,showControls:!0,showScrubber:!0},Z?`narrated`:`synthetic`)})})]})]})}function x(e){let t=[],n=new Map;for(let r of e.entries){if(!r.subcategory){t.push(r);continue}let e=n.get(r.subcategory.id);e?e.entries.push(r):n.set(r.subcategory.id,{...r.subcategory,entries:[r]})}return{ungrouped:t,subcategories:[...n.values()].sort((e,t)=>e.order-t.order||e.title.localeCompare(t.title))}}function S(e,t){return`${e}:${t}`}export{b as HandboekView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{t as r}from"./api-BPraLwsh.js";import{d as i,l as a,m as o,p as s,s as c}from"./primitives-CWrGZpPI.js";import{n as l,t as u}from"./relative-time-B2kBaekd.js";import{G as d,H as f,W as p}from"./index-C0DYtvfg.js";var m=e(t(),1),h=n(),g=[{value:``,label:`All kinds`},{value:`session`,label:`Chat threads`},{value:`gezel.created`,label:`Gezel created`},{value:`gezel.deleted`,label:`Gezel removed`},{value:`gezel.renamed`,label:`Gezel renamed`},{value:`gezel.settings.updated`,label:`Gezel settings updated`},{value:`icon.generated`,label:`Icon generated`},{value:`icon.reverted`,label:`Icon reverted`},{value:`project.created`,label:`Project created`},{value:`project.updated`,label:`Project updated`},{value:`project.about.updated`,label:`Project about updated`},{value:`project.mission.updated`,label:`Project mission updated`},{value:`project.voorman.changed`,label:`Project voorman changed`},{value:`document.created`,label:`Document created`},{value:`document.updated`,label:`Document edited`},{value:`document.renamed`,label:`Document renamed`},{value:`document.deleted`,label:`Document deleted`},{value:`tool.called`,label:`Tool called`},{value:`meester.changed`,label:`Meester changed`},{value:`klerk.changed`,label:`Klerk changed`},{value:`boekwachter.changed`,label:`Boekwachter changed`},{value:`keurmeester.changed`,label:`Keurmeester changed`},{value:`knowledge.catalog.installed`,label:`Knowledge catalog installed`},{value:`knowledge.catalog.updated`,label:`Knowledge catalog updated`},{value:`knowledge.catalog.removed`,label:`Knowledge catalog removed`},{value:`gilde.updated`,label:`Catalog content updated`},{value:`task.created`,label:`Task created`},{value:`task.updated`,label:`Task updated`},{value:`task.about.updated`,label:`Task description updated`},{value:`task.status.changed`,label:`Task status changed`},{value:`task.assignee.changed`,label:`Task reassigned`},{value:`task.step.added`,label:`Task step added`},{value:`task.step.activated`,label:`Task step activated`},{value:`task.step.completed`,label:`Task step completed`},{value:`task.tick`,label:`Task cron tick`},{value:`task.canceled`,label:`Task canceled`},{value:`v1.chat.completion`,label:`App chat (connected apps)`},{value:`debug.bridge.failed`,label:`Debug: MCP bridge failed to start`}],_=`gezel:history-list-fraction:v1`,v=.2,y=.7,b=.36;function x(e){return Number.isFinite(e)?Math.max(v,Math.min(y,e)):b}function S(){if(typeof window>`u`)return b;try{let e=window.localStorage.getItem(_);return e?x(Number.parseFloat(e)):b}catch{return b}}function C({projectId:e}={}){let[t,n]=(0,m.useState)([]),[f,b]=(0,m.useState)(null),[C,w]=(0,m.useState)(!1),[T,E]=(0,m.useState)([]),[D,O]=(0,m.useState)([]),[A,j]=(0,m.useState)(``),[M,N]=(0,m.useState)(e??``);(0,m.useEffect)(()=>{e!==void 0&&N(e)},[e]);let[P,F]=(0,m.useState)(``),[I,L]=(0,m.useState)(``),[R,z]=(0,m.useState)(null),[B,V]=(0,m.useState)([]),H=(0,m.useMemo)(()=>{let e=new Map;for(let t of T)e.set(t.id,t.name);return t=>t?e.get(t)??t:``},[T]),U=(0,m.useMemo)(()=>{let e=new Map;for(let t of D)e.set(t.id,t.name);return t=>t?e.get(t)??t:``},[D]),W=(0,m.useCallback)(async()=>{w(!0),b(null);try{let e={limit:200};M&&(e.projectId=M),A&&(e.gezelId=A),P&&P!==`session`&&(e.kind=P),I.trim()&&(e.q=I.trim());let t=I.trim()?r.searchSessions({q:I.trim(),...M?{project:M}:{},...A?{gezel:A}:{},maxResults:10}).then(e=>e?.engine!==`unavailable`&&Array.isArray(e?.results)?e.results:[]).catch(()=>[]):Promise.resolve([]),i=await r.listHistory(e);V(await t);let a=P===`session`?i.entries.filter(e=>e.entryType===`session`):i.entries;n(a),z(e=>{let t=e=>e.entryType===`event`?e.id:`session:${e.id}`;if(e&&a.some(n=>t(n)===e))return e;let n=a[0];return n?t(n):null})}catch(e){b(e.message)}finally{w(!1)}},[M,A,P,I]);(0,m.useEffect)(()=>{r.listGezels().then(e=>E(e.gezels)).catch(()=>{}),r.listProjects().then(e=>O(e.projects)).catch(()=>{})},[]),(0,m.useEffect)(()=>{W()},[W]);let G=(0,m.useRef)(null),[K,Y]=(0,m.useState)(()=>S()),X=(0,m.useRef)(null),Z=(0,m.useCallback)(e=>{let t=x(e);Y(t);try{window.localStorage.setItem(_,t.toFixed(4))}catch{}},[]),Q=(0,m.useCallback)(e=>{e.preventDefault(),X.current={startX:e.clientX,startFraction:K,width:G.current?.clientWidth??1},document.body.classList.add(`chat-rail-resizing`),document.body.style.cursor=`col-resize`;let t=e=>{let t=X.current;!t||t.width<=0||Z(t.startFraction+(e.clientX-t.startX)/t.width)},n=()=>{X.current=null,document.body.style.cursor=``,document.body.classList.remove(`chat-rail-resizing`),window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},[K,Z]),$=(0,m.useCallback)(e=>{let t=e.shiftKey?.08:.02;e.key===`ArrowRight`?(e.preventDefault(),Z(K+t)):e.key===`ArrowLeft`?(e.preventDefault(),Z(K-t)):e.key===`Home`?(e.preventDefault(),Z(v)):e.key===`End`&&(e.preventDefault(),Z(y))},[K,Z]);return(0,h.jsxs)(`div`,{className:`history-view`,"data-testid":`history-view`,children:[(0,h.jsxs)(`header`,{className:`history-header`,children:[(0,h.jsx)(`h2`,{children:`History`}),(0,h.jsxs)(`div`,{className:`history-filters`,children:[e===void 0&&(0,h.jsxs)(i,{value:M||`__ALL__`,onValueChange:e=>N(e===`__ALL__`?``:e),children:[(0,h.jsx)(s,{children:(0,h.jsx)(o,{})}),(0,h.jsxs)(c,{children:[(0,h.jsx)(a,{value:`__ALL__`,children:`All projects`}),D.map(e=>(0,h.jsx)(a,{value:e.id,children:e.name},e.id))]})]}),(0,h.jsxs)(i,{value:A||`__ALL__`,onValueChange:e=>j(e===`__ALL__`?``:e),children:[(0,h.jsx)(s,{children:(0,h.jsx)(o,{})}),(0,h.jsxs)(c,{children:[(0,h.jsx)(a,{value:`__ALL__`,children:`All gezels`}),T.map(e=>(0,h.jsxs)(a,{value:e.id,children:[e.name,e.role?` — ${e.role}`:``]},e.id))]})]}),(0,h.jsxs)(i,{value:P||`__ALL__`,onValueChange:e=>F(e===`__ALL__`?``:e),children:[(0,h.jsx)(s,{children:(0,h.jsx)(o,{})}),(0,h.jsx)(c,{children:g.map(e=>(0,h.jsx)(a,{value:e.value||`__ALL__`,children:e.label},e.value||`__ALL__`))})]}),(0,h.jsx)(`input`,{placeholder:`Search…`,value:I,onChange:e=>L(e.target.value),style:{flex:1}}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>void W(),children:`Refresh`})]})]}),f&&(0,h.jsx)(`p`,{className:`error`,children:f}),C&&t.length===0&&(0,h.jsx)(`p`,{className:`muted`,children:`Loading…`}),!C&&t.length===0&&!f&&(0,h.jsx)(`p`,{className:`muted`,children:`No entries yet. Create a gezel, edit a project, or have a chat — events will show up here.`}),(0,h.jsxs)(`div`,{className:`history-split`,ref:G,style:{"--history-list-width":`${(K*100).toFixed(2)}%`},children:[(0,h.jsxs)(`ul`,{className:`history-list`,children:[B.length>0&&(0,h.jsx)(`li`,{className:`history-item`,children:(0,h.jsx)(`span`,{className:`history-transcript-header muted`,children:`Said in chats`})}),B.map(e=>(0,h.jsx)(`li`,{className:`history-item`,children:(0,h.jsxs)(`button`,{type:`button`,className:`history-row`,onClick:()=>{let t={gezelId:e.gezelId,sessionId:e.sessionId,...e.projectId?{projectId:e.projectId}:{},messageIndex:e.messageStart};d([{kind:`open-session`,intent:t},p({kind:`gezel`,id:e.gezelId}),{kind:`event`,type:`gezel:open-session`,detail:t}])},children:[(0,h.jsxs)(`span`,{className:`history-line`,children:[(0,h.jsxs)(`span`,{className:`history-summary`,children:[H(e.gezelId)||e.gezelId,` · `,e.title||`Untitled session`]}),(0,h.jsx)(`time`,{className:`history-time`,dateTime:e.lastActivityAt,title:u(e.lastActivityAt),children:l(e.lastActivityAt)})]}),(0,h.jsxs)(`span`,{className:`history-meta`,children:[(0,h.jsx)(`span`,{className:`history-kind`,children:`Transcript`}),U(e.projectId)&&(0,h.jsx)(`span`,{className:`history-chip`,children:U(e.projectId)}),(0,h.jsx)(`span`,{className:`history-stat`,children:e.snippet})]})]})},`transcript:${e.sessionId}:${e.messageStart}`)),t.map(e=>{let t=e.entryType===`event`?e.id:`session:${e.id}`;return(0,h.jsx)(`li`,{className:`history-item`,children:(0,h.jsx)(`button`,{type:`button`,className:`history-row${R===t?` history-row-selected`:``}`,onClick:()=>z(t),children:e.entryType===`session`?(0,h.jsx)(J,{entry:e,gezelName:H(e.gezelId),projectName:U(e.projectId)}):(0,h.jsx)(q,{entry:e,gezelName:H(e.gezelId),projectName:U(e.projectId)})})},t)})]}),(0,h.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize history list`,tabIndex:0,className:`chat-rail-grip history-split-grip`,onMouseDown:Q,onKeyDown:$}),(0,h.jsx)(`section`,{className:`history-detail`,children:(()=>{let e=t.find(e=>(e.entryType===`event`?e.id:`session:${e.id}`)===R);return e?(0,h.jsx)(k,{entry:e,gezelName:H(e.gezelId),projectName:U(e.projectId),resolveGezel:H,resolveProject:U}):(0,h.jsx)(`p`,{className:`placeholder`,children:`Click a history entry on the left to view its details.`})})()})]})]})}var w={actionId:`Action`,appId:`App`,archived:`Status`,at:`When`,bookCatalogId:`Craftbook`,bytes:`Size`,capabilityFloor:`Capability floor`,caseId:`Case`,changed:`Changed fields`,craftbookId:`Craftbook`,createdAt:`Started`,credentialName:`Credential`,durationMs:`Duration`,fieldIds:`Fields`,fromPath:`From`,fromSteps:`Steps before`,gezel:`Gezel`,gezelId:`Gezel`,id:`Reference`,inputTokens:`Input tokens`,lastActivityAt:`Last activity`,messageCount:`Messages`,newName:`New name`,oldName:`Previous name`,outputTokens:`Output tokens`,previous:`Before`,previousStatus:`Previous status`,previousUrl:`Previous URL`,previousVersion:`Previous version`,project:`Project`,projectId:`Project`,questionId:`Question`,ref:`Task`,reportPath:`Report`,runId:`Run`,sessionId:`Chat thread`,stepId:`Step`,taskRef:`Task`,toPath:`To`,toSteps:`Steps after`,trialId:`Trial`},T={anthropic:`Anthropic`,"anthropic-cli":`Claude CLI`,"codex-cli":`Codex CLI`,copilot:`GitHub Copilot`,ds4:`DwarfStar`,"llama-cpp":`llama.cpp`,mlx:`MLX`,ollama:`Ollama`,openai:`OpenAI`,remote:`Remote device`},E=/(?:^|\.)(action|decision|failureClass|kind|outcome|phase|provider|runMode|source|state|status|storageScope|surface|tier|trigger|via)$/i,D=/(?:^|\.)(command|credentialName|id|key|model|path|ref|script|tool|url)$/i,O=/(?:^at$|At$|Date$|timestamp$)/i;function k({entry:e,gezelName:t,projectName:n,resolveGezel:r,resolveProject:i}){return e.entryType===`session`?(0,h.jsx)(j,{entry:e,gezelName:t,projectName:n}):(0,h.jsx)(A,{entry:e,gezelName:t,projectName:n,resolveGezel:r,resolveProject:i})}function A({entry:e,gezelName:t,projectName:n,resolveGezel:r,resolveProject:i}){let a=e.details,o=typeof a?.diff==`string`?a.diff:void 0,s=typeof a?.addedLines==`number`?a.addedLines:void 0,c=typeof a?.removedLines==`number`?a.removedLines:void 0,u=a?Object.fromEntries(Object.entries(a).filter(([e,t])=>t!==void 0&&![`diff`,`addedLines`,`removedLines`].includes(e))):void 0,d=u&&Object.keys(u).length>0,p={resolveGezel:r,resolveProject:i};return(0,h.jsxs)(`article`,{className:`history-detail-document`,children:[(0,h.jsxs)(`header`,{className:`history-detail-header`,children:[(0,h.jsx)(`p`,{className:`history-detail-eyebrow`,title:e.kind,children:K(e.kind)}),(0,h.jsx)(`h3`,{children:e.summary}),(0,h.jsxs)(`time`,{dateTime:e.at,className:`history-detail-time`,children:[H(e.at),` `,(0,h.jsxs)(`span`,{children:[`· `,l(e.at,{style:`long`})]})]})]}),(n||t)&&(0,h.jsx)(M,{heading:`Context`,children:(0,h.jsx)(P,{fields:{...n?{project:n}:{},...t?{gezel:t}:{}},context:p})}),d&&(0,h.jsx)(M,{heading:`Details`,children:(0,h.jsx)(P,{fields:u,context:p})}),o&&(0,h.jsx)(M,{heading:`Changes`,children:(0,h.jsx)(f,{diff:o,...s===void 0?{}:{addedLines:s},...c===void 0?{}:{removedLines:c}})}),(0,h.jsx)(N,{id:e.id})]})}function j({entry:e,gezelName:t,projectName:n}){return(0,h.jsxs)(`article`,{className:`history-detail-document`,children:[(0,h.jsxs)(`header`,{className:`history-detail-header`,children:[(0,h.jsx)(`p`,{className:`history-detail-eyebrow`,children:`Chat thread`}),(0,h.jsx)(`h3`,{children:e.title}),(0,h.jsxs)(`p`,{className:`history-detail-subtitle`,children:[t||e.gezelId,n?` in ${n}`:``]})]}),(0,h.jsx)(M,{heading:`Conversation`,children:(0,h.jsx)(P,{fields:{gezel:t||e.gezelId,project:n||e.projectId,messageCount:e.messageCount,durationMs:e.durationMs,archived:e.archived===!0?`Archived`:`Active`}})}),(0,h.jsx)(M,{heading:`Timing`,children:(0,h.jsx)(P,{fields:{createdAt:e.createdAt,lastActivityAt:e.lastActivityAt}})}),(0,h.jsx)(M,{heading:`Model`,children:(0,h.jsx)(P,{fields:{provider:e.providerName,...e.model?{model:e.model}:{}}})}),(0,h.jsx)(N,{id:e.id})]})}function M({heading:e,children:t}){return(0,h.jsxs)(`section`,{className:`history-detail-section`,children:[(0,h.jsx)(`h4`,{children:e}),t]})}function N({id:e}){return(0,h.jsxs)(`footer`,{className:`history-detail-reference`,children:[(0,h.jsx)(`span`,{children:`Record reference`}),(0,h.jsx)(`code`,{children:e})]})}function P({fields:e,context:t={},path:n=``}){let r=Object.entries(e).filter(([,e])=>e!==void 0);return r.length===0?(0,h.jsx)(`p`,{className:`muted`,children:`No additional details were recorded.`}):(0,h.jsx)(`dl`,{className:`history-detail-fields`,children:r.map(([e,r])=>{let i=n?`${n}.${e}`:e;return(0,h.jsxs)(`div`,{className:`history-detail-field`,children:[(0,h.jsx)(`dt`,{children:I(e)}),(0,h.jsx)(`dd`,{children:(0,h.jsx)(F,{field:e,fieldPath:i,value:r,context:t})})]},i)})})}function F({field:e,fieldPath:t,value:n,context:r}){if(n===null)return(0,h.jsx)(`span`,{className:`history-detail-empty`,children:`Not set`});if(typeof n==`boolean`)return(0,h.jsx)(`span`,{children:n?`Yes`:`No`});if(typeof n==`number`)return e.toLowerCase().endsWith(`ms`)?(0,h.jsx)(`span`,{children:U(n)}):e.toLowerCase().endsWith(`bytes`)||e===`bytes`?(0,h.jsx)(`span`,{children:W(n)}):(0,h.jsx)(`span`,{children:n.toLocaleString()});if(typeof n==`string`){if(O.test(e)&&V(n))return(0,h.jsx)(`time`,{dateTime:n,children:H(n)});let i=L(t,R(e,n,r));return D.test(t)?(0,h.jsx)(`code`,{className:`history-detail-code`,children:i}):(0,h.jsx)(`span`,{className:`history-detail-text`,children:i})}return Array.isArray(n)?n.length===0?(0,h.jsx)(`span`,{className:`history-detail-empty`,children:`None`}):(0,h.jsx)(`ul`,{className:`history-detail-list`,children:n.map((n,i)=>(0,h.jsx)(`li`,{children:B(n)?(0,h.jsx)(P,{fields:n,context:r,path:`${t}.${i}`}):(0,h.jsx)(F,{field:e,fieldPath:t,value:n,context:r})},`${t}:${i}`))}):B(n)?(0,h.jsx)(`div`,{className:`history-detail-nested`,children:(0,h.jsx)(P,{fields:n,context:r,path:t})}):(0,h.jsx)(`span`,{className:`history-detail-text`,children:String(n)})}function I(e){let t=w[e];if(t)return t;let n=e.replace(/[._-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase().replace(/\bid\b/g,`ID`).replace(/\burl\b/g,`URL`).replace(/\bapi\b/g,`API`).trim();return n.charAt(0).toUpperCase()+n.slice(1)}function L(e,t){return(e.split(`.`).at(-1)??e).toLowerCase().includes(`provider`)?T[t]??t:E.test(e)?z(t):t}function R(e,t,n){return e===`gezelId`?n.resolveGezel?.(t)||t:(e===`projectId`||e===`targetProjectId`)&&n.resolveProject?.(t)||t}function z(e){let t=e.replace(/[._-]+/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}function B(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function V(e){return!Number.isNaN(new Date(e).getTime())}function H(e){return V(e)?new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)):e}function U(e){if(!Number.isFinite(e)||e<0)return`${e} ms`;if(e<1e3)return`${Math.round(e)} ms`;let t=Math.round(e/1e3),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),a=t%60,o=[];return n&&o.push(`${n} ${n===1?`day`:`days`}`),r&&o.push(`${r} ${r===1?`hour`:`hours`}`),i&&o.push(`${i} ${i===1?`minute`:`minutes`}`),a&&o.length<2&&o.push(`${a} ${a===1?`second`:`seconds`}`),o.slice(0,2).join(` `)}function W(e){if(!Number.isFinite(e)||e<0)return`${e} bytes`;if(e<1024)return`${e.toLocaleString()} ${e===1?`byte`:`bytes`}`;let t=[`KB`,`MB`,`GB`,`TB`],n=e/1024,r=t[0];for(let e=1;e<t.length&&n>=1024;e+=1)n/=1024,r=t[e];return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(n)} ${r}`}var G={"gezel.created":`Gezel created`,"gezel.renamed":`Gezel renamed`,"gezel.settings.updated":`Gezel settings`,"project.created":`Project created`,"project.updated":`Project updated`,"project.about.updated":`Project brief`,"project.mission.updated":`Mission updated`,"project.voorman.changed":`Voorman changed`,"project.gezel.joined":`Joined project`,"icon.generated":`Icon generated`,"icon.reverted":`Icon reverted`,"poppetje.generated":`Portrait carved`,"document.created":`Document created`,"document.updated":`Document edited`,"document.renamed":`Document renamed`,"document.deleted":`Document deleted`,"craftbook.created":`Craftbook created`,"task.created":`Task created`,"tool.called":`Tool call`,"meester.changed":`Meester changed`,"klerk.changed":`Klerk changed`,"boekwachter.changed":`Boekwachter changed`,"keurmeester.changed":`Keurmeester changed`,"gilde.updated":`Catalog content updated`,"knowledge.catalog.installed":`Knowledge catalog installed`,"knowledge.catalog.updated":`Knowledge catalog updated`,"knowledge.catalog.enabled":`Knowledge catalog enabled`,"knowledge.catalog.disabled":`Knowledge catalog disabled`,"knowledge.catalog.removed":`Knowledge catalog removed`,"knowledge.catalog.install_failed":`Knowledge catalog install failed`,"v1.chat.completion":`App chat`};function K(e){let t=G[e];if(t)return t;let n=e.split(`.`).join(` `);return n.charAt(0).toUpperCase()+n.slice(1)}function q({entry:e,gezelName:t,projectName:n}){return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`span`,{className:`history-line`,children:[(0,h.jsx)(`span`,{className:`history-summary`,children:e.summary}),(0,h.jsx)(`time`,{className:`history-time`,dateTime:e.at,title:u(e.at),children:l(e.at)})]}),(0,h.jsxs)(`span`,{className:`history-meta`,children:[(0,h.jsx)(`span`,{className:`history-kind`,title:e.kind,children:K(e.kind)}),n&&(0,h.jsx)(`span`,{className:`history-chip`,children:n}),t&&(0,h.jsx)(`span`,{className:`history-chip`,children:t})]})]})}function J({entry:e,gezelName:t,projectName:n}){let r=Math.max(1,Math.round(e.durationMs/6e4)),i=e.durationMs<6e4?`<1m`:`${r}m`;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`span`,{className:`history-line`,children:[(0,h.jsxs)(`span`,{className:`history-summary`,children:[t||e.gezelId,` · `,e.title]}),(0,h.jsx)(`time`,{className:`history-time`,dateTime:e.lastActivityAt,title:u(e.lastActivityAt),children:l(e.lastActivityAt)})]}),(0,h.jsxs)(`span`,{className:`history-meta`,children:[(0,h.jsx)(`span`,{className:`history-kind`,children:`Thread`}),n&&(0,h.jsx)(`span`,{className:`history-chip`,children:n}),(0,h.jsxs)(`span`,{className:`history-stat`,children:[e.messageCount,` msgs, `,i]})]})]})}export{C as HistoryView};
@@ -1 +1 @@
1
- .home-view{flex-direction:column;gap:1rem;height:100%;padding:1.25rem 1.25rem 0;display:flex;overflow-y:auto}.home-workshop{--paper:var(--home-workshop-paper);--paper-2:color-mix(in srgb, var(--gezel-paper-workshop) 72%, var(--gezel-paper-inset));--paper-3:color-mix(in srgb, var(--gezel-paper-workshop) 42%, var(--gezel-paper-inset));--ink:var(--gezel-ink-warm);--ink-2:var(--gezel-ink-warm-muted);--ink-3:var(--gezel-ink-warm-quiet);--rule:color-mix(in srgb, var(--gezel-paper-inset) 82%, var(--gezel-terra));--terra:var(--gezel-terra-bright);--terra-deep:var(--gezel-terra-deep);--terra-soft:var(--gezel-terra-soft);--ochre:#c89248;--indigo:#4d6b9a;--plum:#8a5677;--moss:#6b8a5a;--slate:#6b7480;--live:#9ed084;--home-card:color-mix(in srgb, var(--gezel-paper-workshop) 52%, white);--home-surf2:color-mix(in srgb, var(--gezel-paper-workshop) 76%, var(--gezel-paper-inset));--home-border:var(--paper-3);--home-hair:var(--rule);--home-user:color-mix(in srgb, var(--gezel-paper-workshop) 58%, var(--gezel-paper-inset));--home-amber:color-mix(in srgb, var(--gezel-terra-bright) 7%, transparent);--home-amber-bd:color-mix(in srgb, var(--gezel-terra-bright) 30%, transparent);--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;height:calc(100% + 2rem);color:var(--ink);background:radial-gradient(1200px 600px at 80% -10%, color-mix(in srgb, var(--gezel-sage-muted) 10%, transparent), transparent 60%), radial-gradient(900px 500px at -10% 110%, color-mix(in srgb, var(--gezel-terra-bright) 6%, transparent), transparent 60%), var(--paper);flex-direction:column;margin:-1rem -1.25rem;display:flex;overflow:hidden}[data-theme=dark] .home-workshop{--paper:var(--home-workshop-paper);--paper-2:#2a2620;--paper-3:#3a342b;--ink:#f0e8d5;--ink-2:#c8baa0;--ink-3:#8b7e6b;--rule:#4a4234;--home-card:#28241e;--home-surf2:#201d18;--home-border:#3a342b;--home-hair:#4a4234;--home-user:#322d25}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .home-workshop{--paper:var(--home-workshop-paper);--paper-2:#2a2620;--paper-3:#3a342b;--ink:#f0e8d5;--ink-2:#c8baa0;--ink-3:#8b7e6b;--rule:#4a4234;--home-card:#28241e;--home-surf2:#201d18;--home-border:#3a342b;--home-hair:#4a4234;--home-user:#322d25}}.home-workshop-eyebrow{font-family:var(--font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:500}.home-workshop-collapse-btn{border:1px solid var(--home-border);background:var(--home-card);width:32px;height:32px;color:var(--ink-2);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;line-height:1;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.home-workshop-collapse-btn:hover{border-color:var(--rule);background:var(--home-surf2);color:var(--ink)}.home-workshop-collapse-btn>svg{display:block}.home-workshop-greeting{border-bottom:1px solid var(--home-hair);flex:none;padding:20px 54px 32px}.home-workshop-greeting-top{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.home-workshop-greeting-cols{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:32px;display:flex}.home-workshop-greeting-left{flex:340px;min-width:280px}.home-workshop-headline{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:31px;font-weight:500;line-height:1}.home-workshop-headline-cta{all:unset;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit}.home-workshop-headline-cta:hover,.home-workshop-headline-cta:focus-visible{text-decoration:underline;-webkit-text-decoration-color:var(--terra-deep);text-decoration-color:var(--terra-deep);text-underline-offset:6px;text-decoration-thickness:2px}.home-workshop-chips{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.home-workshop-chip{white-space:nowrap;color:var(--ink-2);border-radius:var(--radius-sm);background:var(--home-card);border:1px solid var(--home-border);align-items:center;gap:7px;padding:5px 12px;font-size:12.5px;display:inline-flex}.home-workshop-chip-dot{border-radius:50%;flex:none;width:6px;height:6px}.home-workshop-greeting-collapsed{border-bottom:1px solid var(--home-hair);flex-wrap:wrap;flex:none;align-items:center;gap:16px;padding:16px 54px;display:flex}.home-workshop-greeting-collapsed .home-workshop-headline{white-space:nowrap;font-size:19px}.home-workshop-vrule{background:var(--home-hair);width:1px;height:16px}.home-workshop-tip{align-items:flex-start;gap:11px;max-width:640px;margin-top:20px;display:flex}.home-workshop-tip-sprout{flex:none;margin-top:2px}.home-workshop-tip-label-row{align-items:center;gap:8px;display:flex}.home-workshop-tip-label{color:var(--sage-deep)}.home-workshop-tip-cycle{all:unset;cursor:pointer;color:var(--ink-3);border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;display:inline-flex}.home-workshop-tip-cycle:hover{background:var(--home-surf2)}.home-workshop-tip-body{font-family:var(--font-display);color:var(--ink);margin-top:2px;font-size:16px;line-height:1.55}.home-workshop-tip-action{all:unset;cursor:pointer;color:var(--terra-deep);white-space:nowrap;font-weight:500}.home-workshop-tip-action:hover{text-decoration:underline}.home-workshop-status-report{max-width:640px}.home-workshop-status-body{max-height:260px;font-size:var(--text-md);color:var(--ink);line-height:1.55;overflow-y:auto}.home-workshop-status-foot{align-items:center;gap:12px;margin-top:10px;display:flex}.home-workshop-status-meta{font-size:var(--text-xs);color:var(--ink-3)}.home-workshop-tip-action:disabled{cursor:default;color:var(--ink-3);text-decoration:none}.home-workshop-greeting-right{flex-direction:column;align-items:flex-end;gap:14px;display:flex}.home-workshop-figure{flex-direction:column;align-items:center;width:96px;display:flex}.home-workshop-shelf{background:linear-gradient(#c8b189 0%,#a99068 100%);border-top:1px solid #8b7752;border-bottom:1px solid #6a5838;border-radius:1px;width:84px;height:5px;margin-top:-2px}.home-workshop-figure-label{font-family:var(--font-display);color:var(--ink);margin-top:8px;font-size:13px;font-weight:500}.home-workshop-figure-label em{color:var(--ink-3);font-weight:400}.home-workshop-tabs{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.home-workshop-tab{font-family:var(--font-ui);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;padding:3px 8px;font-size:10px;font-weight:500;transition:background .12s,color .12s,border-color .12s}.home-workshop-tab:hover{color:var(--ink-2);background:var(--home-card)}.home-workshop-tab.is-active{color:var(--ink);background:var(--home-card);border-color:var(--home-border);cursor:default}.home-workshop-tour-inline{flex-direction:column;display:flex}.home-workshop-body{flex:auto;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.home-workshop-main{flex-direction:column;min-width:0;min-height:0;padding:0;display:flex}.home-workshop-conversation{flex-direction:column;flex:1;gap:14px;min-height:0;display:flex}.home-workshop-conversation .chat-rail-main{background:var(--home-card);flex:1;min-height:0;overflow:hidden}.home-workshop-conversation .chat-rail-body:not(.chat-rail-body-split){grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);grid-auto-rows:0}.home-workshop-conversation .chat-rail-body:not(.chat-rail-body-split)>*{grid-area:1/1}.home-workshop-conversation-eyebrow{margin-bottom:2px}.home-workshop-rail-head{align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.home-workshop-rail-hint{font-family:var(--mono);color:var(--ink-3);white-space:nowrap;font-size:10px}.home-workshop-rail-empty{color:var(--ink-3);font-size:12.5px;font-family:var(--font-display);font-style:italic}@media (width<=920px){.home-workshop-greeting,.home-workshop-main{padding-left:28px;padding-right:28px}}.home-loading-placeholder{color:var(--text-muted,#0000008c);justify-content:center;align-items:center;gap:.6rem;padding:3rem 1.25rem;font-size:.95rem;animation:.25s .6s both home-loading-appear;display:flex}@keyframes home-loading-appear{0%{opacity:0}to{opacity:1}}.home-loading-spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite home-loading-spin}@keyframes home-loading-spin{to{transform:rotate(360deg)}}.home-intro{background:var(--surface);box-shadow:var(--surface-shadow);background:var(--titlebar);color:var(--titlebar-ink);border:none;border-radius:0;align-items:flex-start;gap:1.25rem;padding:1.25rem 1.5rem;display:flex}.home-intro-body{flex:1;min-width:0}.home-intro-article-controls{justify-content:space-between;align-items:center;gap:.6rem;margin:.35rem 0 .6rem;display:flex}.home-intro-page{background:var(--surface);color:var(--text);border-radius:var(--radius-lg);box-shadow:var(--surface-shadow);overflow:hidden}.home-intro-doc{max-height:26rem;padding:.5rem 1.5rem 1rem;overflow-y:auto}.home-intro-doc>*{max-width:52rem;margin:0 auto}.home-intro-doc .squisq-linear{height:auto;overflow:visible}.home-intro-player{height:24rem;padding:.75rem;display:flex}.home-intro-player>*{flex:1;min-height:0}.home-intro-doc img[alt=gezel-mark]{width:150px;height:auto;display:block}.home-intro-doc .squisq-page-media-frame:has(>img[alt=gezel-mark]){width:fit-content;margin-inline:auto}.home-intro h2{font-size:1.05rem;font-weight:400}.home-intro-logotype{vertical-align:-.3em;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none;width:auto;height:1.1em;margin-right:.35em;display:inline-block}.home-intro header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.4rem;display:flex}.home-intro h2{white-space:nowrap;flex-shrink:0;margin:0}.home-intro-body>p{color:var(--titlebar-ink);text-align:justify;-webkit-hyphens:auto;hyphens:auto;max-width:800px;margin:.9rem 0}.home-intro-body>p strong{color:#fff;font-weight:600}.home-intro .gz-link-button{color:var(--titlebar-ink);opacity:.85}.home-intro .gz-link-button:hover{opacity:1}.home-intro-toggle{color:var(--titlebar-ink);opacity:.75;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.15rem .45rem;font-size:1rem;line-height:1;transition:opacity .12s,background .12s}.home-intro-toggle:hover{opacity:1;background:#ffffff14}.home-intro code{background:#ffffff0f;border-radius:3px;padding:.05rem .3rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.home-intro-compact{color:var(--titlebar-ink);justify-content:space-between;align-items:center;padding:.5rem 1rem;font-size:.85rem;display:flex}.home-firstrun-heading{margin:1.25rem 0 .5rem;font-size:1.6rem}.home-view>.home-firstrun-heading:first-child{margin-top:0}.home-firstrun-lede{margin:0 0 .9rem;padding-left:1.25rem;font-size:.9rem}.home-firstrun-body{padding-left:1.25rem}.home-firstrun-body .setup-section:has(>h3){padding-left:1rem}.home-firstrun-body .setup-section:has(>h3)>h3{margin-left:-1rem}.home-firstrun-body .engagement-mode-description{min-height:6rem}.home-firstrun-body .home-ondevice-link{padding-left:1rem}.home-media-section{--home-media-control-width:30rem;padding-top:10px}.home-media-downloads{width:min(100%, calc(var(--home-media-control-width) + 1rem));box-sizing:border-box;flex-direction:column;gap:.4rem;margin-top:.5rem;padding-left:1rem;display:flex}.home-media-row{flex-wrap:wrap;align-items:center;gap:.6rem;width:100%;display:flex}.home-media-row>.home-media-btn{text-align:left;width:100%}.home-media-progress{width:100%;max-width:var(--home-media-control-width);flex-direction:column;gap:.3rem;display:flex}.home-media-progress-heading{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.home-media-progress-heading .gz-link-button{font-size:var(--text-xs);flex:none}.home-media-btn{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border:1px solid var(--accent)}.home-media-btn:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 20%, transparent)}.home-media-btn:disabled{opacity:.5;cursor:not-allowed}.home-media-btn-primary{background:var(--accent);color:var(--accent-selection-ink);border-color:color-mix(in srgb, var(--accent) 72%, var(--accent-selection-ink));padding:.5rem .9rem;font-weight:600;box-shadow:inset 0 1px #ffffff2e,0 1px 2px #3c1e0a33}.home-media-btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, var(--titlebar-ink))}.home-media-plan-hint{max-width:var(--home-media-control-width);margin:.4rem 0 0}.home-media-plan-dialog{width:min(34rem,100vw - 2rem)}.home-media-plan-list{border:0;flex-direction:column;gap:.45rem;margin:1rem 0;padding:0;display:flex}.home-media-plan-item{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;align-items:flex-start;gap:.65rem;padding:.65rem .75rem;display:flex}.home-media-plan-item:has(input:checked){border-color:color-mix(in srgb, var(--accent) 65%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--surface))}.home-media-plan-item input{accent-color:var(--accent);flex:none;margin-top:.2rem}.home-media-plan-copy{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.home-media-plan-name{justify-content:space-between;align-items:center;gap:.75rem;font-weight:600;display:flex}.home-media-plan-large{border:1px solid color-mix(in srgb, var(--warning) 50%, var(--border));border-radius:var(--radius-sm);background:var(--warning-bg);color:color-mix(in srgb, var(--warning) 55%, var(--text));font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.03em;flex:none;padding:.1rem .35rem;font-weight:600}.home-media-plan-summary{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--panel);flex-direction:column;gap:.25rem;min-height:3.25rem;padding:.65rem .75rem;display:flex}
1
+ .home-view{flex-direction:column;gap:1rem;height:100%;padding:1.25rem 1.25rem 0;display:flex;overflow-y:auto}.home-workshop{--paper:var(--home-workshop-paper);--paper-2:color-mix(in srgb, var(--gezel-paper-workshop) 72%, var(--gezel-paper-inset));--paper-3:color-mix(in srgb, var(--gezel-paper-workshop) 42%, var(--gezel-paper-inset));--ink:var(--gezel-ink-warm);--ink-2:var(--gezel-ink-warm-muted);--ink-3:var(--gezel-ink-warm-quiet);--rule:color-mix(in srgb, var(--gezel-paper-inset) 82%, var(--gezel-terra));--terra:var(--gezel-terra-bright);--terra-deep:var(--gezel-terra-deep);--terra-soft:var(--gezel-terra-soft);--ochre:#c89248;--indigo:#4d6b9a;--plum:#8a5677;--moss:#6b8a5a;--slate:#6b7480;--live:#9ed084;--home-card:color-mix(in srgb, var(--gezel-paper-workshop) 52%, white);--home-surf2:color-mix(in srgb, var(--gezel-paper-workshop) 76%, var(--gezel-paper-inset));--home-border:var(--paper-3);--home-hair:var(--rule);--home-user:color-mix(in srgb, var(--gezel-paper-workshop) 58%, var(--gezel-paper-inset));--home-amber:color-mix(in srgb, var(--gezel-terra-bright) 7%, transparent);--home-amber-bd:color-mix(in srgb, var(--gezel-terra-bright) 30%, transparent);--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;height:calc(100% + 2rem);color:var(--ink);background:radial-gradient(1200px 600px at 80% -10%, color-mix(in srgb, var(--gezel-sage-muted) 10%, transparent), transparent 60%), radial-gradient(900px 500px at -10% 110%, color-mix(in srgb, var(--gezel-terra-bright) 6%, transparent), transparent 60%), var(--paper);flex-direction:column;margin:-1rem -1.25rem;display:flex;overflow:hidden}[data-theme=dark] .home-workshop{--paper:var(--home-workshop-paper);--paper-2:#2a2620;--paper-3:#3a342b;--ink:#f0e8d5;--ink-2:#c8baa0;--ink-3:#8b7e6b;--rule:#4a4234;--home-card:#28241e;--home-surf2:#201d18;--home-border:#3a342b;--home-hair:#4a4234;--home-user:#322d25}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .home-workshop{--paper:var(--home-workshop-paper);--paper-2:#2a2620;--paper-3:#3a342b;--ink:#f0e8d5;--ink-2:#c8baa0;--ink-3:#8b7e6b;--rule:#4a4234;--home-card:#28241e;--home-surf2:#201d18;--home-border:#3a342b;--home-hair:#4a4234;--home-user:#322d25}}.home-workshop-eyebrow{font-family:var(--font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:500}.home-workshop-collapse-btn{border:1px solid var(--home-border);background:var(--home-card);width:32px;height:32px;color:var(--ink-2);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;line-height:1;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.home-workshop-collapse-btn:hover{border-color:var(--rule);background:var(--home-surf2);color:var(--ink)}.home-workshop-collapse-btn>svg{display:block}.home-workshop-greeting{border-bottom:1px solid var(--home-hair);flex:none;padding:20px 54px 32px}.home-workshop-greeting-top{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.home-workshop-greeting-cols{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:32px;display:flex}.home-workshop-greeting-left{flex:340px;min-width:280px}.home-workshop-headline{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:31px;font-weight:500;line-height:1}.home-workshop-headline-cta{all:unset;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit}.home-workshop-headline-cta:hover,.home-workshop-headline-cta:focus-visible{text-decoration:underline;-webkit-text-decoration-color:var(--terra-deep);text-decoration-color:var(--terra-deep);text-underline-offset:6px;text-decoration-thickness:2px}.home-workshop-chips{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.home-workshop-chip{white-space:nowrap;color:var(--ink-2);border-radius:var(--radius-sm);background:var(--home-card);border:1px solid var(--home-border);align-items:center;gap:7px;padding:5px 12px;font-size:12.5px;display:inline-flex}.home-workshop-chip-dot{border-radius:50%;flex:none;width:6px;height:6px}.home-workshop-greeting-collapsed{border-bottom:1px solid var(--home-hair);flex-wrap:wrap;flex:none;align-items:center;gap:16px;padding:16px 54px;display:flex}.home-workshop-greeting-collapsed .home-workshop-headline{white-space:nowrap;font-size:19px}.home-workshop-vrule{background:var(--home-hair);width:1px;height:16px}.home-workshop-tip{align-items:flex-start;gap:11px;max-width:640px;margin-top:20px;display:flex}.home-workshop-tip-sprout{flex:none;margin-top:2px}.home-workshop-tip-label-row{align-items:center;gap:8px;display:flex}.home-workshop-tip-label{color:var(--sage-deep)}.home-workshop-tip-cycle{all:unset;cursor:pointer;color:var(--ink-3);border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;display:inline-flex}.home-workshop-tip-cycle:hover{background:var(--home-surf2)}.home-workshop-tip-body{font-family:var(--font-display);color:var(--ink);margin-top:2px;font-size:16px;line-height:1.55}.home-workshop-tip-action{all:unset;cursor:pointer;color:var(--terra-deep);white-space:nowrap;font-weight:500}.home-workshop-tip-action:hover{text-decoration:underline}.home-workshop-status-report{max-width:640px}.home-workshop-status-body{max-height:260px;font-size:var(--text-md);color:var(--ink);line-height:1.55;overflow-y:auto}.home-workshop-status-foot{align-items:center;gap:12px;margin-top:10px;display:flex}.home-workshop-status-meta{font-size:var(--text-xs);color:var(--ink-3)}.home-workshop-tip-action:disabled{cursor:default;color:var(--ink-3);text-decoration:none}.home-workshop-greeting-right{flex-direction:column;align-items:flex-end;gap:14px;display:flex}.home-workshop-figure{flex-direction:column;align-items:center;width:96px;display:flex}.home-workshop-shelf{background:linear-gradient(#c8b189 0%,#a99068 100%);border-top:1px solid #8b7752;border-bottom:1px solid #6a5838;border-radius:1px;width:84px;height:5px;margin-top:-2px}.home-workshop-figure-label{font-family:var(--font-display);color:var(--ink);margin-top:8px;font-size:13px;font-weight:500}.home-workshop-figure-label em{color:var(--ink-3);font-weight:400}.home-workshop-tabs{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.home-workshop-tab{font-family:var(--font-ui);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;padding:3px 8px;font-size:10px;font-weight:500;transition:background .12s,color .12s,border-color .12s}.home-workshop-tab:hover{color:var(--ink-2);background:var(--home-card)}.home-workshop-tab.is-active{color:var(--ink);background:var(--home-card);border-color:var(--home-border);cursor:default}.home-workshop-tour-inline{flex-direction:column;display:flex}.home-workshop-body{flex:auto;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.home-workshop-main{flex-direction:column;min-width:0;min-height:0;padding:0;display:flex}.home-workshop-conversation{flex-direction:column;flex:1;gap:14px;min-height:0;display:flex}.home-workshop-conversation .chat-rail-main{background:var(--home-card);flex:1;min-height:0;overflow:hidden}.home-workshop-conversation .chat-rail-body:not(.chat-rail-body-split){grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);grid-auto-rows:0}.home-workshop-conversation .chat-rail-body:not(.chat-rail-body-split)>*{grid-area:1/1}.home-workshop-conversation-eyebrow{margin-bottom:2px}.home-workshop-rail-head{align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.home-workshop-rail-hint{font-family:var(--mono);color:var(--ink-3);white-space:nowrap;font-size:10px}.home-workshop-rail-empty{color:var(--ink-3);font-size:12.5px;font-family:var(--font-display);font-style:italic}@media (width<=920px){.home-workshop-greeting,.home-workshop-main{padding-left:28px;padding-right:28px}}.home-loading-placeholder{color:var(--text-muted,#0000008c);justify-content:center;align-items:center;gap:.6rem;padding:3rem 1.25rem;font-size:.95rem;animation:.25s .6s both home-loading-appear;display:flex}@keyframes home-loading-appear{0%{opacity:0}to{opacity:1}}.home-loading-spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite home-loading-spin}@keyframes home-loading-spin{to{transform:rotate(360deg)}}.home-intro-article-controls{justify-content:space-between;align-items:center;gap:.6rem;margin:.35rem 0 .6rem;display:flex}.home-intro-page{background:var(--surface);color:var(--text);border-radius:var(--radius-lg);box-shadow:var(--surface-shadow);overflow:hidden}.home-intro-page:not(.home-intro-page-player){background:var(--chat-bubble-bg);border:1px solid var(--border)}.home-intro-doc{max-height:26rem;padding:.5rem 1.5rem 1rem;overflow-y:auto}.home-intro-doc>*{max-width:52rem;margin:0 auto}.home-intro-doc .squisq-linear{height:auto;overflow:visible}.home-intro-player{height:24rem;padding:.75rem;display:flex}.home-intro-player>*{flex:1;min-height:0}.home-intro-doc img[alt=gezel-mark]{width:150px;height:auto;display:block}.home-intro-doc .squisq-page-media-frame:has(>img[alt=gezel-mark]){width:fit-content;margin-inline:auto}.home-firstrun-heading{margin:1.25rem 0 .5rem;font-size:1.6rem}.home-firstrun-columns{grid-template-columns:minmax(0,1fr);align-items:start;gap:1.5rem 2.5rem;display:grid}.home-firstrun-main>.home-firstrun-heading{margin-top:0}.home-firstrun-tutorial{min-width:0}@media (width>=78rem){.home-firstrun-columns{grid-template-columns:minmax(0,1fr) minmax(24rem,32rem);column-gap:1.75rem}.home-firstrun-tutorial{border-left:1px dashed var(--border);max-height:calc(100vh - 4.5rem);padding-left:1.75rem;position:sticky;top:0;overflow-y:auto}}.home-firstrun-tutorial .home-intro-doc{max-height:none;overflow-y:visible}.home-firstrun-tutorial .home-intro-doc h1,.home-firstrun-tutorial .home-intro-doc img[alt=gezel-mark]{display:none}.home-firstrun-tutorial .home-intro-doc :is(figure,.squisq-page-media,.squisq-page-media-frame):has(img[alt=gezel-mark]){display:none}.home-firstrun-tutorial .home-intro-page-player{margin-bottom:.75rem}.home-firstrun-tutorial .home-intro-player{height:18rem}.home-firstrun-lede{margin:0 0 .5rem;padding-left:1.25rem;font-size:.9rem}.home-firstrun-body{padding-left:1.25rem}.home-firstrun-body>.first-run-banner{margin-top:0}.home-firstrun-body .setup-section:has(>h3){padding-left:1rem}.home-firstrun-body .setup-section:has(>h3)>h3{margin-left:-1rem}.home-firstrun-body .engagement-mode-description{min-height:6rem}.home-firstrun-body .engagement-mode-switch{margin-top:.4rem}.home-firstrun-body .home-ondevice-link{padding-left:1rem}.home-media-section{--home-media-control-width:30rem;padding-top:10px;padding-left:1rem}.home-media-downloads{width:min(100%, calc(var(--home-media-control-width) + 1rem));box-sizing:border-box;flex-direction:column;gap:.4rem;margin-top:.5rem;padding-left:1rem;display:flex}.home-media-row{flex-wrap:wrap;align-items:center;gap:.6rem;width:100%;display:flex}.home-media-plan-link{color:var(--text-muted);font-size:var(--text-md)}.home-media-plan-link:hover{color:var(--text)}.home-media-progress{width:100%;max-width:var(--home-media-control-width);flex-direction:column;gap:.3rem;display:flex}.home-media-progress-heading{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.home-media-progress-heading .gz-link-button{font-size:var(--text-xs);flex:none}.home-media-plan-hint{max-width:var(--home-media-control-width);margin:.4rem 0 0}.home-media-plan-dialog{width:min(34rem,100vw - 2rem)}.home-media-plan-list{border:0;flex-direction:column;gap:.45rem;margin:1rem 0;padding:0;display:flex}.home-media-plan-item{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;align-items:flex-start;gap:.65rem;padding:.65rem .75rem;display:flex}.home-media-plan-item:has(input:checked){border-color:color-mix(in srgb, var(--accent) 65%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--surface))}.home-media-plan-item input{accent-color:var(--accent);flex:none;margin-top:.2rem}.home-media-plan-copy{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.home-media-plan-name{justify-content:space-between;align-items:center;gap:.75rem;font-weight:600;display:flex}.home-media-plan-large{border:1px solid color-mix(in srgb, var(--warning) 50%, var(--border));border-radius:var(--radius-sm);background:var(--warning-bg);color:color-mix(in srgb, var(--warning) 55%, var(--text));font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.03em;flex:none;padding:.1rem .35rem;font-weight:600}.home-media-plan-summary{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--panel);flex-direction:column;gap:.25rem;min-height:3.25rem;padding:.65rem .75rem;display:flex}
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{Ct as r,V as i,Yt as a,ft as o,gt as s,ln as c}from"./dist-BqGwkOe5.js";import{t as l}from"./api-BPraLwsh.js";import{B as u,F as d,I as f,L as p,N as m,P as h,R as g,V as _,z as v}from"./primitives-CWrGZpPI.js";import{t as y}from"./poppetje-DLB8uevw.js";import{n as b,t as x}from"./relative-time-B2kBaekd.js";import{r as S}from"./model-inventory-ykSm_IT5.js";import{ft as C}from"./doc-Dr5K49bx.js";import{n as w}from"./chunk-UBFT2CDQ-FexGDigd.js";import"./markdown-ryKA_OmY.js";import{Y as T,z as E}from"./chunk-6ECMNUIP-DDVjPyfK.js";import{n as D}from"./chunk-VKXOZTYP-BoVvWSBR.js";import{C as O,It as k,Lt as A,M as j,N as M,Rt as N,ft as P,gt as F,ht as I,m as L}from"./index-C0DYtvfg.js";import"./provider-default-BLsHrgzI.js";import{i as R,t as ee}from"./ChatTimelineView-CQ4Sf4Ip.js";import{n as z}from"./composer-prefill-CbG_i1Rx.js";import{t as te}from"./SessionSwitcher-6okzcxT7.js";import{c as ne,l as re,o as ie,s as ae,t as B}from"./chat-thread-memory-Be48zsyG.js";import{n as oe}from"./useCompactLayout-Dtolvzye.js";import{n as se,t as ce}from"./HandboekMediaProvider-DixaXTAH.js";import{n as le}from"./useCopilotAvailability-3xZvKgTF.js";import{t as V}from"./security-levels-QFeYFDP-.js";var H=e(t(),1),U=`gezel-first-run-intro`,W=n();function G(e,t,n){let r=e instanceof Error?e.message:String(e),i=e instanceof Error&&`mismatch`in e?e.mismatch:void 0;return i?{kind:`failed`,provider:t,modelId:n,error:r,mismatch:i}:{kind:`failed`,provider:t,modelId:n,error:r}}function ue({config:e,onConfigChanged:t,onModelInstalled:n}){let[r,i]=(0,H.useState)({kind:`hidden`}),[a,o]=(0,H.useState)(!1),[s,c]=(0,H.useState)(!1),[u,d]=(0,H.useState)(!1),f=(0,H.useRef)(!1),p=le(),m=(0,H.useCallback)(async()=>{if(e.provider!==`llama-cpp`&&e.provider!==`mlx`){i({kind:`hidden`});return}let t=e.provider,r=e.defaultModel?.[t];if(!r){i({kind:`hidden`});return}if(e.firstRunInstallError){i({kind:`failed`,provider:t,modelId:r,error:e.firstRunInstallError});return}try{let[e,a,o,s]=await Promise.all([t===`mlx`?l.listMlxModels():l.listLlamaCppModels(),t===`mlx`?l.listMlxActiveInstalls():l.listLlamaCppActiveInstalls(),l.getCatalogItem(`chat-model`,r).catch(()=>null),l.getMemoryProfile().catch(()=>null)]);if(e.models.some(e=>e.id===r)){i({kind:`hidden`}),f.current||(f.current=!0,S(t),n?.());return}let c=be(o,t),u=a.installs.find(e=>e.catalogId===r)??a.installs[0];if(u){i({kind:`installing`,provider:t,modelId:u.catalogId,sizeBytes:u.catalogId===r?c:null,progress:{bytesWritten:u.bytesWritten,totalBytes:u.totalBytes,phase:u.phase}});return}i({kind:`needs-download`,provider:t,modelId:r,sizeBytes:c,memory:s})}catch{}},[e.provider,e.defaultModel,e.firstRunInstallError,n]);(0,H.useEffect)(()=>{if(r.kind!==`installing`&&r.kind!==`hidden`)return;m();let e=setInterval(()=>void m(),3e3);return()=>clearInterval(e)},[m,r.kind]);let h=(0,H.useCallback)(async(e,t,n=!1)=>{let r=null,i=null,a=n?{skipSha:!0}:void 0;if(e===`mlx`?await l.installMlxModel(t,e=>{e.type===`error`&&(r=e.error,e.mismatch&&(i=e.mismatch))},void 0,a):await l.installLlamaCppModel(t,e=>{e.type===`error`&&(r=e.error,e.mismatch&&(i=e.mismatch))},void 0,a),r){let e=Error(r);throw i&&(e.mismatch=i),e}},[]),g=(0,H.useCallback)(async()=>{if(r.kind===`needs-download`){d(!0);try{i({kind:`installing`,provider:r.provider,modelId:r.modelId,sizeBytes:r.sizeBytes,progress:null}),await h(r.provider,r.modelId),await m()}catch(e){i(G(e,r.provider,r.modelId))}finally{d(!1)}}},[r,m,h]),_=(0,H.useCallback)(async()=>{if(r.kind===`failed`){o(!0);try{t(await l.updateConfig({firstRunInstallError:null})),await h(r.provider,r.modelId),await m()}catch(e){i(G(e,r.provider,r.modelId))}finally{o(!1)}}},[r,t,m,h]),v=(0,H.useCallback)(async()=>{if(!(r.kind!==`failed`||!r.mismatch)){o(!0);try{t(await l.updateConfig({firstRunInstallError:null})),i({kind:`installing`,provider:r.provider,modelId:r.modelId,sizeBytes:null,progress:null}),await h(r.provider,r.modelId,!0),await m()}catch(e){i(G(e,r.provider,r.modelId))}finally{o(!1)}}},[r,t,m,h]),y=(0,H.useCallback)(async()=>{if(p?.available===!1){window.dispatchEvent(new CustomEvent(`gezel:navigate`,{detail:{view:`settings`,section:`copilot`}})),i({kind:`hidden`});return}t(await l.updateConfig({provider:`copilot`})),i({kind:`hidden`})},[t,p]),b=(0,H.useCallback)(async()=>{if(r.kind===`failed`){c(!0);try{let n=r.modelId.replace(/-mlx$/,``);t(await l.updateConfig({provider:`llama-cpp`,defaultModel:{...e.defaultModel,"llama-cpp":n},firstRunInstallError:null})),await h(`llama-cpp`,n),await m()}catch(e){i(G(e,r.provider,r.modelId))}finally{c(!1)}}},[r,e.defaultModel,t,m,h]);if(r.kind===`hidden`)return null;if(r.kind===`needs-download`){let e=q(r.modelId),t=r.sizeBytes?ye(r.sizeBytes):null,n=t?`Download recommended model (${e}, ${t})`:`Download recommended model (${e})`;return(0,W.jsxs)(`output`,{className:`first-run-banner first-run-banner-installing`,children:[(0,W.jsx)(`div`,{className:`first-run-banner-head`,children:(0,W.jsx)(`strong`,{children:`Set up your first on-device model`})}),(0,W.jsxs)(`p`,{className:`first-run-banner-body`,children:[_e(r.memory),` We've picked one we think will work well on this device — click below to download it. Usually `,ve(r.sizeBytes),` on fast Internet, and you only have to do this once.`]}),(0,W.jsx)(`div`,{className:`first-run-banner-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`first-run-banner-btn first-run-banner-btn-primary`,onClick:()=>void g(),disabled:u,children:u?`Starting…`:n})})]})}if(r.kind===`installing`)return(0,W.jsxs)(`output`,{className:`first-run-banner first-run-banner-installing`,children:[(0,W.jsxs)(`div`,{className:`first-run-banner-head`,children:[(0,W.jsx)(`span`,{className:`first-run-banner-spinner`,"aria-hidden":!0}),(0,W.jsxs)(`strong`,{children:[`Downloading `,q(r.modelId),` for first-time setup`]})]}),(0,W.jsxs)(`p`,{className:`first-run-banner-body`,children:[`Gezel is downloading a local AI model so your conversations run on this device. Usually`,` `,ve(r.sizeBytes),` on fast Internet. You can start working with gezellen as soon as this finishes.`]}),(0,W.jsx)(fe,{progress:r.progress}),(0,W.jsx)(de,{})]});let x=r.provider===`mlx`,C=r.mismatch!=null,w=C?`${q(r.modelId)} is newer on Hugging Face than the version Gezel knows about`:`Couldn't download ${q(r.modelId)}`,T=C?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`first-run-banner-body`,children:[`The file `,(0,W.jsx)(`code`,{children:r.mismatch?.file}),` on Hugging Face has changed since this version of Gezel was published, so its checksum doesn't match what we expected. The new file is probably fine — Hugging Face routinely re-publishes models with small upstream fixes — but we can't guarantee it.`]}),(0,W.jsx)(`p`,{className:`first-run-banner-body`,children:`You can download it anyway and start using it now, or wait for a Gezel update with a refreshed catalog.`})]}):(0,W.jsx)(`p`,{className:`first-run-banner-body`,children:r.error});return(0,W.jsxs)(`output`,{className:`first-run-banner first-run-banner-failed`,children:[(0,W.jsx)(`div`,{className:`first-run-banner-head`,children:(0,W.jsx)(`strong`,{children:w})}),T,(0,W.jsxs)(`div`,{className:`first-run-banner-actions`,children:[C&&(0,W.jsx)(`button`,{type:`button`,className:`first-run-banner-btn first-run-banner-btn-primary`,onClick:()=>void v(),disabled:a||s,title:`Download the current file from Hugging Face without verifying it against the catalog's pinned checksum.`,children:a?`Downloading…`:`Download anyway`}),(0,W.jsx)(`button`,{type:`button`,className:C?`first-run-banner-btn`:`first-run-banner-btn first-run-banner-btn-primary`,onClick:()=>void _(),disabled:a||s,children:a&&!C?`Retrying…`:`Retry download`}),x&&(0,W.jsx)(`button`,{type:`button`,className:`first-run-banner-btn`,onClick:()=>void b(),disabled:a||s,title:`Use the llama engine instead. Works without Python; slightly slower than MLX on Apple Silicon.`,children:s?`Switching…`:`Switch to llama`}),(0,W.jsx)(`button`,{type:`button`,className:`first-run-banner-btn`,onClick:()=>void y(),disabled:a||s,children:p?.available===!1?`Set up GitHub Copilot`:`Use GitHub Copilot instead`}),!C&&(0,W.jsx)(P,{className:`first-run-banner-btn`,report:{surface:`model-download`,message:r.error,detail:{code:`first-run-install-failed`,engine:r.provider}}})]})]})}function de(){return(0,W.jsxs)(`p`,{className:`first-run-banner-wait`,children:[`Nothing to do until this finishes — a good moment to read`,` `,(0,W.jsx)(`button`,{type:`button`,className:`gz-link-button`,onClick:()=>{document.getElementById(U)?.scrollIntoView({behavior:`smooth`,block:`start`})},children:`what gezel is and how to work with your crew →`})]})}function fe({progress:e}){let t=e!=null&&e.totalBytes>0&&e.phase===`downloading`,n=t?Math.min(100,Math.round(e.bytesWritten/e.totalBytes*100)):0,r=e?e.phase===`verifying`?`Checking download…`:e.phase===`extracting-metadata`?`Reading model info…`:t?`${K(e.bytesWritten)} of ${K(e.totalBytes)} · ${n}%`:e.bytesWritten>0?`${K(e.bytesWritten)} downloaded`:`Starting…`:`Starting…`;return(0,W.jsxs)(`div`,{className:`first-run-banner-progress`,children:[(0,W.jsx)(`div`,{className:t?`first-run-banner-bar`:`first-run-banner-bar first-run-banner-bar-indeterminate`,children:(0,W.jsx)(`div`,{className:`first-run-banner-bar-fill`,style:t?{width:`${n}%`}:void 0})}),(0,W.jsx)(`span`,{className:`first-run-banner-progress-label`,children:r})]})}function K(e){return e>=1024**3?`${(e/1024**3).toFixed(1)} GB`:e>=1024**2?`${(e/1024**2).toFixed(0)} MB`:e>=1024?`${(e/1024).toFixed(0)} KB`:`${e} B`}var pe=25e9,me=13e9,he=5e9,ge=8*1024**3;function _e(e){return e?e.source===`gpu-integrated`||e.source===`system-ram-fallback`||e.source!==`darwin-unified`&&e.gpuMemoryKind!==`unified`&&(e.gpuVramBytes==null||e.gpuVramBytes<ge)?`This device is best suited to small AI models.`:`You can run ${e.usableBytes>=pe?`large`:e.usableBytes>=me?`medium-size`:e.usableBytes>=he?`small-size`:`tiny`} AI models${e.source===`darwin-unified`||e.gpuMemoryKind===`discrete`||e.gpuMemoryKind===`unified`?` comfortably`:``} on this device.`:`You can run AI models on this device.`}function ve(e){if(!e)return`2–5 minutes`;let t=e/1024**3;return`~${Math.max(5,Math.ceil(t/5)*5)} minutes`}function ye(e){let t=e/1024**3;if(t>=1)return`~${t.toFixed(1)} GB`;let n=e/1024**2;return`~${Math.round(n)} MB`}function be(e,t){if(!e)return null;let n=e.manifest;return!n||n.kind!==`chat-model`?null:(t===`mlx`?n.mlx?.approxSizeBytes:n.llamaCpp?.approxSizeBytes)??n.approxSizeBytes??null}function q(e){switch(e){case`gemma4-e2b-q4`:case`gemma4-e2b`:case`gemma4-e2b-mlx`:return`Gemma 4 (E2B)`;case`gemma4-e4b-q4`:case`gemma4-e4b`:case`gemma4-e4b-mlx`:return`Gemma 4 (E4B)`;case`gemma4-12b-q4`:case`gemma4-12b-q8`:return`Gemma 4 (12B)`;case`gemma4-26b-q4`:case`gemma4-26b`:case`gemma4-26b-mlx`:return`Gemma 4 (26B-A4B MoE)`;case`gemma4-31b-q4`:return`Gemma 4 (31B)`;case`qwen3.6-27b-q4`:case`qwen3.6-27b-q8`:return`Qwen 3.6 (27B)`;case`qwen3.6-35b-a3b-q4`:case`qwen3.6-35b-a3b-q8`:return`Qwen 3.6 (35B-A3B MoE)`;default:return e}}function J(e){return e==null?``:e>=1024**3?`~${(e/1024**3).toFixed(1)} GB`:`~${Math.round(e/1024**2)} MB`}function Y(e){return e>=1024**3?`${(e/1024**3).toFixed(1)} GB`:e>=1024**2?`${(e/1024**2).toFixed(0)} MB`:e>=1024?`${(e/1024).toFixed(0)} KB`:`${e} B`}function xe(e,t,n){let i=null;for(let a of e){let e=a.manifest;s(e)&&r(t,n===`image`?{minRamGB:e.minRamGB}:{minVramGB:e.minVramGB})&&(i==null||(e.recoScore??0)>(i.recoScore??0))&&(i=e)}return i}function Se(e){let t=null;for(let n of e)s(n)&&(t==null||(n.recoScore??0)>(t.recoScore??0))&&(t=n);return t}function Ce(e){let t=(e.approxSizeBytes??0)+(e.auxiliaryFiles??[]).reduce((e,t)=>e+(t.sizeBytes??0),0);return t>0?t:null}function X(e,t){return e.models.some(e=>e.id===t)}function we(){let[e,t]=(0,H.useState)(null),[n,r]=(0,H.useState)({}),[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(new Set),[c,y]=(0,H.useState)(null),[b,x]=(0,H.useState)(!1),[S,C]=(0,H.useState)(null),w=(0,H.useRef)(new Map),T=(0,H.useCallback)((e,t)=>{r(n=>({...n,[e]:t}))},[]),E=(0,H.useCallback)(async(e,t)=>{if(w.current.has(e.key))return;let n=new AbortController;w.current.set(e.key,n);let r=null;try{if(await t(t=>{if(t.type===`progress`){let n=t.bytesWrittenAll??t.bytesWritten,r=t.totalBytesAll??t.totalBytes;r&&n!=null&&T(e.key,{status:`installing`,pct:Math.min(100,Math.round(n/r*100)),bytesWritten:n,totalBytes:r})}else t.type===`error`&&(r=t.error??`download failed`)},n.signal),r)throw Error(r);T(e.key,{status:`done`,pct:100})}catch(t){if(n.signal.aborted)return;T(e.key,{status:`error`,pct:null,error:t instanceof Error?t.message:String(t)})}finally{w.current.get(e.key)===n&&w.current.delete(e.key)}},[T]);(0,H.useEffect)(()=>{let e=!1,n={models:[]};return(async()=>{try{let[i,a,o,s,c,u,d,f,p,m,h,g]=await Promise.all([l.getMemoryProfile(),l.listCatalogItems(`image-model`),l.listCatalogItems(`video-model`),l.listAudioCatalog(),l.listInstalledImageModels().catch(()=>n),l.listInstalledVideoModels().catch(()=>n),l.listInstalledSttModels().catch(()=>n),l.listInstalledTtsModels().catch(()=>n),l.listActiveImagePulls().catch(()=>({pulls:[]})),l.listActiveVideoPulls().catch(()=>({pulls:[]})),l.listRecognitionCatalog().catch(()=>({models:[]})),l.listInstalledRecognitionModels().catch(()=>n)]);if(e)return;let _={platform:i.platform,gpuVramBytes:i.gpuVramBytes,totalRamBytes:i.totalRamBytes,usableBytes:i.usableBytes,...i.budgetBytes===void 0?{}:{budgetBytes:i.budgetBytes}},v=[],y=xe(a.items,_,`image`);if(y){let e=p.pulls.find(e=>e.id===y.id&&!e.finished);v.push({key:`image`,id:y.id,what:`image model`,name:y.name,sizeBytes:Ce(y),installed:X(c,y.id),start:(e,t)=>l.pullImageModel(y.id,e,t),cancel:()=>l.cancelImagePull(y.id),...e?{resume:{bytesWritten:e.bytesWritten,totalBytes:e.totalBytes,subscribe:(e,t)=>l.subscribeImagePull(y.id,e,t)}}:{}})}let b=[...h.models].filter(e=>!e.approxSizeBytes||e.approxSizeBytes<=_.usableBytes*.5).sort((e,t)=>t.recoScore-e.recoScore)[0];b&&v.push({key:`recognition`,id:b.id,what:`image reading`,name:b.name,sizeBytes:b.approxSizeBytes,installed:X(g,b.id),start:(e,t)=>l.pullRecognitionModel(b.id,e,t)});let x=Se(s.stt);x&&v.push({key:`stt`,id:x.id,what:`speech-to-text`,name:x.name,sizeBytes:x.approxSizeBytes,installed:X(d,x.id),start:(e,t)=>l.pullAudioModel(`stt`,x.id,e,t)});let S=Se(s.tts);S&&v.push({key:`tts`,id:S.id,what:`text-to-speech`,name:S.name,sizeBytes:S.approxSizeBytes,installed:X(f,S.id),start:(e,t)=>l.pullAudioModel(`tts`,S.id,e,t)});let C=xe(o.items,_,`video`);if(C){let e=m.pulls.find(e=>e.id===C.id&&!e.finished);v.push({key:`video`,id:C.id,what:`video model`,name:C.name,sizeBytes:C.approxSizeBytes??null,installed:X(u,C.id),start:(e,t)=>l.pullVideoModel(C.id,e,t),cancel:()=>l.cancelVideoPull(C.id),...e?{resume:{bytesWritten:e.bytesWritten,totalBytes:e.totalBytes,subscribe:(e,t)=>l.subscribeVideoPull(C.id,e,t)}}:{}})}t(v);let w={};for(let e of v)if(e.installed)w[e.key]={status:`done`,pct:100};else if(e.resume){let{bytesWritten:t,totalBytes:n}=e.resume;w[e.key]={status:`installing`,pct:n>0?Math.min(100,Math.round(t/n*100)):null,bytesWritten:t,totalBytes:n}}r(w);for(let e of v)!e.installed&&e.resume&&E(e,e.resume.subscribe)}catch{e||t([])}})(),()=>{e=!0}},[E]);let D=(0,H.useCallback)(async e=>{r(t=>{let n=t[e.key]?.status;return n===`installing`||n===`done`?t:{...t,[e.key]:{status:`installing`,pct:null}}}),await E(e,e.start)},[E]),O=(0,H.useCallback)(async e=>{w.current.get(e.key)?.abort();try{await e.cancel?.(),T(e.key,{status:`idle`,pct:null})}catch(t){T(e.key,{status:`error`,pct:null,error:t instanceof Error?t.message:String(t)})}},[T]),k=(0,H.useMemo)(()=>(e??[]).filter(e=>{let t=n[e.key]?.status??`idle`;return t===`idle`||t===`error`}),[e,n]),A=(0,H.useMemo)(()=>k.filter(e=>o.has(e.key)),[k,o]),j=(0,H.useMemo)(()=>A.reduce((e,t)=>e+(t.sizeBytes??0),0),[A]),M=(0,H.useMemo)(()=>A.filter(e=>e.sizeBytes==null).length,[A]),N=(0,H.useMemo)(()=>k.filter(e=>e.key!==`video`).reduce((e,t)=>e+(t.sizeBytes??0),0),[k]),P=(0,H.useCallback)(()=>{let e=k.filter(e=>e.key!==`video`);s(new Set(e.map(e=>e.key))),y(null),C(null),x(e.length>0),a(!0)},[k]);(0,H.useEffect)(()=>{if(!i||A.length===0){y(null),x(!1),C(null);return}if(j<=0){y(null),x(!1),C(`Gezel couldn't determine this model's size. Its installer will check space again before writing.`);return}let e=!1;return y(null),C(null),x(!0),l.checkModelDownloadSpace({sizeBytes:Math.ceil(j)}).then(t=>{e||y(t)}).catch(t=>{e||C(`Gezel couldn't measure free space (${t instanceof Error?t.message:String(t)}). Each installer will check again before writing.`)}).finally(()=>{e||x(!1)}),()=>{e=!0}},[i,j,A.length]);let F=(0,H.useCallback)(()=>{for(let e of A)D(e);a(!1)},[D,A]);if((0,H.useEffect)(()=>{let e=w.current;return()=>{for(let t of e.values())t.abort()}},[]),!e||e.length===0)return null;let I=k.length>0,L=A.length>0&&!b&&(c===null||c.ok);return(0,W.jsxs)(`section`,{className:`setup-section home-media-section`,children:[I&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{type:`button`,className:`gz-link-button home-media-plan-link`,onClick:P,children:[`Also download the optional media models (image + speech)`,N>0?` · ${J(N)}`:``]}),(0,W.jsx)(`p`,{className:`muted small home-media-plan-hint`,children:`Lets your gezellen create images, read pictures, and speak. You review the list — and can add video — before anything downloads.`})]}),(0,W.jsx)(`div`,{className:`home-media-downloads`,children:e.map(e=>{let t=n[e.key]??{status:`idle`,pct:null};return t.status===`idle`?null:(0,W.jsx)(`div`,{className:`home-media-row`,children:t.status===`done`?(0,W.jsxs)(`span`,{className:`home-probe home-probe-ok small`,children:[`✓ `,e.name,` on device`]}):t.status===`installing`?(0,W.jsxs)(`div`,{className:`home-media-progress`,children:[(0,W.jsxs)(`div`,{className:`home-media-progress-heading`,children:[(0,W.jsxs)(`span`,{className:`muted small`,children:[`Downloading `,e.name,`…`]}),(0,W.jsx)(`button`,{type:`button`,className:`gz-link-button`,onClick:()=>void O(e),"aria-label":`Cancel ${e.name} download`,children:`Cancel`})]}),(0,W.jsx)(`div`,{className:t.pct==null?`first-run-banner-bar first-run-banner-bar-indeterminate`:`first-run-banner-bar`,children:(0,W.jsx)(`div`,{className:`first-run-banner-bar-fill`,style:t.pct==null?void 0:{width:`${t.pct}%`}})}),(0,W.jsx)(`span`,{className:`first-run-banner-progress-label`,children:t.bytesWritten!=null&&t.totalBytes?`${Y(t.bytesWritten)} of ${Y(t.totalBytes)} · ${t.pct??0}%`:`Starting…`})]}):(0,W.jsxs)(`span`,{className:`home-probe home-probe-fail small`,children:[`✗ `,e.name,`: `,t.error]})},e.key)})}),(0,W.jsx)(u,{open:i,onOpenChange:e=>{a(e),e||s(new Set)},children:(0,W.jsxs)(v,{children:[(0,W.jsx)(g,{}),(0,W.jsxs)(f,{className:`home-media-plan-dialog`,children:[(0,W.jsx)(_,{asChild:!0,children:(0,W.jsx)(`h3`,{children:`Review model downloads`})}),(0,W.jsx)(p,{asChild:!0,children:(0,W.jsx)(`p`,{className:`muted small`,children:`Nothing starts until you confirm this plan. Downloads go to Gezel model storage and remain visible below while they run.`})}),(0,W.jsxs)(`fieldset`,{className:`home-media-plan-list`,children:[(0,W.jsx)(`legend`,{className:`sr-only`,children:`Models to download`}),k.map(e=>(0,W.jsxs)(`label`,{className:`home-media-plan-item`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:o.has(e.key),onChange:t=>{s(n=>{let r=new Set(n);return t.target.checked?r.add(e.key):r.delete(e.key),r}),y(null),C(null),x(!0)}}),(0,W.jsxs)(`span`,{className:`home-media-plan-copy`,children:[(0,W.jsxs)(`span`,{className:`home-media-plan-name`,children:[e.name,e.key===`video`&&(0,W.jsx)(`span`,{className:`home-media-plan-large`,children:`Large download`})]}),(0,W.jsxs)(`span`,{className:`muted small`,children:[e.what,e.sizeBytes?` · ${J(e.sizeBytes)}`:` · size unavailable`]})]})]},e.key))]}),(0,W.jsxs)(`div`,{className:`home-media-plan-summary`,"aria-live":`polite`,children:[(0,W.jsx)(`strong`,{children:A.length===0?`Select at least one model.`:`${A.length} model${A.length===1?``:`s`} · ${j>0?J(j):`size unavailable`}${M>0?` + ${M} unknown`:``}`}),b?(0,W.jsx)(`span`,{className:`muted small`,children:`Checking free space…`}):c?.known&&c.ok?(0,W.jsxs)(`span`,{className:`muted small`,children:[Y(c.freeBytes),` free in `,c.storageLocation,`; this plan needs `,Y(c.requiredBytes),` including safety headroom.`]}):c?.known&&!c.ok?(0,W.jsxs)(`span`,{className:`error small`,children:[`Not enough free space: this plan needs `,Y(c.requiredBytes),`, but`,` `,c.storageLocation,` has `,Y(c.freeBytes),` free.`]}):c&&!c.known?(0,W.jsx)(`span`,{className:`muted small`,children:`Free space could not be measured. Each installer will check again before writing.`}):S?(0,W.jsx)(`span`,{className:`muted small`,children:S}):null]}),(0,W.jsxs)(h,{children:[(0,W.jsx)(d,{asChild:!0,children:(0,W.jsx)(`button`,{type:`button`,children:`Cancel`})}),(0,W.jsx)(m,{asChild:!0,children:(0,W.jsx)(`button`,{type:`button`,className:`primary`,disabled:!L,onClick:F,children:b?`Checking space…`:A.length>0?`Download ${A.length} model${A.length===1?``:`s`}`:`Choose models`})})]})]})]})})]})}var Z=`welcome`,Te=`gezel:handboek:article`;function Q(e){try{window.localStorage.setItem(Te,e)}catch{}window.dispatchEvent(new CustomEvent(`gezel:navigate`,{detail:{view:`handboek`}}))}function Ee({variant:e=`toggle`}={}){let t=e===`stacked`,[n,r]=(0,H.useState)(null),[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(`doc`),c=I()===`light`?j:void 0;(0,H.useEffect)(()=>{let e=!0;return l.getHandboekArticle(Z).then(t=>{e&&(t&&typeof t.markdown==`string`?r(t):a(!0))}).catch(()=>e&&a(!0)),()=>{e=!1}},[]);let u=(0,H.useMemo)(()=>n?ce(n.figures??[]):null,[n]),d=(0,H.useRef)(u);(0,H.useEffect)(()=>(d.current=u,()=>d.current?.dispose?.()),[u]);let f=(0,H.useMemo)(()=>n?se(n.markdown):null,[n]),p=(0,H.useMemo)(()=>{if(!f)return null;try{return C(w(f))}catch{return null}},[f]),m=(0,H.useMemo)(()=>{if(!n||!f)return null;try{return C(w(f),{articleId:n.id,defaultDuration:n.defaultDuration??6})}catch{return null}},[n,f]);return i?(0,W.jsx)(`p`,{children:(0,W.jsx)(`button`,{type:`button`,className:`gz-link-button`,onClick:()=>Q(Z),"data-testid":`home-intro-handboek-fallback`,children:`Open the Handboek for an introduction to gezel →`})}):!p||!u?(0,W.jsx)(`p`,{className:`muted`,"aria-live":`polite`,children:`Loading the Handboek…`}):(0,W.jsxs)(`div`,{className:`home-intro-article`,"data-testid":`home-intro-article`,children:[(0,W.jsxs)(`div`,{className:`home-intro-article-controls`,children:[(0,W.jsx)(`button`,{type:`button`,className:`gz-link-button`,onClick:()=>Q(Z),title:`Read this article in the Handboek`,children:`Open in Handboek →`}),!t&&(0,W.jsxs)(`div`,{className:`gz-tray handboek-mode-tray`,role:`radiogroup`,"aria-label":`View as`,children:[(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":o===`doc`,className:o===`doc`?`gz-key gz-key-active`:`gz-key`,onClick:()=>s(`doc`),children:`Read`}),(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":o===`video`,className:o===`video`?`gz-key gz-key-active`:`gz-key`,onClick:()=>s(`video`),children:`Watch`})]})]}),(0,W.jsxs)(T.Provider,{value:u,children:[(t||o===`video`)&&(0,W.jsx)(`div`,{className:`home-intro-page home-intro-page-player`,children:(0,W.jsx)(`div`,{className:`home-intro-player`,children:(0,W.jsx)(D,{doc:m??p,theme:M,displayMode:`video`,audioMode:`synthetic`,captionsEnabled:!0,captionStyle:`social`,autoPlay:!t,showControls:!0,showScrubber:!0})})}),(t||o===`doc`)&&(0,W.jsx)(`div`,{className:`home-intro-page`,children:(0,W.jsx)(`div`,{className:`home-intro-doc`,onClickCapture:e=>{let t=e.target.closest(`a`);if(!t)return;let n=t.getAttribute(`href`);!n||/^[a-z][a-z0-9+.-]*:/i.test(n)||n.startsWith(`//`)||n.startsWith(`#`)||(e.preventDefault(),e.stopPropagation(),Q(n.split(/[?#]/)[0].replace(/\.md$/,``).replace(/^(\.\.?\/)+/,``).split(`/`).pop()||Z))},children:(0,W.jsx)(E,{doc:p,className:`gezel-article-view`,theme:M,surface:c,thinMargins:!0,imageDisplayMode:`inline`,showCover:!1})})})]})]})}function De(e){return e<12?`Good morning`:e<18?`Good afternoon`:`Good evening`}function Oe(e,t=Date.now()){if(!e)return null;let n=t-Date.parse(e.generatedAt);return Number.isFinite(n)&&n<1296e5?e:null}function ke(e,t=Date.now()){return b(e,{now:t})}function Ae(e,t){let n=new Set(t.map(e=>e.id)),r=(e?.recentTabs??[]).filter(e=>e.kind===`project`).slice().sort((e,t)=>t.at-e.at);for(let e of r)if(e.kind===`project`&&n.has(e.id))return e.id;let i=t.find(e=>e.id!=="default");return i?i.id:t[0]?.id??`default`}function je({review:e}){let t=e.reports[0],n=e.reports.slice(1),[r,i]=(0,H.useState)(null),[a,o]=(0,H.useState)(null);(0,H.useEffect)(()=>{if(i(null),o(null),!t)return;let e=!1;return l.readProjectArtifact(t.projectId,t.path).then(t=>{e||i(t.content)}).catch(t=>{e||o(t.message)}),()=>{e=!0}},[t]);let s=(0,H.useMemo)(()=>{if(r===null)return null;try{return C(w(r),{articleId:`night-review`})}catch{return null}},[r]),c=(0,H.useMemo)(()=>t?oe({projectId:t.projectId,reportPath:t.path}):void 0,[t]),u=e.reports.reduce((e,t)=>e+t.actionCounts.suggested,0),d=e.diffpacks;return(0,W.jsxs)(`div`,{className:`home-workshop-status-report`,role:`tabpanel`,"data-testid":`night-review-panel`,children:[(0,W.jsxs)(`p`,{className:`home-workshop-night-summary`,children:[e.tasksCompleted.length,` task`,e.tasksCompleted.length===1?``:`s`,` finished overnight, `,e.reports.length,` report`,e.reports.length===1?``:`s`,` written`,d.length>0?`, ${d.length} change proposal${d.length===1?``:`s`} waiting`:``,u>0?` — ${u} suggested action${u===1?``:`s`} to review.`:`.`]}),d.length>0&&(0,W.jsx)(`div`,{className:`home-workshop-night-reports`,children:d.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`home-workshop-night-report-row`,onClick:()=>window.dispatchEvent(new CustomEvent(`gezel:open-tab`,{detail:{kind:`project`,id:e.projectId,activate:!0}})),children:[(0,W.jsx)(`span`,{className:`home-workshop-night-report-title`,children:e.title}),(0,W.jsxs)(`span`,{className:`muted small`,children:[e.projectName,` · `,e.fileCount,` file`,e.fileCount===1?``:`s`,` · +`,e.additions,` −`,e.deletions,e.drifted?` · out of date`:``]})]},`${e.projectId}:${e.packId}`))}),t&&(0,W.jsx)(`div`,{className:`home-workshop-status-body`,children:s?(0,W.jsx)(E,{doc:s,theme:M,thinMargins:!0,imageDisplayMode:`thumbnail`,fenceRenderers:c}):a?(0,W.jsx)(`p`,{className:`error small`,children:a}):(0,W.jsxs)(`p`,{className:`muted small`,children:[`Loading `,t.title,`…`]})}),n.length>0&&(0,W.jsx)(`div`,{className:`home-workshop-night-reports`,children:n.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`home-workshop-night-report-row`,onClick:()=>window.dispatchEvent(new CustomEvent(`gezel:open-tab`,{detail:{kind:`project`,id:e.projectId,activate:!0}})),children:[(0,W.jsx)(`span`,{className:`home-workshop-night-report-title`,children:e.title}),(0,W.jsxs)(`span`,{className:`muted small`,children:[e.projectName,e.actionCounts.suggested>0?` · ${e.actionCounts.suggested} action${e.actionCounts.suggested===1?``:`s`} to review`:``]})]},`${e.projectId}:${e.path}`))}),(0,W.jsx)(`div`,{className:`home-workshop-status-foot`,children:(0,W.jsxs)(`span`,{className:`home-workshop-status-meta`,title:x(e.windowEnd),children:[`Night window ended `,ke(e.windowEnd)]})})]})}function Me({report:e,running:t,onRefresh:n}){let r=(0,H.useMemo)(()=>{try{return C(w(e.report),{articleId:`meester-status`})}catch{return null}},[e.report]);return(0,W.jsxs)(`div`,{className:`home-workshop-status-report`,role:`tabpanel`,"data-testid":`status-report-panel`,children:[(0,W.jsx)(`div`,{className:`home-workshop-status-body`,children:r?(0,W.jsx)(E,{doc:r,theme:M,thinMargins:!0,imageDisplayMode:`thumbnail`}):(0,W.jsx)(`p`,{children:e.report})}),(0,W.jsxs)(`div`,{className:`home-workshop-status-foot`,children:[(0,W.jsxs)(`span`,{className:`home-workshop-status-meta`,title:x(e.generatedAt),children:[`Written `,ke(e.generatedAt)]}),n&&(0,W.jsx)(`button`,{type:`button`,className:`home-workshop-tip-action`,onClick:n,disabled:t,children:t?`Meester is writing…`:`Write a fresh report`})]})]})}function Ne({size:e=18,color:t=`var(--sage-deep)`}){return(0,W.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`none`,stroke:t,strokeWidth:1.7,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,W.jsx)(`path`,{d:`M12 21 V11`}),(0,W.jsx)(`path`,{d:`M12 14.4 C8.5 14.4 6.4 11.9 6.4 8.4 C9.9 8.4 12 10.9 12 14`,fill:t,fillOpacity:.18}),(0,W.jsx)(`path`,{d:`M12 12.4 C15.5 12.4 17.6 9.9 17.6 6.4 C14.1 6.4 12 8.9 12 12`,fill:t,fillOpacity:.18})]})}var Pe=[{body:(0,W.jsx)(W.Fragment,{children:`Most of getting great work out of a gezel is shaping its brief. Trim a gezel’s standing orders and it’ll stop over-explaining.`}),action:`Train a gezel`,view:`gezels`},{body:(0,W.jsx)(W.Fragment,{children:`Teach a gezel once and it sticks — stamp today’s steps into a routine it can run on its own.`}),action:`Save a routine`,view:`scripts`},{body:(0,W.jsx)(W.Fragment,{children:`Your crew can grow with your work. A second specialist lets the first stay deep on one project.`}),action:`Hire a gezel`,view:`gezels`},{body:(0,W.jsxs)(W.Fragment,{children:[`Local models come first — cloud and the web are opt-in and `,(0,W.jsx)(`em`,{children:`always marked`}),`. Adjust your providers any time.`]}),action:`Open settings`,view:`settings`},{body:(0,W.jsx)(W.Fragment,{children:`Hand the meester a half-baked idea and they’ll shape it into something your crew can actually start on.`}),action:`See your projects`,view:`projects`}];function Fe({onNavigate:e}){let[t,n]=(0,H.useState)(0),r=Pe[t%Pe.length];return(0,W.jsxs)(`div`,{className:`home-workshop-tip`,children:[(0,W.jsx)(`span`,{className:`home-workshop-tip-sprout`,children:(0,W.jsx)(Ne,{size:18})}),(0,W.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,W.jsxs)(`div`,{className:`home-workshop-tip-label-row`,children:[(0,W.jsx)(`span`,{className:`home-workshop-eyebrow home-workshop-tip-label`,children:`Tip of the day`}),(0,W.jsx)(`button`,{type:`button`,className:`home-workshop-tip-cycle`,title:`Another tip`,"aria-label":`Show another tip`,onClick:()=>n(e=>e+1),children:`↻`})]}),(0,W.jsxs)(`div`,{className:`home-workshop-tip-body`,children:[r.body,` `,(0,W.jsxs)(`button`,{type:`button`,className:`home-workshop-tip-action`,onClick:()=>e?.(r.view),children:[r.action,` →`]})]})]})]})}function Ie({direction:e}){return(0,W.jsx)(`svg`,{"aria-hidden":`true`,width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.4`,strokeLinecap:`round`,strokeLinejoin:`round`,children:e===`up`?(0,W.jsx)(`path`,{d:`M6 15 L12 9 L18 15`}):(0,W.jsx)(`path`,{d:`M6 9 L12 15 L18 9`})})}function Le({chips:e}){return(0,W.jsx)(W.Fragment,{children:e.map(e=>(0,W.jsxs)(`span`,{className:`home-workshop-chip`,children:[(0,W.jsx)(`span`,{className:`home-workshop-chip-dot`,style:{background:e.dot}}),e.label]},e.label))})}function Re({statusReport:e,greeting:t,onCtaClick:n}){return e?e.cta&&n?(0,W.jsx)(`h1`,{className:`home-workshop-headline`,children:(0,W.jsx)(`button`,{type:`button`,className:`home-workshop-headline-cta`,onClick:n,title:e.cta.label,children:e.headline})}):(0,W.jsx)(`h1`,{className:`home-workshop-headline`,children:e.headline}):(0,W.jsxs)(`h1`,{className:`home-workshop-headline`,children:[t,`.`]})}function ze({chips:e,meesterName:t,meesterPoppetje:n,meesterIcon:r,meesterIconOverride:i,collapsed:a,onToggleCollapse:o,tab:s,onTabChange:c,statusReport:l,statusRunning:u,onRunStatusReport:d,nightReview:f,onNavigate:p}){let m=A(),h=new Date,g=h.getHours(),_=De(g),v=l??null,b=()=>{let e=v?.cta?.target;e&&(e.kind===`view`?p?.(e.view):e.kind===`project`?window.dispatchEvent(new CustomEvent(`gezel:open-tab`,{detail:{kind:`project`,id:e.projectId,activate:!0}})):window.dispatchEvent(new CustomEvent(`gezel:open-tab`,{detail:{kind:`task`,ref:e.taskRef,activate:!0}})))},x=`${h.toLocaleDateString(void 0,{weekday:`long`})} ${g<12?`morning`:g<18?`afternoon`:`evening`} · ${h.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,hour12:!1})}`;return a?(0,W.jsxs)(`div`,{className:`home-workshop-greeting-collapsed`,children:[(0,W.jsx)(Re,{statusReport:v,greeting:_,onCtaClick:b}),(0,W.jsx)(`div`,{className:`home-workshop-vrule`}),(0,W.jsx)(`div`,{style:{display:`flex`,gap:8,flexWrap:`wrap`,flex:1,minWidth:0},children:(0,W.jsx)(Le,{chips:e})}),(0,W.jsx)(`button`,{type:`button`,className:`home-workshop-collapse-btn`,onClick:o,title:`Expand the greeting`,"aria-label":`Expand the greeting`,children:(0,W.jsx)(Ie,{direction:`down`})})]}):(0,W.jsxs)(`div`,{className:`home-workshop-greeting`,"data-testid":`greeting-band`,children:[(0,W.jsxs)(`div`,{className:`home-workshop-greeting-top`,children:[(0,W.jsxs)(`div`,{className:`home-workshop-tabs`,role:`tablist`,"aria-label":`Home view`,children:[(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":s===`greeting`,className:`home-workshop-tab${s===`greeting`?` is-active`:``}`,onClick:()=>c(`greeting`),children:x}),v&&(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":s===`status`,className:`home-workshop-tab${s===`status`?` is-active`:``}`,onClick:()=>c(`status`),children:`Status report`}),f&&(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":s===`night`,className:`home-workshop-tab${s===`night`?` is-active`:``}`,onClick:()=>c(`night`),children:`Last night`}),(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":s===`tour`,className:`home-workshop-tab${s===`tour`?` is-active`:``}`,onClick:()=>c(`tour`),children:`New here? What is gezel`})]}),(0,W.jsx)(`button`,{type:`button`,className:`home-workshop-collapse-btn`,onClick:o,title:`Collapse to a single row`,"aria-label":`Collapse the greeting`,children:(0,W.jsx)(Ie,{direction:`up`})})]}),(0,W.jsxs)(`div`,{className:`home-workshop-greeting-cols`,children:[(0,W.jsxs)(`div`,{className:`home-workshop-greeting-left`,children:[s===`status`&&v?(0,W.jsx)(Me,{report:v,running:u??!1,...d?{onRefresh:d}:{}}):s===`night`&&f?(0,W.jsx)(je,{review:f}):s===`tour`?(0,W.jsx)(`div`,{className:`home-workshop-tour-inline`,role:`tabpanel`,children:(0,W.jsx)(Ee,{})}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Re,{statusReport:v,greeting:_,onCtaClick:b}),(0,W.jsx)(Fe,{onNavigate:p})]}),(0,W.jsx)(`div`,{className:`home-workshop-chips`,children:(0,W.jsx)(Le,{chips:e})})]}),m&&(0,W.jsx)(`div`,{className:`home-workshop-greeting-right`,children:(0,W.jsxs)(`div`,{className:`home-workshop-figure`,children:[n?(0,W.jsx)(y,{poppetje:n,variant:`full`,size:64,title:`${t} poppetje`}):(0,W.jsx)(k,{poppetje:null,svg:r,iconOverride:i,name:t,size:64,variant:`full`}),(0,W.jsx)(`div`,{className:`home-workshop-shelf`}),(0,W.jsxs)(`div`,{className:`home-workshop-figure-label`,children:[t,` `,(0,W.jsx)(`em`,{children:`- Meester`})]})]})})]})]})}function Be({activeSessionId:e,onFocusSession:t,onToolActivity:n,onArtifactReference:r,onArtifactSeen:i,onWorkspaceReference:a,onWorkspaceSeen:o,onOpenReference:s,onTaskReference:c,emptyPlaceholder:u,emptyContent:d}){let f=(0,H.useCallback)(e=>l.listGlobalTimeline(e),[]),p=(0,H.useCallback)(()=>l.allEventsUrl(),[]);return(0,W.jsx)(ee,{scopeKey:`global`,activeSessionId:e,onFocusSession:t,onToolActivity:n,onArtifactReference:r,onArtifactSeen:i,onWorkspaceReference:a,onWorkspaceSeen:o,onOpenReference:s,...c?{onTaskReference:c}:{},emptyPlaceholder:u,emptyContent:d,loadTimeline:f,streamUrl:p,showProjectName:!0})}var Ve=[`I want to start a project — can you help me work out what it needs?`,`What kind of gezellen can you bring on, and what are they good at?`,`Here is what I am working on today. Where should I start?`];function He({meesterName:e,meesterIcon:t,meesterPoppetje:n,meesterIconOverride:r,projectId:i}){return(0,W.jsxs)(`div`,{className:`meester-greeting`,children:[(0,W.jsx)(`div`,{className:`meester-greeting-figure`,children:(0,W.jsx)(k,{svg:t??null,poppetje:n??null,iconOverride:r===!0,name:e,size:64})}),(0,W.jsxs)(`div`,{className:`meester-greeting-body`,children:[(0,W.jsxs)(`h3`,{className:`meester-greeting-title`,children:[`Hello — I'm `,e,`, your meester.`]}),(0,W.jsx)(`p`,{className:`meester-greeting-lede`,children:`I'm the one you talk to first. Tell me what you're trying to get done and I'll work out which gezellen you need, bring them on, and set the project up around them. You can also just talk things through with me.`}),(0,W.jsx)(`fieldset`,{className:`meester-greeting-openers gz-tray`,"aria-label":`Ways to start`,children:Ve.map(e=>(0,W.jsx)(`button`,{type:`button`,className:`gz-key meester-greeting-opener`,onClick:()=>z(i,e),children:e},e))})]})]})}function Ue({meesterGezelId:e,meesterName:t,meesterIcon:n,meesterPoppetje:r,meesterIconOverride:a,emptyPlaceholder:o}){let s=ie(B),[c,u]=(0,H.useState)(s?.sessionId??``),[d,f]=(0,H.useState)(``),[p,m]=(0,H.useState)(0),[h,g]=(0,H.useState)([]),[_,v]=(0,H.useState)(s?.gezelId||e),[y,b]=(0,H.useState)(s?.projectId||`default`),x=O(),S=(0,H.useRef)(e);(0,H.useEffect)(()=>{S.current!==e&&(S.current=e,u(``),v(e),b(`default`)),l.listGezels().then(e=>g(e.gezels)).catch(()=>g([]))},[e]),(0,H.useEffect)(()=>{ae(B,{gezelId:_,projectId:y,sessionId:c})},[_,y,c]);let C=h.find(e=>e.id===_),w=_||e,T=C?i({name:C.name,roleBasedName:C.roleBasedName},x):w===e?t:w,E=C?C.role:w===e?`Meester`:void 0,D=C?C.icon??null:w===e?n:null,k=C?C.poppetje??null:w===e?r:null,A=C?C.iconOverride??!1:w===e&&a,j=(0,H.useMemo)(()=>ne({role:w===e?`meester`:`other`,gezelName:T,gezelGender:C?.gender,fixedFunctionTool:C?.fixedFunction?.tool}),[w,T,e,C?.gender,C?.fixedFunction?.tool]);return(0,W.jsx)(`section`,{className:`home-workshop-conversation`,"data-testid":`meester-chat`,children:(0,W.jsx)(re,{chatKey:`meester:global`,projectId:y,skillsProjectId:y==="default"?void 0:y,children:({onToolActivity:i,onArtifactReference:s,onArtifactSeen:l,onWorkspaceReference:g,onWorkspaceSeen:x,recentReferences:S,onOpenReference:O,onTaskReference:M})=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Be,{activeSessionId:c||void 0,onFocusSession:(e,t,n)=>{v(t),b(n),u(e)},onToolActivity:i,onArtifactReference:s,onArtifactSeen:l,onWorkspaceReference:g,onWorkspaceSeen:x,onOpenReference:O,onTaskReference:M,emptyPlaceholder:o,emptyContent:!_||_===e?(0,W.jsx)(He,{meesterName:t,meesterIcon:n,meesterPoppetje:r,meesterIconOverride:a,projectId:y}):void 0}),(0,W.jsx)(R,{gezelId:w,gezelName:T,gezelRoleBasedName:C?.roleBasedName,gezelRole:E,gezelIcon:D,gezelPoppetje:k,gezelIconOverride:A,recipientGezels:h,onPrimaryRecipientChange:e=>{v(e),b(`default`),u(``)},projectId:y,sessionId:c||void 0,onSessionCreated:e=>{u(e),m(e=>e+1)},onToolActivity:i,recentReferences:S,onOpenReference:O,placeholder:j,draftScope:`meester`,draftId:d||void 0,onDraftIdChange:e=>f(e??``),belowAddressLine:(0,W.jsx)(te,{gezelId:w,projectId:y,sessionId:c||void 0,gezelName:T,onSessionIdChange:e=>u(e??``),refreshKey:p,activeDraftId:d||void 0,onDraftSelect:e=>f(e??``),draftScope:`meester`})})]})})})}function We({config:e,projects:t,meesterGezelId:n,meesterName:r,meesterIcon:i,meesterPoppetje:a,meesterIconOverride:o,banner:s,onNavigate:c}){let[u,d]=(0,H.useState)(e?.homeGreetingCollapsed??!1),f=(0,H.useRef)(!1),p=(0,H.useRef)(!1);(0,H.useEffect)(()=>{f.current||p.current||!e||(f.current=!0,d(e.homeGreetingCollapsed===!0))},[e]);let m=(0,H.useCallback)(()=>{p.current=!0,d(e=>{let t=!e;return l.updateConfig({homeGreetingCollapsed:t}).catch(()=>{}),t})},[]),[h,g]=(0,H.useState)(`greeting`),[_,v]=(0,H.useState)(null),[y,b]=(0,H.useState)(!1),[x,S]=(0,H.useState)([]),[C,w]=(0,H.useState)([]),T=(0,H.useMemo)(()=>Ae(e,t),[e,t]),E=(0,H.useCallback)(()=>{l.listQuestions({pending:!0}).then(e=>w(e.questions??[])).catch(()=>{})},[]);(0,H.useEffect)(()=>{E()},[E]);let D=(0,H.useRef)(T);D.current=T;let O=(0,H.useCallback)(()=>{let e=D.current;if(!e){S([]);return}l.listProjectTasks(e).then(t=>{D.current===e&&S(t.tasks??[])}).catch(()=>{})},[]);(0,H.useEffect)(()=>{if(!T){S([]);return}O()},[T,O]);let k=(0,H.useCallback)(()=>{l.getMeesterStatus().then(e=>{v(e),b(e.running)}).catch(()=>{})},[]);(0,H.useEffect)(()=>{k();let e=new AbortController;return(async()=>{try{for await(let t of N({url:l.allEventsUrl(),headers:l.authHeader(),signal:e.signal,fetch:l.getFetch()})){let e=t.event;if(e.type===`question_asked`||e.type===`question_answered`){E();continue}if(e.type===`task_event`){O();continue}e.type===`meester_status`&&(e.state===`started`?b(!0):(b(!1),k()))}}catch{}})(),()=>e.abort()},[k,E,O]);let A=(0,H.useMemo)(()=>Oe(_?.report),[_]),[j,M]=(0,H.useState)(null);(0,H.useEffect)(()=>{let e=!1;return l.getNightShiftReview().then(t=>{if(e)return;let n=Date.parse(t.windowEnd),r=Number.isFinite(n)&&Date.now()-n<720*60*1e3,i=t.tasksCompleted.length>0||t.reports.length>0;M(r&&i?t:null)}).catch(()=>{}),()=>{e=!0}},[]);let P=(0,H.useCallback)(()=>{b(!0),l.runMeesterStatus().catch(()=>b(!1))},[]),F=(0,H.useMemo)(()=>x.filter(e=>e.status!==`canceled`),[x]),I=(0,H.useMemo)(()=>C.filter(e=>!e.answer),[C]).length+F.filter(e=>e.assignee.kind===`user`&&e.status!==`complete`).length,L=[];return I>0&&L.push({dot:`var(--ochre)`,label:`${I} waiting on you`}),(0,W.jsxs)(`div`,{className:`home-workshop`,"data-testid":`home-workshop`,children:[s,(0,W.jsx)(ze,{chips:L,meesterName:r,meesterPoppetje:a,meesterIcon:i,meesterIconOverride:o,collapsed:u,onToggleCollapse:m,tab:h,onTabChange:g,statusReport:A,statusRunning:y,onRunStatusReport:P,nightReview:j,onNavigate:c}),(0,W.jsx)(`div`,{className:`home-workshop-body`,children:(0,W.jsx)(`div`,{className:`home-workshop-main`,children:n?(0,W.jsx)(Ue,{meesterGezelId:n,meesterName:r,meesterIcon:i,meesterPoppetje:a,meesterIconOverride:o}):(0,W.jsxs)(`section`,{className:`home-workshop-conversation`,children:[(0,W.jsx)(`div`,{className:`home-workshop-eyebrow home-workshop-conversation-eyebrow`,children:`Talk to your meester`}),(0,W.jsxs)(`p`,{className:`home-workshop-rail-empty`,children:[`No meester is designated yet. Pick one in`,` `,(0,W.jsx)(`button`,{type:`button`,className:`home-workshop-tip-action`,onClick:()=>c?.(`settings`),children:`Settings`}),`.`]})]})})})]})}function Ge(e){return e===`darwin`?`mlx`:`llama-cpp`}var Ke=2e4,$=720;function qe({platform:e,onNavigate:t}){let[n,r]=(0,H.useState)(null),[a,s]=(0,H.useState)(null),[u,d]=(0,H.useState)([]),[f,p]=(0,H.useState)(void 0),[m,h]=(0,H.useState)(void 0),[g,_]=(0,H.useState)(null),[v,b]=(0,H.useState)(null),[x,S]=(0,H.useState)(!1),C=O(),w=f?i({name:f,roleBasedName:m},C):void 0,[T,E]=(0,H.useState)({kind:`idle`}),[D,k]=(0,H.useState)(null);(0,H.useEffect)(()=>{let e=!1,t=0,n=()=>{l.getConfig().then(t=>{e||r(t)}).catch(()=>{e||t>=40||(t+=1,window.setTimeout(n,500))})};return n(),l.health().then(s).catch(()=>{}),l.listProjects().then(e=>d(e.projects)).catch(()=>{}),()=>{e=!0}},[]),(0,H.useEffect)(()=>{let e=n?.meesterGezelId;if(!e){p(void 0),h(void 0),_(null),b(null),S(!1);return}l.listGezels().then(t=>{let n=t.gezels.find(t=>t.id===e);p(n?.name),h(n?.roleBasedName),_(n?.icon??null),b(n?.poppetje??null),S(n?.iconOverride??!1)}).catch(()=>{})},[n?.meesterGezelId]);let A=n?.provider??`llama-cpp`,j=A===`copilot`?!!n?.hasGithubToken:A!==`openai`||!!n?.hasOpenaiApiKey;(0,H.useEffect)(()=>{n&&T.kind===`idle`&&(A===`copilot`||A===`ollama`||j)&&P(A)},[n?.provider,n?.hasGithubToken,n?.hasOpenaiApiKey,n?.ollamaBaseUrl]);let M=(0,H.useRef)(null),N=(0,H.useCallback)(()=>{M.current&&=(clearTimeout(M.current),null)},[]),P=(0,H.useCallback)(async(e,t=0)=>{N(),E(t>0?{kind:`probing`,retryAttempt:t,retryMax:$}:{kind:`probing`});try{let r=await l.testProvider(e);if(r.ok){E({kind:`ok`,modelCount:r.modelCount});return}if(e===`ollama`&&n?.autoStartOllama!==!1&&t<$){M.current=setTimeout(()=>{P(e,t+1)},Ke),E({kind:`probing`,retryAttempt:t+1,retryMax:$});return}E({kind:`fail`,error:r.error})}catch(e){E({kind:`fail`,error:e.message})}},[N,n?.autoStartOllama]);(0,H.useEffect)(()=>()=>N(),[N]);let I=o(A)&&T.kind===`ok`&&T.modelCount===0;(0,H.useEffect)(()=>{T.kind===`ok`?k(!I):T.kind===`fail`&&k(!1)},[T.kind,I]);let R=A===`copilot`||A===`ollama`||j;(0,H.useEffect)(()=>{n&&!R&&k(!1)},[n,R]),(0,H.useEffect)(()=>{if(D!==null)return;let e=window.setTimeout(()=>k(!1),3e4);return()=>window.clearTimeout(e)},[D]),(0,H.useEffect)(()=>{D!==null&&window.dispatchEvent(new CustomEvent(`gezel:first-run`,{detail:{firstRun:!D}}))},[D]);let ee=(0,H.useCallback)(()=>{P(A)},[P,A]),z=(0,W.jsx)(Je,{state:L(),platform:e});return!n||D===null?(0,W.jsx)(`div`,{className:`home-view home-view-loading`,"aria-busy":`true`,children:(0,W.jsxs)(`div`,{className:`home-loading-placeholder`,"aria-live":`polite`,children:[(0,W.jsx)(`span`,{className:`home-loading-spinner`,"aria-hidden":!0}),(0,W.jsx)(`span`,{children:`Loading…`})]})}):D?(0,W.jsx)(We,{config:n,projects:u,meesterGezelId:n?.meesterGezelId,meesterName:w??`your meester`,meesterIcon:g,meesterPoppetje:v,meesterIconOverride:x,banner:z,onNavigate:t}):(0,W.jsxs)(`div`,{className:`home-view`,children:[z,(0,W.jsxs)(`div`,{className:`home-firstrun-columns`,children:[(0,W.jsxs)(`div`,{className:`home-firstrun-main`,children:[(0,W.jsx)(`h1`,{className:`home-firstrun-heading`,children:`First run setup`}),(0,W.jsx)(`p`,{className:`home-firstrun-lede muted`,children:`Gezel chats through a local AI model that runs privately on this device — download the recommended one to get started.`}),(0,W.jsxs)(`div`,{className:`home-firstrun-body`,children:[n&&(0,W.jsx)(ue,{config:n,onConfigChanged:r,onModelInstalled:ee}),(0,W.jsx)(we,{}),(0,W.jsxs)(`section`,{className:`setup-section home-ondevice-link`,children:[(0,W.jsx)(`button`,{type:`button`,className:`gz-link-button`,onClick:()=>{let e=Ge(a?.platform)===`mlx`?`mlx`:`llamaCpp`;F(e),window.dispatchEvent(new CustomEvent(`gezel:navigate`,{detail:{view:`settings`,section:e}}))},children:`Manage AI models in Settings →`}),(0,W.jsx)(`p`,{className:`muted small`,style:{marginTop:`0.35rem`,marginBottom:0},children:`Browse other local models, or connect a cloud provider (GitHub Copilot, OpenAI, …).`})]}),(0,W.jsx)(Ye,{level:n?.securityPolicy?.level,onChange:async e=>{try{let t=await l.updateConfig({securityPolicy:c(e)});r(t)}catch{}}}),(0,W.jsxs)(`section`,{className:`setup-section`,children:[(0,W.jsx)(`h3`,{children:`Preferences`}),(0,W.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.75rem`},children:[(0,W.jsxs)(`label`,{className:`debug-toggle`,style:{marginTop:0},children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:n?.roleBasedNameOnlyMode!==!0&&n?.showPoppetjes!==!1,onChange:async e=>{let t=e.target.checked;try{let e=await l.updateConfig({roleBasedNameOnlyMode:!t,showPoppetjes:t});r(e),window.dispatchEvent(new CustomEvent(`gezel:config-updated`,{detail:e}))}catch{}}}),(0,W.jsxs)(`span`,{children:[`Show gezel names and poppetjes`,f?` (e.g., ${f}, your meester)`:``]})]}),v&&(0,W.jsx)(`div`,{className:`gezel-icon`,style:{width:36,height:36},title:f?`${f}'s poppetje`:`example poppetje`,children:(0,W.jsx)(`div`,{className:`gezel-icon-poppetje`,children:(0,W.jsx)(y,{poppetje:v,variant:`headshot`,size:36})})})]}),(0,W.jsx)(`p`,{className:`muted small`,style:{marginTop:`0.35rem`,marginBottom:0},children:`Adjustable any time in Settings.`})]})]})]}),(0,W.jsx)(`aside`,{className:`home-firstrun-tutorial`,id:U,"aria-label":`What is gezel?`,children:(0,W.jsx)(Ee,{variant:`stacked`})})]})]})}function Je({state:e,platform:t}){let[n,r]=(0,H.useState)(!1),[i,o]=(0,H.useState)(null);return!e||e.kind!==`available`&&e.kind!==`ready`?null:e.kind===`available`?(0,W.jsxs)(`output`,{className:`app-fallback-banner`,"data-testid":`update-banner`,children:[(0,W.jsxs)(`strong`,{children:[`Gezel `,e.version,` is available.`]}),(0,W.jsx)(`span`,{children:`Linux updates are installed manually. Open the GitHub release, verify its SLSA build provenance, then install the package for your distribution.`}),(0,W.jsx)(`div`,{className:`app-fallback-banner-actions`,children:(0,W.jsx)(`a`,{className:`app-update-release-link`,href:a(e.version),children:`Open release and verification steps`})})]}):(0,W.jsxs)(`output`,{className:`app-fallback-banner`,"data-testid":`update-banner`,children:[(0,W.jsxs)(`strong`,{children:[`Gezel `,e.version,` is ready to install.`]}),(0,W.jsx)(`span`,{children:t===`darwin`?`Installing replaces Gezel and its background service together, so macOS will ask for an administrator password.`:`The update will install automatically after you quit Gezel completely. Closing the window may leave Gezel running in the system tray.`}),(0,W.jsx)(`div`,{className:`app-fallback-banner-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`primary`,disabled:n,onClick:()=>{r(!0),o(null),window.__GEZEL__?.update?.install().then(e=>{e.ok||(o(e.error),r(!1))})},children:n?t===`darwin`?`Opening installer…`:`Restarting…`:t===`darwin`?`Open installer`:`Install and restart`})}),i&&(0,W.jsxs)(`details`,{open:!0,children:[(0,W.jsx)(`summary`,{children:`Could not open the installer`}),(0,W.jsx)(`p`,{children:i})]})]})}function Ye({level:e,onChange:t}){let n=e??`lockdown`,r=V.find(e=>e.id===n);return(0,W.jsxs)(`section`,{className:`setup-section engagement-mode-${n}`,children:[(0,W.jsx)(`h3`,{children:`Security & compliance`}),(0,W.jsx)(`p`,{className:`muted`,style:{marginTop:0,marginBottom:`0.5rem`},children:`How much should gezellen be allowed to do? Pick a starting posture — you can fine-tune every capability later in Settings → Security & Compliance.`}),(0,W.jsx)(`div`,{className:`engagement-mode-switch gz-tray gz-tray--described`,role:`radiogroup`,"aria-label":`Security posture`,children:V.map(e=>(0,W.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n===e.id,className:`gz-key${n===e.id?` gz-key-active`:``}`,onClick:()=>void t(e.id),children:[e.label,e.recommended?` ★`:``]},e.id))}),(0,W.jsx)(`p`,{className:`engagement-mode-description gz-tray-description`,"aria-live":`polite`,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`strong`,{children:r.label}),` — `,r.description]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`strong`,{children:`Custom`}),` — capability switches were adjusted individually. Fine-tune in Settings → Security & Compliance.`]})})]})}export{qe as HomeView};