@neuralnomads/codenomad-dev 0.20.1-dev-20261019-e56b286a → 0.20.1-dev-20261019-e32d9331

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 (72) hide show
  1. package/dist/automation/browser-page.js +97 -0
  2. package/dist/automation/browser-page.js.map +1 -0
  3. package/dist/automation/browser-page.test.js +119 -0
  4. package/dist/automation/browser-page.test.js.map +1 -0
  5. package/dist/automation/page/actions.js +107 -83
  6. package/dist/automation/page/actions.js.map +1 -1
  7. package/dist/automation/page/input.js +130 -0
  8. package/dist/automation/page/input.js.map +1 -0
  9. package/dist/automation/page/input.test.js +71 -0
  10. package/dist/automation/page/input.test.js.map +1 -0
  11. package/dist/automation/page/keys.js +99 -0
  12. package/dist/automation/page/keys.js.map +1 -0
  13. package/dist/automation/page/keys.test.js +32 -0
  14. package/dist/automation/page/keys.test.js.map +1 -0
  15. package/dist/automation/page/parse.js +79 -0
  16. package/dist/automation/page/parse.js.map +1 -0
  17. package/dist/automation/page/protocol.js +143 -0
  18. package/dist/automation/page/protocol.js.map +1 -0
  19. package/dist/developer-cdp.js +7 -10
  20. package/dist/developer-cdp.js.map +1 -1
  21. package/dist/developer-cdp.test.js +49 -15
  22. package/dist/developer-cdp.test.js.map +1 -1
  23. package/dist/opencode/automation/desktop-plugin.js +10 -6
  24. package/dist/opencode/automation/desktop-plugin.js.map +1 -1
  25. package/dist/opencode/automation-plugin.js +33 -41
  26. package/dist/opencode/automation-plugin.js.map +1 -1
  27. package/dist/opencode/automation-plugin.test.js +42 -1
  28. package/dist/opencode/automation-plugin.test.js.map +1 -1
  29. package/dist/plugins/automation/plugin.mjs +230 -40
  30. package/dist/plugins/missions/plugin.mjs +21 -0
  31. package/dist/server/routes/automation-plugin.js +7 -5
  32. package/dist/server/routes/automation-plugin.js.map +1 -1
  33. package/dist/server/routes/automation-plugin.test.js +17 -4
  34. package/dist/server/routes/automation-plugin.test.js.map +1 -1
  35. package/package.json +1 -1
  36. package/public/assets/{App-z4rDGruy.js → App-DZMdkLQJ.js} +29 -29
  37. package/public/assets/App-DZMdkLQJ.js.map +1 -0
  38. package/public/assets/{FilesPanel-BR_6pmtI.js → FilesPanel-CgFgL4q7.js} +3 -3
  39. package/public/assets/FilesPanel-CgFgL4q7.js.map +1 -0
  40. package/public/assets/{StatusTab-7nJ4mv4I.js → StatusTab-CaQz8RwN.js} +2 -2
  41. package/public/assets/{StatusTab-7nJ4mv4I.js.map → StatusTab-CaQz8RwN.js.map} +1 -1
  42. package/public/assets/{client-state-CdvbHQef.js → client-state-DikXRKzG.js} +2 -2
  43. package/public/assets/{client-state-CdvbHQef.js.map → client-state-DikXRKzG.js.map} +1 -1
  44. package/public/assets/{client-state-Dy45bMLT.js → client-state-kpF1cbUu.js} +2 -2
  45. package/public/assets/{client-state-Dy45bMLT.js.map → client-state-kpF1cbUu.js.map} +1 -1
  46. package/public/assets/client-state-owner-commands-BMJJQYT-.js +2 -0
  47. package/public/assets/{client-state-owner-commands-CNRMpxmP.js.map → client-state-owner-commands-BMJJQYT-.js.map} +1 -1
  48. package/public/assets/{diff-viewer-DidBGGSg.js → diff-viewer-iFIylM56.js} +2 -2
  49. package/public/assets/{diff-viewer-DidBGGSg.js.map → diff-viewer-iFIylM56.js.map} +1 -1
  50. package/public/assets/{main-2ULMhXOZ.js → main-B0L3f7sD.js} +52 -52
  51. package/public/assets/main-B0L3f7sD.js.map +1 -0
  52. package/public/assets/{markdown-B2vmXRgM.js → markdown-Bh1QlJgA.js} +2 -2
  53. package/public/assets/{markdown-B2vmXRgM.js.map → markdown-Bh1QlJgA.js.map} +1 -1
  54. package/public/assets/{opener-startup-state-settings-card-Bj8IDBCX.js → opener-startup-state-settings-card-mzh22bq8.js} +2 -2
  55. package/public/assets/{opener-startup-state-settings-card-Bj8IDBCX.js.map → opener-startup-state-settings-card-mzh22bq8.js.map} +1 -1
  56. package/public/assets/{startup-state-settings-card-DAkduiFk.js → startup-state-settings-card-B1UMzsQK.js} +2 -2
  57. package/public/assets/{startup-state-settings-card-DAkduiFk.js.map → startup-state-settings-card-B1UMzsQK.js.map} +1 -1
  58. package/public/assets/{startup-state-settings-view-CQ6mkdWM.js → startup-state-settings-view-nZNbhUhQ.js} +2 -2
  59. package/public/assets/{startup-state-settings-view-CQ6mkdWM.js.map → startup-state-settings-view-nZNbhUhQ.js.map} +1 -1
  60. package/public/assets/{terminal-square-DeHY-xG8.js → terminal-square-CdJ4Gt6Y.js} +2 -2
  61. package/public/assets/{terminal-square-DeHY-xG8.js.map → terminal-square-CdJ4Gt6Y.js.map} +1 -1
  62. package/public/assets/{tool-call-DPmRZgHK.js → tool-call-C9ux0znU.js} +4 -4
  63. package/public/assets/{tool-call-DPmRZgHK.js.map → tool-call-C9ux0znU.js.map} +1 -1
  64. package/public/assets/{unified-picker-Dpt39UfN.js → unified-picker-DOP29DIt.js} +2 -2
  65. package/public/assets/{unified-picker-Dpt39UfN.js.map → unified-picker-DOP29DIt.js.map} +1 -1
  66. package/public/index.html +1 -1
  67. package/public/sw.js +1 -1
  68. package/public/sw.js.map +1 -1
  69. package/public/assets/App-z4rDGruy.js.map +0 -1
  70. package/public/assets/FilesPanel-BR_6pmtI.js.map +0 -1
  71. package/public/assets/client-state-owner-commands-CNRMpxmP.js +0 -2
  72. package/public/assets/main-2ULMhXOZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"StatusTab-7nJ4mv4I.js","sources":["../../../../../../node_modules/lucide-solid/dist/source/icons/grip-vertical.jsx","../../../../../../node_modules/lucide-solid/dist/source/icons/x-octagon.jsx","../../../../../../node_modules/@kobalte/core/dist/chunk/UGE6PPGT.jsx","../../../../../../node_modules/@kobalte/core/dist/chunk/PYUMFHDL.jsx","../../../components/session/context-usage-panel.tsx","../../../components/session/provider-usage-state.ts","../../../components/session/provider-usage-panel.tsx","../../../stores/shell-store.ts","../../../stores/shells.ts","../../../components/shell-output-dialog.tsx","../../../components/instance/shell/right-panel/tabs/StatusTab.tsx"],"sourcesContent":["import Icon from '../Icon';\nconst iconNode = [\n ['circle', { cx: '9', cy: '12', r: '1', key: '1vctgf' }],\n ['circle', { cx: '9', cy: '5', r: '1', key: 'hp0tcf' }],\n ['circle', { cx: '9', cy: '19', r: '1', key: 'fkjjf6' }],\n ['circle', { cx: '15', cy: '12', r: '1', key: '1tmaij' }],\n ['circle', { cx: '15', cy: '5', r: '1', key: '19l28e' }],\n ['circle', { cx: '15', cy: '19', r: '1', key: 'f4zoj3' }],\n];\nconst GripVertical = (props) => (<Icon {...props} name=\"GripVertical\" iconNode={iconNode}/>);\nexport default GripVertical;\n","import Icon from '../Icon';\nconst iconNode = [\n [\n 'polygon',\n {\n points: '7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2',\n key: 'h1p8hx',\n },\n ],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n];\nconst XOctagon = (props) => <Icon {...props} name=\"XOctagon\" iconNode={iconNode}/>;\nexport default XOctagon;\n","import {\n createDisclosureState\n} from \"./E53DB7BS.jsx\";\nimport {\n ButtonRoot\n} from \"./UKTBL2JL.jsx\";\nimport {\n createRegisterId\n} from \"./JNCCF6MP.jsx\";\nimport {\n Polymorphic\n} from \"./FLVHQV4A.jsx\";\nimport {\n __export\n} from \"./5WXHJDCZ.jsx\";\n\n// src/collapsible/index.tsx\nvar collapsible_exports = {};\n__export(collapsible_exports, {\n Collapsible: () => Collapsible,\n Content: () => CollapsibleContent,\n Root: () => CollapsibleRoot,\n Trigger: () => CollapsibleTrigger,\n useCollapsibleContext: () => useCollapsibleContext\n});\n\n// src/collapsible/collapsible-content.tsx\nimport { mergeDefaultProps, mergeRefs } from \"@kobalte/utils\";\nimport {\n Show,\n createEffect,\n createSignal,\n on,\n onCleanup,\n onMount,\n splitProps\n} from \"solid-js\";\nimport { combineStyle } from \"@solid-primitives/props\";\nimport createPresence from \"solid-presence\";\n\n// src/collapsible/collapsible-context.tsx\nimport { createContext, useContext } from \"solid-js\";\nvar CollapsibleContext = createContext();\nfunction useCollapsibleContext() {\n const context = useContext(CollapsibleContext);\n if (context === void 0) {\n throw new Error(\n \"[kobalte]: `useCollapsibleContext` must be used within a `Collapsible.Root` component\"\n );\n }\n return context;\n}\n\n// src/collapsible/collapsible-content.tsx\nfunction CollapsibleContent(props) {\n const [ref, setRef] = createSignal();\n const context = useCollapsibleContext();\n const mergedProps = mergeDefaultProps(\n { id: context.generateId(\"content\") },\n props\n );\n const [local, others] = splitProps(mergedProps, [\"ref\", \"id\", \"style\"]);\n const { present } = createPresence({\n show: context.shouldMount,\n element: () => ref() ?? null\n });\n const [height, setHeight] = createSignal(0);\n const [width, setWidth] = createSignal(0);\n const isOpen = () => context.isOpen() || present();\n let isMountAnimationPrevented = isOpen();\n onMount(() => {\n const raf = requestAnimationFrame(() => {\n isMountAnimationPrevented = false;\n });\n onCleanup(() => {\n cancelAnimationFrame(raf);\n });\n });\n createEffect(\n on(\n /**\n * depends on `present` because it will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n present,\n () => {\n if (!ref()) {\n return;\n }\n ref().style.transitionDuration = \"0s\";\n ref().style.animationName = \"none\";\n const rect = ref().getBoundingClientRect();\n setHeight(rect.height);\n setWidth(rect.width);\n if (!isMountAnimationPrevented) {\n ref().style.transitionDuration = \"\";\n ref().style.animationName = \"\";\n }\n }\n )\n );\n createEffect(\n on(\n context.isOpen,\n (open) => {\n if (!open && ref()) {\n ref().style.transitionDuration = \"\";\n ref().style.animationName = \"\";\n }\n },\n { defer: true }\n )\n );\n createEffect(() => onCleanup(context.registerContentId(local.id)));\n return <Show when={present()}><Polymorphic\n as=\"div\"\n ref={mergeRefs(setRef, local.ref)}\n id={local.id}\n style={combineStyle(\n {\n \"--kb-collapsible-content-height\": height() ? `${height()}px` : void 0,\n \"--kb-collapsible-content-width\": width() ? `${width()}px` : void 0\n },\n local.style\n )}\n {...context.dataset()}\n {...others}\n /></Show>;\n}\n\n// src/collapsible/collapsible-root.tsx\nimport {\n createGenerateId,\n mergeDefaultProps as mergeDefaultProps2\n} from \"@kobalte/utils\";\nimport {\n createMemo,\n createSignal as createSignal2,\n createUniqueId,\n splitProps as splitProps2\n} from \"solid-js\";\nfunction CollapsibleRoot(props) {\n const defaultId = `collapsible-${createUniqueId()}`;\n const mergedProps = mergeDefaultProps2(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps2(mergedProps, [\n \"open\",\n \"defaultOpen\",\n \"onOpenChange\",\n \"disabled\",\n \"forceMount\"\n ]);\n const [contentId, setContentId] = createSignal2();\n const disclosureState = createDisclosureState({\n open: () => local.open,\n defaultOpen: () => local.defaultOpen,\n onOpenChange: (isOpen) => local.onOpenChange?.(isOpen)\n });\n const dataset = createMemo(() => ({\n \"data-expanded\": disclosureState.isOpen() ? \"\" : void 0,\n \"data-closed\": !disclosureState.isOpen() ? \"\" : void 0,\n \"data-disabled\": local.disabled ? \"\" : void 0\n }));\n const context = {\n dataset,\n isOpen: disclosureState.isOpen,\n disabled: () => local.disabled ?? false,\n shouldMount: () => local.forceMount || disclosureState.isOpen(),\n contentId,\n toggle: disclosureState.toggle,\n generateId: createGenerateId(() => others.id),\n registerContentId: createRegisterId(setContentId)\n };\n return <CollapsibleContext.Provider value={context}><Polymorphic\n as=\"div\"\n {...dataset()}\n {...others}\n /></CollapsibleContext.Provider>;\n}\n\n// src/collapsible/collapsible-trigger.tsx\nimport { callHandler } from \"@kobalte/utils\";\nimport {\n splitProps as splitProps3\n} from \"solid-js\";\nfunction CollapsibleTrigger(props) {\n const context = useCollapsibleContext();\n const [local, others] = splitProps3(props, [\"onClick\"]);\n const onClick = (e) => {\n callHandler(e, local.onClick);\n context.toggle();\n };\n return <ButtonRoot\n aria-expanded={context.isOpen()}\n aria-controls={context.isOpen() ? context.contentId() : void 0}\n disabled={context.disabled()}\n onClick={onClick}\n {...context.dataset()}\n {...others}\n />;\n}\n\n// src/collapsible/index.tsx\nvar Collapsible = Object.assign(CollapsibleRoot, {\n Content: CollapsibleContent,\n Trigger: CollapsibleTrigger\n});\n\nexport {\n useCollapsibleContext,\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n Collapsible,\n collapsible_exports\n};\n","import {\n createSelectableList\n} from \"./N3GAC5SS.jsx\";\nimport {\n createListState,\n createSelectableItem\n} from \"./QZDH5R5B.jsx\";\nimport {\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n useCollapsibleContext\n} from \"./UGE6PPGT.jsx\";\nimport {\n createDomCollection,\n createDomCollectionItem\n} from \"./SOM3K36D.jsx\";\nimport {\n createRegisterId\n} from \"./JNCCF6MP.jsx\";\nimport {\n Polymorphic\n} from \"./FLVHQV4A.jsx\";\nimport {\n __export\n} from \"./5WXHJDCZ.jsx\";\n\n// src/accordion/index.tsx\nvar accordion_exports = {};\n__export(accordion_exports, {\n Accordion: () => Accordion,\n Content: () => AccordionContent,\n Header: () => AccordionHeader,\n Item: () => AccordionItem,\n Root: () => AccordionRoot,\n Trigger: () => AccordionTrigger,\n useAccordionContext: () => useAccordionContext\n});\n\n// src/accordion/accordion-content.tsx\nimport { mergeDefaultProps } from \"@kobalte/utils\";\nimport {\n createEffect,\n onCleanup,\n splitProps\n} from \"solid-js\";\nimport { combineStyle } from \"@solid-primitives/props\";\n\n// src/accordion/accordion-item-context.tsx\nimport { createContext, useContext } from \"solid-js\";\nvar AccordionItemContext = createContext();\nfunction useAccordionItemContext() {\n const context = useContext(AccordionItemContext);\n if (context === void 0) {\n throw new Error(\n \"[kobalte]: `useAccordionItemContext` must be used within a `Accordion.Item` component\"\n );\n }\n return context;\n}\n\n// src/accordion/accordion-content.tsx\nfunction AccordionContent(props) {\n const itemContext = useAccordionItemContext();\n const defaultId = itemContext.generateId(\"content\");\n const mergedProps = mergeDefaultProps(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps(mergedProps, [\"id\", \"style\"]);\n createEffect(() => onCleanup(itemContext.registerContentId(local.id)));\n return <CollapsibleContent\n role=\"region\"\n aria-labelledby={itemContext.triggerId()}\n style={combineStyle(\n {\n \"--kb-accordion-content-height\": \"var(--kb-collapsible-content-height)\",\n \"--kb-accordion-content-width\": \"var(--kb-collapsible-content-width)\"\n },\n local.style\n )}\n {...others}\n />;\n}\n\n// src/accordion/accordion-header.tsx\nfunction AccordionHeader(props) {\n const context = useCollapsibleContext();\n return <Polymorphic\n as=\"h3\"\n {...context.dataset()}\n {...props}\n />;\n}\n\n// src/accordion/accordion-item.tsx\nimport { createGenerateId, mergeDefaultProps as mergeDefaultProps2 } from \"@kobalte/utils\";\nimport {\n createSignal,\n createUniqueId,\n splitProps as splitProps2\n} from \"solid-js\";\n\n// src/accordion/accordion-context.tsx\nimport { createContext as createContext2, useContext as useContext2 } from \"solid-js\";\nvar AccordionContext = createContext2();\nfunction useAccordionContext() {\n const context = useContext2(AccordionContext);\n if (context === void 0) {\n throw new Error(\n \"[kobalte]: `useAccordionContext` must be used within a `Accordion.Root` component\"\n );\n }\n return context;\n}\n\n// src/accordion/accordion-item.tsx\nfunction AccordionItem(props) {\n const accordionContext = useAccordionContext();\n const defaultId = `${accordionContext.generateId(\n \"item\"\n )}-${createUniqueId()}`;\n const mergedProps = mergeDefaultProps2(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps2(mergedProps, [\"value\", \"disabled\"]);\n const [triggerId, setTriggerId] = createSignal();\n const [contentId, setContentId] = createSignal();\n const selectionManager = () => accordionContext.listState().selectionManager();\n const isExpanded = () => {\n return selectionManager().isSelected(local.value);\n };\n const context = {\n value: () => local.value,\n triggerId,\n contentId,\n generateId: createGenerateId(() => others.id),\n registerTriggerId: createRegisterId(setTriggerId),\n registerContentId: createRegisterId(setContentId)\n };\n return <AccordionItemContext.Provider value={context}><CollapsibleRoot\n open={isExpanded()}\n disabled={local.disabled}\n {...others}\n /></AccordionItemContext.Provider>;\n}\n\n// src/accordion/accordion-root.tsx\nimport {\n composeEventHandlers,\n createGenerateId as createGenerateId2,\n mergeDefaultProps as mergeDefaultProps3,\n mergeRefs\n} from \"@kobalte/utils\";\nimport {\n createSignal as createSignal2,\n createUniqueId as createUniqueId2,\n splitProps as splitProps3\n} from \"solid-js\";\nfunction AccordionRoot(props) {\n let ref;\n const defaultId = `accordion-${createUniqueId2()}`;\n const mergedProps = mergeDefaultProps3(\n {\n id: defaultId,\n multiple: false,\n collapsible: false,\n shouldFocusWrap: true\n },\n props\n );\n const [local, others] = splitProps3(mergedProps, [\n \"id\",\n \"ref\",\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"multiple\",\n \"collapsible\",\n \"shouldFocusWrap\",\n \"onKeyDown\",\n \"onMouseDown\",\n \"onFocusIn\",\n // TODO: remove next breaking\n \"onFocusOut\"\n ]);\n const [items, setItems] = createSignal2([]);\n const { DomCollectionProvider } = createDomCollection({\n items,\n onItemsChange: setItems\n });\n const listState = createListState({\n selectedKeys: () => local.value,\n defaultSelectedKeys: () => local.defaultValue,\n onSelectionChange: (value) => local.onChange?.(Array.from(value)),\n disallowEmptySelection: () => !local.multiple && !local.collapsible,\n selectionMode: () => local.multiple ? \"multiple\" : \"single\",\n dataSource: items\n });\n listState.selectionManager().setFocusedKey(\"item-1\");\n const selectableList = createSelectableList(\n {\n selectionManager: () => listState.selectionManager(),\n collection: () => listState.collection(),\n disallowEmptySelection: () => listState.selectionManager().disallowEmptySelection(),\n shouldFocusWrap: () => local.shouldFocusWrap,\n disallowTypeAhead: true,\n allowsTabNavigation: true\n },\n () => ref\n );\n const context = {\n listState: () => listState,\n generateId: createGenerateId2(() => local.id)\n };\n return <DomCollectionProvider><AccordionContext.Provider value={context}><Polymorphic\n as=\"div\"\n id={local.id}\n ref={mergeRefs((el) => ref = el, local.ref)}\n onKeyDown={composeEventHandlers([\n local.onKeyDown,\n selectableList.onKeyDown\n ])}\n onMouseDown={composeEventHandlers([\n local.onMouseDown,\n selectableList.onMouseDown\n ])}\n onFocusIn={composeEventHandlers([\n local.onFocusIn\n // TODO: remove next breaking\n ])}\n onFocusOut={composeEventHandlers([\n local.onFocusOut,\n selectableList.onFocusOut\n ])}\n {...others}\n /></AccordionContext.Provider></DomCollectionProvider>;\n}\n\n// src/accordion/accordion-trigger.tsx\nimport {\n callHandler,\n composeEventHandlers as composeEventHandlers2,\n mergeDefaultProps as mergeDefaultProps4,\n mergeRefs as mergeRefs2\n} from \"@kobalte/utils\";\nimport {\n createEffect as createEffect2,\n onCleanup as onCleanup2,\n splitProps as splitProps4\n} from \"solid-js\";\nfunction AccordionTrigger(props) {\n let ref;\n const accordionContext = useAccordionContext();\n const itemContext = useAccordionItemContext();\n const collapsibleContext = useCollapsibleContext();\n const defaultId = itemContext.generateId(\"trigger\");\n const mergedProps = mergeDefaultProps4(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps4(mergedProps, [\n \"ref\",\n \"onPointerDown\",\n \"onPointerUp\",\n \"onClick\",\n \"onKeyDown\",\n \"onMouseDown\",\n \"onFocus\"\n ]);\n createDomCollectionItem({\n getItem: () => ({\n ref: () => ref,\n type: \"item\",\n key: itemContext.value(),\n textValue: \"\",\n // not applicable here\n disabled: collapsibleContext.disabled()\n })\n });\n const selectableItem = createSelectableItem(\n {\n key: () => itemContext.value(),\n selectionManager: () => accordionContext.listState().selectionManager(),\n disabled: () => collapsibleContext.disabled(),\n shouldSelectOnPressUp: true\n },\n () => ref\n );\n const onKeyDown = (e) => {\n if ([\"Enter\", \" \"].includes(e.key)) {\n e.preventDefault();\n }\n callHandler(e, local.onKeyDown);\n callHandler(e, selectableItem.onKeyDown);\n };\n createEffect2(() => onCleanup2(itemContext.registerTriggerId(others.id)));\n return <CollapsibleTrigger\n ref={mergeRefs2((el) => ref = el, local.ref)}\n data-key={selectableItem.dataKey()}\n onPointerDown={composeEventHandlers2([\n local.onPointerDown,\n selectableItem.onPointerDown\n ])}\n onPointerUp={composeEventHandlers2([\n local.onPointerUp,\n selectableItem.onPointerUp\n ])}\n onClick={composeEventHandlers2([local.onClick, selectableItem.onClick])}\n onKeyDown={onKeyDown}\n onMouseDown={composeEventHandlers2([\n local.onMouseDown,\n selectableItem.onMouseDown\n ])}\n onFocus={composeEventHandlers2([local.onFocus, selectableItem.onFocus])}\n {...others}\n />;\n}\n\n// src/accordion/index.tsx\nvar Accordion = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Header: AccordionHeader,\n Item: AccordionItem,\n Trigger: AccordionTrigger\n});\n\nexport {\n AccordionContent,\n AccordionHeader,\n useAccordionContext,\n AccordionItem,\n AccordionRoot,\n AccordionTrigger,\n Accordion,\n accordion_exports\n};\n","import { createMemo, Show, type Component } from \"solid-js\"\nimport { getChildSessions, getSessionInfo, getThreadTotals } from \"../../stores/sessions\"\nimport { formatTokenTotal } from \"../../lib/formatters\"\nimport { useI18n } from \"../../lib/i18n\"\nimport { useConfig } from \"../../stores/preferences\"\n\ninterface ContextUsagePanelProps {\n instanceId: string\n sessionId: string\n class?: string\n}\n\nconst chipClass = \"badge-shape inline-flex items-center gap-1 border border-base px-2 py-0.5 text-xs text-primary\"\nconst chipLabelClass = \"uppercase text-[10px] tracking-wide text-muted\"\n\nconst ContextUsagePanel: Component<ContextUsagePanelProps> = (props) => {\n const { t } = useI18n()\n const { preferences } = useConfig()\n const showUsage = createMemo(() => preferences().showUsageMetrics ?? true)\n const info = createMemo(\n () =>\n getSessionInfo(props.instanceId, props.sessionId) ?? {\n cost: 0,\n contextWindow: 0,\n isSubscriptionModel: false,\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n actualUsageTokens: 0,\n modelOutputLimit: 0,\n contextAvailableTokens: null,\n },\n )\n\n const children = createMemo(() => getChildSessions(props.instanceId, props.sessionId))\n const hasChildren = createMemo(() => children().length > 0)\n\n const threadTotals = createMemo(() => {\n if (!hasChildren()) return { cost: 0, inputTokens: 0, outputTokens: 0, reasoningTokens: 0 }\n return getThreadTotals(props.instanceId, props.sessionId) ?? { cost: 0, inputTokens: 0, outputTokens: 0, reasoningTokens: 0 }\n })\n\n const totalCostDisplay = createMemo(() => `$${threadTotals().cost.toFixed(2)}`)\n\n const totalInputTokens = createMemo(() => threadTotals().inputTokens)\n const totalOutputTokens = createMemo(() => threadTotals().outputTokens)\n const totalReasoningTokens = createMemo(() => threadTotals().reasoningTokens)\n\n const inputTokens = createMemo(() => info().inputTokens ?? 0)\n const outputTokens = createMemo(() => info().outputTokens ?? 0)\n const costValue = createMemo(() => {\n const value = info().isSubscriptionModel ? 0 : info().cost\n return value > 0 ? value : 0\n })\n\n const costDisplay = createMemo(() => info().isSubscriptionModel ? t(\"contextUsagePanel.included\") : `$${costValue().toFixed(2)}`)\n\n return (\n <div class={`session-context-panel px-4 py-2 ${props.class ?? \"\"}`}>\n <div class=\"flex flex-wrap items-center gap-2 text-xs text-primary opacity-50\">\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.input\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(inputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.output\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(outputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.cost\")}</span>\n <span class=\"font-semibold text-primary\">{costDisplay()}</span>\n </div>\n <Show when={hasChildren() && showUsage()}>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalInput\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(totalInputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalOutput\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(totalOutputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalCost\")}</span>\n <span class=\"font-semibold text-primary\">{totalCostDisplay()}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalReasoning\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(totalReasoningTokens())}</span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\nexport default ContextUsagePanel\n","import type { ProviderUsageResponse } from \"../../../../server/src/api-types\"\n\nexport interface ProviderUsageSource {\n instanceId: string\n sessionId: string\n directory: string\n providerId: string\n modelId: string\n}\n\nexport const providerUsageKey = (source: ProviderUsageSource) => JSON.stringify([\n source.instanceId, source.sessionId, source.directory, source.providerId, source.modelId,\n])\n\nexport const shouldShowProviderUsageWindow = (label: string, showCreditBalance: boolean) =>\n label !== \"credits_balance\" || showCreditBalance\n\n// The display snapshot is local to the mounted panel. Do not restore a global\n// browser cache before the server can revalidate the native selected account.\nexport function createProviderUsageState(\n fetchUsage: (source: ProviderUsageSource) => Promise<ProviderUsageResponse>,\n publish: (value: ProviderUsageResponse | null | undefined) => void,\n) {\n let current: ProviderUsageSource | null = null\n let generation = 0\n let running: { generation: number; again: boolean; promise: Promise<void> } | null = null\n const invalidate = () => { generation++; running = null; publish(undefined) }\n const refresh = (): Promise<void> => {\n const source = current\n if (!source) return Promise.resolve()\n if (running) {\n running.again = true\n return running.promise\n }\n const request = { generation, again: false, promise: Promise.resolve() }\n running = request\n request.promise = (async () => {\n try {\n do {\n request.again = false\n try {\n const value = await fetchUsage(source)\n if (generation === request.generation) publish(value)\n } catch {\n if (generation === request.generation) publish(null)\n }\n } while (request.again && generation === request.generation)\n } finally {\n if (running === request) running = null\n }\n })()\n return request.promise\n }\n return {\n select(source: ProviderUsageSource | null) {\n if (source && current && providerUsageKey(source) === providerUsageKey(current)) return\n current = source\n invalidate()\n },\n invalidate,\n refresh,\n dispose() { current = null; generation++; running = null },\n }\n}\n","import { For, Show, createEffect, createMemo, createSignal, onCleanup, type Component } from \"solid-js\"\n\nimport type { ProviderUsageResponse, ProviderUsageWindow } from \"../../../../server/src/api-types\"\nimport { serverApi } from \"../../lib/api-client\"\nimport { useI18n } from \"../../lib/i18n\"\nimport { useConfig } from \"../../stores/preferences\"\nimport { serverEvents } from \"../../lib/server-events\"\nimport { createProviderUsageState, providerUsageKey, shouldShowProviderUsageWindow, type ProviderUsageSource } from \"./provider-usage-state\"\n\ninterface ProviderUsagePanelProps {\n instanceId: string\n sessionId: string\n directory: string\n active: boolean\n providerId: string\n modelId: string\n}\n\nconst REFRESH_INTERVAL_MS = 60_000\n\nconst ProviderUsagePanel: Component<ProviderUsagePanelProps> = (props) => {\n const { t } = useI18n()\n const { preferences } = useConfig()\n const source = createMemo<ProviderUsageSource | null>(() => {\n if (!props.active) return null\n const providerId = props.providerId.trim()\n if (!providerId) return null\n const modelId = props.modelId.trim()\n return { instanceId: props.instanceId, sessionId: props.sessionId, directory: props.directory, providerId, modelId }\n }, null, { equals: (a, b) => a === b || Boolean(a && b && providerUsageKey(a) === providerUsageKey(b)) })\n const [usage, setUsage] = createSignal<ProviderUsageResponse | null | undefined>()\n const state = createProviderUsageState(current => serverApi.fetchProviderUsage(\n current.instanceId, current.sessionId, current.providerId, current.modelId,\n ), value => setUsage(value))\n\n createEffect(() => {\n state.select(source())\n void state.refresh()\n })\n\n const revalidate = () => { state.invalidate(); if (source()) void state.refresh() }\n const unsubscribeEvents = serverEvents.on(\"instance.event\", event => {\n if (event.type !== \"instance.event\" || event.instanceId !== props.instanceId) return\n if (event.event.type === \"provider.updated\") {\n // Catalogue churn is not a credential switch. Revalidate in place only\n // for this native location; account/config/connection boundaries below\n // still revoke the display immediately and fence pending reads.\n if (source() && (!event.event.location || event.event.location.directory === props.directory)) void state.refresh()\n } else if ([\"credential.updated\", \"credential.switched\", \"integration.updated\", \"config.updated\", \"server.connected\"].includes(event.event.type)) revalidate()\n })\n let lastInstanceStatus: string | undefined\n let lastTransportStatus: string | undefined\n const unsubscribeStatus = serverEvents.on(\"instance.eventStatus\", event => {\n if (event.type !== \"instance.eventStatus\" || event.instanceId !== props.instanceId) return\n // Repeated status snapshots are not reconnects. Include the native stream\n // generation so a new connection still fences quotas if its loss was missed.\n const key = JSON.stringify([event.instanceId, event.status, event.generation])\n if (key === lastInstanceStatus) return\n lastInstanceStatus = key\n state.invalidate()\n if (event.status === \"connected\" && source()) void state.refresh()\n })\n const unsubscribeTransport = serverEvents.onTransportStatus(status => {\n if (status === lastTransportStatus) return\n lastTransportStatus = status\n state.invalidate()\n if (status === \"connected\" && source()) void state.refresh()\n })\n const refreshTimer = setInterval(() => { if (source()) void state.refresh() }, REFRESH_INTERVAL_MS)\n onCleanup(() => {\n state.dispose()\n clearInterval(refreshTimer)\n unsubscribeEvents()\n unsubscribeStatus()\n unsubscribeTransport()\n })\n\n const entries = createMemo(() => Object.entries(usage()?.windows ?? {}))\n const displayedLabels = createMemo(() =>\n entries().map(([label]) => label).filter(label => shouldShowProviderUsageWindow(label, preferences().showProviderUsageCreditBalance)),\n )\n\n const windowLabel = (label: string): string => {\n // Model-scoped limits arrive as `window:Model`, e.g. `7d:Opus`.\n const scope = label.indexOf(\":\")\n if (scope > 0) return `${windowLabel(label.slice(0, scope))} · ${label.slice(scope + 1)}`\n const key = ({\n \"5h\": \"fiveHours\",\n \"7d\": \"sevenDays\",\n \"7d-sonnet\": \"sevenDaysSonnet\",\n \"7d-opus\": \"sevenDaysOpus\",\n weekly: \"weekly\",\n daily: \"daily\",\n monthly: \"monthly\",\n credits: \"credits\",\n credits_balance: \"credits\",\n billing_cycle: \"billingCycle\",\n session: \"session\",\n premium: \"premium\",\n chat: \"chat\",\n completions: \"completions\",\n \"mcp-tools\": \"mcpTools\",\n } as Record<string, string>)[label]\n return key ? t(`providerUsage.windows.${key}`) : label\n }\n\n const displayValue = (window: ProviderUsageWindow) => {\n if (window.valueLabel) return window.valueLabel\n if (window.usedPercent === null) return t(\"providerUsage.unavailableValue\")\n return t(\"providerUsage.usedPercent\", { percent: Math.round(window.usedPercent) })\n }\n\n const resetLabel = (resetAt: number | null) => {\n if (!resetAt) return null\n const date = new Date(resetAt)\n if (!Number.isFinite(date.getTime())) return null\n return t(\"providerUsage.resets\", { time: date.toLocaleString([], { dateStyle: \"short\", timeStyle: \"short\" }) })\n }\n\n const barColor = (percent: number | null) => {\n if (percent !== null && percent >= 80) return \"var(--status-error)\"\n if (percent !== null && percent >= 50) return \"var(--status-warning)\"\n return \"var(--status-success)\"\n }\n\n return (\n <div>\n <Show when={usage() !== undefined} fallback={<div class=\"right-panel-empty-text\">{t(\"providerUsage.loading\")}</div>}>\n <Show when={usage()} fallback={<div class=\"right-panel-empty-text\">{t(\"providerUsage.unavailable\")}</div>}>\n {(data) => (\n <Show\n when={data().supported && data().configured && data().ok && entries().length > 0}\n fallback={\n <div class=\"right-panel-empty-text\">\n {t(\n !data().supported\n ? \"providerUsage.unsupported\"\n : !data().configured\n ? \"providerUsage.notConfigured\"\n : data().unavailableReason === \"native-credential-api-unavailable\"\n ? \"providerUsage.nativeCredentialApiUnavailable\"\n : data().unavailableReason === \"openai-token-sharing-unsupported\"\n ? \"providerUsage.openaiTokenSharingUnsupported\"\n : \"providerUsage.unavailable\",\n { version: \"2.0.20\" },\n )}\n </div>\n }\n >\n <div class=\"space-y-2\">\n <For each={displayedLabels()}>\n {(label) => {\n // Retain this row's value until For reconciles a removed\n // label; its effects must not read an absent window.\n const window = createMemo<ProviderUsageWindow>(previous => usage()?.windows[label] ?? previous, usage()!.windows[label])\n return (\n <div>\n <div class=\"mb-1 flex items-baseline justify-between gap-2 text-[11px] text-primary\">\n <span class=\"font-medium\">{windowLabel(label)}</span>\n <div class=\"flex min-w-0 items-baseline gap-1.5 text-right\">\n <span class=\"shrink-0 font-medium\">{displayValue(window())}</span>\n <Show when={resetLabel(window().resetAt)}>\n {(reset) => (\n <>\n <span class=\"text-tertiary\" aria-hidden=\"true\">·</span>\n <span class=\"truncate text-[10px] text-tertiary\">{reset()}</span>\n </>\n )}\n </Show>\n </div>\n </div>\n <Show when={window().usedPercent !== null}>\n <div class=\"h-2 overflow-hidden border border-base\" style={{ \"background-color\": \"var(--surface-inset)\" }}>\n <div\n class=\"h-full transition-[width] duration-300\"\n style={{ width: `${Math.max(0, Math.min(100, window().usedPercent ?? 0))}%`, \"background-color\": barColor(window().usedPercent) }}\n role=\"progressbar\"\n aria-label={t(\"providerUsage.progressLabel\", { window: windowLabel(label) })}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(window().usedPercent ?? 0)}\n />\n </div>\n </Show>\n </div>\n )\n }}\n </For>\n </div>\n </Show>\n )}\n </Show>\n </Show>\n <Show when={usage()?.supported && usage()?.configured && usage()?.ok && entries().length > 0}>\n <div class=\"mt-2 truncate text-right text-sm font-semibold text-secondary\">{usage()?.providerName ?? props.providerId}</div>\n </Show>\n </div>\n )\n}\n\nexport default ProviderUsagePanel\n","import { createSignal, untrack } from \"solid-js\"\nimport type { OpenCodeClient, ShellInfo } from \"@opencode/client\"\nimport { requestLocationOptions } from \"./request-locations\"\n\nconst MAX_SHELL_OUTPUT_DISPLAY_CHARS = 4 * 1024 * 1024\n\nexport function appendShellOutput(current: string, chunk: string): { output: string; truncated: boolean } {\n const output = current + chunk\n if (output.length <= MAX_SHELL_OUTPUT_DISPLAY_CHARS) return { output, truncated: false }\n\n let start = output.length - MAX_SHELL_OUTPUT_DISPLAY_CHARS\n if (output.charCodeAt(start) >= 0xdc00 && output.charCodeAt(start) <= 0xdfff) start += 1\n if (output[start] === \"\\u001b\" && output[start + 1] === \"\\\\\") start += 2\n else if (output[start] === \"\\\\\" && output[start - 1] === \"\\u001b\") start += 1\n const escape = output.lastIndexOf(\"\\u001b\", start)\n if (escape >= 0) {\n let end = -1\n let controlSequence = false\n if (output[escape + 1] === \"[\") {\n controlSequence = true\n for (let index = escape + 2; index < output.length; index += 1) {\n const code = output.charCodeAt(index)\n if (code === 0x18 || code === 0x1a) {\n end = index + 1\n break\n }\n if (code >= 0x40 && code <= 0x7e) {\n end = index + 1\n break\n }\n }\n } else if (output[escape + 1] === \"]\") {\n controlSequence = true\n const bell = output.indexOf(\"\\u0007\", escape + 2)\n const stringTerminator = output.indexOf(\"\\u001b\\\\\", escape + 2)\n const cancel = output.slice(escape + 2).search(/[\\u0018\\u001a]/)\n const terminators = [bell < 0 ? Infinity : bell + 1, stringTerminator < 0 ? Infinity : stringTerminator + 2, cancel < 0 ? Infinity : escape + 3 + cancel]\n end = Math.min(...terminators)\n if (!Number.isFinite(end)) end = -1\n } else if ([\"P\", \"X\", \"^\", \"_\"].includes(output[escape + 1] ?? \"\")) {\n controlSequence = true\n const stringTerminator = output.indexOf(\"\\u001b\\\\\", escape + 2)\n const cancel = output.slice(escape + 2).search(/[\\u0018\\u001a]/)\n end = Math.min(stringTerminator < 0 ? Infinity : stringTerminator + 2, cancel < 0 ? Infinity : escape + 3 + cancel)\n if (!Number.isFinite(end)) end = -1\n }\n if (controlSequence && end >= start) start = end\n else if (controlSequence && end < 0 && escape < start) start = output.length\n }\n return { output: output.slice(start), truncated: true }\n}\n\nexport interface ShellApi {\n list(directory: string, workspaceID?: string): Promise<ShellInfo[]>\n remove(directory: string, shellId: string, workspaceID?: string): Promise<void>\n output(directory: string, shellId: string, cursor?: number, workspaceID?: string): Promise<{ output: string; cursor: number; size: number; truncated: boolean }>\n}\n\nexport interface ShellState {\n items: ShellInfo[]\n loading: boolean\n failed: boolean\n}\n\nexport interface ShellRefreshEvent {\n type: string\n location?: { directory?: string; workspaceID?: string }\n data?: { info?: { cwd?: string } }\n}\n\nconst EMPTY_STATE: ShellState = { items: [], loading: false, failed: false }\nconst SHELL_EVENTS = new Set([\"shell.created\", \"shell.exited\", \"shell.deleted\", \"server.connected\"])\n\nexport function createShellApi(client: OpenCodeClient): ShellApi {\n const location = (directory: string) => ({ directory })\n return {\n list: async (directory, workspaceID) => (await client.shell.list({ location: location(directory) }, requestLocationOptions({ directory, workspaceID }))).data,\n remove: (directory, shellId, workspaceID) => client.shell.remove({ id: shellId, location: location(directory) }, requestLocationOptions({ directory, workspaceID })),\n output: async (directory, shellId, cursor = 0, workspaceID) => (await client.shell.output({\n id: shellId,\n location: location(directory),\n cursor,\n limit: 1024 * 1024,\n }, requestLocationOptions({ directory, workspaceID }))).data,\n }\n}\n\nexport function createShellStore(apiForInstance: (instanceId: string) => ShellApi) {\n const [states, setStates] = createSignal<Map<string, ShellState>>(new Map())\n const requests = new Map<string, { promise: Promise<void>; dirty: boolean }>()\n const key = (instanceId: string, directory: string, workspaceID?: string) => JSON.stringify([instanceId, directory, workspaceID])\n const setState = (stateKey: string, state: ShellState) => setStates((current) => new Map(current).set(stateKey, state))\n const readState = (stateKey: string): ShellState => untrack(() => states().get(stateKey) ?? EMPTY_STATE)\n\n const load = async (instanceId: string, directory: string, workspaceID?: string, refresh = false): Promise<void> => {\n if (!instanceId || !directory) return\n const stateKey = key(instanceId, directory, workspaceID)\n const pending = requests.get(stateKey)\n if (pending) {\n if (refresh) pending.dirty = true\n return pending.promise\n }\n const request = { promise: Promise.resolve(), dirty: false }\n requests.set(stateKey, request)\n setState(stateKey, { ...readState(stateKey), loading: true, failed: false })\n request.promise = Promise.resolve().then(async () => {\n do {\n request.dirty = false\n try {\n const items = await apiForInstance(instanceId).list(directory, workspaceID)\n if (!request.dirty) setState(stateKey, { items, loading: false, failed: false })\n } catch {\n if (!request.dirty) setState(stateKey, { ...readState(stateKey), loading: false, failed: true })\n }\n } while (request.dirty)\n }).finally(() => requests.delete(stateKey))\n return request.promise\n }\n\n const refreshForEvent = async (instanceId: string, event: ShellRefreshEvent): Promise<void> => {\n if (!SHELL_EVENTS.has(event.type)) return\n const eventDirectory = event.location?.directory ?? event.data?.info?.cwd\n const tracked = Array.from(untrack(states).keys())\n .map((stateKey): [string, string, string | null] => JSON.parse(stateKey))\n .filter(([trackedInstanceId]) => trackedInstanceId === instanceId)\n const matching = eventDirectory ? tracked.filter(([, directory, workspaceID]) => sameDirectory(directory, eventDirectory)\n && (event.location?.workspaceID === undefined || event.location.workspaceID === workspaceID)) : tracked\n await Promise.all((matching.length ? matching : tracked).map(([, directory, workspaceID]) => load(instanceId, directory, workspaceID ?? undefined, true)))\n }\n\n const remove = async (instanceId: string, directory: string, shellId: string, workspaceID?: string): Promise<boolean> => {\n try {\n await apiForInstance(instanceId).remove(directory, shellId, workspaceID)\n await load(instanceId, directory, workspaceID, true)\n return true\n } catch { return false }\n }\n\n const output = (instanceId: string, directory: string, shellId: string, cursor?: number, workspaceID?: string) =>\n apiForInstance(instanceId).output(directory, shellId, cursor, workspaceID)\n const getState = (instanceId: string, directory: string, workspaceID?: string): ShellState => states().get(key(instanceId, directory, workspaceID)) ?? EMPTY_STATE\n return { getState, load, refreshForEvent, remove, output }\n}\n\nfunction sameDirectory(left: string, right: string): boolean {\n const normalize = (value: string) => {\n const normalized = value.replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\")\n return /^[A-Za-z]:\\//.test(normalized) || normalized.startsWith(\"//\") ? normalized.toLowerCase() : normalized\n }\n return normalize(left) === normalize(right)\n}\n","import { serverEvents } from \"../lib/server-events\"\nimport { getRootClient } from \"./opencode-client\"\nimport { createShellApi, createShellStore, type ShellRefreshEvent } from \"./shell-store\"\n\nconst shellStore = createShellStore((instanceId) => createShellApi(getRootClient(instanceId)))\n\nserverEvents.on(\"instance.event\", (event) => {\n if (event.type !== \"instance.event\" || !event.event.type.startsWith(\"shell.\")) return\n void shellStore.refreshForEvent(event.instanceId, event.event as ShellRefreshEvent)\n})\n\nserverEvents.on(\"instance.eventStatus\", (event) => {\n if (event.type !== \"instance.eventStatus\" || event.status !== \"connected\") return\n void shellStore.refreshForEvent(event.instanceId, { type: \"server.connected\" })\n})\n\nexport { shellStore }\n","import { Dialog } from \"@kobalte/core/dialog\"\nimport { Show, createEffect, createSignal, onCleanup } from \"solid-js\"\nimport type { ShellInfo } from \"@opencode/client\"\n\nimport { createAnsiStreamRenderer, hasAnsi } from \"../lib/ansi\"\nimport { useI18n } from \"../lib/i18n\"\nimport { appendShellOutput } from \"../stores/shell-store\"\nimport { shellStore } from \"../stores/shells\"\n\ninterface ShellOutputDialogProps {\n open: boolean\n instanceId: string\n directory: string\n workspaceID?: string\n shell: ShellInfo | null\n onClose: () => void\n}\n\nexport function ShellOutputDialog(props: ShellOutputDialogProps) {\n const { t } = useI18n()\n const [output, setOutput] = createSignal(\"\")\n const [outputHtml, setOutputHtml] = createSignal(\"\")\n const [ansiEnabled, setAnsiEnabled] = createSignal(false)\n const [truncated, setTruncated] = createSignal(false)\n const [loading, setLoading] = createSignal(false)\n\n createEffect(() => {\n const shell = props.shell\n const directory = props.directory\n const workspaceID = props.workspaceID\n if (!props.open || !shell || !directory) return\n\n let active = true\n let cursor = 0\n let raw = \"\"\n let timer: ReturnType<typeof setTimeout> | undefined\n const render = () => {\n const ansi = hasAnsi(raw)\n setAnsiEnabled(ansi)\n if (!ansi) return setOutputHtml(\"\")\n const renderer = createAnsiStreamRenderer()\n setOutputHtml(renderer.render(raw))\n }\n const poll = async () => {\n try {\n const result = await shellStore.output(props.instanceId, directory, shell.id, cursor, workspaceID)\n if (!active) return\n cursor = result.cursor\n if (result.output) {\n const next = appendShellOutput(raw, result.output)\n raw = next.output\n setOutput(raw)\n setTruncated((current) => current || result.truncated || next.truncated)\n render()\n } else if (result.truncated) {\n setTruncated(true)\n }\n } catch {\n if (!active) return\n setOutput(t(\"backgroundProcessOutputDialog.loadErrorFallback\"))\n } finally {\n if (!active) return\n setLoading(false)\n timer = setTimeout(poll, 1000)\n }\n }\n\n setOutput(\"\")\n setOutputHtml(\"\")\n setAnsiEnabled(false)\n setTruncated(false)\n setLoading(true)\n void poll()\n onCleanup(() => {\n active = false\n if (timer) clearTimeout(timer)\n })\n })\n\n return (\n <Dialog open={props.open} onOpenChange={(open) => !open && props.onClose()} modal>\n <Dialog.Portal>\n <Dialog.Overlay class=\"modal-overlay\" />\n <div class=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <Dialog.Content class=\"modal-surface flex max-h-[90vh] w-full max-w-5xl flex-col overflow-hidden\">\n <div class=\"window-header\">\n <div class=\"min-w-0 flex-1\">\n <Dialog.Title class=\"window-title\">{t(\"backgroundProcessOutputDialog.title\")}</Dialog.Title>\n <span class=\"block truncate text-xs text-secondary\" title={props.shell?.command}>{props.shell?.command}</span>\n </div>\n <button type=\"button\" class=\"button-tertiary shrink-0\" onClick={props.onClose}>\n {t(\"backgroundProcessOutputDialog.actions.close\")}\n </button>\n </div>\n <div class=\"window-body\">\n <Show when={loading()}><p class=\"text-xs text-secondary\">{t(\"backgroundProcessOutputDialog.loading\")}</p></Show>\n <Show when={truncated()}><p class=\"mb-2 text-xs text-secondary\">{t(\"backgroundProcessOutputDialog.truncatedNotice\")}</p></Show>\n <Show when={!loading()}>\n <pre\n class=\"border border-base bg-surface-inset p-4 font-mono text-xs text-primary whitespace-pre-wrap break-all\"\n innerHTML={ansiEnabled() ? outputHtml() : undefined}\n >{ansiEnabled() ? undefined : output()}</pre>\n </Show>\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog>\n )\n}\n","import { For, Show, createEffect, createMemo, createSignal, on, type Accessor, type Component } from \"solid-js\"\nimport type { LocationRef, ShellInfo } from \"@opencode/client\"\nimport {\n DragDropProvider,\n DragDropSensors,\n SortableProvider,\n closestCenter,\n createSortable,\n type DragEvent as SolidDndDragEvent,\n} from \"@thisbeyond/solid-dnd\"\nimport { Accordion } from \"@kobalte/core\"\nimport { Tooltip } from \"@kobalte/core/tooltip\"\nimport Switch from \"@suid/material/Switch\"\n\nimport { ChevronRight, GripVertical, Info, TerminalSquare, Trash2, XOctagon } from \"lucide-solid\"\n\nimport type { Instance } from \"../../../../../types/instance\"\nimport type { Session } from \"../../../../../types/session\"\n\nimport ContextUsagePanel from \"../../../../session/context-usage-panel\"\nimport ProviderUsagePanel from \"../../../../session/provider-usage-panel\"\nimport InstanceServiceStatus from \"../../../../instance-service-status\"\nimport { togglePermissionAutoAcceptForSession } from \"../../../../../stores/instances\"\nimport { isPermissionAutoAcceptEnabled } from \"../../../../../stores/permission-auto-accept\"\nimport { applyRightPanelItemCustomization, type RightPanelCustomization, type RightPanelSectionModule } from \"../registry\"\nimport { createCoreStatusSectionManifest } from \"../core-plugin\"\nimport { shellStore } from \"../../../../../stores/shells\"\nimport { showConfirmDialog } from \"../../../../../stores/alerts\"\nimport { showToastNotification } from \"../../../../../lib/notifications\"\nimport { ShellOutputDialog } from \"../../../../shell-output-dialog\"\n\ninterface StatusTabProps {\n t: (key: string, vars?: Record<string, any>) => string\n\n instanceId: string\n instance: Instance\n\n activeSession: Accessor<Session | null>\n\n isActive: Accessor<boolean>\n expandedItems: Accessor<string[]>\n onExpandedItemsChange: (values: string[]) => void\n customization: Accessor<RightPanelCustomization>\n onCustomizationChange: (updater: (current: RightPanelCustomization) => RightPanelCustomization) => void\n extraSections?: readonly RightPanelSectionModule[]\n}\n\ninterface SortableStatusSectionProps {\n section: RightPanelSectionModule\n expanded: boolean\n t: (key: string, vars?: Record<string, any>) => string\n}\n\nconst SortableStatusSection: Component<SortableStatusSectionProps> = (props) => {\n const sortable = createSortable(props.section.id)\n return (\n <div ref={sortable} class={`right-panel-section-draggable ${sortable.isActiveDraggable ? \"right-panel-section-draggable-active\" : \"\"}`}>\n <Accordion.Item value={props.section.id} class=\"right-panel-accordion-item\">\n <Accordion.Header class=\"right-panel-accordion-header-row\">\n <Accordion.Trigger class=\"right-panel-accordion-trigger\">\n <span class=\"section-left\">\n <ChevronRight class=\"right-panel-accordion-chevron disclosure-chevron\" />\n <span class=\"section-label\">{props.t(props.section.labelKey)}</span>\n </span>\n </Accordion.Trigger>\n <Tooltip openDelay={200} gutter={4} placement=\"top\">\n <Tooltip.Trigger as=\"button\" type=\"button\" class=\"section-info-trigger\" aria-label={props.t(props.section.tooltipKey)}>\n <Info class=\"section-info-icon\" />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content class=\"section-info-tooltip\">{props.t(props.section.tooltipKey)}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip>\n <GripVertical class=\"right-panel-section-grip\" aria-hidden=\"true\" />\n </Accordion.Header>\n <Accordion.Content class=\"right-panel-accordion-content\">{props.section.render()}</Accordion.Content>\n </Accordion.Item>\n </div>\n )\n}\n\nconst StatusTab: Component<StatusTabProps> = (props) => {\n const isSectionExpanded = (id: string) => props.expandedItems().includes(id)\n const shellLocation = createMemo(() => props.activeSession()?.location ?? { directory: props.instance.folder })\n const shellState = createMemo(() => shellStore.getState(props.instanceId, shellLocation().directory, shellLocation().workspaceID))\n const [outputShell, setOutputShell] = createSignal<{ shell: ShellInfo; location: LocationRef; instanceId: string } | null>(null)\n\n createEffect(on(\n () => [props.instanceId, shellLocation().directory, shellLocation().workspaceID] as const,\n ([instanceId, directory, workspaceID]) => void shellStore.load(instanceId, directory, workspaceID),\n ))\n\n const renderYoloModeSection = () => {\n const session = props.activeSession()\n if (!session) {\n return (\n <div class=\"right-panel-empty right-panel-empty--left\">\n <span class=\"text-xs\">{props.t(\"instanceShell.yoloMode.noSessionSelected\")}</span>\n </div>\n )\n }\n\n return (\n <div class=\"flex items-center justify-between gap-2 border border-base bg-surface-secondary px-3 py-2\">\n <p class=\"min-w-0 text-xs leading-5 text-secondary\">{props.t(\"instanceShell.yoloMode.description\")}</p>\n <div class=\"-mr-2 shrink-0\">\n <Switch\n class=\"yolo-mode-switch\"\n checked={isPermissionAutoAcceptEnabled(props.instanceId, session.id)}\n size=\"small\"\n sx={{\n \"& .MuiSwitch-switchBase.Mui-checked\": { color: \"var(--session-yolo-accent)\" },\n \"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track\": { backgroundColor: \"var(--session-yolo-accent)\" },\n }}\n inputProps={{ \"aria-label\": props.t(\"instanceShell.yoloMode.title\") }}\n onChange={() => togglePermissionAutoAcceptForSession(props.instanceId, session.id)}\n />\n </div>\n </div>\n )\n }\n\n const removeShell = async (shellId: string, command: string, running: boolean) => {\n const instanceId = props.instanceId\n const location = { ...shellLocation() }\n const confirmed = await showConfirmDialog(\n props.t(\"instanceShell.backgroundProcesses.remove.message\", { title: command }),\n {\n title: props.t(\"instanceShell.backgroundProcesses.remove.title\"),\n confirmLabel: props.t(running\n ? \"instanceShell.backgroundProcesses.actions.stopRemove\"\n : \"instanceShell.backgroundProcesses.actions.remove\"),\n },\n )\n if (confirmed && !await shellStore.remove(instanceId, location.directory, shellId, location.workspaceID)) {\n showToastNotification({ category: \"sessions\", message: props.t(\"instanceShell.backgroundProcesses.error\"), variant: \"error\" })\n }\n }\n\n const renderBackgroundProcesses = () => (\n <Show\n when={!shellState().failed}\n fallback={<div class=\"right-panel-empty right-panel-empty--left\"><span class=\"text-xs\">{props.t(\"instanceShell.backgroundProcesses.error\")}</span></div>}\n >\n <Show\n when={!shellState().loading || shellState().items.length > 0}\n fallback={<div class=\"right-panel-empty right-panel-empty--left\"><span class=\"text-xs\">{props.t(\"instanceShell.backgroundProcesses.loading\")}</span></div>}\n >\n <Show\n when={shellState().items.length > 0}\n fallback={<div class=\"right-panel-empty right-panel-empty--left\"><span class=\"text-xs\">{props.t(\"instanceShell.backgroundProcesses.empty\")}</span></div>}\n >\n <div class=\"flex flex-col gap-1\">\n <For each={shellState().items}>\n {(shell) => {\n const running = () => shell.status === \"running\"\n return (\n <article class=\"status-process-card\">\n <div class=\"flex items-start justify-between gap-2\">\n <div class=\"min-w-0 flex-1\">\n <h4 class=\"truncate text-xs font-medium text-primary\" title={shell.command}>{shell.command}</h4>\n <code class=\"mt-1 block truncate text-xs text-secondary\" title={shell.shell}>{shell.shell}</code>\n </div>\n </div>\n <div class=\"mt-1 flex flex-wrap gap-x-2 gap-y-1 text-xs text-tertiary\">\n <span>{props.t(`instanceShell.backgroundProcesses.status.${shell.status}`)}</span>\n <Show when={shell.pid !== undefined}>\n <span>{props.t(\"instanceShell.backgroundProcesses.pid\", { pid: shell.pid })}</span>\n </Show>\n <Show when={shell.exit !== undefined}>\n <span>{props.t(\"instanceShell.backgroundProcesses.exitCode\", { code: shell.exit })}</span>\n </Show>\n </div>\n <div class=\"mt-1 truncate text-xs text-tertiary\" title={shell.cwd}>{shell.cwd}</div>\n <div class=\"status-process-actions\">\n <button\n type=\"button\"\n class=\"button-tertiary inline-flex w-full items-center justify-center gap-1 p-1\"\n onClick={() => setOutputShell({ shell, location: { ...shellLocation() }, instanceId: props.instanceId })}\n >\n <TerminalSquare class=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n {props.t(\"instanceShell.backgroundProcesses.actions.output\")}\n </button>\n <button\n type=\"button\"\n class=\"button-tertiary inline-flex w-full items-center justify-center gap-1 p-1\"\n disabled={shellState().loading}\n onClick={() => void removeShell(shell.id, shell.command, running())}\n >\n <Show when={running()} fallback={<Trash2 class=\"h-3.5 w-3.5\" aria-hidden=\"true\" />}>\n <XOctagon class=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </Show>\n {props.t(running()\n ? \"instanceShell.backgroundProcesses.actions.stopRemove\"\n : \"instanceShell.backgroundProcesses.actions.remove\")}\n </button>\n </div>\n </article>\n )\n }}\n </For>\n </div>\n </Show>\n </Show>\n </Show>\n )\n\n const renderProviderUsage = () => (\n <Show when={props.activeSession()} fallback={<div class=\"right-panel-empty-text\">{props.t(\"providerUsage.noSession\")}</div>}>\n {(session) => (\n <div class=\"border border-base bg-surface-secondary px-3 py-2\">\n <ProviderUsagePanel instanceId={props.instanceId} sessionId={session().id} directory={session().location.directory}\n providerId={session().model.providerId} modelId={session().model.modelId}\n active={props.isActive() && props.expandedItems().includes(\"provider-usage\")} />\n </div>\n )}\n </Show>\n )\n\n const allStatusSections = createMemo<RightPanelSectionModule[]>(() => {\n const sections = createCoreStatusSectionManifest({\n renderTokens: () => (\n <Show when={props.activeSession()?.id}>\n <ContextUsagePanel instanceId={props.instanceId} sessionId={props.activeSession()!.id} />\n </Show>\n ),\n renderYoloModeSection,\n renderProviderUsage,\n renderBackgroundProcesses,\n renderMcpStatus: () => <InstanceServiceStatus initialInstance={props.instance} sections={[\"mcp\"]} showSectionHeadings={false} class=\"space-y-2\" />,\n renderPluginStatus: () => (\n <InstanceServiceStatus\n initialInstance={props.instance}\n sections={[\"plugins\"]}\n showSectionHeadings={false}\n pluginsActive={props.isActive() && isSectionExpanded(\"plugins\")}\n class=\"space-y-2\"\n />\n ),\n }).statusSections ?? []\n\n return [...sections, ...(props.extraSections ?? [])]\n })\n const statusSections = createMemo<RightPanelSectionModule[]>(() =>\n applyRightPanelItemCustomization(\n allStatusSections(),\n props.customization().statusSectionOrder,\n props.customization().hiddenStatusSectionIds,\n ),\n )\n\n const moveSection = (sourceId: string, targetId: string) => {\n if (!sourceId || sourceId === targetId) return\n const ids = statusSections().map((section) => section.id)\n const sourceIndex = ids.indexOf(sourceId)\n const targetIndex = ids.indexOf(targetId)\n if (sourceIndex === -1 || targetIndex === -1) return\n const next = [...ids]\n const [moved] = next.splice(sourceIndex, 1)\n next.splice(targetIndex, 0, moved)\n props.onCustomizationChange((current) => ({ ...current, statusSectionOrder: next }))\n }\n\n const handleSectionDragEnd = ({ draggable, droppable }: SolidDndDragEvent) => {\n if (!droppable) return\n moveSection(String(draggable.id), String(droppable.id))\n }\n\n return (\n <div class=\"status-tab-container\">\n <Accordion.Root\n class=\"right-panel-accordion\"\n collapsible\n multiple\n value={props.expandedItems()}\n onChange={props.onExpandedItemsChange}\n >\n <DragDropProvider collisionDetector={closestCenter} onDragEnd={handleSectionDragEnd}>\n <DragDropSensors>\n <SortableProvider ids={statusSections().map((section) => section.id)}>\n <For each={statusSections()}>\n {(section) => <SortableStatusSection section={section} expanded={isSectionExpanded(section.id)} t={props.t} />}\n </For>\n </SortableProvider>\n </DragDropSensors>\n </DragDropProvider>\n </Accordion.Root>\n <ShellOutputDialog\n open={Boolean(outputShell())}\n instanceId={outputShell()?.instanceId ?? props.instanceId}\n directory={outputShell()?.location.directory ?? shellLocation().directory}\n workspaceID={outputShell()?.location.workspaceID}\n shell={outputShell()?.shell ?? null}\n onClose={() => setOutputShell(null)}\n />\n </div>\n )\n}\n\nexport default StatusTab\n"],"names":["iconNode","cx","cy","r","key","GripVertical","props","_$createComponent","Icon","_$mergeProps","name","points","d","XOctagon","collapsible_exports","__export","Collapsible","Content","CollapsibleContent","Root","CollapsibleRoot","Trigger","CollapsibleTrigger","useCollapsibleContext","CollapsibleContext","createContext","context","useContext","Error","ref","setRef","createSignal","mergedProps","mergeDefaultProps","id","generateId","local","others","splitProps","present","createPresence","show","shouldMount","element","height","setHeight","width","setWidth","isMountAnimationPrevented","isOpen","onMount","raf","requestAnimationFrame","onCleanup","cancelAnimationFrame","createEffect","on","style","transitionDuration","animationName","rect","getBoundingClientRect","open","defer","registerContentId","Show","when","children","Polymorphic","as","r$","_ref$","mergeRefs","combineStyle","dataset","defaultId","createUniqueId","mergeDefaultProps2","splitProps2","contentId","setContentId","createSignal2","disclosureState","createDisclosureState","defaultOpen","onOpenChange","createMemo","disabled","forceMount","toggle","createGenerateId","createRegisterId","Provider","value","splitProps3","ButtonRoot","_$memo","onClick","e","callHandler","Object","assign","accordion_exports","Accordion","AccordionContent","Header","AccordionHeader","Item","AccordionItem","AccordionRoot","AccordionTrigger","useAccordionContext","AccordionItemContext","useAccordionItemContext","itemContext","role","triggerId","AccordionContext","createContext2","useContext2","accordionContext","setTriggerId","selectionManager","listState","isExpanded","isSelected","registerTriggerId","createUniqueId2","mergeDefaultProps3","multiple","collapsible","shouldFocusWrap","items","setItems","DomCollectionProvider","createDomCollection","onItemsChange","createListState","selectedKeys","defaultSelectedKeys","defaultValue","onSelectionChange","onChange","Array","from","disallowEmptySelection","selectionMode","dataSource","setFocusedKey","selectableList","createSelectableList","collection","disallowTypeAhead","allowsTabNavigation","createGenerateId2","el","onKeyDown","composeEventHandlers","onMouseDown","onFocusIn","onFocusOut","collapsibleContext","mergeDefaultProps4","splitProps4","createDomCollectionItem","getItem","type","textValue","selectableItem","createSelectableItem","shouldSelectOnPressUp","includes","preventDefault","createEffect2","onCleanup2","_ref$2","mergeRefs2","dataKey","onPointerDown","composeEventHandlers2","onPointerUp","onFocus","ContextUsagePanel","t","useI18n","preferences","useConfig","showUsage","showUsageMetrics","info","getSessionInfo","instanceId","sessionId","cost","contextWindow","isSubscriptionModel","inputTokens","outputTokens","reasoningTokens","actualUsageTokens","modelOutputLimit","contextAvailableTokens","getChildSessions","hasChildren","length","threadTotals","getThreadTotals","totalCostDisplay","toFixed","totalInputTokens","totalOutputTokens","totalReasoningTokens","costValue","costDisplay","_el$","_tmpl$2","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_$insert","formatTokenTotal","_el$10","_tmpl$","_el$11","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_$effect","_$className","class","providerUsageKey","source","shouldShowProviderUsageWindow","label","showCreditBalance","createProviderUsageState","fetchUsage","publish","current","generation","running","invalidate","request","REFRESH_INTERVAL_MS","ProviderUsagePanel","active","providerId","trim","modelId","directory","equals","a","b","Boolean","usage","setUsage","state","serverApi","fetchProviderUsage","select","refresh","revalidate","unsubscribeEvents","serverEvents","event","location","lastInstanceStatus","lastTransportStatus","unsubscribeStatus","JSON","stringify","status","unsubscribeTransport","onTransportStatus","refreshTimer","setInterval","dispose","clearInterval","entries","windows","displayedLabels","map","filter","showProviderUsageCreditBalance","windowLabel","scope","indexOf","slice","weekly","daily","monthly","credits","credits_balance","billing_cycle","session","premium","chat","completions","displayValue","window","valueLabel","usedPercent","percent","Math","round","resetLabel","resetAt","date","Date","Number","isFinite","getTime","time","toLocaleString","dateStyle","timeStyle","barColor","undefined","fallback","_tmpl$3","data","supported","configured","ok","unavailableReason","version","_tmpl$4","For","each","previous","_tmpl$6","reset","_tmpl$7","_tmpl$8","_tmpl$5","_p$","_v$","max","min","_v$2","_v$3","_v$4","_$setStyleProperty","_$setAttribute","o","providerName","MAX_SHELL_OUTPUT_DISPLAY_CHARS","appendShellOutput","chunk","output","start","escape","end","controlSequence","index","code","bell","stringTerminator","cancel","terminators","EMPTY_STATE","SHELL_EVENTS","createShellApi","client","workspaceID","requestLocationOptions","shellId","cursor","createShellStore","apiForInstance","states","setStates","requests","setState","stateKey","readState","untrack","load","pending","eventDirectory","_a","_c","_b","tracked","trackedInstanceId","matching","sameDirectory","left","right","normalize","normalized","shellStore","getRootClient","ShellOutputDialog","setOutput","outputHtml","setOutputHtml","ansiEnabled","setAnsiEnabled","truncated","setTruncated","loading","setLoading","shell","raw","timer","render","ansi","hasAnsi","renderer","createAnsiStreamRenderer","poll","result","next","setTimeout","Dialog","onClose","modal","Portal","Overlay","Title","command","_$addEventListener","_c$","innerHTML","_$delegateEvents","SortableStatusSection","sortable","createSortable","section","_$use","ChevronRight","labelKey","Tooltip","openDelay","gutter","placement","tooltipKey","Info","isActiveDraggable","StatusTab","isSectionExpanded","expandedItems","shellLocation","activeSession","instance","folder","shellState","getState","outputShell","setOutputShell","renderYoloModeSection","Switch","checked","isPermissionAutoAcceptEnabled","size","sx","color","backgroundColor","inputProps","togglePermissionAutoAcceptForSession","removeShell","showConfirmDialog","title","confirmLabel","remove","showToastNotification","category","message","variant","renderBackgroundProcesses","failed","_el$23","_el$24","_el$25","_el$26","pid","exit","_el$22","cwd","$$click","TerminalSquare","Trash2","renderProviderUsage","_el$27","_el$28","_tmpl$9","model","isActive","allStatusSections","createCoreStatusSectionManifest","renderTokens","renderMcpStatus","InstanceServiceStatus","initialInstance","sections","showSectionHeadings","renderPluginStatus","pluginsActive","statusSections","extraSections","applyRightPanelItemCustomization","customization","statusSectionOrder","hiddenStatusSectionIds","moveSection","sourceId","targetId","ids","sourceIndex","targetIndex","moved","splice","onCustomizationChange","handleSectionDragEnd","draggable","droppable","String","_el$29","_tmpl$0","onExpandedItemsChange","DragDropProvider","collisionDetector","closestCenter","onDragEnd","DragDropSensors","SortableProvider","expanded"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"StatusTab-CaQz8RwN.js","sources":["../../../../../../node_modules/lucide-solid/dist/source/icons/grip-vertical.jsx","../../../../../../node_modules/lucide-solid/dist/source/icons/x-octagon.jsx","../../../../../../node_modules/@kobalte/core/dist/chunk/UGE6PPGT.jsx","../../../../../../node_modules/@kobalte/core/dist/chunk/PYUMFHDL.jsx","../../../components/session/context-usage-panel.tsx","../../../components/session/provider-usage-state.ts","../../../components/session/provider-usage-panel.tsx","../../../stores/shell-store.ts","../../../stores/shells.ts","../../../components/shell-output-dialog.tsx","../../../components/instance/shell/right-panel/tabs/StatusTab.tsx"],"sourcesContent":["import Icon from '../Icon';\nconst iconNode = [\n ['circle', { cx: '9', cy: '12', r: '1', key: '1vctgf' }],\n ['circle', { cx: '9', cy: '5', r: '1', key: 'hp0tcf' }],\n ['circle', { cx: '9', cy: '19', r: '1', key: 'fkjjf6' }],\n ['circle', { cx: '15', cy: '12', r: '1', key: '1tmaij' }],\n ['circle', { cx: '15', cy: '5', r: '1', key: '19l28e' }],\n ['circle', { cx: '15', cy: '19', r: '1', key: 'f4zoj3' }],\n];\nconst GripVertical = (props) => (<Icon {...props} name=\"GripVertical\" iconNode={iconNode}/>);\nexport default GripVertical;\n","import Icon from '../Icon';\nconst iconNode = [\n [\n 'polygon',\n {\n points: '7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2',\n key: 'h1p8hx',\n },\n ],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n];\nconst XOctagon = (props) => <Icon {...props} name=\"XOctagon\" iconNode={iconNode}/>;\nexport default XOctagon;\n","import {\n createDisclosureState\n} from \"./E53DB7BS.jsx\";\nimport {\n ButtonRoot\n} from \"./UKTBL2JL.jsx\";\nimport {\n createRegisterId\n} from \"./JNCCF6MP.jsx\";\nimport {\n Polymorphic\n} from \"./FLVHQV4A.jsx\";\nimport {\n __export\n} from \"./5WXHJDCZ.jsx\";\n\n// src/collapsible/index.tsx\nvar collapsible_exports = {};\n__export(collapsible_exports, {\n Collapsible: () => Collapsible,\n Content: () => CollapsibleContent,\n Root: () => CollapsibleRoot,\n Trigger: () => CollapsibleTrigger,\n useCollapsibleContext: () => useCollapsibleContext\n});\n\n// src/collapsible/collapsible-content.tsx\nimport { mergeDefaultProps, mergeRefs } from \"@kobalte/utils\";\nimport {\n Show,\n createEffect,\n createSignal,\n on,\n onCleanup,\n onMount,\n splitProps\n} from \"solid-js\";\nimport { combineStyle } from \"@solid-primitives/props\";\nimport createPresence from \"solid-presence\";\n\n// src/collapsible/collapsible-context.tsx\nimport { createContext, useContext } from \"solid-js\";\nvar CollapsibleContext = createContext();\nfunction useCollapsibleContext() {\n const context = useContext(CollapsibleContext);\n if (context === void 0) {\n throw new Error(\n \"[kobalte]: `useCollapsibleContext` must be used within a `Collapsible.Root` component\"\n );\n }\n return context;\n}\n\n// src/collapsible/collapsible-content.tsx\nfunction CollapsibleContent(props) {\n const [ref, setRef] = createSignal();\n const context = useCollapsibleContext();\n const mergedProps = mergeDefaultProps(\n { id: context.generateId(\"content\") },\n props\n );\n const [local, others] = splitProps(mergedProps, [\"ref\", \"id\", \"style\"]);\n const { present } = createPresence({\n show: context.shouldMount,\n element: () => ref() ?? null\n });\n const [height, setHeight] = createSignal(0);\n const [width, setWidth] = createSignal(0);\n const isOpen = () => context.isOpen() || present();\n let isMountAnimationPrevented = isOpen();\n onMount(() => {\n const raf = requestAnimationFrame(() => {\n isMountAnimationPrevented = false;\n });\n onCleanup(() => {\n cancelAnimationFrame(raf);\n });\n });\n createEffect(\n on(\n /**\n * depends on `present` because it will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n present,\n () => {\n if (!ref()) {\n return;\n }\n ref().style.transitionDuration = \"0s\";\n ref().style.animationName = \"none\";\n const rect = ref().getBoundingClientRect();\n setHeight(rect.height);\n setWidth(rect.width);\n if (!isMountAnimationPrevented) {\n ref().style.transitionDuration = \"\";\n ref().style.animationName = \"\";\n }\n }\n )\n );\n createEffect(\n on(\n context.isOpen,\n (open) => {\n if (!open && ref()) {\n ref().style.transitionDuration = \"\";\n ref().style.animationName = \"\";\n }\n },\n { defer: true }\n )\n );\n createEffect(() => onCleanup(context.registerContentId(local.id)));\n return <Show when={present()}><Polymorphic\n as=\"div\"\n ref={mergeRefs(setRef, local.ref)}\n id={local.id}\n style={combineStyle(\n {\n \"--kb-collapsible-content-height\": height() ? `${height()}px` : void 0,\n \"--kb-collapsible-content-width\": width() ? `${width()}px` : void 0\n },\n local.style\n )}\n {...context.dataset()}\n {...others}\n /></Show>;\n}\n\n// src/collapsible/collapsible-root.tsx\nimport {\n createGenerateId,\n mergeDefaultProps as mergeDefaultProps2\n} from \"@kobalte/utils\";\nimport {\n createMemo,\n createSignal as createSignal2,\n createUniqueId,\n splitProps as splitProps2\n} from \"solid-js\";\nfunction CollapsibleRoot(props) {\n const defaultId = `collapsible-${createUniqueId()}`;\n const mergedProps = mergeDefaultProps2(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps2(mergedProps, [\n \"open\",\n \"defaultOpen\",\n \"onOpenChange\",\n \"disabled\",\n \"forceMount\"\n ]);\n const [contentId, setContentId] = createSignal2();\n const disclosureState = createDisclosureState({\n open: () => local.open,\n defaultOpen: () => local.defaultOpen,\n onOpenChange: (isOpen) => local.onOpenChange?.(isOpen)\n });\n const dataset = createMemo(() => ({\n \"data-expanded\": disclosureState.isOpen() ? \"\" : void 0,\n \"data-closed\": !disclosureState.isOpen() ? \"\" : void 0,\n \"data-disabled\": local.disabled ? \"\" : void 0\n }));\n const context = {\n dataset,\n isOpen: disclosureState.isOpen,\n disabled: () => local.disabled ?? false,\n shouldMount: () => local.forceMount || disclosureState.isOpen(),\n contentId,\n toggle: disclosureState.toggle,\n generateId: createGenerateId(() => others.id),\n registerContentId: createRegisterId(setContentId)\n };\n return <CollapsibleContext.Provider value={context}><Polymorphic\n as=\"div\"\n {...dataset()}\n {...others}\n /></CollapsibleContext.Provider>;\n}\n\n// src/collapsible/collapsible-trigger.tsx\nimport { callHandler } from \"@kobalte/utils\";\nimport {\n splitProps as splitProps3\n} from \"solid-js\";\nfunction CollapsibleTrigger(props) {\n const context = useCollapsibleContext();\n const [local, others] = splitProps3(props, [\"onClick\"]);\n const onClick = (e) => {\n callHandler(e, local.onClick);\n context.toggle();\n };\n return <ButtonRoot\n aria-expanded={context.isOpen()}\n aria-controls={context.isOpen() ? context.contentId() : void 0}\n disabled={context.disabled()}\n onClick={onClick}\n {...context.dataset()}\n {...others}\n />;\n}\n\n// src/collapsible/index.tsx\nvar Collapsible = Object.assign(CollapsibleRoot, {\n Content: CollapsibleContent,\n Trigger: CollapsibleTrigger\n});\n\nexport {\n useCollapsibleContext,\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n Collapsible,\n collapsible_exports\n};\n","import {\n createSelectableList\n} from \"./N3GAC5SS.jsx\";\nimport {\n createListState,\n createSelectableItem\n} from \"./QZDH5R5B.jsx\";\nimport {\n CollapsibleContent,\n CollapsibleRoot,\n CollapsibleTrigger,\n useCollapsibleContext\n} from \"./UGE6PPGT.jsx\";\nimport {\n createDomCollection,\n createDomCollectionItem\n} from \"./SOM3K36D.jsx\";\nimport {\n createRegisterId\n} from \"./JNCCF6MP.jsx\";\nimport {\n Polymorphic\n} from \"./FLVHQV4A.jsx\";\nimport {\n __export\n} from \"./5WXHJDCZ.jsx\";\n\n// src/accordion/index.tsx\nvar accordion_exports = {};\n__export(accordion_exports, {\n Accordion: () => Accordion,\n Content: () => AccordionContent,\n Header: () => AccordionHeader,\n Item: () => AccordionItem,\n Root: () => AccordionRoot,\n Trigger: () => AccordionTrigger,\n useAccordionContext: () => useAccordionContext\n});\n\n// src/accordion/accordion-content.tsx\nimport { mergeDefaultProps } from \"@kobalte/utils\";\nimport {\n createEffect,\n onCleanup,\n splitProps\n} from \"solid-js\";\nimport { combineStyle } from \"@solid-primitives/props\";\n\n// src/accordion/accordion-item-context.tsx\nimport { createContext, useContext } from \"solid-js\";\nvar AccordionItemContext = createContext();\nfunction useAccordionItemContext() {\n const context = useContext(AccordionItemContext);\n if (context === void 0) {\n throw new Error(\n \"[kobalte]: `useAccordionItemContext` must be used within a `Accordion.Item` component\"\n );\n }\n return context;\n}\n\n// src/accordion/accordion-content.tsx\nfunction AccordionContent(props) {\n const itemContext = useAccordionItemContext();\n const defaultId = itemContext.generateId(\"content\");\n const mergedProps = mergeDefaultProps(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps(mergedProps, [\"id\", \"style\"]);\n createEffect(() => onCleanup(itemContext.registerContentId(local.id)));\n return <CollapsibleContent\n role=\"region\"\n aria-labelledby={itemContext.triggerId()}\n style={combineStyle(\n {\n \"--kb-accordion-content-height\": \"var(--kb-collapsible-content-height)\",\n \"--kb-accordion-content-width\": \"var(--kb-collapsible-content-width)\"\n },\n local.style\n )}\n {...others}\n />;\n}\n\n// src/accordion/accordion-header.tsx\nfunction AccordionHeader(props) {\n const context = useCollapsibleContext();\n return <Polymorphic\n as=\"h3\"\n {...context.dataset()}\n {...props}\n />;\n}\n\n// src/accordion/accordion-item.tsx\nimport { createGenerateId, mergeDefaultProps as mergeDefaultProps2 } from \"@kobalte/utils\";\nimport {\n createSignal,\n createUniqueId,\n splitProps as splitProps2\n} from \"solid-js\";\n\n// src/accordion/accordion-context.tsx\nimport { createContext as createContext2, useContext as useContext2 } from \"solid-js\";\nvar AccordionContext = createContext2();\nfunction useAccordionContext() {\n const context = useContext2(AccordionContext);\n if (context === void 0) {\n throw new Error(\n \"[kobalte]: `useAccordionContext` must be used within a `Accordion.Root` component\"\n );\n }\n return context;\n}\n\n// src/accordion/accordion-item.tsx\nfunction AccordionItem(props) {\n const accordionContext = useAccordionContext();\n const defaultId = `${accordionContext.generateId(\n \"item\"\n )}-${createUniqueId()}`;\n const mergedProps = mergeDefaultProps2(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps2(mergedProps, [\"value\", \"disabled\"]);\n const [triggerId, setTriggerId] = createSignal();\n const [contentId, setContentId] = createSignal();\n const selectionManager = () => accordionContext.listState().selectionManager();\n const isExpanded = () => {\n return selectionManager().isSelected(local.value);\n };\n const context = {\n value: () => local.value,\n triggerId,\n contentId,\n generateId: createGenerateId(() => others.id),\n registerTriggerId: createRegisterId(setTriggerId),\n registerContentId: createRegisterId(setContentId)\n };\n return <AccordionItemContext.Provider value={context}><CollapsibleRoot\n open={isExpanded()}\n disabled={local.disabled}\n {...others}\n /></AccordionItemContext.Provider>;\n}\n\n// src/accordion/accordion-root.tsx\nimport {\n composeEventHandlers,\n createGenerateId as createGenerateId2,\n mergeDefaultProps as mergeDefaultProps3,\n mergeRefs\n} from \"@kobalte/utils\";\nimport {\n createSignal as createSignal2,\n createUniqueId as createUniqueId2,\n splitProps as splitProps3\n} from \"solid-js\";\nfunction AccordionRoot(props) {\n let ref;\n const defaultId = `accordion-${createUniqueId2()}`;\n const mergedProps = mergeDefaultProps3(\n {\n id: defaultId,\n multiple: false,\n collapsible: false,\n shouldFocusWrap: true\n },\n props\n );\n const [local, others] = splitProps3(mergedProps, [\n \"id\",\n \"ref\",\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"multiple\",\n \"collapsible\",\n \"shouldFocusWrap\",\n \"onKeyDown\",\n \"onMouseDown\",\n \"onFocusIn\",\n // TODO: remove next breaking\n \"onFocusOut\"\n ]);\n const [items, setItems] = createSignal2([]);\n const { DomCollectionProvider } = createDomCollection({\n items,\n onItemsChange: setItems\n });\n const listState = createListState({\n selectedKeys: () => local.value,\n defaultSelectedKeys: () => local.defaultValue,\n onSelectionChange: (value) => local.onChange?.(Array.from(value)),\n disallowEmptySelection: () => !local.multiple && !local.collapsible,\n selectionMode: () => local.multiple ? \"multiple\" : \"single\",\n dataSource: items\n });\n listState.selectionManager().setFocusedKey(\"item-1\");\n const selectableList = createSelectableList(\n {\n selectionManager: () => listState.selectionManager(),\n collection: () => listState.collection(),\n disallowEmptySelection: () => listState.selectionManager().disallowEmptySelection(),\n shouldFocusWrap: () => local.shouldFocusWrap,\n disallowTypeAhead: true,\n allowsTabNavigation: true\n },\n () => ref\n );\n const context = {\n listState: () => listState,\n generateId: createGenerateId2(() => local.id)\n };\n return <DomCollectionProvider><AccordionContext.Provider value={context}><Polymorphic\n as=\"div\"\n id={local.id}\n ref={mergeRefs((el) => ref = el, local.ref)}\n onKeyDown={composeEventHandlers([\n local.onKeyDown,\n selectableList.onKeyDown\n ])}\n onMouseDown={composeEventHandlers([\n local.onMouseDown,\n selectableList.onMouseDown\n ])}\n onFocusIn={composeEventHandlers([\n local.onFocusIn\n // TODO: remove next breaking\n ])}\n onFocusOut={composeEventHandlers([\n local.onFocusOut,\n selectableList.onFocusOut\n ])}\n {...others}\n /></AccordionContext.Provider></DomCollectionProvider>;\n}\n\n// src/accordion/accordion-trigger.tsx\nimport {\n callHandler,\n composeEventHandlers as composeEventHandlers2,\n mergeDefaultProps as mergeDefaultProps4,\n mergeRefs as mergeRefs2\n} from \"@kobalte/utils\";\nimport {\n createEffect as createEffect2,\n onCleanup as onCleanup2,\n splitProps as splitProps4\n} from \"solid-js\";\nfunction AccordionTrigger(props) {\n let ref;\n const accordionContext = useAccordionContext();\n const itemContext = useAccordionItemContext();\n const collapsibleContext = useCollapsibleContext();\n const defaultId = itemContext.generateId(\"trigger\");\n const mergedProps = mergeDefaultProps4(\n { id: defaultId },\n props\n );\n const [local, others] = splitProps4(mergedProps, [\n \"ref\",\n \"onPointerDown\",\n \"onPointerUp\",\n \"onClick\",\n \"onKeyDown\",\n \"onMouseDown\",\n \"onFocus\"\n ]);\n createDomCollectionItem({\n getItem: () => ({\n ref: () => ref,\n type: \"item\",\n key: itemContext.value(),\n textValue: \"\",\n // not applicable here\n disabled: collapsibleContext.disabled()\n })\n });\n const selectableItem = createSelectableItem(\n {\n key: () => itemContext.value(),\n selectionManager: () => accordionContext.listState().selectionManager(),\n disabled: () => collapsibleContext.disabled(),\n shouldSelectOnPressUp: true\n },\n () => ref\n );\n const onKeyDown = (e) => {\n if ([\"Enter\", \" \"].includes(e.key)) {\n e.preventDefault();\n }\n callHandler(e, local.onKeyDown);\n callHandler(e, selectableItem.onKeyDown);\n };\n createEffect2(() => onCleanup2(itemContext.registerTriggerId(others.id)));\n return <CollapsibleTrigger\n ref={mergeRefs2((el) => ref = el, local.ref)}\n data-key={selectableItem.dataKey()}\n onPointerDown={composeEventHandlers2([\n local.onPointerDown,\n selectableItem.onPointerDown\n ])}\n onPointerUp={composeEventHandlers2([\n local.onPointerUp,\n selectableItem.onPointerUp\n ])}\n onClick={composeEventHandlers2([local.onClick, selectableItem.onClick])}\n onKeyDown={onKeyDown}\n onMouseDown={composeEventHandlers2([\n local.onMouseDown,\n selectableItem.onMouseDown\n ])}\n onFocus={composeEventHandlers2([local.onFocus, selectableItem.onFocus])}\n {...others}\n />;\n}\n\n// src/accordion/index.tsx\nvar Accordion = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Header: AccordionHeader,\n Item: AccordionItem,\n Trigger: AccordionTrigger\n});\n\nexport {\n AccordionContent,\n AccordionHeader,\n useAccordionContext,\n AccordionItem,\n AccordionRoot,\n AccordionTrigger,\n Accordion,\n accordion_exports\n};\n","import { createMemo, Show, type Component } from \"solid-js\"\nimport { getChildSessions, getSessionInfo, getThreadTotals } from \"../../stores/sessions\"\nimport { formatTokenTotal } from \"../../lib/formatters\"\nimport { useI18n } from \"../../lib/i18n\"\nimport { useConfig } from \"../../stores/preferences\"\n\ninterface ContextUsagePanelProps {\n instanceId: string\n sessionId: string\n class?: string\n}\n\nconst chipClass = \"badge-shape inline-flex items-center gap-1 border border-base px-2 py-0.5 text-xs text-primary\"\nconst chipLabelClass = \"uppercase text-[10px] tracking-wide text-muted\"\n\nconst ContextUsagePanel: Component<ContextUsagePanelProps> = (props) => {\n const { t } = useI18n()\n const { preferences } = useConfig()\n const showUsage = createMemo(() => preferences().showUsageMetrics ?? true)\n const info = createMemo(\n () =>\n getSessionInfo(props.instanceId, props.sessionId) ?? {\n cost: 0,\n contextWindow: 0,\n isSubscriptionModel: false,\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n actualUsageTokens: 0,\n modelOutputLimit: 0,\n contextAvailableTokens: null,\n },\n )\n\n const children = createMemo(() => getChildSessions(props.instanceId, props.sessionId))\n const hasChildren = createMemo(() => children().length > 0)\n\n const threadTotals = createMemo(() => {\n if (!hasChildren()) return { cost: 0, inputTokens: 0, outputTokens: 0, reasoningTokens: 0 }\n return getThreadTotals(props.instanceId, props.sessionId) ?? { cost: 0, inputTokens: 0, outputTokens: 0, reasoningTokens: 0 }\n })\n\n const totalCostDisplay = createMemo(() => `$${threadTotals().cost.toFixed(2)}`)\n\n const totalInputTokens = createMemo(() => threadTotals().inputTokens)\n const totalOutputTokens = createMemo(() => threadTotals().outputTokens)\n const totalReasoningTokens = createMemo(() => threadTotals().reasoningTokens)\n\n const inputTokens = createMemo(() => info().inputTokens ?? 0)\n const outputTokens = createMemo(() => info().outputTokens ?? 0)\n const costValue = createMemo(() => {\n const value = info().isSubscriptionModel ? 0 : info().cost\n return value > 0 ? value : 0\n })\n\n const costDisplay = createMemo(() => info().isSubscriptionModel ? t(\"contextUsagePanel.included\") : `$${costValue().toFixed(2)}`)\n\n return (\n <div class={`session-context-panel px-4 py-2 ${props.class ?? \"\"}`}>\n <div class=\"flex flex-wrap items-center gap-2 text-xs text-primary opacity-50\">\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.input\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(inputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.output\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(outputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.cost\")}</span>\n <span class=\"font-semibold text-primary\">{costDisplay()}</span>\n </div>\n <Show when={hasChildren() && showUsage()}>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalInput\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(totalInputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalOutput\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(totalOutputTokens())}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalCost\")}</span>\n <span class=\"font-semibold text-primary\">{totalCostDisplay()}</span>\n </div>\n <div class={chipClass}>\n <span class={chipLabelClass}>{t(\"contextUsagePanel.labels.totalReasoning\")}</span>\n <span class=\"font-semibold text-primary\">{formatTokenTotal(totalReasoningTokens())}</span>\n </div>\n </Show>\n </div>\n </div>\n )\n}\n\nexport default ContextUsagePanel\n","import type { ProviderUsageResponse } from \"../../../../server/src/api-types\"\n\nexport interface ProviderUsageSource {\n instanceId: string\n sessionId: string\n directory: string\n providerId: string\n modelId: string\n}\n\nexport const providerUsageKey = (source: ProviderUsageSource) => JSON.stringify([\n source.instanceId, source.sessionId, source.directory, source.providerId, source.modelId,\n])\n\nexport const shouldShowProviderUsageWindow = (label: string, showCreditBalance: boolean) =>\n label !== \"credits_balance\" || showCreditBalance\n\n// The display snapshot is local to the mounted panel. Do not restore a global\n// browser cache before the server can revalidate the native selected account.\nexport function createProviderUsageState(\n fetchUsage: (source: ProviderUsageSource) => Promise<ProviderUsageResponse>,\n publish: (value: ProviderUsageResponse | null | undefined) => void,\n) {\n let current: ProviderUsageSource | null = null\n let generation = 0\n let running: { generation: number; again: boolean; promise: Promise<void> } | null = null\n const invalidate = () => { generation++; running = null; publish(undefined) }\n const refresh = (): Promise<void> => {\n const source = current\n if (!source) return Promise.resolve()\n if (running) {\n running.again = true\n return running.promise\n }\n const request = { generation, again: false, promise: Promise.resolve() }\n running = request\n request.promise = (async () => {\n try {\n do {\n request.again = false\n try {\n const value = await fetchUsage(source)\n if (generation === request.generation) publish(value)\n } catch {\n if (generation === request.generation) publish(null)\n }\n } while (request.again && generation === request.generation)\n } finally {\n if (running === request) running = null\n }\n })()\n return request.promise\n }\n return {\n select(source: ProviderUsageSource | null) {\n if (source && current && providerUsageKey(source) === providerUsageKey(current)) return\n current = source\n invalidate()\n },\n invalidate,\n refresh,\n dispose() { current = null; generation++; running = null },\n }\n}\n","import { For, Show, createEffect, createMemo, createSignal, onCleanup, type Component } from \"solid-js\"\n\nimport type { ProviderUsageResponse, ProviderUsageWindow } from \"../../../../server/src/api-types\"\nimport { serverApi } from \"../../lib/api-client\"\nimport { useI18n } from \"../../lib/i18n\"\nimport { useConfig } from \"../../stores/preferences\"\nimport { serverEvents } from \"../../lib/server-events\"\nimport { createProviderUsageState, providerUsageKey, shouldShowProviderUsageWindow, type ProviderUsageSource } from \"./provider-usage-state\"\n\ninterface ProviderUsagePanelProps {\n instanceId: string\n sessionId: string\n directory: string\n active: boolean\n providerId: string\n modelId: string\n}\n\nconst REFRESH_INTERVAL_MS = 60_000\n\nconst ProviderUsagePanel: Component<ProviderUsagePanelProps> = (props) => {\n const { t } = useI18n()\n const { preferences } = useConfig()\n const source = createMemo<ProviderUsageSource | null>(() => {\n if (!props.active) return null\n const providerId = props.providerId.trim()\n if (!providerId) return null\n const modelId = props.modelId.trim()\n return { instanceId: props.instanceId, sessionId: props.sessionId, directory: props.directory, providerId, modelId }\n }, null, { equals: (a, b) => a === b || Boolean(a && b && providerUsageKey(a) === providerUsageKey(b)) })\n const [usage, setUsage] = createSignal<ProviderUsageResponse | null | undefined>()\n const state = createProviderUsageState(current => serverApi.fetchProviderUsage(\n current.instanceId, current.sessionId, current.providerId, current.modelId,\n ), value => setUsage(value))\n\n createEffect(() => {\n state.select(source())\n void state.refresh()\n })\n\n const revalidate = () => { state.invalidate(); if (source()) void state.refresh() }\n const unsubscribeEvents = serverEvents.on(\"instance.event\", event => {\n if (event.type !== \"instance.event\" || event.instanceId !== props.instanceId) return\n if (event.event.type === \"provider.updated\") {\n // Catalogue churn is not a credential switch. Revalidate in place only\n // for this native location; account/config/connection boundaries below\n // still revoke the display immediately and fence pending reads.\n if (source() && (!event.event.location || event.event.location.directory === props.directory)) void state.refresh()\n } else if ([\"credential.updated\", \"credential.switched\", \"integration.updated\", \"config.updated\", \"server.connected\"].includes(event.event.type)) revalidate()\n })\n let lastInstanceStatus: string | undefined\n let lastTransportStatus: string | undefined\n const unsubscribeStatus = serverEvents.on(\"instance.eventStatus\", event => {\n if (event.type !== \"instance.eventStatus\" || event.instanceId !== props.instanceId) return\n // Repeated status snapshots are not reconnects. Include the native stream\n // generation so a new connection still fences quotas if its loss was missed.\n const key = JSON.stringify([event.instanceId, event.status, event.generation])\n if (key === lastInstanceStatus) return\n lastInstanceStatus = key\n state.invalidate()\n if (event.status === \"connected\" && source()) void state.refresh()\n })\n const unsubscribeTransport = serverEvents.onTransportStatus(status => {\n if (status === lastTransportStatus) return\n lastTransportStatus = status\n state.invalidate()\n if (status === \"connected\" && source()) void state.refresh()\n })\n const refreshTimer = setInterval(() => { if (source()) void state.refresh() }, REFRESH_INTERVAL_MS)\n onCleanup(() => {\n state.dispose()\n clearInterval(refreshTimer)\n unsubscribeEvents()\n unsubscribeStatus()\n unsubscribeTransport()\n })\n\n const entries = createMemo(() => Object.entries(usage()?.windows ?? {}))\n const displayedLabels = createMemo(() =>\n entries().map(([label]) => label).filter(label => shouldShowProviderUsageWindow(label, preferences().showProviderUsageCreditBalance)),\n )\n\n const windowLabel = (label: string): string => {\n // Model-scoped limits arrive as `window:Model`, e.g. `7d:Opus`.\n const scope = label.indexOf(\":\")\n if (scope > 0) return `${windowLabel(label.slice(0, scope))} · ${label.slice(scope + 1)}`\n const key = ({\n \"5h\": \"fiveHours\",\n \"7d\": \"sevenDays\",\n \"7d-sonnet\": \"sevenDaysSonnet\",\n \"7d-opus\": \"sevenDaysOpus\",\n weekly: \"weekly\",\n daily: \"daily\",\n monthly: \"monthly\",\n credits: \"credits\",\n credits_balance: \"credits\",\n billing_cycle: \"billingCycle\",\n session: \"session\",\n premium: \"premium\",\n chat: \"chat\",\n completions: \"completions\",\n \"mcp-tools\": \"mcpTools\",\n } as Record<string, string>)[label]\n return key ? t(`providerUsage.windows.${key}`) : label\n }\n\n const displayValue = (window: ProviderUsageWindow) => {\n if (window.valueLabel) return window.valueLabel\n if (window.usedPercent === null) return t(\"providerUsage.unavailableValue\")\n return t(\"providerUsage.usedPercent\", { percent: Math.round(window.usedPercent) })\n }\n\n const resetLabel = (resetAt: number | null) => {\n if (!resetAt) return null\n const date = new Date(resetAt)\n if (!Number.isFinite(date.getTime())) return null\n return t(\"providerUsage.resets\", { time: date.toLocaleString([], { dateStyle: \"short\", timeStyle: \"short\" }) })\n }\n\n const barColor = (percent: number | null) => {\n if (percent !== null && percent >= 80) return \"var(--status-error)\"\n if (percent !== null && percent >= 50) return \"var(--status-warning)\"\n return \"var(--status-success)\"\n }\n\n return (\n <div>\n <Show when={usage() !== undefined} fallback={<div class=\"right-panel-empty-text\">{t(\"providerUsage.loading\")}</div>}>\n <Show when={usage()} fallback={<div class=\"right-panel-empty-text\">{t(\"providerUsage.unavailable\")}</div>}>\n {(data) => (\n <Show\n when={data().supported && data().configured && data().ok && entries().length > 0}\n fallback={\n <div class=\"right-panel-empty-text\">\n {t(\n !data().supported\n ? \"providerUsage.unsupported\"\n : !data().configured\n ? \"providerUsage.notConfigured\"\n : data().unavailableReason === \"native-credential-api-unavailable\"\n ? \"providerUsage.nativeCredentialApiUnavailable\"\n : data().unavailableReason === \"openai-token-sharing-unsupported\"\n ? \"providerUsage.openaiTokenSharingUnsupported\"\n : \"providerUsage.unavailable\",\n { version: \"2.0.20\" },\n )}\n </div>\n }\n >\n <div class=\"space-y-2\">\n <For each={displayedLabels()}>\n {(label) => {\n // Retain this row's value until For reconciles a removed\n // label; its effects must not read an absent window.\n const window = createMemo<ProviderUsageWindow>(previous => usage()?.windows[label] ?? previous, usage()!.windows[label])\n return (\n <div>\n <div class=\"mb-1 flex items-baseline justify-between gap-2 text-[11px] text-primary\">\n <span class=\"font-medium\">{windowLabel(label)}</span>\n <div class=\"flex min-w-0 items-baseline gap-1.5 text-right\">\n <span class=\"shrink-0 font-medium\">{displayValue(window())}</span>\n <Show when={resetLabel(window().resetAt)}>\n {(reset) => (\n <>\n <span class=\"text-tertiary\" aria-hidden=\"true\">·</span>\n <span class=\"truncate text-[10px] text-tertiary\">{reset()}</span>\n </>\n )}\n </Show>\n </div>\n </div>\n <Show when={window().usedPercent !== null}>\n <div class=\"h-2 overflow-hidden border border-base\" style={{ \"background-color\": \"var(--surface-inset)\" }}>\n <div\n class=\"h-full transition-[width] duration-300\"\n style={{ width: `${Math.max(0, Math.min(100, window().usedPercent ?? 0))}%`, \"background-color\": barColor(window().usedPercent) }}\n role=\"progressbar\"\n aria-label={t(\"providerUsage.progressLabel\", { window: windowLabel(label) })}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(window().usedPercent ?? 0)}\n />\n </div>\n </Show>\n </div>\n )\n }}\n </For>\n </div>\n </Show>\n )}\n </Show>\n </Show>\n <Show when={usage()?.supported && usage()?.configured && usage()?.ok && entries().length > 0}>\n <div class=\"mt-2 truncate text-right text-sm font-semibold text-secondary\">{usage()?.providerName ?? props.providerId}</div>\n </Show>\n </div>\n )\n}\n\nexport default ProviderUsagePanel\n","import { createSignal, untrack } from \"solid-js\"\nimport type { OpenCodeClient, ShellInfo } from \"@opencode/client\"\nimport { requestLocationOptions } from \"./request-locations\"\n\nconst MAX_SHELL_OUTPUT_DISPLAY_CHARS = 4 * 1024 * 1024\n\nexport function appendShellOutput(current: string, chunk: string): { output: string; truncated: boolean } {\n const output = current + chunk\n if (output.length <= MAX_SHELL_OUTPUT_DISPLAY_CHARS) return { output, truncated: false }\n\n let start = output.length - MAX_SHELL_OUTPUT_DISPLAY_CHARS\n if (output.charCodeAt(start) >= 0xdc00 && output.charCodeAt(start) <= 0xdfff) start += 1\n if (output[start] === \"\\u001b\" && output[start + 1] === \"\\\\\") start += 2\n else if (output[start] === \"\\\\\" && output[start - 1] === \"\\u001b\") start += 1\n const escape = output.lastIndexOf(\"\\u001b\", start)\n if (escape >= 0) {\n let end = -1\n let controlSequence = false\n if (output[escape + 1] === \"[\") {\n controlSequence = true\n for (let index = escape + 2; index < output.length; index += 1) {\n const code = output.charCodeAt(index)\n if (code === 0x18 || code === 0x1a) {\n end = index + 1\n break\n }\n if (code >= 0x40 && code <= 0x7e) {\n end = index + 1\n break\n }\n }\n } else if (output[escape + 1] === \"]\") {\n controlSequence = true\n const bell = output.indexOf(\"\\u0007\", escape + 2)\n const stringTerminator = output.indexOf(\"\\u001b\\\\\", escape + 2)\n const cancel = output.slice(escape + 2).search(/[\\u0018\\u001a]/)\n const terminators = [bell < 0 ? Infinity : bell + 1, stringTerminator < 0 ? Infinity : stringTerminator + 2, cancel < 0 ? Infinity : escape + 3 + cancel]\n end = Math.min(...terminators)\n if (!Number.isFinite(end)) end = -1\n } else if ([\"P\", \"X\", \"^\", \"_\"].includes(output[escape + 1] ?? \"\")) {\n controlSequence = true\n const stringTerminator = output.indexOf(\"\\u001b\\\\\", escape + 2)\n const cancel = output.slice(escape + 2).search(/[\\u0018\\u001a]/)\n end = Math.min(stringTerminator < 0 ? Infinity : stringTerminator + 2, cancel < 0 ? Infinity : escape + 3 + cancel)\n if (!Number.isFinite(end)) end = -1\n }\n if (controlSequence && end >= start) start = end\n else if (controlSequence && end < 0 && escape < start) start = output.length\n }\n return { output: output.slice(start), truncated: true }\n}\n\nexport interface ShellApi {\n list(directory: string, workspaceID?: string): Promise<ShellInfo[]>\n remove(directory: string, shellId: string, workspaceID?: string): Promise<void>\n output(directory: string, shellId: string, cursor?: number, workspaceID?: string): Promise<{ output: string; cursor: number; size: number; truncated: boolean }>\n}\n\nexport interface ShellState {\n items: ShellInfo[]\n loading: boolean\n failed: boolean\n}\n\nexport interface ShellRefreshEvent {\n type: string\n location?: { directory?: string; workspaceID?: string }\n data?: { info?: { cwd?: string } }\n}\n\nconst EMPTY_STATE: ShellState = { items: [], loading: false, failed: false }\nconst SHELL_EVENTS = new Set([\"shell.created\", \"shell.exited\", \"shell.deleted\", \"server.connected\"])\n\nexport function createShellApi(client: OpenCodeClient): ShellApi {\n const location = (directory: string) => ({ directory })\n return {\n list: async (directory, workspaceID) => (await client.shell.list({ location: location(directory) }, requestLocationOptions({ directory, workspaceID }))).data,\n remove: (directory, shellId, workspaceID) => client.shell.remove({ id: shellId, location: location(directory) }, requestLocationOptions({ directory, workspaceID })),\n output: async (directory, shellId, cursor = 0, workspaceID) => (await client.shell.output({\n id: shellId,\n location: location(directory),\n cursor,\n limit: 1024 * 1024,\n }, requestLocationOptions({ directory, workspaceID }))).data,\n }\n}\n\nexport function createShellStore(apiForInstance: (instanceId: string) => ShellApi) {\n const [states, setStates] = createSignal<Map<string, ShellState>>(new Map())\n const requests = new Map<string, { promise: Promise<void>; dirty: boolean }>()\n const key = (instanceId: string, directory: string, workspaceID?: string) => JSON.stringify([instanceId, directory, workspaceID])\n const setState = (stateKey: string, state: ShellState) => setStates((current) => new Map(current).set(stateKey, state))\n const readState = (stateKey: string): ShellState => untrack(() => states().get(stateKey) ?? EMPTY_STATE)\n\n const load = async (instanceId: string, directory: string, workspaceID?: string, refresh = false): Promise<void> => {\n if (!instanceId || !directory) return\n const stateKey = key(instanceId, directory, workspaceID)\n const pending = requests.get(stateKey)\n if (pending) {\n if (refresh) pending.dirty = true\n return pending.promise\n }\n const request = { promise: Promise.resolve(), dirty: false }\n requests.set(stateKey, request)\n setState(stateKey, { ...readState(stateKey), loading: true, failed: false })\n request.promise = Promise.resolve().then(async () => {\n do {\n request.dirty = false\n try {\n const items = await apiForInstance(instanceId).list(directory, workspaceID)\n if (!request.dirty) setState(stateKey, { items, loading: false, failed: false })\n } catch {\n if (!request.dirty) setState(stateKey, { ...readState(stateKey), loading: false, failed: true })\n }\n } while (request.dirty)\n }).finally(() => requests.delete(stateKey))\n return request.promise\n }\n\n const refreshForEvent = async (instanceId: string, event: ShellRefreshEvent): Promise<void> => {\n if (!SHELL_EVENTS.has(event.type)) return\n const eventDirectory = event.location?.directory ?? event.data?.info?.cwd\n const tracked = Array.from(untrack(states).keys())\n .map((stateKey): [string, string, string | null] => JSON.parse(stateKey))\n .filter(([trackedInstanceId]) => trackedInstanceId === instanceId)\n const matching = eventDirectory ? tracked.filter(([, directory, workspaceID]) => sameDirectory(directory, eventDirectory)\n && (event.location?.workspaceID === undefined || event.location.workspaceID === workspaceID)) : tracked\n await Promise.all((matching.length ? matching : tracked).map(([, directory, workspaceID]) => load(instanceId, directory, workspaceID ?? undefined, true)))\n }\n\n const remove = async (instanceId: string, directory: string, shellId: string, workspaceID?: string): Promise<boolean> => {\n try {\n await apiForInstance(instanceId).remove(directory, shellId, workspaceID)\n await load(instanceId, directory, workspaceID, true)\n return true\n } catch { return false }\n }\n\n const output = (instanceId: string, directory: string, shellId: string, cursor?: number, workspaceID?: string) =>\n apiForInstance(instanceId).output(directory, shellId, cursor, workspaceID)\n const getState = (instanceId: string, directory: string, workspaceID?: string): ShellState => states().get(key(instanceId, directory, workspaceID)) ?? EMPTY_STATE\n return { getState, load, refreshForEvent, remove, output }\n}\n\nfunction sameDirectory(left: string, right: string): boolean {\n const normalize = (value: string) => {\n const normalized = value.replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\")\n return /^[A-Za-z]:\\//.test(normalized) || normalized.startsWith(\"//\") ? normalized.toLowerCase() : normalized\n }\n return normalize(left) === normalize(right)\n}\n","import { serverEvents } from \"../lib/server-events\"\nimport { getRootClient } from \"./opencode-client\"\nimport { createShellApi, createShellStore, type ShellRefreshEvent } from \"./shell-store\"\n\nconst shellStore = createShellStore((instanceId) => createShellApi(getRootClient(instanceId)))\n\nserverEvents.on(\"instance.event\", (event) => {\n if (event.type !== \"instance.event\" || !event.event.type.startsWith(\"shell.\")) return\n void shellStore.refreshForEvent(event.instanceId, event.event as ShellRefreshEvent)\n})\n\nserverEvents.on(\"instance.eventStatus\", (event) => {\n if (event.type !== \"instance.eventStatus\" || event.status !== \"connected\") return\n void shellStore.refreshForEvent(event.instanceId, { type: \"server.connected\" })\n})\n\nexport { shellStore }\n","import { Dialog } from \"@kobalte/core/dialog\"\nimport { Show, createEffect, createSignal, onCleanup } from \"solid-js\"\nimport type { ShellInfo } from \"@opencode/client\"\n\nimport { createAnsiStreamRenderer, hasAnsi } from \"../lib/ansi\"\nimport { useI18n } from \"../lib/i18n\"\nimport { appendShellOutput } from \"../stores/shell-store\"\nimport { shellStore } from \"../stores/shells\"\n\ninterface ShellOutputDialogProps {\n open: boolean\n instanceId: string\n directory: string\n workspaceID?: string\n shell: ShellInfo | null\n onClose: () => void\n}\n\nexport function ShellOutputDialog(props: ShellOutputDialogProps) {\n const { t } = useI18n()\n const [output, setOutput] = createSignal(\"\")\n const [outputHtml, setOutputHtml] = createSignal(\"\")\n const [ansiEnabled, setAnsiEnabled] = createSignal(false)\n const [truncated, setTruncated] = createSignal(false)\n const [loading, setLoading] = createSignal(false)\n\n createEffect(() => {\n const shell = props.shell\n const directory = props.directory\n const workspaceID = props.workspaceID\n if (!props.open || !shell || !directory) return\n\n let active = true\n let cursor = 0\n let raw = \"\"\n let timer: ReturnType<typeof setTimeout> | undefined\n const render = () => {\n const ansi = hasAnsi(raw)\n setAnsiEnabled(ansi)\n if (!ansi) return setOutputHtml(\"\")\n const renderer = createAnsiStreamRenderer()\n setOutputHtml(renderer.render(raw))\n }\n const poll = async () => {\n try {\n const result = await shellStore.output(props.instanceId, directory, shell.id, cursor, workspaceID)\n if (!active) return\n cursor = result.cursor\n if (result.output) {\n const next = appendShellOutput(raw, result.output)\n raw = next.output\n setOutput(raw)\n setTruncated((current) => current || result.truncated || next.truncated)\n render()\n } else if (result.truncated) {\n setTruncated(true)\n }\n } catch {\n if (!active) return\n setOutput(t(\"backgroundProcessOutputDialog.loadErrorFallback\"))\n } finally {\n if (!active) return\n setLoading(false)\n timer = setTimeout(poll, 1000)\n }\n }\n\n setOutput(\"\")\n setOutputHtml(\"\")\n setAnsiEnabled(false)\n setTruncated(false)\n setLoading(true)\n void poll()\n onCleanup(() => {\n active = false\n if (timer) clearTimeout(timer)\n })\n })\n\n return (\n <Dialog open={props.open} onOpenChange={(open) => !open && props.onClose()} modal>\n <Dialog.Portal>\n <Dialog.Overlay class=\"modal-overlay\" />\n <div class=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <Dialog.Content class=\"modal-surface flex max-h-[90vh] w-full max-w-5xl flex-col overflow-hidden\">\n <div class=\"window-header\">\n <div class=\"min-w-0 flex-1\">\n <Dialog.Title class=\"window-title\">{t(\"backgroundProcessOutputDialog.title\")}</Dialog.Title>\n <span class=\"block truncate text-xs text-secondary\" title={props.shell?.command}>{props.shell?.command}</span>\n </div>\n <button type=\"button\" class=\"button-tertiary shrink-0\" onClick={props.onClose}>\n {t(\"backgroundProcessOutputDialog.actions.close\")}\n </button>\n </div>\n <div class=\"window-body\">\n <Show when={loading()}><p class=\"text-xs text-secondary\">{t(\"backgroundProcessOutputDialog.loading\")}</p></Show>\n <Show when={truncated()}><p class=\"mb-2 text-xs text-secondary\">{t(\"backgroundProcessOutputDialog.truncatedNotice\")}</p></Show>\n <Show when={!loading()}>\n <pre\n class=\"border border-base bg-surface-inset p-4 font-mono text-xs text-primary whitespace-pre-wrap break-all\"\n innerHTML={ansiEnabled() ? outputHtml() : undefined}\n >{ansiEnabled() ? undefined : output()}</pre>\n </Show>\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog>\n )\n}\n","import { For, Show, createEffect, createMemo, createSignal, on, type Accessor, type Component } from \"solid-js\"\nimport type { LocationRef, ShellInfo } from \"@opencode/client\"\nimport {\n DragDropProvider,\n DragDropSensors,\n SortableProvider,\n closestCenter,\n createSortable,\n type DragEvent as SolidDndDragEvent,\n} from \"@thisbeyond/solid-dnd\"\nimport { Accordion } from \"@kobalte/core\"\nimport { Tooltip } from \"@kobalte/core/tooltip\"\nimport Switch from \"@suid/material/Switch\"\n\nimport { ChevronRight, GripVertical, Info, TerminalSquare, Trash2, XOctagon } from \"lucide-solid\"\n\nimport type { Instance } from \"../../../../../types/instance\"\nimport type { Session } from \"../../../../../types/session\"\n\nimport ContextUsagePanel from \"../../../../session/context-usage-panel\"\nimport ProviderUsagePanel from \"../../../../session/provider-usage-panel\"\nimport InstanceServiceStatus from \"../../../../instance-service-status\"\nimport { togglePermissionAutoAcceptForSession } from \"../../../../../stores/instances\"\nimport { isPermissionAutoAcceptEnabled } from \"../../../../../stores/permission-auto-accept\"\nimport { applyRightPanelItemCustomization, type RightPanelCustomization, type RightPanelSectionModule } from \"../registry\"\nimport { createCoreStatusSectionManifest } from \"../core-plugin\"\nimport { shellStore } from \"../../../../../stores/shells\"\nimport { showConfirmDialog } from \"../../../../../stores/alerts\"\nimport { showToastNotification } from \"../../../../../lib/notifications\"\nimport { ShellOutputDialog } from \"../../../../shell-output-dialog\"\n\ninterface StatusTabProps {\n t: (key: string, vars?: Record<string, any>) => string\n\n instanceId: string\n instance: Instance\n\n activeSession: Accessor<Session | null>\n\n isActive: Accessor<boolean>\n expandedItems: Accessor<string[]>\n onExpandedItemsChange: (values: string[]) => void\n customization: Accessor<RightPanelCustomization>\n onCustomizationChange: (updater: (current: RightPanelCustomization) => RightPanelCustomization) => void\n extraSections?: readonly RightPanelSectionModule[]\n}\n\ninterface SortableStatusSectionProps {\n section: RightPanelSectionModule\n expanded: boolean\n t: (key: string, vars?: Record<string, any>) => string\n}\n\nconst SortableStatusSection: Component<SortableStatusSectionProps> = (props) => {\n const sortable = createSortable(props.section.id)\n return (\n <div ref={sortable} class={`right-panel-section-draggable ${sortable.isActiveDraggable ? \"right-panel-section-draggable-active\" : \"\"}`}>\n <Accordion.Item value={props.section.id} class=\"right-panel-accordion-item\">\n <Accordion.Header class=\"right-panel-accordion-header-row\">\n <Accordion.Trigger class=\"right-panel-accordion-trigger\">\n <span class=\"section-left\">\n <ChevronRight class=\"right-panel-accordion-chevron disclosure-chevron\" />\n <span class=\"section-label\">{props.t(props.section.labelKey)}</span>\n </span>\n </Accordion.Trigger>\n <Tooltip openDelay={200} gutter={4} placement=\"top\">\n <Tooltip.Trigger as=\"button\" type=\"button\" class=\"section-info-trigger\" aria-label={props.t(props.section.tooltipKey)}>\n <Info class=\"section-info-icon\" />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content class=\"section-info-tooltip\">{props.t(props.section.tooltipKey)}</Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip>\n <GripVertical class=\"right-panel-section-grip\" aria-hidden=\"true\" />\n </Accordion.Header>\n <Accordion.Content class=\"right-panel-accordion-content\">{props.section.render()}</Accordion.Content>\n </Accordion.Item>\n </div>\n )\n}\n\nconst StatusTab: Component<StatusTabProps> = (props) => {\n const isSectionExpanded = (id: string) => props.expandedItems().includes(id)\n const shellLocation = createMemo(() => props.activeSession()?.location ?? { directory: props.instance.folder })\n const shellState = createMemo(() => shellStore.getState(props.instanceId, shellLocation().directory, shellLocation().workspaceID))\n const [outputShell, setOutputShell] = createSignal<{ shell: ShellInfo; location: LocationRef; instanceId: string } | null>(null)\n\n createEffect(on(\n () => [props.instanceId, shellLocation().directory, shellLocation().workspaceID] as const,\n ([instanceId, directory, workspaceID]) => void shellStore.load(instanceId, directory, workspaceID),\n ))\n\n const renderYoloModeSection = () => {\n const session = props.activeSession()\n if (!session) {\n return (\n <div class=\"right-panel-empty right-panel-empty--left\">\n <span class=\"text-xs\">{props.t(\"instanceShell.yoloMode.noSessionSelected\")}</span>\n </div>\n )\n }\n\n return (\n <div class=\"flex items-center justify-between gap-2 border border-base bg-surface-secondary px-3 py-2\">\n <p class=\"min-w-0 text-xs leading-5 text-secondary\">{props.t(\"instanceShell.yoloMode.description\")}</p>\n <div class=\"-mr-2 shrink-0\">\n <Switch\n class=\"yolo-mode-switch\"\n checked={isPermissionAutoAcceptEnabled(props.instanceId, session.id)}\n size=\"small\"\n sx={{\n \"& .MuiSwitch-switchBase.Mui-checked\": { color: \"var(--session-yolo-accent)\" },\n \"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track\": { backgroundColor: \"var(--session-yolo-accent)\" },\n }}\n inputProps={{ \"aria-label\": props.t(\"instanceShell.yoloMode.title\") }}\n onChange={() => togglePermissionAutoAcceptForSession(props.instanceId, session.id)}\n />\n </div>\n </div>\n )\n }\n\n const removeShell = async (shellId: string, command: string, running: boolean) => {\n const instanceId = props.instanceId\n const location = { ...shellLocation() }\n const confirmed = await showConfirmDialog(\n props.t(\"instanceShell.backgroundProcesses.remove.message\", { title: command }),\n {\n title: props.t(\"instanceShell.backgroundProcesses.remove.title\"),\n confirmLabel: props.t(running\n ? \"instanceShell.backgroundProcesses.actions.stopRemove\"\n : \"instanceShell.backgroundProcesses.actions.remove\"),\n },\n )\n if (confirmed && !await shellStore.remove(instanceId, location.directory, shellId, location.workspaceID)) {\n showToastNotification({ category: \"sessions\", message: props.t(\"instanceShell.backgroundProcesses.error\"), variant: \"error\" })\n }\n }\n\n const renderBackgroundProcesses = () => (\n <Show\n when={!shellState().failed}\n fallback={<div class=\"right-panel-empty right-panel-empty--left\"><span class=\"text-xs\">{props.t(\"instanceShell.backgroundProcesses.error\")}</span></div>}\n >\n <Show\n when={!shellState().loading || shellState().items.length > 0}\n fallback={<div class=\"right-panel-empty right-panel-empty--left\"><span class=\"text-xs\">{props.t(\"instanceShell.backgroundProcesses.loading\")}</span></div>}\n >\n <Show\n when={shellState().items.length > 0}\n fallback={<div class=\"right-panel-empty right-panel-empty--left\"><span class=\"text-xs\">{props.t(\"instanceShell.backgroundProcesses.empty\")}</span></div>}\n >\n <div class=\"flex flex-col gap-1\">\n <For each={shellState().items}>\n {(shell) => {\n const running = () => shell.status === \"running\"\n return (\n <article class=\"status-process-card\">\n <div class=\"flex items-start justify-between gap-2\">\n <div class=\"min-w-0 flex-1\">\n <h4 class=\"truncate text-xs font-medium text-primary\" title={shell.command}>{shell.command}</h4>\n <code class=\"mt-1 block truncate text-xs text-secondary\" title={shell.shell}>{shell.shell}</code>\n </div>\n </div>\n <div class=\"mt-1 flex flex-wrap gap-x-2 gap-y-1 text-xs text-tertiary\">\n <span>{props.t(`instanceShell.backgroundProcesses.status.${shell.status}`)}</span>\n <Show when={shell.pid !== undefined}>\n <span>{props.t(\"instanceShell.backgroundProcesses.pid\", { pid: shell.pid })}</span>\n </Show>\n <Show when={shell.exit !== undefined}>\n <span>{props.t(\"instanceShell.backgroundProcesses.exitCode\", { code: shell.exit })}</span>\n </Show>\n </div>\n <div class=\"mt-1 truncate text-xs text-tertiary\" title={shell.cwd}>{shell.cwd}</div>\n <div class=\"status-process-actions\">\n <button\n type=\"button\"\n class=\"button-tertiary inline-flex w-full items-center justify-center gap-1 p-1\"\n onClick={() => setOutputShell({ shell, location: { ...shellLocation() }, instanceId: props.instanceId })}\n >\n <TerminalSquare class=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n {props.t(\"instanceShell.backgroundProcesses.actions.output\")}\n </button>\n <button\n type=\"button\"\n class=\"button-tertiary inline-flex w-full items-center justify-center gap-1 p-1\"\n disabled={shellState().loading}\n onClick={() => void removeShell(shell.id, shell.command, running())}\n >\n <Show when={running()} fallback={<Trash2 class=\"h-3.5 w-3.5\" aria-hidden=\"true\" />}>\n <XOctagon class=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </Show>\n {props.t(running()\n ? \"instanceShell.backgroundProcesses.actions.stopRemove\"\n : \"instanceShell.backgroundProcesses.actions.remove\")}\n </button>\n </div>\n </article>\n )\n }}\n </For>\n </div>\n </Show>\n </Show>\n </Show>\n )\n\n const renderProviderUsage = () => (\n <Show when={props.activeSession()} fallback={<div class=\"right-panel-empty-text\">{props.t(\"providerUsage.noSession\")}</div>}>\n {(session) => (\n <div class=\"border border-base bg-surface-secondary px-3 py-2\">\n <ProviderUsagePanel instanceId={props.instanceId} sessionId={session().id} directory={session().location.directory}\n providerId={session().model.providerId} modelId={session().model.modelId}\n active={props.isActive() && props.expandedItems().includes(\"provider-usage\")} />\n </div>\n )}\n </Show>\n )\n\n const allStatusSections = createMemo<RightPanelSectionModule[]>(() => {\n const sections = createCoreStatusSectionManifest({\n renderTokens: () => (\n <Show when={props.activeSession()?.id}>\n <ContextUsagePanel instanceId={props.instanceId} sessionId={props.activeSession()!.id} />\n </Show>\n ),\n renderYoloModeSection,\n renderProviderUsage,\n renderBackgroundProcesses,\n renderMcpStatus: () => <InstanceServiceStatus initialInstance={props.instance} sections={[\"mcp\"]} showSectionHeadings={false} class=\"space-y-2\" />,\n renderPluginStatus: () => (\n <InstanceServiceStatus\n initialInstance={props.instance}\n sections={[\"plugins\"]}\n showSectionHeadings={false}\n pluginsActive={props.isActive() && isSectionExpanded(\"plugins\")}\n class=\"space-y-2\"\n />\n ),\n }).statusSections ?? []\n\n return [...sections, ...(props.extraSections ?? [])]\n })\n const statusSections = createMemo<RightPanelSectionModule[]>(() =>\n applyRightPanelItemCustomization(\n allStatusSections(),\n props.customization().statusSectionOrder,\n props.customization().hiddenStatusSectionIds,\n ),\n )\n\n const moveSection = (sourceId: string, targetId: string) => {\n if (!sourceId || sourceId === targetId) return\n const ids = statusSections().map((section) => section.id)\n const sourceIndex = ids.indexOf(sourceId)\n const targetIndex = ids.indexOf(targetId)\n if (sourceIndex === -1 || targetIndex === -1) return\n const next = [...ids]\n const [moved] = next.splice(sourceIndex, 1)\n next.splice(targetIndex, 0, moved)\n props.onCustomizationChange((current) => ({ ...current, statusSectionOrder: next }))\n }\n\n const handleSectionDragEnd = ({ draggable, droppable }: SolidDndDragEvent) => {\n if (!droppable) return\n moveSection(String(draggable.id), String(droppable.id))\n }\n\n return (\n <div class=\"status-tab-container\">\n <Accordion.Root\n class=\"right-panel-accordion\"\n collapsible\n multiple\n value={props.expandedItems()}\n onChange={props.onExpandedItemsChange}\n >\n <DragDropProvider collisionDetector={closestCenter} onDragEnd={handleSectionDragEnd}>\n <DragDropSensors>\n <SortableProvider ids={statusSections().map((section) => section.id)}>\n <For each={statusSections()}>\n {(section) => <SortableStatusSection section={section} expanded={isSectionExpanded(section.id)} t={props.t} />}\n </For>\n </SortableProvider>\n </DragDropSensors>\n </DragDropProvider>\n </Accordion.Root>\n <ShellOutputDialog\n open={Boolean(outputShell())}\n instanceId={outputShell()?.instanceId ?? props.instanceId}\n directory={outputShell()?.location.directory ?? shellLocation().directory}\n workspaceID={outputShell()?.location.workspaceID}\n shell={outputShell()?.shell ?? null}\n onClose={() => setOutputShell(null)}\n />\n </div>\n )\n}\n\nexport default StatusTab\n"],"names":["iconNode","cx","cy","r","key","GripVertical","props","_$createComponent","Icon","_$mergeProps","name","points","d","XOctagon","collapsible_exports","__export","Collapsible","Content","CollapsibleContent","Root","CollapsibleRoot","Trigger","CollapsibleTrigger","useCollapsibleContext","CollapsibleContext","createContext","context","useContext","Error","ref","setRef","createSignal","mergedProps","mergeDefaultProps","id","generateId","local","others","splitProps","present","createPresence","show","shouldMount","element","height","setHeight","width","setWidth","isMountAnimationPrevented","isOpen","onMount","raf","requestAnimationFrame","onCleanup","cancelAnimationFrame","createEffect","on","style","transitionDuration","animationName","rect","getBoundingClientRect","open","defer","registerContentId","Show","when","children","Polymorphic","as","r$","_ref$","mergeRefs","combineStyle","dataset","defaultId","createUniqueId","mergeDefaultProps2","splitProps2","contentId","setContentId","createSignal2","disclosureState","createDisclosureState","defaultOpen","onOpenChange","createMemo","disabled","forceMount","toggle","createGenerateId","createRegisterId","Provider","value","splitProps3","ButtonRoot","_$memo","onClick","e","callHandler","Object","assign","accordion_exports","Accordion","AccordionContent","Header","AccordionHeader","Item","AccordionItem","AccordionRoot","AccordionTrigger","useAccordionContext","AccordionItemContext","useAccordionItemContext","itemContext","role","triggerId","AccordionContext","createContext2","useContext2","accordionContext","setTriggerId","selectionManager","listState","isExpanded","isSelected","registerTriggerId","createUniqueId2","mergeDefaultProps3","multiple","collapsible","shouldFocusWrap","items","setItems","DomCollectionProvider","createDomCollection","onItemsChange","createListState","selectedKeys","defaultSelectedKeys","defaultValue","onSelectionChange","onChange","Array","from","disallowEmptySelection","selectionMode","dataSource","setFocusedKey","selectableList","createSelectableList","collection","disallowTypeAhead","allowsTabNavigation","createGenerateId2","el","onKeyDown","composeEventHandlers","onMouseDown","onFocusIn","onFocusOut","collapsibleContext","mergeDefaultProps4","splitProps4","createDomCollectionItem","getItem","type","textValue","selectableItem","createSelectableItem","shouldSelectOnPressUp","includes","preventDefault","createEffect2","onCleanup2","_ref$2","mergeRefs2","dataKey","onPointerDown","composeEventHandlers2","onPointerUp","onFocus","ContextUsagePanel","t","useI18n","preferences","useConfig","showUsage","showUsageMetrics","info","getSessionInfo","instanceId","sessionId","cost","contextWindow","isSubscriptionModel","inputTokens","outputTokens","reasoningTokens","actualUsageTokens","modelOutputLimit","contextAvailableTokens","getChildSessions","hasChildren","length","threadTotals","getThreadTotals","totalCostDisplay","toFixed","totalInputTokens","totalOutputTokens","totalReasoningTokens","costValue","costDisplay","_el$","_tmpl$2","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_$insert","formatTokenTotal","_el$10","_tmpl$","_el$11","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_$effect","_$className","class","providerUsageKey","source","shouldShowProviderUsageWindow","label","showCreditBalance","createProviderUsageState","fetchUsage","publish","current","generation","running","invalidate","request","REFRESH_INTERVAL_MS","ProviderUsagePanel","active","providerId","trim","modelId","directory","equals","a","b","Boolean","usage","setUsage","state","serverApi","fetchProviderUsage","select","refresh","revalidate","unsubscribeEvents","serverEvents","event","location","lastInstanceStatus","lastTransportStatus","unsubscribeStatus","JSON","stringify","status","unsubscribeTransport","onTransportStatus","refreshTimer","setInterval","dispose","clearInterval","entries","windows","displayedLabels","map","filter","showProviderUsageCreditBalance","windowLabel","scope","indexOf","slice","weekly","daily","monthly","credits","credits_balance","billing_cycle","session","premium","chat","completions","displayValue","window","valueLabel","usedPercent","percent","Math","round","resetLabel","resetAt","date","Date","Number","isFinite","getTime","time","toLocaleString","dateStyle","timeStyle","barColor","undefined","fallback","_tmpl$3","data","supported","configured","ok","unavailableReason","version","_tmpl$4","For","each","previous","_tmpl$6","reset","_tmpl$7","_tmpl$8","_tmpl$5","_p$","_v$","max","min","_v$2","_v$3","_v$4","_$setStyleProperty","_$setAttribute","o","providerName","MAX_SHELL_OUTPUT_DISPLAY_CHARS","appendShellOutput","chunk","output","start","escape","end","controlSequence","index","code","bell","stringTerminator","cancel","terminators","EMPTY_STATE","SHELL_EVENTS","createShellApi","client","workspaceID","requestLocationOptions","shellId","cursor","createShellStore","apiForInstance","states","setStates","requests","setState","stateKey","readState","untrack","load","pending","eventDirectory","_a","_c","_b","tracked","trackedInstanceId","matching","sameDirectory","left","right","normalize","normalized","shellStore","getRootClient","ShellOutputDialog","setOutput","outputHtml","setOutputHtml","ansiEnabled","setAnsiEnabled","truncated","setTruncated","loading","setLoading","shell","raw","timer","render","ansi","hasAnsi","renderer","createAnsiStreamRenderer","poll","result","next","setTimeout","Dialog","onClose","modal","Portal","Overlay","Title","command","_$addEventListener","_c$","innerHTML","_$delegateEvents","SortableStatusSection","sortable","createSortable","section","_$use","ChevronRight","labelKey","Tooltip","openDelay","gutter","placement","tooltipKey","Info","isActiveDraggable","StatusTab","isSectionExpanded","expandedItems","shellLocation","activeSession","instance","folder","shellState","getState","outputShell","setOutputShell","renderYoloModeSection","Switch","checked","isPermissionAutoAcceptEnabled","size","sx","color","backgroundColor","inputProps","togglePermissionAutoAcceptForSession","removeShell","showConfirmDialog","title","confirmLabel","remove","showToastNotification","category","message","variant","renderBackgroundProcesses","failed","_el$23","_el$24","_el$25","_el$26","pid","exit","_el$22","cwd","$$click","TerminalSquare","Trash2","renderProviderUsage","_el$27","_el$28","_tmpl$9","model","isActive","allStatusSections","createCoreStatusSectionManifest","renderTokens","renderMcpStatus","InstanceServiceStatus","initialInstance","sections","showSectionHeadings","renderPluginStatus","pluginsActive","statusSections","extraSections","applyRightPanelItemCustomization","customization","statusSectionOrder","hiddenStatusSectionIds","moveSection","sourceId","targetId","ids","sourceIndex","targetIndex","moved","splice","onCustomizationChange","handleSectionDragEnd","draggable","droppable","String","_el$29","_tmpl$0","onExpandedItemsChange","DragDropProvider","collisionDetector","closestCenter","onDragEnd","DragDropSensors","SortableProvider","expanded"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}