mcard-studio 0.0.1 → 0.0.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 (83) hide show
  1. package/astro.config.mjs +6 -1
  2. package/bin/mcard-studio.mjs +1 -1
  3. package/dist/client/_astro/{ChartAnalyticsViewlet.Cevj0EOs.js → ChartAnalyticsViewlet.jrwIemvb.js} +1 -1
  4. package/dist/client/_astro/ClmPcardViewlet.C-fU7oZf.js +3 -0
  5. package/dist/client/_astro/D3GraphViewlet.BCZl0b2U.js +2 -0
  6. package/dist/client/_astro/DockviewSpatialWorkbench.B_I1GJHw.js +12 -0
  7. package/dist/client/_astro/{DocumentViewlets.Dm_GL3AL.js → DocumentViewlets.B53IqmpY.js} +1 -1
  8. package/dist/client/_astro/ExcalidrawWhiteboardViewlet.CFpPYSdn.js +1 -0
  9. package/dist/client/_astro/{FaroVCardSpanInstrumenter.BIk2NhJY.js → FaroVCardSpanInstrumenter.un8kDMWv.js} +1 -1
  10. package/dist/client/_astro/{FontSpecimenViewlet.CpONhJh0.js → FontSpecimenViewlet.D7Aw2xBZ.js} +1 -1
  11. package/dist/client/_astro/HeadMeta.astro_astro_type_script_index_0_lang.VDRYJCM-.js +1 -0
  12. package/dist/client/_astro/{ImageViewlet.CHeNvX6L.js → ImageViewlet.D4FN87n_.js} +1 -1
  13. package/dist/client/_astro/{KatexFormulaViewlet.Cy_InWOK.js → KatexFormulaViewlet.CzhdIOw8.js} +1 -1
  14. package/dist/client/_astro/KoishiChatViewlet.5mepQvLX.js +16 -0
  15. package/dist/client/_astro/MCardLibraryHarness.DE8KeghO.js +2 -0
  16. package/dist/client/_astro/{MarkdownViewlet.qoPlM-TZ.js → MarkdownViewlet.CRuuXXmF.js} +1 -1
  17. package/dist/client/_astro/{MermaidDiagramViewlet.RnwDfQl6.js → MermaidDiagramViewlet.eW6sk-rF.js} +1 -1
  18. package/dist/client/_astro/PCardRendererBridge.oxVKc0gN.js +1 -0
  19. package/dist/client/_astro/RendererPCardRegistry.CWjYZs2H.js +1 -0
  20. package/dist/client/_astro/{SchemaYamlViewlet.D6HVdmrq.js → SchemaYamlViewlet.ZJBvxItR.js} +1 -1
  21. package/dist/client/_astro/{ShellContainer.astro_astro_type_script_index_0_lang.2oi8fhQo.js → ShellContainer.astro_astro_type_script_index_0_lang.j_ELcN5d.js} +1 -1
  22. package/dist/client/_astro/{Spatial3dViewlet.CCYBSSib.js → Spatial3dViewlet.DnVMBENJ.js} +1 -1
  23. package/dist/client/_astro/StudioWorkbench.Blo5oSIw.js +7 -0
  24. package/dist/client/_astro/{SvgViewlet.BxlWQ-JX.js → SvgViewlet.BCje7Qqb.js} +1 -1
  25. package/dist/client/_astro/{TerminalView.DWZR-hUa.js → TerminalView.C_Ksz6lT.js} +4 -4
  26. package/dist/client/_astro/{ThemeSettingsViewlet.Cb1r8fWw.js → ThemeSettingsViewlet.DJpjQQ0Z.js} +1 -1
  27. package/dist/client/_astro/{TikzDiagramViewlet.CqY7VTeP.js → TikzDiagramViewlet.CXb1A8nf.js} +1 -1
  28. package/dist/client/_astro/{VideoPlayerViewlet.DoSYmmoQ.js → VideoPlayerViewlet.CmECt7yT.js} +1 -1
  29. package/dist/client/_astro/{WebappZenViewlet.CQW50OhX.js → WebappZenViewlet.whCmGVHR.js} +1 -1
  30. package/dist/client/_astro/{WelcomeViewport.LwKTA6h7.js → WelcomeViewport.BiYwLh6l.js} +1 -1
  31. package/dist/client/_astro/__vite-browser-external.CQZnr-r3.js +1 -0
  32. package/dist/client/_astro/{agentIdentityCredentialService.BtKVsl2C.js → agentIdentityCredentialService.UzMMwBwv.js} +5 -5
  33. package/dist/client/_astro/cardTypeDetector.Ci4APwhX.js +1 -0
  34. package/dist/client/_astro/disposable.Dsb0sbRP.js +1 -0
  35. package/dist/client/_astro/{markdownService.D-tM2RYx.js → markdownService.BgWjyJ57.js} +1 -1
  36. package/dist/client/_astro/{mcardStore.BiAvqM-D.js → mcardStore.CT-ollfl.js} +2 -2
  37. package/dist/client/_astro/mcardVfs.2UOw9Z-r.js +3 -0
  38. package/dist/client/_astro/polyfills._3wYPjZf.js +1 -0
  39. package/dist/client/_astro/rendererEventBus.DMH9afq9.js +1 -0
  40. package/dist/client/_astro/themeStore.CEt0e54l.js +1 -0
  41. package/dist/client/_astro/{tikzCompiler.DFojjdxR.js → tikzCompiler.fe3qomFY.js} +1 -1
  42. package/dist/client/_astro/{useMCardHydration.Co47OH3D.js → useMCardHydration.7Z-HfBh5.js} +1 -1
  43. package/dist/client/_astro/vendor-ai.D6NcJ6lu.js +69 -0
  44. package/dist/client/_astro/vendor-clm-kernel.Bvk3XHk2.js +116 -0
  45. package/dist/client/_astro/vfsHandles.IX_wTpw_.js +1 -0
  46. package/dist/client/_astro/vfsPersistence.BuhXYeSb.js +1 -0
  47. package/dist/client/_astro/vfsTransactions.C_IQQg0s.js +1 -0
  48. package/dist/client/_astro/{workspaceStore.CXakha4Y.js → workspaceStore.CD0kAVAl.js} +1 -1
  49. package/dist/client/js/buffer-polyfill.js +14 -0
  50. package/dist/server/chunks/{StudioLayout_D163irJ0.mjs → StudioLayout_B5ZnlqjF.mjs} +2 -2
  51. package/dist/server/chunks/{_.._ZXsz792-.mjs → _.._5gPhVOLM.mjs} +1 -1
  52. package/dist/server/chunks/{mcard-library_DvPPUs9_.mjs → mcard-library_7Wzoihkm.mjs} +1 -1
  53. package/dist/server/chunks/{ws-server-init_CkcgcI5V.mjs → ws-server-init_DUjuR2-o.mjs} +3 -3
  54. package/dist/server/entry.mjs +8 -4
  55. package/dist/server/entry2.mjs +3 -3
  56. package/dist/server/virtual_astro_middleware.mjs +1 -1
  57. package/package.json +1 -1
  58. package/public/js/buffer-polyfill.js +14 -0
  59. package/src/layouts/StudioLayout.astro +1 -0
  60. package/src/pages/index.astro +75 -0
  61. package/src/services/inBrowserLlm/engines/litertEngine.ts +1 -1
  62. package/dist/client/_astro/ClmPcardViewlet.DW5Yft0E.js +0 -3
  63. package/dist/client/_astro/D3GraphViewlet.DAjPz1DP.js +0 -2
  64. package/dist/client/_astro/DockviewSpatialWorkbench.DyQjSoHd.js +0 -12
  65. package/dist/client/_astro/ExcalidrawWhiteboardViewlet.DrlW7B6G.js +0 -1
  66. package/dist/client/_astro/HeadMeta.astro_astro_type_script_index_0_lang.DGXU-3Lu.js +0 -1
  67. package/dist/client/_astro/KoishiChatViewlet.B0eDEMnT.js +0 -16
  68. package/dist/client/_astro/MCardLibraryHarness.CUJLJFBt.js +0 -2
  69. package/dist/client/_astro/PCardRendererBridge.BnyaE05I.js +0 -1
  70. package/dist/client/_astro/RendererPCardRegistry.CLr4j1Ub.js +0 -1
  71. package/dist/client/_astro/StudioWorkbench.CF0SOYwy.js +0 -7
  72. package/dist/client/_astro/cardTypeDetector.C9kGObMh.js +0 -1
  73. package/dist/client/_astro/disposable.66apX1Q2.js +0 -1
  74. package/dist/client/_astro/empty.DOwCrGXH.js +0 -1
  75. package/dist/client/_astro/mcardVfs.Bj-RA0p7.js +0 -2
  76. package/dist/client/_astro/path.CR60mj9W.js +0 -1
  77. package/dist/client/_astro/polyfills.DcBkS56X.js +0 -1
  78. package/dist/client/_astro/rendererEventBus.CyFnSRLk.js +0 -1
  79. package/dist/client/_astro/themeStore.zUMFLo3Q.js +0 -1
  80. package/dist/client/_astro/vendor-ai.CZe7UVVK.js +0 -69
  81. package/dist/client/_astro/vfsHandles.B-nczBRy.js +0 -1
  82. package/dist/client/_astro/vfsPersistence.D6zRzVML.js +0 -1
  83. package/dist/client/_astro/vfsTransactions.04mkEHxD.js +0 -1
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{n as r}from"./vfsHandles.B-nczBRy.js";import"./mcardVfs.Bj-RA0p7.js";import{t as i}from"./useMCardHydration.Co47OH3D.js";import{i as a}from"./DockviewSpatialWorkbench.DyQjSoHd.js";import{t as o}from"./mediaEmbeds.CWeXA8QP.js";var s=e(t(),1),c=n(),l=({mcard:e})=>{let[t,n]=(0,s.useState)(!1),i=r(e.path,e.hash);return(0,c.jsxs)(`div`,{className:`card-panel-pdf-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`#2b2b2b`,overflow:`hidden`,position:`relative`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 14px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid #3c3c3c`,color:`#cccccc`,fontSize:`11px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,c.jsx)(`span`,{style:{color:`#e37933`},children:`📄`}),(0,c.jsx)(`span`,{children:e.name})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,gap:`8px`},children:[(0,c.jsx)(`button`,{onClick:()=>n(!0),style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`var(--vscode-button-background, #0e639c)`,color:`#fff`,border:`none`,borderRadius:`2px`,cursor:`pointer`},children:`Zen Mode (Full-Page)`}),i&&(0,c.jsx)(`a`,{href:i,download:!0,style:{color:`#75beff`,textDecoration:`none`,fontSize:`10px`},children:`Download PDF ↓`})]})]}),(0,c.jsx)(`div`,{style:{flex:1,width:`100%`,height:`100%`,position:`relative`},children:(0,c.jsx)(`iframe`,{src:i,title:e.name,style:{width:`100%`,height:`100%`,border:`none`}})}),t&&(0,c.jsx)(a,{title:e.name,src:i,onClose:()=>n(!1)})]})},u=({mcard:e})=>{let[t,n]=(0,s.useState)(!1),o=r(e.path,e.hash),{content:l}=i(e),u=l||(typeof e.content==`string`?e.content:``);return(0,c.jsxs)(`div`,{className:`card-panel-html-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`#ffffff`,overflow:`hidden`,position:`relative`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 14px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid #3c3c3c`,color:`#cccccc`,fontSize:`11px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,c.jsx)(`span`,{style:{color:`#e37933`},children:`🌐`}),(0,c.jsx)(`span`,{children:`Sandboxed HTML Document`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,gap:`8px`},children:[(0,c.jsx)(`button`,{onClick:()=>n(!0),style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`var(--vscode-button-background, #0e639c)`,color:`#fff`,border:`none`,borderRadius:`2px`,cursor:`pointer`},children:`Zen Mode`}),o&&(0,c.jsx)(`button`,{onClick:()=>window.open(o,`_blank`),style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`transparent`,color:`#75beff`,border:`1px solid rgba(117,190,255,0.4)`,borderRadius:`2px`,cursor:`pointer`},children:`Open Tab ↗`})]})]}),(0,c.jsx)(`div`,{style:{flex:1,width:`100%`,height:`100%`,position:`relative`},children:(0,c.jsx)(`iframe`,{srcDoc:u||void 0,src:u?void 0:o,title:e.name,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups`,style:{width:`100%`,height:`100%`,border:`none`}})}),t&&(0,c.jsx)(a,{title:e.name,srcDoc:u||void 0,src:u?void 0:o,onClose:()=>n(!1)})]})},d=({mcard:e})=>{let{content:t}=i(e),n=t||(typeof e.content==`string`?e.content:``),r=(0,s.useMemo)(()=>n.trim().split(`
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{n as r}from"./vfsHandles.IX_wTpw_.js";import"./mcardVfs.2UOw9Z-r.js";import{t as i}from"./useMCardHydration.7Z-HfBh5.js";import{i as a}from"./DockviewSpatialWorkbench.B_I1GJHw.js";import{t as o}from"./mediaEmbeds.CWeXA8QP.js";var s=e(t(),1),c=n(),l=({mcard:e})=>{let[t,n]=(0,s.useState)(!1),i=r(e.path,e.hash);return(0,c.jsxs)(`div`,{className:`card-panel-pdf-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`#2b2b2b`,overflow:`hidden`,position:`relative`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 14px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid #3c3c3c`,color:`#cccccc`,fontSize:`11px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,c.jsx)(`span`,{style:{color:`#e37933`},children:`📄`}),(0,c.jsx)(`span`,{children:e.name})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,gap:`8px`},children:[(0,c.jsx)(`button`,{onClick:()=>n(!0),style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`var(--vscode-button-background, #0e639c)`,color:`#fff`,border:`none`,borderRadius:`2px`,cursor:`pointer`},children:`Zen Mode (Full-Page)`}),i&&(0,c.jsx)(`a`,{href:i,download:!0,style:{color:`#75beff`,textDecoration:`none`,fontSize:`10px`},children:`Download PDF ↓`})]})]}),(0,c.jsx)(`div`,{style:{flex:1,width:`100%`,height:`100%`,position:`relative`},children:(0,c.jsx)(`iframe`,{src:i,title:e.name,style:{width:`100%`,height:`100%`,border:`none`}})}),t&&(0,c.jsx)(a,{title:e.name,src:i,onClose:()=>n(!1)})]})},u=({mcard:e})=>{let[t,n]=(0,s.useState)(!1),o=r(e.path,e.hash),{content:l}=i(e),u=l||(typeof e.content==`string`?e.content:``);return(0,c.jsxs)(`div`,{className:`card-panel-html-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`#ffffff`,overflow:`hidden`,position:`relative`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 14px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid #3c3c3c`,color:`#cccccc`,fontSize:`11px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,c.jsx)(`span`,{style:{color:`#e37933`},children:`🌐`}),(0,c.jsx)(`span`,{children:`Sandboxed HTML Document`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,gap:`8px`},children:[(0,c.jsx)(`button`,{onClick:()=>n(!0),style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`var(--vscode-button-background, #0e639c)`,color:`#fff`,border:`none`,borderRadius:`2px`,cursor:`pointer`},children:`Zen Mode`}),o&&(0,c.jsx)(`button`,{onClick:()=>window.open(o,`_blank`),style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`transparent`,color:`#75beff`,border:`1px solid rgba(117,190,255,0.4)`,borderRadius:`2px`,cursor:`pointer`},children:`Open Tab ↗`})]})]}),(0,c.jsx)(`div`,{style:{flex:1,width:`100%`,height:`100%`,position:`relative`},children:(0,c.jsx)(`iframe`,{srcDoc:u||void 0,src:u?void 0:o,title:e.name,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups`,style:{width:`100%`,height:`100%`,border:`none`}})}),t&&(0,c.jsx)(a,{title:e.name,srcDoc:u||void 0,src:u?void 0:o,onClose:()=>n(!1)})]})},d=({mcard:e})=>{let{content:t}=i(e),n=t||(typeof e.content==`string`?e.content:``),r=(0,s.useMemo)(()=>n.trim().split(`
2
2
  `).map(e=>e.split(`,`).map(e=>e.trim())),[n]),a=r[0]||[],o=r.slice(1);return(0,c.jsxs)(`div`,{className:`card-panel-table-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`var(--vscode-editor-background, #1e1e1e)`,color:`var(--vscode-foreground, #cccccc)`,overflow:`hidden`},children:[(0,c.jsxs)(`div`,{style:{padding:`6px 14px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid var(--vscode-editorGroup-border, #333)`,fontSize:`11px`,opacity:.8},children:[`Table Data Grid: `,o.length,` records, `,a.length,` columns`]}),(0,c.jsx)(`div`,{style:{flex:1,overflow:`auto`,padding:`16px`},children:(0,c.jsxs)(`table`,{style:{borderCollapse:`collapse`,width:`100%`,fontSize:`12px`},children:[(0,c.jsx)(`thead`,{children:(0,c.jsx)(`tr`,{style:{backgroundColor:`rgba(255,255,255,0.06)`},children:a.map((e,t)=>(0,c.jsx)(`th`,{style:{padding:`8px 12px`,textAlign:`left`,borderBottom:`2px solid #3c3c3c`,color:`#75beff`},children:e},t))})}),(0,c.jsx)(`tbody`,{children:o.map((e,t)=>(0,c.jsx)(`tr`,{style:{backgroundColor:t%2==0?`transparent`:`rgba(255,255,255,0.02)`,borderBottom:`1px solid rgba(255,255,255,0.05)`},children:e.map((e,t)=>(0,c.jsx)(`td`,{style:{padding:`6px 12px`},children:e},t))},t))})]})})]})},f=({mcard:e})=>{let{content:t}=i(e),n=t||(typeof e.content==`string`?e.content:``);return(0,c.jsxs)(`div`,{className:`card-panel-xml-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`var(--vscode-editor-background, #1e1e1e)`,color:`var(--vscode-foreground, #cccccc)`,fontFamily:`monospace`,fontSize:`12px`,overflow:`hidden`},children:[(0,c.jsx)(`div`,{style:{padding:`6px 14px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid #333`,fontSize:`11px`,color:`#e37933`},children:`XML Document Inspector`}),(0,c.jsx)(`pre`,{style:{flex:1,margin:0,padding:`16px`,overflow:`auto`,lineHeight:`1.5`},children:n})]})},p=({mcard:e})=>{let t=r(e.path,e.hash),n=typeof e.content==`string`?e.content:``,i=e.path||e.handle||``,[a,l]=(0,s.useState)(``);(0,s.useEffect)(()=>{(!n||n.startsWith(`Content-addressed MCard:`))&&t&&(e.path?.endsWith(`.txt`)||e.path?.endsWith(`.url`)||e.path?.includes(`spotify`))&&fetch(t).then(e=>e.text()).then(e=>l(e)).catch(()=>{})},[t,n,e.path]);let u=o(n)||o(a)||o(i);if(u){let t=u.type===`track`;return(0,c.jsxs)(`div`,{className:`card-panel-audio-player card-panel-spotify-player`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,width:`100%`,height:`100%`,backgroundColor:`#121212`,padding:`24px`,boxSizing:`border-box`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,width:`100%`,maxWidth:`640px`,marginBottom:`14px`,padding:`8px 14px`,backgroundColor:`rgba(255, 255, 255, 0.05)`,borderRadius:`8px`,border:`1px solid rgba(255, 255, 255, 0.1)`,fontSize:`12px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,c.jsx)(`span`,{style:{color:`#1db954`,fontWeight:700,fontSize:`13px`},children:`🎧 Spotify`}),(0,c.jsx)(`span`,{style:{color:`#ffffff`,fontWeight:500},children:e.name}),(0,c.jsx)(`code`,{style:{color:`#1ed760`,fontSize:`11px`,backgroundColor:`rgba(29, 185, 84, 0.15)`,padding:`1px 6px`,borderRadius:`3px`},children:u.id})]}),(0,c.jsx)(`a`,{href:`https://open.spotify.com/${u.type}/${u.id}`,target:`_blank`,rel:`noopener noreferrer`,style:{color:`#1ed760`,textDecoration:`none`,fontSize:`11px`,fontWeight:500},children:`Open on Spotify ↗`})]}),(0,c.jsx)(`div`,{style:{width:`100%`,maxWidth:`640px`,boxShadow:`0 8px 32px rgba(0, 0, 0, 0.6)`,borderRadius:`12px`,overflow:`hidden`},children:(0,c.jsx)(`iframe`,{src:u.embedUrl,width:`100%`,height:t?`152`:`352`,frameBorder:`0`,allow:`autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture`,loading:`lazy`,title:`Spotify ${u.type}`,style:{border:`none`,display:`block`}})})]})}return(0,c.jsxs)(`div`,{className:`card-panel-audio-player`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,width:`100%`,height:`100%`,backgroundColor:`#1a1a1c`,padding:`32px`},children:[(0,c.jsx)(`div`,{style:{fontSize:`48px`,marginBottom:`16px`},children:`🎵`}),(0,c.jsx)(`div`,{style:{fontSize:`15px`,fontWeight:600,marginBottom:`16px`,color:`#cccccc`},children:e.name}),(0,c.jsx)(`audio`,{controls:!0,src:t,style:{width:`380px`}})]})};export{p as AudioPlayerViewlet,u as HtmlViewlet,l as PdfViewlet,d as TableGridCsvViewlet,f as XmlViewlet,o as extractSpotifyInfo};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{I as r}from"./vendor-clm-kernel.Bvk3XHk2.js";import{a as i,h as a,i as o,l as s,n as c,r as l,t as u,u as d}from"./themeStore.CEt0e54l.js";import{t as f}from"./rendererEventBus.DMH9afq9.js";import{t as p}from"./useMCardHydration.7Z-HfBh5.js";import{t as m}from"./RendererLoader.D-ThYU1B.js";var h=e(t(),1);function g(e={}){let t=e[`--mcard-theme-id`]||`dark-default`,n=t===`light-clean`||t===`monochrome-eink`;return{theme:n?`light`:`dark`,viewBackgroundColor:e[`--mcard-canvas-clear`]||e[`--mcard-bg-canvas`]||(n?`#ffffff`:`#1e1e1e`),currentItemStrokeColor:e[`--mcard-text-primary`]||(n?`#000000`:`#ffffff`),currentItemBackgroundColor:e[`--mcard-bg-surface`]||(n?`#f1f5f9`:`#252526`)}}var _=class{static sanitizeAppState(e){if(!e)return{};let{collaborators:t,activeTool:n,draggingElement:r,resizingElement:i,editingElement:a,selectionElement:o,isLoading:s,errorMessage:c,...l}=e;return l}static get(e,t,n){return{type:`excalidraw`,version:2,source:`https://mcard.studio`,elements:e.map(e=>({...e})),appState:this.sanitizeAppState(t),files:n?{...n}:{}}}static put(e,t,n,i){let o=this.get(t,n,i),s=JSON.stringify(o,null,2),c=`blake3:${r.computeString(s).asHex()}`,l=Date.now(),u=`${(e||`whiteboard`).replace(/\.excalidraw\.json$|\.excalidraw$|\.json$/,``)}_frozen_${l}.excalidraw.json`;try{a.writeFile(u,s)}catch{}return f({type:`render:excalidraw:sketch_frozen`,targetHandle:u,timestamp:l,payload:{hash:c,elementCount:t.length}}),{handle:u,hash:c,json:s}}static parse(e){if(!e)return{type:`excalidraw`,version:2,source:`https://mcard.studio`,elements:[],appState:{},files:{}};if(typeof e==`string`)try{let t=JSON.parse(e);return this.parse(t)}catch{return{type:`excalidraw`,version:2,source:`https://mcard.studio`,elements:[],appState:{},files:{}}}if(typeof e==`object`){let t=e;return Array.isArray(t)?{type:`excalidraw`,version:2,source:`https://mcard.studio`,elements:t,appState:{},files:{}}:{type:`excalidraw`,version:2,source:t.source||`https://mcard.studio`,elements:Array.isArray(t.elements)?t.elements:[],appState:this.sanitizeAppState(t.appState),files:t.files||{}}}return{type:`excalidraw`,version:2,source:`https://mcard.studio`,elements:[],appState:{},files:{}}}},v=n(),y=({mcard:e})=>{let{content:t,isLoading:n}=p(e),r=t||(typeof e?.content==`string`?e.content:``),[a,y]=(0,h.useState)(null),[b,x]=(0,h.useState)(null),[S,C]=(0,h.useState)(null),[w,T]=(0,h.useState)(!1),[E,D]=(0,h.useState)(!1),O=(0,h.useRef)(null),k=(0,h.useRef)([]),A=(0,h.useRef)({}),j=(0,h.useRef)({}),M=(0,h.useMemo)(()=>_.parse(r),[r]),N=()=>g(d({theme:i.get(),density:c.get(),responsive:o.get(),context:u.get(),environment:l.get()},s)),P=(0,h.useMemo)(N,[]);(0,h.useEffect)(()=>{let e=!0;return m(`excalidraw`).then(t=>e&&y(t)).catch(t=>e&&x(t?.message||`Failed to load Excalidraw`)),()=>{e=!1}},[]),(0,h.useEffect)(()=>i.subscribe(()=>{if(O.current?.updateScene){let e=N();O.current.updateScene({appState:{theme:e.theme,viewBackgroundColor:e.viewBackgroundColor}})}}),[]);let F=()=>{let t=e?.handle||e?.path||`whiteboard`,n=_.put(t,k.current,A.current,j.current);C(`${n.hash.slice(0,16)}…`),setTimeout(()=>C(null),4e3)},I=async()=>{if(a)try{let t=a.exportToSvg||a.default?.exportToSvg;if(typeof t==`function`){let n=await t({elements:k.current,appState:{...A.current,exportBackground:!0,viewBackgroundColor:P.viewBackgroundColor},files:j.current}),r=new Blob([new XMLSerializer().serializeToString(n)],{type:`image/svg+xml`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${(e?.handle||`whiteboard`).replace(/\.[^/.]+$/,``)}.svg`,a.click(),URL.revokeObjectURL(i)}}catch(e){console.error(`[ExcalidrawViewlet] Export error:`,e)}},L=a?.Excalidraw||a?.default?.Excalidraw||a?.default,R=(e=!1)=>({padding:`2px 8px`,fontSize:`11px`,background:e?`var(--mcard-accent, #6366f1)`:`var(--mcard-bg-card, #2a2a2a)`,color:`var(--mcard-text-primary, #fff)`,border:`1px solid var(--mcard-border-default, #444)`,borderRadius:`4px`,cursor:`pointer`});return(0,v.jsxs)(`div`,{className:`mcard-pcard-container mcard-pcard-excalidraw`,"data-modality":`excalidraw`,"data-day-convolution":`canvas`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,position:`relative`,background:P.viewBackgroundColor},children:[(0,v.jsxs)(`div`,{className:`mcard-pcard-hud`,style:{display:`flex`,alignItems:`center`,gap:`8px`,padding:`6px 12px`,borderBottom:`1px solid var(--mcard-border-default, #333)`,background:`var(--mcard-bg-surface, #1e1e1e)`,fontSize:`12px`,zIndex:10},children:[(0,v.jsx)(`span`,{style:{fontWeight:600,color:`var(--mcard-text-primary, #fff)`},children:`🎨 Excalidraw Whiteboard`}),(0,v.jsx)(`button`,{type:`button`,onClick:F,style:{...R(!0),background:`var(--mcard-accent, #6366f1)`},children:`❄️ Freeze`}),S&&(0,v.jsxs)(`span`,{style:{color:`var(--mcard-accent, #10b981)`,fontSize:`11px`},children:[`✓ `,S]}),(0,v.jsx)(`button`,{type:`button`,onClick:I,style:R(),children:`⬇ SVG`}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>{let e=!E;D(e),O.current?.updateScene?.({appState:{zenModeEnabled:e}})},style:R(E),children:`🧘 Zen`}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>T(!w),style:{...R(),marginLeft:`auto`},children:w?`Canvas`:`JSON`})]}),(0,v.jsx)(`div`,{style:{flex:1,position:`relative`,overflow:`hidden`},children:w?(0,v.jsx)(`pre`,{style:{margin:0,padding:`12px`,height:`100%`,overflow:`auto`,fontSize:`12px`,color:`var(--mcard-text-primary, #eee)`,background:`var(--mcard-bg-canvas, #121212)`},children:JSON.stringify(M,null,2)}):b?(0,v.jsxs)(`div`,{style:{padding:`24px`,color:`var(--mcard-error, #ef4444)`},children:[`⚠️ `,b]}):!L||n?(0,v.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,height:`100%`,color:`var(--mcard-text-secondary, #888)`},children:`Loading whiteboard substrate…`}):(0,v.jsx)(L,{excalidrawAPI:e=>{O.current=e},initialData:{elements:M.elements,appState:{...M.appState,theme:P.theme,viewBackgroundColor:P.viewBackgroundColor,zenModeEnabled:E},files:M.files},theme:P.theme,onChange:(t,n,r)=>{k.current=t,A.current=n,j.current=r,f({modality:`excalidraw`,type:`render:excalidraw:change`,handle:e?.handle||`whiteboard`,payload:{elementCount:t.length}})},UIOptions:{canvasActions:{loadScene:!1,saveToActiveFile:!1}}})})]})};export{y as ExcalidrawWhiteboardViewlet,y as default};
@@ -1 +1 @@
1
- import{I as e}from"./mcardStore.BiAvqM-D.js";var t=class{static _snapshots=new Map;static _sqlExecutor;static setSqlExecutor(e){this._sqlExecutor=e}static async beginSavepoint(e,t){let n=`sp_${e.replace(/[^a-zA-Z0-9_]/g,`_`)}_${Date.now()}`,r=t?t():{};if(this._snapshots.set(n,{name:e,timestamp:Date.now(),data:r}),this._sqlExecutor)try{await this._sqlExecutor(`SAVEPOINT ${n};`)}catch(e){console.warn(`[SavepointGuard] SQLite SAVEPOINT failed, falling back to memory snapshot:`,e)}return n}static async rollbackToSavepoint(e,t){let n=typeof performance<`u`?performance.now():Date.now(),r=this._snapshots.get(e);if(!r)return console.warn(`[SavepointGuard] Savepoint token '${e}' not found, skipping rollback`),0;if(t){let e=t(r.data);e instanceof Promise&&await e}if(this._sqlExecutor)try{await this._sqlExecutor(`ROLLBACK TO SAVEPOINT ${e};`)}catch(e){console.warn(`[SavepointGuard] SQLite ROLLBACK TO SAVEPOINT failed:`,e)}let i=(typeof performance<`u`?performance.now():Date.now())-n;return i>1&&console.warn(`[SavepointGuard] Rollback exceeded sub-millisecond threshold: ${i.toFixed(3)}ms`),i}static async releaseSavepoint(e){if(this._snapshots.delete(e),this._sqlExecutor)try{await this._sqlExecutor(`RELEASE SAVEPOINT ${e};`)}catch(e){console.warn(`[SavepointGuard] SQLite RELEASE SAVEPOINT failed:`,e)}}static async bracket(e,t,n){let r=await this.beginSavepoint(e,n?.stateCapture);try{let i=await t();if(n?.validatePostcondition&&!n.validatePostcondition(i))throw await this.rollbackToSavepoint(r,n?.stateRestore),Error(`[SavepointGuard] Postcondition failed (Meet = ⊥) for transaction '${e}', rolled back in <1ms`);return await this.releaseSavepoint(r),i}catch(e){throw await this.rollbackToSavepoint(r,n?.stateRestore),e}}static clear(){this._snapshots.clear()}},n=class{static _traces=new Map;static _recentTraces=[];static MAX_RECENT=100;static generateWitnessSignature(e,t,n,r){let i=`${e}:${t}:${n}:${r?`VERIFIED`:`REJECTED`}`,a=0;for(let e=0;e<i.length;e++)a=(a<<5)-a+i.charCodeAt(e)|0;return`sha256:witness:${Math.abs(a).toString(16).padStart(8,`0`)}`}static recordTrace(e){let t=e.id||`trace-${Math.random().toString(16).slice(2,10)}`,n=e.timestamp||Date.now(),r=e.witnessSignature||this.generateWitnessSignature(e.pcardHandle,e.inputHash,e.outputHash,e.status===`SUCCESS`),i={...e,id:t,timestamp:n,witnessSignature:r};return this._traces.set(t,i),this._traces.set(i.witnessSignature,i),this._recentTraces.unshift(i),this._recentTraces.length>this.MAX_RECENT&&this._recentTraces.pop(),i}static getTrace(e){return this._traces.get(e)}static getRecentTraces(){return[...this._recentTraces]}static getTracesForPCard(e){return this._recentTraces.filter(t=>t.pcardHandle===e)}static clear(){this._traces.clear(),this._recentTraces=[]}};async function r(e,r,i,a,o){let s=typeof performance<`u`?performance.now():Date.now(),c=[],l=e.pcard,u=`hash:in:${JSON.stringify(r).slice(0,32)}`,d=e.telemetryInstrumenter?.startSandwichSpan(l.handle);c.push(`[Sandwich] Ingress: Initializing Hoare Triple for PCard '${l.handle}'`);let f=typeof performance<`u`?performance.now():Date.now(),p=!1;try{p=await e.preCondition.evaluate(r,i)}catch(e){c.push(`[Sandwich:V_pre] Exception in precondition evaluation: ${e.message}`),p=!1}let m=(typeof performance<`u`?performance.now():Date.now())-f;if(e.telemetryInstrumenter?.recordStage(d,`prep`,m,p),!p){c.push(`[Sandwich:V_pre] MISU Guard: Precondition '${e.preCondition.name}' failed. Bailing with zero state mutation.`);let t=(typeof performance<`u`?performance.now():Date.now())-s;return e.telemetryInstrumenter?.endSpan(d,`ERROR`,1),{success:!1,trace:n.recordTrace({pcardHandle:l.handle,durationMs:t,preConditionPassed:!1,postConditionPassed:!1,latticeMeet:`BOTTOM`,status:`PRECONDITION_FAILED`,inputHash:u,outputHash:`hash:out:none`,entropyDelta:1,coeffectsSatisfied:!1,kanBoundaryPassed:!1,logs:c}),error:Error(`[MISU] Precondition failed for PCard '${l.handle}': ${e.preCondition.name}`)}}c.push(`[Sandwich:V_pre] Precondition '${e.preCondition.name}' PASSED.`);let h=await t.beginSavepoint(`sandwich_${l.handle.replace(/[^a-zA-Z0-9_]/g,`_`)}`,a);c.push(`[Sandwich:PCard] Savepoint token created: '${h}'`);let g=typeof performance<`u`?performance.now():Date.now(),_,v;try{_=await l.execute(r,i),c.push(`[Sandwich:PCard] Executed morphism '${l.name}'`)}catch(e){v=e instanceof Error?e:Error(String(e)),c.push(`[Sandwich:PCard] Exception in morphism execution: ${v.message}`)}let y=(typeof performance<`u`?performance.now():Date.now())-g;if(e.telemetryInstrumenter?.recordStage(d,`exec`,y,!v),v){c.push(`[Sandwich:PCard] Rolling back savepoint '${h}' due to execution error.`);let r=await t.rollbackToSavepoint(h,o);c.push(`[Sandwich:Rollback] Atomic rollback executed in ${r.toFixed(3)}ms`);let i=(typeof performance<`u`?performance.now():Date.now())-s;return e.telemetryInstrumenter?.endSpan(d,`ERROR`,1),{success:!1,trace:n.recordTrace({pcardHandle:l.handle,durationMs:i,preConditionPassed:!0,postConditionPassed:!1,latticeMeet:`BOTTOM`,status:`ROLLED_BACK`,inputHash:u,outputHash:`hash:out:error`,entropyDelta:0,rollbackDurationMs:r,coeffectsSatisfied:!0,kanBoundaryPassed:!1,logs:c}),error:v}}let b=`hash:out:${JSON.stringify(_).slice(0,32)}`,x=typeof performance<`u`?performance.now():Date.now(),S=!1;try{S=await e.postCondition.evaluate(_,i)}catch(e){c.push(`[Sandwich:V_post] Exception in postcondition evaluation: ${e.message}`),S=!1}let C=!0;if(e.kanFillerCheck)try{C=await e.kanFillerCheck(r,_,i)}catch(e){c.push(`[Sandwich:Kan] Kan filler check exception: ${e.message}`),C=!1}let w=(typeof performance<`u`?performance.now():Date.now())-x,T=S&&C;if(e.telemetryInstrumenter?.recordStage(d,`post`,w,T),!T){c.push(`[Sandwich:V_post] Postcondition / Kan filler check FAILED (Lattice Meet = ⊥). Executing <1ms Savepoint rollback.`);let r=await t.rollbackToSavepoint(h,o);c.push(`[Sandwich:Rollback] Atomic rollback executed in ${r.toFixed(3)}ms`);let i=(typeof performance<`u`?performance.now():Date.now())-s;return e.telemetryInstrumenter?.endSpan(d,`ERROR`,0),{success:!1,trace:n.recordTrace({pcardHandle:l.handle,durationMs:i,preConditionPassed:!0,postConditionPassed:!1,latticeMeet:`BOTTOM`,status:`POSTCONDITION_FAILED`,inputHash:u,outputHash:b,entropyDelta:0,rollbackDurationMs:r,coeffectsSatisfied:!0,kanBoundaryPassed:C,logs:c}),error:Error(`[MISU] Postcondition Lattice Meet = ⊥ for PCard '${l.handle}'`)}}c.push(`[Sandwich:Commit] VCard verification PASS: Lattice Meet = ⊤. Committing savepoint.`),await t.releaseSavepoint(h);let E=(typeof performance<`u`?performance.now():Date.now())-s;e.telemetryInstrumenter?.endSpan(d,`OK`,0);let D=n.recordTrace({pcardHandle:l.handle,durationMs:E,preConditionPassed:!0,postConditionPassed:!0,latticeMeet:`TOP`,status:`SUCCESS`,inputHash:u,outputHash:b,entropyDelta:0,coeffectsSatisfied:!0,kanBoundaryPassed:!0,logs:c});return{success:!0,output:_,trace:D}}var i=class{static _activeSpans=new Map;static _completedSummaries=[];static startSandwichSpan(t){let n=`trace-${Math.random().toString(16).slice(2,10)}-${Date.now()}`,r=typeof performance<`u`?performance.now():Date.now();this._activeSpans.set(n,{handle:t,startTime:r,traceId:n,stages:{}});let i=e();return i&&i.api.pushMeasurement({type:`vcard_sandwich_span_start`,values:{startTime:r},context:{traceId:n,pcardHandle:t,spanName:`pcard.sandwich:${t}`}}),n}static recordStage(t,n,r,i){let a=this._activeSpans.get(t);if(!a)return;a.stages[n]={name:n,durationMs:r,success:i,timestamp:Date.now()};let o=e();o&&o.api.pushMeasurement({type:`vcard_stage_${n}`,values:{durationMs:r,success:+!!i},context:{traceId:t,pcardHandle:a.handle,stageName:`vcard.${n}`}})}static endSpan(t,n,r=0){let i=this._activeSpans.get(t);if(!i)return;let a=(typeof performance<`u`?performance.now():Date.now())-i.startTime,o={traceId:t,pcardHandle:i.handle,stages:i.stages,status:n,entropyDelta:r,totalDurationMs:a};this._completedSummaries.unshift(o),this._completedSummaries.length>50&&this._completedSummaries.pop(),this._activeSpans.delete(t);let s=e();return s&&(s.api.pushMeasurement({type:`vcard_sandwich_span_end`,values:{totalDurationMs:a,entropyDelta:r},context:{traceId:t,pcardHandle:i.handle,status:n}}),n===`ERROR`&&s.api.pushError(Error(`[VCard Sandwich Telemetry] Execution failed: ${i.handle}`),{context:{traceId:t,pcardHandle:i.handle,entropyDelta:String(r)}})),o}static getCompletedSummaries(){return[...this._completedSummaries]}static clear(){this._activeSpans.clear(),this._completedSummaries=[]}};export{r as n,n as r,i as t};
1
+ import{I as e}from"./mcardStore.CT-ollfl.js";var t=class{static _snapshots=new Map;static _sqlExecutor;static setSqlExecutor(e){this._sqlExecutor=e}static async beginSavepoint(e,t){let n=`sp_${e.replace(/[^a-zA-Z0-9_]/g,`_`)}_${Date.now()}`,r=t?t():{};if(this._snapshots.set(n,{name:e,timestamp:Date.now(),data:r}),this._sqlExecutor)try{await this._sqlExecutor(`SAVEPOINT ${n};`)}catch(e){console.warn(`[SavepointGuard] SQLite SAVEPOINT failed, falling back to memory snapshot:`,e)}return n}static async rollbackToSavepoint(e,t){let n=typeof performance<`u`?performance.now():Date.now(),r=this._snapshots.get(e);if(!r)return console.warn(`[SavepointGuard] Savepoint token '${e}' not found, skipping rollback`),0;if(t){let e=t(r.data);e instanceof Promise&&await e}if(this._sqlExecutor)try{await this._sqlExecutor(`ROLLBACK TO SAVEPOINT ${e};`)}catch(e){console.warn(`[SavepointGuard] SQLite ROLLBACK TO SAVEPOINT failed:`,e)}let i=(typeof performance<`u`?performance.now():Date.now())-n;return i>1&&console.warn(`[SavepointGuard] Rollback exceeded sub-millisecond threshold: ${i.toFixed(3)}ms`),i}static async releaseSavepoint(e){if(this._snapshots.delete(e),this._sqlExecutor)try{await this._sqlExecutor(`RELEASE SAVEPOINT ${e};`)}catch(e){console.warn(`[SavepointGuard] SQLite RELEASE SAVEPOINT failed:`,e)}}static async bracket(e,t,n){let r=await this.beginSavepoint(e,n?.stateCapture);try{let i=await t();if(n?.validatePostcondition&&!n.validatePostcondition(i))throw await this.rollbackToSavepoint(r,n?.stateRestore),Error(`[SavepointGuard] Postcondition failed (Meet = ⊥) for transaction '${e}', rolled back in <1ms`);return await this.releaseSavepoint(r),i}catch(e){throw await this.rollbackToSavepoint(r,n?.stateRestore),e}}static clear(){this._snapshots.clear()}},n=class{static _traces=new Map;static _recentTraces=[];static MAX_RECENT=100;static generateWitnessSignature(e,t,n,r){let i=`${e}:${t}:${n}:${r?`VERIFIED`:`REJECTED`}`,a=0;for(let e=0;e<i.length;e++)a=(a<<5)-a+i.charCodeAt(e)|0;return`sha256:witness:${Math.abs(a).toString(16).padStart(8,`0`)}`}static recordTrace(e){let t=e.id||`trace-${Math.random().toString(16).slice(2,10)}`,n=e.timestamp||Date.now(),r=e.witnessSignature||this.generateWitnessSignature(e.pcardHandle,e.inputHash,e.outputHash,e.status===`SUCCESS`),i={...e,id:t,timestamp:n,witnessSignature:r};return this._traces.set(t,i),this._traces.set(i.witnessSignature,i),this._recentTraces.unshift(i),this._recentTraces.length>this.MAX_RECENT&&this._recentTraces.pop(),i}static getTrace(e){return this._traces.get(e)}static getRecentTraces(){return[...this._recentTraces]}static getTracesForPCard(e){return this._recentTraces.filter(t=>t.pcardHandle===e)}static clear(){this._traces.clear(),this._recentTraces=[]}};async function r(e,r,i,a,o){let s=typeof performance<`u`?performance.now():Date.now(),c=[],l=e.pcard,u=`hash:in:${JSON.stringify(r).slice(0,32)}`,d=e.telemetryInstrumenter?.startSandwichSpan(l.handle);c.push(`[Sandwich] Ingress: Initializing Hoare Triple for PCard '${l.handle}'`);let f=typeof performance<`u`?performance.now():Date.now(),p=!1;try{p=await e.preCondition.evaluate(r,i)}catch(e){c.push(`[Sandwich:V_pre] Exception in precondition evaluation: ${e.message}`),p=!1}let m=(typeof performance<`u`?performance.now():Date.now())-f;if(e.telemetryInstrumenter?.recordStage(d,`prep`,m,p),!p){c.push(`[Sandwich:V_pre] MISU Guard: Precondition '${e.preCondition.name}' failed. Bailing with zero state mutation.`);let t=(typeof performance<`u`?performance.now():Date.now())-s;return e.telemetryInstrumenter?.endSpan(d,`ERROR`,1),{success:!1,trace:n.recordTrace({pcardHandle:l.handle,durationMs:t,preConditionPassed:!1,postConditionPassed:!1,latticeMeet:`BOTTOM`,status:`PRECONDITION_FAILED`,inputHash:u,outputHash:`hash:out:none`,entropyDelta:1,coeffectsSatisfied:!1,kanBoundaryPassed:!1,logs:c}),error:Error(`[MISU] Precondition failed for PCard '${l.handle}': ${e.preCondition.name}`)}}c.push(`[Sandwich:V_pre] Precondition '${e.preCondition.name}' PASSED.`);let h=await t.beginSavepoint(`sandwich_${l.handle.replace(/[^a-zA-Z0-9_]/g,`_`)}`,a);c.push(`[Sandwich:PCard] Savepoint token created: '${h}'`);let g=typeof performance<`u`?performance.now():Date.now(),_,v;try{_=await l.execute(r,i),c.push(`[Sandwich:PCard] Executed morphism '${l.name}'`)}catch(e){v=e instanceof Error?e:Error(String(e)),c.push(`[Sandwich:PCard] Exception in morphism execution: ${v.message}`)}let y=(typeof performance<`u`?performance.now():Date.now())-g;if(e.telemetryInstrumenter?.recordStage(d,`exec`,y,!v),v){c.push(`[Sandwich:PCard] Rolling back savepoint '${h}' due to execution error.`);let r=await t.rollbackToSavepoint(h,o);c.push(`[Sandwich:Rollback] Atomic rollback executed in ${r.toFixed(3)}ms`);let i=(typeof performance<`u`?performance.now():Date.now())-s;return e.telemetryInstrumenter?.endSpan(d,`ERROR`,1),{success:!1,trace:n.recordTrace({pcardHandle:l.handle,durationMs:i,preConditionPassed:!0,postConditionPassed:!1,latticeMeet:`BOTTOM`,status:`ROLLED_BACK`,inputHash:u,outputHash:`hash:out:error`,entropyDelta:0,rollbackDurationMs:r,coeffectsSatisfied:!0,kanBoundaryPassed:!1,logs:c}),error:v}}let b=`hash:out:${JSON.stringify(_).slice(0,32)}`,x=typeof performance<`u`?performance.now():Date.now(),S=!1;try{S=await e.postCondition.evaluate(_,i)}catch(e){c.push(`[Sandwich:V_post] Exception in postcondition evaluation: ${e.message}`),S=!1}let C=!0;if(e.kanFillerCheck)try{C=await e.kanFillerCheck(r,_,i)}catch(e){c.push(`[Sandwich:Kan] Kan filler check exception: ${e.message}`),C=!1}let w=(typeof performance<`u`?performance.now():Date.now())-x,T=S&&C;if(e.telemetryInstrumenter?.recordStage(d,`post`,w,T),!T){c.push(`[Sandwich:V_post] Postcondition / Kan filler check FAILED (Lattice Meet = ⊥). Executing <1ms Savepoint rollback.`);let r=await t.rollbackToSavepoint(h,o);c.push(`[Sandwich:Rollback] Atomic rollback executed in ${r.toFixed(3)}ms`);let i=(typeof performance<`u`?performance.now():Date.now())-s;return e.telemetryInstrumenter?.endSpan(d,`ERROR`,0),{success:!1,trace:n.recordTrace({pcardHandle:l.handle,durationMs:i,preConditionPassed:!0,postConditionPassed:!1,latticeMeet:`BOTTOM`,status:`POSTCONDITION_FAILED`,inputHash:u,outputHash:b,entropyDelta:0,rollbackDurationMs:r,coeffectsSatisfied:!0,kanBoundaryPassed:C,logs:c}),error:Error(`[MISU] Postcondition Lattice Meet = ⊥ for PCard '${l.handle}'`)}}c.push(`[Sandwich:Commit] VCard verification PASS: Lattice Meet = ⊤. Committing savepoint.`),await t.releaseSavepoint(h);let E=(typeof performance<`u`?performance.now():Date.now())-s;e.telemetryInstrumenter?.endSpan(d,`OK`,0);let D=n.recordTrace({pcardHandle:l.handle,durationMs:E,preConditionPassed:!0,postConditionPassed:!0,latticeMeet:`TOP`,status:`SUCCESS`,inputHash:u,outputHash:b,entropyDelta:0,coeffectsSatisfied:!0,kanBoundaryPassed:!0,logs:c});return{success:!0,output:_,trace:D}}var i=class{static _activeSpans=new Map;static _completedSummaries=[];static startSandwichSpan(t){let n=`trace-${Math.random().toString(16).slice(2,10)}-${Date.now()}`,r=typeof performance<`u`?performance.now():Date.now();this._activeSpans.set(n,{handle:t,startTime:r,traceId:n,stages:{}});let i=e();return i&&i.api.pushMeasurement({type:`vcard_sandwich_span_start`,values:{startTime:r},context:{traceId:n,pcardHandle:t,spanName:`pcard.sandwich:${t}`}}),n}static recordStage(t,n,r,i){let a=this._activeSpans.get(t);if(!a)return;a.stages[n]={name:n,durationMs:r,success:i,timestamp:Date.now()};let o=e();o&&o.api.pushMeasurement({type:`vcard_stage_${n}`,values:{durationMs:r,success:+!!i},context:{traceId:t,pcardHandle:a.handle,stageName:`vcard.${n}`}})}static endSpan(t,n,r=0){let i=this._activeSpans.get(t);if(!i)return;let a=(typeof performance<`u`?performance.now():Date.now())-i.startTime,o={traceId:t,pcardHandle:i.handle,stages:i.stages,status:n,entropyDelta:r,totalDurationMs:a};this._completedSummaries.unshift(o),this._completedSummaries.length>50&&this._completedSummaries.pop(),this._activeSpans.delete(t);let s=e();return s&&(s.api.pushMeasurement({type:`vcard_sandwich_span_end`,values:{totalDurationMs:a,entropyDelta:r},context:{traceId:t,pcardHandle:i.handle,status:n}}),n===`ERROR`&&s.api.pushError(Error(`[VCard Sandwich Telemetry] Execution failed: ${i.handle}`),{context:{traceId:t,pcardHandle:i.handle,entropyDelta:String(r)}})),o}static getCompletedSummaries(){return[...this._completedSummaries]}static clear(){this._activeSpans.clear(),this._completedSummaries=[]}};export{r as n,n as r,i as t};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{n as r}from"./vfsHandles.B-nczBRy.js";import"./mcardVfs.Bj-RA0p7.js";var i=e(t(),1),a=n(),o=({mcard:e})=>{let[t,n]=(0,i.useState)(36),[o,s]=(0,i.useState)(`The quick brown fox jumps over the lazy dog 1234567890`),[c,l]=(0,i.useState)(`waterfall`),u=r(e.path,e.hash),d=(e.path||e.name||``).split(`.`).pop()?.toLowerCase()||`woff2`,f=`MCardFont_${e.hash?.substring(0,8)||`preview`}`,p=d.toUpperCase();return(0,i.useEffect)(()=>{if(!u)return;let e=`style-${f}`,t=document.getElementById(e);return t||(t=document.createElement(`style`),t.id=e,document.head.appendChild(t)),t.textContent=`
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{n as r}from"./vfsHandles.IX_wTpw_.js";import"./mcardVfs.2UOw9Z-r.js";var i=e(t(),1),a=n(),o=({mcard:e})=>{let[t,n]=(0,i.useState)(36),[o,s]=(0,i.useState)(`The quick brown fox jumps over the lazy dog 1234567890`),[c,l]=(0,i.useState)(`waterfall`),u=r(e.path,e.hash),d=(e.path||e.name||``).split(`.`).pop()?.toLowerCase()||`woff2`,f=`MCardFont_${e.hash?.substring(0,8)||`preview`}`,p=d.toUpperCase();return(0,i.useEffect)(()=>{if(!u)return;let e=`style-${f}`,t=document.getElementById(e);return t||(t=document.createElement(`style`),t.id=e,document.head.appendChild(t)),t.textContent=`
2
2
  @font-face {
3
3
  font-family: '${f}';
4
4
  src: url('${u}') format('${d===`woff2`?`woff2`:d===`woff`?`woff`:d===`ttf`?`truetype`:`opentype`}');
@@ -0,0 +1 @@
1
+ import"./polyfills._3wYPjZf.js";
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{h as r}from"./themeStore.zUMFLo3Q.js";import{n as i}from"./vfsHandles.B-nczBRy.js";import"./mcardVfs.Bj-RA0p7.js";var a=e(t(),1);function o(e){let[t,n]=(0,a.useState)(null),[o,s]=(0,a.useState)(!0),[c,l]=(0,a.useState)(null),[u,d]=(0,a.useState)(null),[f,p]=(0,a.useState)(null),[m,h]=(0,a.useState)(0),g=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let t=!1;return s(!0),l(null),d(null),g.current&&=(URL.revokeObjectURL(g.current),null),(async()=>{try{if(typeof e.content==`string`&&e.content.startsWith(`data:image/`)){t||(n(e.content),p(`data-uri`));return}if(e.content instanceof Uint8Array&&e.content.length>0){let r=e.mimeType||`image/png`,i=new Blob([e.content],{type:r}),a=URL.createObjectURL(i);g.current=a,t||(n(a),p(`blob-url`));return}let a=(e.path||e.handle||``).replace(/:/g,`/`);if(e.hash)try{let i=r.readFileByHash(e.hash),a=i instanceof Uint8Array?i:i?.payload?.kind===`binary`?i.payload.data||i.payload.bytes:void 0;if(a&&a.length>0){let r=e.mimeType||i?.payload?.mimeType||`image/png`,o=new Blob([a],{type:r}),s=URL.createObjectURL(o);g.current=s,t||(n(s),p(`cas-memory`));return}}catch{}if(a&&r.exists(a)){let i=r.readFile(a),o=i instanceof Uint8Array?i:i?.payload?.kind===`binary`?i.payload.data||i.payload.bytes:void 0;if(o&&o.length>0){let r=e.mimeType||i?.payload?.mimeType||`image/png`,a=new Blob([o],{type:r}),s=URL.createObjectURL(a);g.current=s,t||(n(s),p(`cas-memory`));return}}let o=i(e.path||e.handle,e.hash);t||(n(o),p(`server-stream`))}catch(e){t||(l(e instanceof Error?e.message:`Failed to resolve image asset`),s(!1))}})(),()=>{t=!0,g.current&&=(URL.revokeObjectURL(g.current),null)}},[e.handle,e.hash,e.path,e.content,m]),(0,a.useEffect)(()=>{if(!t)return;let e=!1;if(typeof window>`u`||typeof Image>`u`){s(!1);return}let n=new Image;return n.onload=()=>{e||(d({width:n.naturalWidth,height:n.naturalHeight,aspectRatio:n.naturalHeight>0?n.naturalWidth/n.naturalHeight:1}),s(!1))},n.onerror=()=>{e||(l(`Failed to load image from source (${f})`),s(!1))},n.src=t,()=>{e=!0,n.onload=null,n.onerror=null}},[t,f]),{src:t,isLoading:o,error:c,dimensions:u,sourceType:f,retry:()=>h(e=>e+1)}}var s=n(),c=({dimensions:e,sizeBytes:t,hash:n,mimeType:r})=>{let i=e=>!e||e<=0?null:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(2)} MB`,a=e=>e?e.includes(`png`)?`PNG`:e.includes(`jpeg`)||e.includes(`jpg`)?`JPEG`:e.includes(`webp`)?`WebP`:e.includes(`gif`)?`GIF`:e.includes(`svg`)?`SVG`:e.includes(`bmp`)?`BMP`:e.includes(`icon`)||e.includes(`ico`)?`ICO`:e.includes(`avif`)?`AVIF`:e.split(`/`).pop()?.toUpperCase()||`IMG`:`IMG`,o=i(t),c=a(r);return(0,s.jsxs)(`div`,{"data-testid":`image-metadata-badge`,style:{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`1px 8px`,borderRadius:`3px`,backgroundColor:`rgba(255, 255, 255, 0.08)`,border:`1px solid rgba(255, 255, 255, 0.12)`,fontSize:`10px`,color:`#aaaaaa`,fontFamily:`monospace`},children:[(0,s.jsx)(`span`,{style:{color:`#75beff`,fontWeight:600},children:c}),e&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{style:{opacity:.4},children:`|`}),(0,s.jsxs)(`span`,{style:{color:`#e0e0e0`},children:[e.width,`×`,e.height,` px`]})]}),o&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{style:{opacity:.4},children:`|`}),(0,s.jsx)(`span`,{children:o})]}),n&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{style:{opacity:.4},children:`|`}),(0,s.jsxs)(`span`,{title:n,style:{opacity:.8},children:[`#`,n.slice(0,8)]})]})]})},l=({scale:e,isPixelated:t,theme:n,dimensions:r,sizeBytes:i,hash:a,mimeType:o,onZoomIn:l,onZoomOut:u,onZoomFit:d,onZoomReset:f,onTogglePixelated:p,onCycleTheme:m})=>{let h=e=>{switch(e){case`light-checkerboard`:return`Theme: Light Grid`;case`pure-black`:return`Theme: Black`;case`pure-white`:return`Theme: White`;default:return`Theme: Dark Grid`}},g={padding:`2px 7px`,backgroundColor:`#333333`,color:`#ffffff`,border:`none`,borderRadius:`2px`,fontSize:`11px`,cursor:`pointer`,userSelect:`none`,display:`inline-flex`,alignItems:`center`,gap:`4px`};return(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`5px 12px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid var(--vscode-editorGroup-border, #333333)`,color:`var(--vscode-foreground, #cccccc)`,fontSize:`11px`,flexShrink:0,gap:`12px`,overflowX:`auto`},children:[(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,s.jsxs)(`span`,{style:{minWidth:`70px`,userSelect:`none`},children:[`Zoom: `,(0,s.jsxs)(`b`,{children:[Math.round(e*100),`%`]})]}),(0,s.jsx)(`button`,{type:`button`,onClick:u,style:g,title:`Zoom out`,children:`-`}),(0,s.jsx)(`button`,{type:`button`,onClick:d,style:g,title:`Fit image to viewport`,children:`Fit`}),(0,s.jsx)(`button`,{type:`button`,onClick:f,style:g,title:`Reset zoom to 100%`,children:`100%`}),(0,s.jsx)(`button`,{type:`button`,onClick:l,style:g,title:`Zoom in`,children:`+`}),(0,s.jsx)(`span`,{style:{opacity:.2,margin:`0 2px`},children:`|`}),(0,s.jsxs)(`button`,{type:`button`,onClick:p,style:{...g,backgroundColor:t?`var(--vscode-button-background, #0e639c)`:`#333`},title:`Toggle crisp pixelated rendering vs smooth interpolation`,children:[`Pixelated: `,t?`ON`:`OFF`]}),(0,s.jsx)(`button`,{type:`button`,onClick:m,style:g,title:`Cycle transparency background theme`,children:h(n)})]}),(0,s.jsx)(`div`,{style:{display:`flex`,alignItems:`center`},children:(0,s.jsx)(c,{dimensions:r,sizeBytes:i,hash:a,mimeType:o})})]})},u=({containerRef:e,src:t,alt:n,scale:r,pan:i,setPan:o,isPixelated:c,theme:l,isLoading:u,error:d,mcard:f,onRetry:p})=>{let[m,h]=(0,a.useState)(!1),g=(0,a.useRef)({x:0,y:0});return(0,s.jsxs)(`div`,{ref:e,onPointerDown:e=>{r<=1||(h(!0),g.current={x:e.clientX-i.x,y:e.clientY-i.y},e.target.setPointerCapture?.(e.pointerId))},onPointerMove:e=>{m&&o({x:e.clientX-g.current.x,y:e.clientY-g.current.y})},onPointerUp:e=>{h(!1),e.target.releasePointerCapture?.(e.pointerId)},style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`,overflow:`hidden`,position:`relative`,cursor:r>1?m?`grabbing`:`grab`:`default`,userSelect:`none`,...(()=>{switch(l){case`light-checkerboard`:return{backgroundColor:`#f5f5f5`,backgroundImage:`linear-gradient(45deg, #e0e0e0 25%, transparent 25%), linear-gradient(-45deg, #e0e0e0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e0e0e0 75%), linear-gradient(-45deg, transparent 75%, #e0e0e0 75%)`,backgroundSize:`20px 20px`,backgroundPosition:`0 0, 0 10px, 10px -10px, -10px 0px`};case`pure-black`:return{backgroundColor:`#000000`};case`pure-white`:return{backgroundColor:`#ffffff`};default:return{backgroundColor:`#181818`,backgroundImage:`linear-gradient(45deg, #222 25%, transparent 25%), linear-gradient(-45deg, #222 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #222 75%), linear-gradient(-45deg, transparent 75%, #222 75%)`,backgroundSize:`20px 20px`,backgroundPosition:`0 0, 0 10px, 10px -10px, -10px 0px`}}})()},children:[u&&(0,s.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,gap:`8px`,color:`#888888`},children:[(0,s.jsx)(`div`,{style:{width:`24px`,height:`24px`,border:`2px solid #555555`,borderTopColor:`#75beff`,borderRadius:`50%`,animation:`spin 1s linear infinite`}}),(0,s.jsx)(`span`,{style:{fontSize:`11px`},children:`Loading image asset...`})]}),!u&&d&&(0,s.jsxs)(`div`,{"data-testid":`image-error-boundary`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,gap:`12px`,padding:`24px`,backgroundColor:`rgba(30, 30, 30, 0.92)`,borderRadius:`6px`,border:`1px solid #444444`,maxWidth:`440px`,textAlign:`center`,boxShadow:`0 8px 24px rgba(0,0,0,0.6)`},children:[(0,s.jsx)(`span`,{style:{fontSize:`28px`},children:`⚠️`}),(0,s.jsx)(`span`,{style:{color:`#f48771`,fontSize:`13px`,fontWeight:600},children:`Failed to Load Image Asset`}),(0,s.jsxs)(`span`,{style:{color:`#aaaaaa`,fontSize:`11px`,wordBreak:`break-all`},children:[`Path: `,f.path||f.handle]}),f.hash&&(0,s.jsxs)(`span`,{style:{color:`#666666`,fontSize:`10px`,fontFamily:`monospace`},children:[`Hash: `,f.hash]}),(0,s.jsx)(`div`,{style:{display:`flex`,gap:`8px`,marginTop:`6px`},children:(0,s.jsx)(`button`,{type:`button`,onClick:p,style:{padding:`4px 12px`,background:`var(--vscode-button-background, #0e639c)`,color:`#ffffff`,border:`none`,borderRadius:`3px`,cursor:`pointer`,fontSize:`11px`,fontWeight:600},children:`Retry Load`})})]}),!u&&!d&&t&&(0,s.jsx)(`img`,{src:t,alt:n||f.name,style:{transform:`translate(${i.x}px, ${i.y}px) scale(${r})`,transformOrigin:`center center`,imageRendering:c?`pixelated`:`auto`,boxShadow:`0 4px 20px rgba(0,0,0,0.5)`,borderRadius:`2px`,pointerEvents:`none`,maxWidth:`none`,maxHeight:`none`,transition:m?`none`:`transform 0.1s ease-out`}})]})},d=({mcard:e})=>{let[t,n]=(0,a.useState)(1),[r,i]=(0,a.useState)(!1),[c,d]=(0,a.useState)(`dark-checkerboard`),[f,p]=(0,a.useState)({x:0,y:0}),m=(0,a.useRef)(null),h=o(e),g=(0,a.useCallback)(()=>{if(!m.current||!h.dimensions){n(1),p({x:0,y:0});return}let{clientWidth:e,clientHeight:t}=m.current,r=Math.min((e-48)/h.dimensions.width,(t-48)/h.dimensions.height,1);n(Math.max(.1,Number(r.toFixed(2)))),p({x:0,y:0})},[h.dimensions]),_=(0,a.useCallback)(()=>{n(1),p({x:0,y:0})},[]);return(0,s.jsxs)(`div`,{className:`card-panel-image-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`#181818`,overflow:`hidden`},children:[(0,s.jsx)(l,{scale:t,isPixelated:r,theme:c,dimensions:h.dimensions,sizeBytes:e.sizeBytes,hash:e.hash,mimeType:e.mimeType,onZoomIn:()=>n(e=>Math.min(10,Number((e+.25).toFixed(2)))),onZoomOut:()=>n(e=>Math.max(.1,Number((e-.25).toFixed(2)))),onZoomFit:g,onZoomReset:_,onTogglePixelated:()=>i(e=>!e),onCycleTheme:()=>{let e=[`dark-checkerboard`,`light-checkerboard`,`pure-black`,`pure-white`];d(t=>e[(e.indexOf(t)+1)%e.length])}}),(0,s.jsx)(u,{containerRef:m,src:h.src,alt:e.name,scale:t,pan:f,setPan:p,isPixelated:r,theme:c,isLoading:h.isLoading,error:h.error,mcard:e,onRetry:h.retry})]})};export{d as ImageViewlet};
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{h as r}from"./themeStore.CEt0e54l.js";import{n as i}from"./vfsHandles.IX_wTpw_.js";import"./mcardVfs.2UOw9Z-r.js";var a=e(t(),1);function o(e){let[t,n]=(0,a.useState)(null),[o,s]=(0,a.useState)(!0),[c,l]=(0,a.useState)(null),[u,d]=(0,a.useState)(null),[f,p]=(0,a.useState)(null),[m,h]=(0,a.useState)(0),g=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let t=!1;return s(!0),l(null),d(null),g.current&&=(URL.revokeObjectURL(g.current),null),(async()=>{try{if(typeof e.content==`string`&&e.content.startsWith(`data:image/`)){t||(n(e.content),p(`data-uri`));return}if(e.content instanceof Uint8Array&&e.content.length>0){let r=e.mimeType||`image/png`,i=new Blob([e.content],{type:r}),a=URL.createObjectURL(i);g.current=a,t||(n(a),p(`blob-url`));return}let a=(e.path||e.handle||``).replace(/:/g,`/`);if(e.hash)try{let i=r.readFileByHash(e.hash),a=i instanceof Uint8Array?i:i?.payload?.kind===`binary`?i.payload.data||i.payload.bytes:void 0;if(a&&a.length>0){let r=e.mimeType||i?.payload?.mimeType||`image/png`,o=new Blob([a],{type:r}),s=URL.createObjectURL(o);g.current=s,t||(n(s),p(`cas-memory`));return}}catch{}if(a&&r.exists(a)){let i=r.readFile(a),o=i instanceof Uint8Array?i:i?.payload?.kind===`binary`?i.payload.data||i.payload.bytes:void 0;if(o&&o.length>0){let r=e.mimeType||i?.payload?.mimeType||`image/png`,a=new Blob([o],{type:r}),s=URL.createObjectURL(a);g.current=s,t||(n(s),p(`cas-memory`));return}}let o=i(e.path||e.handle,e.hash);t||(n(o),p(`server-stream`))}catch(e){t||(l(e instanceof Error?e.message:`Failed to resolve image asset`),s(!1))}})(),()=>{t=!0,g.current&&=(URL.revokeObjectURL(g.current),null)}},[e.handle,e.hash,e.path,e.content,m]),(0,a.useEffect)(()=>{if(!t)return;let e=!1;if(typeof window>`u`||typeof Image>`u`){s(!1);return}let n=new Image;return n.onload=()=>{e||(d({width:n.naturalWidth,height:n.naturalHeight,aspectRatio:n.naturalHeight>0?n.naturalWidth/n.naturalHeight:1}),s(!1))},n.onerror=()=>{e||(l(`Failed to load image from source (${f})`),s(!1))},n.src=t,()=>{e=!0,n.onload=null,n.onerror=null}},[t,f]),{src:t,isLoading:o,error:c,dimensions:u,sourceType:f,retry:()=>h(e=>e+1)}}var s=n(),c=({dimensions:e,sizeBytes:t,hash:n,mimeType:r})=>{let i=e=>!e||e<=0?null:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(2)} MB`,a=e=>e?e.includes(`png`)?`PNG`:e.includes(`jpeg`)||e.includes(`jpg`)?`JPEG`:e.includes(`webp`)?`WebP`:e.includes(`gif`)?`GIF`:e.includes(`svg`)?`SVG`:e.includes(`bmp`)?`BMP`:e.includes(`icon`)||e.includes(`ico`)?`ICO`:e.includes(`avif`)?`AVIF`:e.split(`/`).pop()?.toUpperCase()||`IMG`:`IMG`,o=i(t),c=a(r);return(0,s.jsxs)(`div`,{"data-testid":`image-metadata-badge`,style:{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`1px 8px`,borderRadius:`3px`,backgroundColor:`rgba(255, 255, 255, 0.08)`,border:`1px solid rgba(255, 255, 255, 0.12)`,fontSize:`10px`,color:`#aaaaaa`,fontFamily:`monospace`},children:[(0,s.jsx)(`span`,{style:{color:`#75beff`,fontWeight:600},children:c}),e&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{style:{opacity:.4},children:`|`}),(0,s.jsxs)(`span`,{style:{color:`#e0e0e0`},children:[e.width,`×`,e.height,` px`]})]}),o&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{style:{opacity:.4},children:`|`}),(0,s.jsx)(`span`,{children:o})]}),n&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(`span`,{style:{opacity:.4},children:`|`}),(0,s.jsxs)(`span`,{title:n,style:{opacity:.8},children:[`#`,n.slice(0,8)]})]})]})},l=({scale:e,isPixelated:t,theme:n,dimensions:r,sizeBytes:i,hash:a,mimeType:o,onZoomIn:l,onZoomOut:u,onZoomFit:d,onZoomReset:f,onTogglePixelated:p,onCycleTheme:m})=>{let h=e=>{switch(e){case`light-checkerboard`:return`Theme: Light Grid`;case`pure-black`:return`Theme: Black`;case`pure-white`:return`Theme: White`;default:return`Theme: Dark Grid`}},g={padding:`2px 7px`,backgroundColor:`#333333`,color:`#ffffff`,border:`none`,borderRadius:`2px`,fontSize:`11px`,cursor:`pointer`,userSelect:`none`,display:`inline-flex`,alignItems:`center`,gap:`4px`};return(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`5px 12px`,backgroundColor:`var(--vscode-sideBar-background, #252526)`,borderBottom:`1px solid var(--vscode-editorGroup-border, #333333)`,color:`var(--vscode-foreground, #cccccc)`,fontSize:`11px`,flexShrink:0,gap:`12px`,overflowX:`auto`},children:[(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,s.jsxs)(`span`,{style:{minWidth:`70px`,userSelect:`none`},children:[`Zoom: `,(0,s.jsxs)(`b`,{children:[Math.round(e*100),`%`]})]}),(0,s.jsx)(`button`,{type:`button`,onClick:u,style:g,title:`Zoom out`,children:`-`}),(0,s.jsx)(`button`,{type:`button`,onClick:d,style:g,title:`Fit image to viewport`,children:`Fit`}),(0,s.jsx)(`button`,{type:`button`,onClick:f,style:g,title:`Reset zoom to 100%`,children:`100%`}),(0,s.jsx)(`button`,{type:`button`,onClick:l,style:g,title:`Zoom in`,children:`+`}),(0,s.jsx)(`span`,{style:{opacity:.2,margin:`0 2px`},children:`|`}),(0,s.jsxs)(`button`,{type:`button`,onClick:p,style:{...g,backgroundColor:t?`var(--vscode-button-background, #0e639c)`:`#333`},title:`Toggle crisp pixelated rendering vs smooth interpolation`,children:[`Pixelated: `,t?`ON`:`OFF`]}),(0,s.jsx)(`button`,{type:`button`,onClick:m,style:g,title:`Cycle transparency background theme`,children:h(n)})]}),(0,s.jsx)(`div`,{style:{display:`flex`,alignItems:`center`},children:(0,s.jsx)(c,{dimensions:r,sizeBytes:i,hash:a,mimeType:o})})]})},u=({containerRef:e,src:t,alt:n,scale:r,pan:i,setPan:o,isPixelated:c,theme:l,isLoading:u,error:d,mcard:f,onRetry:p})=>{let[m,h]=(0,a.useState)(!1),g=(0,a.useRef)({x:0,y:0});return(0,s.jsxs)(`div`,{ref:e,onPointerDown:e=>{r<=1||(h(!0),g.current={x:e.clientX-i.x,y:e.clientY-i.y},e.target.setPointerCapture?.(e.pointerId))},onPointerMove:e=>{m&&o({x:e.clientX-g.current.x,y:e.clientY-g.current.y})},onPointerUp:e=>{h(!1),e.target.releasePointerCapture?.(e.pointerId)},style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`,overflow:`hidden`,position:`relative`,cursor:r>1?m?`grabbing`:`grab`:`default`,userSelect:`none`,...(()=>{switch(l){case`light-checkerboard`:return{backgroundColor:`#f5f5f5`,backgroundImage:`linear-gradient(45deg, #e0e0e0 25%, transparent 25%), linear-gradient(-45deg, #e0e0e0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e0e0e0 75%), linear-gradient(-45deg, transparent 75%, #e0e0e0 75%)`,backgroundSize:`20px 20px`,backgroundPosition:`0 0, 0 10px, 10px -10px, -10px 0px`};case`pure-black`:return{backgroundColor:`#000000`};case`pure-white`:return{backgroundColor:`#ffffff`};default:return{backgroundColor:`#181818`,backgroundImage:`linear-gradient(45deg, #222 25%, transparent 25%), linear-gradient(-45deg, #222 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #222 75%), linear-gradient(-45deg, transparent 75%, #222 75%)`,backgroundSize:`20px 20px`,backgroundPosition:`0 0, 0 10px, 10px -10px, -10px 0px`}}})()},children:[u&&(0,s.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,gap:`8px`,color:`#888888`},children:[(0,s.jsx)(`div`,{style:{width:`24px`,height:`24px`,border:`2px solid #555555`,borderTopColor:`#75beff`,borderRadius:`50%`,animation:`spin 1s linear infinite`}}),(0,s.jsx)(`span`,{style:{fontSize:`11px`},children:`Loading image asset...`})]}),!u&&d&&(0,s.jsxs)(`div`,{"data-testid":`image-error-boundary`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,gap:`12px`,padding:`24px`,backgroundColor:`rgba(30, 30, 30, 0.92)`,borderRadius:`6px`,border:`1px solid #444444`,maxWidth:`440px`,textAlign:`center`,boxShadow:`0 8px 24px rgba(0,0,0,0.6)`},children:[(0,s.jsx)(`span`,{style:{fontSize:`28px`},children:`⚠️`}),(0,s.jsx)(`span`,{style:{color:`#f48771`,fontSize:`13px`,fontWeight:600},children:`Failed to Load Image Asset`}),(0,s.jsxs)(`span`,{style:{color:`#aaaaaa`,fontSize:`11px`,wordBreak:`break-all`},children:[`Path: `,f.path||f.handle]}),f.hash&&(0,s.jsxs)(`span`,{style:{color:`#666666`,fontSize:`10px`,fontFamily:`monospace`},children:[`Hash: `,f.hash]}),(0,s.jsx)(`div`,{style:{display:`flex`,gap:`8px`,marginTop:`6px`},children:(0,s.jsx)(`button`,{type:`button`,onClick:p,style:{padding:`4px 12px`,background:`var(--vscode-button-background, #0e639c)`,color:`#ffffff`,border:`none`,borderRadius:`3px`,cursor:`pointer`,fontSize:`11px`,fontWeight:600},children:`Retry Load`})})]}),!u&&!d&&t&&(0,s.jsx)(`img`,{src:t,alt:n||f.name,style:{transform:`translate(${i.x}px, ${i.y}px) scale(${r})`,transformOrigin:`center center`,imageRendering:c?`pixelated`:`auto`,boxShadow:`0 4px 20px rgba(0,0,0,0.5)`,borderRadius:`2px`,pointerEvents:`none`,maxWidth:`none`,maxHeight:`none`,transition:m?`none`:`transform 0.1s ease-out`}})]})},d=({mcard:e})=>{let[t,n]=(0,a.useState)(1),[r,i]=(0,a.useState)(!1),[c,d]=(0,a.useState)(`dark-checkerboard`),[f,p]=(0,a.useState)({x:0,y:0}),m=(0,a.useRef)(null),h=o(e),g=(0,a.useCallback)(()=>{if(!m.current||!h.dimensions){n(1),p({x:0,y:0});return}let{clientWidth:e,clientHeight:t}=m.current,r=Math.min((e-48)/h.dimensions.width,(t-48)/h.dimensions.height,1);n(Math.max(.1,Number(r.toFixed(2)))),p({x:0,y:0})},[h.dimensions]),_=(0,a.useCallback)(()=>{n(1),p({x:0,y:0})},[]);return(0,s.jsxs)(`div`,{className:`card-panel-image-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`#181818`,overflow:`hidden`},children:[(0,s.jsx)(l,{scale:t,isPixelated:r,theme:c,dimensions:h.dimensions,sizeBytes:e.sizeBytes,hash:e.hash,mimeType:e.mimeType,onZoomIn:()=>n(e=>Math.min(10,Number((e+.25).toFixed(2)))),onZoomOut:()=>n(e=>Math.max(.1,Number((e-.25).toFixed(2)))),onZoomFit:g,onZoomReset:_,onTogglePixelated:()=>i(e=>!e),onCycleTheme:()=>{let e=[`dark-checkerboard`,`light-checkerboard`,`pure-black`,`pure-white`];d(t=>e[(e.indexOf(t)+1)%e.length])}}),(0,s.jsx)(u,{containerRef:m,src:h.src,alt:e.name,scale:t,pan:f,setPan:p,isPixelated:r,theme:c,isLoading:h.isLoading,error:h.error,mcard:e,onRetry:h.retry})]})};export{d as ImageViewlet};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{a as r,i,l as a,n as o,r as s,t as c,u as l}from"./themeStore.zUMFLo3Q.js";import{t as u}from"./rendererEventBus.CyFnSRLk.js";import{t as d}from"./useMCardHydration.Co47OH3D.js";import{t as f}from"./RendererLoader.D-ThYU1B.js";var p=e(t(),1);function m(e={},t=!1){return{displayMode:t,throwOnError:!1,errorColor:e[`--mcard-status-error`]||`#f48771`}}var h=n(),g=({mcard:e})=>{let{content:t,isLoading:n}=d(e),g=(t||(typeof e?.content==`string`?e.content:``)).trim(),[_,v]=(0,p.useState)(``),[y,b]=(0,p.useState)(null),[x,S]=(0,p.useState)(!1),[C,w]=(0,p.useState)(!0),[T,E]=(0,p.useState)(!1),[D,O]=(0,p.useState)(1.2),[k,A]=(0,p.useState)(null),j=p.useMemo(()=>{let e=g;return e.startsWith(`$$`)&&e.endsWith(`$$`)&&e.length>=4?e.slice(2,-2).trim():e.startsWith(`$`)&&e.endsWith(`$`)&&e.length>=2?e.slice(1,-1).trim():e.startsWith(`\\[`)&&e.endsWith(`\\]`)&&e.length>=4?e.slice(2,-2).trim():e},[g]);return(0,p.useEffect)(()=>{let e=!0;if(!j){v(``),b(null);return}S(!0),b(null);let t=l({theme:r.get(),density:o.get(),responsive:i.get(),context:c.get(),environment:s.get()},a);return f(`katex`).then(n=>{let r=m(t,C),i=n.renderToString(j,r);e&&(v(i),S(!1))}).catch(t=>{e&&(b(t?.message||String(t)),S(!1))}),()=>{e=!1}},[j,C]),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`,width:`100%`,background:`var(--mcard-bg-canvas, #1e1e1e)`,color:`var(--mcard-text-primary, #ccc)`,overflow:`hidden`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 12px`,borderBottom:`1px solid var(--mcard-border-default, #333)`,background:`var(--mcard-bg-elevated, #252526)`,fontSize:`12px`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,h.jsx)(`span`,{style:{fontWeight:600,color:`var(--mcard-accent-primary, #75beff)`},children:`∑ KaTeX Formula`}),k&&(0,h.jsx)(`span`,{style:{color:`var(--mcard-status-success, #89d185)`,fontSize:`11px`},children:k}),x&&(0,h.jsx)(`span`,{style:{color:`var(--mcard-text-muted, #858585)`,fontSize:`11px`},children:`Rendering...`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,h.jsx)(`button`,{onClick:()=>O(e=>Math.min(e+.2,2.5)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`A+`}),(0,h.jsx)(`button`,{onClick:()=>O(e=>Math.max(e-.2,.8)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`A-`}),(0,h.jsx)(`button`,{onClick:()=>w(!C),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:C?`Block`:`Inline`}),(0,h.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(g),A(`LaTeX copied`),setTimeout(()=>A(null),1500),u({type:`render:katex:copy_latex`,targetHandle:e?.handle||`mcard:katex`,timestamp:Date.now(),payload:{formula:g}})},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Copy LaTeX`}),(0,h.jsx)(`button`,{onClick:()=>{_&&(navigator.clipboard.writeText(_),A(`HTML copied`),setTimeout(()=>A(null),1500))},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Copy HTML`}),(0,h.jsx)(`button`,{onClick:()=>E(!T),style:{padding:`2px 8px`,background:T?`var(--mcard-accent-primary, #75beff)`:`var(--mcard-bg-surface, #2d2d30)`,color:T?`#000`:`inherit`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,borderRadius:`3px`,cursor:`pointer`},children:T?`Formula`:`Source`})]})]}),T?(0,h.jsx)(`pre`,{style:{margin:0,padding:`16px`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`13px`,background:`var(--mcard-bg-surface, #181818)`},children:g}):y?(0,h.jsxs)(`div`,{style:{padding:`16px`,color:`var(--mcard-status-error, #f48771)`,background:`rgba(244,135,113,0.08)`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`12px`},children:[(0,h.jsx)(`strong`,{children:`KaTeX Syntax Diagnostic:`}),(0,h.jsx)(`pre`,{style:{marginTop:`8px`,whiteSpace:`pre-wrap`},children:y})]}):(0,h.jsx)(`div`,{style:{flex:1,overflow:`auto`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`24px`},children:(0,h.jsx)(`div`,{style:{fontSize:`${D}rem`,textAlign:`center`,maxWidth:`100%`,overflowX:`auto`,padding:`12px`},dangerouslySetInnerHTML:{__html:_}})})]})};export{g as KatexFormulaViewlet,g as default};
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{a as r,i,l as a,n as o,r as s,t as c,u as l}from"./themeStore.CEt0e54l.js";import{t as u}from"./rendererEventBus.DMH9afq9.js";import{t as d}from"./useMCardHydration.7Z-HfBh5.js";import{t as f}from"./RendererLoader.D-ThYU1B.js";var p=e(t(),1);function m(e={},t=!1){return{displayMode:t,throwOnError:!1,errorColor:e[`--mcard-status-error`]||`#f48771`}}var h=n(),g=({mcard:e})=>{let{content:t,isLoading:n}=d(e),g=(t||(typeof e?.content==`string`?e.content:``)).trim(),[_,v]=(0,p.useState)(``),[y,b]=(0,p.useState)(null),[x,S]=(0,p.useState)(!1),[C,w]=(0,p.useState)(!0),[T,E]=(0,p.useState)(!1),[D,O]=(0,p.useState)(1.2),[k,A]=(0,p.useState)(null),j=p.useMemo(()=>{let e=g;return e.startsWith(`$$`)&&e.endsWith(`$$`)&&e.length>=4?e.slice(2,-2).trim():e.startsWith(`$`)&&e.endsWith(`$`)&&e.length>=2?e.slice(1,-1).trim():e.startsWith(`\\[`)&&e.endsWith(`\\]`)&&e.length>=4?e.slice(2,-2).trim():e},[g]);return(0,p.useEffect)(()=>{let e=!0;if(!j){v(``),b(null);return}S(!0),b(null);let t=l({theme:r.get(),density:o.get(),responsive:i.get(),context:c.get(),environment:s.get()},a);return f(`katex`).then(n=>{let r=m(t,C),i=n.renderToString(j,r);e&&(v(i),S(!1))}).catch(t=>{e&&(b(t?.message||String(t)),S(!1))}),()=>{e=!1}},[j,C]),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`,width:`100%`,background:`var(--mcard-bg-canvas, #1e1e1e)`,color:`var(--mcard-text-primary, #ccc)`,overflow:`hidden`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 12px`,borderBottom:`1px solid var(--mcard-border-default, #333)`,background:`var(--mcard-bg-elevated, #252526)`,fontSize:`12px`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,h.jsx)(`span`,{style:{fontWeight:600,color:`var(--mcard-accent-primary, #75beff)`},children:`∑ KaTeX Formula`}),k&&(0,h.jsx)(`span`,{style:{color:`var(--mcard-status-success, #89d185)`,fontSize:`11px`},children:k}),x&&(0,h.jsx)(`span`,{style:{color:`var(--mcard-text-muted, #858585)`,fontSize:`11px`},children:`Rendering...`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,h.jsx)(`button`,{onClick:()=>O(e=>Math.min(e+.2,2.5)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`A+`}),(0,h.jsx)(`button`,{onClick:()=>O(e=>Math.max(e-.2,.8)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`A-`}),(0,h.jsx)(`button`,{onClick:()=>w(!C),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:C?`Block`:`Inline`}),(0,h.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(g),A(`LaTeX copied`),setTimeout(()=>A(null),1500),u({type:`render:katex:copy_latex`,targetHandle:e?.handle||`mcard:katex`,timestamp:Date.now(),payload:{formula:g}})},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Copy LaTeX`}),(0,h.jsx)(`button`,{onClick:()=>{_&&(navigator.clipboard.writeText(_),A(`HTML copied`),setTimeout(()=>A(null),1500))},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Copy HTML`}),(0,h.jsx)(`button`,{onClick:()=>E(!T),style:{padding:`2px 8px`,background:T?`var(--mcard-accent-primary, #75beff)`:`var(--mcard-bg-surface, #2d2d30)`,color:T?`#000`:`inherit`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,borderRadius:`3px`,cursor:`pointer`},children:T?`Formula`:`Source`})]})]}),T?(0,h.jsx)(`pre`,{style:{margin:0,padding:`16px`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`13px`,background:`var(--mcard-bg-surface, #181818)`},children:g}):y?(0,h.jsxs)(`div`,{style:{padding:`16px`,color:`var(--mcard-status-error, #f48771)`,background:`rgba(244,135,113,0.08)`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`12px`},children:[(0,h.jsx)(`strong`,{children:`KaTeX Syntax Diagnostic:`}),(0,h.jsx)(`pre`,{style:{marginTop:`8px`,whiteSpace:`pre-wrap`},children:y})]}):(0,h.jsx)(`div`,{style:{flex:1,overflow:`auto`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`24px`},children:(0,h.jsx)(`div`,{style:{fontSize:`${D}rem`,textAlign:`center`,maxWidth:`100%`,overflowX:`auto`,padding:`12px`},dangerouslySetInnerHTML:{__html:_}})})]})};export{g as KatexFormulaViewlet,g as default};
@@ -0,0 +1,16 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["_astro/MarkdownViewlet.CRuuXXmF.js","_astro/rolldown-runtime.Dd_uD5pT.js","_astro/vendor-react.DpDU3q_x.js","_astro/themeStore.CEt0e54l.js","_astro/vendor-clm-kernel.Bvk3XHk2.js","_astro/preload-helper.oCYlU9a4.js","_astro/mcardStore.CT-ollfl.js","_astro/workspaceStore.CD0kAVAl.js","_astro/pathsConfig.D0hV34p7.js","_astro/vfsHandles.IX_wTpw_.js","_astro/cardTypeDetector.Ci4APwhX.js","_astro/disposable.Dsb0sbRP.js","_astro/webappUrlResolver.BdblM2xU.js","_astro/mcardVfs.2UOw9Z-r.js","_astro/vfsPersistence.BuhXYeSb.js","_astro/markdownService.BgWjyJ57.js","_astro/rendererEventBus.DMH9afq9.js","_astro/RendererPCardRegistry.CWjYZs2H.js","_astro/useMCardHydration.7Z-HfBh5.js","_astro/RendererLoader.D-ThYU1B.js","_astro/mediaEmbeds.CWeXA8QP.js","_astro/vendor-katex.OWop7R8Y.js","_astro/vendor-katex.BNLSuGWh.css","_astro/tikzCompiler.fe3qomFY.js","_astro/mermaidParams.CoRBi7AN.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{F as r,I as i,M as a,S as o,_ as s,b as c,f as l,m as u,o as d,p as f,v as p,w as m,x as h,y as g}from"./vendor-clm-kernel.Bvk3XHk2.js";import{t as _}from"./preload-helper.oCYlU9a4.js";import{g as v}from"./themeStore.CEt0e54l.js";import{C as y,_ as b,c as x,l as S,o as C,s as w,v as T,x as E,y as D}from"./mcardStore.CT-ollfl.js";import{r as O}from"./disposable.Dsb0sbRP.js";import{n as k,t as A}from"./pathsConfig.D0hV34p7.js";import{C as ee,d as te,n as j,t as ne}from"./Codicons.6XKAVgP8.js";import{a as re,c as ie,d as ae,l as oe}from"./agentIdentityCredentialService.UzMMwBwv.js";import{c as M,l as se,s as ce,u as le}from"./mcardVfs.2UOw9Z-r.js";var N=e(t(),1),ue={personas:{"did:pkc:winston-architect":{did:`did:pkc:winston-architect`,name:`Winston`,role:`architect`,lens:`Rhetoric (∇_Plato)`,avatar:`🏛️`,status:`idle`,lastActive:Date.now()},"did:pkc:amelia-dev":{did:`did:pkc:amelia-dev`,name:`Amelia`,role:`developer`,lens:`Logic (set_logic)`,avatar:`⚡`,status:`idle`,lastActive:Date.now()},"did:pkc:paige-critic":{did:`did:pkc:paige-critic`,name:`Paige`,role:`critic`,lens:`Grammar (Δ_Orwell)`,avatar:`⚖️`,status:`idle`,lastActive:Date.now()}},floorLease:{holderDid:`did:pkc:winston-architect`,priority:`normal`,grantedAt:Date.now(),expiresAt:Date.now()+3e4,queue:[]},channelId:`channel:studio:default`,activeNodesCount:3},P=v(ue);function de(e,t=`normal`,n=3e4){let r=P.get(),i=r.personas[e];if(!i)return;let a=Date.now(),o={...r.personas};if(r.floorLease.holderDid&&o[r.floorLease.holderDid]){let e=o[r.floorLease.holderDid];e.status===`speaking`&&(o[r.floorLease.holderDid]={...e,status:`idle`})}o[e]={...i,status:`speaking`,lastActive:a};let s=r.floorLease.queue.filter(t=>t.did!==e);P.set({...r,personas:o,floorLease:{holderDid:e,priority:t,grantedAt:a,expiresAt:a+n,queue:s}})}function fe(){let e=P.get(),t=[`did:pkc:winston-architect`,`did:pkc:amelia-dev`,`did:pkc:paige-critic`],n=e.floorLease.holderDid,r=t[n?(t.indexOf(n)+1)%t.length:0];de(r,`normal`)}var F=n();function pe(e){switch(e){case`speaking`:return{color:`#4ec9b0`,label:`Speaking`,icon:`🔊`};case`reasoning`:return{color:`#75beff`,label:`Reasoning`,icon:`💭`};case`verifying`:return{color:`#c586c0`,label:`Verifying`,icon:`🔍`};case`offline`:return{color:`#666666`,label:`Offline`,icon:`💤`};default:return{color:`#888888`,label:`Idle`,icon:`⚪`}}}var me=({onSelectPersona:e})=>{let t=O(P),[n,r]=(0,N.useState)(null),i=Object.values(t.personas),a=t.floorLease.holderDid,o=a?t.personas[a]:null;return(0,F.jsxs)(`div`,{className:`swarm-presence-bar`,style:{display:`flex`,flexDirection:`column`,gap:`4px`,padding:`6px 10px`,backgroundColor:`rgba(30, 30, 30, 0.75)`,borderBottom:`1px solid rgba(255, 255, 255, 0.08)`,backdropFilter:`blur(8px)`},children:[(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,fontSize:`11px`},children:[(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,F.jsx)(`span`,{style:{fontSize:`9px`,textTransform:`uppercase`,letterSpacing:`0.5px`,padding:`1px 5px`,borderRadius:`3px`,backgroundColor:o?`rgba(78, 201, 176, 0.2)`:`rgba(255, 255, 255, 0.1)`,color:o?`#4ec9b0`:`#888888`,fontWeight:600,border:`1px solid rgba(78, 201, 176, 0.4)`},children:`Floor Lease (INV-259-01)`}),o?(0,F.jsxs)(`span`,{style:{color:`#d4d4d4`,fontWeight:500},children:[(0,F.jsx)(`span`,{style:{marginRight:`3px`},children:o.avatar}),(0,F.jsx)(`strong`,{style:{color:`#ffffff`},children:o.name}),` (`,o.role,`)`]}):(0,F.jsx)(`span`,{style:{color:`#888888`,fontStyle:`italic`},children:`Open Floor (No Speaker)`})]}),(0,F.jsxs)(`button`,{onClick:()=>fe(),title:`Cycle turn lease (Winston -> Amelia -> Paige)`,style:{background:`none`,border:`1px solid rgba(255, 255, 255, 0.15)`,color:`#75beff`,fontSize:`10px`,padding:`2px 7px`,borderRadius:`3px`,cursor:`pointer`,display:`flex`,alignItems:`center`,gap:`3px`},children:[(0,F.jsx)(`span`,{children:`↻`}),` Pass Floor`]})]}),(0,F.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,overflowX:`auto`,padding:`2px 0`},children:i.map(t=>{let i=t.did===a,o=pe(t.status),s=t.did===n;return(0,F.jsxs)(`div`,{onClick:()=>{de(t.did),e&&e(t)},onMouseEnter:()=>r(t.did),onMouseLeave:()=>r(null),title:`${t.name} (${t.role})\nLens: ${t.lens}\nDID: ${t.did}\nClick to grant floor`,style:{position:`relative`,display:`flex`,alignItems:`center`,gap:`5px`,padding:`3px 8px`,borderRadius:`16px`,backgroundColor:i?`rgba(78, 201, 176, 0.15)`:s?`rgba(255, 255, 255, 0.08)`:`rgba(255, 255, 255, 0.04)`,border:i?`1px solid #4ec9b0`:`1px solid rgba(255, 255, 255, 0.08)`,cursor:`pointer`,transition:`all 0.15s ease`,flexShrink:0},children:[(0,F.jsx)(`span`,{style:{fontSize:`13px`},children:t.avatar}),(0,F.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,lineHeight:1.1},children:[(0,F.jsx)(`span`,{style:{fontSize:`11px`,fontWeight:i?700:500,color:i?`#4ec9b0`:`#cccccc`},children:t.name}),(0,F.jsx)(`span`,{style:{fontSize:`9px`,color:`#888888`,letterSpacing:`0.2px`},children:t.role})]}),(0,F.jsx)(`span`,{style:{width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:o.color,boxShadow:i?`0 0 6px ${o.color}`:`none`,marginLeft:`2px`}})]},t.did)})})]})},he=[{id:`gemini:gemini-3.8-flash`,name:`Gemini 3.8 Flash (1M Context, Thinking CoT)`},{id:`gemini:gemini-3.5-flash`,name:`Gemini 3.5 Flash (1M Context, High Reliability)`},{id:`gemini:gemini-3.5-flash-lite`,name:`Gemini 3.5 Flash-Lite (Low Latency)`},{id:`gemini:gemini-3.8-pro`,name:`Gemini 3.8 Pro (2M Context)`},{id:`gemini:gemini-3.8-thinking`,name:`Gemini 3.8 Thinking (Extended CoT)`}],ge=[{id:`remote:deepseek-v3`,name:`DeepSeek-V3 (api.deepseek.com)`},{id:`remote:openai-gpt4o`,name:`OpenAI GPT-4o (api.openai.com)`}],_e=()=>{let e=O(C),t=O(x),n=O(oe),r=O(w),i=!!(r.apiKey&&r.apiKey.trim().length>0);return(0,N.useEffect)(()=>{e.startsWith(`gemini:`)&&(he.some(t=>t.id===e)||(C.set(`gemini:gemini-3.8-flash`),typeof window<`u`&&(localStorage.setItem(`clm:chat:active_model`,`gemini:gemini-3.8-flash`),localStorage.setItem(`clm:chat:model`,`gemini-3.8-flash`))))},[e]),(0,F.jsxs)(`select`,{"data-testid":`model-select`,value:e,onChange:e=>{let t=e.target.value;C.set(t),typeof window<`u`&&(localStorage.setItem(`clm:chat:active_model`,t),t.startsWith(`gemini:`)?(localStorage.setItem(`clm:chat:provider`,`google`),localStorage.setItem(`clm:chat:model`,t.replace(/^gemini:/,``))):t.startsWith(`ollama:`)&&(localStorage.setItem(`clm:chat:provider`,`ollama`),localStorage.setItem(`clm:chat:model`,t.replace(/^ollama:/,``))))},style:{width:`100%`,backgroundColor:`#1e1e1e`,color:`#cccccc`,border:`1px solid #3c3c3c`,borderRadius:`4px`,padding:`3px 6px`,fontSize:`11px`,outline:`none`,cursor:`pointer`},children:[(0,F.jsx)(`optgroup`,{label:`In-Browser (WebGPU / Wasm / Native)`,children:Object.values(ae).map(e=>{let t=n?.modelId===e.modelId?`${e.displayName} (${n.statusText} ${n.progressPct}%)`:e.displayName;return(0,F.jsx)(`option`,{value:e.modelId,title:`Engine: ${e.engine}`,children:t},e.modelId)})}),(0,F.jsx)(`optgroup`,{label:`Local Host (Ollama - ${t.online?`Online`:`Offline`})`,children:t.models.map(e=>(0,F.jsx)(`option`,{value:`ollama:${e}`,children:e},`ollama:${e}`))}),(0,F.jsx)(`optgroup`,{label:i?`Google Gemini (Cloud AI — API Key Ready 🔑)`:`Google Gemini (Cloud AI)`,children:he.map(e=>(0,F.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,F.jsx)(`optgroup`,{label:`Remote Cloud Providers`,children:ge.map(e=>(0,F.jsx)(`option`,{value:e.id,children:e.name},e.id))})]})};function I(e){switch(e.type){case`card`:return{type:`card`,hash:e.hash||``,handle:e.handle||``,cardType:e.cardType||`unknown`};case`execute`:return{type:`execute`,pcard:e.pcard||``,input:e.input||e.text||``,label:e.label};case`image`:return{type:`image`,src:e.src||``,alt:e.alt,width:e.width,height:e.height};case`audio`:return{type:`audio`,src:e.src||``,title:e.attrs?.title,duration:e.attrs?.duration?parseFloat(e.attrs.duration):void 0};case`video`:return{type:`video`,src:e.src||``,poster:e.attrs?.poster};case`model3d`:return{type:`model3d`,src:e.src||``,format:e.attrs?.format||ye(e.src||``)};case`quote`:return{type:`quote`,id:e.id||``,author:e.attrs?.author||``,content:e.text};case`button`:return{type:`button`,id:e.id||``,label:e.label||e.text||``};case`at`:return{type:`at`,id:e.id||``,name:e.label||e.attrs?.name};case`action`:return{type:`button`,id:e.id||``,label:e.label||e.text||``};default:return e.children&&e.children.length>0?{type:`message`,forward:e.attrs?.forward===`true`,children:e.children.map(I)}:{type:`text`,content:e.text||``}}}function ve(e){return u(e).map(I)}function ye(e){return{glb:`gltf-binary`,gltf:`gltf`,obj:`wavefront`,stl:`stl`,"3ds":`3ds`,fbx:`fbx`}[e.split(`.`).pop()?.toLowerCase()||``]||`unknown`}function be(e){return f(e)}var xe=({node:e,onClick:t})=>(0,F.jsxs)(`div`,{"data-testid":`satori-card`,"data-handle":e.handle,onClick:()=>t?.(e.handle),style:{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`4px 10px`,borderRadius:`4px`,backgroundColor:`rgba(117, 190, 255, 0.1)`,border:`1px solid rgba(117, 190, 255, 0.3)`,cursor:`pointer`,fontSize:`11px`,color:`#75beff`,transition:`background-color 0.15s ease`},children:[(0,F.jsx)(`span`,{children:`📄`}),(0,F.jsx)(`span`,{style:{fontWeight:600},children:e.handle.split(`:`).pop()}),(0,F.jsx)(`span`,{style:{opacity:.6,fontSize:`10px`},children:e.cardType}),e.hash&&(0,F.jsxs)(`span`,{"data-testid":`satori-card-badge`,style:{fontFamily:`monospace`,fontSize:`10px`,background:`rgba(117, 190, 255, 0.15)`,padding:`1px 4px`,borderRadius:`3px`},children:[`blake3-`,e.hash.slice(0,10)]})]}),Se=({node:e,onExecute:t})=>(0,F.jsxs)(`button`,{"data-testid":`satori-execute`,"data-pcard":e.pcard,onClick:()=>t?.(e.pcard,e.input),style:{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`4px 12px`,borderRadius:`4px`,backgroundColor:`#0e639c`,border:`1px solid #1177bb`,color:`#ffffff`,cursor:`pointer`,fontSize:`11px`,fontWeight:600,transition:`opacity 0.15s ease`},children:[`▶ `,e.label||`Run ${e.pcard}`]}),Ce=({node:e})=>(0,F.jsx)(`div`,{"data-testid":`satori-image`,style:{margin:`4px 0`},children:(0,F.jsx)(`img`,{src:e.src,alt:e.alt||`Satori image`,style:{maxWidth:`100%`,maxHeight:`200px`,borderRadius:`6px`,border:`1px solid rgba(255, 255, 255, 0.1)`}})}),we=({node:e})=>(0,F.jsxs)(`div`,{"data-testid":`satori-audio`,style:{display:`flex`,alignItems:`center`,gap:`8px`,padding:`6px 10px`,backgroundColor:`rgba(255, 255, 255, 0.05)`,borderRadius:`4px`,border:`1px solid rgba(255, 255, 255, 0.1)`,fontSize:`11px`},children:[(0,F.jsx)(`span`,{children:`🔊`}),(0,F.jsx)(`span`,{children:e.title||`Audio`}),e.duration&&(0,F.jsxs)(`span`,{style:{opacity:.6},children:[e.duration,`s`]})]}),Te=({node:e})=>(0,F.jsxs)(`div`,{"data-testid":`satori-model3d`,style:{display:`flex`,alignItems:`center`,gap:`8px`,padding:`8px 12px`,backgroundColor:`rgba(188, 63, 188, 0.1)`,borderRadius:`6px`,border:`1px solid rgba(188, 63, 188, 0.3)`,fontSize:`11px`},children:[(0,F.jsx)(`span`,{style:{fontSize:`16px`},children:`🧊`}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`div`,{style:{fontWeight:600,color:`#d670d6`},children:`3D Model`}),(0,F.jsxs)(`div`,{style:{opacity:.7},children:[e.format,` — `,e.src.split(`/`).pop()]})]})]}),Ee=({node:e})=>(0,F.jsx)(`div`,{"data-testid":`satori-quote`,style:{borderLeft:`3px solid rgba(117, 190, 255, 0.5)`,padding:`4px 10px`,margin:`4px 0`,backgroundColor:`rgba(255, 255, 255, 0.03)`,fontSize:`11px`,fontStyle:`italic`,color:`rgba(255, 255, 255, 0.7)`},children:e.content||`[Quoted message: ${e.id}]`}),De=({node:e,onCardClick:t,onExecute:n})=>{switch(e.type){case`text`:return(0,F.jsx)(`span`,{children:e.content});case`card`:return(0,F.jsx)(xe,{node:e,onClick:t});case`execute`:return(0,F.jsx)(Se,{node:e,onExecute:n});case`image`:return(0,F.jsx)(Ce,{node:e});case`audio`:return(0,F.jsx)(we,{node:e});case`model3d`:return(0,F.jsx)(Te,{node:e});case`quote`:return(0,F.jsx)(Ee,{node:e});case`message`:return(0,F.jsx)(`div`,{"data-testid":`satori-message`,children:e.children.map((e,r)=>(0,F.jsx)(De,{node:e,onCardClick:t,onExecute:n},r))});case`button`:return(0,F.jsx)(`button`,{"data-testid":`satori-button`,"data-action":e.id,onClick:()=>{e.id===`open-llm-settings`&&window.dispatchEvent(new CustomEvent(`clm:open-llm-settings`,{detail:{provider:`google`}}))},style:{display:`inline-flex`,alignItems:`center`,gap:`6px`,padding:`5px 12px`,margin:`4px 0`,fontSize:`11px`,fontWeight:600,backgroundColor:e.id===`open-llm-settings`?`#0e639c`:`#37373d`,border:e.id===`open-llm-settings`?`1px solid #1177bb`:`1px solid #45475a`,borderRadius:`4px`,color:`#ffffff`,cursor:`pointer`,transition:`background-color 0.15s ease`},children:e.label||`Action`});case`at`:return(0,F.jsxs)(`span`,{"data-testid":`satori-at`,style:{color:`#75beff`,fontWeight:600},children:[`@`,e.name||e.id]});default:return null}},L=m.newInMemory(),Oe=v(`waiting`),ke=v([]);function Ae(e,t,n={}){L.getPillar(`execution_log`).put(e),je({event:t,operation:`pcard:chatbot:${t}`,runtime:`clm-browser-satori`,pcard_hash:e.hash.asHex(),mcard_uri:e.uri,mcard_hash:e.hash.asHex(),output:e.content,...n})}function je(e){let t={...e,timestamp:new Date().toISOString(),agent_did:localStorage.getItem(`clm:sponsorDid`)||`did:key:z6Mkdefault`},n=ke.get();ke.set([...n,t])}var Me=v(`channel:studio:default`),R={id:`welcome`,channelId:`channel:studio:default`,role:`assistant`,text:"Koishi Satori conversational engine active.\nType `/help` for commands or ask a question.",timestamp:17261352e5,mcardUri:`mcard:chat/message/welcome`},z=b(`clm:conversational_mcards:v1`,[R],{encode:JSON.stringify,decode:e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[R]}catch{return[R]}}});async function B(e,t=`assertive`){let n=e.elements&&e.elements.length>0?e.elements:[o(e.text)],r={id:e.id,channel_id:e.channelId,user_did:e.role===`user`?`did:clm:user:studio`:`did:clm:agent:assistant`,elements:n,timestamp:e.timestamp},i=e.contentHash,a=e.mcardUri;try{let e=await l(L,r,{speechActType:t});i=e.hashHex,a=e.card.uri}catch(e){console.warn(`[conversationalMCardStore] CAS commit warning:`,e)}let s={...e,contentHash:i,mcardUri:a},c=z.get();return z.set([...c,s]),s}function Ne(e,t){let n=z.get();z.set(n.map(n=>n.id===e?{...n,...t}:n))}function Pe(e){z.set(e)}function Fe(e){let t=e??Me.get(),n=z.get().filter(e=>e.channelId!==t);z.set(n.length>0?n:[R])}var Ie=({src:e,alt:t,messageId:n,messageText:r,savedToAssets:i,savedAssetHandle:a})=>{let[o,s]=(0,N.useState)(!1),[c,l]=(0,N.useState)(!1),[u,d]=(0,N.useState)(()=>a&&D.get()[a]||null),f=e.startsWith(`data:image/png`)?`image/png`:e.startsWith(`data:image/webp`)?`image/webp`:`image/jpeg`,p=f===`image/png`?`.png`:f===`image/webp`?`.webp`:`.jpg`,m=ce(t||r,f).replace(/\.[^.]+$/,``),[h,g]=(0,N.useState)(m),_=async()=>{if(!c){l(!0);try{let i=await M({base64Data:e,mimeType:f,prompt:t||r,preferredName:h.trim()||m});d(i),s(!1);let a=z.get();z.set(a.map(e=>e.id===n?{...e,elements:e.elements?.map(e=>e.type===`card`&&(e.cardType===`image`||e.handle?.includes(`event/chat/image`))?{...e,handle:i.handle}:e),savedToAssets:!0,savedAssetHandle:i.handle}:e))}catch(e){console.error(`Failed to save image to assets:`,e)}finally{l(!1)}}};return(0,F.jsxs)(`div`,{"data-testid":`satori-image`,style:{position:`relative`,display:`inline-block`,margin:`6px 0`,borderRadius:`6px`,overflow:`visible`},children:[(0,F.jsx)(`img`,{src:e,alt:t||`Attached image`,style:{display:`block`,maxWidth:`100%`,maxHeight:`240px`,borderRadius:`6px`,border:`1px solid rgba(255, 255, 255, 0.2)`,objectFit:`contain`}}),(0,F.jsx)(`div`,{style:{position:`absolute`,top:`6px`,right:`6px`,display:`flex`,gap:`4px`,zIndex:10},children:u||i?(0,F.jsxs)(`button`,{type:`button`,"data-testid":`badge-saved-asset`,onClick:()=>{let e=u||(a?D.get()[a]:null);e&&y(e)},title:`Saved to ${u?.path||a}. Click to open in Studio Workbench.`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,backgroundColor:`rgba(26, 46, 38, 0.88)`,color:`#4ec9b0`,border:`1px solid #4ec9b0`,borderRadius:`3px`,padding:`2px 8px`,fontSize:`11px`,fontWeight:600,cursor:`pointer`,backdropFilter:`blur(4px)`,boxShadow:`0 2px 6px rgba(0,0,0,0.5)`},children:[(0,F.jsx)(j,{size:12,color:`#4ec9b0`}),(0,F.jsx)(`span`,{children:u?.name||a?.split(`:`).pop()})]}):(0,F.jsx)(`button`,{type:`button`,"data-testid":`btn-send-to-assets`,onClick:()=>s(!0),title:`Send this image to project assets/ directory`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,backgroundColor:`rgba(20, 24, 30, 0.88)`,color:`#ffffff`,border:`1px solid rgba(255, 255, 255, 0.35)`,borderRadius:`3px`,padding:`3px 8px`,fontSize:`11px`,fontWeight:500,cursor:`pointer`,backdropFilter:`blur(4px)`,boxShadow:`0 2px 6px rgba(0,0,0,0.5)`,transition:`all 0.15s ease`},children:(0,F.jsx)(`span`,{children:`📁 Send to assets/`})})}),o&&(0,F.jsxs)(`div`,{"data-testid":`image-naming-popover`,style:{position:`absolute`,top:`36px`,right:`6px`,width:`280px`,backgroundColor:`#1e1e1e`,border:`1px solid #007acc`,borderRadius:`6px`,padding:`10px`,boxShadow:`0 4px 16px rgba(0,0,0,0.6)`,zIndex:20,display:`flex`,flexDirection:`column`,gap:`8px`},children:[(0,F.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,color:`#9cdcfe`},children:`📁 Send Image to assets/`}),(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`4px`},children:[(0,F.jsx)(`input`,{type:`text`,autoFocus:!0,"data-testid":`input-image-filename`,value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`?_():e.key===`Escape`&&s(!1)},placeholder:`filename-without-extension`,style:{flex:1,padding:`4px 6px`,fontSize:`11px`,backgroundColor:`#2d2d2d`,color:`#cccccc`,border:`1px solid #444`,borderRadius:`3px`,outline:`none`}}),(0,F.jsx)(`span`,{style:{fontSize:`10px`,fontFamily:`monospace`,backgroundColor:`rgba(0, 122, 204, 0.25)`,color:`#75beff`,padding:`3px 6px`,borderRadius:`3px`,border:`1px solid rgba(0, 122, 204, 0.4)`},children:p})]}),(0,F.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:`6px`},children:[(0,F.jsx)(`button`,{type:`button`,onClick:()=>s(!1),style:{padding:`3px 8px`,fontSize:`10px`,backgroundColor:`transparent`,color:`#aaa`,border:`1px solid #444`,borderRadius:`3px`,cursor:`pointer`},children:`Cancel`}),(0,F.jsx)(`button`,{type:`button`,"data-testid":`btn-confirm-save-image`,onClick:_,disabled:c,style:{padding:`3px 10px`,fontSize:`10px`,fontWeight:600,backgroundColor:`#0e639c`,color:`#ffffff`,border:`none`,borderRadius:`3px`,cursor:c?`wait`:`pointer`},children:c?`Saving...`:`Save Asset`})]})]})]})};function Le(e){if(typeof e==`string`)return e.split(`:`).pop()||e;if(`name`in e&&e.name)return e.name;if(`handle`in e&&e.handle)return e.handle;if(`metadata`in e&&e.metadata){let t=e.metadata,n=`get`in t&&typeof t.get==`function`?t.get(`name`):t.name;if(typeof n==`string`&&n)return n}return`uri`in e&&e.uri?e.uri.split(`/`).pop()||e.uri.replace(/^mcard:/,``):`unnamed`}function Re(){let[e,t]=(0,N.useState)([]);return{attachments:e,setAttachments:t,attachCurrentCard:(0,N.useCallback)(()=>{let n=T.get();n&&!e.includes(n.handle)&&t(e=>[...e,n.handle])},[e]),removeAttachment:(0,N.useCallback)(e=>{t(t=>t.filter(t=>t!==e))},[]),clearAttachments:(0,N.useCallback)(()=>{t([])},[]),resolveAttachedNodes:(0,N.useCallback)(()=>{let t=D.get(),n=T.get(),r=[];n&&e.includes(n.handle)&&r.push(n);for(let n of e)if(!r.some(e=>e.handle===n)){let e=t[n]||Object.values(t).find(e=>e.handle===n||e.path===n);if(e)r.push(e);else{let e=n.endsWith(`.png`)||n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)||n.endsWith(`.webp`);r.push({handle:n,name:n.split(`:`).pop()||n,path:n,hash:``,mimeType:e?`image/png`:`text/markdown`,detectedType:e?`image`:`markdown`,epistemicStatus:`definition`,readOnly:!0})}}return r},[e])}}var ze=N.lazy(()=>_(()=>import(`./MarkdownViewlet.CRuuXXmF.js`).then(e=>({default:e.MarkdownContentView})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])).catch(e=>(console.warn(`[ChatMessageBubble] Failed to load MarkdownViewlet, falling back to plain text:`,e),{default:({content:e,style:t})=>(0,F.jsx)(`div`,{style:{whiteSpace:`pre-wrap`,opacity:.9,...t},children:e})}))),V=e=>(0,F.jsx)(N.Suspense,{fallback:(0,F.jsx)(`div`,{style:{whiteSpace:`pre-wrap`,opacity:.8,...e.style},children:e.content}),children:(0,F.jsx)(ze,{...e})}),Be=({message:e,onInsertAsMCard:t,insertingId:n,insertedMap:r={}})=>{let i=(e,n)=>{t&&t(e,n)};return(0,F.jsxs)(`div`,{className:`chat-bubble chat-bubble-${e.role}`,"data-testid":`chat-bubble-${e.role}`,style:{display:`flex`,flexDirection:`column`,alignSelf:e.role===`user`?`flex-end`:`flex-start`,maxWidth:`96%`,padding:`6px 10px`,borderRadius:`6px`,backgroundColor:e.role===`user`?`#0e639c`:e.role===`gate`?`#2d1820`:`#1f2428`,border:e.role===`user`?`1px solid #1177bb`:e.role===`gate`?`1px solid #f14c4c`:`1px solid #2d2d2d`,color:`#ffffff`,lineHeight:1.45,fontSize:`11px`,wordBreak:`break-word`,overflowWrap:`anywhere`},onClick:e=>{e.target.closest(`[data-action="open-llm-settings"], #open-llm-settings`)&&(e.preventDefault(),e.stopPropagation(),window.dispatchEvent(new CustomEvent(`clm:open-llm-settings`,{detail:{provider:`google`}})))},children:[(0,F.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`5px`,marginBottom:`3px`,fontSize:`10px`,opacity:.85},children:e.role===`assistant`?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(ne,{size:12,color:`#75beff`}),(0,F.jsx)(`span`,{style:{fontWeight:600,color:`#75beff`},children:`Koishi Satori`})]}):e.role===`gate`?(0,F.jsx)(`span`,{style:{fontWeight:600,color:`#f14c4c`},children:`Maxwell's Demon Gate`}):(0,F.jsx)(`span`,{style:{fontWeight:600},children:`You`})}),e.attachments&&e.attachments.length>0&&(0,F.jsxs)(`div`,{style:{fontSize:`10px`,backgroundColor:`rgba(0, 0, 0, 0.25)`,padding:`3px 6px`,borderRadius:`4px`,marginBottom:`6px`,border:`1px solid rgba(255, 255, 255, 0.12)`,display:`flex`,flexDirection:`column`,gap:`3px`},children:[(0,F.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`4px`,opacity:.85},children:(0,F.jsx)(`span`,{children:`📎 Attached MCard:`})}),(0,F.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`4px`},children:e.attachments.map((e,t)=>{let n=Le(e),r=typeof e==`string`?D.get()[e]||{handle:e,name:e.split(`:`).pop()||e,path:e,hash:``,mimeType:`text/markdown`,detectedType:`markdown`,epistemicStatus:`definition`,readOnly:!0}:`handle`in e?e:E(e),i=r.handle,a=D.get()[i]||r,o=a.mimeType?.startsWith(`image/`)||n.endsWith(`.png`)||n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)||n.endsWith(`.webp`);return(0,F.jsxs)(`div`,{onClick:()=>{a&&y(a)},style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`2px 6px`,borderRadius:`3px`,backgroundColor:`rgba(255, 255, 255, 0.1)`,cursor:a?`pointer`:`default`,fontSize:`10px`},title:a?`Open ${n} in editor`:n,children:[(0,F.jsx)(`span`,{children:o?`🖼️`:`📄`}),(0,F.jsx)(`span`,{style:{textDecoration:a?`underline`:`none`},children:n})]},t)})})]}),e.elements&&e.elements.length>0?(0,F.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`},children:e.elements.map((t,n)=>t.type===`text`&&t.text?(0,F.jsx)(V,{content:t.text,compact:!0},n):t.type===`image`&&t.src?(0,F.jsx)(Ie,{src:t.src,alt:t.alt,messageId:e.id,messageText:e.text,savedToAssets:e.savedToAssets,savedAssetHandle:e.savedAssetHandle},n):t.type===`card`?(0,F.jsx)(xe,{node:{type:`card`,hash:t.hash||``,handle:t.handle||``,cardType:t.cardType||`document`},onClick:e=>{let t=D.get()[e];t&&y(t)}},n):null)}):e.satoriContent||be(e.text)?(0,F.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`},children:ve(e.text).map((e,t)=>e.type===`text`?(0,F.jsx)(V,{content:e.content,compact:!0},t):(0,F.jsx)(De,{node:e,onCardClick:e=>{let t=D.get()[e];t&&y(t)}},t))}):(0,F.jsx)(V,{content:e.text,compact:!0}),e.role===`assistant`&&(e.text.trim().length>0||e.elements?.some(e=>e.type===`image`&&e.src))&&(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`flex-end`,gap:`6px`,marginTop:`6px`,paddingTop:`4px`,borderTop:`1px solid rgba(255, 255, 255, 0.08)`},children:[e.text.trim().length>0&&(0,F.jsx)(`button`,{type:`button`,"data-action":`insert-response-as-mcard`,onClick:()=>i(e.id,e.text),disabled:n===e.id,title:`Insert this response as a new MCard in assets' root directory and display as Chosen MCard`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,backgroundColor:r[e.id]?`rgba(78, 201, 176, 0.16)`:`rgba(255, 255, 255, 0.08)`,color:r[e.id]?`#4ec9b0`:`#cccccc`,border:r[e.id]?`1px solid #4ec9b0`:`1px solid rgba(255, 255, 255, 0.15)`,borderRadius:`3px`,padding:`2px 7px`,fontSize:`10px`,fontWeight:500,cursor:n===e.id?`wait`:`pointer`,transition:`all 0.15s ease`},children:r[e.id]?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(j,{size:12,color:`#4ec9b0`}),(0,F.jsxs)(`span`,{children:[`Chosen: `,r[e.id]]})]}):n===e.id?(0,F.jsx)(`span`,{children:`Inserting...`}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(te,{size:12,color:`#75beff`}),(0,F.jsx)(`span`,{children:`Insert as MCard`})]})}),e.elements?.some(e=>e.type===`image`&&e.src)&&(0,F.jsx)(`button`,{type:`button`,"data-action":`save-image-to-assets-secondary`,onClick:async()=>{let t=e.elements?.find(e=>e.type===`image`&&e.src);if(!t?.src)return;let n=e.savedAssetHandle;if(n&&D.get()[n]){y(D.get()[n]);return}let r=t.src.startsWith(`data:image/png`)?`image/png`:t.src.startsWith(`data:image/webp`)?`image/webp`:`image/jpeg`,i=await M({base64Data:t.src,mimeType:r,prompt:t.alt||e.text}),a=z.get();z.set(a.map(t=>t.id===e.id?{...t,elements:t.elements?.map(e=>e.type===`card`&&(e.cardType===`image`||e.handle?.includes(`event/chat/image`))?{...e,handle:i.handle}:e),savedToAssets:!0,savedAssetHandle:i.handle}:t))},title:`Save the generated image in this turn to assets/`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,backgroundColor:e.savedToAssets?`rgba(78, 201, 176, 0.16)`:`rgba(255, 255, 255, 0.08)`,color:e.savedToAssets?`#4ec9b0`:`#cccccc`,border:e.savedToAssets?`1px solid #4ec9b0`:`1px solid rgba(255, 255, 255, 0.15)`,borderRadius:`3px`,padding:`2px 7px`,fontSize:`10px`,fontWeight:500,cursor:`pointer`,transition:`all 0.15s ease`},children:e.savedToAssets?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(j,{size:12,color:`#4ec9b0`}),(0,F.jsxs)(`span`,{children:[`Asset: `,e.savedAssetHandle?.split(`:`).pop()]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`span`,{children:`📁`}),(0,F.jsx)(`span`,{children:`Save Image to Assets`})]})})]})]},e.id)},Ve=({inputMessage:e,setInputMessage:t,attachments:n,onRemoveAttachment:r,onAttachCurrentCard:i,hasActiveMCard:a,activeMCardHandle:o,onSendMessage:s})=>{O(Oe);let[c,l]=(0,N.useState)(!1);return(0,N.useRef)(null),!e.trim()&&n.length,(0,F.jsxs)(F.Fragment,{children:[n.length>0&&(0,F.jsx)(`div`,{style:{padding:`4px 12px`,backgroundColor:`#1e1e1e`,borderTop:`1px solid #2d2d2d`,display:`flex`,gap:`6px`,flexWrap:`wrap`},children:n.map(e=>{let t=D.get()[e]?.mimeType?.startsWith(`image/`)||e.endsWith(`.png`)||e.endsWith(`.jpg`)||e.endsWith(`.jpeg`)||e.endsWith(`.webp`);return(0,F.jsxs)(`span`,{style:{fontSize:`11px`,backgroundColor:`#37373d`,padding:`2px 6px`,borderRadius:`3px`,display:`flex`,alignItems:`center`,gap:`4px`,border:t?`1px solid rgba(117, 190, 255, 0.4)`:`1px solid #45475a`},children:[(0,F.jsxs)(`span`,{children:[t?`🖼️`:`📎`,` `,e.split(`:`).pop()]}),(0,F.jsx)(`span`,{onClick:()=>r(e),style:{cursor:`pointer`,opacity:.7},title:`Remove attachment`,children:`✕`})]},e)})}),(0,F.jsx)(`div`,{style:{padding:`6px 8px`,borderTop:`1px solid var(--vscode-sideBar-border, #333333)`,backgroundColor:`var(--vscode-sideBarSectionHeader-background, #1e1e1e)`},children:(0,F.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,backgroundColor:`var(--vscode-input-background, #3c3c3c)`,border:c?`1px solid #007fd4`:`1px solid var(--vscode-input-border, #3c3c3c)`,borderRadius:`4px`,padding:`4px 6px`,gap:`4px`,transition:`border-color 0.15s ease`},children:[(0,F.jsx)(`input`,{id:`chatbot-prompt-input`,"data-testid":`chat-input`,className:`chatbot-input chatbot-textarea`,value:e,onChange:e=>t(e.target.value),onFocus:()=>l(!0),onBlur:()=>l(!1),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),s())},placeholder:`Ask Koishi or ask a question (/help for commands)...`,style:{width:`100%`,backgroundColor:`transparent`,color:`var(--vscode-input-foreground, #cccccc)`,border:`none`,outline:`none`,fontSize:`11px`,fontFamily:`inherit`,padding:`3px 0`}}),(0,F.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,F.jsx)(`button`,{onClick:i,disabled:!a,title:a?o?`Attach ${o}`:`Attach active MCard`:`Select an MCard to attach`,style:{fontSize:`10px`,background:`transparent`,border:`1px solid rgba(255, 255, 255, 0.15)`,color:a?`#ffffff`:`#666666`,borderRadius:`2px`,padding:`1px 5px`,cursor:a?`pointer`:`default`},children:`+ Attach Active MCard`}),(0,F.jsx)(`button`,{id:`chatbot-send-btn`,onClick:s,style:{backgroundColor:`var(--vscode-button-background, #0e639c)`,color:`var(--vscode-button-foreground, #ffffff)`,border:`none`,borderRadius:`2px`,padding:`2px 8px`,fontSize:`10.5px`,fontWeight:600,cursor:`pointer`},children:`Send`})]})]})})]})};function He(e){return i.computeString(e).asHex()}var Ue=`__CLEAR__`,We={"/help":()=>({response:[`📖 **Available Commands:**`," `/model` — Show or switch active LLM model"," `/ollama` — Check Ollama daemon status"," `/run <pcard>` — Execute a PCard morphism"," `/query <handle>` — Query an MCard by handle"," `/diff <h1> <h2>` — Diff two MCard hashes"," `/time-travel <hash>` — Rewind CAS to a previous state"," `/revert` — Revert last mutation"," `/trace <handle>` — Trace MCard lineage"," `/card attach` — Attach current MCard to context"," `/status` — Show system status"," `/clear` — Clear chat history"].join(`
3
+ `),satoriContent:!1}),"/model":e=>({response:e.length>0?`Model switched to: **${e.join(` `)}**`:`Current model: Use the selector above to switch models.`,satoriContent:!1}),"/ollama":()=>({response:`🦙 **Ollama Status:** Check model manager tab in secondary sidebar for latency metrics.`,satoriContent:!1}),"/run":e=>e.length===0?{response:"Usage: `/run <pcard-name> [json-input]`",satoriContent:!1}:{response:`<execute pcard="${e[0]}" input="${e.slice(1).join(` `)||`{}`}" />`,satoriContent:!0},"/query":e=>e.length===0?{response:"Usage: `/query <handle>`",satoriContent:!1}:{response:`<card handle="${e[0]}" cardType="query" />`,satoriContent:!0},"/diff":e=>e.length<2?{response:"Usage: `/diff <hash1> <hash2>`",satoriContent:!1}:{response:`Comparing \`${e[0].slice(0,8)}\` ↔ \`${e[1].slice(0,8)}\`...\n[Diff viewlet available in Main Editor]`,satoriContent:!1},"/time-travel":e=>e.length===0?{response:"Usage: `/time-travel <hash>`",satoriContent:!1}:{response:`⏳ Rewinding CAS state to \`${e[0].slice(0,8)}\`...\n[Savepoint unwound to target content hash]`,satoriContent:!1},"/revert":()=>({response:`↩️ Reverting last mutation... [Restored from SavepointGuard]`,satoriContent:!1}),"/card":e=>({response:e[0]===`attach`?`📎 Current MCard attached to context.`:"Usage: `/card attach`",satoriContent:!1}),"/trace":e=>e.length===0?{response:"Usage: `/trace <handle>`",satoriContent:!1}:{response:`🔍 Tracing lineage for \`${e[0]}\`...\n[Lineage trace requires server-side CAS graph traversal]`,satoriContent:!1},"/status":()=>({response:[`**System Status:**`,` 🟢 Cordis Context: Active`,` 🟢 Maxwell's Demon: Engaged (H¹ = 0)`,` 🟡 Server PTY: Connecting...`,` 🟢 Browser WASM: Ready`,` 📅 Time: ${new Date().toISOString()}`].join(`
4
+ `),satoriContent:!1}),"/clear":()=>({response:Ue,satoriContent:!1})},H=new Map;function Ge(e,t,n){H.set(e,t)}function Ke(e){return H.has(e)}function qe(e,t){let n=H.get(e);return n?n(t):{response:`Unknown command: \`${e}\`. Type \`/help\` for available commands.`,satoriContent:!1}}for(let[e,t]of Object.entries(We))Ge(e,t);var Je=[`[HALLUCINATED]`,`<hallucination>`,`I made that up`,`I do not actually have`,`I cannot verify`,`fictional`],Ye=new Set([`/query`,`/run`,`/diff`,`/trace`,`/time-travel`,`/revert`,`/model`,`/ollama`,`/remote`,`/card`,`/help`,`/status`,`/clear`]);function Xe(e,t,n){let r=[],a;try{a=i.compute(new TextEncoder().encode(JSON.stringify(e))).asHex()}catch{a=He(JSON.stringify(e))}if((!e.sponsorDid||!e.sponsorDid.startsWith(`did:`))&&r.push({code:`UNGROUNDED_IDENTITY`,reason:`Sponsor identity '${e.sponsorDid}' is not a grounded DID`,field:`sponsorDid`}),e.command&&!Ye.has(e.command)&&!Ke(e.command)&&r.push({code:`INVALID_COMMAND`,reason:`Command '${e.command}' is not in the valid command set`,field:`command`}),t!==void 0)for(let n of e.referencedHandles)t.has(n)||r.push({code:`MISSING_HANDLE`,reason:`Referenced MCard handle '${n}' does not exist in CAS`,field:`referencedHandles`});if(n!==void 0)for(let t of e.referencedPCards)n.has(t)||r.push({code:`MISSING_PCARD`,reason:`Referenced PCard morphism '${t}' is not registered`,field:`referencedPCards`});let o=e.rawContent.toLowerCase();for(let e of Je)if(o.includes(e.toLowerCase())){r.push({code:`HALLUCINATION_DETECTED`,reason:`Content contains hallucination marker: '${e}'`,field:`rawContent`});break}let s=r.length===0?`PASS`:`REJECT`,c=r.length===0?0:1,l=r.length>0?r.map(e=>`${e.code}: ${e.reason}`).join(`; `):void 0;return{verdict:s,cohomologyH1:c,h1Entropy:c,hash:a,rejections:r,violations:r,reason:l,timestamp:Date.now()}}function Ze(e){if(e.verdict===`PASS`)return`✅ Maxwell's Demon PASS (H¹ = 0) [${e.hash}]`;let t=e.rejections.map(e=>` ⛔ ${e.code}: ${e.reason}`).join(`
5
+ `);return`❌ Maxwell's Demon REJECT (H¹ ≠ 0) [${e.hash}]\n${t}`}var Qe=new Set([`wav`,`wave`,`mp3`,`m4a`,`aac`,`ogg`,`oga`,`flac`,`weba`,`wma`,`opus`,`aiff`]),$e=new Set([`mp4`,`m4v`,`webm`,`mov`,`mkv`,`avi`,`flv`,`wmv`,`ogv`]),et=new Set([`png`,`jpg`,`jpeg`,`webp`,`gif`,`svg`,`bmp`,`ico`,`avif`,`tiff`,`tif`]),tt=new Set([`glb`,`gltf`,`obj`,`stl`,`3ds`,`fbx`,`dae`]),nt=new Set([`pdf`,`doc`,`docx`,`xls`,`xlsx`,`ppt`,`pptx`,`rtf`,`odt`,`ods`,`odp`]),rt=new Set([`json`,`yaml`,`yml`,`csv`,`tsv`,`xml`,`toml`,`ini`]),it=new Set([`md`,`markdown`,`mdown`,`mkdn`]),at=new Set(`ts.tsx.js.jsx.py.rs.go.java.c.cpp.h.css.scss.html.astro.vue.svelte.sh.bash.zsh.sql.graphql.proto.toml.ini.mk.makefile`.split(`.`)),ot={"image/png":`image`,"image/jpeg":`image`,"image/webp":`image`,"image/svg+xml":`image`,"image/gif":`image`,"audio/wav":`audio`,"audio/mp3":`audio`,"audio/mpeg":`audio`,"audio/ogg":`audio`,"video/mp4":`video`,"video/webm":`video`,"model/gltf-binary":`model3d`,"model/gltf+json":`model3d`,"model/stl":`model3d`,"model/obj":`model3d`,"application/pdf":`document`,"application/json":`structured_data`,"application/x-yaml":`structured_data`,"text/yaml":`structured_data`,"text/csv":`structured_data`,"text/xml":`structured_data`,"text/markdown":`text`,"text/plain":`text`},st=[{set:Qe,modality:`audio`},{set:$e,modality:`video`},{set:et,modality:`image`},{set:tt,modality:`model3d`},{set:nt,modality:`document`},{set:rt,modality:`structured_data`},{set:at,modality:`code`},{set:it,modality:`text`}];function ct(e,t,n){let r=(e||``).toLowerCase();if(r.startsWith(`image/`))return`image`;if(r.startsWith(`audio/`))return`audio`;if(r.startsWith(`video/`))return`video`;if(r.startsWith(`model/`))return`model3d`;if(ot[r])return ot[r];let i=(t||n||``).split(`.`).pop()?.toLowerCase()||``;for(let{set:e,modality:t}of st)if(e.has(i))return t;let a=(n||t||``).toLowerCase();return a.includes(`/audio/`)&&(i===`txt`||i===`url`||a.includes(`spotify`)||a.includes(`soundcloud`))?`audio`:a.includes(`/videos/`)&&(i===`txt`||i===`url`||a.includes(`youtube`)||a.includes(`vimeo`))?`video`:`text`}function U(e){if(!e||isNaN(e)||!isFinite(e))return`00:00`;let t=Math.floor(e/60),n=Math.floor(e%60),r=Math.floor(e%1*100);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}.${r.toString().padStart(2,`0`)}`}function W(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}function lt(e){if(e.length<44)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=String.fromCharCode(e[0],e[1],e[2],e[3]),r=String.fromCharCode(e[8],e[9],e[10],e[11]);if(n!==`RIFF`||r!==`WAVE`)return null;let i=12,a=1,o=44100,s=16,c=1,l=0,u=44;for(;i<e.length-8;){let n=String.fromCharCode(e[i],e[i+1],e[i+2],e[i+3]),r=t.getUint32(i+4,!0);if(n===`fmt `)c=t.getUint16(i+8,!0),a=t.getUint16(i+10,!0),o=t.getUint32(i+12,!0),s=t.getUint16(i+22,!0);else if(n===`data`){l=r,u=i+8;break}i+=8+r}let d=s/8,f=l&&o&&a?l/(o*a*d):0,p=0,m=0,h=0;if(s===16&&u+2<=e.length){let n=Math.min(Math.floor(l/2),4e3),r=Math.max(1,Math.floor(l/2/n));for(let i=0;i<n;i++){let n=u+i*r*2;if(n+2>e.length)break;let a=t.getInt16(n,!0)/32768,o=Math.abs(a);o>p&&(p=o),m+=a*a,h++}}let g=h>0?Math.sqrt(m/h):0,_=p>0?(20*Math.log10(p)).toFixed(1):`-inf`,v=g>0?(20*Math.log10(g)).toFixed(1):`-inf`;return{format:c===1?`PCM`:c===3?`IEEE Float`:`Format ${c}`,channels:a===1?`Mono (1 channel)`:a===2?`Stereo (2 channels)`:`${a} channels`,sampleRate:`${o.toLocaleString()} Hz`,bitsPerSample:`${s}-bit`,durationSec:f,durationFormatted:U(f),peakDb:`${_} dBFS`,rmsDb:`${v} dBFS`}}var ut={id:`wavProbe`,matches(e,t){return e===`wav`||e===`wave`||(t?.includes(`wav`)??!1)},probe(e,t){let n=lt(e);return n?{modality:`audio`,metadata:n,summary:[`[Audio File: ${t.name}]`,`• Format: WAV (${n.format}, ${n.bitsPerSample})`,`• Duration: ${n.durationFormatted} (${n.durationSec.toFixed(2)}s)`,`• Sample Rate: ${n.sampleRate}`,`• Channels: ${n.channels}`,`• File Size: ${W(e.length)}`,`• Signal Analysis: Peak ${n.peakDb}, RMS ${n.rmsDb}`,`• Status: Verified & ready for playback in MCard Studio Audio Player`].join(`
6
+ `)}:null}};function dt(e){if(e.length<10)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=String.fromCharCode(e[0],e[1],e[2])===`ID3`,r={},i=0;if(n){let n=e[3];i=(e[6]&127)<<21|(e[7]&127)<<14|(e[8]&127)<<7|e[9]&127;let a=10,o=Math.min(e.length,10+i);for(;a<o-10;){let i=String.fromCharCode(e[a],e[a+1],e[a+2],e[a+3]);if(!/^[A-Z0-9]{4}$/.test(i))break;let s=0;if(s=n===4?(e[a+4]&127)<<21|(e[a+5]&127)<<14|(e[a+6]&127)<<7|e[a+7]&127:t.getUint32(a+4,!1),s<=0||a+10+s>o)break;let c=e.subarray(a+10,a+10+s);if(c.length>1){let e=c[0],t=``;try{if(e===0||e===3){let e=c.subarray(1),n=e.indexOf(0);n===-1&&(n=e.length),t=new TextDecoder(`utf-8`).decode(e.subarray(0,n))}else(e===1||e===2)&&(t=new TextDecoder(`utf-16le`).decode(c.subarray(1)).replace(/\0.*$/,``))}catch{}t=t.trim(),t&&(i===`TIT2`?r.title=t:i===`TPE1`?r.artist=t:i===`TALB`?r.album=t:i===`TCON`?r.genre=t:i===`TYER`||i===`TDRC`?r.year=t:i===`TRCK`&&(r.track=t))}a+=10+s}}let a=n?10+i:0,o=0,s=0,c=`Stereo`,l=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,0],u=[44100,48e3,32e3,0];for(;a<e.length-4;){if(e[a]===255&&(e[a+1]&224)==224){let t=e[a+1],n=e[a+2],r=e[a+3],i=t>>3&3,d=t>>1&3;if(i===3&&d===1){let e=n>>4&15,t=n>>2&3,i=r>>6&3;o=l[e]||0,s=u[t]||0,c=i===3?`Mono`:`Stereo`;break}}a++}let d=0;return o>0&&(d=(e.length-(n?10+i:0))*8/(o*1e3)),{format:`MP3 (MPEG-1 Layer III)`,bitrate:o?`${o} kbps`:void 0,sampleRate:s?`${s.toLocaleString()} Hz`:void 0,channels:c,tags:r,durationSec:d>0?d:void 0,durationFormatted:d>0?U(d):void 0}}var ft={id:`mp3Probe`,matches(e,t){return e===`mp3`||(t?.includes(`mpeg`)??!1)||(t?.includes(`mp3`)??!1)},probe(e,t){let n=dt(e);if(!n)return null;let r=Object.entries(n.tags).map(([e,t])=>` - ${e.charAt(0).toUpperCase()+e.slice(1)}: ${t}`).join(`
7
+ `);return{modality:`audio`,metadata:n,summary:[`[Audio File: ${t.name}]`,`• Format: ${n.format}${n.bitrate?` (${n.bitrate})`:``}`,n.durationFormatted?`• Duration: ${n.durationFormatted}`:``,`• Channels: ${n.channels}`,n.sampleRate?`• Sample Rate: ${n.sampleRate}`:``,`• File Size: ${W(e.length)}`,r?`• ID3 Metadata Tags:\n${r}`:``,`• Status: Verified & ready for playback in MCard Studio Audio Player`].filter(Boolean).join(`
8
+ `)}}};function pt(e){if(e.length<16)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=0,i=0;function a(o,s,c=0){if(c>6)return;let l=o;for(;l<s-8;){let o=t.getUint32(l,!1),u=String.fromCharCode(e[l+4],e[l+5],e[l+6],e[l+7]);if(o<8||l+o>e.length+8)break;if(u===`moov`||u===`trak`||u===`mdia`)a(l+8,Math.min(s,l+o),c+1);else if(u===`mvhd`){let r=e[l+8],i=r===1?l+28:l+20;if(i+8<=e.length){let e=t.getUint32(i,!1),a=r===1?Number(t.getBigUint64(i+4,!1)):t.getUint32(i+4,!1);e>0&&(n=a/e)}}else if(u===`tkhd`){let n=e[l+8]===1?l+88:l+76;if(n+8<=e.length){let e=t.getUint32(n,!1)>>16,a=t.getUint32(n+4,!1)>>16;e>0&&a>0&&(r=e,i=a)}}l+=o}}return a(0,e.length),{durationSec:n>0?n:void 0,durationFormatted:n>0?U(n):void 0,width:r>0?r:void 0,height:i>0?i:void 0}}var mt={id:`mp4Probe`,matches(e,t){return e===`mp4`||e===`m4v`||(t?.includes(`mp4`)??!1)},probe(e,t){let n=pt(e);if(!n)return null;let r=n.width&&n.height?`${n.width}x${n.height}`:``;return{modality:`video`,metadata:n,summary:[`[Video File: ${t.name}]`,`• Format: MP4`,r?`• Resolution: ${r}`:``,n.durationFormatted?`• Duration: ${n.durationFormatted}`:``,`• File Size: ${W(e.length)}`,`• Status: Verified & ready for playback in MCard Studio Video Player`].filter(Boolean).join(`
9
+ `)}}},ht={id:`imageProbe`,matches(e,t){return et.has(e)||(t?.startsWith(`image/`)??!1)},probe(e,t){let n=t.mimeType||`image/png`,r=`[Image: ${t.name} (${n}, ${W(e.length)})]`;return{modality:`image`,metadata:{sizeBytes:e.length,mimeType:n},summary:r}}},gt={id:`genericProbe`,matches(){return!0},probe(e,t){let n=ct(t.mimeType,t.name,t.path),r=t.mimeType||n,i=`[${n.charAt(0).toUpperCase()+n.slice(1)}: ${t.name} (${r}, ${W(e.length)})]`;return{modality:n,metadata:{sizeBytes:e.length},summary:i}}},G=[];function K(e){e.id!==`genericProbe`&&(G.some(t=>t.id===e.id)||G.push(e))}function _t(e,t){for(let n of G)if(n.matches(e,t))return n;return gt}function q(e,t){return _t((t.name||t.path||``).split(`.`).pop()?.toLowerCase()||``,t.mimeType).probe(e,t)}K(ut),K(ft),K(mt),K(ht);async function J(e){if(typeof window<`u`&&e)try{let t=await fetch(k({path:e}));if(t.ok){let e=await t.arrayBuffer();return new Uint8Array(e)}}catch{}else if(typeof window>`u`&&globalThis.process!==void 0&&e)try{let t=Function(`m`,`return import(m)`),n=await t(`node:fs`),r=await t(`node:path`),i=e,a=globalThis.process;if(!r.isAbsolute(i)&&a?.cwd&&(i=r.resolve(a.cwd(),i)),n.existsSync(i)&&n.statSync(i).isFile()){let e=n.readFileSync(i);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}}catch{}return null}async function Y(e){if(typeof window<`u`&&e)try{let t=await fetch(k({path:e}));if(t.ok)return await t.text()}catch{}else if(typeof window>`u`&&globalThis.process!==void 0&&e)try{let t=Function(`m`,`return import(m)`),n=await t(`node:fs`),r=await t(`node:path`),i=e,a=globalThis.process;if(!r.isAbsolute(i)&&a?.cwd&&(i=r.resolve(a.cwd(),i)),n.existsSync(i)&&n.statSync(i).isFile())return n.readFileSync(i,`utf8`)}catch{}return null}async function X(e){let t=e,n=e.match(/https?:\/\/open\.spotify\.com\/(track|album|artist|playlist)\/([a-zA-Z0-9]+)/i);if(n)try{let e=typeof AbortController<`u`?new AbortController:null,r=e?setTimeout(()=>e.abort(),1500):null,i=await fetch(`https://open.spotify.com/oembed?url=${encodeURIComponent(n[0])}`,{...e?{signal:e.signal}:{}});if(r&&clearTimeout(r),i.ok){let e=await i.json();e.title&&(t+=`\n🎧 Spotify Metadata: "${e.title}" (${e.type||n[1]}) by ${e.provider_name||`Spotify`}`)}}catch{}let r=e.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([a-zA-Z0-9_-]{11})/i);if(r)try{let e=typeof AbortController<`u`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1500):null,i=await fetch(`https://www.youtube.com/oembed?url=${encodeURIComponent(r[0])}&format=json`,{...e?{signal:e.signal}:{}});if(n&&clearTimeout(n),i.ok){let e=await i.json();e.title&&(t+=`\n🎬 YouTube Metadata: "${e.title}" by ${e.author_name||`YouTube`}`)}}catch{}return t}function vt(e){let t=ct(e.mimeType,e.name,e.path);if(t!==`text`)return t;let n=e.category||e.metadata?.category;return n===`audio`?`audio`:n===`video`?`video`:n===`image`?`image`:n===`model3d`?`model3d`:n===`document`?`document`:{image:`image`,audio:`audio`,video:`video`,model:`model3d`,document:`document`,markdown:`text`}[e.detectedType]??`text`}async function yt(e){let t=[],n=[],r=0;for(let i of e)try{let e=await xt(i);t.push(e),r+=Math.ceil(e.textRepresentation.length/4)}catch(e){n.push(`Failed to assemble ${i.handle}: ${e?.message||String(e)}`)}return r>1e5&&n.push(`Total estimated tokens (${r}) exceeds 100K. Consider reducing attachments.`),{contexts:t,totalTokenEstimate:r,warnings:n}}function bt(e){let t=vt(e),n=typeof e.content==`string`?e.content:``,r=n.startsWith(`Content-addressed MCard:`),i=r?``:n,a=typeof e.content==`string`?new TextEncoder().encode(e.content).length:e.content?.length??0,o={handle:e.handle,hash:e.hash,modality:t,mimeType:e.mimeType||``,label:e.name,textRepresentation:``,metadata:{path:e.path,detectedType:e.detectedType,subclass:e.subclass,epistemicStatus:e.epistemicStatus},sizeBytes:a};switch(t){case`image`:e.content instanceof Uint8Array?(o.rawBase64=wt(e.content),o.dataUri=`data:${e.mimeType||`image/png`};base64,${o.rawBase64}`,o.sizeBytes=e.content.length):typeof e.content==`string`&&e.content.startsWith(`data:image/`)?(o.dataUri=e.content,o.rawBase64=e.content.replace(/^data:image\/[^;]+;base64,/,``)):typeof e.content==`string`&&e.content.length>0&&!r&&(o.rawBase64=e.content,o.dataUri=`data:${e.mimeType||`image/png`};base64,${e.content}`),o.textRepresentation=`[Image: ${e.name} (${e.mimeType||`image/png`}, ${Q(o.sizeBytes)})]`;break;case`audio`:o.textRepresentation=`[Audio: ${e.name} (${e.mimeType||`audio`}, ${Q(a)})]`,i&&(o.textRepresentation+=`\n--- Audio Content / Reference ---\n${Z(i,4e3)}\n--- End ---`);break;case`video`:o.textRepresentation=`[Video: ${e.name} (${e.mimeType||`video`}, ${Q(a)})]`,i&&(o.textRepresentation+=`\n--- Video Content / Reference ---\n${Z(i,4e3)}\n--- End ---`);break;case`model3d`:o.textRepresentation=`[3D Model: ${e.name} (${e.mimeType||`model3d`})]`,o.metadata.format=Tt(e.name);break;case`document`:o.textRepresentation=`[Document: ${e.name} (${e.mimeType||`document`}, ${Q(a)})]`,i&&(o.textRepresentation+=`\n--- Document Content ---\n${Z(i,8e3)}\n--- End ---`);break;case`structured_data`:o.textRepresentation=St(e.name,i);break;case`code`:o.textRepresentation=Ct(e.name,i);break;default:o.textRepresentation=i?`--- ${e.name} ---\n${Z(i,8e3)}\n--- End ---`:`[Text: ${e.name} (pending hydration)]`}return o}async function xt(e){let t=bt(e),n=e.path||(e.handle.startsWith(`${A.paths.assets_dirname}:`)?e.handle.replace(`${A.paths.assets_dirname}:`,`${A.paths.assets_dirname}/`):e.handle),r=(typeof e.content==`string`?e.content:``).startsWith(`Content-addressed MCard:`);if(t.modality===`image`&&!t.dataUri){let r=await J(n);if(r){t.sizeBytes=r.length,t.rawBase64=wt(r);let n=t.mimeType||`image/png`;t.dataUri=`data:${n};base64,${t.rawBase64}`,t.textRepresentation=`[Image: ${e.name} (${n}, ${Q(t.sizeBytes)})]`}}if(t.modality===`audio`){if(e.name.endsWith(`.txt`)||e.name.endsWith(`.url`)||e.name.endsWith(`.md`)){let i=r||!e.content?await Y(n):e.content;i&&(i=await X(i),t.textRepresentation=`--- ${e.name} (Audio Link / Reference) ---\n${Z(i,4e3)}\n--- End ---`)}else{let r=await J(n);if(r){t.sizeBytes=r.length;let n=q(r,e);n?(t.metadata={...t.metadata,...n.metadata},t.textRepresentation=n.summary):t.textRepresentation=`[Audio File: ${e.name} (${t.mimeType||`audio`}, ${Q(t.sizeBytes)})]`}}}if(t.modality===`video`){if(e.name.endsWith(`.txt`)||e.name.endsWith(`.url`)||e.name.endsWith(`.md`)){let i=r||!e.content?await Y(n):e.content;i&&(i=await X(i),t.textRepresentation=`--- ${e.name} (Video Link / Stream) ---\n${Z(i,4e3)}\n--- End ---`)}else{let r=await J(n);if(r){t.sizeBytes=r.length;let i=q(r,e);if(i&&(t.metadata={...t.metadata,...i.metadata}),typeof window<`u`&&n)try{let e=k({path:n}),r=document.createElement(`video`);if(r.crossOrigin=`anonymous`,r.muted=!0,r.preload=`metadata`,r.src=e,await new Promise(e=>{r.addEventListener(`loadeddata`,()=>{r.currentTime=Math.min(1,(r.duration||2)/2)},{once:!0}),r.addEventListener(`seeked`,()=>e(),{once:!0}),r.addEventListener(`error`,()=>e(),{once:!0}),setTimeout(e,1500)}),r.videoWidth>0&&r.videoHeight>0){let e=document.createElement(`canvas`);e.width=Math.min(640,r.videoWidth),e.height=Math.round(e.width/r.videoWidth*r.videoHeight);let n=e.getContext(`2d`);if(n){n.drawImage(r,0,0,e.width,e.height);let i=e.toDataURL(`image/jpeg`,.82);t.dataUri=i,t.rawBase64=i.replace(/^data:image\/jpeg;base64,/,``),t.metadata.keyframeCaptured=!0,t.metadata.videoWidth=r.videoWidth,t.metadata.videoHeight=r.videoHeight,!t.metadata.durationSec&&r.duration&&(t.metadata.durationSec=r.duration)}}}catch{}if(i){let n=t.metadata.durationFormatted||(t.metadata.durationSec?String(t.metadata.durationSec):``),r=t.metadata.videoWidth?`${t.metadata.videoWidth}x${t.metadata.videoHeight}`:t.metadata.width?`${t.metadata.width}x${t.metadata.height}`:``;t.textRepresentation=[`[Video File: ${e.name}]`,`• Format: MP4 (${t.mimeType||`video/mp4`})`,r?`• Resolution: ${r}`:``,n?`• Duration: ${n}`:``,`• File Size: ${Q(t.sizeBytes)}`,t.rawBase64?`• Keyframe Snapshot: Captured and supplied as image to vision model`:``,`• Status: Verified & ready for playback in MCard Studio Video Player`].filter(Boolean).join(`
10
+ `)}else t.textRepresentation=`[Video File: ${e.name} (${t.mimeType||`video`}, ${Q(t.sizeBytes)})]`}}}if(t.modality===`text`||t.modality===`code`||t.modality===`structured_data`||t.modality===`document`){let i=r||!e.content?await Y(n):e.content;i&&(i=await X(i),t.sizeBytes=new TextEncoder().encode(i).length,t.textRepresentation=t.modality===`code`?Ct(e.name,i):t.modality===`structured_data`?St(e.name,i):`--- ${e.name} ---\n${Z(i,8e3)}\n--- End ---`)}return t}function St(e,t){return t?`\`\`\`${e.split(`.`).pop()?.toLowerCase()||``}\n${Z(t,8e3)}\n\`\`\``:`[Structured Data: ${e} (empty)]`}function Ct(e,t){if(!t)return`[Code: ${e} (empty)]`;let n=e.split(`.`).pop()?.toLowerCase()||``;return`\`\`\`${{ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,py:`python`,rs:`rust`,go:`go`,java:`java`,c:`c`,cpp:`cpp`,h:`c`,css:`css`,html:`html`,astro:`astro`,sh:`bash`,sql:`sql`}[n]||n}\n// File: ${e}\n${Z(t,8e3)}\n\`\`\``}function Z(e,t){return e.length<=t?e:e.slice(0,t)+`\n... (truncated, ${e.length-t} chars omitted)`}function Q(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}function wt(e){let t=globalThis.Buffer;if(t)return t.from(e.buffer,e.byteOffset,e.byteLength).toString(`base64`);let n=``,r=e.byteLength,i=32768;for(let t=0;t<r;t+=i){let a=e.subarray(t,Math.min(t+i,r));n+=String.fromCharCode.apply(null,a)}return btoa(n)}function Tt(e){return{glb:`glTF Binary`,gltf:`glTF`,obj:`Wavefront OBJ`,stl:`STL`,"3ds":`3D Studio`,fbx:`FBX`}[e.split(`.`).pop()?.toLowerCase()||``]||`Unknown 3D Format`}var Et=class{static async generateImage(e){try{let t=await fetch(`/api/llm/image/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});return t.ok?await t.json():{success:!1,error:(await t.json().catch(()=>({})))?.error||`HTTP ${t.status} ${t.statusText}`}}catch(e){return console.error(`[ImageGenerationService] Request failed:`,e),{success:!1,error:e?.message||`Network error communicating with image gateway`}}}},Dt=[{prefix:`ollama:`,generate:async e=>{let t=e.activeModel.replace(/^ollama:/,``),n=e.assembledContexts.map(e=>e.textRepresentation).filter(e=>!!(e&&e.trim())).join(`
11
+
12
+ `),r={role:`user`,content:[e.prompt,n?`\n\n[Attached Context (${e.assembledContexts.length} item(s))]:\n${n}`:``,e.contextSummary?`\n${e.contextSummary}`:``].filter(Boolean).join(``)};e.base64Images.length>0&&(r.images=e.base64Images);let i=await fetch(`/api/llm/ollama/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:t,messages:[r]})});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(e?.error||`HTTP ${i.status}: Ollama daemon unreachable or model not found`)}let a=await i.json(),o=a?.message?.content||a?.response;if(!o||!o.trim())throw Error(`Received empty response from Ollama daemon`);return o}},{prefix:`browser:`,generate:async e=>{let t=e.assembledContexts.map(e=>e.textRepresentation).filter(e=>!!(e&&e.trim())).join(`
13
+
14
+ `),n=e.prompt;t&&(n+=`\n\n[Attached Context (${e.assembledContexts.length} item(s))]:\n${t}`),e.base64Images.length>0&&(n+=`\n[Notice: ${e.base64Images.length} image/video snapshot attachment(s) provided. Local browser model is text-only; switch to Ollama vision model to parse visual pixels.]`);let r=``,i=await ie.generate(e.activeModel,n,t=>{r+=t,e.onStreamChunk(e.assistantMsgId,r)});if(!i||!i.trim())throw Error(`In-browser LM returned empty response`);return i}},{prefix:`gemini:`,generate:async e=>{let t=e.userDid||`did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK`,n=e.llmConfig??{},i=re(t,`google`),a=(i?.authN?.token||n.apiKey||typeof window<`u`&&localStorage.getItem(`clm:llm_config:google_api_key`)||``).trim(),o=e.activeModel.replace(/^gemini:/,``);if(!a)return`[Google Gemini Cloud AI: ${o}]\n\n⚠️ **Provider EOA Capability Not Authorized**\n- **Caller EOA**: \`${t}\`\n- **Provider EOA**: \`did:pkc:eoa:google:ai-studio\` (Google Cloud AI)\n- **Target Model**: \`${o}\`\n- **Defect**: AuthN Token Missing (No API key bound for did:pkc:eoa:google:ai-studio)\n\n<button id="open-llm-settings" label="⚙️ Fulfill AuthN/AuthO for Google Gemini Provider Agency">⚙️ Fulfill AuthN/AuthO for Google Gemini Provider Agency</button>`;if(i?.authO?.allowedModels&&i.authO.allowedModels.length>0&&!i.authO.allowedModels.some(e=>e===o||o.startsWith(`gemini-`)&&(e.includes(o)||o.includes(e))))return`[Google Gemini Cloud AI: ${o}]\n\n⚠️ **Provider EOA Capability Not Authorized**\n- **Caller EOA**: \`${t}\`\n- **Provider EOA**: \`did:pkc:eoa:google:ai-studio\` (Google Cloud AI)\n- **Target Model**: \`${o}\`\n- **Defect**: AuthO Restricted (Model \`${o}\` not in authorized catalog)\n\n<button id="open-llm-settings" label="⚙️ Fulfill AuthN/AuthO for Google Gemini Provider Agency">⚙️ Fulfill AuthN/AuthO for Google Gemini Provider Agency</button>`;let s=e.assembledContexts.map(e=>e.textRepresentation).filter(e=>!!(e&&e.trim())).join(`
15
+
16
+ `),l=e.prompt;s&&(l+=`\n\n[Attached Context (${e.assembledContexts.length} item(s))]:\n${s}`);let u=n.provider===`google`&&n.baseUrl&&!n.baseUrl.includes(`11434`)&&!n.baseUrl.includes(`localhost`)&&!n.baseUrl.includes(`127.0.0.1`)?n.baseUrl:`https://generativelanguage.googleapis.com/v1beta`,f=/\b(generate|create|draw|make|paint|design|sketch|render|produce|show me)\b.*\b(image|picture|photo|illustration|diagram|icon|logo|art|drawing|cartoon|avatar)\b/i.test(l),m=[];try{let e=typeof window<`u`?localStorage.getItem(`clm:llm_config:google_available_models`):null;if(e){let t=JSON.parse(e);Array.isArray(t)&&(m=t)}}catch{}if(m.length===0&&a&&!a.startsWith(`AIzaSyTest`))try{let e=await fetch(`/api/llm/google/models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({apiKey:a.trim(),baseUrl:u})});if(e.ok){let t=((await e.json()).models||[]).filter(e=>e.supportedGenerationMethods?.includes(`generateContent`)).map(e=>e.name.replace(/^models\//,``));t.length>0&&(m=t,typeof window<`u`&&localStorage.setItem(`clm:llm_config:google_available_models`,JSON.stringify(t)))}}catch{}let _=(e=>{if(m.length>0&&m.includes(e))return e;let t=m.filter(e=>e.includes(`gemini-3`));return e.includes(`pro`)?t.find(e=>e.includes(`pro`))||`gemini-3.1-pro-preview`:e.includes(`thinking`)?t.find(e=>e.includes(`thinking`))||`gemini-3.8-thinking`:t.includes(e)?e:t.find(e=>e===`gemini-3.6-flash`)||t.find(e=>e===`gemini-3.5-flash`)||t.find(e=>e.includes(`flash`))||(e.startsWith(`gemini-3`)?e:`gemini-3.6-flash`)})(o);console.info(`[Koishi Satori] Mapped 3.x model "${o}" → upstream Google API "${_}" (imageMode: ${f}, baseUrl: ${u})`);let v=async(t,n)=>{let r=n===void 0?f:n,i=[{text:l}];for(let t of e.assembledContexts)t.modality===`image`&&t.rawBase64&&i.push({inlineData:{mimeType:t.mimeType||`image/jpeg`,data:t.rawBase64}});let o={model:t,contents:[{role:`user`,parts:i}],apiKey:a.trim(),baseUrl:u};r&&(o.generationConfig={responseModalities:[`TEXT`,`IMAGE`]});let s=await fetch(`/api/llm/google/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o)});if(!s.ok){let e=await s.json().catch(()=>({})),t=Error(e?.error?.message||`HTTP ${s.status} ${s.statusText}`);throw t.status=e?.status||s.status,t}let c=((await s.json()).candidates?.[0])?.content?.parts||[],d=[],p=[];for(let e of c)e.text?d.push(e.text):e.inlineData?.mimeType&&e.inlineData?.data&&p.push({mimeType:e.inlineData.mimeType,base64Data:e.inlineData.data});let m=d.join(``);if(!m.trim()&&p.length===0)throw Error(`Received empty response from Google Gemini API`);return{text:m,inlineImages:p}};try{let t,n=``;try{t=await v(_)}catch(e){if(e.status===503||e.status===404||e.message?.includes(`high demand`)||e.message?.includes(`not found`)){let r=m.length>0?m.filter(e=>e!==_&&e.includes(`gemini-3`)&&!e.includes(`embedding`)):[`gemini-3.6-flash`,`gemini-3.8-flash`,`gemini-3.5-flash`,`gemini-3.1-pro-preview`,`gemini-3.8-pro`],i=!1;for(let a of r)try{let r=await v(a,!1);n=`*(Notice: \`${_}\` was temporarily unavailable on Google AI Studio (${e.status||`503`}). Response served by verified fallback \`${a}\`)*`,t=r,i=!0;break}catch{}if(!i)throw Error(`Google Gemini Cloud AI error: ${e?.message||String(e)}`)}else throw e}let i=t;if(i.inlineImages.length>0){let t=r.create(e.userDid||`did:clm:agent:gemini`);for(let n of i.inlineImages){let r=g(e.turnId,n.mimeType,n.base64Data,t);p(e.triDatabase,r),e.artifacts.imageMCards.push(r);let i=`data:${n.mimeType};base64,${n.base64Data}`,a=r.hash.asHex().slice(0,10);if(e.artifacts.imageElements.push(h(i,`Gemini-generated image`)),e.artifacts.imageElements.push(c(r.hash.asHex(),r.uri,`image`)),le({id:r.uri,name:`chat_img_${a}.jpg`,path:`virtual/chat/images/${a}.jpg`,mimeType:n.mimeType,content:i,hash:r.hash.asHex(),sizeBytes:n.base64Data.length*.75}),typeof window<`u`&&localStorage.getItem(`clm:chat:auto_save_images_to_assets`)===`true`)try{let r=await M({base64Data:n.base64Data,mimeType:n.mimeType,prompt:`Gemini-generated image`,authorDid:t});e.artifacts.imageElements.pop(),e.artifacts.imageElements.push(c(r.hash,r.handle,`image`))}catch(e){console.warn(`[ChatTurnOrchestrator] Auto-save image to assets failed:`,e)}}}let o=n?`${n}\n\n${i.text}`:i.text,s=d(o);if(s.isToolCall&&(s.action===`dalle.text2im`||s.action===`image_generation`||s.action===`generate_image`||s.action===`text2im`)){let t=s.prompt||e.lastPrompt||`Synthesized visual asset`,n=await Et.generateImage({prompt:t,apiKey:a.trim(),size:s.size||`1024x1024`,baseUrl:u});if(n.success&&n.base64Data){let i=r.create(e.userDid||`did:clm:agent:gemini`),a=g(e.turnId,n.mimeType||`image/jpeg`,n.base64Data,i);p(e.triDatabase,a),e.artifacts.imageMCards.push(a);let o=`data:${n.mimeType||`image/jpeg`};base64,${n.base64Data}`,l=a.hash.asHex().slice(0,10);if(e.artifacts.imageElements.push(h(o,t)),e.artifacts.imageElements.push(c(a.hash.asHex(),a.uri,`image`)),le({id:a.uri,name:`chat_img_${l}.jpg`,path:`virtual/chat/images/${l}.jpg`,mimeType:n.mimeType||`image/jpeg`,content:o,hash:a.hash.asHex(),sizeBytes:n.base64Data.length*.75}),typeof window<`u`&&localStorage.getItem(`clm:chat:auto_save_images_to_assets`)===`true`)try{let r=await M({base64Data:n.base64Data,mimeType:n.mimeType||`image/jpeg`,prompt:t,authorDid:i});e.artifacts.imageElements.pop(),e.artifacts.imageElements.push(c(r.hash,r.handle,`image`))}catch(e){console.warn(`[ChatTurnOrchestrator] Auto-save image to assets failed:`,e)}let u=``;s.preamble&&(u+=`${s.preamble}\n\n`),s.thought&&(u+=`${s.thought}\n\n`);let d=n.provider===`pollinations`?`Pollinations Fallback`:`Google Imagen 3`;return u+=`*[Generated image via ${d} | MCard: \`#${l}\`]*`,u}}let l=n?`${n}\n\n${i.text}`:i.text;if(e.artifacts.imageMCards.length>0&&!l.trim()&&(l=`Generated ${e.artifacts.imageMCards.length} image(s) via Google Gemini.`),e.artifacts.imageMCards.length>0){let t=e.artifacts.imageMCards.map(e=>`\`${e.hash.asHex().slice(0,10)}\` (${e.getMetadata(`mimeType`)||`image`})`).join(`, `);l+=`\n\n📎 *Image MCard(s): ${t}*`}return l}catch(e){throw Error(`Google Gemini Cloud AI error: ${e?.message||String(e)}`)}}}];function Ot(e){let t=Dt.find(t=>e.activeModel.startsWith(t.prefix));return t?t.generate(e):Promise.resolve(`[Satori SpeechAct: received] Processed query on model **${e.activeModel}**.`)}async function kt(e,t){let n=e.input.trim();if(!n&&e.attachments.length===0)return{kind:`no-op`};let i=n.startsWith(`/`),a=n.split(/\s+/),l=i?a[0]:``,u=i?a.slice(1):[],d=``,f=[],p=[];if(e.attachments.length>0){let t=await yt(e.attachments);f=t.contexts,p=t.contexts.filter(e=>!!e.rawBase64).map(e=>e.rawBase64),d=`\n📎 Assembled ${t.contexts.length} attachment(s) (~${t.totalTokenEstimate} tokens)`}let m=[];n&&m.push(o(n));for(let e of f)e.modality===`image`&&e.dataUri?m.push(h(e.dataUri,e.label)):m.push(c(e.hash,e.handle,e.modality));let g={id:crypto.randomUUID(),role:`user`,text:n,timestamp:Date.now(),attachments:e.attachments.length>0?e.attachments:void 0,elements:m.length>0?m:void 0,satoriContent:m.length>1,speechAct:`directive`},_=Xe({sponsorDid:e.userDid,command:l,args:u,referencedHandles:e.attachments.map(e=>e.handle),referencedPCards:i&&l===`/run`?u.slice(0,1):[],rawContent:n},e.existingHandles,e.existingPCards);if(_.verdict===`REJECT`)return t.onUserMessage(g),t.onGateMessage({id:crypto.randomUUID(),role:`gate`,text:Ze(_),timestamp:Date.now(),gateResult:_,speechAct:`declarative`}),{kind:`gate-rejected`,gateResult:_};if(i){let e=qe(l,u);return e.response===`__CLEAR__`?(t.onClearHistory(),{kind:`slash-command`,gateResult:_}):(t.onUserMessage(g),t.onAssistantMessage({id:crypto.randomUUID(),role:`assistant`,text:e.response+d,timestamp:Date.now(),gateResult:_,satoriContent:e.satoriContent,speechAct:`assertive`}),{kind:`slash-command`,gateResult:_,assistantText:e.response})}let v=`turn_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,y=crypto.randomUUID(),b=r.create(e.userDid||`did:clm:agent:user`),x={imageElements:[],imageMCards:[]};t.onUserMessage(g),t.onAssistantMessage({id:y,role:`assistant`,text:`⏳ [PROGRESSING] Thinking with **${e.activeModel}** (PCard: \`${v}\`)...`,timestamp:Date.now(),gateResult:_,pcardState:`progressing`,speechAct:`commissive`}),t.onTurnStateChange(`progressing`);let S=new s(`pcard:chatbot:turn:${v}`,e.triDatabase),C={prompt:n,attachments:e.attachments.map(e=>e.handle),authorDid:b,modelId:e.activeModel,turnId:v};try{let r=await S.executeTurn(C,{provider:n=>Ot({prompt:n,activeModel:e.activeModel,userDid:e.userDid,lastPrompt:e.lastPrompt,llmConfig:e.llmConfig,turnId:v,assistantMsgId:y,triDatabase:e.triDatabase,assembledContexts:f,base64Images:p,contextSummary:d,artifacts:x,onStreamChunk:t.onStreamChunk}),preGate:async()=>_.verdict===`REJECT`?{pass:!1,reason:_.reason||_.rejections?.map(e=>`${e.code}: ${e.reason}`).join(`; `)||`Precondition gate rejected`,obstruction:{violations:_.violations||_.rejections}}:{pass:!0}});t.onWitness({queryMCard:r.queryMCard,feedbackMCard:r.feedbackMCard,turnId:v,input:n,feedbackText:r.feedbackText,modelId:e.activeModel}),t.onTurnStateChange(r.finalState);let i=[];r.feedbackText.trim()&&i.push(o(r.feedbackText)),x.imageElements.length>0&&i.push(...x.imageElements);let a=i.some(e=>e.type===`image`);return t.onAssistantSettled(y,{text:a?r.feedbackText:`${r.feedbackText}\n\n*[PCard State: ${r.finalState} | Event MCard: \`${r.feedbackMCard.hash.asHex().slice(0,10)}\` | Model: ${e.activeModel}]*`,pcardState:r.finalState,contentHash:r.feedbackMCard.hash.asHex(),satoriContent:a||void 0,elements:i.length>0?i:void 0}),{kind:`chat-turn`,gateResult:_,assistantText:r.feedbackText,finalState:r.finalState,feedbackMCardHash:r.feedbackMCard.hash.asHex()}}catch(e){return t.onTurnStateChange(`waiting`),t.onAssistantSettled(y,{text:`⚠️ **Turn Reverted (H_T = 0)**: ${e?.message||e}\n\n*State rolled back cleanly to \`waiting\` via SavepointGuard. Ensure local Ollama daemon is running at http://127.0.0.1:11434.*`,pcardState:`waiting`}),{kind:`chat-turn`,gateResult:_,error:e?.message||String(e)}}}N.lazy(()=>_(()=>import(`./MarkdownViewlet.CRuuXXmF.js`).then(e=>({default:e.MarkdownContentView})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])));function At(e){let t=O(z),n=O(Me),r=t.filter(e=>e.channelId===n).map(e=>({id:e.id,role:e.role,text:e.text,timestamp:e.timestamp,attachments:e.attachments,elements:e.elements,gateResult:e.gateResult,satoriContent:e.satoriContent,pcardState:e.pcardState,feedbackMCardHash:e.contentHash,savedToAssets:e.savedToAssets,savedAssetHandle:e.savedAssetHandle})),i=(0,N.useCallback)(e=>{typeof e==`function`?Pe(e(z.get())):Array.isArray(e)&&(e.length===0?Fe(n):Pe(e))},[n]);return{messages:r,processInput:(0,N.useCallback)(async(t,r=[])=>{let i=r.map(e=>e instanceof a?E(e):e),o=w.get();kt({input:t,attachments:i,activeModel:e.activeModel,userDid:e.userDid,existingHandles:e.existingHandles,existingPCards:e.existingPCards,lastPrompt:e.lastPrompt,llmConfig:{apiKey:o.apiKey,provider:o.provider,baseUrl:o.baseUrl},triDatabase:L},{onUserMessage:e=>{B({...e,channelId:n},e.speechAct??`directive`)},onGateMessage:e=>{B({...e,channelId:n},e.speechAct??`declarative`)},onAssistantMessage:e=>{B({...e,channelId:n},e.speechAct??`assertive`)},onStreamChunk:(e,t)=>{Ne(e,{text:t,pcardState:`progressing`})},onAssistantSettled:(e,t)=>{Ne(e,t)},onClearHistory:()=>{Fe(n)},onTurnStateChange:e=>{Oe.set(e)},onWitness:e=>{Ae(e.queryMCard,`chat_query`,{turn_id:e.turnId,input:e.input}),Ae(e.feedbackMCard,`chat_feedback`,{turn_id:e.turnId,feedback:e.feedbackText,model_id:e.modelId})}})},[e.userDid,e.activeModel,e.existingHandles,e.existingPCards,e.lastPrompt,n]),setMessages:i}}function jt(e={}){let t=O(C),n=e.userDid||`did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK`,[r,i]=(0,N.useState)({}),[a,o]=(0,N.useState)(null),s=(0,N.useRef)(null),{messages:c,processInput:l}=At({userDid:n,activeModel:e.activeModel||t});return(0,N.useEffect)(()=>{s.current?.scrollIntoView({behavior:`smooth`})},[c]),(0,N.useEffect)(()=>()=>{},[]),{messages:c,processInput:l,messagesEndRef:s,insertedMap:r,insertingId:a,handleInsertResponseAsMCard:(0,N.useCallback)(async(e,t)=>{if(!t||a)return;let n=r[e];if(n){let e=`assets:${n}`,t=D.get()[e];if(t){y(t);return}}o(e);try{let n=await se(t);i(t=>({...t,[e]:n.name}))}catch(e){console.error(`Failed to insert response as MCard:`,e)}finally{o(null)}},[r,a])}}function Mt(){(0,N.useEffect)(()=>{let e=!1;async function t(){let t=performance.now();try{let n=await fetch(`/api/llm/ollama/tags`);if(n.ok){let r=await n.json(),i=r.latencyMs===void 0?Math.round(performance.now()-t):r.latencyMs;if(!e){let e=(Array.isArray(r.models)?r.models:[]).map(e=>typeof e==`string`?e:e.name),t=!!(r.online===void 0?e.length>0:r.online);S({online:t&&e.length>0,latencyMs:i,models:e})}}else e||S({online:!1,latencyMs:0,models:[]})}catch{e||S({online:!1,latencyMs:0,models:[]})}}return t(),()=>{e=!0}},[])}var $=({onOpenSettings:e,onClose:t})=>{let n=O(C),r=O(x),i=O(T),a=O(oe),o=O(w),[s,c]=(0,N.useState)(``);Mt();let{attachments:l,attachCurrentCard:u,removeAttachment:d,clearAttachments:f,resolveAttachedNodes:p}=Re(),{messages:m,processInput:h,messagesEndRef:g,insertedMap:_,insertingId:v,handleInsertResponseAsMCard:y}=jt(),b=()=>{if(!s.trim()&&l.length===0)return;let e=p();h(s,e),c(``),f()},S=n.startsWith(`browser:`),E=n.startsWith(`ollama:`),D=n.startsWith(`gemini:`),k=!!(o.apiKey&&o.apiKey.trim().length>0),A=S||D&&k?`#89d185`:D?`#ffd700`:E&&r.online?`#4ec9b0`:E?`#f14c4c`:`#cca700`,te=S?`WebGPU (0ms Local)`:D&&k?`Google Cloud AI`:D?`AuthN Required`:E&&r.online?`${r.latencyMs}ms`:E?`Ollama Offline`:`Remote Cloud`;return(0,F.jsxs)(`div`,{"data-testid":`koishi-chat-viewlet`,style:{display:`flex`,flexDirection:`column`,height:`100%`,backgroundColor:`#181818`,color:`#cccccc`,fontFamily:`system-ui, -apple-system, sans-serif`},children:[(0,F.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,padding:`8px 10px`,borderBottom:`1px solid #2d2d2d`,backgroundColor:`#1f1f1f`,gap:`6px`},children:[(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,F.jsx)(ne,{size:14,color:`#007acc`}),(0,F.jsx)(`span`,{style:{fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.5px`},children:`Koishi Chat`}),(0,F.jsxs)(`span`,{"data-testid":`status-indicator`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`1px 6px`,borderRadius:`10px`,fontSize:`10px`,backgroundColor:`rgba(255, 255, 255, 0.05)`,color:A},children:[(0,F.jsx)(`span`,{style:{width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:A,display:`inline-block`}}),te]}),D&&(0,F.jsx)(`span`,{"data-testid":`provider-eoa-badge`,title:k?`Provider EOA did:pkc:eoa:google:ai-studio (Authorized)`:`Provider EOA did:pkc:eoa:google:ai-studio (AuthN Missing - Click to configure)`,onClick:()=>{window.dispatchEvent(new CustomEvent(`clm:open-llm-settings`,{detail:{provider:`google`}})),e?.()},style:{display:`inline-flex`,alignItems:`center`,gap:`3px`,padding:`1px 6px`,borderRadius:`10px`,fontSize:`9px`,cursor:`pointer`,backgroundColor:k?`rgba(137, 209, 133, 0.15)`:`rgba(255, 215, 0, 0.15)`,color:k?`#89d185`:`#ffd700`,border:k?`1px solid rgba(137, 209, 133, 0.3)`:`1px solid rgba(255, 215, 0, 0.3)`},children:k?`🔑 did:pkc:eoa:google`:`⚠️ Missing AuthN`})]}),(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`4px`},children:[e&&(0,F.jsx)(`button`,{type:`button`,"data-testid":`btn-open-settings`,onClick:e,title:`Configure LLM & Ollama Endpoints`,style:{background:`none`,border:`none`,color:`#858585`,cursor:`pointer`,padding:`2px`,display:`flex`,alignItems:`center`},children:(0,F.jsx)(ee,{size:13})}),t&&(0,F.jsx)(`button`,{type:`button`,"data-testid":`btn-close-chat`,onClick:t,title:`Close Viewlet`,style:{background:`none`,border:`none`,color:`#858585`,cursor:`pointer`,padding:`2px`,fontSize:`14px`,lineHeight:1},children:`✕`})]})]}),(0,F.jsx)(_e,{})]}),a&&(0,F.jsxs)(`div`,{"data-testid":`download-progress-banner`,style:{padding:`4px 10px`,backgroundColor:`rgba(137, 209, 133, 0.15)`,borderBottom:`1px solid rgba(137, 209, 133, 0.3)`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,fontSize:`10px`,color:`#89d185`},children:[(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,overflow:`hidden`},children:[(0,F.jsx)(`span`,{children:`⚡`}),(0,F.jsxs)(`span`,{style:{textOverflow:`ellipsis`,overflow:`hidden`,whiteSpace:`nowrap`},children:[`Preloading `,a.modelId.replace(`browser:`,``),`: `,a.statusText]})]}),(0,F.jsxs)(`span`,{style:{fontWeight:600,flexShrink:0,marginLeft:`6px`},children:[a.progressPct,`%`]})]}),(0,F.jsx)(me,{}),(0,F.jsxs)(`div`,{style:{flex:1,overflowY:`auto`,padding:`8px 10px`,display:`flex`,flexDirection:`column`,gap:`8px`},children:[m.map(e=>(0,F.jsx)(Be,{message:e,onInsertAsMCard:y,insertingId:v,insertedMap:_},e.id)),(0,F.jsx)(`div`,{ref:g})]}),(0,F.jsx)(Ve,{inputMessage:s,setInputMessage:c,attachments:l,onRemoveAttachment:d,onAttachCurrentCard:u,hasActiveMCard:!!i,activeMCardHandle:i?.name||i?.handle,onSendMessage:b})]})},Nt=$;export{$ as KoishiChatViewlet,Nt as default};
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{F as r,I as i,M as a,P as o,c as s,d as c,n as l,r as u,s as d,t as f,u as p}from"./vendor-clm-kernel.Bvk3XHk2.js";var m=e(t(),1),h=new Set([`U0`,`U1`,`U3`]),g=e=>e.isHead&&!e.isImmutable&&h.has(e.universe),_=e=>e.universe===`U1`||e.semanticStratum===`process`,v=e=>e.universe===`U2`||e.semanticStratum===`proof`,y=e=>e.universe===`U0`||e.universe===`U1`,b=e=>Promise.resolve({description:e}),x=[{id:`edit`,label:`Edit`,icon:`✎`,shortcut:`Cmd+E`,priority:100,enabled:g,execute:()=>b(`edit`)},{id:`restore_as_head`,label:`Restore as HEAD`,icon:`↺`,priority:98,enabled:e=>e.isHistorical,execute:()=>b(`restore as head`)},{id:`save`,label:`Save`,icon:`💾`,shortcut:`Cmd+S`,priority:95,enabled:g,execute:()=>b(`save`)},{id:`step_transition`,label:`Step Transition`,icon:`▶`,priority:85,enabled:_,execute:()=>b(`step transition`)},{id:`verify_proof`,label:`Verify Proof`,icon:`✓`,priority:85,enabled:v,execute:()=>b(`verify proof`)},{id:`zoom_into`,label:`Zoom In`,icon:`⤵`,priority:80,enabled:e=>e.hasChildren,execute:()=>b(`zoom into`)},{id:`duplicate`,label:`Duplicate`,icon:`⧉`,priority:60,enabled:e=>e.isHead&&!e.isImmutable,execute:()=>b(`duplicate`)},{id:`compose_tensor`,label:`Compose (⊗)`,icon:`⊗`,priority:55,enabled:y,execute:()=>b(`compose tensor`)},{id:`compose_coproduct`,label:`Compose (+)`,icon:`+`,priority:54,enabled:y,execute:()=>b(`compose coproduct`)},{id:`compose_substitute`,label:`Substitute (◁)`,icon:`◁`,priority:53,enabled:e=>e.hasChildren||e.category===`code`,execute:()=>b(`compose substitute`)},{id:`export_artifact`,label:`Export`,icon:`⤓`,priority:20,enabled:()=>!0,execute:()=>b(`export`)},{id:`archive`,label:`Archive`,icon:`🗄`,priority:10,enabled:e=>e.isHead&&!e.isImmutable,execute:()=>b(`archive`)}],ee=class e{actions=new Map;static withBuiltins(){let t=new e;for(let e of x)t.register({...e,origin:`builtin`});return t}register(e){return this.actions.set(e.id,{...e,origin:e.origin??`host`}),()=>this.actions.delete(e.id)}get(e){return this.actions.get(e)}all(){return[...this.actions.values()]}custom(){return this.all().filter(e=>e.origin===`host`)}},te=class{registry;constructor(e){this.registry=e}resolveDirections(e){return this.registry.all().filter(t=>t.enabled(e)).sort((e,t)=>t.priority-e.priority)}toPolynomial(e){let t=this.resolveDirections(e);return l.monomial(t.length,t.length,e)}};function S(e,t,n){switch(t.id){case`save`:case`restore_as_head`:return{...e,isHead:!0,isHistorical:!1};case`archive`:return{...e,isImmutable:!0};case`zoom_into`:return{...e,activeViewport:`zoom`};default:return e}}var C=class{registry;resolver;constructor(e,t){this.registry=e,this.resolver=t}view(e){return this.resolver.resolveDirections(e)}async step(e,t,n){let r=this.view(e).find(e=>e.id===t);if(!r)return;let i=await r.execute(e,n);return{nextPosition:S(e,r,n),effect:i}}};function w(e){return{handle:e.handle,hash:e.hash,universe:e.universe,category:e.category,...e.semanticStratum?{semanticStratum:e.semanticStratum}:{},isHead:e.isHead??!0,isHistorical:e.isHistorical??!1,isImmutable:e.isImmutable??!1,hasChildren:e.hasChildren??!1,activeViewport:e.activeViewport??`fit`}}var T=n(),ne=({position:e,engine:t,onEffect:n,className:r})=>{let i=t.view(e);return(0,T.jsx)(`div`,{role:`toolbar`,"aria-label":`Card affordances`,className:`polynomial-toolbar ${r??``}`.trim(),"data-testid":`polynomial-toolbar`,style:{display:`flex`,alignItems:`center`,gap:`6px`,flexWrap:`wrap`},children:i.map(r=>(0,T.jsxs)(`button`,{type:`button`,"data-testid":`affordance-${r.id}`,"aria-label":r.label,title:r.shortcut?`${r.label} (${r.shortcut})`:r.label,onClick:()=>{t.step(e,r.id).then(e=>{e&&n?.(r.id)})},style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`2px 8px`,fontSize:`11px`,cursor:`pointer`,background:`#2a2d2e`,color:`#cccccc`,border:`1px solid #3c3c3c`,borderRadius:`3px`},children:[r.icon?(0,T.jsx)(`span`,{"aria-hidden":`true`,children:r.icon}):null,(0,T.jsx)(`span`,{children:r.label})]},r.id))})},E=r.create(`did:clm:agent:zoom`),D=class{structureProvider;trail=[];idStack=[];fibration=new u;processes=new Map;listeners=new Set;constructor(e){this.structureProvider=e}getTrail(){return{steps:[...this.trail],current:this.trail[this.trail.length-1],depth:this.trail.length}}async pushZoom(e){let t=this.trail[this.trail.length-1];if(t){let n=await this.structureProvider.getChildHandles(t.handle);if(n.length>0&&!n.includes(e.handle))return!1}return this.trail.push(e),this.register(e),this.notify(),!0}popZoom(){if(this.trail.length<=1)return;let e=this.trail.pop(),t=this.idStack.pop();return t&&(this.fibration.deregister(t),this.processes.delete(t)),this.notify(),e}jumpToDepth(e){e<0||e>=this.trail.length||(this.trail=this.trail.slice(0,e+1),this.rebuildFibration(),this.notify())}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get size(){return this.fibration.size}verifyAxioms(){for(let e of this.processes.values())if(!d(this.fibration,e).valid)return!1;return!0}register(e){let t=`${e.handle}#${this.trail.length}`,n=a.create(`mcard:${e.handle}`,o(e.hash),E,0),r=new f(t,n,{carrierHandle:e.handle}),i={id:t,carrier:n,carrierHandle:e.handle,fiber:r,createdAt:Date.now()};this.fibration.register(i),this.processes.set(t,i),this.idStack.push(t)}rebuildFibration(){for(let e of[...this.processes.keys()])this.fibration.deregister(e),this.processes.delete(e);this.idStack.length=0;let e=this.trail;this.trail=[];for(let t of e)this.trail.push(t),this.register(t)}notify(){let e=this.getTrail();for(let t of this.listeners)t(e)}},O=new Set([`code`,`data`,`text`,`blob`,`process`]),k=class{contentProvider;constructor(e){this.contentProvider=e}async getPorts(e){let t=await this.contentProvider.getCard(e);if(!t)return[];let n=t.metadata?.ports;if(Array.isArray(n))return n;let r=[{id:`out`,label:`Output`,direction:`out`,typeId:t.mimeType,universe:t.universe}];return O.has(t.category)&&r.push({id:`in`,label:`Input`,direction:`in`,typeId:t.mimeType,universe:t.universe}),r}async getChildHandles(e){let t=(await this.contentProvider.getCard(e))?.metadata?.children;return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}},A=({trail:e,onJump:t})=>(0,T.jsxs)(`nav`,{"data-testid":`zoom-breadcrumb`,"aria-label":`Zoom trail`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,flexWrap:`wrap`,fontSize:`11px`,minHeight:`18px`},children:[e.steps.length===0?(0,T.jsx)(`span`,{"data-testid":`zoom-step-0`,"data-current":`true`,style:{color:`#888`},children:`Root`}):null,e.steps.map((n,r)=>{let i=r===e.steps.length-1;return(0,T.jsxs)(m.Fragment,{children:[r>0?(0,T.jsx)(`span`,{"aria-hidden":`true`,style:{color:`#666`},children:`›`}):null,(0,T.jsx)(`button`,{type:`button`,"data-testid":`zoom-step-${r}`,"data-current":i?`true`:`false`,"aria-current":i?`page`:void 0,title:n.title,onClick:()=>t?.(r),style:{padding:`1px 6px`,fontSize:`11px`,cursor:`pointer`,borderRadius:`3px`,border:`1px solid #3c3c3c`,background:i?`#04395e`:`#252526`,color:i?`#ffffff`:`#cccccc`},children:n.title})]},`${n.handle}#${r}`)})]}),j=class{nodes=new Map;activeNodeId=null;subscribers=new Set;async executeEffect(e){let t=await e.apply(),n=this.activeNodeId;if(n){this.setHead(n,!1);let t=this.nodes.get(n);t&&t.children.push(e.id)}let r={id:e.id,effect:e,parentId:n,children:[],isHead:!0};return this.nodes.set(r.id,r),this.activeNodeId=r.id,this.notify(),t}async stepBack(){let e=this.activeNodeId?this.nodes.get(this.activeNodeId):void 0;return e?(await e.effect.inverse(),this.setHead(e.id,!1),this.activeNodeId=e.parentId,this.activeNodeId&&this.setHead(this.activeNodeId,!0),this.notify(),!0):!1}async stepForward(e){let t=this.childrenOf(this.activeNodeId),n=e??t[t.length-1];if(!n)return!1;let r=this.nodes.get(n);return!r||r.parentId!==this.activeNodeId?!1:(await r.effect.apply(),this.activeNodeId&&this.setHead(this.activeNodeId,!1),this.setHead(n,!0),this.activeNodeId=n,this.notify(),!0)}branchSession(){return{nodeId:this.activeNodeId,children:this.childrenOf(this.activeNodeId)}}getTree(){return{nodes:[...this.nodes.values()],activeId:this.activeNodeId}}get activeId(){return this.activeNodeId}headId(){for(let e of this.nodes.values())if(e.isHead)return e.id;return null}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}childrenOf(e){return e?[...this.nodes.get(e)?.children??[]]:[...this.nodes.values()].filter(e=>e.parentId===null).map(e=>e.id)}setHead(e,t){let n=this.nodes.get(e);n&&n.isHead!==t&&this.nodes.set(e,{...n,isHead:t})}notify(){for(let e of this.subscribers)e()}},M=({tree:e,onStepBack:t,onStepForward:n})=>{let r=e.activeId,i=r?e.nodes.find(e=>e.id===r)?.children??[]:[];return(0,T.jsxs)(`div`,{"data-testid":`timeline-scrubber`,style:{display:`flex`,flexDirection:`column`,gap:`6px`,fontSize:`11px`},children:[(0,T.jsx)(`div`,{style:{display:`flex`,gap:`4px`,flexWrap:`wrap`},children:e.nodes.map(e=>(0,T.jsx)(`button`,{type:`button`,"data-testid":`timeline-node-${e.id}`,"data-head":e.isHead?`true`:`false`,"data-active":e.id===r?`true`:`false`,"data-branch":e.children.length>1?`true`:`false`,"aria-label":`Timeline node ${e.id}`,title:e.effect.description,onClick:()=>n?.(e.id),style:{padding:`1px 6px`,fontSize:`11px`,cursor:`pointer`,borderRadius:`3px`,border:`1px solid ${e.isHead?`#73c991`:`#3c3c3c`}`,background:e.id===r?`#04395e`:`#252526`,color:e.id===r?`#ffffff`:`#cccccc`},children:e.effect.description},e.id))}),(0,T.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,T.jsx)(`button`,{type:`button`,"data-testid":`timeline-back`,onClick:()=>t?.(),children:`← Back`}),(0,T.jsxs)(`span`,{"data-testid":`timeline-branch-count`,children:[i.length,` branch`,i.length===1?``:`es`]})]})]})},re=({canUndo:e,canRedo:t,pending:n=0})=>(0,T.jsxs)(`span`,{"data-testid":`journal-indicator`,"data-can-undo":e?`true`:`false`,"data-can-redo":t?`true`:`false`,"data-pending":String(n),"aria-label":`Journal: ${e?`undo available`:`no undo`}, ${t?`redo available`:`no redo`}`,title:`Revertible effect journal · pending ${n}`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`1px 6px`,fontSize:`10px`,borderRadius:`3px`,border:`1px solid #3c3c3c`,color:e||t?`#73c991`:`#858585`},children:[(0,T.jsxs)(`span`,{"aria-hidden":`true`,children:[e?`↶`:`·`,t?`↷`:`·`]}),n>0?(0,T.jsx)(`span`,{"data-testid":`journal-pending`,children:n}):null]}),N=({dataSource:e,contentProvider:t,actionRegistry:n,onSelectCard:r,className:i,style:a})=>{let[o,s]=(0,m.useState)([]),[c,l]=(0,m.useState)([]),[u,d]=(0,m.useState)(),[f,p]=(0,m.useState)(null),[h,g]=(0,m.useState)(null),_=(0,m.useMemo)(()=>n??ee.withBuiltins(),[n]),v=(0,m.useMemo)(()=>new C(_,new te(_)),[_]),y=(0,m.useMemo)(()=>new D(new k(t)),[t]),b=(0,m.useMemo)(()=>new j,[]),[x,S]=(0,m.useState)(y.getTrail()),[E,O]=(0,m.useState)(b.getTree()),N=(0,m.useCallback)(async()=>{let[t,n]=await Promise.all([e.search({universe:u}),e.getFacets?e.getFacets():Promise.resolve([])]);s(t),l(n),!f&&t.length>0&&p(t[0].handle)},[e,u,f]);(0,m.useEffect)(()=>{N()},[N]),(0,m.useEffect)(()=>{if(!f){g(null);return}let e=!1;return t.getCard(f).then(t=>{e||g(t)}),()=>{e=!0}},[f,t]);let P=(0,m.useMemo)(()=>o.find(e=>e.handle===f),[o,f]),F=(0,m.useMemo)(()=>P?w({handle:P.handle,hash:P.hash,universe:P.universe,category:P.category,semanticStratum:P.semanticStratum}):null,[P]),I=typeof h?.content==`string`?h.content:h?.content?new TextDecoder().decode(h.content):``;return(0,T.jsxs)(`div`,{"data-testid":`mcard-studio-workbench`,className:`mcard-studio-workbench ${i??``}`.trim(),style:{display:`flex`,flexDirection:`column`,height:`100%`,width:`100%`,background:`#1e1e1e`,color:`#ccc`,...a},children:[(0,T.jsxs)(`header`,{"data-testid":`universe-facets`,style:{display:`flex`,gap:`6px`,padding:`8px`,background:`#252526`,borderBottom:`1px solid #333`},children:[(0,T.jsxs)(`button`,{type:`button`,"data-testid":`facet-all`,"data-selected":u===void 0,onClick:()=>d(void 0),style:{padding:`2px 8px`,background:u===void 0?`#0e639c`:`#333`,color:`#fff`,border:`none`},children:[`All (`,c.reduce((e,t)=>e+t.count,0),`)`]}),c.map(e=>(0,T.jsxs)(`button`,{type:`button`,"data-testid":`facet-${e.universe}`,"data-selected":u===e.universe,onClick:()=>d(e.universe),style:{padding:`2px 8px`,background:u===e.universe?`#0e639c`:`#333`,color:`#fff`,border:`none`},children:[e.label,` (`,e.count,`)`]},e.universe))]}),(0,T.jsxs)(`div`,{style:{display:`flex`,flex:1,minHeight:0},children:[(0,T.jsx)(`aside`,{"data-testid":`mcard-sidebar`,style:{width:`240px`,borderRight:`1px solid #333`,overflowY:`auto`},children:(0,T.jsx)(`div`,{"data-testid":`mcard-list`,children:o.map(e=>(0,T.jsxs)(`button`,{type:`button`,"data-testid":`card-item-${e.handle}`,onClick:()=>{p(e.handle),r?.(e.handle)},style:{display:`flex`,justifyContent:`space-between`,width:`100%`,padding:`6px 10px`,background:e.handle===f?`#37373d`:`transparent`,color:`#ccc`,border:`none`,textAlign:`left`},children:[(0,T.jsx)(`span`,{children:e.title}),(0,T.jsx)(`span`,{style:{fontSize:`10px`},children:e.universe})]},e.handle))})}),(0,T.jsx)(`main`,{"data-testid":`mcard-detail-pane`,style:{flex:1,display:`flex`,flexDirection:`column`},children:F?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,padding:`8px`,background:`#252526`,borderBottom:`1px solid #333`},children:[(0,T.jsx)(A,{trail:x,onJump:e=>{y.jumpToDepth(e),S(y.getTrail())}}),(0,T.jsx)(ne,{position:F,engine:v,onEffect:()=>O(b.getTree())})]}),(0,T.jsxs)(`div`,{"data-testid":`card-content-viewport`,style:{flex:1,padding:`16px`,overflowY:`auto`},children:[(0,T.jsx)(`h3`,{children:P?.title}),(0,T.jsx)(`pre`,{style:{background:`#141414`,padding:`10px`,borderRadius:`4px`},children:I||`(empty)`})]}),(0,T.jsxs)(`footer`,{style:{borderTop:`1px solid #333`,padding:`6px`,background:`#252526`,display:`flex`,justifyContent:`space-between`},children:[(0,T.jsx)(M,{tree:E,onStepBack:async()=>{await b.stepBack(),O(b.getTree())}}),(0,T.jsx)(re,{canUndo:E.activeId!==null,canRedo:!1})]})]}):(0,T.jsx)(`div`,{style:{padding:`24px`,color:`#888`},children:`Select a card`})})]})]})};function P(e,t){if(e.typeId!==t.typeId)return!1;let n=s.indexOf(e.universe),r=s.indexOf(t.universe);return n<0||r<0?!1:c(n,r)}function F(e,t){let n=s.indexOf(e),r=s.indexOf(t);return s[Math.max(n<0?0:n,r<0?0:r)]}var I={U0:`#9cdcfe`,U1:`#4ec9b0`,U2:`#dcdcaa`,U3:`#c586c0`,U4:`#ce9178`,U5:`#f48771`},L={in:`◀`,out:`▶`,coeffect:`◇`},R=({port:e,connected:t=!1})=>{let n=I[e.universe]??`#cccccc`;return(0,T.jsxs)(`span`,{"data-testid":`port-${e.id}`,"data-universe":e.universe,"data-direction":e.direction,title:`${e.label} · ${e.direction} · ${e.typeId} · ${e.universe}${e.optional?` (optional)`:``}`,"aria-label":`Port ${e.label}, ${e.direction}, universe ${e.universe}`,style:{display:`inline-flex`,alignItems:`center`,gap:`4px`,padding:`1px 6px`,fontSize:`10px`,borderRadius:`3px`,border:`1px solid ${t?n:`#3c3c3c`}`,background:t?`${n}22`:`#252526`,color:n},children:[(0,T.jsx)(`span`,{"aria-hidden":`true`,children:L[e.direction]}),(0,T.jsx)(`span`,{children:e.label}),(0,T.jsx)(`span`,{style:{color:`#858585`},children:e.universe})]})},z=({engine:e,source:t,target:n,onComposed:r})=>{let[i,a]=(0,m.useState)(null),o=async e=>{let t=await e();a(t),r?.(t)},s=t.ports.filter(e=>e.direction===`out`),c=n.ports.filter(e=>e.direction===`in`);return(0,T.jsxs)(`div`,{"data-testid":`composition-surface`,style:{display:`flex`,flexDirection:`column`,gap:`10px`,padding:`10px`,fontSize:`11px`,color:`#cccccc`},children:[(0,T.jsxs)(`div`,{style:{display:`flex`,gap:`16px`},children:[(0,T.jsxs)(`section`,{"data-testid":`composition-source`,style:{flex:1},children:[(0,T.jsxs)(`header`,{style:{fontWeight:600,color:`#e0e0e0`},children:[`Source · `,t.handle]}),(0,T.jsx)(`div`,{style:{display:`flex`,gap:`6px`,flexWrap:`wrap`,marginTop:`6px`},children:t.ports.map(e=>(0,T.jsx)(R,{port:e},e.id))})]}),(0,T.jsxs)(`section`,{"data-testid":`composition-target`,style:{flex:1},children:[(0,T.jsxs)(`header`,{style:{fontWeight:600,color:`#e0e0e0`},children:[`Target · `,n.handle]}),(0,T.jsx)(`div`,{style:{display:`flex`,gap:`6px`,flexWrap:`wrap`,marginTop:`6px`},children:n.ports.map(e=>(0,T.jsx)(R,{port:e},e.id))})]})]}),(0,T.jsxs)(`div`,{style:{display:`flex`,gap:`6px`,flexWrap:`wrap`},children:[(0,T.jsx)(`button`,{type:`button`,"data-testid":`compose-tensor`,onClick:()=>void o(()=>e.composeTensor(t.handle,n.handle)),children:`Compose (⊗)`}),(0,T.jsx)(`button`,{type:`button`,"data-testid":`compose-coproduct`,onClick:()=>void o(()=>e.composeCoproduct(t.handle,n.handle)),children:`Compose (+)`}),c.map(r=>s.some(e=>P(e,r))?(0,T.jsxs)(`button`,{type:`button`,"data-testid":`compose-substitute-${r.id}`,onClick:()=>void o(()=>e.composeSubstitute(n.handle,r.id,t.handle)),children:[`Substitute into `,r.label,` (◁)`]},r.id):null)]}),i?(0,T.jsx)(`div`,{"data-testid":`composition-result`,"data-success":i.success?`true`:`false`,style:{color:i.success?`#73c991`:`#f48771`},children:i.success?`Sealed ${i.composedHandle} · ${i.composedUniverse} · #${i.composedHash?.asHex().slice(0,8)}`:`Error (${i.error?.code}): ${i.error?.message}`}):null]})};function B(e,t={}){let n=t.delimiter??`:`,r=[],i=new Map;for(let t of e){let e=t.handle.split(n).filter(Boolean);if(e.length===0)continue;let a=``,o=r;for(let t=0;t<e.length;t++){let r=e[t],s=a?`${a}${n}${r}`:r,c=t===e.length-1,l=i.get(s);l||(l={handle:s,name:r,isBranch:!c,children:[]},i.set(s,l),o.push(l)),c&&(l.isBranch=!1),a=s,o=l.children}}let a=e=>({handle:e.handle,name:e.name,isBranch:e.isBranch,children:e.children.map(a)});return r.map(a)}var V=new Map(p().map(e=>[e.identifier,e.stratum_name]));function H(e){let t=e instanceof Uint8Array?e:new TextEncoder().encode(e);return i.compute(t).asHex()}function U(e){return{handle:e.handle,hash:e.hash,title:e.handle.split(`:`).pop()??e.handle,mimeType:e.mimeType,universe:e.universe,category:e.category,...e.semanticStratum?{semanticStratum:e.semanticStratum}:{},sizeBytes:e.content instanceof Uint8Array?e.content.byteLength:new TextEncoder().encode(e.content).byteLength,updatedAt:e.updatedAt,isLeaf:!0,path:e.metadata?.path}}function W(e){return{handle:e.handle,hash:e.hash,mimeType:e.mimeType,universe:e.universe,category:e.category,...e.semanticStratum?{semanticStratum:e.semanticStratum}:{},content:e.content,encoding:e.encoding,updatedAt:e.updatedAt,...e.metadata?{metadata:e.metadata}:{}}}var G=class{records=new Map;handleByHash=new Map;async putCard(e,t,n={}){let r=H(t),i=this.records.get(e),a=i?[...i.history]:[];a[a.length-1]!==r&&a.push(r);let o={handle:e,hash:r,content:t,encoding:t instanceof Uint8Array?`binary`:n.mimeType===`application/json`?`json`:`utf-8`,mimeType:n.mimeType??`text/plain`,universe:n.universe??`U0`,category:n.category??`data`,...n.semanticStratum?{semanticStratum:n.semanticStratum}:{},updatedAt:new Date().toISOString(),...n.metadata?{metadata:n.metadata}:{},history:a};return this.records.set(e,o),this.handleByHash.set(r,e),U(o)}async getCard(e){let t=this.resolve(e);return t?W(t):null}async deleteCard(e){let t=this.records.get(e);return t?(this.records.delete(e),this.handleByHash.delete(t.hash),!0):!1}async search(e={}){let t=[...this.records.values()].map(U);if(e.pattern){let n=e.pattern.toLowerCase();t=t.filter(e=>e.handle.toLowerCase().includes(n))}e.universe&&(t=t.filter(t=>t.universe===e.universe)),e.category&&(t=t.filter(t=>t.category===e.category)),e.semanticStratum&&(t=t.filter(t=>t.semanticStratum===e.semanticStratum)),e.prefix&&(t=t.filter(t=>t.handle.startsWith(e.prefix))),t.sort((e,t)=>e.handle.localeCompare(t.handle));let n=e.offset??0,r=e.limit??t.length;return t.slice(n,n+r)}async getTree(e){return B(await this.search(e?{prefix:e}:{}),{delimiter:`:`})}async getHistory(e){let t=this.records.get(e);return t?t.history.map(e=>U({...t,hash:e})):[]}async has(e){return this.resolve(e)!==void 0}async getFacets(e={}){let t=await this.search({...e,limit:void 0,offset:void 0}),n=new Map;for(let e of t)n.set(e.universe,(n.get(e.universe)??0)+1);return[...n.entries()].sort((e,t)=>e[0].localeCompare(t[0])).map(([e,t])=>({universe:e,label:V.get(e)??e,count:t}))}resolve(e){let t=this.records.get(e);if(t)return t;let n=this.handleByHash.get(e);return n?this.records.get(n):void 0}hydrate(e){let t={handle:e.handle,hash:e.hash,content:e.content,encoding:e.encoding,mimeType:e.mimeType,universe:e.universe,category:e.category,...e.semanticStratum?{semanticStratum:e.semanticStratum}:{},updatedAt:e.updatedAt,...e.metadata?{metadata:e.metadata}:{},history:[e.hash]};this.records.set(e.handle,t),this.handleByHash.set(e.hash,e.handle)}},K=`application/vnd.mcard+json`,q=`clm:compound:tensor`,J=`clm:compound:coproduct`,Y=`clm:compound:substitute`;function ie(e){if(typeof e.content==`string`)try{let t=JSON.parse(e.content);return t&&typeof t==`object`?t:void 0}catch{return}}function X(e,t,n){let r=ie(e);return r?.type===t&&Array.isArray(r[n])?r[n]:[{handle:e.handle,hash:e.hash,universe:e.universe}]}function Z(e){let t=new Map;for(let n of e)t.set(n.hash,n);return[...t.values()].sort((e,t)=>e.hash.localeCompare(t.hash))}var Q=e=>e.reduce((e,t)=>F(e,t.universe),`U0`),$=(e,t)=>({success:!1,error:{code:e,message:t}}),ae=class{contentProvider;structureProvider;compoundMime;constructor(e,t,n=K){this.contentProvider=e,this.structureProvider=t,this.compoundMime=n}async seal(e,t,n){let r=await this.contentProvider.putCard(e,JSON.stringify(t),{mimeType:this.compoundMime,universe:n,category:`data`});return{success:!0,composedHandle:r.handle,composedHash:i.fromHex(r.hash),composedUniverse:n}}async load(e,t){let[n,r]=await Promise.all([this.contentProvider.getCard(e),this.contentProvider.getCard(t)]);return n&&r?[n,r]:void 0}async composeTensor(e,t){let n=await this.load(e,t);if(!n)return $(`NOT_FOUND`,`One or both cards were not found`);let r=Z([...X(n[0],q,`members`),...X(n[1],q,`members`)]);if(r.length===0)return $(`INVALID_OPERAND`,`Tensor requires at least one member`);let i=Q(r);return this.seal(`tensor:${r.map(e=>e.hash).join(`+`)}`,{type:q,members:r,universe:i},i)}async composeCoproduct(e,t,n){let r=await this.load(e,t);if(!r)return $(`NOT_FOUND`,`One or both cards were not found`);let i=Z([...X(r[0],J,`variants`),...X(r[1],J,`variants`)]);if(i.length===0)return $(`INVALID_OPERAND`,`Coproduct requires at least one variant`);let a=Q(i),o=n&&i.some(e=>e.hash===n)?n:i[0].hash;return this.seal(`coproduct:${i.map(e=>e.hash).join(`+`)}:${o}`,{type:J,variants:i,chosen:o,universe:a},a)}async composeSubstitute(e,t,n){let r=await this.load(e,n);if(!r)return $(`NOT_FOUND`,`Host or inserted card was not found`);let[i,a]=r,o=(await this.structureProvider.getPorts(e)).find(e=>e.id===t&&e.direction===`in`);if(!o)return $(`BAD_PORT`,`Invalid input port "${t}" on host`);if(!(await this.structureProvider.getPorts(n)).find(e=>e.direction===`out`&&P(e,o)))return $(`TYPE_MISMATCH`,`No out port compatible with "${o.typeId}"`);let s=F(i.universe,a.universe);return this.seal(`substitute:${i.hash}:${t}:${a.hash}`,{type:Y,host:i.handle,hostHash:i.hash,port:t,inserted:a.handle,insertedHash:a.hash,universe:s},s)}},oe=()=>{let[e]=(0,m.useState)(()=>new G),[t,n]=(0,m.useState)(!1),[r,i]=(0,m.useState)(!1),a=(0,m.useMemo)(()=>new ae(e,new k(e)),[e]);return(0,m.useEffect)(()=>{let t=!0;async function r(){await e.putCard(`fixture:u0:static-image`,`fake-image-bytes`,{universe:`U0`,category:`media`,mimeType:`image/png`}),await e.putCard(`fixture:u1:process1`,`places: [p1]
2
+ transitions: [t1]`,{universe:`U1`,category:`data`,mimeType:`application/clm-pcard+yaml`,semanticStratum:`process`}),await e.putCard(`fixture:u2:proof-receipt`,`{"verified": true, "witness": "proof-hash"}`,{universe:`U2`,category:`data`,mimeType:`application/clm-vcard+json`,semanticStratum:`proof`}),await e.putCard(`fixture:u3:dialogue`,`<card><propose text="agree" /></card>`,{universe:`U3`,category:`text`,mimeType:`application/satori+xml`,semanticStratum:`dialogue`}),await e.putCard(`fixture:u4:membrane`,`<membrane id="surface-1" />`,{universe:`U4`,category:`text`,mimeType:`text/html`,semanticStratum:`membrane`}),await e.putCard(`fixture:u5:meta`,`{"epoch": 1, "telemetry_hook": true}`,{universe:`U5`,category:`data`,mimeType:`application/json`,semanticStratum:`meta`}),await e.putCard(`fixture:u0:data1`,`{"value": 42}`,{universe:`U0`,category:`data`,mimeType:`application/json`}),t&&(n(!0),console.log(`clm:workbench-ready`),window.dispatchEvent(new CustomEvent(`clm:workbench-ready`)))}return r(),()=>{t=!1}},[e]),t?(0,T.jsxs)(`div`,{style:{width:`100vw`,height:`100vh`,display:`flex`,flexDirection:`column`},children:[(0,T.jsxs)(`div`,{style:{background:`#333`,padding:`4px 12px`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,T.jsx)(`span`,{style:{fontSize:`11px`,color:`#aaa`},children:`@mcard/studio Embedding Harness`}),(0,T.jsx)(`button`,{type:`button`,"data-testid":`toggle-composition-btn`,onClick:()=>i(e=>!e),style:{padding:`2px 8px`,fontSize:`11px`,cursor:`pointer`},children:r?`Show Workbench`:`Show Composition Surface`})]}),(0,T.jsx)(`div`,{style:{flex:1,minHeight:0},children:r?(0,T.jsx)(z,{engine:a,source:{handle:`fixture:u0:data1`,universe:`U0`,ports:[{id:`out-1`,label:`Output Port`,direction:`out`,typeId:`application/json`,universe:`U0`}]},target:{handle:`fixture:u1:process1`,universe:`U1`,ports:[{id:`in-1`,label:`Input Port`,direction:`in`,typeId:`application/json`,universe:`U1`},{id:`out-2`,label:`Output Port`,direction:`out`,typeId:`application/json`,universe:`U1`}]},onComposed:async t=>{t.success&&t.composedHandle&&await e.putCard(t.composedHandle,`composed-content`,{universe:t.composedUniverse})}}):(0,T.jsx)(N,{dataSource:e,contentProvider:e})})]}):(0,T.jsx)(`div`,{"data-testid":`harness-loading`,style:{padding:`20px`,color:`#888`},children:`Initializing MCard Library Harness...`})};export{oe as MCardLibraryHarness};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{a as r,i,l as a,n as o,r as s,t as c,u as l}from"./themeStore.zUMFLo3Q.js";import{C as u,y as d}from"./mcardStore.BiAvqM-D.js";import{n as f,t as p}from"./pathsConfig.D0hV34p7.js";import{n as m,t as h}from"./vfsHandles.B-nczBRy.js";import{v as g}from"./mcardVfs.Bj-RA0p7.js";import{n as _,t as v}from"./markdownService.D-tM2RYx.js";import{t as y}from"./rendererEventBus.CyFnSRLk.js";import{t as b}from"./RendererPCardRegistry.CLr4j1Ub.js";import{t as x}from"./useMCardHydration.Co47OH3D.js";import{t as S}from"./RendererLoader.D-ThYU1B.js";import{n as C,t as w}from"./mediaEmbeds.CWeXA8QP.js";import"./vendor-katex.OWop7R8Y.js";import{n as T,r as E,t as D}from"./tikzCompiler.DFojjdxR.js";import{t as O}from"./mermaidParams.CoRBi7AN.js";var k=e(t(),1);function A(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}function j(e,t){if(!e||!t)return e;let n=t.trim().toLowerCase(),r=e.split(/\r?\n/),i=-1,a=0;for(let e=0;e<r.length;e++){let t=r[e].match(/^(#{1,6})\s+(.*)$/);if(t){let r=t[1].length,o=t[2].trim().toLowerCase();if(o===n||o.includes(n)){i=e+1,a=r;break}}}if(i===-1)return e;let o=[];for(let e=i;e<r.length;e++){let t=r[e],n=t.match(/^(#{1,6})\s+/);if(n&&n[1].length<=a)break;o.push(t)}return o.join(`
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{a as r,i,l as a,n as o,r as s,t as c,u as l}from"./themeStore.CEt0e54l.js";import{C as u,y as d}from"./mcardStore.CT-ollfl.js";import{n as f,t as p}from"./pathsConfig.D0hV34p7.js";import{n as m,t as h}from"./vfsHandles.IX_wTpw_.js";import{v as g}from"./mcardVfs.2UOw9Z-r.js";import{n as _,t as v}from"./markdownService.BgWjyJ57.js";import{t as y}from"./rendererEventBus.DMH9afq9.js";import{t as b}from"./RendererPCardRegistry.CWjYZs2H.js";import{t as x}from"./useMCardHydration.7Z-HfBh5.js";import{t as S}from"./RendererLoader.D-ThYU1B.js";import{n as C,t as w}from"./mediaEmbeds.CWeXA8QP.js";import"./vendor-katex.OWop7R8Y.js";import{n as T,r as E,t as D}from"./tikzCompiler.fe3qomFY.js";import{t as O}from"./mermaidParams.CoRBi7AN.js";var k=e(t(),1);function A(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}function j(e,t){if(!e||!t)return e;let n=t.trim().toLowerCase(),r=e.split(/\r?\n/),i=-1,a=0;for(let e=0;e<r.length;e++){let t=r[e].match(/^(#{1,6})\s+(.*)$/);if(t){let r=t[1].length,o=t[2].trim().toLowerCase();if(o===n||o.includes(n)){i=e+1,a=r;break}}}if(i===-1)return e;let o=[];for(let e=i;e<r.length;e++){let t=r[e],n=t.match(/^(#{1,6})\s+/);if(n&&n[1].length<=a)break;o.push(t)}return o.join(`
2
2
  `).trim()||e}var M={note:{color:`#0078d4`,icon:`ℹ️`,defaultTitle:`Note`},seealso:{color:`#0078d4`,icon:`ℹ️`,defaultTitle:`See Also`},info:{color:`#00bcf2`,icon:`ℹ️`,defaultTitle:`Info`},todo:{color:`#00bcf2`,icon:`📝`,defaultTitle:`To Do`},tip:{color:`#107c41`,icon:`💡`,defaultTitle:`Tip`},hint:{color:`#107c41`,icon:`💡`,defaultTitle:`Hint`},important:{color:`#00bcf2`,icon:`⚡`,defaultTitle:`Important`},success:{color:`#107c41`,icon:`✔️`,defaultTitle:`Success`},check:{color:`#107c41`,icon:`✔️`,defaultTitle:`Check`},done:{color:`#107c41`,icon:`✔️`,defaultTitle:`Done`},question:{color:`#ffb900`,icon:`❓`,defaultTitle:`Question`},help:{color:`#ffb900`,icon:`❓`,defaultTitle:`Help`},faq:{color:`#ffb900`,icon:`❓`,defaultTitle:`FAQ`},warning:{color:`#d83b01`,icon:`⚠️`,defaultTitle:`Warning`},caution:{color:`#d83b01`,icon:`⚠️`,defaultTitle:`Caution`},attention:{color:`#d83b01`,icon:`⚠️`,defaultTitle:`Attention`},failure:{color:`#e81123`,icon:`❌`,defaultTitle:`Failure`},fail:{color:`#e81123`,icon:`❌`,defaultTitle:`Fail`},missing:{color:`#e81123`,icon:`❌`,defaultTitle:`Missing`},danger:{color:`#e81123`,icon:`🚫`,defaultTitle:`Danger`},error:{color:`#e81123`,icon:`🚫`,defaultTitle:`Error`},bug:{color:`#e81123`,icon:`🐞`,defaultTitle:`Bug`},example:{color:`#881798`,icon:`📋`,defaultTitle:`Example`},quote:{color:`#8a8886`,icon:`💬`,defaultTitle:`Quote`},cite:{color:`#8a8886`,icon:`💬`,defaultTitle:`Cite`}};function N(e){if(!e||typeof e!=`string`)return!1;let t=e.trim();return!t||!/<svg[\s>]/i.test(t)?!1:/<\/svg>/i.test(t)||/<svg\b[^>]*\/>/i.test(t)}function P(e){if(!e)return``;let t=e.match(/<svg\b[^>]*\/>/i);if(t)return t[0].trim();let n=e.match(/<svg\b[\s\S]*?<\/svg>/i);return n?n[0].trim():e.trim()}var ee=0,F=new Map;function I(){return l({theme:r.get(),density:o.get(),responsive:i.get(),context:c.get(),environment:s.get()},a)}function L(e,t,n){e.innerHTML=t,e.setAttribute(`data-mermaid-status`,`rendered`);let r=e.querySelector(`svg`);r&&(r.style.maxWidth=`100%`,r.style.height=`auto`,r.style.display=`block`,r.style.margin=`0 auto`,r.querySelectorAll(`.node`).forEach(t=>{let r=t.id||t.getAttribute(`data-id`)||`unknown`,i=t.textContent?.trim()||``;t.style.cursor=`pointer`,t.addEventListener(`click`,t=>{t.stopPropagation(),n?.onNodeClick?.(r,i),y({modality:`mermaid`,type:`render:mermaid:node_click`,handle:e.id||`mermaid`,payload:{nodeId:r,label:i}})})}))}function R(e){let t=I(),n=t[`--mcard-theme-id`]||`default`,r=t[`--mcard-density-id`]||`default`;return F.get(`${e.trim()}:${n}:${r}`)}var z=new Map;async function B(e,t){let n=e.getAttribute(`data-mermaid-source`)||e.getAttribute(`data-diagram`);if(!n)return;let r=decodeURIComponent(n).trim();if(!r)return;let i=I(),a=`${r}:${i[`--mcard-theme-id`]||`default`}:${i[`--mcard-density-id`]||`default`}`;if(F.has(a)){L(e,F.get(a),t);return}let o=z.get(a);if(!o){if(e.getAttribute(`data-mermaid-status`)===`rendering`)return;e.setAttribute(`data-mermaid-status`,`rendering`);let t=O(i);o=(async()=>{let e=await S(`mermaid`);e.initialize(t);let n=`mcard-mermaid-svg-${Date.now().toString(36)}-${++ee}`;return await e.render(n,r)})(),z.set(a,o)}try{let{svg:n,bindFunctions:i}=await o;F.set(a,n);let s=e;!s.isConnected&&typeof document<`u`&&(s=(e.id?document.getElementById(e.id):null)||document.querySelector(`.mcard-mermaid-container[data-diagram="${encodeURIComponent(r)}"]`)||e),L(s,n,t),typeof i==`function`&&i(s)}catch(t){let n=e;!n.isConnected&&typeof document<`u`&&(n=(e.id?document.getElementById(e.id):null)||document.querySelector(`.mcard-mermaid-container[data-diagram="${encodeURIComponent(r)}"]`)||e),n.setAttribute(`data-mermaid-status`,`error`),n.innerHTML=`
3
3
  <div class="mermaid-error" style="color: var(--mcard-status-error, #f48771); padding: 8px; font-family: monospace; font-size: 11px; background: rgba(244,135,113,0.08); border: 1px solid rgba(244,135,113,0.3); border-radius: 4px;">
4
4
  <strong>Mermaid Syntax Error:</strong>
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{a as r,i,l as a,n as o,r as s,t as c,u as l}from"./themeStore.zUMFLo3Q.js";import{t as u}from"./rendererEventBus.CyFnSRLk.js";import{t as d}from"./useMCardHydration.Co47OH3D.js";import{t as f}from"./RendererLoader.D-ThYU1B.js";import{t as p}from"./mermaidParams.CoRBi7AN.js";var m=e(t(),1),h=n(),g=0,_=({mcard:e})=>{let{content:t,isLoading:n}=d(e),_=t||(typeof e?.content==`string`?e.content:``),[v,y]=(0,m.useState)(``),[b,x]=(0,m.useState)(null),[S,C]=(0,m.useState)(!1),[w,T]=(0,m.useState)(!1),[E,D]=(0,m.useState)(1),[O,k]=(0,m.useState)({x:0,y:0}),[A,j]=(0,m.useState)(0),M=(0,m.useRef)(null),N=(0,m.useRef)({x:0,y:0}),P=(0,m.useRef)(!1);return(0,m.useEffect)(()=>{let e=r.subscribe(()=>j(e=>e+1)),t=o.subscribe(()=>j(e=>e+1));return()=>{e(),t()}},[]),(0,m.useEffect)(()=>{let e=!0,t=_.trim();if(!t){y(``),x(null);return}C(!0),x(null);let n=l({theme:r.get(),density:o.get(),responsive:i.get(),context:c.get(),environment:s.get()},a);return f(`mermaid`).then(async r=>{r.initialize(p(n));let i=`mermaid-viewlet-svg-${Date.now().toString(36)}-${++g}`,{svg:a,bindFunctions:o}=await r.render(i,t);e&&(y(a),C(!1),M.current&&typeof o==`function`&&o(M.current))}).catch(t=>{e&&(x(t?.message||String(t)),C(!1))}),()=>{e=!1}},[_,A]),(0,m.useEffect)(()=>{let t=M.current;if(!t||!v)return;let n=t=>{let n=t.target.closest(`.node`);if(n){t.stopPropagation();let r=n.id||n.getAttribute(`data-id`)||`node`,i=n.textContent?.trim()||``;u({type:`render:mermaid:node_click`,targetHandle:e?.handle||`mcard:mermaid`,timestamp:Date.now(),payload:{nodeId:r,label:i}})}};return t.addEventListener(`click`,n),()=>t.removeEventListener(`click`,n)},[v,e?.handle]),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`,width:`100%`,background:`var(--mcard-bg-canvas, #1e1e1e)`,color:`var(--mcard-text-primary, #ccc)`,overflow:`hidden`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 12px`,borderBottom:`1px solid var(--mcard-border-default, #333)`,background:`var(--mcard-bg-elevated, #252526)`,fontSize:`12px`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,h.jsx)(`span`,{style:{fontWeight:600,color:`var(--mcard-accent-primary, #75beff)`},children:`📊 Mermaid Diagram`}),S&&(0,h.jsx)(`span`,{style:{color:`var(--mcard-text-muted, #858585)`,fontSize:`11px`},children:`Rendering...`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,h.jsx)(`button`,{onClick:()=>D(e=>Math.min(e+.2,3)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`+`}),(0,h.jsx)(`button`,{onClick:()=>D(e=>Math.max(e-.2,.4)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`-`}),(0,h.jsx)(`button`,{onClick:()=>{D(1),k({x:0,y:0})},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Fit`}),(0,h.jsx)(`button`,{onClick:()=>{if(!v)return;let t=new Blob([v],{type:`image/svg+xml;charset=utf-8`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e.name||`diagram`}.svg`,r.click(),URL.revokeObjectURL(n)},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Export SVG`}),(0,h.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(_)},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Copy`}),(0,h.jsx)(`button`,{onClick:()=>T(!w),style:{padding:`2px 8px`,background:w?`var(--mcard-accent-primary, #75beff)`:`var(--mcard-bg-surface, #2d2d30)`,color:w?`#000`:`inherit`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,borderRadius:`3px`,cursor:`pointer`},children:w?`Preview`:`Source`})]})]}),w?(0,h.jsx)(`pre`,{style:{margin:0,padding:`16px`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`12px`,background:`var(--mcard-bg-surface, #181818)`},children:_}):b?(0,h.jsxs)(`div`,{style:{padding:`16px`,color:`var(--mcard-status-error, #f48771)`,background:`rgba(244,135,113,0.08)`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`12px`},children:[(0,h.jsx)(`strong`,{children:`Mermaid Render Error:`}),(0,h.jsx)(`pre`,{style:{marginTop:`8px`,whiteSpace:`pre-wrap`},children:b})]}):(0,h.jsx)(`div`,{ref:M,onMouseDown:e=>{P.current=!0,N.current={x:e.clientX-O.x,y:e.clientY-O.y}},onMouseMove:e=>{P.current&&k({x:e.clientX-N.current.x,y:e.clientY-N.current.y})},onMouseUp:()=>{P.current=!1},onMouseLeave:()=>{P.current=!1},style:{flex:1,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`grab`,position:`relative`},children:(0,h.jsx)(`div`,{style:{transform:`translate(${O.x}px, ${O.y}px) scale(${E})`,transformOrigin:`center center`,transition:P.current?`none`:`transform 0.05s ease-out`},dangerouslySetInnerHTML:{__html:v}})})]})};export{_ as MermaidDiagramViewlet,_ as default};
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{a as r,i,l as a,n as o,r as s,t as c,u as l}from"./themeStore.CEt0e54l.js";import{t as u}from"./rendererEventBus.DMH9afq9.js";import{t as d}from"./useMCardHydration.7Z-HfBh5.js";import{t as f}from"./RendererLoader.D-ThYU1B.js";import{t as p}from"./mermaidParams.CoRBi7AN.js";var m=e(t(),1),h=n(),g=0,_=({mcard:e})=>{let{content:t,isLoading:n}=d(e),_=t||(typeof e?.content==`string`?e.content:``),[v,y]=(0,m.useState)(``),[b,x]=(0,m.useState)(null),[S,C]=(0,m.useState)(!1),[w,T]=(0,m.useState)(!1),[E,D]=(0,m.useState)(1),[O,k]=(0,m.useState)({x:0,y:0}),[A,j]=(0,m.useState)(0),M=(0,m.useRef)(null),N=(0,m.useRef)({x:0,y:0}),P=(0,m.useRef)(!1);return(0,m.useEffect)(()=>{let e=r.subscribe(()=>j(e=>e+1)),t=o.subscribe(()=>j(e=>e+1));return()=>{e(),t()}},[]),(0,m.useEffect)(()=>{let e=!0,t=_.trim();if(!t){y(``),x(null);return}C(!0),x(null);let n=l({theme:r.get(),density:o.get(),responsive:i.get(),context:c.get(),environment:s.get()},a);return f(`mermaid`).then(async r=>{r.initialize(p(n));let i=`mermaid-viewlet-svg-${Date.now().toString(36)}-${++g}`,{svg:a,bindFunctions:o}=await r.render(i,t);e&&(y(a),C(!1),M.current&&typeof o==`function`&&o(M.current))}).catch(t=>{e&&(x(t?.message||String(t)),C(!1))}),()=>{e=!1}},[_,A]),(0,m.useEffect)(()=>{let t=M.current;if(!t||!v)return;let n=t=>{let n=t.target.closest(`.node`);if(n){t.stopPropagation();let r=n.id||n.getAttribute(`data-id`)||`node`,i=n.textContent?.trim()||``;u({type:`render:mermaid:node_click`,targetHandle:e?.handle||`mcard:mermaid`,timestamp:Date.now(),payload:{nodeId:r,label:i}})}};return t.addEventListener(`click`,n),()=>t.removeEventListener(`click`,n)},[v,e?.handle]),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`,width:`100%`,background:`var(--mcard-bg-canvas, #1e1e1e)`,color:`var(--mcard-text-primary, #ccc)`,overflow:`hidden`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`6px 12px`,borderBottom:`1px solid var(--mcard-border-default, #333)`,background:`var(--mcard-bg-elevated, #252526)`,fontSize:`12px`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,h.jsx)(`span`,{style:{fontWeight:600,color:`var(--mcard-accent-primary, #75beff)`},children:`📊 Mermaid Diagram`}),S&&(0,h.jsx)(`span`,{style:{color:`var(--mcard-text-muted, #858585)`,fontSize:`11px`},children:`Rendering...`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,h.jsx)(`button`,{onClick:()=>D(e=>Math.min(e+.2,3)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`+`}),(0,h.jsx)(`button`,{onClick:()=>D(e=>Math.max(e-.2,.4)),style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`-`}),(0,h.jsx)(`button`,{onClick:()=>{D(1),k({x:0,y:0})},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Fit`}),(0,h.jsx)(`button`,{onClick:()=>{if(!v)return;let t=new Blob([v],{type:`image/svg+xml;charset=utf-8`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e.name||`diagram`}.svg`,r.click(),URL.revokeObjectURL(n)},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Export SVG`}),(0,h.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(_)},style:{padding:`2px 8px`,background:`var(--mcard-bg-surface, #2d2d30)`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,color:`inherit`,borderRadius:`3px`,cursor:`pointer`},children:`Copy`}),(0,h.jsx)(`button`,{onClick:()=>T(!w),style:{padding:`2px 8px`,background:w?`var(--mcard-accent-primary, #75beff)`:`var(--mcard-bg-surface, #2d2d30)`,color:w?`#000`:`inherit`,border:`1px solid var(--mcard-border-default, #3c3c3c)`,borderRadius:`3px`,cursor:`pointer`},children:w?`Preview`:`Source`})]})]}),w?(0,h.jsx)(`pre`,{style:{margin:0,padding:`16px`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`12px`,background:`var(--mcard-bg-surface, #181818)`},children:_}):b?(0,h.jsxs)(`div`,{style:{padding:`16px`,color:`var(--mcard-status-error, #f48771)`,background:`rgba(244,135,113,0.08)`,flex:1,overflow:`auto`,fontFamily:`monospace`,fontSize:`12px`},children:[(0,h.jsx)(`strong`,{children:`Mermaid Render Error:`}),(0,h.jsx)(`pre`,{style:{marginTop:`8px`,whiteSpace:`pre-wrap`},children:b})]}):(0,h.jsx)(`div`,{ref:M,onMouseDown:e=>{P.current=!0,N.current={x:e.clientX-O.x,y:e.clientY-O.y}},onMouseMove:e=>{P.current&&k({x:e.clientX-N.current.x,y:e.clientY-N.current.y})},onMouseUp:()=>{P.current=!1},onMouseLeave:()=>{P.current=!1},style:{flex:1,overflow:`hidden`,display:`flex`,alignItems:`center`,justifyContent:`center`,cursor:`grab`,position:`relative`},children:(0,h.jsx)(`div`,{style:{transform:`translate(${O.x}px, ${O.y}px) scale(${E})`,transformOrigin:`center center`,transition:P.current?`none`:`transform 0.05s ease-out`},dangerouslySetInnerHTML:{__html:v}})})]})};export{_ as MermaidDiagramViewlet,_ as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{I as r}from"./vendor-clm-kernel.Bvk3XHk2.js";import{a as i,g as a,i as o,l as s,n as c,r as l,t as u,u as d}from"./themeStore.CEt0e54l.js";import{n as f,r as p,t as m}from"./disposable.Dsb0sbRP.js";import{t as h}from"./rendererEventBus.DMH9afq9.js";import{n as g}from"./RendererPCardRegistry.CWjYZs2H.js";var _=e(t(),1),v=a(null);function y(e){v.set(e)}var b=new class{judgeService;constructor(e){this.judgeService=e??new f}evaluatePreCondition(e,t){if(!t||t.content===void 0||t.content===null)return{valid:!1,error:`Empty or missing MCard payload`};try{let n=this.judgeService.judge({handle:t.handle||e.handle,content:typeof t.content==`string`?t.content:JSON.stringify(t.content),mimeHint:t.mimeType}),r=e.verifyPre(t);return{valid:r,matchedCategory:n.category,mimeType:n.mimeType,error:r?void 0:`PCard verifyPre assertion failed`}}catch(e){return{valid:!1,error:e?.message||`Pre-condition evaluation error`}}}evaluatePostCondition(e,t,n){let r=t.coeffects.tokens||{},i=Object.keys(r).length,a=n!==null;if(!a)return{valid:!1,tokenCount:i,boundsOk:!1,error:`DOM container unmounted or null`};let o=e.verifyPost(t,n);return{valid:o,tokenCount:i,boundsOk:a,error:o?void 0:`PCard verifyPost assertion failed`}}sealWitness(e,t,n,i,a){let o=i.valid&&a.valid?`verified`:`rejected`,s=Date.now(),c=`${e}|${t}|${n}|${o}|${s}`,l=`blake3:${r.computeString(c).asHex()}`,u=`ed25519:${r.computeString(`${l}|witness`).asHex().slice(0,32)}`,d=`did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK`,f={pcardHandle:e,targetHash:t,positionHash:n,preVerified:i.valid,postVerified:a.valid,signature:u,sponsorDid:d,timestamp:s,status:o};return y({pcardHash:t,vcardHash:l,signature:u,sponsorDid:d,firedBy:e,parentMarkingHash:n}),f}},x=n(),S=({card:e,handle:t=`unknown`})=>{let n=(0,_.useRef)(null),r=(0,_.useRef)(new m),a=p(i),f=p(c),v=p(o),y=p(u),S=p(l),C=(0,_.useMemo)(()=>d({theme:a,density:f,responsive:v,context:y,environment:S},s),[a,f,v,y,S]),w=(0,_.useMemo)(()=>({theme:a,density:f,responsive:v,context:y,environment:S,tokens:C}),[a,f,v,y,S,C]),T=(0,_.useMemo)(()=>g.getPCard(t)||g.resolveForMCard(e||{}),[t,e]),[E,D]=(0,_.useState)(()=>T?T.computeInitialPosition(e,w):null),[O,k]=(0,_.useState)(null);(0,_.useEffect)(()=>{E&&T&&D(e=>e?{...e,coeffects:w,tokens:w.tokens}:null)},[w,T]),(0,_.useEffect)(()=>{if(!T||!E)return;let t=b.evaluatePreCondition(T,e),i=b.evaluatePostCondition(T,E,n.current),a=b.sealWitness(T.handle,e?.hash||`blake3:00000000`,E.positionHash,t,i);return k(a),()=>{r.current.dispose(),T.dispose&&E&&T.dispose(E)}},[T,e]);let A=(0,_.useMemo)(()=>!T||!E?[]:T.computeFiber(E).filter(e=>e.available(E)),[T,E]),j=async t=>{if(E&&T)try{let n=await t.step(E);n.effect&&(Array.isArray(n.effect)?n.effect.forEach(e=>r.current.add(e)):r.current.add(n.effect)),D(e=>e?{...e,state:n.nextState}:null),h({modality:T.modality,type:t.id,payload:{nextState:n.nextState},handle:e?.handle||T.handle})}catch(e){console.error(`[PCardRendererBridge] Error executing affordance ${t.id}:`,e)}};return T?(0,x.jsxs)(`div`,{className:`pcard-renderer-bridge mcard-surface`,style:{padding:`var(--mcard-space-lg)`,display:`flex`,flexDirection:`column`,gap:`var(--mcard-space-md)`},children:[(0,x.jsxs)(`header`,{className:`bridge-header`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,borderBottom:`1px solid var(--mcard-border-default)`,paddingBottom:`var(--mcard-space-sm)`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`var(--mcard-space-sm)`},children:[(0,x.jsx)(`span`,{className:`mcard-badge`,children:T.modality.toUpperCase()}),(0,x.jsx)(`strong`,{style:{color:`var(--mcard-text-primary)`},children:T.displayName}),(0,x.jsxs)(`span`,{style:{fontSize:`var(--mcard-font-size-xs)`,color:`var(--mcard-text-muted)`},children:[`[`,E?.positionHash.slice(0,15),`...]`]})]}),(0,x.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`var(--mcard-space-sm)`},children:O&&(0,x.jsxs)(`span`,{className:`vcard-pill`,style:{fontSize:`var(--mcard-font-size-xs)`,padding:`2px 8px`,borderRadius:`var(--mcard-radius-xs)`,background:O.status===`verified`?`var(--mcard-status-success-bg, #1b3d2f)`:`var(--mcard-status-error-bg, #3d1b1b)`,color:O.status===`verified`?`var(--mcard-status-success, #4ec9b0)`:`var(--mcard-status-error, #f48771)`,border:`1px solid var(--mcard-border-subtle)`},children:[`VCard: `,O.status.toUpperCase()]})})]}),A.length>0&&(0,x.jsx)(`nav`,{className:`bridge-toolbar`,style:{display:`flex`,gap:`var(--mcard-space-xs)`,background:`var(--mcard-bg-elevated)`,padding:`4px 8px`,borderRadius:`var(--mcard-radius-sm)`},children:A.map(e=>(0,x.jsxs)(`button`,{onClick:()=>j(e),className:`mcard-button mcard-button-secondary`,style:{fontSize:`var(--mcard-font-size-xs)`,padding:`2px 8px`,cursor:`pointer`},title:e.shortcut?`${e.label} (${e.shortcut})`:e.label,children:[e.icon&&(0,x.jsx)(`span`,{style:{marginRight:`4px`},children:e.icon}),e.label]},e.id))}),(0,x.jsx)(`div`,{ref:n,className:`bridge-surface-viewport`,style:{minHeight:`280px`,background:`var(--mcard-canvas-clear, var(--mcard-bg-canvas))`,border:`1px solid var(--mcard-border-default)`,borderRadius:`var(--mcard-radius-md)`,padding:`var(--mcard-space-md)`,overflow:`auto`},children:(0,x.jsx)(`pre`,{style:{margin:0,fontFamily:`var(--mcard-font-mono)`,fontSize:`var(--mcard-font-size-sm)`,color:`var(--mcard-text-primary)`},children:typeof e?.content==`string`?e.content:JSON.stringify(e?.content||E?.state,null,2)})})]}):(0,x.jsxs)(`div`,{className:`pcard-bridge-empty mcard-surface`,style:{padding:`var(--mcard-space-xl)`},children:[(0,x.jsxs)(`h3`,{children:[`Unrecognized Renderer PCard: `,(0,x.jsx)(`code`,{children:t})]}),(0,x.jsx)(`p`,{children:`No registered modality matches this PCard handle or MCard schema.`})]})};export{S as PCardRendererBridge};
@@ -0,0 +1 @@
1
+ import{I as e}from"./vendor-clm-kernel.Bvk3XHk2.js";function t(e){let t=e.trim();return t.startsWith(`pcard:render:`)?`pcard:render/${t.slice(13)}`:t}function n(t,n,r,i){let a=`${t}|${n}|${Object.keys(r).sort().map(e=>`${e}:${r[e]}`).join(`;`)}|${JSON.stringify(i??{})}`;return`blake3:${e.computeString(a).asHex()}`}var r=new class{pcards=new Map;modalityMap=new Map;constructor(){this.registerDefaults()}register(e){let n=t(e.handle);this.pcards.set(n,e),this.modalityMap.set(e.modality,e)}getPCard(e){let n=t(e);if(this.pcards.has(n))return this.pcards.get(n);if(this.modalityMap.has(e))return this.modalityMap.get(e)}resolveForMCard(e){if(!e)return;let t=(e.path||e.handle||``).toLowerCase(),n=(e.mimeType||``).toLowerCase();for(let e of this.modalityMap.values())if(e.supportedExtensions.some(e=>t.endsWith(e.toLowerCase()))||e.supportedMimes.some(e=>n===e.toLowerCase()||n.startsWith(e.toLowerCase())))return e}getAll(){return Array.from(this.pcards.values())}registerDefaults(){let t=[`mermaid`,`katex`,`d3`,`chartjs`,`excalidraw`,`three`,`tikz`,`table`],r={mermaid:{displayName:`Mermaid Diagram PCard`,description:`Reactive SVG flowcharts, sequence diagrams, and class graphs`,mimes:[`text/vnd.mermaid`,`text/x-mermaid`],exts:[`.mermaid`,`.mmd`]},katex:{displayName:`KaTeX Math PCard`,description:`Zero-bundle mathematical typography and equation proofs`,mimes:[`text/x-tex`,`application/x-latex`,`text/x-math`],exts:[`.math`,`.latex`,`.tex`]},d3:{displayName:`D3.js Graph PCard`,description:`Interactive topological force networks and hierarchical trees`,mimes:[`application/vnd.d3+json`,`application/x-graph`],exts:[`.d3.json`,`.graph.json`,`.adjlist`]},chartjs:{displayName:`Chart.js Analytics PCard`,description:`Multi-series timeseries, bar, radar, and statistical distributions`,mimes:[`application/vnd.chartjs+json`,`application/x-timeseries`],exts:[`.chart.json`,`.timeseries.json`]},excalidraw:{displayName:`Excalidraw Whiteboard PCard`,description:`Spatial hand-drawn conceptual sketching and architecture canvas`,mimes:[`application/vnd.excalidraw+json`,`application/x-excalidraw`],exts:[`.excalidraw`,`.excalidraw.json`]},three:{displayName:`Three.js 3D Viewport PCard`,description:`WebGL spatial geometry, meshes, and lighting environments`,mimes:[`model/gltf-binary`,`model/gltf+json`,`model/obj`,`model/stl`],exts:[`.glb`,`.gltf`,`.obj`,`.stl`,`.3ds`]},tikz:{displayName:`TikZ Categorical Vector PCard`,description:`High-fidelity commutative diagrams and LaTeX vector diagrams`,mimes:[`text/x-tikz`,`text/x-tikzcd`],exts:[`.tikz`,`.tikzcd`,`.tikz-cd`]},table:{displayName:`GFM Data Table PCard`,description:`Tabular record grids, sorting, filtering, and CSV evaluation`,mimes:[`text/csv`,`text/tab-separated-values`],exts:[`.csv`,`.tsv`]}};for(let i of t){let t=r[i];this.register({modality:i,handle:`pcard:render/${i}`,displayName:t.displayName,description:t.description,supportedMimes:t.mimes,supportedExtensions:t.exts,coeffects:[`theme`,`density`,`responsive`,`context`,`environment`,`tokens`],computeInitialPosition:(t,r)=>{let a=t?.handle||`anonymous:${i}`,o=t?.hash||e.computeString(String(t?.content||``)).asHex(),s={zoom:1,panX:0,panY:0};return{handle:a,hash:o,universe:t?.universe||`U1`,category:t?.category||`data`,...t?.semanticStratum?{semanticStratum:t.semanticStratum}:{},isHead:!0,isHistorical:!1,isImmutable:!1,hasChildren:!1,activeViewport:`fit`,positionHash:n(o,i,r.tokens,s),modality:i,coeffects:r,state:s}},computeFiber:e=>[{id:`pcard:render:${i}:affordance:zoom_fit`,label:`Fit View`,icon:`⊡`,priority:90,available:()=>!0,step:async e=>({nextState:{...e.state,zoom:1,panX:0,panY:0}})},{id:`pcard:render:${i}:affordance:copy_source`,label:`Copy Source`,icon:`⎘`,priority:50,available:()=>!0,step:async e=>({nextState:e.state})}],verifyPre:e=>e!=null,verifyPost:(e,t)=>t!==null})}}};export{r as n,t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{t as r}from"./useMCardHydration.Co47OH3D.js";import{t as i}from"./js-yaml.D3snemtB.js";var a=e(t(),1),o=n(),s=({mcard:e})=>{let{content:t,isLoading:n}=r(e),[s,c]=(0,a.useState)(`cards`),[l,u]=(0,a.useState)(!1),d=(0,a.useMemo)(()=>{try{return i.load(t)}catch{return null}},[t]);if(n)return(0,o.jsx)(`div`,{className:`card-panel-schema-viewer`,style:{padding:`24px`,color:`#9cdcfe`},children:`Loading schema structure...`});if(!d||typeof d!=`object`)return(0,o.jsx)(`div`,{className:`card-panel-schema-viewer`,style:{padding:`24px`,color:`#f48771`},children:`Unable to parse YAML schema structure.`});let f=!!(d.properties&&typeof d.properties==`object`&&Object.keys(d.properties).length>0),p=d.title||d.manifest_id||d.asset_handle||e.name,m=d.description||(d.target_layer?`Target Layer: ${d.target_layer}`:``),h=Array.isArray(d.required)?d.required:[],g=f?d.properties:Array.isArray(d)?Object.fromEntries(d.map((e,t)=>[`item_${t}`,e])):d,_=Object.entries(g),v=()=>{navigator.clipboard.writeText(t),u(!0),setTimeout(()=>u(!1),2e3)},y=e=>e==null?(0,o.jsx)(`span`,{style:{color:`#808080`,fontStyle:`italic`},children:`null`}):typeof e==`boolean`?(0,o.jsx)(`span`,{style:{color:e?`#4ec9b0`:`#f48771`,fontWeight:600},children:String(e)}):typeof e==`number`?(0,o.jsx)(`span`,{style:{color:`#b5cea8`,fontFamily:`monospace`},children:e}):typeof e==`string`?(0,o.jsx)(`span`,{style:{color:`#ce9178`,fontFamily:`monospace`,wordBreak:`break-all`,fontSize:`12px`},children:e}):Array.isArray(e)?e.length===0?(0,o.jsx)(`span`,{style:{color:`#808080`,fontStyle:`italic`},children:`empty list []`}):typeof e[0]!=`object`||e[0]===null?(0,o.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`4px`,marginTop:`4px`},children:e.map((e,t)=>(0,o.jsx)(`span`,{style:{fontSize:`11px`,padding:`2px 6px`,backgroundColor:`rgba(255, 255, 255, 0.07)`,borderRadius:`3px`,color:`#9cdcfe`,fontFamily:`monospace`},children:String(e)},t))}):(0,o.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`,marginTop:`6px`},children:e.map((e,t)=>(0,o.jsxs)(`div`,{style:{padding:`8px 10px`,backgroundColor:`rgba(0, 0, 0, 0.25)`,border:`1px solid rgba(255, 255, 255, 0.08)`,borderRadius:`3px`,fontSize:`11px`},children:[(0,o.jsxs)(`div`,{style:{fontWeight:600,color:`#4fc1ff`,marginBottom:`4px`},children:[`#`,t+1,` `,e.stage?`[${e.stage}]`:``]}),(0,o.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`auto 1fr`,gap:`4px 8px`},children:Object.entries(e).map(([e,t])=>(0,o.jsxs)(a.Fragment,{children:[(0,o.jsxs)(`span`,{style:{color:`#808080`,fontFamily:`monospace`},children:[e,`:`]}),(0,o.jsx)(`span`,{style:{color:`#d4d4d4`,fontFamily:`monospace`},children:String(t)})]},e))})]},t))}):typeof e==`object`?(0,o.jsx)(`div`,{style:{marginTop:`6px`,padding:`8px 10px`,backgroundColor:`rgba(0, 0, 0, 0.25)`,border:`1px solid rgba(255, 255, 255, 0.08)`,borderRadius:`3px`,fontSize:`11px`,display:`grid`,gridTemplateColumns:`auto 1fr`,gap:`4px 8px`},children:Object.entries(e).map(([e,t])=>(0,o.jsxs)(a.Fragment,{children:[(0,o.jsxs)(`span`,{style:{color:`#808080`,fontFamily:`monospace`},children:[e,`:`]}),(0,o.jsx)(`span`,{style:{color:`#d4d4d4`,fontFamily:`monospace`},children:typeof t==`object`&&t?JSON.stringify(t):String(t)})]},e))}):String(e);return(0,o.jsxs)(`div`,{className:`card-panel-schema-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`var(--vscode-editor-background, #1e1e1e)`,color:`var(--vscode-foreground, #cccccc)`,overflowY:`auto`,padding:`24px 32px`},children:[(0,o.jsxs)(`div`,{style:{borderBottom:`1px solid var(--vscode-editorGroup-border, #333)`,paddingBottom:`16px`,marginBottom:`20px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,o.jsxs)(`div`,{children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`,marginBottom:`6px`},children:[(0,o.jsx)(`span`,{style:{fontSize:`18px`},children:`📜`}),(0,o.jsx)(`span`,{style:{fontSize:`16px`,fontWeight:600,color:`#ffffff`},children:p}),(0,o.jsx)(`span`,{style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`rgba(14, 99, 156, 0.4)`,color:`#75beff`,borderRadius:`2px`},children:f?`SCHEMA`:`MANIFEST`})]}),m&&(0,o.jsx)(`div`,{style:{fontSize:`12px`,opacity:.8,lineHeight:`1.4`},children:m})]}),(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,o.jsx)(`button`,{onClick:()=>c(s===`cards`?`raw`:`cards`),style:{padding:`4px 10px`,fontSize:`11px`,backgroundColor:s===`raw`?`#0e639c`:`rgba(255, 255, 255, 0.08)`,color:`#ffffff`,border:`1px solid var(--vscode-editorGroup-border, #444)`,borderRadius:`3px`,cursor:`pointer`},children:s===`cards`?`View Raw YAML`:`View Cards`}),(0,o.jsx)(`button`,{onClick:v,style:{padding:`4px 10px`,fontSize:`11px`,backgroundColor:`rgba(255, 255, 255, 0.08)`,color:l?`#4ec9b0`:`#ffffff`,border:`1px solid var(--vscode-editorGroup-border, #444)`,borderRadius:`3px`,cursor:`pointer`},children:l?`✓ Copied`:`Copy`})]})]}),s===`raw`?(0,o.jsx)(`pre`,{style:{margin:0,padding:`16px`,backgroundColor:`rgba(0, 0, 0, 0.3)`,borderRadius:`4px`,border:`1px solid var(--vscode-editorGroup-border, #333)`,fontFamily:`monospace`,fontSize:`12px`,lineHeight:`1.5`,color:`#d4d4d4`,overflowX:`auto`},children:t}):(0,o.jsxs)(o.Fragment,{children:[h.length>0&&(0,o.jsxs)(`div`,{style:{marginBottom:`24px`},children:[(0,o.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,color:`#e37933`,marginBottom:`8px`},children:`REQUIRED PROPERTIES:`}),(0,o.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`6px`},children:h.map(e=>(0,o.jsxs)(`span`,{style:{fontSize:`11px`,padding:`3px 8px`,backgroundColor:`rgba(227, 121, 51, 0.15)`,color:`#e37933`,border:`1px solid rgba(227, 121, 51, 0.4)`,borderRadius:`3px`,fontFamily:`monospace`},children:[`*`,e]},e))})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsxs)(`div`,{style:{fontSize:`11px`,fontWeight:600,opacity:.6,marginBottom:`12px`},children:[`PROPERTIES EXPLORER (`,_.length,`):`]}),(0,o.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`},children:_.map(([e,t])=>{let n=h.includes(e),r=`any`;return r=f&&t&&typeof t==`object`&&t.type?t.type:Array.isArray(t)?`array [${t.length}]`:t===null?`null`:typeof t==`object`?`object {${Object.keys(t).length}}`:typeof t,(0,o.jsxs)(`div`,{style:{padding:`12px 16px`,backgroundColor:`rgba(255, 255, 255, 0.03)`,border:`1px solid var(--vscode-editorGroup-border, #333)`,borderRadius:`4px`},children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:`4px`},children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,o.jsx)(`span`,{style:{fontWeight:600,color:n?`#e37933`:`#75beff`,fontFamily:`monospace`},children:e}),n&&(0,o.jsx)(`span`,{style:{fontSize:`10px`,color:`#e37933`},children:`(required)`})]}),(0,o.jsx)(`span`,{style:{fontSize:`10px`,padding:`2px 6px`,backgroundColor:`#2d2d2d`,color:`#4ec9b0`,borderRadius:`2px`,fontFamily:`monospace`},children:r})]}),f&&t?.description&&(0,o.jsx)(`div`,{style:{fontSize:`12px`,opacity:.8,marginTop:`4px`},children:t.description}),!f&&(0,o.jsx)(`div`,{style:{marginTop:`6px`},children:y(t)})]},e)})})]})]})]})};export{s as SchemaYamlViewlet};
1
+ import{i as e}from"./rolldown-runtime.Dd_uD5pT.js";import{a as t,i as n}from"./vendor-react.DpDU3q_x.js";import{t as r}from"./useMCardHydration.7Z-HfBh5.js";import{t as i}from"./js-yaml.D3snemtB.js";var a=e(t(),1),o=n(),s=({mcard:e})=>{let{content:t,isLoading:n}=r(e),[s,c]=(0,a.useState)(`cards`),[l,u]=(0,a.useState)(!1),d=(0,a.useMemo)(()=>{try{return i.load(t)}catch{return null}},[t]);if(n)return(0,o.jsx)(`div`,{className:`card-panel-schema-viewer`,style:{padding:`24px`,color:`#9cdcfe`},children:`Loading schema structure...`});if(!d||typeof d!=`object`)return(0,o.jsx)(`div`,{className:`card-panel-schema-viewer`,style:{padding:`24px`,color:`#f48771`},children:`Unable to parse YAML schema structure.`});let f=!!(d.properties&&typeof d.properties==`object`&&Object.keys(d.properties).length>0),p=d.title||d.manifest_id||d.asset_handle||e.name,m=d.description||(d.target_layer?`Target Layer: ${d.target_layer}`:``),h=Array.isArray(d.required)?d.required:[],g=f?d.properties:Array.isArray(d)?Object.fromEntries(d.map((e,t)=>[`item_${t}`,e])):d,_=Object.entries(g),v=()=>{navigator.clipboard.writeText(t),u(!0),setTimeout(()=>u(!1),2e3)},y=e=>e==null?(0,o.jsx)(`span`,{style:{color:`#808080`,fontStyle:`italic`},children:`null`}):typeof e==`boolean`?(0,o.jsx)(`span`,{style:{color:e?`#4ec9b0`:`#f48771`,fontWeight:600},children:String(e)}):typeof e==`number`?(0,o.jsx)(`span`,{style:{color:`#b5cea8`,fontFamily:`monospace`},children:e}):typeof e==`string`?(0,o.jsx)(`span`,{style:{color:`#ce9178`,fontFamily:`monospace`,wordBreak:`break-all`,fontSize:`12px`},children:e}):Array.isArray(e)?e.length===0?(0,o.jsx)(`span`,{style:{color:`#808080`,fontStyle:`italic`},children:`empty list []`}):typeof e[0]!=`object`||e[0]===null?(0,o.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`4px`,marginTop:`4px`},children:e.map((e,t)=>(0,o.jsx)(`span`,{style:{fontSize:`11px`,padding:`2px 6px`,backgroundColor:`rgba(255, 255, 255, 0.07)`,borderRadius:`3px`,color:`#9cdcfe`,fontFamily:`monospace`},children:String(e)},t))}):(0,o.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`,marginTop:`6px`},children:e.map((e,t)=>(0,o.jsxs)(`div`,{style:{padding:`8px 10px`,backgroundColor:`rgba(0, 0, 0, 0.25)`,border:`1px solid rgba(255, 255, 255, 0.08)`,borderRadius:`3px`,fontSize:`11px`},children:[(0,o.jsxs)(`div`,{style:{fontWeight:600,color:`#4fc1ff`,marginBottom:`4px`},children:[`#`,t+1,` `,e.stage?`[${e.stage}]`:``]}),(0,o.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`auto 1fr`,gap:`4px 8px`},children:Object.entries(e).map(([e,t])=>(0,o.jsxs)(a.Fragment,{children:[(0,o.jsxs)(`span`,{style:{color:`#808080`,fontFamily:`monospace`},children:[e,`:`]}),(0,o.jsx)(`span`,{style:{color:`#d4d4d4`,fontFamily:`monospace`},children:String(t)})]},e))})]},t))}):typeof e==`object`?(0,o.jsx)(`div`,{style:{marginTop:`6px`,padding:`8px 10px`,backgroundColor:`rgba(0, 0, 0, 0.25)`,border:`1px solid rgba(255, 255, 255, 0.08)`,borderRadius:`3px`,fontSize:`11px`,display:`grid`,gridTemplateColumns:`auto 1fr`,gap:`4px 8px`},children:Object.entries(e).map(([e,t])=>(0,o.jsxs)(a.Fragment,{children:[(0,o.jsxs)(`span`,{style:{color:`#808080`,fontFamily:`monospace`},children:[e,`:`]}),(0,o.jsx)(`span`,{style:{color:`#d4d4d4`,fontFamily:`monospace`},children:typeof t==`object`&&t?JSON.stringify(t):String(t)})]},e))}):String(e);return(0,o.jsxs)(`div`,{className:`card-panel-schema-viewer`,style:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`,backgroundColor:`var(--vscode-editor-background, #1e1e1e)`,color:`var(--vscode-foreground, #cccccc)`,overflowY:`auto`,padding:`24px 32px`},children:[(0,o.jsxs)(`div`,{style:{borderBottom:`1px solid var(--vscode-editorGroup-border, #333)`,paddingBottom:`16px`,marginBottom:`20px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,o.jsxs)(`div`,{children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`,marginBottom:`6px`},children:[(0,o.jsx)(`span`,{style:{fontSize:`18px`},children:`📜`}),(0,o.jsx)(`span`,{style:{fontSize:`16px`,fontWeight:600,color:`#ffffff`},children:p}),(0,o.jsx)(`span`,{style:{fontSize:`10px`,padding:`2px 8px`,backgroundColor:`rgba(14, 99, 156, 0.4)`,color:`#75beff`,borderRadius:`2px`},children:f?`SCHEMA`:`MANIFEST`})]}),m&&(0,o.jsx)(`div`,{style:{fontSize:`12px`,opacity:.8,lineHeight:`1.4`},children:m})]}),(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,o.jsx)(`button`,{onClick:()=>c(s===`cards`?`raw`:`cards`),style:{padding:`4px 10px`,fontSize:`11px`,backgroundColor:s===`raw`?`#0e639c`:`rgba(255, 255, 255, 0.08)`,color:`#ffffff`,border:`1px solid var(--vscode-editorGroup-border, #444)`,borderRadius:`3px`,cursor:`pointer`},children:s===`cards`?`View Raw YAML`:`View Cards`}),(0,o.jsx)(`button`,{onClick:v,style:{padding:`4px 10px`,fontSize:`11px`,backgroundColor:`rgba(255, 255, 255, 0.08)`,color:l?`#4ec9b0`:`#ffffff`,border:`1px solid var(--vscode-editorGroup-border, #444)`,borderRadius:`3px`,cursor:`pointer`},children:l?`✓ Copied`:`Copy`})]})]}),s===`raw`?(0,o.jsx)(`pre`,{style:{margin:0,padding:`16px`,backgroundColor:`rgba(0, 0, 0, 0.3)`,borderRadius:`4px`,border:`1px solid var(--vscode-editorGroup-border, #333)`,fontFamily:`monospace`,fontSize:`12px`,lineHeight:`1.5`,color:`#d4d4d4`,overflowX:`auto`},children:t}):(0,o.jsxs)(o.Fragment,{children:[h.length>0&&(0,o.jsxs)(`div`,{style:{marginBottom:`24px`},children:[(0,o.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,color:`#e37933`,marginBottom:`8px`},children:`REQUIRED PROPERTIES:`}),(0,o.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`6px`},children:h.map(e=>(0,o.jsxs)(`span`,{style:{fontSize:`11px`,padding:`3px 8px`,backgroundColor:`rgba(227, 121, 51, 0.15)`,color:`#e37933`,border:`1px solid rgba(227, 121, 51, 0.4)`,borderRadius:`3px`,fontFamily:`monospace`},children:[`*`,e]},e))})]}),(0,o.jsxs)(`div`,{children:[(0,o.jsxs)(`div`,{style:{fontSize:`11px`,fontWeight:600,opacity:.6,marginBottom:`12px`},children:[`PROPERTIES EXPLORER (`,_.length,`):`]}),(0,o.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`},children:_.map(([e,t])=>{let n=h.includes(e),r=`any`;return r=f&&t&&typeof t==`object`&&t.type?t.type:Array.isArray(t)?`array [${t.length}]`:t===null?`null`:typeof t==`object`?`object {${Object.keys(t).length}}`:typeof t,(0,o.jsxs)(`div`,{style:{padding:`12px 16px`,backgroundColor:`rgba(255, 255, 255, 0.03)`,border:`1px solid var(--vscode-editorGroup-border, #333)`,borderRadius:`4px`},children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:`4px`},children:[(0,o.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,o.jsx)(`span`,{style:{fontWeight:600,color:n?`#e37933`:`#75beff`,fontFamily:`monospace`},children:e}),n&&(0,o.jsx)(`span`,{style:{fontSize:`10px`,color:`#e37933`},children:`(required)`})]}),(0,o.jsx)(`span`,{style:{fontSize:`10px`,padding:`2px 6px`,backgroundColor:`#2d2d2d`,color:`#4ec9b0`,borderRadius:`2px`,fontFamily:`monospace`},children:r})]}),f&&t?.description&&(0,o.jsx)(`div`,{style:{fontSize:`12px`,opacity:.8,marginTop:`4px`},children:t.description}),!f&&(0,o.jsx)(`div`,{style:{marginTop:`6px`},children:y(t)})]},e)})})]})]})]})};export{s as SchemaYamlViewlet};
@@ -1 +1 @@
1
- import{i as e,o as t,r as n,t as r}from"./themeStore.zUMFLo3Q.js";function i(){if(typeof window>`u`)return!1;let e=window;return!!e.__TAURI__||!!e.__TAURI_INTERNALS__}function a(){return i()?`tauri-desktop`:`browser-web`}function o(){return typeof window>`u`?`workbench`:window.self===window.top?window.matchMedia&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`accessible-motion`:window.matchMedia&&window.matchMedia(`(pointer: coarse)`).matches?`coarse-pointer`:`workbench`:`embedded`}function s(e){return e>=1440?`desktop-wide`:e>=1024?`laptop`:e>=768?`tablet-narrow`:`mobile-compact`}function c(i){if(typeof window>`u`)return{disconnect:()=>{}};let c=a();n.set(c);let l=o();r.set(l);let u=n=>{let r=s(n);e.get()!==r&&(e.set(r),t())};u(window.innerWidth);let d=null,f=i??document.documentElement;typeof ResizeObserver<`u`&&f&&(d=new ResizeObserver(e=>{for(let t of e)u(t.contentRect.width)}),d.observe(f));let p=()=>u(window.innerWidth);return window.addEventListener(`resize`,p),{disconnect:()=>{d?.disconnect(),window.removeEventListener(`resize`,p)}}}typeof window<`u`&&c();
1
+ import{i as e,o as t,r as n,t as r}from"./themeStore.CEt0e54l.js";function i(){if(typeof window>`u`)return!1;let e=window;return!!e.__TAURI__||!!e.__TAURI_INTERNALS__}function a(){return i()?`tauri-desktop`:`browser-web`}function o(){return typeof window>`u`?`workbench`:window.self===window.top?window.matchMedia&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`accessible-motion`:window.matchMedia&&window.matchMedia(`(pointer: coarse)`).matches?`coarse-pointer`:`workbench`:`embedded`}function s(e){return e>=1440?`desktop-wide`:e>=1024?`laptop`:e>=768?`tablet-narrow`:`mobile-compact`}function c(i){if(typeof window>`u`)return{disconnect:()=>{}};let c=a();n.set(c);let l=o();r.set(l);let u=n=>{let r=s(n);e.get()!==r&&(e.set(r),t())};u(window.innerWidth);let d=null,f=i??document.documentElement;typeof ResizeObserver<`u`&&f&&(d=new ResizeObserver(e=>{for(let t of e)u(t.contentRect.width)}),d.observe(f));let p=()=>u(window.innerWidth);return window.addEventListener(`resize`,p),{disconnect:()=>{d?.disconnect(),window.removeEventListener(`resize`,p)}}}typeof window<`u`&&c();