@wrongstack/webui 1.0.7 → 1.0.9

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 (76) hide show
  1. package/dist/assets/AgentRosterView-CtUX-VHJ.js +12 -0
  2. package/dist/assets/{AnalyticsDashboard-tA_UUQWD.js → AnalyticsDashboard-fPe6DYsh.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-DNopUX7m.js → AudienceMemoryPanel-i53Y5nRR.js} +1 -1
  4. package/dist/assets/{ChangesView-Cij-BSUX.js → ChangesView-CFOQZBoO.js} +1 -1
  5. package/dist/assets/{ChimeraReviewsView-1TlYFUrk.js → ChimeraReviewsView-BQe81cSZ.js} +1 -1
  6. package/dist/assets/{ChronicleDashboard-mZgdM2It.js → ChronicleDashboard-Dc2rEfEh.js} +1 -1
  7. package/dist/assets/{CodeEditor-CXf7lq5W.js → CodeEditor-DhA63AyO.js} +2 -2
  8. package/dist/assets/{CodeMap-CoQQ76zV.js → CodeMap-6sHlGgjj.js} +1 -1
  9. package/dist/assets/{CronJobsPanel-CL4m2QgQ.js → CronJobsPanel-C30TtTM7.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-DxCRT8rV.js → DeadCodeScanPanel-j3n15R1p.js} +1 -1
  11. package/dist/assets/{DebugDashboard-CMbbIq8d.js → DebugDashboard-jJxP9Qek.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-CcX5u8rA.js → DesignGalleryView-tw6AdJGD.js} +1 -1
  13. package/dist/assets/{GoalView-CVjWpHkb.js → GoalView-DsGdbElx.js} +1 -1
  14. package/dist/assets/{KanbanView-DQmHGtH3.js → KanbanView-B8USJasA.js} +1 -1
  15. package/dist/assets/{MailboxDetailView-CfJjqySh.js → MailboxDetailView-jsHPTvQO.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-C72rzAy0.js → MemoryDrawer-BdcWptmP.js} +1 -1
  17. package/dist/assets/{MemoryManager-DOZYeDYO.js → MemoryManager-Cawc6tAj.js} +1 -1
  18. package/dist/assets/{ProcessMonitor-C7h419Eb.js → ProcessMonitor-Bvgcuk_7.js} +1 -1
  19. package/dist/assets/{PromptJournalView-UkyefQGK.js → PromptJournalView-BUgpBI3V.js} +1 -1
  20. package/dist/assets/{ProviderTestView-B74V32hh.js → ProviderTestView-CztiodHF.js} +1 -1
  21. package/dist/assets/{QueuePanel-CW3iERCF.js → QueuePanel-BQQfIbGH.js} +1 -1
  22. package/dist/assets/{RefreshDebugView-CDfO7Uid.js → RefreshDebugView-CCk1X8Hz.js} +1 -1
  23. package/dist/assets/{RepositoryHistoryView-DnJ5jcgB.js → RepositoryHistoryView-BFiEVjF-.js} +1 -1
  24. package/dist/assets/{RequirementIntakeView-CSTVrB4Y.js → RequirementIntakeView-ByVm-u0p.js} +1 -1
  25. package/dist/assets/{SageTabs-DMFqP3JS.js → SageTabs-BnjtZSVk.js} +2 -2
  26. package/dist/assets/{SddFlowGraph-hmWEIf45.js → SddFlowGraph-CZQxxeJv.js} +1 -1
  27. package/dist/assets/SddHub-CimqjJhd.js +2 -0
  28. package/dist/assets/{SessionInspectView-DA0kAM4e.js → SessionInspectView-DnzU3hjG.js} +1 -1
  29. package/dist/assets/{SessionList-17tCMc4D.js → SessionList-DBcHNwcc.js} +1 -1
  30. package/dist/assets/{SessionsDashboard-CvrLsLGL.js → SessionsDashboard-DofL975M.js} +1 -1
  31. package/dist/assets/{SetupScreen-BHcAa0VI.js → SetupScreen-DQAqt8Dn.js} +1 -1
  32. package/dist/assets/{SkillDetailView-BODqDrPU.js → SkillDetailView-BcG2XIwr.js} +2 -2
  33. package/dist/assets/{TechStackView-DjP_PhtH.js → TechStackView-Ce3WNG85.js} +1 -1
  34. package/dist/assets/{TerminalPanel-perOinUJ.js → TerminalPanel-B3SOIzJY.js} +1 -1
  35. package/dist/assets/{activity-DThW4oMo.js → activity-BGw29FDK.js} +1 -1
  36. package/dist/assets/{activity-DZ2z6LSR.js → activity-CbWiifO9.js} +1 -1
  37. package/dist/assets/{activity-oY2h83Fp.js → activity-D8n7MaKo.js} +1 -1
  38. package/dist/assets/{activity-EReqzYpW.js → activity-DYH5K2cA.js} +1 -1
  39. package/dist/assets/{activity-CHP09wRx.js → activity-DdvIZYux.js} +1 -1
  40. package/dist/assets/{activity-DDfoWJrR.js → activity-S9f20P0d.js} +1 -1
  41. package/dist/assets/{activity-BKJV5XjX.js → activity-pDZp_UqI.js} +1 -1
  42. package/dist/assets/{button-CN_h6kNT.js → button-h7DHXgna.js} +1 -1
  43. package/dist/assets/{chat-store-BVz6zQLP.js → chat-store-DpI9nO_z.js} +1 -1
  44. package/dist/assets/{codemap-activity-store-RqE4L9Os.js → codemap-activity-store-5hcdmofR.js} +1 -1
  45. package/dist/assets/config-store-D7yrCV2X.js +22 -0
  46. package/dist/assets/{dialog-DNsBc-EF.js → dialog-CTmNJKRN.js} +1 -1
  47. package/dist/assets/{empty-state-BFPCt03_.js → empty-state-Dl66htl_.js} +1 -1
  48. package/dist/assets/{i18n-BwptPW9U.js → i18n-B_njdXiH.js} +2 -2
  49. package/dist/assets/index-CfREDCPe.js +170 -0
  50. package/dist/assets/{input-BnTFqRjn.js → input-DAvKojvP.js} +1 -1
  51. package/dist/assets/{mailbox-store-CV5--Nmh.js → mailbox-store-5Dizermg.js} +1 -1
  52. package/dist/assets/{markdown-BzOXYqOo.js → markdown-CXRzjX3p.js} +1 -1
  53. package/dist/assets/{monaco-COtIgMfE.js → monaco-CbI7qrVD.js} +1 -1
  54. package/dist/assets/{monaco-theme-ruX2YdTu.js → monaco-theme-Dr3-rSid.js} +1 -1
  55. package/dist/assets/{roster-ws-Cx9Bzoh0.js → roster-ws-CSbZSs3G.js} +1 -1
  56. package/dist/assets/{shared-h0I65HLY.js → shared-BirfDJmq.js} +1 -1
  57. package/dist/assets/{stores-Bt7wAdGA.js → stores-COxKgvNx.js} +1 -1
  58. package/dist/assets/{ui-store-CMdVzHOn.js → ui-store-BROszDxo.js} +1 -1
  59. package/dist/assets/{utils-sO9lidp6.js → utils-DQbrPaAM.js} +1 -1
  60. package/dist/assets/{vector-memory-panel-BtQElVO4.js → vector-memory-panel-fEdfCaDJ.js} +1 -1
  61. package/dist/assets/vendor-BO-lHyIr.js +116 -0
  62. package/dist/assets/{view-navigation-BDsXeQ5i.js → view-navigation-CVnKqjL2.js} +1 -1
  63. package/dist/assets/{vite-preload-Czpn1I53.js → vite-preload-BZ1Pz5am.js} +1 -1
  64. package/dist/components/ChatInput/subagent-model-picker-dialog.d.ts +43 -0
  65. package/dist/components/SettingsPanel/SubagentModelsSection.d.ts +6 -9
  66. package/dist/hooks/ws-handlers/session-execution-handlers.d.ts +10 -0
  67. package/dist/index.html +16 -16
  68. package/dist/index.js +10429 -9956
  69. package/dist/types/runtime.d.ts +25 -0
  70. package/dist/types/server-message.d.ts +2 -2
  71. package/package.json +26 -26
  72. package/dist/assets/AgentRosterView-C2PmzJWn.js +0 -12
  73. package/dist/assets/SddHub-BedY4SV-.js +0 -2
  74. package/dist/assets/config-store-CZdk-vPj.js +0 -22
  75. package/dist/assets/index-BYBlSXtn.js +0 -170
  76. package/dist/assets/vendor-Cvuk-OYN.js +0 -125
@@ -1 +1 @@
1
- import{n as e}from"./ui-store-CMdVzHOn.js";var t=(()=>{try{if(typeof navigator>`u`)return!1;let e=navigator.userAgentData?.platform??navigator.platform??``;return/mac|iphone|ipad|ipod/i.test(e)}catch{return!1}})(),n=t?`⌘`:`Ctrl`,r=t?`⌥`:`Alt`,i=t?`⇧`:`Shift`;function a(e){switch(e){case`Ctrl`:return n;case`Alt`:return r;case`Shift`:return i;default:return e}}var o={chat:`chat`,agents:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skills:`skill`,design:`design-gallery`},s={chat:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skill:`skills`,"design-gallery":`design`},c={1:`chat`,2:`files`,3:`changes`,4:`mailbox`,5:`skills`,0:`design`},l=Object.entries(c).reduce((e,[t,r])=>(e[r]=`${n}+${t}`,e),{chat:``,agents:``,files:``,changes:``,mailbox:``,skills:``,design:``});function u(e){return o[e]??`chat`}function d(e){return l[e]??``}function f(t){let n=e.getState();n.currentView!==t&&n.setCurrentView(t)}function p(t){let n=e.getState();n.setSidebarOpen(!0),n.selectActivity(t),f(u(t))}function m(t){let n=e.getState();if(!n.sidebarOpen)n.setSidebarOpen(!0),n.selectActivity(t);else if(n.activeActivity===t){n.setSidebarOpen(!1);return}else n.activeActivity===`agents`&&n.setSidebarOpen(!0),n.selectActivity(t);f(u(t))}function h(t){let n=e.getState();if(n.currentView===t){p(`chat`);return}n.setSidebarOpen(!1),f(t)}function g(t){let n=s[t];if(n){p(n);return}e.getState().setSidebarOpen(!1),f(t)}export{d as a,m as i,g as n,p as o,h as r,a as s,c as t};
1
+ import{n as e}from"./ui-store-BROszDxo.js";var t=(()=>{try{if(typeof navigator>`u`)return!1;let e=navigator.userAgentData?.platform??navigator.platform??``;return/mac|iphone|ipad|ipod/i.test(e)}catch{return!1}})(),n=t?`⌘`:`Ctrl`,r=t?`⌥`:`Alt`,i=t?`⇧`:`Shift`;function a(e){switch(e){case`Ctrl`:return n;case`Alt`:return r;case`Shift`:return i;default:return e}}var o={chat:`chat`,agents:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skills:`skill`,design:`design-gallery`},s={chat:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skill:`skills`,"design-gallery":`design`},c={1:`chat`,2:`files`,3:`changes`,4:`mailbox`,5:`skills`,0:`design`},l=Object.entries(c).reduce((e,[t,r])=>(e[r]=`${n}+${t}`,e),{chat:``,agents:``,files:``,changes:``,mailbox:``,skills:``,design:``});function u(e){return o[e]??`chat`}function d(e){return l[e]??``}function f(t){let n=e.getState();n.currentView!==t&&n.setCurrentView(t)}function p(t){let n=e.getState();n.setSidebarOpen(!0),n.selectActivity(t),f(u(t))}function m(t){let n=e.getState();if(!n.sidebarOpen)n.setSidebarOpen(!0),n.selectActivity(t);else if(n.activeActivity===t){n.setSidebarOpen(!1);return}else n.activeActivity===`agents`&&n.setSidebarOpen(!0),n.selectActivity(t);f(u(t))}function h(t){let n=e.getState();if(n.currentView===t){p(`chat`);return}n.setSidebarOpen(!1),f(t)}function g(t){let n=s[t];if(n){p(n);return}e.getState().setSidebarOpen(!1),f(t)}export{d as a,m as i,g as n,p as o,h as r,a as s,c as t};
@@ -1 +1 @@
1
- var e=function(e){return`/`+e},t={},n=function(n,r,i){let a=Promise.resolve();if(r&&r.length>0){let n=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function c(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function l(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=c(r.map(r=>{if(r=e(r,i),r=l(r),r in t)return;t[r]=!0;let a=r.endsWith(`.css`);for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.href===r&&(!a||t.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:`modulepreload`,a||(o.as=`script`),o.crossOrigin=``,o.href=r,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,t)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${r}`)))})}))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(e=>{for(let t of e||[])t.status===`rejected`&&o(t.reason);return n().catch(o)})};export{n as t};
1
+ var e=function(e){return`/`+e},t={},n=function(n,r,i){let a=Promise.resolve();if(r&&r.length>0){let n=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function c(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function l(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=c(r.map(r=>{if(r=e(r,i),r=l(r),r in t)return;t[r]=!0;let a=r.endsWith(`.css`);for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.href===r&&(!a||t.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:`modulepreload`,a||(o.as=`script`),o.crossOrigin=``,o.href=r,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,t)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${r}`)))})}).filter(e=>e!==void 0))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(e=>{for(let t of e||[])t.status===`rejected`&&o(t.reason);return n().catch(o)})};export{n as t};
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The same flat searchable provider/model picker as `QuickModelSwitcher` (the
3
+ * main chat's Cmd/Ctrl+M dialog), but scoped to a single subagent lane.
4
+ *
5
+ * Mirrors the main chat UX: search box at the top, favorites toggle, optional
6
+ * provider filter, keyboard nav (↑↓ / Enter / Esc), and rich rows that show
7
+ * the model name, context window, effort vocabulary, and a "current" badge.
8
+ * Plus an "Inherit — routing / session" footer row so a lane previously pinned
9
+ * elsewhere round-trips without being rewritten to a bare model id.
10
+ *
11
+ * Unlike `QuickModelSwitcher`, this picker does not write directly to the
12
+ * session model. It only resolves a (provider, model) pair and hands it back
13
+ * via `onPick`; the caller (the composer popover) decides what to do with it.
14
+ */
15
+ export interface SubagentModelPickerDialogProps {
16
+ /** Which lane this dialog edits — used in the title + to highlight the
17
+ * currently-pinned row, but never sent on the wire. */
18
+ laneIndex: number;
19
+ /** The lane currently saved in the plan, or undefined for an empty lane. */
20
+ currentLane: {
21
+ provider?: string;
22
+ model?: string;
23
+ /** Legacy `tier:` or `profile:` pin from another surface. When set, the
24
+ * dialog shows a sticky banner explaining that picking a model will
25
+ * replace this tier/profile with a concrete provider/model. */
26
+ tier?: string;
27
+ fallbackProfile?: string;
28
+ };
29
+ /** The session model — surfaced as the "active" badge on that row when a
30
+ * lane is pinned to it. */
31
+ sessionProvider?: string | undefined;
32
+ sessionModel?: string | undefined;
33
+ /** Bumped when the dialog opens. The candidate fetch only fires while
34
+ * `open === true`; this gates the WS round-trip. */
35
+ open: boolean;
36
+ onOpenChange: (open: boolean) => void;
37
+ onPick: (pick: {
38
+ provider: string;
39
+ model: string;
40
+ } | null) => void;
41
+ }
42
+ export declare function SubagentModelPickerDialog({ laneIndex, currentLane, sessionProvider, sessionModel, open, onOpenChange, onPick, }: SubagentModelPickerDialogProps): import("react").JSX.Element;
43
+ //# sourceMappingURL=subagent-model-picker-dialog.d.ts.map
@@ -1,14 +1,11 @@
1
- interface ModelCandidate {
2
- provider: string;
3
- model: string;
4
- label: string;
5
- }
6
1
  interface SubagentModelsSectionProps {
7
- /** Writes the pref locally AND pushes it to the server (see SettingsPanel). */
8
2
  syncPref: (key: string, value: unknown) => void;
9
- /** Candidate models for the lane dropdown. */
10
- candidates?: ModelCandidate[] | undefined;
3
+ candidates?: Array<{
4
+ provider: string;
5
+ model: string;
6
+ label: string;
7
+ }> | undefined;
11
8
  }
12
- export declare function SubagentModelsSection({ syncPref, candidates, }: SubagentModelsSectionProps): React.ReactElement;
9
+ export declare function SubagentModelsSection({ syncPref, }: SubagentModelsSectionProps): React.ReactElement;
13
10
  export {};
14
11
  //# sourceMappingURL=SubagentModelsSection.d.ts.map
@@ -35,6 +35,16 @@ export declare function handleProviderStreamError(msg: WSServerMessage): void;
35
35
  export declare function handleToolLoopDetected(msg: WSServerMessage): void;
36
36
  export declare function handleDelegateStarted(msg: WSServerMessage): void;
37
37
  export declare function handleDelegateCompleted(msg: WSServerMessage): void;
38
+ /** A background delegation result is waiting for this session's leader. */
39
+ export declare function handleDelegationDeliveryPending(msg: WSServerMessage): void;
40
+ /**
41
+ * The runtime woke the leader. Rendered as a system line BEFORE the woken
42
+ * turn's stream — never as a user bubble: nobody typed the `[AUTO-WAKE]`
43
+ * prompt that drives it.
44
+ */
45
+ export declare function handleDelegationAutoWakeStarted(msg: WSServerMessage): void;
46
+ /** The chain cap is holding results until the user sends a message. */
47
+ export declare function handleDelegationAutoWakeSuppressed(msg: WSServerMessage): void;
38
48
  export declare function handleSessionDamaged(msg: WSServerMessage): void;
39
49
  export declare function handleSessionRewound(msg: WSServerMessage): void;
40
50
  export declare function handleCheckpointWritten(msg: WSServerMessage): void;
package/dist/index.html CHANGED
@@ -11,30 +11,30 @@
11
11
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
12
12
  <meta name="apple-mobile-web-app-title" content="WrongStack" />
13
13
  <title>WrongStack WebUI</title>
14
- <script type="module" crossorigin src="/assets/index-BYBlSXtn.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-CfREDCPe.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/react-core-wiHys0m2.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/xyflow-BqDBClm9.js">
18
- <link rel="modulepreload" crossorigin href="/assets/markdown-BzOXYqOo.js">
19
- <link rel="modulepreload" crossorigin href="/assets/vendor-Cvuk-OYN.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/markdown-CXRzjX3p.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/vendor-BO-lHyIr.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/chat-BITJe8-v.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/commandPalette-BovBiPec.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/common-CmkkiJUR.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/setup-qooXjj4V.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/toasts-DZ6HdKgG.js">
25
- <link rel="modulepreload" crossorigin href="/assets/vite-preload-Czpn1I53.js">
26
- <link rel="modulepreload" crossorigin href="/assets/i18n-BwptPW9U.js">
27
- <link rel="modulepreload" crossorigin href="/assets/utils-sO9lidp6.js">
28
- <link rel="modulepreload" crossorigin href="/assets/ui-store-CMdVzHOn.js">
29
- <link rel="modulepreload" crossorigin href="/assets/config-store-CZdk-vPj.js">
30
- <link rel="modulepreload" crossorigin href="/assets/view-navigation-BDsXeQ5i.js">
31
- <link rel="modulepreload" crossorigin href="/assets/chat-store-BVz6zQLP.js">
32
- <link rel="modulepreload" crossorigin href="/assets/codemap-activity-store-RqE4L9Os.js">
33
- <link rel="modulepreload" crossorigin href="/assets/mailbox-store-CV5--Nmh.js">
34
- <link rel="modulepreload" crossorigin href="/assets/stores-Bt7wAdGA.js">
35
- <link rel="modulepreload" crossorigin href="/assets/dialog-DNsBc-EF.js">
36
- <link rel="modulepreload" crossorigin href="/assets/button-CN_h6kNT.js">
37
- <link rel="modulepreload" crossorigin href="/assets/input-BnTFqRjn.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/vite-preload-BZ1Pz5am.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/i18n-B_njdXiH.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/utils-DQbrPaAM.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/ui-store-BROszDxo.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/config-store-D7yrCV2X.js">
30
+ <link rel="modulepreload" crossorigin href="/assets/view-navigation-CVnKqjL2.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/chat-store-DpI9nO_z.js">
32
+ <link rel="modulepreload" crossorigin href="/assets/codemap-activity-store-5hcdmofR.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/mailbox-store-5Dizermg.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/stores-COxKgvNx.js">
35
+ <link rel="modulepreload" crossorigin href="/assets/dialog-CTmNJKRN.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/button-h7DHXgna.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/input-DAvKojvP.js">
38
38
  <link rel="stylesheet" crossorigin href="/assets/xyflow-DLioOiRN.css">
39
39
  <link rel="stylesheet" crossorigin href="/assets/vendor-BShi5_Dg.css">
40
40
  <link rel="stylesheet" crossorigin href="/assets/index-coebX2ug.css">