@bendyline/gezel-service 1.1.1 → 1.1.2

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 (185) hide show
  1. package/dist/NOTICE.md +3 -3
  2. package/dist/bin/gezeld.js +8471 -5311
  3. package/dist/handboek-content/technical/building-connected-apps-with-gezel-app-sdk.md +78 -0
  4. package/dist/handboek-content/whats-new/{1.26250.md → 1.26251.md} +5 -5
  5. package/dist/index-store/static-index-worker.js +160 -51
  6. package/dist/index.d.ts +416 -71
  7. package/dist/index.js +8465 -5305
  8. package/dist/memory/embed-worker.js +132 -4
  9. package/dist/memory/image-embed-worker.js +14 -5
  10. package/dist/providers/mlx/python/cache_persist.py +52 -8
  11. package/dist/providers/mlx/python/gezel_mlx_server.py +44 -1
  12. package/dist/providers/mlx/python/qwen4_ple.py +159 -0
  13. package/dist/providers/mlx/python/spec_decode.py +73 -31
  14. package/dist/providers/mlx/python/tool_call_stream.py +10 -2
  15. package/dist/providers/mlx/python/tool_grammar.py +16 -0
  16. package/dist/ui/assets/{AmbientDashboardCard-DcVHxEdC.js → AmbientDashboardCard-_xnAQGnk.js} +1 -1
  17. package/dist/ui/assets/{AudioEngineSettings-BFM2S1mm.js → AudioEngineSettings-CgXgbX0i.js} +1 -1
  18. package/dist/ui/assets/{BenchmarksView-84-YeULA.js → BenchmarksView-BlExZpYA.js} +1 -1
  19. package/dist/ui/assets/CatalogBrowser-DYXUZQ_t.js +1 -0
  20. package/dist/ui/assets/{ChannelsSettings-7NAVUk4k.js → ChannelsSettings-EH27HcqZ.js} +1 -1
  21. package/dist/ui/assets/ChatTimelineView-Dn1TNyVn.js +7 -0
  22. package/dist/ui/assets/{ConnectedAppsPanel-CIgF4Q3R.js → ConnectedAppsPanel-BROry-Y0.js} +1 -1
  23. package/dist/ui/assets/CraftbookEditor-B2RNJnFf.js +1 -0
  24. package/dist/ui/assets/{CraftbookScriptEditorView-Ck5tzj3Y.js → CraftbookScriptEditorView-B-vySmHP.js} +1 -1
  25. package/dist/ui/assets/{CraftbookTabContent-BWg7FhK_.js → CraftbookTabContent-BW_2KC89.js} +1 -1
  26. package/dist/ui/assets/{CraftbookToolsetSetup-EuFOiUzR.js → CraftbookToolsetSetup-J7rEa835.js} +1 -1
  27. package/dist/ui/assets/{CraftbooksView-BIzQ1VVn.js → CraftbooksView-BjBUWPGF.js} +1 -1
  28. package/dist/ui/assets/DiffpackReviewView-CD4qJmgT.js +1 -0
  29. package/dist/ui/assets/DocumentDetail-SYozruTJ.js +1 -0
  30. package/dist/ui/assets/DocumentsView-DE7eL49Z.js +1 -0
  31. package/dist/ui/assets/{Ds4Settings-9soZCSeO.js → Ds4Settings-DGzc7JcD.js} +1 -1
  32. package/dist/ui/assets/{EmbeddedChat-Cce7nxXT.js → EmbeddedChat-D92TaJQ8.js} +1 -1
  33. package/dist/ui/assets/{FaceRecognitionCard-BVZyOwB8.js → FaceRecognitionCard-CB1Dt9X4.js} +1 -1
  34. package/dist/ui/assets/FileMapView-kVBG22FU.js +1 -0
  35. package/dist/ui/assets/FoldersSettings-BWFQU5B4.js +1 -0
  36. package/dist/ui/assets/GezelDetail-Br4v42Nv.js +1 -0
  37. package/dist/ui/assets/{GezelJsonEditor-DXXt165-.js → GezelJsonEditor-B9XEiW5Y.js} +1 -1
  38. package/dist/ui/assets/GezellenView-DheEBAy4.js +1 -0
  39. package/dist/ui/assets/{GildeUpdatesCard-CtY8mUTA.js → GildeUpdatesCard-BeIYv09f.js} +1 -1
  40. package/dist/ui/assets/{GithubSignInChip-DT3l6E0Q.js → GithubSignInChip-eEGCe9ar.js} +1 -1
  41. package/dist/ui/assets/{HandboekMediaProvider-ByJ4NAzz.js → HandboekMediaProvider-D0zcbbpf.js} +1 -1
  42. package/dist/ui/assets/HandboekView-p0BZT1rH.js +1 -0
  43. package/dist/ui/assets/{HistoryView-CkinzFEC.js → HistoryView-CKWcWW-Y.js} +1 -1
  44. package/dist/ui/assets/{HomeView-DNBrQnwy.js → HomeView-b_TT5oV3.js} +1 -1
  45. package/dist/ui/assets/{ImageEngineSettings-BfM9HSd_.js → ImageEngineSettings-CJfk4OJ4.js} +1 -1
  46. package/dist/ui/assets/{ImageRecognitionSettings-CaSQu5Br.js → ImageRecognitionSettings-DzbvZk5S.js} +1 -1
  47. package/dist/ui/assets/{IncompleteDownloads-C36lTCMG.js → IncompleteDownloads-C8_XyP8O.js} +1 -1
  48. package/dist/ui/assets/{KnowledgeCatalogsCard-CK9bqdf6.js → KnowledgeCatalogsCard-CHopG_j-.js} +1 -1
  49. package/dist/ui/assets/KnowledgeView-CXNKZUJq.js +1 -0
  50. package/dist/ui/assets/{LlamaCppSettings-CdNMHBbp.js → LlamaCppSettings-ohcM7kes.js} +1 -1
  51. package/dist/ui/assets/{MarkdownField-Dugmfr_e.js → MarkdownField-BX0qsaFq.js} +1 -1
  52. package/dist/ui/assets/{MemoriesTree-CgFqUNEr.js → MemoriesTree-BPj5Rod8.js} +1 -1
  53. package/dist/ui/assets/{MicrophoneSettings-DzDe9y1q.js → MicrophoneSettings-CWjeYnfI.js} +1 -1
  54. package/dist/ui/assets/MlxSettings-Dq6dRpcl.js +1 -0
  55. package/dist/ui/assets/{ModelPicker-BVkJhNAH.js → ModelPicker-0Ue-eEKj.js} +1 -1
  56. package/dist/ui/assets/NewPathDialog-BhAZm9dp.js +1 -0
  57. package/dist/ui/assets/{NewScriptDialog-TEAd0KLl.js → NewScriptDialog-DuryIe50.js} +1 -1
  58. package/dist/ui/assets/NewTaskDialog-BX24flMY.js +2 -0
  59. package/dist/ui/assets/{OllamaSettings-CPy2vxyZ.js → OllamaSettings-Boj8Nd1G.js} +1 -1
  60. package/dist/ui/assets/ProjectChat-Dhw_M5bq.js +5 -0
  61. package/dist/ui/assets/ProjectConnectionsTab-BwpMQNrg.js +1 -0
  62. package/dist/ui/assets/{ProjectGitStatusBar-BgHZ2ijN.js → ProjectGitStatusBar-BORGYx5l.js} +1 -1
  63. package/dist/ui/assets/{ProjectGithubView-BV2uTNU0.js → ProjectGithubView-CTP1BOMv.js} +1 -1
  64. package/dist/ui/assets/{ProjectMailTab-DLtJdXSL.js → ProjectMailTab-qFmAeV3M.js} +1 -1
  65. package/dist/ui/assets/{ProjectOverviewView-ZMs9nL5N.js → ProjectOverviewView-Cq1FsoaT.js} +1 -1
  66. package/dist/ui/assets/{ProjectTimeline-CTPcn4Kc.js → ProjectTimeline-Cqae2Z92.js} +1 -1
  67. package/dist/ui/assets/ProjectsView-D0uJjUB-.js +7 -0
  68. package/dist/ui/assets/{RecommendedBadge-iUoisQBi.js → RecommendedBadge-CN1jEmSn.js} +1 -1
  69. package/dist/ui/assets/{RemoteServersPanel-CTVJ0IRh.js → RemoteServersPanel-CMakvCCM.js} +1 -1
  70. package/dist/ui/assets/{ScriptEditorTabs-CCDFZjdC.js → ScriptEditorTabs-st6dJePd.js} +2 -2
  71. package/dist/ui/assets/{ScriptEditorView-CergLqKj.js → ScriptEditorView-BkySh57_.js} +2 -2
  72. package/dist/ui/assets/{ScriptsView-v7ckdhDi.js → ScriptsView-7uPKwjDB.js} +1 -1
  73. package/dist/ui/assets/{SecurityComplianceSettings-Bd0-66Gs.js → SecurityComplianceSettings-Tsv_pXfy.js} +1 -1
  74. package/dist/ui/assets/SessionSwitcher-D0fSeeHO.js +1 -0
  75. package/dist/ui/assets/SettingsView-cli_z8ZW.js +3 -0
  76. package/dist/ui/assets/{SquisqIntegration-C5l_OPvD.js → SquisqIntegration-BTZ1kBlg.js} +1 -1
  77. package/dist/ui/assets/{StorageCleanupDialog-3kv9-2mT.js → StorageCleanupDialog-CDBjl8JQ.js} +1 -1
  78. package/dist/ui/assets/{StorageUsageCard-7sWTrZFa.js → StorageUsageCard-DXY1j0dZ.js} +1 -1
  79. package/dist/ui/assets/TaskTabContent-C0P681SL.js +1 -0
  80. package/dist/ui/assets/TasksView-Ddwz10ri.js +1 -0
  81. package/dist/ui/assets/{TerminalCodeEditor-ChmdzmCz.js → TerminalCodeEditor-BkNQ6QoQ.js} +2 -2
  82. package/dist/ui/assets/ToolsetsEditor-KVigemfL.js +8 -0
  83. package/dist/ui/assets/{TransformToolbarButton-gzIxUBH7.js → TransformToolbarButton-8wfJR1bO.js} +2 -2
  84. package/dist/ui/assets/{UnrecognizedModels-0hptopv6.js → UnrecognizedModels-BzdU1clO.js} +1 -1
  85. package/dist/ui/assets/{VideoEngineSettings-BdNzCEdR.js → VideoEngineSettings-f79ff57u.js} +1 -1
  86. package/dist/ui/assets/{WorkspaceIndexPane-DnsOO916.js → WorkspaceIndexPane-fu5V6o1W.js} +1 -1
  87. package/dist/ui/assets/{api-C0I7spBl.js → api-CmrgM5Rf.js} +1 -1
  88. package/dist/ui/assets/chat-thread-memory-8MCtb17Q.js +1 -0
  89. package/dist/ui/assets/{chunk-6ECMNUIP-BvCy0HUI.js → chunk-6ECMNUIP-D5AA6ozp.js} +1 -1
  90. package/dist/ui/assets/{chunk-A6N6IN3I-ofeM4l8g.js → chunk-A6N6IN3I-BpxihS5H.js} +1 -1
  91. package/dist/ui/assets/{chunk-ATWVNF7D-CYuW1Yc6.js → chunk-ATWVNF7D-CKIWh7bN.js} +1 -1
  92. package/dist/ui/assets/{chunk-UBFT2CDQ-FexGDigd.js → chunk-CW24CH7I-BD0FIooX.js} +1 -1
  93. package/dist/ui/assets/{chunk-DXYWKZ52-zxe8pjH4.js → chunk-DXYWKZ52-DMKPZnpo.js} +1 -1
  94. package/dist/ui/assets/chunk-IIQYS2YH-BtDJt4Xr.js +1 -0
  95. package/dist/ui/assets/{chunk-KGWT454C-v5-l6U5m.js → chunk-KGWT454C-DsQOBuLg.js} +1 -1
  96. package/dist/ui/assets/{chunk-Q77KNJIN-BLuPdsQF.js → chunk-Q77KNJIN-BdWizq9s.js} +1 -1
  97. package/dist/ui/assets/{chunk-USU6HTKB-B_p-YcDp.js → chunk-USU6HTKB-DyGZplh4.js} +1 -1
  98. package/dist/ui/assets/{chunk-UXEANVBI-Bt0kX-0Z.js → chunk-UXEANVBI-BUBXvqyE.js} +1 -1
  99. package/dist/ui/assets/{chunk-O7JILDEF-CqcO1qaI.js → chunk-X7BNDUNI-D14WIvlD.js} +2 -2
  100. package/dist/ui/assets/{chunk-AE3IUKMM-mZjzzO8Z.js → chunk-ZSU5DJLX-CrjQf-vs.js} +1 -1
  101. package/dist/ui/assets/{container-BI8hxN1N.js → container-iFj1r6Hk.js} +1 -1
  102. package/dist/ui/assets/csv-Di411Mv-.js +1 -0
  103. package/dist/ui/assets/data-Q05qqAp4.js +1 -0
  104. package/dist/ui/assets/{dist-APSIK7H3.js → dist-1FNFiksd.js} +3 -3
  105. package/dist/ui/assets/dist-BMZhqfv7.js +2 -0
  106. package/dist/ui/assets/dist-CE5CbmDb.js +225 -0
  107. package/dist/ui/assets/doc-BHcGsJZd.js +587 -0
  108. package/dist/ui/assets/{document-import-DPK4r8Am.js → document-import-B2Ya6sbf.js} +1 -1
  109. package/dist/ui/assets/{docx-DRLuCTaC.js → docx-B8Pwz5Ih.js} +1 -1
  110. package/dist/ui/assets/{epub-a0p2Xb1b.js → epub-BQ4g8Q9j.js} +1 -1
  111. package/dist/ui/assets/{export-options-BqYFyzWx.js → export-options-Dylv69b3.js} +1 -1
  112. package/dist/ui/assets/file-browser-BLOPfnS0.js +5 -0
  113. package/dist/ui/assets/{html-BbQNmJ5X.js → html-BnA7qFwq.js} +1 -1
  114. package/dist/ui/assets/icons-CyM7Cg4E.js +1 -0
  115. package/dist/ui/assets/index-DW6qHqhU.css +1 -0
  116. package/dist/ui/assets/index-DivKnJyx.js +36 -0
  117. package/dist/ui/assets/{mail-link-CWfsP5Aq.js → mail-link-NtlcX5OE.js} +1 -1
  118. package/dist/ui/assets/{markdown-ryKA_OmY.js → markdown-CLKH_zzl.js} +1 -1
  119. package/dist/ui/assets/markdown-baseline-0dqv9qbV.js +1 -0
  120. package/dist/ui/assets/materialize-G4WC5UG3-xq2dcwS8.js +1 -0
  121. package/dist/ui/assets/{monaco-base-C0VTMpv-.js → monaco-base-BSvdAweA.js} +1 -1
  122. package/dist/ui/assets/{monaco-setup-CX8q88c5.js → monaco-setup-CT7LZ0o_.js} +1 -1
  123. package/dist/ui/assets/{new-project-meta-ZmDPGYzC.js → new-project-meta-5Y9Blozr.js} +1 -1
  124. package/dist/ui/assets/outside-in-Msmhxf_U.js +3 -0
  125. package/dist/ui/assets/{pdf-BHrygJa5.js → pdf-C4BhW3zg.js} +1 -1
  126. package/dist/ui/assets/{pending-drafts-27ujtQxX.js → pending-drafts-BD227X9H.js} +1 -1
  127. package/dist/ui/assets/{poppetje-CfaAvFkE.js → poppetje-DvCJO36y.js} +3 -3
  128. package/dist/ui/assets/{pptx-nDW64jAN.js → pptx-B6uaM2s7.js} +3 -3
  129. package/dist/ui/assets/{run-export-86KzLZ7R.js → run-export-TscWwR6y.js} +2 -2
  130. package/dist/ui/assets/{standalone-source-7QdiNsDW.js → standalone-source-Cw9SF7Zk.js} +1 -1
  131. package/dist/ui/assets/storage-Cmhlwx70.js +1 -0
  132. package/dist/ui/assets/styles-BjDaWeMA.css +1 -0
  133. package/dist/ui/assets/styles-CqO-rmOt.js +554 -0
  134. package/dist/ui/assets/{terminal-monaco-setup-Bar-sYKd.js → terminal-monaco-setup-me523-j-.js} +1 -1
  135. package/dist/ui/assets/{transform-CmAXy0Ck.js → transform-DxJCwK68.js} +1 -1
  136. package/dist/ui/assets/{use-local-model-manager-D1yiurrC.js → use-local-model-manager-8wvk-I-y.js} +1 -1
  137. package/dist/ui/assets/{useCompactLayout-BDtPQcDh.js → useCompactLayout-cm4E9Vja.js} +0 -0
  138. package/dist/ui/assets/{useCopilotAvailability-BHOfHrfT.js → useCopilotAvailability-D9hglSH_.js} +1 -1
  139. package/dist/ui/assets/{useDiffpacks-B0kYhlWQ.js → useDiffpacks-1BN2XJWg.js} +1 -1
  140. package/dist/ui/assets/{useGitSync-DOt-ODiw.js → useGitSync-7m9YA7h5.js} +1 -1
  141. package/dist/ui/assets/{useShowWorkInProgressFeatures-BtpredG7.js → useShowWorkInProgressFeatures-D6QOaTUT.js} +1 -1
  142. package/dist/ui/assets/{useTotalRamBytes-B8NFM27w.js → useTotalRamBytes-Durk383U.js} +1 -1
  143. package/dist/ui/assets/{xlsx-B_pu1ZvY.js → xlsx-BbHA9bxA.js} +1 -1
  144. package/dist/ui/index.html +15 -15
  145. package/package.json +12 -11
  146. package/dist/ui/assets/CatalogBrowser-7_jHy5Q3.js +0 -1
  147. package/dist/ui/assets/ChatTimelineView-Cg_kLK_U.js +0 -7
  148. package/dist/ui/assets/CraftbookEditor-BKAIsnXv.js +0 -1
  149. package/dist/ui/assets/DiffpackReviewView-B2a3zgE-.js +0 -1
  150. package/dist/ui/assets/DocumentDetail-GCYhwQqV.js +0 -1
  151. package/dist/ui/assets/DocumentsView-Cm3RaQ5N.js +0 -1
  152. package/dist/ui/assets/FileMapView-BKJovLcL.js +0 -1
  153. package/dist/ui/assets/FoldersSettings-CuJd2JdE.js +0 -1
  154. package/dist/ui/assets/GezelDetail-D_KIPDhQ.js +0 -1
  155. package/dist/ui/assets/GezellenView-BOOW1QQU.js +0 -1
  156. package/dist/ui/assets/HandboekView-gRzJcIbJ.js +0 -1
  157. package/dist/ui/assets/KnowledgeView-DJ3cJVHA.js +0 -1
  158. package/dist/ui/assets/MlxSettings-45mBFHbA.js +0 -1
  159. package/dist/ui/assets/NewTaskDialog-CIXVunZn.js +0 -2
  160. package/dist/ui/assets/ProjectChat-BiJRweob.js +0 -5
  161. package/dist/ui/assets/ProjectConnectionsTab-CQgaIzuv.js +0 -1
  162. package/dist/ui/assets/ProjectsView-BUdR76n6.js +0 -7
  163. package/dist/ui/assets/SessionSwitcher-BgZqyiRn.js +0 -1
  164. package/dist/ui/assets/SettingsView-DLhOYiR5.js +0 -3
  165. package/dist/ui/assets/TaskTabContent-CG2KmfwV.js +0 -1
  166. package/dist/ui/assets/TasksView-Dy5Ue4zS.js +0 -1
  167. package/dist/ui/assets/ToolsetsEditor-J9XxQ5Ms.js +0 -8
  168. package/dist/ui/assets/chat-thread-memory-CI2-giEq.js +0 -1
  169. package/dist/ui/assets/chunk-IIQYS2YH-DEkyBlHg.js +0 -1
  170. package/dist/ui/assets/csv-B0D9jJG2.js +0 -1
  171. package/dist/ui/assets/data-BIL84EaT.js +0 -1
  172. package/dist/ui/assets/dist-CJqyWK6E.js +0 -2
  173. package/dist/ui/assets/dist-DOqbRmFj.js +0 -225
  174. package/dist/ui/assets/doc-C2Ph2FWI.js +0 -584
  175. package/dist/ui/assets/document-companion-aDThLOwl.js +0 -1
  176. package/dist/ui/assets/file-browser-DVyWN0LD.js +0 -5
  177. package/dist/ui/assets/icons-DWaUNQbT.js +0 -1
  178. package/dist/ui/assets/index-DDu8nyO6.js +0 -34
  179. package/dist/ui/assets/index-DEDUSiCx.css +0 -1
  180. package/dist/ui/assets/markdown-baseline-9B52XlX2.js +0 -1
  181. package/dist/ui/assets/materialize-G4WC5UG3-BlZQe-88.js +0 -1
  182. package/dist/ui/assets/outside-in-BmIIeMid.js +0 -3
  183. package/dist/ui/assets/storage-B-vhjyV2.js +0 -1
  184. package/dist/ui/assets/styles-BvkZd-EV.js +0 -550
  185. package/dist/ui/assets/styles-IQ4adxWr.css +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"./api-C0I7spBl.js";import{r as t}from"./monaco-DeTXJU-n.js";import{c as n,f as r,h as i,p as a}from"./editor.api-DShZZcgD.js";import{n as o}from"./completion-data--97asQiQ.js";import{ensureGezelMonacoBase as s}from"./monaco-base-C0VTMpv-.js";function c(e){let t=e.trim(),n=e===``||/\s$/.test(e),r=t.length?t.split(/\s+/):[],i,a;n?(i=r,a=``):(i=r.slice(0,-1),a=r[r.length-1]??``);let o=/^([A-Za-z][\w-]*)=(.*)$/.exec(a);return{tokens:i,currentToken:a,atTokenStart:a===``,pendingKey:o?.[1]}}function l(e,t){let{tokens:n}=e;if(n.length===0)return u(t);let r=n[0],i=t.craftbooks.find(e=>e.command===r||e.id===r);if(i)return v(i,n.slice(1),e.pendingKey);let a=t.mcpTools.find(e=>e.name===r);if(a)return y(a,n.slice(1),e.pendingKey);let o=p(t,n);return o?h(o,n,e.currentToken):[]}function u(e){let t=[],n=[{label:`open`,insertText:`open`,kind:`command`,badge:`gezel`,detail:`Preview a workspace file in References`,documentation:"Usage: `open <workspace-file>`",sortText:`0open`}];t.push(...n);let r=new Set(n.map(e=>e.label)),i=new Set(e.craftbooks.map(e=>e.command));for(let n of e.craftbooks)r.has(n.command)||t.push({label:n.command,insertText:n.command,kind:`craftbook`,badge:`craftbook`,detail:n.name,documentation:n.description,sortText:`1${n.command}`});for(let n of e.index?.commands??[])r.has(n.name)||i.has(n.name)||t.push({label:n.name,insertText:n.name,kind:`command`,badge:d(n.kind),detail:n.run,documentation:f(n,e.index?.shapes?.[n.name]),sortText:`2${n.name}`});for(let n of e.mcpTools)r.has(n.name)||t.push({label:n.name,insertText:n.name,kind:`mcp-tool`,badge:`mcp`,documentation:n.description,sortText:`3${n.name}`});return t}function d(e){switch(e){case`npm-script`:case`workspace-script`:return`script`;case`vscode-launch`:return`launch`;case`bin`:return`bin`}}function f(e,t){let n=[],r=t?.summary??e.description;return r&&n.push(r),n.push(``,`Runs: \`${e.run}\``,`Source: ${e.source}`),t?.usage&&n.push(``,`Usage: \`${t.usage}\``),t?.examples?.length&&n.push(``,`Examples:`,"```",...t.examples.slice(0,5),"```"),n.join(`
1
+ import{t as e}from"./api-CmrgM5Rf.js";import{r as t}from"./monaco-DeTXJU-n.js";import{c as n,f as r,h as i,p as a}from"./editor.api-DShZZcgD.js";import{n as o}from"./completion-data--97asQiQ.js";import{ensureGezelMonacoBase as s}from"./monaco-base-BSvdAweA.js";function c(e){let t=e.trim(),n=e===``||/\s$/.test(e),r=t.length?t.split(/\s+/):[],i,a;n?(i=r,a=``):(i=r.slice(0,-1),a=r[r.length-1]??``);let o=/^([A-Za-z][\w-]*)=(.*)$/.exec(a);return{tokens:i,currentToken:a,atTokenStart:a===``,pendingKey:o?.[1]}}function l(e,t){let{tokens:n}=e;if(n.length===0)return u(t);let r=n[0],i=t.craftbooks.find(e=>e.command===r||e.id===r);if(i)return v(i,n.slice(1),e.pendingKey);let a=t.mcpTools.find(e=>e.name===r);if(a)return y(a,n.slice(1),e.pendingKey);let o=p(t,n);return o?h(o,n,e.currentToken):[]}function u(e){let t=[],n=[{label:`open`,insertText:`open`,kind:`command`,badge:`gezel`,detail:`Preview a workspace file in References`,documentation:"Usage: `open <workspace-file>`",sortText:`0open`}];t.push(...n);let r=new Set(n.map(e=>e.label)),i=new Set(e.craftbooks.map(e=>e.command));for(let n of e.craftbooks)r.has(n.command)||t.push({label:n.command,insertText:n.command,kind:`craftbook`,badge:`craftbook`,detail:n.name,documentation:n.description,sortText:`1${n.command}`});for(let n of e.index?.commands??[])r.has(n.name)||i.has(n.name)||t.push({label:n.name,insertText:n.name,kind:`command`,badge:d(n.kind),detail:n.run,documentation:f(n,e.index?.shapes?.[n.name]),sortText:`2${n.name}`});for(let n of e.mcpTools)r.has(n.name)||t.push({label:n.name,insertText:n.name,kind:`mcp-tool`,badge:`mcp`,documentation:n.description,sortText:`3${n.name}`});return t}function d(e){switch(e){case`npm-script`:case`workspace-script`:return`script`;case`vscode-launch`:return`launch`;case`bin`:return`bin`}}function f(e,t){let n=[],r=t?.summary??e.description;return r&&n.push(r),n.push(``,`Runs: \`${e.run}\``,`Source: ${e.source}`),t?.usage&&n.push(``,`Usage: \`${t.usage}\``),t?.examples?.length&&n.push(``,`Examples:`,"```",...t.examples.slice(0,5),"```"),n.join(`
2
2
  `)}function p(e,t){let n=e.index?.shapes;if(n)for(let e=Math.min(t.length,3);e>=1;e--){let r=t.slice(0,e).join(` `);if(n[r])return n[r]}}function m(e){let t=[`(${e.type})`];return e.required&&t.push(`required`),e.default&&t.push(`default ${e.default}`),t.join(` `)}function h(e,t,n){let r=e.flags??[],i=t.slice(1),a=t[t.length-1];if(a&&!n.startsWith(`-`)){let e=/^--?([\w-]+)$/.exec(a),t=e?r.find(t=>t.name===e[1]||t.char===e[1]):void 0;if(t?.type===`option`&&t.options?.length)return t.options.map(e=>({label:e,insertText:e,kind:`enum`,detail:t.name,sortText:`0${e}`}))}if(n.startsWith(`-`))return r.map(e=>({label:`--${e.name}`,insertText:`--${e.name}`,kind:`flag`,badge:e.type,detail:m(e),documentation:e.description,sortText:`${e.required?`0`:`1`}${e.name}`}));if(i.length===0&&(e.subcommands?.length??0)>0)return(e.subcommands??[]).map(e=>({label:e.name,insertText:e.name,kind:`subcommand`,detail:e.summary,documentation:e.summary,sortText:`0${e.name}`}));let o=(e.args??[])[i.filter(e=>!e.startsWith(`-`)).length];return o?.options?.length?o.options.map(e=>({label:e,insertText:e,kind:`enum`,detail:o.name,documentation:o.description,sortText:`0${e}`})):[]}function g(e){let t=e,n=t?.properties??{},r=new Set(Array.isArray(t?.required)?t.required.map(String):[]);return Object.keys(n).map(e=>{let t=n[e]??{};return{key:e,type:typeof t.type==`string`?t.type:`string`,enum:Array.isArray(t.enum)?t.enum.map(String):void 0,required:r.has(e),description:typeof t.description==`string`?t.description:void 0}})}function _(e){return e.enum?.length?e.enum.map(t=>({label:t,insertText:t,kind:`enum`,detail:e.key,sortText:`0${t}`})):e.type===`boolean`?[`true`,`false`].map(t=>({label:t,insertText:t,kind:`enum`,detail:e.key,sortText:`0${t}`})):[]}function v(e,t,n){let r=g(e.paramSchema),i=new Map(r.map(e=>[e.key,e]));if(n){let e=i.get(n);return e?_(e):[]}let a=new Set,o=0;for(let e of t){let t=/^-{0,2}([A-Za-z][\w-]*)=/.exec(e);if(t){a.add(t[1]);continue}for(;o<r.length&&a.has(r[o].key);)o++;o<r.length&&(a.add(r[o].key),o++)}for(;o<r.length&&a.has(r[o].key);)o++;let s=r[o];if(!s)return[];let c=_(s);return c.push({label:`${s.key}=`,insertText:`${s.key}=`,kind:`arg`,badge:s.required?`required`:`param`,detail:s.type,documentation:s.description,sortText:`1${s.key}`}),c}function y(e,t,n){let r=g(e.parameters),i=new Map(r.map(e=>[e.key,e]));if(n){let e=i.get(n);return e?_(e):[]}let a=new Set(t.map(e=>/^([A-Za-z][\w-]*)=/.exec(e)?.[1]).filter(e=>!!e)),o=[];for(let e of r)a.has(e.key)||o.push({label:`${e.key}=`,insertText:`${e.key}=`,kind:`arg`,badge:e.required?`required`:`arg`,detail:e.type,documentation:e.description,sortText:`${e.required?`0`:`1`}${e.key}`});return t.length===0&&o.push({label:`{ } — raw JSON args`,insertText:`{}`,kind:`arg`,badge:`json`,detail:`pass arguments as a JSON object`,sortText:`2}`}),o}function b(e){return r.from({scheme:`inmemory`,authority:`gezel-terminal`,path:`/${encodeURIComponent(e)}`})}function x(e){return decodeURIComponent(e.path.replace(/^\//,``))}var S=null;function C(){return S||(S=w().catch(e=>{throw S=null,e}),S)}async function w(){await s(),i.register({id:`gezel-terminal`}),i.setMonarchTokensProvider(`gezel-terminal`,{tokenizer:{root:[[/^\s*[\w.\-/@]+/,`keyword`],[/--?[\w-]+/,`attribute.name`],[/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'/,`string`],[/.+/,``]]}}),a.defineTheme(`gezel-terminal-light`,{base:`vs`,inherit:!0,rules:[{token:`keyword`,foreground:`436a2e`},{token:`attribute.name`,foreground:`8a6d3b`}],colors:{"editor.background":`#f6f1e7`,"editor.lineHighlightBackground":`#00000000`,"editor.lineHighlightBorder":`#00000000`,"editorCursor.foreground":`#b0724c`}}),a.defineTheme(`gezel-terminal-dark`,{base:`vs-dark`,inherit:!0,rules:[{token:`keyword`,foreground:`8fce6a`},{token:`attribute.name`,foreground:`d6b07a`}],colors:{"editor.background":`#111827`,"editor.lineHighlightBackground":`#00000000`,"editor.lineHighlightBorder":`#00000000`}}),i.registerCompletionItemProvider(`gezel-terminal`,{triggerCharacters:[` `,`=`,`-`,`/`,`.`],async provideCompletionItems(e,t){let r=e.getValueInRange({startLineNumber:t.lineNumber,startColumn:1,endLineNumber:t.lineNumber,endColumn:t.column}),i=c(r),a=x(e.uri),s=l(i,o(a)),u=/\S*$/.exec(r)?.[0]??``,d=t.column-u.length,f=i.pendingKey?d+u.indexOf(`=`)+1:d,p=new n(t.lineNumber,f,t.lineNumber,t.column),m=s.map(e=>j(e,p));if(T(i)){let e=await O(a,i.currentToken);for(let t of e)m.push(k(t,p))}return{suggestions:m}}})}function T(e){return e.tokens.length>=1&&!e.pendingKey&&!e.currentToken.startsWith(`-`)&&e.currentToken.length>=1}var E=new Map,D=[];async function O(t,n){let r=`${t}|${n}`,i=E.get(r);if(i)return i;try{let i=await e.searchProjectFiles(t,n);if(E.set(r,i.paths),D.push(r),D.length>100){let e=D.shift();e&&E.delete(e)}return i.paths}catch{return[]}}function k(e,t){let n=e.endsWith(`/`);return{label:e,kind:n?i.CompletionItemKind.Folder:i.CompletionItemKind.File,insertText:e,filterText:e,sortText:`3${e}`,range:t,...n?{command:{id:`editor.action.triggerSuggest`,title:``}}:{}}}function A(e){let t=i.CompletionItemKind;switch(e){case`command`:return t.Function;case`craftbook`:return t.Class;case`mcp-tool`:return t.Interface;case`subcommand`:return t.Method;case`flag`:return t.Property;case`arg`:return t.Variable;case`enum`:return t.EnumMember}}function j(e,t){return{label:e.badge?{label:e.label,description:e.badge}:e.label,kind:A(e.kind),insertText:e.insertText,filterText:e.label,detail:e.detail,documentation:e.documentation?{value:e.documentation}:void 0,sortText:e.sortText,range:t}}export{C as ensureTerminalMonaco,t as monaco,b as terminalModelUri};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,c as n,i as r,n as i,o as a,r as o,s,t as c}from"./chunk-AE3IUKMM-mZjzzO8Z.js";var l=e({DEFAULT_TRANSFORM_STYLE_ID:()=>c,analyzeBlocks:()=>i,applyTransform:()=>o,createTransformStyleRegistry:()=>r,extractDocImages:()=>t,getTransformStyleIds:()=>a,getTransformStyleSummaries:()=>s,resolveTransformStyle:()=>n});export{l as t};
1
+ import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,c as n,i as r,n as i,o as a,r as o,s,t as c}from"./chunk-ZSU5DJLX-CrjQf-vs.js";var l=e({DEFAULT_TRANSFORM_STYLE_ID:()=>c,analyzeBlocks:()=>i,applyTransform:()=>o,createTransformStyleRegistry:()=>r,extractDocImages:()=>t,getTransformStyleIds:()=>a,getTransformStyleSummaries:()=>s,resolveTransformStyle:()=>n});export{l 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"./dist-DOqbRmFj.js";import{t as r}from"./api-C0I7spBl.js";import{n as i}from"./primitives-CWrGZpPI.js";import{a,i as o,r as s}from"./model-memory-copy-Ds9w1uJE.js";import{a as c,r as l,t as u}from"./model-inventory-ykSm_IT5.js";var d=e(t(),1),f=n(),p=1024**3,m=2,h=2,g=.5,_=.25;function v(e){return`${Number.isInteger(e)?e:e.toFixed(1)} GB`}function y({status:e,onSaved:t}){let n=e.systemRamBytes??0,i=e.autoBudgetBytes??0,a=e.overridden??!1,o=e.pools,s=o?.kind===`discrete-gpu`&&o.vramBytes>0,c=s?n+o.vramBytes:n,[l,u]=(0,d.useState)(null),[y,x]=(0,d.useState)(!1),[S,C]=(0,d.useState)(null),w=e.budgetBytes/p;(0,d.useEffect)(()=>{u(a?w:null)},[a,w]);let T=(0,d.useCallback)(async e=>{x(!0),C(null);try{await r.updateEngineMemoryBudget(e),C(e===null?`Back to automatic`:`Saved`),await t()}catch(e){C(`Could not save: ${e instanceof Error?e.message:String(e)}`)}finally{x(!1)}},[t]);if(n<=0||i<=0)return null;let E=i/p,D=c/p,O=n/p,k=(o?.vramBytes??0)/p,A=Math.min(m,E),j=Math.max(E,D-h),M=Math.min(Math.max(l??E,A),j),N=l===null||Math.abs(l-E)<=_,P=!N&&M>E,F=(l??E)!==(a?w:E),I=(E-A)/Math.max(.001,j-A)*100;return(0,f.jsxs)(`div`,{className:`engine-memory-budget`,children:[(0,f.jsx)(`h4`,{children:`Memory for on-device models`}),(0,f.jsxs)(`p`,{className:`muted small`,children:[`The most memory all your on-device models may hold at once. Raise it to run a larger model; lower it to leave more room for everything else.`,` `,s?`This machine has ${v(Math.round(k))} of graphics memory and ${v(Math.round(O))} of system memory; a model larger than the graphics card runs partly from system memory.`:O>=1?`This machine has ${v(Math.round(O))} of memory in total.`:``]}),(0,f.jsxs)(`div`,{className:`gz-budget-slider`,children:[(0,f.jsxs)(`div`,{className:`gz-budget-slider-head`,children:[(0,f.jsx)(`strong`,{children:v(M)}),N?(0,f.jsx)(`span`,{className:`gz-budget-tag`,children:`Automatic`}):(0,f.jsx)(`span`,{className:`gz-budget-tag ${P?`gz-budget-tag-risky`:`gz-budget-tag-custom`}`,children:P?`Above recommended`:`Custom`})]}),(0,f.jsxs)(`div`,{className:`gz-budget-track`,children:[(0,f.jsx)(`input`,{type:`range`,min:A,max:j,step:g,value:M,"aria-label":`Memory for on-device models`,onChange:e=>u(Number.parseFloat(e.target.value))}),(0,f.jsxs)(`div`,{className:`gz-budget-marker`,style:{left:`${I}%`},title:`Recommended for this machine: ${v(E)}`,"aria-hidden":`true`,children:[(0,f.jsx)(`span`,{className:`gz-budget-marker-arrow`,children:`▲`}),(0,f.jsxs)(`span`,{className:`gz-budget-marker-label`,children:[`Auto · `,v(E)]})]})]}),(0,f.jsxs)(`div`,{className:`gz-budget-scale muted small`,children:[(0,f.jsx)(`span`,{children:v(A)}),(0,f.jsx)(`span`,{children:v(j)})]})]}),P&&(0,f.jsx)(`output`,{className:`muted small engine-memory-budget-warning`,children:`Above what we'd pick for this machine. Models will still load, but the rest of the system has less to work with — expect things to feel slower before anything fails outright.`}),(0,f.jsxs)(`div`,{className:`engine-memory-budget-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:()=>void T(N?null:M),disabled:y||!F,children:y?`Saving…`:`Save`}),a&&(0,f.jsx)(`button`,{type:`button`,onClick:()=>void T(null),disabled:y,children:`Back to automatic`})]}),S&&(0,f.jsx)(`p`,{className:`muted small`,style:{marginTop:`0.5rem`},children:S}),s&&(0,f.jsx)(b,{status:e,onSaved:t})]})}function b({status:e,onSaved:t}){let n=e.ramSpillover,[i,a]=(0,d.useState)(!1),[o,s]=(0,d.useState)(null),c=(0,d.useCallback)(async e=>{a(!0),s(null);try{await r.updateEngineRamSpillover(e),await t()}catch(e){s(`Could not save: ${e instanceof Error?e.message:String(e)}`)}finally{a(!1)}},[t]);if(!n)return null;let l=n.overridden?n.allowed?`spill`:`card`:`auto`;return(0,f.jsxs)(`div`,{className:`engine-spillover`,children:[(0,f.jsx)(`h4`,{children:`When a second model won't fit the graphics card`}),(0,f.jsx)(`p`,{className:`muted small`,children:`Gezel can unload the model you haven't used recently, or keep both loaded by spilling into system memory. Spilling keeps everything available but slows every model sharing the card — most noticeably with several chats or tasks running at once. A single model larger than the card always uses system memory; this only applies once more than one is loaded.`}),(0,f.jsxs)(`fieldset`,{className:`gz-tray engine-spillover-tray`,children:[(0,f.jsx)(`legend`,{className:`sr-only`,children:`When a second model won't fit the graphics card`}),[{id:`auto`,label:`Automatic`,value:null},{id:`card`,label:`Unload one`,value:!1},{id:`spill`,label:`Use system memory`,value:!0}].map(e=>(0,f.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":l===e.id,className:`gz-key${l===e.id?` gz-key-active`:``}`,disabled:i,onClick:()=>void c(e.value),children:e.label},e.id))]}),(0,f.jsxs)(`p`,{className:`muted small`,children:[`Automatic unloads one model so concurrent models stay within graphics memory. Choose Use system memory only if you explicitly prefer avoiding reloads. On this machine that means`,` `,n.auto?`using system memory`:`unloading one`,`.`]}),o&&(0,f.jsx)(`p`,{className:`error`,children:o})]})}function x(e){return`${(e/1024**3).toFixed(1)} GB`}function S({provider:e,pollMs:t=2e3}){let[n,i]=(0,d.useState)(null),[a,o]=(0,d.useState)(null),s=(0,d.useCallback)(async()=>{try{i(await r.getEngineStatus()),o(null)}catch(e){o(e instanceof Error?e.message:String(e))}},[]);if((0,d.useEffect)(()=>{let e=!1,n=async()=>{try{let t=await r.getEngineStatus();if(e)return;i(t),o(null)}catch(t){if(e)return;o(t instanceof Error?t.message:String(t))}};n();let a=setInterval(()=>void n(),t);return()=>{e=!0,clearInterval(a)}},[t]),a)return(0,f.jsxs)(`div`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:[`Engine status unavailable: `,a]});if(!n||!n.enforced)return null;let c=n.budgetBytes>0?n.committedBytes/n.budgetBytes:0,l=n.entries.filter(t=>t.provider===e),u=c>1;return(0,f.jsxs)(`div`,{style:{border:`1px solid var(--gz-color-border, #2c2c2c)`,borderRadius:6,padding:`10px 14px`,marginBottom:`1rem`,background:`var(--gz-color-surface, transparent)`,fontSize:13},children:[(0,f.jsx)(`div`,{style:{marginBottom:6,fontWeight:500},children:`Engine memory budget`}),(0,f.jsx)(`div`,{style:{height:8,width:`100%`,borderRadius:4,background:`var(--gz-color-border, #2c2c2c)`,overflow:`hidden`,marginBottom:6},children:(0,f.jsx)(`div`,{style:{height:`100%`,width:`${Math.min(100,Math.round(c*100))}%`,background:u?`var(--warning)`:`var(--success)`,transition:`width 0.4s ease-out`}})}),(0,f.jsxs)(`div`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:[x(n.committedBytes),` of `,x(n.budgetBytes),` used`,n.pools?.kind===`discrete-gpu`&&n.pools.vramBytes>0?(0,f.jsxs)(f.Fragment,{children:[` `,`(`,x(n.pools.vramBytes),` graphics + `,x(n.pools.ramShareBytes),` system)`]}):null,l.length>0?(0,f.jsxs)(f.Fragment,{children:[` · `,l.map(e=>`${e.replicaIdx===0?``:`${e.replicaIdx+1}× `}${e.modelId} (${x(e.residentBytes)})`).join(` · `)]}):null]}),(0,f.jsx)(y,{status:n,onSaved:s})]})}function C({provider:e,modelId:t,config:n,onConfigChanged:i}){let a=n?.localEngineReplicasMax??4,o=n?.localEngineReplicas??{},s=t?o[t]??1:1,[c,l]=(0,d.useState)(s),[u,p]=(0,d.useState)(`idle`);(0,d.useEffect)(()=>{l(s)},[s]);let m=(0,d.useCallback)(async n=>{if(!t)return;let s=Math.max(1,Math.min(a,n));l(s),p(`saving`);try{let n={...o,[t]:s};i(await r.updateConfig({localEngineReplicas:n})),await r.reconcileEnginePool({provider:e,clones:{[t]:s}}),p(`saved`),setTimeout(()=>p(`idle`),1200)}catch{p(`idle`)}},[t,a,e,o,i]);return t?(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`,padding:`0.5rem 0`,fontSize:13},children:[(0,f.jsxs)(`span`,{style:{minWidth:220},children:[`Clones of `,(0,f.jsx)(`b`,{children:t}),` kept resident:`]}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void m(c-1),disabled:u===`saving`||c<=1,style:{width:28},children:`−`}),(0,f.jsx)(`span`,{style:{minWidth:28,textAlign:`center`,fontVariantNumeric:`tabular-nums`},children:c}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void m(c+1),disabled:u===`saving`||c>=a,style:{width:28},children:`+`}),(0,f.jsxs)(`span`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:[`(max `,a,`)`]}),u===`saved`?(0,f.jsx)(`span`,{style:{fontSize:12},children:`saved ✓`}):null]}):(0,f.jsx)(`div`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:`Pick a default model to enable clone control.`})}function w({model:e}){let t=o(e);return(0,f.jsx)(`td`,{children:(0,f.jsx)(i,{text:a(e),children:(0,f.jsxs)(`span`,{className:`model-size-cell`,children:[s(e.approxSizeBytes),t?(0,f.jsx)(`span`,{className:`muted small model-memory-headline`,children:t}):null]})})})}var T={engine:`llama-cpp`,list:()=>r.listLlamaCppModels(),incomplete:()=>r.listIncompleteLlamaCppModels(),active:()=>r.listLlamaCppActiveInstalls(),install:(...e)=>r.installLlamaCppModel(...e),cancel:e=>r.cancelLlamaCppModelInstall(e),remove:e=>r.deleteLlamaCppModel(e)},E={engine:`mlx`,list:()=>r.listMlxModels(),incomplete:()=>r.listIncompleteMlxModels(),active:()=>r.listMlxActiveInstalls(),install:(e,t,n,i)=>r.installMlxModel(e,e=>t(e.type===`progress`?{...e,bytesWritten:e.bytesWrittenAll,totalBytes:e.totalBytesAll}:e),n,i),cancel:e=>r.cancelMlxModelInstall(e),remove:e=>r.deleteMlxModel(e)};function D(e,t,n){let[r,i]=(0,d.useState)(new Map),a=(0,d.useRef)(r),o=(0,d.useRef)(!0),[s,c]=(0,d.useState)(null),[u,f]=(0,d.useState)(null),[p,m]=(0,d.useState)(null),h=(0,d.useCallback)(e=>{if(!o.current)return;let t=new Map(a.current);e(t),a.current=t,i(t)},[]);(0,d.useEffect)(()=>(o.current=!0,()=>{o.current=!1;for(let e of a.current.values())e.controller?.abort();a.current=new Map}),[]),(0,d.useEffect)(()=>{let n=!1,r,i=new Set,a=async()=>{try{let{installs:r}=await e.active();if(n)return;let a=new Set(r.map(e=>e.catalogId));h(e=>{for(let t of r)e.get(t.catalogId)?.origin!==`local`&&e.set(t.catalogId,{...t,fileIndex:0,fileCount:1,file:``,origin:`remote`});for(let[t,n]of e)n.origin===`remote`&&!a.has(t)&&e.delete(t)}),[...i].some(e=>!a.has(e))&&t(),i=a}catch{}n||(r=setTimeout(()=>void a(),2e3))};return a(),()=>{n=!0,r&&clearTimeout(r)}},[e,t,h]);let g=(0,d.useCallback)((r,i)=>{if(a.current.has(r))return;f(null),m(null);let s=new AbortController;h(e=>e.set(r,{catalogId:r,bytesWritten:0,totalBytes:0,fileIndex:0,fileCount:1,file:``,phase:`downloading`,origin:`local`,controller:s}));let u=()=>o.current&&a.current.get(r)?.controller===s,d=e=>{u()&&(e.type===`done`?e.warning&&c({id:e.id,message:e.warning}):e.type===`error`&&e.mismatch?(h(e=>e.delete(r)),m({catalogId:r,file:e.mismatch.file})):(h(t=>{let n=t.get(r);e.type===`progress`?t.set(r,{...n,bytesWritten:e.bytesWritten,totalBytes:e.totalBytes||n.totalBytes,file:e.file??n.file,fileIndex:e.fileIndex??n.fileIndex,fileCount:e.fileCount??n.fileCount,phase:`downloading`,retrying:void 0,error:void 0}):e.type===`retrying`?t.set(r,{...n,retrying:e}):e.type===`verifying`||e.type===`extracting-metadata`?t.set(r,{...n,phase:e.type,file:e.file??n.file}):e.type===`error`&&t.set(r,{...n,error:e.error,retrying:void 0})}),e.type===`error`&&f(e.error)))};(async()=>{try{await e.install(r,d,s.signal,i?.skipSha?{skipSha:!0}:void 0),u()&&l(e.engine)}catch(e){if(u()&&!s.signal.aborted){let t=`download failed: ${e instanceof Error?e.message:String(e)}`;f(t),h(e=>{let n=e.get(r);e.set(r,{...n,error:n.error??t,retrying:void 0})})}}finally{u()&&h(e=>{let t=e.get(r);t.error?e.set(r,{...t,controller:void 0}):e.delete(r)}),o.current&&(t(),n?.())}})()},[e,t,n,h]);return{installs:r,installWarning:s,setInstallWarning:c,installError:u,setInstallError:f,installMismatch:p,setInstallMismatch:m,startInstall:g,retryInstall:(0,d.useCallback)(e=>{a.current.get(e)?.error&&(a.current.get(e)?.controller?.abort(),h(t=>t.delete(e)),g(e))},[g,h]),cancelInstall:(0,d.useCallback)(t=>{a.current.get(t)?.controller?.abort(),h(e=>e.delete(t)),e.cancel(t).catch(e=>{o.current&&f(`cancel failed: ${e instanceof Error?e.message:String(e)}`)})},[e,h]),downloadAnyway:(0,d.useCallback)(e=>g(e,{skipSha:!0}),[g])}}function O(e,t){let[n,i]=(0,d.useState)([]),[a,o]=(0,d.useState)(null),[s,f]=(0,d.useState)(!0),[p,m]=(0,d.useState)([]),[h,g]=(0,d.useState)([]),[_,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(new Map),[x,S]=(0,d.useState)([]),C=(0,d.useRef)([]),w=(0,d.useRef)(null),T=(0,d.useRef)(!0);(0,d.useEffect)(()=>(T.current=!0,()=>{T.current=!1}),[]);let E=(0,d.useCallback)(async()=>{try{let e=await r.listModelFitness();if(!T.current)return;b(new Map(e.records.map(e=>[e.key,e]))),S(e.probing),C.current=e.probing}catch{}},[]),O=(0,d.useCallback)(()=>{if(!T.current)return Promise.resolve();if(w.current)return w.current;f(!0);let t=(async()=>{try{let t=await e.list();if(!T.current)return;i(t.models),g(t.unrecognized??[]),o(null)}catch(e){T.current&&o(e instanceof Error?e.message:String(e))}finally{T.current&&f(!1)}E();try{let t=await e.incomplete();T.current&&m(t.incomplete??[])}catch{}})();return w.current=t,t.then(()=>{w.current===t&&(w.current=null)}),t},[e,E]);return(0,d.useEffect)(()=>{O();let t=t=>{c(t)===e.engine&&O()};return window.addEventListener(u,t),()=>window.removeEventListener(u,t)},[e,O]),(0,d.useEffect)(()=>{let e=!1,t,n=async()=>{await E(),e||(t=setTimeout(()=>void n(),C.current.length?2e3:15e3))};return n(),()=>{e=!0,t&&clearTimeout(t)}},[E]),{models:n,modelsError:a,modelsLoading:s,incomplete:p,unrecognized:h,toDelete:_,setToDelete:v,fitness:y,probing:x,refreshFitness:E,refresh:O,deleteOne:(0,d.useCallback)(async()=>{let n=_;if(n){v(null),o(null),i(e=>e.filter(e=>e.id!==n)),m(e=>e.filter(e=>e.id!==n)),g(e=>e.filter(e=>e.id!==n));try{if(await e.remove(n),!T.current)return;l(e.engine),await O(),t?.()}catch(e){await O(),T.current&&o(`delete failed: ${e instanceof Error?e.message:String(e)}`)}}},[e,_,O,t]),...D(e,O,t)}}export{C as a,w as i,T as n,S as o,E as r,O 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"./dist-CE5CbmDb.js";import{t as r}from"./api-CmrgM5Rf.js";import{n as i}from"./primitives-CWrGZpPI.js";import{a,i as o,r as s}from"./model-memory-copy-Ds9w1uJE.js";import{a as c,r as l,t as u}from"./model-inventory-ykSm_IT5.js";var d=e(t(),1),f=n(),p=1024**3,m=2,h=2,g=.5,_=.25;function v(e){return`${Number.isInteger(e)?e:e.toFixed(1)} GB`}function y({status:e,onSaved:t}){let n=e.systemRamBytes??0,i=e.autoBudgetBytes??0,a=e.overridden??!1,o=e.pools,s=o?.kind===`discrete-gpu`&&o.vramBytes>0,c=s?n+o.vramBytes:n,[l,u]=(0,d.useState)(null),[y,x]=(0,d.useState)(!1),[S,C]=(0,d.useState)(null),w=e.budgetBytes/p;(0,d.useEffect)(()=>{u(a?w:null)},[a,w]);let T=(0,d.useCallback)(async e=>{x(!0),C(null);try{await r.updateEngineMemoryBudget(e),C(e===null?`Back to automatic`:`Saved`),await t()}catch(e){C(`Could not save: ${e instanceof Error?e.message:String(e)}`)}finally{x(!1)}},[t]);if(n<=0||i<=0)return null;let E=i/p,D=c/p,O=n/p,k=(o?.vramBytes??0)/p,A=Math.min(m,E),j=Math.max(E,D-h),M=Math.min(Math.max(l??E,A),j),N=l===null||Math.abs(l-E)<=_,P=!N&&M>E,F=(l??E)!==(a?w:E),I=(E-A)/Math.max(.001,j-A)*100;return(0,f.jsxs)(`div`,{className:`engine-memory-budget`,children:[(0,f.jsx)(`h4`,{children:`Memory for on-device models`}),(0,f.jsxs)(`p`,{className:`muted small`,children:[`The most memory all your on-device models may hold at once. Raise it to run a larger model; lower it to leave more room for everything else.`,` `,s?`This machine has ${v(Math.round(k))} of graphics memory and ${v(Math.round(O))} of system memory; a model larger than the graphics card runs partly from system memory.`:O>=1?`This machine has ${v(Math.round(O))} of memory in total.`:``]}),(0,f.jsxs)(`div`,{className:`gz-budget-slider`,children:[(0,f.jsxs)(`div`,{className:`gz-budget-slider-head`,children:[(0,f.jsx)(`strong`,{children:v(M)}),N?(0,f.jsx)(`span`,{className:`gz-budget-tag`,children:`Automatic`}):(0,f.jsx)(`span`,{className:`gz-budget-tag ${P?`gz-budget-tag-risky`:`gz-budget-tag-custom`}`,children:P?`Above recommended`:`Custom`})]}),(0,f.jsxs)(`div`,{className:`gz-budget-track`,children:[(0,f.jsx)(`input`,{type:`range`,min:A,max:j,step:g,value:M,"aria-label":`Memory for on-device models`,onChange:e=>u(Number.parseFloat(e.target.value))}),(0,f.jsxs)(`div`,{className:`gz-budget-marker`,style:{left:`${I}%`},title:`Recommended for this machine: ${v(E)}`,"aria-hidden":`true`,children:[(0,f.jsx)(`span`,{className:`gz-budget-marker-arrow`,children:`▲`}),(0,f.jsxs)(`span`,{className:`gz-budget-marker-label`,children:[`Auto · `,v(E)]})]})]}),(0,f.jsxs)(`div`,{className:`gz-budget-scale muted small`,children:[(0,f.jsx)(`span`,{children:v(A)}),(0,f.jsx)(`span`,{children:v(j)})]})]}),P&&(0,f.jsx)(`output`,{className:`muted small engine-memory-budget-warning`,children:`Above what we'd pick for this machine. Models will still load, but the rest of the system has less to work with — expect things to feel slower before anything fails outright.`}),(0,f.jsxs)(`div`,{className:`engine-memory-budget-actions`,children:[(0,f.jsx)(`button`,{type:`button`,onClick:()=>void T(N?null:M),disabled:y||!F,children:y?`Saving…`:`Save`}),a&&(0,f.jsx)(`button`,{type:`button`,onClick:()=>void T(null),disabled:y,children:`Back to automatic`})]}),S&&(0,f.jsx)(`p`,{className:`muted small`,style:{marginTop:`0.5rem`},children:S}),s&&(0,f.jsx)(b,{status:e,onSaved:t})]})}function b({status:e,onSaved:t}){let n=e.ramSpillover,[i,a]=(0,d.useState)(!1),[o,s]=(0,d.useState)(null),c=(0,d.useCallback)(async e=>{a(!0),s(null);try{await r.updateEngineRamSpillover(e),await t()}catch(e){s(`Could not save: ${e instanceof Error?e.message:String(e)}`)}finally{a(!1)}},[t]);if(!n)return null;let l=n.overridden?n.allowed?`spill`:`card`:`auto`;return(0,f.jsxs)(`div`,{className:`engine-spillover`,children:[(0,f.jsx)(`h4`,{children:`When a second model won't fit the graphics card`}),(0,f.jsx)(`p`,{className:`muted small`,children:`Gezel can unload the model you haven't used recently, or keep both loaded by spilling into system memory. Spilling keeps everything available but slows every model sharing the card — most noticeably with several chats or tasks running at once. A single model larger than the card always uses system memory; this only applies once more than one is loaded.`}),(0,f.jsxs)(`fieldset`,{className:`gz-tray engine-spillover-tray`,children:[(0,f.jsx)(`legend`,{className:`sr-only`,children:`When a second model won't fit the graphics card`}),[{id:`auto`,label:`Automatic`,value:null},{id:`card`,label:`Unload one`,value:!1},{id:`spill`,label:`Use system memory`,value:!0}].map(e=>(0,f.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":l===e.id,className:`gz-key${l===e.id?` gz-key-active`:``}`,disabled:i,onClick:()=>void c(e.value),children:e.label},e.id))]}),(0,f.jsxs)(`p`,{className:`muted small`,children:[`Automatic unloads one model so concurrent models stay within graphics memory. Choose Use system memory only if you explicitly prefer avoiding reloads. On this machine that means`,` `,n.auto?`using system memory`:`unloading one`,`.`]}),o&&(0,f.jsx)(`p`,{className:`error`,children:o})]})}function x(e){return`${(e/1024**3).toFixed(1)} GB`}function S({provider:e,pollMs:t=2e3}){let[n,i]=(0,d.useState)(null),[a,o]=(0,d.useState)(null),s=(0,d.useCallback)(async()=>{try{i(await r.getEngineStatus()),o(null)}catch(e){o(e instanceof Error?e.message:String(e))}},[]);if((0,d.useEffect)(()=>{let e=!1,n=async()=>{try{let t=await r.getEngineStatus();if(e)return;i(t),o(null)}catch(t){if(e)return;o(t instanceof Error?t.message:String(t))}};n();let a=setInterval(()=>void n(),t);return()=>{e=!0,clearInterval(a)}},[t]),a)return(0,f.jsxs)(`div`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:[`Engine status unavailable: `,a]});if(!n||!n.enforced)return null;let c=n.budgetBytes>0?n.committedBytes/n.budgetBytes:0,l=n.entries.filter(t=>t.provider===e),u=c>1;return(0,f.jsxs)(`div`,{style:{border:`1px solid var(--gz-color-border, #2c2c2c)`,borderRadius:6,padding:`10px 14px`,marginBottom:`1rem`,background:`var(--gz-color-surface, transparent)`,fontSize:13},children:[(0,f.jsx)(`div`,{style:{marginBottom:6,fontWeight:500},children:`Engine memory budget`}),(0,f.jsx)(`div`,{style:{height:8,width:`100%`,borderRadius:4,background:`var(--gz-color-border, #2c2c2c)`,overflow:`hidden`,marginBottom:6},children:(0,f.jsx)(`div`,{style:{height:`100%`,width:`${Math.min(100,Math.round(c*100))}%`,background:u?`var(--warning)`:`var(--success)`,transition:`width 0.4s ease-out`}})}),(0,f.jsxs)(`div`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:[x(n.committedBytes),` of `,x(n.budgetBytes),` used`,n.pools?.kind===`discrete-gpu`&&n.pools.vramBytes>0?(0,f.jsxs)(f.Fragment,{children:[` `,`(`,x(n.pools.vramBytes),` graphics + `,x(n.pools.ramShareBytes),` system)`]}):null,l.length>0?(0,f.jsxs)(f.Fragment,{children:[` · `,l.map(e=>`${e.replicaIdx===0?``:`${e.replicaIdx+1}× `}${e.modelId} (${x(e.residentBytes)})`).join(` · `)]}):null]}),(0,f.jsx)(y,{status:n,onSaved:s})]})}function C({provider:e,modelId:t,config:n,onConfigChanged:i}){let a=n?.localEngineReplicasMax??4,o=n?.localEngineReplicas??{},s=t?o[t]??1:1,[c,l]=(0,d.useState)(s),[u,p]=(0,d.useState)(`idle`);(0,d.useEffect)(()=>{l(s)},[s]);let m=(0,d.useCallback)(async n=>{if(!t)return;let s=Math.max(1,Math.min(a,n));l(s),p(`saving`);try{let n={...o,[t]:s};i(await r.updateConfig({localEngineReplicas:n})),await r.reconcileEnginePool({provider:e,clones:{[t]:s}}),p(`saved`),setTimeout(()=>p(`idle`),1200)}catch{p(`idle`)}},[t,a,e,o,i]);return t?(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`,padding:`0.5rem 0`,fontSize:13},children:[(0,f.jsxs)(`span`,{style:{minWidth:220},children:[`Clones of `,(0,f.jsx)(`b`,{children:t}),` kept resident:`]}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void m(c-1),disabled:u===`saving`||c<=1,style:{width:28},children:`−`}),(0,f.jsx)(`span`,{style:{minWidth:28,textAlign:`center`,fontVariantNumeric:`tabular-nums`},children:c}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>void m(c+1),disabled:u===`saving`||c>=a,style:{width:28},children:`+`}),(0,f.jsxs)(`span`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:[`(max `,a,`)`]}),u===`saved`?(0,f.jsx)(`span`,{style:{fontSize:12},children:`saved ✓`}):null]}):(0,f.jsx)(`div`,{style:{fontSize:12,color:`var(--gz-color-muted, #888)`},children:`Pick a default model to enable clone control.`})}function w({model:e}){let t=o(e);return(0,f.jsx)(`td`,{children:(0,f.jsx)(i,{text:a(e),children:(0,f.jsxs)(`span`,{className:`model-size-cell`,children:[s(e.approxSizeBytes),t?(0,f.jsx)(`span`,{className:`muted small model-memory-headline`,children:t}):null]})})})}var T={engine:`llama-cpp`,list:()=>r.listLlamaCppModels(),incomplete:()=>r.listIncompleteLlamaCppModels(),active:()=>r.listLlamaCppActiveInstalls(),install:(...e)=>r.installLlamaCppModel(...e),cancel:e=>r.cancelLlamaCppModelInstall(e),remove:e=>r.deleteLlamaCppModel(e)},E={engine:`mlx`,list:()=>r.listMlxModels(),incomplete:()=>r.listIncompleteMlxModels(),active:()=>r.listMlxActiveInstalls(),install:(e,t,n,i)=>r.installMlxModel(e,e=>t(e.type===`progress`?{...e,bytesWritten:e.bytesWrittenAll,totalBytes:e.totalBytesAll}:e),n,i),cancel:e=>r.cancelMlxModelInstall(e),remove:e=>r.deleteMlxModel(e)};function D(e,t,n){let[r,i]=(0,d.useState)(new Map),a=(0,d.useRef)(r),o=(0,d.useRef)(!0),[s,c]=(0,d.useState)(null),[u,f]=(0,d.useState)(null),[p,m]=(0,d.useState)(null),h=(0,d.useCallback)(e=>{if(!o.current)return;let t=new Map(a.current);e(t),a.current=t,i(t)},[]);(0,d.useEffect)(()=>(o.current=!0,()=>{o.current=!1;for(let e of a.current.values())e.controller?.abort();a.current=new Map}),[]),(0,d.useEffect)(()=>{let n=!1,r,i=new Set,a=async()=>{try{let{installs:r}=await e.active();if(n)return;let a=new Set(r.map(e=>e.catalogId));h(e=>{for(let t of r)e.get(t.catalogId)?.origin!==`local`&&e.set(t.catalogId,{...t,fileIndex:0,fileCount:1,file:``,origin:`remote`});for(let[t,n]of e)n.origin===`remote`&&!a.has(t)&&e.delete(t)}),[...i].some(e=>!a.has(e))&&t(),i=a}catch{}n||(r=setTimeout(()=>void a(),2e3))};return a(),()=>{n=!0,r&&clearTimeout(r)}},[e,t,h]);let g=(0,d.useCallback)((r,i)=>{if(a.current.has(r))return;f(null),m(null);let s=new AbortController;h(e=>e.set(r,{catalogId:r,bytesWritten:0,totalBytes:0,fileIndex:0,fileCount:1,file:``,phase:`downloading`,origin:`local`,controller:s}));let u=()=>o.current&&a.current.get(r)?.controller===s,d=e=>{u()&&(e.type===`done`?e.warning&&c({id:e.id,message:e.warning}):e.type===`error`&&e.mismatch?(h(e=>e.delete(r)),m({catalogId:r,file:e.mismatch.file})):(h(t=>{let n=t.get(r);e.type===`progress`?t.set(r,{...n,bytesWritten:e.bytesWritten,totalBytes:e.totalBytes||n.totalBytes,file:e.file??n.file,fileIndex:e.fileIndex??n.fileIndex,fileCount:e.fileCount??n.fileCount,phase:`downloading`,retrying:void 0,error:void 0}):e.type===`retrying`?t.set(r,{...n,retrying:e}):e.type===`verifying`||e.type===`extracting-metadata`?t.set(r,{...n,phase:e.type,file:e.file??n.file}):e.type===`error`&&t.set(r,{...n,error:e.error,retrying:void 0})}),e.type===`error`&&f(e.error)))};(async()=>{try{await e.install(r,d,s.signal,i?.skipSha?{skipSha:!0}:void 0),u()&&l(e.engine)}catch(e){if(u()&&!s.signal.aborted){let t=`download failed: ${e instanceof Error?e.message:String(e)}`;f(t),h(e=>{let n=e.get(r);e.set(r,{...n,error:n.error??t,retrying:void 0})})}}finally{u()&&h(e=>{let t=e.get(r);t.error?e.set(r,{...t,controller:void 0}):e.delete(r)}),o.current&&(t(),n?.())}})()},[e,t,n,h]);return{installs:r,installWarning:s,setInstallWarning:c,installError:u,setInstallError:f,installMismatch:p,setInstallMismatch:m,startInstall:g,retryInstall:(0,d.useCallback)(e=>{a.current.get(e)?.error&&(a.current.get(e)?.controller?.abort(),h(t=>t.delete(e)),g(e))},[g,h]),cancelInstall:(0,d.useCallback)(t=>{a.current.get(t)?.controller?.abort(),h(e=>e.delete(t)),e.cancel(t).catch(e=>{o.current&&f(`cancel failed: ${e instanceof Error?e.message:String(e)}`)})},[e,h]),downloadAnyway:(0,d.useCallback)(e=>g(e,{skipSha:!0}),[g])}}function O(e,t){let[n,i]=(0,d.useState)([]),[a,o]=(0,d.useState)(null),[s,f]=(0,d.useState)(!0),[p,m]=(0,d.useState)([]),[h,g]=(0,d.useState)([]),[_,v]=(0,d.useState)(null),[y,b]=(0,d.useState)(new Map),[x,S]=(0,d.useState)([]),C=(0,d.useRef)([]),w=(0,d.useRef)(null),T=(0,d.useRef)(!0);(0,d.useEffect)(()=>(T.current=!0,()=>{T.current=!1}),[]);let E=(0,d.useCallback)(async()=>{try{let e=await r.listModelFitness();if(!T.current)return;b(new Map(e.records.map(e=>[e.key,e]))),S(e.probing),C.current=e.probing}catch{}},[]),O=(0,d.useCallback)(()=>{if(!T.current)return Promise.resolve();if(w.current)return w.current;f(!0);let t=(async()=>{try{let t=await e.list();if(!T.current)return;i(t.models),g(t.unrecognized??[]),o(null)}catch(e){T.current&&o(e instanceof Error?e.message:String(e))}finally{T.current&&f(!1)}E();try{let t=await e.incomplete();T.current&&m(t.incomplete??[])}catch{}})();return w.current=t,t.then(()=>{w.current===t&&(w.current=null)}),t},[e,E]);return(0,d.useEffect)(()=>{O();let t=t=>{c(t)===e.engine&&O()};return window.addEventListener(u,t),()=>window.removeEventListener(u,t)},[e,O]),(0,d.useEffect)(()=>{let e=!1,t,n=async()=>{await E(),e||(t=setTimeout(()=>void n(),C.current.length?2e3:15e3))};return n(),()=>{e=!0,t&&clearTimeout(t)}},[E]),{models:n,modelsError:a,modelsLoading:s,incomplete:p,unrecognized:h,toDelete:_,setToDelete:v,fitness:y,probing:x,refreshFitness:E,refresh:O,deleteOne:(0,d.useCallback)(async()=>{let n=_;if(n){v(null),o(null),i(e=>e.filter(e=>e.id!==n)),m(e=>e.filter(e=>e.id!==n)),g(e=>e.filter(e=>e.id!==n));try{if(await e.remove(n),!T.current)return;l(e.engine),await O(),t?.()}catch(e){await O(),T.current&&o(`delete failed: ${e instanceof Error?e.message:String(e)}`)}}},[e,_,O,t]),...D(e,O,t)}}export{C as a,w as i,T as n,S as o,E as r,O as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-C0I7spBl.js";var r=e(t(),1),i=`gezel:copilot-availability-changed`,a=null,o=null;function s(e){return!e&&a?Promise.resolve(a):(!e&&o||(o=n.getCopilotStatus().then(e=>(a=e,e)).catch(()=>null).finally(()=>{o=null})),o)}function c(){a=null,window.dispatchEvent(new CustomEvent(i))}function l(){let[e,t]=(0,r.useState)(a);return(0,r.useEffect)(()=>{let e=!1,n=n=>{s(n).then(n=>{e||t(n)})};n(!1);let r=()=>n(!0);return window.addEventListener(i,r),()=>{e=!0,window.removeEventListener(i,r)}},[]),e}export{l as n,c as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-CmrgM5Rf.js";var r=e(t(),1),i=`gezel:copilot-availability-changed`,a=null,o=null;function s(e){return!e&&a?Promise.resolve(a):(!e&&o||(o=n.getCopilotStatus().then(e=>(a=e,e)).catch(()=>null).finally(()=>{o=null})),o)}function c(){a=null,window.dispatchEvent(new CustomEvent(i))}function l(){let[e,t]=(0,r.useState)(a);return(0,r.useEffect)(()=>{let e=!1,n=n=>{s(n).then(n=>{e||t(n)})};n(!1);let r=()=>n(!0);return window.addEventListener(i,r),()=>{e=!0,window.removeEventListener(i,r)}},[]),e}export{l as n,c as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-C0I7spBl.js";var r=e(t(),1),i=5e3,a=3e4,o=`gezel:diffpacks-changed`;function s(e){let t=e instanceof Error?e.message:String(e);if(!t.includes(`drifted`))return null;let n=t.match(/"paths"\s*:\s*(\[[^\]]*\])/);if(!n)return[];try{let e=JSON.parse(n[1]);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function c(e){let[t,c]=(0,r.useState)([]),[l,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)(``),p=(0,r.useCallback)(async()=>{try{let t=await n.listDiffpacks(e);c(t.diffpacks)}catch{}finally{u(!0)}},[e]),m=t.some(e=>e.status===`drafting`);return(0,r.useEffect)(()=>{p();let t=window.setInterval(()=>void p(),m?i:a),n=t=>{t.detail?.projectId===e&&p()};return window.addEventListener(o,n),()=>{window.clearInterval(t),window.removeEventListener(o,n)}},[p,e,m]),{diffpacks:t,loaded:l,busy:d,refresh:p,apply:(0,r.useCallback)(async(t,r={})=>{f(t);try{let i=await n.applyDiffpack(e,t,r);await p(),window.dispatchEvent(new CustomEvent(o,{detail:{projectId:e}}));let a=i.results.filter(e=>!e.ok);return{ok:i.ok,drifted:[],message:i.ok?`Applied ${i.results.length} file${i.results.length===1?``:`s`}.`:`Couldn’t apply: ${a[0]?.error??`the change didn’t fit the current file.`}`}}catch(e){let t=s(e);return t?{ok:!1,drifted:t,message:t.length>0?`${t.join(`, `)} changed since this was drafted.`:`Some files changed since this was drafted.`}:{ok:!1,drifted:[],message:e instanceof Error?e.message:String(e)}}finally{f(``)}},[e,p]),dismiss:(0,r.useCallback)(async t=>{f(t);try{return await n.dismissDiffpack(e,t),await p(),null}catch(e){return e instanceof Error?e.message:String(e)}finally{f(``)}},[e,p])}}function l(e){let[t,i]=(0,r.useState)(0);return(0,r.useEffect)(()=>{if(!e)return;let t=!1,r=()=>{n.listDiffpacks(e).then(e=>{t||i(e.diffpacks.length)}).catch(()=>{})};r();let s=t=>{t.detail?.projectId===e&&r()};window.addEventListener(o,s);let c=window.setInterval(r,a);return()=>{t=!0,window.clearInterval(c),window.removeEventListener(o,s)}},[e]),t}export{c as n,l as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-CmrgM5Rf.js";var r=e(t(),1),i=5e3,a=3e4,o=`gezel:diffpacks-changed`;function s(e){let t=e instanceof Error?e.message:String(e);if(!t.includes(`drifted`))return null;let n=t.match(/"paths"\s*:\s*(\[[^\]]*\])/);if(!n)return[];try{let e=JSON.parse(n[1]);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function c(e){let[t,c]=(0,r.useState)([]),[l,u]=(0,r.useState)(!1),[d,f]=(0,r.useState)(``),p=(0,r.useCallback)(async()=>{try{let t=await n.listDiffpacks(e);c(t.diffpacks)}catch{}finally{u(!0)}},[e]),m=t.some(e=>e.status===`drafting`);return(0,r.useEffect)(()=>{p();let t=window.setInterval(()=>void p(),m?i:a),n=t=>{t.detail?.projectId===e&&p()};return window.addEventListener(o,n),()=>{window.clearInterval(t),window.removeEventListener(o,n)}},[p,e,m]),{diffpacks:t,loaded:l,busy:d,refresh:p,apply:(0,r.useCallback)(async(t,r={})=>{f(t);try{let i=await n.applyDiffpack(e,t,r);await p(),window.dispatchEvent(new CustomEvent(o,{detail:{projectId:e}}));let a=i.results.filter(e=>!e.ok);return{ok:i.ok,drifted:[],message:i.ok?`Applied ${i.results.length} file${i.results.length===1?``:`s`}.`:`Couldn’t apply: ${a[0]?.error??`the change didn’t fit the current file.`}`}}catch(e){let t=s(e);return t?{ok:!1,drifted:t,message:t.length>0?`${t.join(`, `)} changed since this was drafted.`:`Some files changed since this was drafted.`}:{ok:!1,drifted:[],message:e instanceof Error?e.message:String(e)}}finally{f(``)}},[e,p]),dismiss:(0,r.useCallback)(async t=>{f(t);try{return await n.dismissDiffpack(e,t),await p(),null}catch(e){return e instanceof Error?e.message:String(e)}finally{f(``)}},[e,p])}}function l(e){let[t,i]=(0,r.useState)(0);return(0,r.useEffect)(()=>{if(!e)return;let t=!1,r=()=>{n.listDiffpacks(e).then(e=>{t||i(e.diffpacks.length)}).catch(()=>{})};r();let s=t=>{t.detail?.projectId===e&&r()};window.addEventListener(o,s);let c=window.setInterval(r,a);return()=>{t=!0,window.clearInterval(c),window.removeEventListener(o,s)}},[e]),t}export{c as n,l as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-C0I7spBl.js";import{c as r,t as i}from"./gitCopy-Dcjz17cJ.js";var a=e(t(),1),o=null,s=`gezel:git-changed`;function c(e){window.dispatchEvent(new CustomEvent(s,{detail:{projectId:e}}))}function l(e,t={}){let[s,l]=(0,a.useState)(!1),u=(0,a.useRef)(t);return u.current=t,{sync:(0,a.useCallback)(async()=>{if(o===e)return null;o=e,l(!0);try{let t=await n.syncProjectGit(e),a=u.current;switch(t.state){case`synced`:a.onToast?.(`ok`,r(t));break;case`needs-save`:a.onNeedsSave?.();break;case`conflicts`:a.onConflicts?.(t);break;case`auth`:a.onToast?.(`err`,i.syncAuth),a.onAuth?.();break;case`offline`:a.onToast?.(`err`,i.syncOffline);break;default:a.onToast?.(`err`,t.message||i.syncGenericError)}return c(e),t}catch(e){return u.current.onToast?.(`err`,`Sync failed: ${e instanceof Error?e.message:String(e)}`),null}finally{o=null,l(!1)}},[e]),syncing:s}}export{c as n,l as r,s as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-CmrgM5Rf.js";import{c as r,t as i}from"./gitCopy-Dcjz17cJ.js";var a=e(t(),1),o=null,s=`gezel:git-changed`;function c(e){window.dispatchEvent(new CustomEvent(s,{detail:{projectId:e}}))}function l(e,t={}){let[s,l]=(0,a.useState)(!1),u=(0,a.useRef)(t);return u.current=t,{sync:(0,a.useCallback)(async()=>{if(o===e)return null;o=e,l(!0);try{let t=await n.syncProjectGit(e),a=u.current;switch(t.state){case`synced`:a.onToast?.(`ok`,r(t));break;case`needs-save`:a.onNeedsSave?.();break;case`conflicts`:a.onConflicts?.(t);break;case`auth`:a.onToast?.(`err`,i.syncAuth),a.onAuth?.();break;case`offline`:a.onToast?.(`err`,i.syncOffline);break;default:a.onToast?.(`err`,t.message||i.syncGenericError)}return c(e),t}catch(e){return u.current.onToast?.(`err`,`Sync failed: ${e instanceof Error?e.message:String(e)}`),null}finally{o=null,l(!1)}},[e]),syncing:s}}export{c as n,l as r,s as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-C0I7spBl.js";var r=e(t(),1);function i(){let[e,t]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let e=!1;n.getConfig().then(n=>{e||t(n.showWorkInProgressFeatures===!0)}).catch(()=>{});let r=e=>{let n=e.detail;typeof n?.showWorkInProgressFeatures==`boolean`&&t(n.showWorkInProgressFeatures)};return window.addEventListener(`gezel:config-updated`,r),()=>{e=!0,window.removeEventListener(`gezel:config-updated`,r)}},[]),e}export{i as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-CmrgM5Rf.js";var r=e(t(),1);function i(){let[e,t]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let e=!1;n.getConfig().then(n=>{e||t(n.showWorkInProgressFeatures===!0)}).catch(()=>{});let r=e=>{let n=e.detail;typeof n?.showWorkInProgressFeatures==`boolean`&&t(n.showWorkInProgressFeatures)};return window.addEventListener(`gezel:config-updated`,r),()=>{e=!0,window.removeEventListener(`gezel:config-updated`,r)}},[]),e}export{i as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-C0I7spBl.js";var r=e(t(),1),i=null,a=null;function o(){return i===null?a||(a=n.getMemoryProfile().then(e=>(i=e.totalRamBytes,i)).catch(()=>null).finally(()=>{a=null}),a):Promise.resolve(i)}function s(){let[e,t]=(0,r.useState)(i);return(0,r.useEffect)(()=>{let e=!1;return o().then(n=>{e||t(n)}),()=>{e=!0}},[]),e}export{s as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-CEpd2cAX.js";import{t as n}from"./api-CmrgM5Rf.js";var r=e(t(),1),i=null,a=null;function o(){return i===null?a||(a=n.getMemoryProfile().then(e=>(i=e.totalRamBytes,i)).catch(()=>null).finally(()=>{a=null}),a):Promise.resolve(i)}function s(){let[e,t]=(0,r.useState)(i);return(0,r.useEffect)(()=>{let e=!1;return o().then(n=>{e||t(n)}),()=>{e=!0}},[]),e}export{s as t};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import"./doc-C2Ph2FWI.js";import{t}from"./jszip.min-DhiFe-R7.js";import"./chunk-7AWFHP5U-MiVVPFTx.js";import"./chunk-DXYWKZ52-zxe8pjH4.js";import{J as n,U as r,X as i,b as a,et as o,it as s,j as c,k as l,rt as u,st as d,v as f,y as p}from"./chunk-S5PCVMKU-Df5XzhSE.js";import{a as m,c as h,d as g,f as ee,h as _,i as v,l as te,m as ne,p as y,r as b,s as x,t as re,u as ie}from"./chunk-ATWVNF7D-CYuW1Yc6.js";import{i as ae,n as S,r as C,t as w}from"./chunk-JU2RHXUB-ClblWDJZ.js";import{t as T}from"./chunk-ILCJ3WFD-CLZxw4Ge.js";var E=e(t(),1),D=d();function O(e){return e.some(e=>e.type===`superscript`||e.type===`subscript`||`children`in e&&Array.isArray(e.children)&&O(e.children))}var k=re+1;function A(e,t){return e*k+t}function j(e){return Math.floor(e/k)}function oe(e){return e-j(e)*k}function M(e){return e.children.map(e=>e.children.map(e=>C(e.children)))}function N(e){return e.children.map(e=>e.children.map(e=>O(e.children)?e.children:void 0))}function P(e){return e===`formulas`||e===`loose`?e:`values`}function F(e){let t=[],n=null;for(let r of e){if(r.type===`heading`){n=r;continue}if(r.type!==`table`)continue;let e=n?.templateAnnotation?.params??{},i=typeof e.sheet==`string`&&e.sheet!==``?e.sheet:null;t.push({table:r,headingText:n?C(n.children):``,params:e,sheetKey:i,role:P(e.role)}),n=null}return t}function I(e){let t=[],n=new Map;for(let r of e){if(r.sheetKey!==null){let e=n.get(r.sheetKey);e||(e={candidate:r.sheetKey,entries:[],anchored:!0},n.set(r.sheetKey,e),t.push(e)),e.entries.push(r);continue}t.push({candidate:r.headingText||null,entries:[r],anchored:!1})}return t}function L(e,t,n,r,i){let a=A(t,n);e.has(a)&&i.push(x(t,n)),e.set(a,r)}function R(e,t,n,r){let i=A(t,n),a=e.get(i);e.set(i,{text:a?.text??``,formula:r})}function z(e){let t=e.trim();return t.startsWith(`=`)?t.slice(1):t}function B(e,t,n,r,i){let a=M(e.table),o=N(e.table),s=e.params.anchor??`A1`,c=g(s);c||=(n.push(`Sheet "${r}": anchor "${s}" is not a valid cell reference; placed at A1 instead.`),{row:0,col:0});let l=a.length,u=a.reduce((e,t)=>Math.max(e,t.length),0);(c.row+l-1>1048575||c.col+u-1>16383)&&(n.push(`Sheet "${r}": a table anchored at ${s} runs past the end of the sheet; placed at A1 instead.`),c={row:0,col:0});let d=e.params.titleAnchor;if(d!==void 0&&e.headingText!==``){let n=g(d);n&&L(t,n.row,n.col,{text:e.headingText},i)}for(let e=0;e<a.length;e++){let n=a[e];for(let r=0;r<n.length;r++){let a=n[r];if(a===``)continue;let s=o[e]?.[r];L(t,c.row+e,c.col+r,s?{text:a,rich:s}:{text:a},i)}}}function V(e,t,n,r){let i=M(e.table);if(i.length<2)return;let a=e.params.anchor??`A1`,o=g(a);if(!o){n.push(`Sheet "${r}": formulas block anchor "${a}" is not a valid cell reference; skipped.`);return}let s=i[0].map(e=>{let t=e.trim();if(!/^[A-Za-z]{1,3}$/.test(t))return-1;let n=v(t);return n>=0&&n<=16383?n:-1});for(let e=1;e<i.length;e++){let n=i[e];for(let r=0;r<n.length;r++){let i=n[r];if(i.trim()===``)continue;let a=s[r],c=a!==void 0&&a>=0?a:o.col+r,l=o.row+e-1;l>1048575||R(t,l,c,z(i))}}}function H(e,t,n,r,i){let a=M(e.table),o=N(e.table),s=0;for(let e=1;e<a.length;e++){let n=a[e],r=(n[0]??``).trim();if(r===``)continue;let c=g(r);if(!c){s++;continue}let l=n[1]??``,u=z(n[2]??``),d=o[e]?.[1],f={text:l};u!==``&&(f.formula=u),d&&(f.rich=d),L(t,c.row,c.col,f,i)}s>0&&n.push(`Sheet "${r}": ${s} loose-cell row(s) had an invalid cell reference and were skipped.`)}function U(e,t){let n=[],r=I(F(e.children)),i=new Set,a=[];r.forEach((e,r)=>{let o=`${t.sheetNamePrefix}${r+1}`,s=t.sanitize(e.candidate??o,i,o),c=new Map,l=[];for(let t of e.entries)t.role===`values`&&B(t,c,n,s,l);for(let t of e.entries)t.role===`formulas`&&V(t,c,n,s);for(let t of e.entries)t.role===`loose`&&H(t,c,n,s,l);if(l.length>0){let e=l.slice(0,5).join(`, `),t=l.length>5?`, and more`:``;n.push(`Sheet "${s}": ${l.length} overlapping cell(s) (${e}${t}); the later block won.`)}a.push({name:s,cells:c,anchored:e.anchored})});let o=0;for(let e of a)o+=e.cells.size;return{sheets:a,warnings:n,cellCount:o}}var W=/^-?\d+(\.\d+)?$/;function G(e){if(!W.test(e))return!1;let t=e.startsWith(`-`)?e.slice(1):e,[n]=t.split(`.`);return n.length>1&&n.startsWith(`0`)||t.replace(`.`,``).replace(/^0+/,``).length>15?!1:Number.isFinite(Number(e))}function K(e){return e.replace(/[[\]:*?/\\]/g,``).trim().slice(0,31).trim().replace(/^'+|'+$/g,``)}function q(e,t,n){let r=K(e)||K(n)||`Sheet`,i=r,a=2;for(;t.has(i.toLocaleLowerCase(`en-US`));){let e=String(a++);r=r.slice(0,31-e.length),i=`${r}${e}`}return t.add(i.toLocaleLowerCase(`en-US`)),i}var se=/^#[A-Z0-9_/]+[!?]?$/;function ce(e,t,n){let{text:r,formula:i}=e;if(i!==void 0&&i!==``){let e=`<f>${w(i)}</f>`;return r===``?`<c r="${t}">${e}</c>`:G(r)?`<c r="${t}">${e}<v>${w(r)}</v></c>`:se.test(r)?`<c r="${t}" t="e">${e}<v>${w(r)}</v></c>`:`<c r="${t}" t="str">${e}<v>${w(r)}</v></c>`}return n&&G(r)?`<c r="${t}"><v>${w(r)}</v></c>`:e.rich?`<c r="${t}" t="inlineStr"><is>${le(e.rich)}</is></c>`:`<c r="${t}" t="inlineStr"><is><t xml:space="preserve">${w(r)}</t></is></c>`}function le(e){let t=[],n=(e,n)=>{if(e===``)return;let r=n?`<rPr><vertAlign val="${n}"/></rPr>`:``;t.push(`<r>${r}<t xml:space="preserve">${w(e)}</t></r>`)},r=(e,t)=>{for(let i of e)i.type===`superscript`||i.type===`subscript`?r(i.children,i.type===`superscript`?`superscript`:`subscript`):`children`in i&&Array.isArray(i.children)?r(i.children,t):n(ae(i),t)};return r(e,null),t.join(``)}function ue(e,t){let n=[...e.cells.keys()].sort((e,t)=>e-t),r=[],i=0,a=0,o=0;for(;o<n.length;){let s=j(n[o]),c=``;for(;o<n.length&&j(n[o])===s;){let r=n[o],i=oe(r);i>a&&(a=i),c+=ce(e.cells.get(r),`${m(i)}${s+1}`,t),o++}s>i&&(i=s),r.push(`<row r="${s+1}">${c}</row>`)}let s=n.length>0?`A1:${m(a)}${i+1}`:`A1`;return`${S()}
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import"./doc-BHcGsJZd.js";import{t}from"./jszip.min-DhiFe-R7.js";import"./chunk-7AWFHP5U-MiVVPFTx.js";import"./chunk-DXYWKZ52-DMKPZnpo.js";import{J as n,U as r,X as i,b as a,et as o,it as s,j as c,k as l,rt as u,st as d,v as f,y as p}from"./chunk-S5PCVMKU-Df5XzhSE.js";import{a as m,c as h,d as g,f as ee,h as _,i as v,l as te,m as ne,p as y,r as b,s as x,t as re,u as ie}from"./chunk-ATWVNF7D-CKIWh7bN.js";import{i as ae,n as S,r as C,t as w}from"./chunk-JU2RHXUB-ClblWDJZ.js";import{t as T}from"./chunk-ILCJ3WFD-CLZxw4Ge.js";var E=e(t(),1),D=d();function O(e){return e.some(e=>e.type===`superscript`||e.type===`subscript`||`children`in e&&Array.isArray(e.children)&&O(e.children))}var k=re+1;function A(e,t){return e*k+t}function j(e){return Math.floor(e/k)}function oe(e){return e-j(e)*k}function M(e){return e.children.map(e=>e.children.map(e=>C(e.children)))}function N(e){return e.children.map(e=>e.children.map(e=>O(e.children)?e.children:void 0))}function P(e){return e===`formulas`||e===`loose`?e:`values`}function F(e){let t=[],n=null;for(let r of e){if(r.type===`heading`){n=r;continue}if(r.type!==`table`)continue;let e=n?.templateAnnotation?.params??{},i=typeof e.sheet==`string`&&e.sheet!==``?e.sheet:null;t.push({table:r,headingText:n?C(n.children):``,params:e,sheetKey:i,role:P(e.role)}),n=null}return t}function I(e){let t=[],n=new Map;for(let r of e){if(r.sheetKey!==null){let e=n.get(r.sheetKey);e||(e={candidate:r.sheetKey,entries:[],anchored:!0},n.set(r.sheetKey,e),t.push(e)),e.entries.push(r);continue}t.push({candidate:r.headingText||null,entries:[r],anchored:!1})}return t}function L(e,t,n,r,i){let a=A(t,n);e.has(a)&&i.push(x(t,n)),e.set(a,r)}function R(e,t,n,r){let i=A(t,n),a=e.get(i);e.set(i,{text:a?.text??``,formula:r})}function z(e){let t=e.trim();return t.startsWith(`=`)?t.slice(1):t}function B(e,t,n,r,i){let a=M(e.table),o=N(e.table),s=e.params.anchor??`A1`,c=g(s);c||=(n.push(`Sheet "${r}": anchor "${s}" is not a valid cell reference; placed at A1 instead.`),{row:0,col:0});let l=a.length,u=a.reduce((e,t)=>Math.max(e,t.length),0);(c.row+l-1>1048575||c.col+u-1>16383)&&(n.push(`Sheet "${r}": a table anchored at ${s} runs past the end of the sheet; placed at A1 instead.`),c={row:0,col:0});let d=e.params.titleAnchor;if(d!==void 0&&e.headingText!==``){let n=g(d);n&&L(t,n.row,n.col,{text:e.headingText},i)}for(let e=0;e<a.length;e++){let n=a[e];for(let r=0;r<n.length;r++){let a=n[r];if(a===``)continue;let s=o[e]?.[r];L(t,c.row+e,c.col+r,s?{text:a,rich:s}:{text:a},i)}}}function V(e,t,n,r){let i=M(e.table);if(i.length<2)return;let a=e.params.anchor??`A1`,o=g(a);if(!o){n.push(`Sheet "${r}": formulas block anchor "${a}" is not a valid cell reference; skipped.`);return}let s=i[0].map(e=>{let t=e.trim();if(!/^[A-Za-z]{1,3}$/.test(t))return-1;let n=v(t);return n>=0&&n<=16383?n:-1});for(let e=1;e<i.length;e++){let n=i[e];for(let r=0;r<n.length;r++){let i=n[r];if(i.trim()===``)continue;let a=s[r],c=a!==void 0&&a>=0?a:o.col+r,l=o.row+e-1;l>1048575||R(t,l,c,z(i))}}}function H(e,t,n,r,i){let a=M(e.table),o=N(e.table),s=0;for(let e=1;e<a.length;e++){let n=a[e],r=(n[0]??``).trim();if(r===``)continue;let c=g(r);if(!c){s++;continue}let l=n[1]??``,u=z(n[2]??``),d=o[e]?.[1],f={text:l};u!==``&&(f.formula=u),d&&(f.rich=d),L(t,c.row,c.col,f,i)}s>0&&n.push(`Sheet "${r}": ${s} loose-cell row(s) had an invalid cell reference and were skipped.`)}function U(e,t){let n=[],r=I(F(e.children)),i=new Set,a=[];r.forEach((e,r)=>{let o=`${t.sheetNamePrefix}${r+1}`,s=t.sanitize(e.candidate??o,i,o),c=new Map,l=[];for(let t of e.entries)t.role===`values`&&B(t,c,n,s,l);for(let t of e.entries)t.role===`formulas`&&V(t,c,n,s);for(let t of e.entries)t.role===`loose`&&H(t,c,n,s,l);if(l.length>0){let e=l.slice(0,5).join(`, `),t=l.length>5?`, and more`:``;n.push(`Sheet "${s}": ${l.length} overlapping cell(s) (${e}${t}); the later block won.`)}a.push({name:s,cells:c,anchored:e.anchored})});let o=0;for(let e of a)o+=e.cells.size;return{sheets:a,warnings:n,cellCount:o}}var W=/^-?\d+(\.\d+)?$/;function G(e){if(!W.test(e))return!1;let t=e.startsWith(`-`)?e.slice(1):e,[n]=t.split(`.`);return n.length>1&&n.startsWith(`0`)||t.replace(`.`,``).replace(/^0+/,``).length>15?!1:Number.isFinite(Number(e))}function K(e){return e.replace(/[[\]:*?/\\]/g,``).trim().slice(0,31).trim().replace(/^'+|'+$/g,``)}function q(e,t,n){let r=K(e)||K(n)||`Sheet`,i=r,a=2;for(;t.has(i.toLocaleLowerCase(`en-US`));){let e=String(a++);r=r.slice(0,31-e.length),i=`${r}${e}`}return t.add(i.toLocaleLowerCase(`en-US`)),i}var se=/^#[A-Z0-9_/]+[!?]?$/;function ce(e,t,n){let{text:r,formula:i}=e;if(i!==void 0&&i!==``){let e=`<f>${w(i)}</f>`;return r===``?`<c r="${t}">${e}</c>`:G(r)?`<c r="${t}">${e}<v>${w(r)}</v></c>`:se.test(r)?`<c r="${t}" t="e">${e}<v>${w(r)}</v></c>`:`<c r="${t}" t="str">${e}<v>${w(r)}</v></c>`}return n&&G(r)?`<c r="${t}"><v>${w(r)}</v></c>`:e.rich?`<c r="${t}" t="inlineStr"><is>${le(e.rich)}</is></c>`:`<c r="${t}" t="inlineStr"><is><t xml:space="preserve">${w(r)}</t></is></c>`}function le(e){let t=[],n=(e,n)=>{if(e===``)return;let r=n?`<rPr><vertAlign val="${n}"/></rPr>`:``;t.push(`<r>${r}<t xml:space="preserve">${w(e)}</t></r>`)},r=(e,t)=>{for(let i of e)i.type===`superscript`||i.type===`subscript`?r(i.children,i.type===`superscript`?`superscript`:`subscript`):`children`in i&&Array.isArray(i.children)?r(i.children,t):n(ae(i),t)};return r(e,null),t.join(``)}function ue(e,t){let n=[...e.cells.keys()].sort((e,t)=>e-t),r=[],i=0,a=0,o=0;for(;o<n.length;){let s=j(n[o]),c=``;for(;o<n.length&&j(n[o])===s;){let r=n[o],i=oe(r);i>a&&(a=i),c+=ce(e.cells.get(r),`${m(i)}${s+1}`,t),o++}s>i&&(i=s),r.push(`<row r="${s+1}">${c}</row>`)}let s=n.length>0?`A1:${m(a)}${i+1}`:`A1`;return`${S()}
2
2
  <worksheet xmlns="${c}" xmlns:r="${l}"><dimension ref="${s}"/><sheetData>${r.join(``)}</sheetData></worksheet>`}function de(e,t){let n=e.map((e,t)=>`<sheet name="${w(e.name)}" sheetId="${t+1}" r:id="rId${t+1}"/>`).join(``),r=t?`<calcPr calcId="0" fullCalcOnLoad="1"/>`:``;return`${S()}
3
3
  <workbook xmlns="${c}" xmlns:r="${l}"><sheets>${n}</sheets>${r}</workbook>`}function fe(){return`${S()}
4
4
  <styleSheet xmlns="${c}"><fonts count="1"><font><sz val="11"/><name val="Calibri"/></font></fonts><fills count="1"><fill><patternFill patternType="none"/></fill></fills><borders count="1"><border/></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/></cellXfs></styleSheet>`}async function pe(e,t={}){t.signal?.throwIfAborted();let o=K(t.sheetNamePrefix??`Sheet`)||`Sheet`,s=t.maxCells??1e5;if(!Number.isSafeInteger(s)||s<0)throw RangeError(`maxCells must be a non-negative safe integer`);let c=U(e,{sheetNamePrefix:o,sanitize:q});for(let e of c.warnings)t.onWarning?.(e);if(c.cellCount>s)throw RangeError(`XLSX export exceeds the ${s}-cell safety limit`);let l=c.sheets;l.length===0&&(l=[{name:q(`${o}1`,new Set,`Sheet1`),cells:new Map,anchored:!1}]);let u=l.some(e=>e.anchored),d=t.inferNumericCells??u,m=l.some(e=>{for(let t of e.cells.values())if(t.formula)return!0;return!1}),h=T();return l.forEach((e,n)=>{n&31||t.signal?.throwIfAborted();let r=`xl/worksheets/sheet${n+1}.xml`;h.addPart(r,ue(e,d),a),h.addRelationship(`xl/workbook.xml`,{id:`rId${n+1}`,type:i,target:`worksheets/sheet${n+1}.xml`})}),h.addPart(`xl/styles.xml`,fe(),f),h.addRelationship(`xl/workbook.xml`,{id:`rId${l.length+1}`,type:n,target:`styles.xml`}),h.addPart(`xl/workbook.xml`,de(l,m),p),h.addRelationship(``,{id:`rId1`,type:r,target:`xl/workbook.xml`}),(t.title||t.author)&&h.setCoreProperties({title:t.title,creator:t.author,created:new Date().toISOString(),modified:new Date().toISOString()}),h.toArrayBuffer()}var me=`xl/workbook.xml`,J=class extends Error{constructor(e,t,n,r){super(r),this.name=`XlsxPatchRefusal`,this.code=e,this.sheet=t,this.ref=n}};function he(e){let t=new D.DOMParser().parseFromString(e,`application/xml`),n=t.getElementsByTagName(`parsererror`);if(n.length>0)throw Error(`Invalid XLSX XML part: ${n[0]?.textContent??`parse error`}`);return t}function ge(e,t){let n=new D.XMLSerializer().serializeToString(e);if(n.startsWith(`<?xml`))return n;let r=/^\uFEFF?<\?xml[^>]*\?>\s*/.exec(t);return r?r[0]+n:n}async function Y(e,t){let n=await o(e,t);if(!n)throw Error(`Invalid XLSX package: part "${t}" is missing.`);let r=new TextDecoder().decode(n);return{text:r,doc:he(r)}}function X(e,t){let n=[];for(let r=e.firstChild;r;r=r.nextSibling){if(r.nodeType!==1)continue;let e=r;e.localName===t&&e.namespaceURI===`http://schemas.openxmlformats.org/spreadsheetml/2006/main`&&n.push(e)}return n}function Z(e,t){return X(e,t)[0]??null}function _e(e,t,n){let r=null;for(let e of X(t,`row`)){let t=Number.parseInt(e.getAttribute(`r`)??``,10);if(t===n)return e;Number.isFinite(t)&&t>n&&!r&&(r=e)}let i=e.createElementNS(c,`row`);return i.setAttribute(`r`,String(n)),t.insertBefore(i,r),i}function Q(e,t,n){let r=b(n),i=null;for(let e of X(t,`c`)){let t=e.getAttribute(`r`);if(t===n)return e;t&&b(t)>r&&!i&&(i=e)}let a=e.createElementNS(c,`c`);return a.setAttribute(`r`,n),t.insertBefore(a,i),a}function ve(e,t,n){let r=Z(e,`f`);if(!r)return;let i=r.getAttribute(`t`)===`shared`&&(r.textContent??``).trim()===``;throw new J(i?`shared-formula-follower`:`formula-cell`,t,n,i?`${t}!${n} continues a shared (fill-down) formula; formula cells cannot be patched`:`${t}!${n} holds a formula; formula cells cannot be patched`)}function ye(e,t,n,r,i){if(i===null)return;let a=Number.parseInt(e.getAttribute(`s`)??``,10);if(!Number.isFinite(a))return;let o=t[a];if(!o)return;let s=ie(o.formatCode);if(s===`date`||s===`time`||s===`datetime`)throw new J(`date-value-unsupported`,n,r,`${n}!${r} is date-formatted; date values are not supported by in-place patching`)}function $(e){for(let t of[`v`,`is`])for(let n of X(e,t))e.removeChild(n)}function be(e,t,n){if($(t),n===null){t.removeAttribute(`t`);return}if(typeof n==`number`){t.removeAttribute(`t`);let r=e.createElementNS(c,`v`);r.appendChild(e.createTextNode(String(n))),t.appendChild(r);return}if(typeof n==`boolean`){t.setAttribute(`t`,`b`);let r=e.createElementNS(c,`v`);r.appendChild(e.createTextNode(n?`1`:`0`)),t.appendChild(r);return}t.setAttribute(`t`,`inlineStr`);let r=e.createElementNS(c,`is`),i=e.createElementNS(c,`t`);n!==n.trim()&&i.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),i.appendChild(e.createTextNode(n)),r.appendChild(i),t.appendChild(r)}function xe(e,t,n){let r=Z(e,`f`);if(r&&r.getAttribute(`t`)===`shared`&&(r.textContent??``).trim()!==``)throw new J(`shared-formula-master`,t,n,`${t}!${n} is the master of a shared (fill-down) formula group; replacing it would orphan its followers`)}function Se(e){for(let t of X(e,`f`))e.removeChild(t)}function Ce(e,t,n,r){Se(t),$(t),t.removeAttribute(`t`);let i=e.createElementNS(c,`f`);if(i.appendChild(e.createTextNode(n)),t.appendChild(i),r===void 0)return;let a=e.createElementNS(c,`v`);typeof r==`number`?a.appendChild(e.createTextNode(String(r))):typeof r==`boolean`?(t.setAttribute(`t`,`b`),a.appendChild(e.createTextNode(r?`1`:`0`))):(t.setAttribute(`t`,`str`),a.appendChild(e.createTextNode(r))),t.appendChild(a)}var we=new Set([`oleSize`,`customWorkbookViews`,`pivotCaches`,`smartTagPr`,`smartTagTypes`,`webPublishing`,`fileRecoveryPr`,`webPublishObjects`,`extLst`]);function Te(e){let t=e.documentElement;if(!t)return;let n=Z(t,`calcPr`);if(n){n.setAttribute(`fullCalcOnLoad`,`1`);return}let r=e.createElementNS(c,`calcPr`);r.setAttribute(`fullCalcOnLoad`,`1`);let i=null;for(let e=t.firstChild;e;e=e.nextSibling){if(e.nodeType!==1)continue;let t=e;if(t.namespaceURI===`http://schemas.openxmlformats.org/spreadsheetml/2006/main`&&we.has(t.localName)){i=e;break}}t.insertBefore(r,i)}async function Ee(e,t,n={}){let r=await u(e,n),i=s(r,me,`XLSX`),a=await te(r,i),o=await ee(r),c=new Map(a.map(e=>[e.name,e.path]));for(let e of t){if(!c.has(e.sheet))throw new J(`sheet-missing`,e.sheet,e.ref,`workbook has no sheet named "${e.sheet}"`);if(!g(e.ref))throw new J(`cell-ref-invalid`,e.sheet,e.ref,`"${e.ref}" is not a valid cell reference`);let t=e.value!==void 0,n=e.formula!==void 0;if(t===n)throw new J(`patch-invalid`,e.sheet,e.ref,`${e.sheet}!${e.ref}: a patch carries exactly one of value or formula`);if(n&&e.formula.trim()===``)throw new J(`patch-invalid`,e.sheet,e.ref,`${e.sheet}!${e.ref}: formula must be non-empty`);let r=n?e.cachedValue:e.value;if(typeof r==`number`&&!Number.isFinite(r))throw new J(`number-not-finite`,e.sheet,e.ref,`${e.sheet}!${e.ref}: only finite numbers can be written`)}let l=new Map;for(let e of t){let t=c.get(e.sheet),n=l.get(t);n||(n=await Y(r,t),l.set(t,n));let i=g(e.ref),a=x(i.row,i.col),s=Z(n.doc.documentElement,`sheetData`);if(!s)throw Error(`Invalid worksheet part "${t}": no <sheetData> element.`);let u=_e(n.doc,s,i.row+1),d=Q(n.doc,u,a);e.formula===void 0?(ve(d,e.sheet,a),ye(d,o,e.sheet,a,e.value??null),be(n.doc,d,e.value??null)):(xe(d,e.sheet,a),Ce(n.doc,d,e.formula,e.cachedValue))}if(l.size>0){let e=await Y(r,i);Te(e.doc),l.set(i,e)}let d=await E.default.loadAsync(e);for(let[e,t]of l)d.file(e,ge(t.doc,t.text));return d.generateAsync({type:`arraybuffer`,compression:`DEFLATE`,compressionOptions:{level:6}})}export{x as formatCellRef,h as gridToTables,pe as markdownDocToXlsx,g as parseCellRef,Ee as patchXlsxCellValues,y as xlsxToCellGrids,ne as xlsxToContainer,_ as xlsxToMarkdownDoc};
@@ -7,45 +7,45 @@
7
7
  <!-- External (not inline) so the renderer CSP can use a strict
8
8
  script-src 'self'. Runs before first paint → no theme flash. -->
9
9
  <script src="/theme-init.js"></script>
10
- <script type="module" crossorigin src="/assets/index-DDu8nyO6.js"></script>
10
+ <script type="module" crossorigin src="/assets/index-DivKnJyx.js"></script>
11
11
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CEpd2cAX.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/react-dom-OL4w_gzs.js">
14
- <link rel="modulepreload" crossorigin href="/assets/dist-DOqbRmFj.js">
15
- <link rel="modulepreload" crossorigin href="/assets/dist-CJqyWK6E.js">
16
- <link rel="modulepreload" crossorigin href="/assets/api-C0I7spBl.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/dist-CE5CbmDb.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/dist-BMZhqfv7.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/api-CmrgM5Rf.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/Tabs-jE0Z5Tzd.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/primitives-CWrGZpPI.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/dist-Q59u9cBl.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/DropdownMenu-DlrvEmoV.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/relative-time-B2kBaekd.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/FileTypeIcon-Cwzl1GkZ.js">
23
- <link rel="modulepreload" crossorigin href="/assets/document-companion-aDThLOwl.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/NewPathDialog-BhAZm9dp.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/model-context-DBqdK0PS.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/model-memory-copy-Ds9w1uJE.js">
26
- <link rel="modulepreload" crossorigin href="/assets/StorageCleanupDialog-3kv9-2mT.js">
27
- <link rel="modulepreload" crossorigin href="/assets/poppetje-CfaAvFkE.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/StorageCleanupDialog-CDBjl8JQ.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/poppetje-DvCJO36y.js">
28
28
  <link rel="modulepreload" crossorigin href="/assets/safe-svg-image-NbuPaBIv.js">
29
29
  <link rel="modulepreload" crossorigin href="/assets/ConfirmDialog-Dt1ed4Fh.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/model-inventory-ykSm_IT5.js">
31
- <link rel="modulepreload" crossorigin href="/assets/chunk-O7JILDEF-CqcO1qaI.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/chunk-X7BNDUNI-D14WIvlD.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/chunk-BAOV476U-CEOFYt8X.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/chunk-4VOD55SX-BFSSw0c8.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/chunk-GAZKTT4R-w1SNypWQ.js">
35
- <link rel="modulepreload" crossorigin href="/assets/chunk-UBFT2CDQ-FexGDigd.js">
35
+ <link rel="modulepreload" crossorigin href="/assets/chunk-CW24CH7I-BD0FIooX.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/chunk-XRW6P7IF-BeQQgMVK.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/chunk-7ZAAICW4-BsCpYJH6.js">
38
- <link rel="modulepreload" crossorigin href="/assets/doc-C2Ph2FWI.js">
39
- <link rel="modulepreload" crossorigin href="/assets/markdown-ryKA_OmY.js">
38
+ <link rel="modulepreload" crossorigin href="/assets/doc-BHcGsJZd.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/markdown-CLKH_zzl.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/schemas-BvLZUsGm.js">
41
41
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
42
42
  <link rel="modulepreload" crossorigin href="/assets/inlineIconMarker-BQI2HLeD.js">
43
43
  <link rel="modulepreload" crossorigin href="/assets/chunk-TT6ENR6T-BOA-qiwP.js">
44
- <link rel="modulepreload" crossorigin href="/assets/chunk-6ECMNUIP-BvCy0HUI.js">
44
+ <link rel="modulepreload" crossorigin href="/assets/chunk-6ECMNUIP-D5AA6ozp.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/chunk-DQRELU4S--U9FIVtY.js">
46
- <link rel="modulepreload" crossorigin href="/assets/new-project-meta-ZmDPGYzC.js">
47
- <link rel="modulepreload" crossorigin href="/assets/chunk-AE3IUKMM-mZjzzO8Z.js">
48
- <link rel="stylesheet" crossorigin href="/assets/index-DEDUSiCx.css">
46
+ <link rel="modulepreload" crossorigin href="/assets/new-project-meta-5Y9Blozr.js">
47
+ <link rel="modulepreload" crossorigin href="/assets/chunk-ZSU5DJLX-CrjQf-vs.js">
48
+ <link rel="stylesheet" crossorigin href="/assets/index-DW6qHqhU.css">
49
49
  </head>
50
50
  <body>
51
51
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/gezel-service",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "The Gezel daemon: HTTP API, task runner, sandbox, agent runtime.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -68,18 +68,18 @@
68
68
  "dependencies": {
69
69
  "@anthropic-ai/sdk": "^0.113.0",
70
70
  "@atproto/api": "0.20.38",
71
- "@bendyline/gezel": "1.1.1",
72
- "@bendyline/gezel-catalog": "1.1.1",
73
- "@bendyline/gezel-client": "1.1.1",
71
+ "@bendyline/gezel": "1.1.2",
72
+ "@bendyline/gezel-catalog": "1.1.2",
73
+ "@bendyline/gezel-client": "1.1.2",
74
74
  "@bendyline/gezel-connectors-spectral": "1.0.5",
75
- "@bendyline/gezel-knowledge": "1.1.1",
76
- "@bendyline/gezel-mcp": "1.1.1",
75
+ "@bendyline/gezel-knowledge": "1.1.2",
76
+ "@bendyline/gezel-mcp": "1.1.2",
77
77
  "@bendyline/gezel-plugin-sdk": "1.0.5",
78
- "@bendyline/gezel-script-stdlib": "1.0.9",
79
- "@bendyline/gezel-sdk": "1.0.9",
80
- "@bendyline/squisq": "2.11.3",
81
- "@bendyline/squisq-cli": "2.8.3",
82
- "@bendyline/squisq-formats": "2.6.3",
78
+ "@bendyline/gezel-script-stdlib": "1.0.10",
79
+ "@bendyline/gezel-sdk": "1.0.10",
80
+ "@bendyline/squisq": "2.11.5",
81
+ "@bendyline/squisq-cli": "2.8.5",
82
+ "@bendyline/squisq-formats": "2.6.5",
83
83
  "@hono/node-server": "2.0.11",
84
84
  "@modelcontextprotocol/sdk": "^1.29.0",
85
85
  "@napi-rs/keyring": "^1.3.0",
@@ -145,6 +145,7 @@
145
145
  "dev": "tsup --watch",
146
146
  "typecheck": "tsc --noEmit",
147
147
  "test": "vitest run",
148
+ "test:prewarm-embedder": "tsx scripts/prewarm-test-embedder.ts",
148
149
  "clean": "rm -rf dist .turbo"
149
150
  }
150
151
  }
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-CEpd2cAX.js";import{Ot as r,bt as i}from"./dist-DOqbRmFj.js";import{t as a}from"./api-C0I7spBl.js";import{n as o}from"./primitives-CWrGZpPI.js";import{Z as s}from"./index-DDu8nyO6.js";import{t as c}from"./RecommendedBadge-iUoisQBi.js";var l=e(t(),1),u=n(),d={search:`Search`,"dev-tools":`Dev tools`,data:`Data`,cloud:`Cloud`,productivity:`Productivity`,communication:`Communication`,content:`Content`,ai:`AI`,media:`Media`,other:`Other`},f=[`search`,`dev-tools`,`data`,`cloud`,`productivity`,`communication`,`content`,`media`,`ai`,`other`];function p({item:e}){return(0,u.jsx)(s,{iconSvg:e.iconSvg,logoUrl:e.logoUrl,svgClassName:`catalog-item-logo catalog-item-logo-svg`,imageClassName:`catalog-item-logo`,fallback:(0,u.jsx)(`div`,{className:`catalog-item-logo catalog-item-logo-placeholder`,children:e.manifest.name.slice(0,1)})})}function m(e){return e.manifest.kind===`chat-model`?r(e.manifest):e.manifest.kind===`image-model`||e.manifest.kind===`video-model`?{maker:e.manifest.maintainer.name,customizers:[]}:null}function h(e){let t=e.manifest;return t.kind===`chat-model`||t.kind===`image-model`||t.kind===`video-model`?t:null}function g({kind:e,action:t,emptyMessage:n,filterTags:r,filter:s,onItemsLoaded:g,tagTooltips:_,initialItems:v}){let[y,b]=(0,l.useState)(v??[]),[x,S]=(0,l.useState)(v===void 0),[C,w]=(0,l.useState)(null),[T,E]=(0,l.useState)(``),[D,O]=(0,l.useState)(`all`),k=(0,l.useCallback)(async()=>{S(!0),w(null);try{let t=await a.listCatalogItems(e);b(t.items),g?.(t.items)}catch(e){w(e.message)}finally{S(!1)}},[e,g]);(0,l.useEffect)(()=>{if(v!==void 0){b(v),S(!1);return}k()},[k,v]);let A=(0,l.useMemo)(()=>{if(e!==`toolset`)return null;let t=new Map,n=0;for(let e of y){if(e.manifest.kind!==`toolset`)continue;let r=e.manifest.category??`other`;t.set(r,(t.get(r)??0)+1),n++}return n===0?null:t},[y,e]),j=(0,l.useMemo)(()=>{let t=y;if(e===`toolset`&&D!==`all`&&(t=t.filter(e=>e.manifest.kind===`toolset`&&(e.manifest.category??`other`)===D)),r&&r.length>0){let e=new Set(r);t=t.filter(t=>t.manifest.tags.some(t=>e.has(t.toLowerCase())))}if(T.trim()){let e=T.toLowerCase();t=t.filter(t=>{let n=m(t);return t.manifest.name.toLowerCase().includes(e)||t.manifest.description.toLowerCase().includes(e)||t.manifest.tags.some(t=>t.toLowerCase().includes(e))||t.manifest.id.toLowerCase().includes(e)||n?.maker.toLowerCase().includes(e)||n?.customizers.some(t=>t.toLowerCase().includes(e))})}return s&&(t=t.filter(s)),t},[y,T,r,s,D,e]);return(0,u.jsxs)(`div`,{className:`catalog-browser${e===`chat-model`||e===`image-model`||e===`video-model`||e===`knowledge-catalog`?` catalog-browser--models`:``}`,children:[(0,u.jsxs)(`div`,{className:`catalog-filter`,children:[(0,u.jsx)(`input`,{placeholder:`Filter…`,value:T,onChange:e=>E(e.target.value)}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>void k(),children:`Refresh`})]}),A&&A.size>0&&(0,u.jsxs)(`div`,{className:`catalog-categories`,role:`tablist`,"aria-label":`Filter by category`,children:[(0,u.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":D===`all`,className:`catalog-category${D===`all`?` catalog-category-active`:``}`,onClick:()=>O(`all`),children:[`All `,(0,u.jsx)(`span`,{className:`catalog-category-count`,children:y.length})]}),f.filter(e=>(A.get(e)??0)>0).map(e=>(0,u.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":D===e,className:`catalog-category${D===e?` catalog-category-active`:``}`,onClick:()=>O(e),children:[d[e],` `,(0,u.jsx)(`span`,{className:`catalog-category-count`,children:A.get(e)})]},e))]}),x&&(0,u.jsx)(`p`,{className:`muted small`,children:`Loading…`}),C&&(0,u.jsx)(`p`,{className:`error`,children:C}),!x&&j.length===0&&(0,u.jsx)(`p`,{className:`muted small`,children:n??`Nothing in the catalog for this kind yet.`}),(0,u.jsx)(`ul`,{className:`catalog-grid`,children:j.map(e=>{let n=m(e),r=h(e),a=i(e.manifest);return(0,u.jsxs)(`li`,{className:`catalog-item`,children:[(0,u.jsxs)(`div`,{className:`catalog-item-header`,children:[(0,u.jsx)(p,{item:e}),(0,u.jsxs)(`div`,{className:`catalog-item-head`,children:[(0,u.jsx)(`div`,{className:`catalog-item-name`,children:e.manifest.name}),e.manifest.kind===`knowledge-catalog`&&(0,u.jsx)(`div`,{className:`catalog-item-attribution`,children:(0,u.jsxs)(`div`,{children:[`Published by `,(0,u.jsx)(`strong`,{children:e.manifest.maintainer.name})]})}),n&&(0,u.jsxs)(`div`,{className:`catalog-item-attribution`,children:[(0,u.jsxs)(`div`,{children:[`Made by `,(0,u.jsx)(`strong`,{children:n.maker})]}),n.customizers.length>0&&(0,u.jsxs)(`div`,{children:[`Customized by `,(0,u.jsx)(`strong`,{children:n.customizers.join(`, `)})]})]}),e.manifest.tags.length>0&&(0,u.jsx)(`div`,{className:`catalog-item-tags`,children:e.manifest.tags.map(e=>{let t=e.trim().toLowerCase(),n=t===`retired`,r=_?.[t]??(n?`This model is kept for compatibility but is no longer recommended for new downloads.`:void 0),i=(0,u.jsx)(`span`,{className:`catalog-item-tag${n?` catalog-item-tag--retired`:``}`,style:r?{cursor:`help`}:void 0,children:e},e);return r?(0,u.jsx)(o,{text:r,children:i},e):i})}),r&&!a&&(0,u.jsx)(c,{manifest:r})]})]}),(0,u.jsx)(`p`,{className:`catalog-item-description`,children:e.manifest.description}),(0,u.jsx)(`div`,{className:`catalog-item-action`,children:t(e)})]},`${e.sourceId}:${e.manifest.id}`)})})]})}export{g as t};