@skillkit/tui 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +732 -387
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/@opentui+solid@0.1.75_solid-js@1.9.11_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/solid/index.js","../../../node_modules/.pnpm/solid-js@1.9.11/node_modules/solid-js/dist/solid.js","../src/index.tsx","../src/App.tsx","../src/state/types.ts","../src/theme/colors.ts","../src/utils/helpers.ts","../src/components/Splash.tsx","../src/theme/symbols.ts","../src/components/Sidebar.tsx","../src/components/StatusBar.tsx","../src/state/navigation.ts","../src/state/skills.ts","../src/state/agents.ts","../src/state/marketplace.ts","../../../marketplace/sources.json","../src/screens/Home.tsx","../src/components/Header.tsx","../src/components/Spinner.tsx","../src/components/EmptyState.tsx","../src/components/DetailPane.tsx","../src/components/StatusIndicator.tsx","../src/screens/Browse.tsx","../src/screens/Installed.tsx","../src/screens/Marketplace.tsx","../src/services/recommend.service.ts","../src/screens/Recommend.tsx","../src/services/translator.service.ts","../src/screens/Translate.tsx","../src/services/context.service.ts","../src/screens/Context.tsx","../src/services/executor.service.ts","../src/screens/Sync.tsx","../src/services/memory.service.ts","../src/screens/Memory.tsx","../src/services/workflow.service.ts","../src/screens/Workflow.tsx","../src/screens/Execute.tsx","../src/screens/History.tsx","../src/services/team.service.ts","../src/screens/Team.tsx","../src/services/plugin.service.ts","../src/screens/Plugins.tsx","../src/services/methodology.service.ts","../src/screens/Methodology.tsx","../src/components/ProgressBar.tsx","../src/services/plan.service.ts","../src/screens/Plan.tsx","../src/screens/Settings.tsx","../src/screens/Help.tsx","../src/screens/Mesh.tsx","../src/screens/Message.tsx","../src/theme/animations.ts","../src/utils/list.ts","../src/components/AgentGrid.tsx","../src/components/StatsCard.tsx","../src/components/RightSidebar.tsx","../src/components/BottomStatusBar.tsx","../src/components/SkillList.tsx","../src/components/SearchInput.tsx","../src/components/FeatureList.tsx","../src/components/SelectList.tsx","../src/components/SplitPane.tsx","../src/components/CodeBlock.tsx","../src/components/FormField.tsx","../src/components/ErrorBoundary.tsx","../src/components/Button.tsx","../src/components/Clickable.tsx","../src/components/HoverHighlight.tsx","../src/components/AnimatedText.tsx","../src/components/TabBar.tsx","../src/components/Breadcrumb.tsx"],"sourcesContent":["// @bun\n// index.ts\nimport { CliRenderer, createCliRenderer, engine as engine2 } from \"@opentui/core\";\nimport { createTestRenderer } from \"@opentui/core/testing\";\n\n// src/elements/index.ts\nimport {\n ASCIIFontRenderable,\n BoxRenderable,\n CodeRenderable,\n DiffRenderable,\n InputRenderable as InputRenderable2,\n LineNumberRenderable,\n MarkdownRenderable,\n ScrollBoxRenderable,\n SelectRenderable as SelectRenderable2,\n TabSelectRenderable as TabSelectRenderable2,\n TextareaRenderable,\n TextAttributes,\n TextNodeRenderable as TextNodeRenderable3,\n TextRenderable as TextRenderable3\n} from \"@opentui/core\";\n\n// src/elements/hooks.ts\nimport {\n engine,\n Timeline\n} from \"@opentui/core\";\nimport { createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js\";\nvar RendererContext = createContext();\nvar useRenderer = () => {\n const renderer = useContext(RendererContext);\n if (!renderer) {\n throw new Error(\"No renderer found\");\n }\n return renderer;\n};\nvar onResize = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"resize\", callback);\n });\n onCleanup(() => {\n renderer.off(\"resize\", callback);\n });\n};\nvar useTerminalDimensions = () => {\n const renderer = useRenderer();\n const [terminalDimensions, setTerminalDimensions] = createSignal({ width: renderer.width, height: renderer.height });\n const callback = (width, height) => {\n setTerminalDimensions({ width, height });\n };\n onResize(callback);\n return terminalDimensions;\n};\nvar useKeyboard = (callback, options) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"keypress\", callback);\n if (options?.release) {\n keyHandler.on(\"keyrelease\", callback);\n }\n });\n onCleanup(() => {\n keyHandler.off(\"keypress\", callback);\n if (options?.release) {\n keyHandler.off(\"keyrelease\", callback);\n }\n });\n};\nvar usePaste = (callback) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"paste\", callback);\n });\n onCleanup(() => {\n keyHandler.off(\"paste\", callback);\n });\n};\nvar useKeyHandler = useKeyboard;\nvar useSelectionHandler = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"selection\", callback);\n });\n onCleanup(() => {\n renderer.off(\"selection\", callback);\n });\n};\nvar useTimeline = (options = {}) => {\n const timeline = new Timeline(options);\n onMount(() => {\n if (options.autoplay !== false) {\n timeline.play();\n }\n engine.register(timeline);\n });\n onCleanup(() => {\n timeline.pause();\n engine.unregister(timeline);\n });\n return timeline;\n};\n// src/elements/extras.ts\nimport { createEffect, createMemo as createMemo2, getOwner, onCleanup as onCleanup2, runWithOwner, splitProps, untrack as untrack2 } from \"solid-js\";\n\n// src/reconciler.ts\nimport {\n BaseRenderable,\n createTextAttributes,\n InputRenderable,\n InputRenderableEvents,\n isTextNodeRenderable,\n parseColor,\n Renderable,\n RootTextNodeRenderable,\n SelectRenderable,\n SelectRenderableEvents,\n TabSelectRenderable,\n TabSelectRenderableEvents,\n TextNodeRenderable,\n TextRenderable\n} from \"@opentui/core\";\nimport { useContext as useContext2 } from \"solid-js\";\n\n// src/renderer/universal.js\nimport { createRoot, createRenderEffect, createMemo, createComponent, untrack, mergeProps } from \"solid-js\";\nvar memo = (fn) => createMemo(() => fn());\nfunction createRenderer({\n createElement,\n createTextNode,\n createSlotNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial)\n initial = [];\n if (typeof accessor !== \"function\")\n return insertExpression(parent, accessor, initial, marker);\n createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\")\n current = current();\n if (value === current)\n return current;\n const t = typeof value, multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\")\n value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else\n node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), current = value);\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\")\n v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi)\n return current = replacement;\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else\n reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, multi && current || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi)\n return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else\n replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length;i < len; i++) {\n let item = array[i], t;\n if (item == null || item === true || item === false)\n ;\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\")\n item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else\n normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = getNextSibling(a[aEnd - 1]), map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after;\n while (bStart < bEnd)\n insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart]))\n removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map;\n let i = bStart;\n while (i < bEnd)\n map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart, sequence = 1, t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence)\n break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index)\n insertNode(parentNode, b[bStart++], node);\n } else\n replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else\n aStart++;\n } else\n removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while (removed = getFirstChild(parent))\n removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return replacement;\n }\n const node = replacement || createSlotNode();\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1;i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else\n isParent && removeNode(parent, el);\n } else\n inserted = true;\n }\n } else\n insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length;i < len; i++)\n insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\")\n continue;\n const value = props[prop];\n if (value === prevProps[prop])\n continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot((dispose) => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect((current) => spreadExpression(node, accessor(), current, skipChildren));\n } else\n spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\n// src/renderer/index.ts\nimport { mergeProps as mergeProps2 } from \"solid-js\";\nfunction createRenderer2(options) {\n const renderer = createRenderer(options);\n renderer.mergeProps = mergeProps2;\n return renderer;\n}\n\n// src/utils/id-counter.ts\nvar idCounter = new Map;\nfunction getNextId(elementType) {\n if (!idCounter.has(elementType)) {\n idCounter.set(elementType, 0);\n }\n const value = idCounter.get(elementType) + 1;\n idCounter.set(elementType, value);\n return `${elementType}-${value}`;\n}\n\n// src/utils/log.ts\nvar log = (...args) => {\n if (process.env.DEBUG) {\n console.log(\"[Reconciler]\", ...args);\n }\n};\n\n// src/reconciler.ts\nclass TextNode extends TextNodeRenderable {\n static fromString(text, options = {}) {\n const node = new TextNode(options);\n node.add(text);\n return node;\n }\n}\nvar logId = (node) => {\n if (!node)\n return;\n return node.id;\n};\nvar getNodeChildren = (node) => {\n let children;\n if (node instanceof TextRenderable) {\n children = node.getTextChildren();\n } else {\n children = node.getChildren();\n }\n return children;\n};\nfunction _insertNode(parent, node, anchor) {\n log(\"Inserting node:\", logId(node), \"into parent:\", logId(parent), \"with anchor:\", logId(anchor), node instanceof TextNode);\n if (node instanceof SlotRenderable) {\n node.parent = parent;\n node = node.getSlotChild(parent);\n }\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent);\n }\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(`Orphan text error: \"${node.toChunks().map((c) => c.text).join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`);\n }\n }\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\");\n throw new Error(\"Tried to mount a non base renderable\");\n }\n if (!anchor) {\n parent.add(node);\n return;\n }\n const children = getNodeChildren(parent);\n const anchorIndex = children.findIndex((el) => el.id === anchor.id);\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map((c) => c.id));\n }\n parent.add(node, anchorIndex);\n}\nfunction _removeNode(parent, node) {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent));\n if (node instanceof SlotRenderable) {\n node.parent = null;\n node = node.getSlotChild(parent);\n }\n parent.remove(node.id);\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively();\n return;\n }\n });\n}\nfunction _createTextNode(value) {\n log(\"Creating text node:\", value);\n const id = getNextId(\"text-node\");\n if (typeof value === \"number\") {\n value = value.toString();\n }\n return TextNode.fromString(value, { id });\n}\nfunction createSlotNode() {\n const id = getNextId(\"slot-node\");\n log(\"Creating slot node\", id);\n return new SlotRenderable(id);\n}\nfunction _getParentNode(childNode) {\n log(\"Getting parent of node:\", logId(childNode));\n let parent = childNode.parent ?? undefined;\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined;\n }\n return parent;\n}\nvar {\n render: _render,\n effect,\n memo: memo2,\n createComponent: createComponent2,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps: mergeProps3,\n use\n} = createRenderer2({\n createElement(tagName) {\n log(\"Creating element:\", tagName);\n const id = getNextId(tagName);\n const solidRenderer = useContext2(RendererContext);\n if (!solidRenderer) {\n throw new Error(\"No renderer found\");\n }\n const elements = getComponentCatalogue();\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`);\n }\n const element = new elements[tagName](solidRenderer, { id });\n log(\"Element created with id:\", id);\n return element;\n },\n createTextNode: _createTextNode,\n createSlotNode,\n replaceText(textNode, value) {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode));\n if (!(textNode instanceof TextNode))\n return;\n textNode.replace(value, 0);\n },\n setProperty(node, name, value, prev) {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3);\n if (value) {\n node.on(eventName, value);\n }\n if (prev) {\n node.off(eventName, prev);\n }\n return;\n }\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = { url: value };\n return;\n }\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value);\n node.fg = value.fg ? parseColor(value.fg) : node.fg;\n node.bg = value.bg ? parseColor(value.bg) : node.bg;\n return;\n }\n return;\n }\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value);\n node[name] = value;\n break;\n case \"focused\":\n if (!(node instanceof Renderable))\n return;\n if (value) {\n node.focus();\n } else {\n node.blur();\n }\n break;\n case \"onChange\":\n let event = undefined;\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE;\n }\n if (!event)\n break;\n if (value) {\n node.on(event, value);\n }\n if (prev) {\n node.off(event, prev);\n }\n break;\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev);\n }\n }\n break;\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev);\n }\n } else {\n node[name] = value;\n }\n break;\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev);\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev);\n }\n }\n break;\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop];\n if (prev !== undefined && propVal === prev[prop])\n continue;\n node[prop] = propVal;\n }\n break;\n case \"text\":\n case \"content\":\n node[name] = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`;\n break;\n default:\n node[name] = value;\n }\n },\n isTextNode(node) {\n return node instanceof TextNode;\n },\n insertNode: _insertNode,\n removeNode: _removeNode,\n getParentNode: _getParentNode,\n getFirstChild(node) {\n log(\"Getting first child of node:\", logId(node));\n const firstChild = getNodeChildren(node)[0];\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node));\n return;\n }\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node));\n return firstChild;\n },\n getNextSibling(node) {\n log(\"Getting next sibling of node:\", logId(node));\n const parent = _getParentNode(node);\n if (!parent) {\n log(\"No parent found for node:\", logId(node));\n return;\n }\n const siblings = getNodeChildren(parent);\n const index = siblings.indexOf(node);\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node));\n return;\n }\n const nextSibling = siblings[index + 1];\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node));\n return;\n }\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node));\n return nextSibling;\n }\n});\n\n// src/elements/extras.ts\nfunction Portal(props) {\n const renderer = useRenderer();\n const marker = createSlotNode(), mount = () => props.mount || renderer.root, owner = getOwner();\n let content;\n createEffect(() => {\n content || (content = runWithOwner(owner, () => createMemo2(() => props.children)));\n const el = mount();\n const container = createElement(\"box\"), renderRoot = container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.add(container);\n props.ref && props.ref(container);\n onCleanup2(() => el.remove(container.id));\n }, undefined, { render: true });\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo2(component);\n return createMemo2(() => {\n const component2 = cached();\n switch (typeof component2) {\n case \"function\":\n return untrack2(() => component2(props));\n case \"string\":\n const el = createElement(component2);\n spread(el, props);\n return el;\n default:\n break;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n// src/elements/slot.ts\nimport { BaseRenderable as BaseRenderable2, isTextNodeRenderable as isTextNodeRenderable2, TextNodeRenderable as TextNodeRenderable2, TextRenderable as TextRenderable2, Yoga } from \"@opentui/core\";\n\nclass SlotBaseRenderable extends BaseRenderable2 {\n constructor(id) {\n super({\n id\n });\n }\n add(obj, index) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getChildren() {\n return [];\n }\n remove(id) {}\n insertBefore(obj, anchor) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getRenderable(id) {\n return;\n }\n getChildrenCount() {\n return 0;\n }\n requestRender() {}\n findDescendantById(id) {\n return;\n }\n}\n\nclass TextSlotRenderable extends TextNodeRenderable2 {\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super({ id });\n this._visible = false;\n this.slotParent = parent;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.slotParent?.destroy();\n super.destroy();\n }\n}\n\nclass LayoutSlotRenderable extends SlotBaseRenderable {\n yogaNode;\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super(id);\n this._visible = false;\n this.slotParent = parent;\n this.yogaNode = Yoga.default.Node.create();\n this.yogaNode.setDisplay(Yoga.Display.None);\n }\n getLayoutNode() {\n return this.yogaNode;\n }\n updateFromLayout() {}\n updateLayout() {}\n onRemove() {}\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n super.destroy();\n this.slotParent?.destroy();\n }\n}\n\nclass SlotRenderable extends SlotBaseRenderable {\n layoutNode;\n textNode;\n destroyed = false;\n constructor(id) {\n super(id);\n this._visible = false;\n }\n getSlotChild(parent) {\n if (isTextNodeRenderable2(parent) || parent instanceof TextRenderable2) {\n if (!this.textNode) {\n this.textNode = new TextSlotRenderable(`slot-text-${this.id}`, this);\n }\n return this.textNode;\n }\n if (!this.layoutNode) {\n this.layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}`, this);\n }\n return this.layoutNode;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n if (this.layoutNode) {\n this.layoutNode.destroy();\n }\n if (this.textNode) {\n this.textNode.destroy();\n }\n }\n}\n\n// src/elements/index.ts\nclass SpanRenderable extends TextNodeRenderable3 {\n _ctx;\n constructor(_ctx, options) {\n super(options);\n this._ctx = _ctx;\n }\n}\nvar textNodeKeys = [\"span\", \"b\", \"strong\", \"i\", \"em\", \"u\", \"a\"];\n\nclass TextModifierRenderable extends SpanRenderable {\n constructor(options, modifier) {\n super(null, options);\n if (modifier === \"b\" || modifier === \"strong\") {\n this.attributes = (this.attributes || 0) | TextAttributes.BOLD;\n } else if (modifier === \"i\" || modifier === \"em\") {\n this.attributes = (this.attributes || 0) | TextAttributes.ITALIC;\n } else if (modifier === \"u\") {\n this.attributes = (this.attributes || 0) | TextAttributes.UNDERLINE;\n }\n }\n}\n\nclass BoldSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"b\");\n }\n}\n\nclass ItalicSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"i\");\n }\n}\n\nclass UnderlineSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"u\");\n }\n}\n\nclass LineBreakRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n super(null, options);\n this.add();\n }\n add() {\n return super.add(`\n`);\n }\n}\n\nclass LinkRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n const linkOptions = {\n ...options,\n link: { url: options.href }\n };\n super(null, linkOptions);\n }\n}\nvar baseComponents = {\n box: BoxRenderable,\n text: TextRenderable3,\n input: InputRenderable2,\n select: SelectRenderable2,\n textarea: TextareaRenderable,\n ascii_font: ASCIIFontRenderable,\n tab_select: TabSelectRenderable2,\n scrollbox: ScrollBoxRenderable,\n code: CodeRenderable,\n diff: DiffRenderable,\n line_number: LineNumberRenderable,\n markdown: MarkdownRenderable,\n span: SpanRenderable,\n strong: BoldSpanRenderable,\n b: BoldSpanRenderable,\n em: ItalicSpanRenderable,\n i: ItalicSpanRenderable,\n u: UnderlineSpanRenderable,\n br: LineBreakRenderable,\n a: LinkRenderable\n};\nvar componentCatalogue = { ...baseComponents };\nfunction extend(objects) {\n Object.assign(componentCatalogue, objects);\n}\nfunction getComponentCatalogue() {\n return componentCatalogue;\n}\n\n// index.ts\nvar render = async (node, rendererOrConfig = {}) => {\n let isDisposed = false;\n let dispose;\n const renderer = rendererOrConfig instanceof CliRenderer ? rendererOrConfig : await createCliRenderer({\n ...rendererOrConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n rendererOrConfig.onDestroy?.();\n }\n });\n if (rendererOrConfig instanceof CliRenderer) {\n renderer.on(\"destroy\", () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n });\n }\n engine2.attach(renderer);\n dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), renderer.root);\n};\nvar testRender = async (node, renderConfig = {}) => {\n let isDisposed = false;\n const testSetup = await createTestRenderer({\n ...renderConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n renderConfig.onDestroy?.();\n }\n });\n engine2.attach(testSetup.renderer);\n const dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return testSetup.renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), testSetup.renderer.root);\n return testSetup;\n};\nexport {\n useTimeline,\n useTerminalDimensions,\n useSelectionHandler,\n useRenderer,\n usePaste,\n useKeyboard,\n useKeyHandler,\n use,\n textNodeKeys,\n testRender,\n spread,\n setProp,\n render,\n onResize,\n mergeProps3 as mergeProps,\n memo2 as memo,\n insertNode,\n insert,\n getComponentCatalogue,\n extend,\n effect,\n createTextNode,\n createSlotNode,\n createElement,\n createDynamic,\n createComponent2 as createComponent,\n componentCatalogue,\n baseComponents,\n _render,\n UnderlineSpanRenderable,\n TextSlotRenderable,\n SlotRenderable,\n RendererContext,\n Portal,\n LinkRenderable,\n LineBreakRenderable,\n LayoutSlotRenderable,\n ItalicSpanRenderable,\n Dynamic,\n BoldSpanRenderable\n};\n","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n maxDeadline = 0,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n maxDeadline = currentTime + maxYieldInterval;\n try {\n const hasMoreWork = scheduledCallback(currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxDeadline;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n let error;\n const p = initP !== NO_INIT ? initP : untrack(() => {\n try {\n return fetcher(lookup, {\n value: value(),\n refetching\n });\n } catch (fetcherError) {\n error = fetcherError;\n }\n });\n if (error !== undefined) {\n loadEnd(pr, undefined, castError(error), lookup);\n return;\n } else if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"v\" in p) {\n if (p.s === 1) loadEnd(pr, p.v, undefined, lookup);else loadEnd(pr, undefined, castError(p.v), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n let owner = Owner;\n if (dynamic) createComputed(() => (owner = Owner, load(false)));else load(false);\n return [read, {\n refetch: info => runWithOwner(owner, () => load(info)),\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined ? value : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const {\n factory: oldFactory,\n untrack: oldUntrack\n } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n } : desc.value !== undefined ? desc : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const len = keys.length;\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = len > 1 ? keys.flat() : keys[0];\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.includes(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.includes(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.includes(k));\n }\n }, propTraps));\n return res;\n }\n const objects = [];\n for (let i = 0; i <= len; i++) {\n objects[i] = {};\n }\n for (const propName of Object.getOwnPropertyNames(props)) {\n let keyIndex = len;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].includes(propName)) {\n keyIndex = i;\n break;\n }\n }\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n isDefaultDesc ? objects[keyIndex][propName] = desc.value : Object.defineProperty(objects[keyIndex], propName, desc);\n }\n return objects;\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) ? untrack(() => {\n if (IS_DEV) ;\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }) : \"\");\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(() => prevFunc() ? undefined : mp.when, undefined, undefined);\n const condition = mp.keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(() => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n })) : child;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.s !== 1) p = ref;else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }, err => {\n error = err;\n set();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createCliRenderer } from '@opentui/core';\nimport { render } from '@opentui/solid';\nimport { App } from './App.js';\n\nlet isRunning = true;\nlet renderer: Awaited<ReturnType<typeof createCliRenderer>> | null = null;\n\nexport function exitTUI(code = 0): void {\n if (!isRunning) return;\n isRunning = false;\n\n try {\n if (renderer && 'dispose' in renderer) {\n (renderer as { dispose?: () => void }).dispose?.();\n }\n } catch {}\n\n try {\n process.stdout.write('\\x1b[?1049l\\x1b[?25h\\x1b[0m\\x1b[H\\x1b[2J');\n } catch {}\n\n setImmediate(() => process.exit(code));\n}\n\nexport async function startTUI(): Promise<never> {\n process.on('SIGINT', () => exitTUI(0));\n process.on('SIGTERM', () => exitTUI(0));\n process.on('uncaughtException', (err) => {\n console.error('TUI Error:', err.message);\n exitTUI(1);\n });\n process.on('unhandledRejection', (err) => {\n console.error('TUI Error:', err);\n exitTUI(1);\n });\n\n renderer = await createCliRenderer({\n exitOnCtrlC: false,\n useMouse: true,\n enableMouseMovement: true,\n });\n\n try {\n await render(() => <App onExit={exitTUI} />, renderer);\n } catch (err) {\n console.error('Render failed:', err);\n exitTUI(1);\n }\n\n return new Promise(() => {});\n}\n\nexport { type Screen } from './state/types.js';\nexport { App } from './App.js';\nexport * from './theme/index.js';\nexport * from './state/index.js';\nexport * from './utils/index.js';\nexport * from './components/index.js';\nexport * from './screens/index.js';\n","import { createSignal, createEffect, onCleanup, Show, Switch, Match } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { execFile } from 'node:child_process';\nimport { type Screen, NAV_KEYS } from './state/types.js';\nimport { Splash } from './components/Splash.js';\nimport { Sidebar } from './components/Sidebar.js';\nimport { StatusBar } from './components/StatusBar.js';\nimport {\n Home, Browse, Installed, Marketplace, Settings, Recommend,\n Translate, Context, Memory, Team, Plugins, Methodology,\n Plan, Workflow, Execute, History, Sync, Help, Mesh, Message,\n} from './screens/index.js';\n\nconst DOCS_URL = 'https://agenstskills.com/docs';\n\nfunction openUrl(url: string): void {\n if (process.platform === 'win32') {\n execFile('cmd', ['/c', 'start', '', url]);\n } else {\n const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';\n execFile(cmd, [url]);\n }\n}\n\ninterface AppProps {\n onExit?: (code?: number) => void;\n}\n\nexport function App(props: AppProps) {\n const [showSplash, setShowSplash] = createSignal(true);\n const [currentScreen, setCurrentScreen] = createSignal<Screen>('home');\n const [showSidebar, setShowSidebar] = createSignal(true);\n const [dimensions, setDimensions] = createSignal({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n\n createEffect(() => {\n const handleResize = () => {\n setDimensions({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n };\n process.stdout.on('resize', handleResize);\n onCleanup(() => {\n process.stdout.off('resize', handleResize);\n });\n });\n\n const cols = () => dimensions().cols;\n const rows = () => dimensions().rows;\n const sidebarVisible = () => showSidebar() && cols() >= 80;\n const sidebarWidth = () => {\n if (!sidebarVisible()) return 0;\n if (cols() >= 100) return 24;\n return 18;\n };\n const statusBarHeight = 2;\n const contentHeight = () => rows() - statusBarHeight;\n\n const handleNavigate = (newScreen: Screen) => {\n setCurrentScreen(newScreen);\n };\n\n const handleSplashComplete = () => {\n setShowSplash(false);\n };\n\n useKeyboard((key: { name?: string; ctrl?: boolean; sequence?: string }) => {\n if (showSplash()) {\n setShowSplash(false);\n return;\n }\n\n if (key.name === 'q' || (key.ctrl && key.name === 'c')) {\n props.onExit ? props.onExit(0) : process.exit(0);\n return;\n }\n\n if (key.name === 'd') {\n openUrl(DOCS_URL);\n return;\n }\n\n if (key.sequence === '\\\\') {\n setShowSidebar((v) => !v);\n return;\n }\n\n const targetScreen = NAV_KEYS[key.name || ''];\n if (targetScreen) {\n setCurrentScreen(targetScreen);\n }\n\n if (key.name === 'escape' && currentScreen() !== 'home') {\n setCurrentScreen('home');\n }\n });\n\n const screenProps = () => ({\n onNavigate: handleNavigate,\n cols: Math.max(1, cols() - sidebarWidth() - 2),\n rows: Math.max(1, contentHeight() - 1),\n });\n\n return (\n <Show when={!showSplash()} fallback={<Splash onComplete={handleSplashComplete} duration={3000} />}>\n <box flexDirection=\"column\" height={rows()}>\n <box flexDirection=\"row\" height={contentHeight()}>\n <Show when={sidebarVisible()}>\n <Sidebar\n screen={currentScreen()}\n onNavigate={handleNavigate}\n />\n </Show>\n\n <box flexDirection=\"column\" flexGrow={1} paddingX={1}>\n <Switch fallback={<Home {...screenProps()} />}>\n <Match when={currentScreen() === 'home'}><Home {...screenProps()} /></Match>\n <Match when={currentScreen() === 'browse'}><Browse {...screenProps()} /></Match>\n <Match when={currentScreen() === 'installed'}><Installed {...screenProps()} /></Match>\n <Match when={currentScreen() === 'marketplace'}><Marketplace {...screenProps()} /></Match>\n <Match when={currentScreen() === 'settings'}><Settings {...screenProps()} /></Match>\n <Match when={currentScreen() === 'recommend'}><Recommend {...screenProps()} /></Match>\n <Match when={currentScreen() === 'translate'}><Translate {...screenProps()} /></Match>\n <Match when={currentScreen() === 'context'}><Context {...screenProps()} /></Match>\n <Match when={currentScreen() === 'memory'}><Memory {...screenProps()} /></Match>\n <Match when={currentScreen() === 'team'}><Team {...screenProps()} /></Match>\n <Match when={currentScreen() === 'plugins'}><Plugins {...screenProps()} /></Match>\n <Match when={currentScreen() === 'methodology'}><Methodology {...screenProps()} /></Match>\n <Match when={currentScreen() === 'plan'}><Plan {...screenProps()} /></Match>\n <Match when={currentScreen() === 'workflow'}><Workflow {...screenProps()} /></Match>\n <Match when={currentScreen() === 'execute'}><Execute {...screenProps()} /></Match>\n <Match when={currentScreen() === 'history'}><History {...screenProps()} /></Match>\n <Match when={currentScreen() === 'sync'}><Sync {...screenProps()} /></Match>\n <Match when={currentScreen() === 'help'}><Help {...screenProps()} /></Match>\n <Match when={currentScreen() === 'mesh'}><Mesh {...screenProps()} /></Match>\n <Match when={currentScreen() === 'message'}><Message {...screenProps()} /></Match>\n </Switch>\n </box>\n </box>\n\n <StatusBar />\n </box>\n </Show>\n );\n}\n\nexport { type Screen };\n","export interface SkillItem {\n name: string;\n description?: string;\n source?: string;\n installs?: number;\n enabled?: boolean;\n quality?: number;\n grade?: string;\n warnings?: number;\n}\n\nexport interface RepoInfo {\n source: string;\n name: string;\n}\n\nexport interface FetchedSkill {\n name: string;\n source: string;\n repoName: string;\n description?: string;\n}\n\nexport type Screen =\n | 'home' | 'browse' | 'installed' | 'marketplace' | 'recommend'\n | 'translate' | 'context' | 'memory' | 'team' | 'plugins'\n | 'methodology' | 'plan' | 'workflow' | 'execute' | 'history'\n | 'sync' | 'settings' | 'help' | 'mesh' | 'message';\n\nexport const NAV_KEYS: Record<string, Screen> = {\n h: 'home', m: 'marketplace', b: 'browse', w: 'workflow',\n x: 'execute', y: 'history', r: 'recommend', t: 'translate',\n c: 'context', e: 'memory', i: 'installed', s: 'sync',\n a: 'team', p: 'plugins', o: 'methodology', n: 'plan',\n ',': 'settings', '/': 'help', 'g': 'mesh', 'j': 'message',\n} as const;\n\nexport const STATUS_BAR_SHORTCUTS = 'b browse m market i installed s sync / help q quit';\n\nexport interface ScreenMeta {\n key: string;\n label: string;\n screen: Screen;\n}\n\nexport interface SidebarSection {\n section: string;\n items: ScreenMeta[];\n}\n\nexport const SIDEBAR_NAV: SidebarSection[] = [\n {\n section: 'Discover',\n items: [\n { key: 'h', label: 'Home', screen: 'home' },\n { key: 'b', label: 'Browse', screen: 'browse' },\n { key: 'm', label: 'Market', screen: 'marketplace' },\n { key: 'r', label: 'Recommend', screen: 'recommend' },\n ],\n },\n {\n section: 'Manage',\n items: [\n { key: 'i', label: 'Installed', screen: 'installed' },\n { key: 's', label: 'Sync', screen: 'sync' },\n { key: 't', label: 'Translate', screen: 'translate' },\n ],\n },\n {\n section: 'Execute',\n items: [\n { key: 'w', label: 'Workflows', screen: 'workflow' },\n { key: 'x', label: 'Execute', screen: 'execute' },\n { key: 'n', label: 'Plan', screen: 'plan' },\n ],\n },\n {\n section: 'Team',\n items: [\n { key: 'a', label: 'Team', screen: 'team' },\n { key: 'c', label: 'Context', screen: 'context' },\n { key: 'e', label: 'Memory', screen: 'memory' },\n { key: 'g', label: 'Mesh', screen: 'mesh' },\n { key: 'j', label: 'Messages', screen: 'message' },\n ],\n },\n {\n section: 'More',\n items: [\n { key: 'p', label: 'Plugins', screen: 'plugins' },\n { key: 'o', label: 'Methods', screen: 'methodology' },\n { key: ',', label: 'Settings', screen: 'settings' },\n ],\n },\n];\n","/**\n * Monochromatic color palette for SkillKit TUI\n * Inspired by OpenSync's elegant dark theme\n */\n\nexport const colors = {\n // Base (monochromatic grays)\n background: '#0d0d0d',\n surface: '#1a1a1a',\n surfaceHover: '#262626',\n border: '#333333',\n borderDim: '#1f1f1f',\n\n // Text hierarchy\n text: '#ffffff',\n textSecondary: '#a0a0a0',\n textMuted: '#666666',\n\n // Accent (single brand color - vibrant green)\n accent: '#00ff88',\n accentDim: '#00cc6a',\n\n // Status colors (subtle variations)\n success: '#22c55e',\n warning: '#eab308',\n error: '#ef4444',\n info: '#3b82f6',\n\n // Feature-specific accent colors (for colored keywords)\n sync: '#00d9ff', // cyan\n browse: '#22c55e', // green\n recommend: '#fbbf24', // yellow/gold\n translate: '#a855f7', // purple\n workflow: '#3b82f6', // blue\n team: '#ffffff', // white\n private: '#ef4444', // red\n tag: '#fbbf24', // yellow\n export: '#22c55e', // green\n delete: '#ef4444', // red\n} as const;\n\nexport type ColorName = keyof typeof colors;\nexport type ColorValue = (typeof colors)[ColorName];\n\n/**\n * Get a color value by name\n */\nexport function getColor(name: ColorName): ColorValue {\n return colors[name];\n}\n\n/**\n * Terminal-safe color names for OpenTUI\n * Maps our design system colors to terminal-compatible values\n */\nexport const terminalColors = {\n background: 'black',\n surface: 'black',\n text: 'white',\n textSecondary: 'gray',\n textMuted: 'gray',\n accent: 'green',\n success: 'green',\n warning: 'yellow',\n error: 'red',\n info: 'blue',\n sync: 'cyan',\n browse: 'green',\n recommend: 'yellow',\n translate: 'magenta',\n workflow: 'blue',\n team: 'white',\n border: 'gray',\n} as const;\n","/**\n * Helper utilities for agent and skill operations\n */\nimport {\n loadConfig,\n getSearchDirs as coreGetSearchDirs,\n getInstallDir as coreGetInstallDir,\n saveSkillMetadata as coreSaveSkillMetadata,\n} from '@skillkit/core';\nimport { getAdapter } from '@skillkit/agents';\nimport type { AgentType, AgentAdapterInfo, SkillMetadata } from '@skillkit/core';\nimport { readFileSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Get search directories for skills based on agent type\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Array of directories to search for skills\n */\nexport function getSearchDirs(agentType?: AgentType): string[] {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetSearchDirs(adapterInfo);\n}\n\n/**\n * Get installation directory for skills\n * @param global - Whether to get global or project-local directory\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Installation directory path\n */\nexport function getInstallDir(global = false, agentType?: AgentType): string {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetInstallDir(adapterInfo, global);\n}\n\n/**\n * Save skill metadata to a skill directory\n * @param skillDir - Directory containing the skill\n * @param metadata - Metadata to save\n */\nexport function saveSkillMetadata(\n skillDir: string,\n metadata: SkillMetadata\n): void {\n coreSaveSkillMetadata(skillDir, metadata);\n}\n\n/**\n * Get version from package.json\n * @returns Version string\n */\nexport function getVersion(): string {\n try {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const paths = [\n join(__dirname, '..', 'package.json'),\n join(__dirname, '..', '..', 'package.json'),\n join(__dirname, '..', '..', '..', 'package.json'),\n ];\n for (const packagePath of paths) {\n try {\n const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));\n if (packageJson.name === '@skillkit/tui' || packageJson.name === 'skillkit') {\n return packageJson.version || '1.8.0';\n }\n } catch {}\n }\n return '1.8.0';\n } catch {\n return '1.8.0';\n }\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\nconst LOGO_FRAMES = [\n [\n ' ',\n ' · · · · · · · · · · · · · · · ',\n ' ',\n ],\n [\n ' ',\n ' ━━━ ━ ━ ━ ━ ━ ━ ━ ━━━ ',\n ' ',\n ],\n [\n ' ┌──┐ ┬ ┌─ ┬ ┬ ┬ ┬ ┌─ ┬ ┌─┐ ',\n ' └──┐ │ │ │ │ │ │ │ │ │ ',\n ' └──┘ ┴ └─ ┴ ┴─┘ ┴─┘ ┴ └─ ┴ ┴ ',\n ],\n [\n ' ╔═╗ ╦╔═ ╦ ╦ ╦ ╦╔═ ╦╔╦╗ ',\n ' ╚═╗ ╠╩╗ ║ ║ ║ ╠╩╗ ║ ║ ',\n ' ╚═╝ ╩ ╩ ╩ ╩═╝ ╩═╝ ╩ ╩ ╩ ╩ ',\n ],\n [\n ' ███████╗██╗ ██╗██╗██╗ ██╗ ██╗ ██╗██╗████████╗',\n ' ██╔════╝██║ ██╔╝██║██║ ██║ ██║ ██╔╝██║╚══██╔══╝',\n ' ███████╗█████╔╝ ██║██║ ██║ █████╔╝ ██║ ██║ ',\n ' ╚════██║██╔═██╗ ██║██║ ██║ ██╔═██╗ ██║ ██║ ',\n ' ███████║██║ ██╗██║███████╗███████╗██║ ██╗██║ ██║ ',\n ' ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ',\n ],\n];\n\nconst LOGO_SMALL = [\n ' ╔═╗╦╔═╦╦ ╦ ╦╔═╦╔╦╗ ',\n ' ╚═╗╠╩╗║║ ║ ╠╩╗║ ║ ',\n ' ╚═╝╩ ╩╩╩═╝╩═╝╩ ╩╩ ╩ ',\n];\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nconst PROGRESS = {\n empty: '░',\n filled: '█',\n head: '▓',\n};\n\nconst PHASES = [\n { message: 'Initializing', detail: 'skill engine' },\n { message: 'Connecting', detail: 'agent network' },\n { message: 'Loading', detail: 'skill manifests' },\n { message: 'Syncing', detail: 'configurations' },\n { message: 'Ready', detail: '' },\n];\n\ninterface SplashProps {\n onComplete: () => void;\n duration?: number;\n}\n\nexport function Splash(props: SplashProps) {\n const [frame, setFrame] = createSignal(0);\n const [progress, setProgress] = createSignal(0);\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const [phase, setPhase] = createSignal(0);\n const [fadeIn, setFadeIn] = createSignal(0);\n const [particles, setParticles] = createSignal<string[]>([]);\n\n const version = createMemo(() => getVersion());\n const cols = process.stdout.columns || 80;\n const rows = process.stdout.rows || 24;\n const useSmallLogo = cols < 70;\n\n const currentLogo = () => {\n return useSmallLogo ? LOGO_SMALL : (LOGO_FRAMES[Math.min(frame(), 4)] || LOGO_FRAMES[4]);\n };\n\n const maxWidth = () => Math.max(...currentLogo().map((l) => l.length));\n\n const generateParticles = () => {\n const chars = ['·', '∙', '•', '○', '◦', '◌', '◍', '◎'];\n return Array(cols)\n .fill(0)\n .map(() => (Math.random() > 0.97 ? chars[Math.floor(Math.random() * chars.length)] : ' '))\n .join('');\n };\n\n createEffect(() => {\n if (frame() >= 4) return;\n const timer = setTimeout(() => setFrame((f) => f + 1), 200);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n if (fadeIn() >= 10) return;\n const timer = setTimeout(() => setFadeIn((f) => f + 1), 50);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setProgress((p) => {\n const newProgress = p + (Math.random() * 3 + 1);\n if (newProgress >= 100) {\n clearInterval(interval);\n return 100;\n }\n return newProgress;\n });\n }, 50);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const phaseProgress = progress() / 20;\n setPhase(Math.min(Math.floor(phaseProgress), PHASES.length - 1));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setParticles((prev) => {\n const newParticles = [...prev];\n if (newParticles.length > 3) newParticles.shift();\n newParticles.push(generateParticles());\n return newParticles;\n });\n }, 150);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const timer = setTimeout(props.onComplete, props.duration ?? 3500);\n onCleanup(() => clearTimeout(timer));\n });\n\n const pad = () => ' '.repeat(Math.max(0, Math.floor((cols - maxWidth()) / 2)));\n const progressWidth = Math.max(1, Math.min(40, cols - 20));\n const progressPad = ' '.repeat(Math.max(0, Math.floor((cols - progressWidth) / 2)));\n\n const filledWidth = () => Math.min(Math.floor((progress() / 100) * progressWidth), progressWidth);\n const emptyWidth = () => Math.max(0, progressWidth - filledWidth() - 1);\n const progressBar = () =>\n PROGRESS.filled.repeat(filledWidth()) +\n (filledWidth() < progressWidth ? PROGRESS.head : '') +\n PROGRESS.empty.repeat(emptyWidth());\n\n const currentPhase = () => PHASES[phase()];\n\n return (\n <box flexDirection=\"column\" height={rows}>\n <text fg={terminalColors.textMuted}>{particles()[0] || ''}</text>\n\n <box flexGrow={1} />\n\n <box flexDirection=\"column\" alignItems=\"center\">\n <For each={currentLogo()}>\n {(line, idx) => (\n <text fg={frame() >= 4 ? terminalColors.accent : terminalColors.textMuted}>\n {frame() >= 4 ? (\n <b>\n {pad()}\n {line}\n </b>\n ) : (\n <>\n {pad()}\n {line}\n </>\n )}\n </text>\n )}\n </For>\n </box>\n\n <text> </text>\n <Show when={fadeIn() > 3}>\n <text fg={terminalColors.textSecondary}>\n {pad()}\n {' '}universal skills for ai coding agents\n </text>\n </Show>\n\n <Show when={fadeIn() > 5}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {pad()}\n {' '}v{version()}\n </text>\n </Show>\n\n <text> </text>\n <text> </text>\n\n <Show when={fadeIn() > 7}>\n <box flexDirection=\"column\" alignItems=\"center\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>\n {progressPad}\n {SPINNER[spinnerFrame()]}{' '}\n </text>\n <text fg={terminalColors.text}>\n <b>{currentPhase().message}</b>\n </text>\n <Show when={currentPhase().detail}>\n <text fg={terminalColors.textMuted}> {currentPhase().detail}</text>\n </Show>\n </box>\n\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{progressPad}[</text>\n <text fg={terminalColors.accent}>{progressBar()}</text>\n <text fg={terminalColors.textMuted}>]</text>\n <text fg={terminalColors.textSecondary}> {Math.floor(progress())}%</text>\n </box>\n </box>\n </Show>\n\n <box flexGrow={1} />\n\n <box flexDirection=\"column\" alignItems=\"center\">\n <text fg={terminalColors.textMuted}>\n {progressPad}\n {' '}press any key to skip\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>{particles()[1] || ''}</text>\n </box>\n </box>\n );\n}\n","/**\n * Unicode symbols and agent logos for SkillKit TUI\n * Monochromatic design system for terminal display\n */\n\n/**\n * Agent logo definitions with monochromatic icons\n */\nexport interface AgentLogo {\n icon: string;\n name: string;\n company: string;\n}\n\n/**\n * All 32 supported agents with monochromatic Unicode logos\n */\nexport const AGENT_LOGOS: Record<string, AgentLogo> = {\n 'claude-code': { icon: '⟁', name: 'Claude Code', company: 'Anthropic' },\n 'cursor': { icon: '◫', name: 'Cursor', company: 'Anysphere' },\n 'codex': { icon: '◎', name: 'Codex CLI', company: 'OpenAI' },\n 'gemini-cli': { icon: '✦', name: 'Gemini CLI', company: 'Google' },\n 'opencode': { icon: '⬡', name: 'OpenCode', company: 'SST' },\n 'github-copilot': { icon: '◈', name: 'Copilot', company: 'GitHub' },\n 'windsurf': { icon: '≋', name: 'Windsurf', company: 'Codeium' },\n 'droid': { icon: '▣', name: 'Droid', company: 'Factory' },\n 'goose': { icon: '◇', name: 'Goose', company: 'Block' },\n 'amp': { icon: '△', name: 'Amp', company: 'Sourcegraph' },\n 'kilo': { icon: '◉', name: 'Kilo Code', company: '' },\n 'kiro-cli': { icon: '⬢', name: 'Kiro', company: 'AWS' },\n 'roo': { icon: '⊙', name: 'Roo Code', company: '' },\n 'trae': { icon: '◆', name: 'Trae', company: 'ByteDance' },\n 'antigravity': { icon: '⊛', name: 'Antigravity', company: '' },\n 'clawdbot': { icon: '⟐', name: 'Clawdbot', company: '' },\n 'cline': { icon: '⊕', name: 'Cline', company: '' },\n 'codebuddy': { icon: '⊗', name: 'CodeBuddy', company: '' },\n 'commandcode': { icon: '⊘', name: 'CommandCode', company: '' },\n 'continue': { icon: '⊞', name: 'Continue', company: '' },\n 'crush': { icon: '⊟', name: 'Crush', company: '' },\n 'factory': { icon: '⊠', name: 'Factory', company: '' },\n 'mcpjam': { icon: '⊡', name: 'MCPJam', company: '' },\n 'mux': { icon: '⊢', name: 'Mux', company: '' },\n 'neovate': { icon: '⊣', name: 'Neovate', company: '' },\n 'openhands': { icon: '⊤', name: 'OpenHands', company: '' },\n 'pi': { icon: '⊥', name: 'Pi', company: '' },\n 'qoder': { icon: '⊦', name: 'Qoder', company: '' },\n 'qwen': { icon: '⊧', name: 'Qwen', company: 'Alibaba' },\n 'vercel': { icon: '▲', name: 'Vercel', company: 'Vercel' },\n 'zencoder': { icon: '⊩', name: 'Zencoder', company: '' },\n 'universal': { icon: '●', name: 'Universal', company: '' },\n} as const;\n\n/**\n * UI symbols for status and navigation\n */\nexport const symbols = {\n // Navigation\n pointer: '▸',\n pointerInactive: ' ',\n bullet: '●',\n bulletEmpty: '○',\n\n // Status\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n active: '●',\n synced: '●',\n\n // Progress\n progressFilled: '█',\n progressEmpty: '░',\n\n // Spinner frames\n spinner: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] as const,\n\n // Arrows\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n\n // Decorative\n diamond: '◆',\n diamondEmpty: '◇',\n star: '★',\n starEmpty: '☆',\n\n // Box drawing\n horizontalLine: '─',\n verticalLine: '│',\n topLeft: '┌',\n topRight: '┐',\n bottomLeft: '└',\n bottomRight: '┘',\n\n // Brand\n brandIcon: '◆',\n} as const;\n\nexport type SymbolName = keyof typeof symbols;\n\n/**\n * Get agent logo by agent type ID\n */\nexport function getAgentLogo(agentType: string): AgentLogo | undefined {\n return AGENT_LOGOS[agentType];\n}\n\n/**\n * Get all agent types\n */\nexport function getAgentTypes(): string[] {\n return Object.keys(AGENT_LOGOS);\n}\n\n/**\n * Get formatted agent display string (icon + name)\n */\nexport function formatAgentDisplay(agentType: string): string {\n const logo = AGENT_LOGOS[agentType];\n if (!logo) return agentType;\n return `${logo.icon} ${logo.name}`;\n}\n","import { For, Show } from 'solid-js';\nimport { type Screen, SIDEBAR_NAV } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface SidebarProps {\n screen: Screen;\n onNavigate: (screen: Screen) => void;\n}\n\nexport function Sidebar(props: SidebarProps) {\n const version = getVersion();\n\n return (\n <box flexDirection=\"column\" width={18} paddingRight={1}>\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b>\n </text>\n <text fg={terminalColors.textMuted}>v{version}</text>\n <text> </text>\n\n <For each={SIDEBAR_NAV}>\n {(nav, idx) => (\n <box flexDirection=\"column\">\n <Show when={idx() > 0}>\n <text> </text>\n </Show>\n <text fg={terminalColors.textMuted}>\n <i>{nav.section}</i>\n </text>\n <For each={nav.items}>\n {(item) => {\n const active = () => props.screen === item.screen;\n return (\n <text fg={active() ? terminalColors.accent : terminalColors.text}>\n {active() ? (\n <b>\n {symbols.pointer} {item.label}\n </b>\n ) : (\n <>\n {symbols.pointerInactive} {item.label}\n </>\n )}\n </text>\n );\n }}\n </For>\n </box>\n )}\n </For>\n\n <box flexGrow={1} />\n <text fg={terminalColors.textMuted}>{symbols.horizontalLine.repeat(14)}</text>\n <text fg={terminalColors.textMuted}>/ help q quit</text>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { STATUS_BAR_SHORTCUTS } from '../state/types.js';\n\ninterface StatusBarProps {\n message?: string;\n messageType?: 'info' | 'success' | 'error' | 'warning';\n shortcuts?: string;\n}\n\nexport function StatusBar(props: StatusBarProps) {\n const messageType = () => props.messageType ?? 'info';\n const shortcuts = () => props.shortcuts ?? STATUS_BAR_SHORTCUTS;\n\n const messageColors = {\n info: terminalColors.info,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n };\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{'\\u2500'.repeat(70)}</text>\n <Show when={props.message} fallback={<text fg={terminalColors.textMuted}>{shortcuts()}</text>}>\n <text fg={messageColors[messageType()]}>{props.message}</text>\n </Show>\n </box>\n );\n}\n","/**\n * Navigation state management for SkillKit TUI\n */\nimport type { Screen } from './types.js';\nimport { NAV_KEYS } from './types.js';\n\n/**\n * Navigation state\n */\nexport interface NavigationState {\n currentScreen: Screen;\n previousScreen: Screen | null;\n history: Screen[];\n}\n\n/**\n * Create initial navigation state\n */\nexport function createNavigationState(): NavigationState {\n return {\n currentScreen: 'home',\n previousScreen: null,\n history: ['home'],\n };\n}\n\n/**\n * Navigate to a new screen\n */\nexport function navigateTo(state: NavigationState, screen: Screen): NavigationState {\n if (state.currentScreen === screen) return state;\n\n return {\n currentScreen: screen,\n previousScreen: state.currentScreen,\n history: [...state.history, screen],\n };\n}\n\n/**\n * Go back to previous screen (or home)\n */\nexport function goBack(state: NavigationState): NavigationState {\n const previousScreen = state.previousScreen || 'home';\n return {\n currentScreen: previousScreen,\n previousScreen: state.history[state.history.length - 3] || null,\n history: state.history.slice(0, -1),\n };\n}\n\n/**\n * Get screen from key press\n */\nexport function getScreenFromKey(key: string): Screen | undefined {\n return NAV_KEYS[key];\n}\n\n/**\n * Check if a key is a navigation key\n */\nexport function isNavKey(key: string): boolean {\n return key in NAV_KEYS;\n}\n\nexport { NAV_KEYS };\n","/**\n * Skills state management for SkillKit TUI\n */\nimport { findAllSkills, evaluateSkillDirectory, getQualityGrade } from '@skillkit/core';\nimport { rmSync } from 'node:fs';\nimport { resolve, normalize } from 'node:path';\nimport { getSearchDirs } from '../utils/helpers.js';\nimport type { SkillItem } from './types.js';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Detailed skill info including path for translation\n */\nexport interface SkillWithDetails {\n name: string;\n description?: string;\n path: string;\n source?: string;\n enabled: boolean;\n}\n\n/**\n * Skills store state\n */\nexport interface SkillsState {\n skills: SkillItem[];\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial skills state\n */\nexport function createSkillsState(): SkillsState {\n return {\n skills: [],\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load installed skills\n * @param agentType - Optional agent type to load skills for\n * @returns Updated skills state\n */\nexport function loadSkills(agentType?: AgentType): SkillsState {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n const skillItems: SkillItem[] = foundSkills.map((s) => {\n const quality = evaluateSkillDirectory(s.path);\n return {\n name: s.name,\n description: s.description,\n source: s.metadata?.source,\n enabled: s.enabled,\n quality: quality?.overall,\n grade: quality ? getQualityGrade(quality.overall) : undefined,\n warnings: quality?.warnings.length,\n };\n });\n\n return {\n skills: skillItems,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n skills: [],\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load skills',\n };\n }\n}\n\n/**\n * Remove a skill by name\n * @param skillName - Name of the skill to remove\n * @param agentType - Optional agent type\n * @returns true if removed, false otherwise\n */\nexport function removeSkill(skillName: string, agentType?: AgentType): boolean {\n try {\n const searchDirs = getSearchDirs(agentType);\n const allSkills = findAllSkills(searchDirs);\n const skill = allSkills.find((s) => s.name === skillName);\n\n if (skill) {\n const normalizedPath = normalize(resolve(skill.path));\n const isWithinSearchDirs = searchDirs.some((dir) => {\n const normalizedDir = normalize(resolve(dir));\n return normalizedPath.startsWith(normalizedDir + '/') || normalizedPath === normalizedDir;\n });\n\n if (!isWithinSearchDirs) {\n return false;\n }\n\n rmSync(skill.path, { recursive: true, force: true });\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterSkills(skills: SkillItem[], query: string): SkillItem[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery) ||\n s.source?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Load skills with full details including path for translation\n * @param agentType - Optional agent type to load skills for\n * @returns Array of skills with path details\n */\nexport function loadSkillsWithDetails(agentType?: AgentType): SkillWithDetails[] {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n return foundSkills.map((s) => ({\n name: s.name,\n description: s.description,\n path: s.path,\n source: s.metadata?.source,\n enabled: s.enabled,\n }));\n } catch {\n return [];\n }\n}\n","/**\n * Agent state management for SkillKit TUI\n */\nimport { loadConfig } from '@skillkit/core';\nimport { detectAgent, getAdapter, getAllAdapters } from '@skillkit/agents';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Agent status information\n */\nexport interface AgentStatus {\n type: AgentType;\n name: string;\n detected: boolean;\n configured: boolean;\n}\n\n/**\n * Agents state\n */\nexport interface AgentsState {\n agents: AgentStatus[];\n currentAgent: AgentType;\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial agents state\n */\nexport function createAgentsState(): AgentsState {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load all agents with their detection status\n */\nexport async function loadAgents(): Promise<AgentsState> {\n try {\n const config = loadConfig();\n const currentAgent = config.agent || 'universal';\n const detectedAgent = await detectAgent();\n const allAdapters = getAllAdapters();\n\n const agents: AgentStatus[] = allAdapters.map((adapter) => ({\n type: adapter.type,\n name: adapter.name,\n detected: adapter.type === detectedAgent,\n configured: adapter.type === currentAgent,\n }));\n\n return {\n agents,\n currentAgent,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load agents',\n };\n }\n}\n\n/**\n * Get count of detected agents\n */\nexport function getDetectedAgentCount(state: AgentsState): number {\n return state.agents.filter((a) => a.detected).length;\n}\n\n/**\n * Get list of detected agents\n */\nexport function getDetectedAgents(state: AgentsState): AgentStatus[] {\n return state.agents.filter((a) => a.detected);\n}\n\n/**\n * Get agent adapter by type\n */\nexport function getAgentAdapter(type: AgentType) {\n return getAdapter(type);\n}\n\n/**\n * Total number of supported agents (derived from adapters)\n */\nexport const TOTAL_AGENTS = getAllAdapters().length;\n","/**\n * Marketplace state management for SkillKit TUI\n */\nimport { detectProvider, loadConfig, extractFrontmatter } from '@skillkit/core';\nimport { readFileSync, existsSync, rmSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { SkillItem, RepoInfo, FetchedSkill } from './types.js';\n\n/**\n * Default repos loaded from marketplace/sources.json (single source of truth)\n * Import at runtime to allow updates without code changes\n */\nimport sourcesData from '../../../../marketplace/sources.json' with { type: 'json' };\n\nexport const DEFAULT_REPOS: RepoInfo[] = sourcesData.sources.map((s: { source: string; name: string }) => ({\n source: s.source,\n name: s.name,\n}));\n\n/**\n * Marketplace state\n */\nexport interface MarketplaceState {\n allSkills: FetchedSkill[];\n filteredSkills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n currentRepo: string | null;\n fetchedRepos: Set<string>;\n failedRepos: string[];\n repos: RepoInfo[];\n}\n\n/**\n * Get marketplace repos from config or use defaults\n */\nexport function getMarketplaceRepos(): RepoInfo[] {\n try {\n const config = loadConfig();\n if (config.marketplaceSources?.length) {\n const configRepos: RepoInfo[] = config.marketplaceSources.map((source) => ({\n source,\n name: source.split('/').pop() || source,\n }));\n const existingSources = new Set(configRepos.map((r) => r.source));\n for (const repo of DEFAULT_REPOS) {\n if (!existingSources.has(repo.source)) {\n configRepos.push(repo);\n }\n }\n return configRepos;\n }\n } catch {\n // Config load failed, use defaults\n }\n return DEFAULT_REPOS;\n}\n\n/**\n * Create initial marketplace state\n */\nexport function createMarketplaceState(): MarketplaceState {\n return {\n allSkills: [],\n filteredSkills: [],\n loading: false,\n error: null,\n currentRepo: null,\n fetchedRepos: new Set(),\n failedRepos: [],\n repos: getMarketplaceRepos(),\n };\n}\n\n/**\n * Try to read skill description from frontmatter\n */\nexport function readSkillDescription(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (!existsSync(skillMdPath)) {\n return undefined;\n }\n try {\n const content = readFileSync(skillMdPath, 'utf-8');\n const frontmatter = extractFrontmatter(content);\n if (frontmatter && typeof frontmatter.description === 'string') {\n return frontmatter.description;\n }\n } catch {\n // Failed to read, return undefined\n }\n return undefined;\n}\n\n/**\n * Fetch skills from a single repository\n */\nexport async function fetchRepoSkills(\n source: string,\n repos: RepoInfo[]\n): Promise<{\n skills: FetchedSkill[];\n tempRoot?: string;\n error?: string;\n}> {\n try {\n const provider = detectProvider(source);\n if (!provider) {\n return { skills: [], error: `Could not detect provider for: ${source}` };\n }\n\n const result = await provider.clone(source, '', { depth: 1 });\n\n if (!result.success || !result.discoveredSkills) {\n return { skills: [], error: result.error || 'Failed to fetch skills' };\n }\n\n const repoName = repos.find((r) => r.source === source)?.name || source;\n const skills: FetchedSkill[] = result.discoveredSkills.map((skill) => ({\n name: skill.name,\n source: source,\n repoName: repoName,\n description: readSkillDescription(skill.path),\n }));\n\n return { skills, tempRoot: result.tempRoot };\n } catch (err) {\n return {\n skills: [],\n error: err instanceof Error ? err.message : 'Failed to fetch repository',\n };\n }\n}\n\n/**\n * Clean up temp directory from fetch\n */\nexport function cleanupTempRoot(tempRoot: string): void {\n try {\n rmSync(tempRoot, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterMarketplaceSkills(\n skills: FetchedSkill[],\n query: string\n): FetchedSkill[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.source.toLowerCase().includes(lowerQuery) ||\n s.repoName.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Convert fetched skills to skill items for display\n */\nexport function toSkillItems(skills: FetchedSkill[]): SkillItem[] {\n return skills.map((s) => ({\n name: s.name,\n description: s.description || s.repoName,\n source: s.source,\n }));\n}\n\n/**\n * Sort skills alphabetically by name\n */\nexport function sortSkillsByName(skills: FetchedSkill[]): FetchedSkill[] {\n return [...skills].sort((a, b) => a.name.localeCompare(b.name));\n}\n","{\n \"$schema\": \"./sources-schema.json\",\n \"version\": 1,\n \"updatedAt\": \"2026-01-26\",\n \"description\": \"Curated skill repository sources - THE SINGLE SOURCE OF TRUTH\",\n \"sources\": [\n { \"source\": \"anthropics/skills\", \"name\": \"Anthropic Official\", \"official\": true },\n { \"source\": \"vercel-labs/agent-skills\", \"name\": \"Vercel Labs\", \"official\": true },\n { \"source\": \"expo/skills\", \"name\": \"Expo / React Native\", \"official\": true },\n { \"source\": \"remotion-dev/skills\", \"name\": \"Remotion Video\", \"official\": true },\n { \"source\": \"supabase/agent-skills\", \"name\": \"Supabase\", \"official\": true },\n { \"source\": \"stripe/ai\", \"name\": \"Stripe Payments\", \"official\": true },\n { \"source\": \"ComposioHQ/awesome-claude-skills\", \"name\": \"Composio Awesome\" },\n { \"source\": \"travisvn/awesome-claude-skills\", \"name\": \"Travis Awesome\" },\n { \"source\": \"mhattingpete/claude-skills-marketplace\", \"name\": \"Skills Marketplace\" },\n { \"source\": \"coreyhaines31/marketingskills\", \"name\": \"Marketing Skills\" },\n { \"source\": \"obra/superpowers\", \"name\": \"Superpowers TDD\" },\n { \"source\": \"softaworks/agent-toolkit\", \"name\": \"Softaworks Toolkit\" },\n { \"source\": \"wshobson/agents\", \"name\": \"Dev Patterns\" },\n { \"source\": \"langgenius/dify\", \"name\": \"Dify Frontend\" },\n { \"source\": \"trailofbits/skills\", \"name\": \"Trail of Bits Security\" },\n { \"source\": \"better-auth/skills\", \"name\": \"Better Auth\" },\n { \"source\": \"onmax/nuxt-skills\", \"name\": \"Nuxt / Vue\" },\n { \"source\": \"hyf0/vue-skills\", \"name\": \"Vue Best Practices\" },\n { \"source\": \"jezweb/claude-skills\", \"name\": \"Cloudflare / TanStack\" },\n { \"source\": \"elysiajs/skills\", \"name\": \"ElysiaJS / Bun\" },\n { \"source\": \"kadajett/agent-nestjs-skills\", \"name\": \"NestJS\" },\n { \"source\": \"callstackincubator/agent-skills\", \"name\": \"React Native\" },\n { \"source\": \"cloudai-x/threejs-skills\", \"name\": \"Three.js\" },\n { \"source\": \"emalorenzo/three-agent-skills\", \"name\": \"Three.js Advanced\" },\n { \"source\": \"dimillian/skills\", \"name\": \"SwiftUI iOS\" },\n { \"source\": \"waynesutton/convexskills\", \"name\": \"Convex Backend\" },\n { \"source\": \"kepano/obsidian-skills\", \"name\": \"Obsidian Notes\" },\n { \"source\": \"jimliu/baoyu-skills\", \"name\": \"Baoyu Tools\" },\n { \"source\": \"giuseppe-trisciuoglio/developer-kit\", \"name\": \"Shadcn / Radix\" },\n { \"source\": \"openrouterteam/agent-skills\", \"name\": \"OpenRouter SDK\" },\n { \"source\": \"intellectronica/agent-skills\", \"name\": \"Context7\" }\n ]\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { type Screen, loadSkills, TOTAL_AGENTS } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HomeProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst FEATURES = [\n { key: 'Sync', color: terminalColors.sync, desc: 'share across agents' },\n { key: 'Browse', color: terminalColors.browse, desc: 'discover skills' },\n { key: 'Recommend', color: terminalColors.recommend, desc: 'AI suggestions' },\n { key: 'Translate', color: terminalColors.translate, desc: 'convert formats' },\n { key: 'Workflow', color: terminalColors.workflow, desc: 'automate chains' },\n { key: 'Team', color: terminalColors.text, desc: 'collaborate' },\n];\n\nexport function Home(props: HomeProps) {\n const [animPhase, setAnimPhase] = createSignal(0);\n const [stats, setStats] = createSignal({ skills: 0, agents: TOTAL_AGENTS, synced: 0 });\n const [detectedAgents, setDetectedAgents] = createSignal<string[]>([]);\n\n const cols = () => props.cols ?? 80;\n const version = getVersion();\n const isCompact = () => cols() < 70;\n const isNarrow = () => cols() < 50;\n const contentWidth = () => Math.min(cols() - 4, 55);\n const line = () => '─'.repeat(contentWidth());\n\n createEffect(() => {\n if (animPhase() >= 5) return;\n const timer = setTimeout(() => setAnimPhase((p) => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n const skillsData = loadSkills();\n setStats({\n skills: skillsData.skills.length,\n agents: TOTAL_AGENTS,\n synced: Math.min(skillsData.skills.length, 3),\n });\n setDetectedAgents(['claude-code', 'cursor', 'github-copilot']);\n });\n\n const visibleAgents = createMemo(() => {\n const allAgents = Object.entries(AGENT_LOGOS);\n const perRow = isNarrow() || isCompact() ? 2 : 3;\n const maxAgents = isNarrow() ? 4 : isCompact() ? 6 : 9;\n return {\n agents: allAgents.slice(0, maxAgents),\n perRow,\n remaining: allAgents.length - maxAgents,\n };\n });\n\n const getAgentWidth = () => {\n if (isNarrow()) return 22;\n if (isCompact()) return 26;\n return 18;\n };\n\n const agentRows = createMemo(() => {\n const { agents, perRow } = visibleAgents();\n const rows: typeof agents[] = [];\n for (let i = 0; i < agents.length; i += perRow) {\n rows.push(agents.slice(i, i + perRow));\n }\n return rows;\n });\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>\n {symbols.brandIcon} skillkit\n </text>\n <text fg={terminalColors.textMuted}> v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>universal skills for ai coding agents</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n <box flexDirection=\"row\">\n <box width={14}>\n <text fg={terminalColors.accent}>{stats().skills}</text>\n </box>\n <box width={14}>\n <text fg={terminalColors.text}>{stats().agents}</text>\n </box>\n <box width={14}>\n <text fg={terminalColors.text}>{stats().synced}</text>\n </box>\n </box>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted} width={14}>\n skills\n </text>\n <text fg={terminalColors.textMuted} width={14}>\n agents\n </text>\n <text fg={terminalColors.textMuted} width={14}>\n synced\n </text>\n </box>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 3}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Works with</text>\n <text> </text>\n <For each={agentRows()}>\n {(row) => (\n <box flexDirection=\"row\">\n <For each={row}>\n {([type, agent]) => {\n const isDetected = () => detectedAgents().includes(type);\n return (\n <box width={getAgentWidth()} flexDirection=\"row\">\n <text fg={terminalColors.text}>\n {agent.icon} {agent.name}{' '}\n </text>\n <text fg={isDetected() ? terminalColors.accent : terminalColors.textMuted}>\n {isDetected() ? '●' : '○'}\n </text>\n </box>\n );\n }}\n </For>\n </box>\n )}\n </For>\n <Show when={visibleAgents().remaining > 0}>\n <text fg={terminalColors.textMuted}>+{visibleAgents().remaining} more</text>\n </Show>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 4}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Features</text>\n <text> </text>\n <For each={FEATURES}>\n {(feat) => (\n <box flexDirection=\"row\">\n <text fg={feat.color} width={12}>\n {' '}\n {feat.key}\n </text>\n <text fg={terminalColors.textMuted}>{feat.desc}</text>\n </box>\n )}\n </For>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 5}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text fg={terminalColors.textMuted}>\n {isCompact()\n ? 'b browse m market / help q quit'\n : 'b browse m market i installed / help q quit'}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface HeaderProps {\n title: string;\n subtitle?: string;\n count?: number;\n badge?: string;\n icon?: string;\n}\n\nexport function Header(props: HeaderProps) {\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\" gap={2}>\n <text fg={terminalColors.text}>\n <b>\n {props.icon && `${props.icon} `}\n {props.title}\n </b>\n </text>\n <Show when={props.count !== undefined}>\n <text fg={terminalColors.textMuted}>({props.count})</text>\n </Show>\n <Show when={props.badge}>\n <text fg={terminalColors.accent}>[{props.badge}]</text>\n </Show>\n </box>\n <Show when={props.subtitle}>\n <text fg={terminalColors.textSecondary}>{props.subtitle}</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface SpinnerProps {\n label?: string;\n color?: keyof typeof terminalColors;\n}\n\nexport function Spinner(props: SpinnerProps) {\n const [frame, setFrame] = createSignal(0);\n\n createEffect(() => {\n const interval = setInterval(() => {\n setFrame((f) => (f + 1) % symbols.spinner.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n const color = () => props.color ?? 'accent';\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text fg={terminalColors[color()]}>{symbols.spinner[frame()]}</text>\n <Show when={props.label}>\n <text fg={terminalColors.text}>{props.label}</text>\n </Show>\n </box>\n );\n}\n","/**\n * EmptyState Component\n * Consistent \"no data\" display\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface EmptyStateProps {\n icon?: string;\n title: string;\n description?: string;\n action?: {\n label: string;\n key?: string;\n };\n compact?: boolean;\n}\n\nexport function EmptyState(props: EmptyStateProps) {\n const compact = () => props.compact ?? false;\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <Show when={props.icon}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>\n {props.icon}\n </text>\n </box>\n </Show>\n\n <box marginBottom={1}>\n <text fg={terminalColors.textSecondary}>\n {props.title}\n </text>\n </box>\n\n <Show when={props.description}>\n <text fg={terminalColors.textMuted}>{props.description}</text>\n </Show>\n\n <Show when={props.action}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n <Show when={props.action!.key}>\n <text fg={terminalColors.accent}>{props.action!.key}</text>{' '}\n </Show>\n {props.action!.label}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n\ninterface LoadingStateProps {\n message?: string;\n compact?: boolean;\n}\n\nexport function LoadingState(props: LoadingStateProps) {\n const compact = () => props.compact ?? false;\n const message = () => props.message ?? 'Loading...';\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <text fg={terminalColors.accent}>⟳ {message()}</text>\n </box>\n );\n}\n\ninterface ErrorStateProps {\n title?: string;\n message: string;\n action?: {\n label: string;\n key?: string;\n };\n compact?: boolean;\n}\n\nexport function ErrorState(props: ErrorStateProps) {\n const compact = () => props.compact ?? false;\n const title = () => props.title ?? 'Error';\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <box marginBottom={1}>\n <text fg={terminalColors.error}>\n ✗ {title()}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>{props.message}</text>\n\n <Show when={props.action}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n <Show when={props.action!.key}>\n <text fg={terminalColors.accent}>{props.action!.key}</text>{' '}\n </Show>\n {props.action!.label}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n","/**\n * DetailPane Component\n * Right-side detail panel with animated slide-in\n */\n\nimport { Show, For, createSignal, createEffect, onCleanup, type JSX } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface DetailField {\n label: string;\n value: string | string[];\n color?: string;\n}\n\ninterface DetailPaneProps {\n title: string;\n subtitle?: string;\n icon?: string;\n fields?: DetailField[];\n content?: string;\n actions?: Array<{ key: string; label: string }>;\n width?: number;\n visible?: boolean;\n onClose?: () => void;\n children?: JSX.Element;\n}\n\nexport function DetailPane(props: DetailPaneProps) {\n const [slideProgress, setSlideProgress] = createSignal(0);\n const width = () => props.width ?? 30;\n const visible = () => props.visible ?? true;\n\n createEffect(() => {\n if (visible()) {\n let frame = 0;\n let timeoutId: ReturnType<typeof setTimeout>;\n const animate = () => {\n frame++;\n const progress = Math.min(frame / 10, 1);\n setSlideProgress(progress);\n if (progress < 1) {\n timeoutId = setTimeout(animate, 16);\n }\n };\n timeoutId = setTimeout(animate, 16);\n onCleanup(() => clearTimeout(timeoutId));\n } else {\n setSlideProgress(0);\n }\n });\n\n const effectiveWidth = () => Math.round(width() * slideProgress());\n\n return (\n <Show when={visible() && slideProgress() > 0}>\n <box\n flexDirection=\"column\"\n width={effectiveWidth()}\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n paddingY={1}\n >\n <box flexDirection=\"row\" marginBottom={1}>\n <Show when={props.icon}>\n <text fg={terminalColors.accent}>{props.icon} </text>\n </Show>\n <text fg={terminalColors.text}>\n <b>{props.title}</b>\n </text>\n <Show when={props.onClose}>\n <box onClick={() => props.onClose?.()}>\n <text fg={terminalColors.textMuted}> [x]</text>\n </box>\n </Show>\n </box>\n\n <Show when={props.subtitle}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>{props.subtitle}</text>\n </box>\n </Show>\n\n <Show when={props.fields && props.fields.length > 0}>\n <box flexDirection=\"column\" marginBottom={1}>\n <For each={props.fields}>\n {(field) => (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>{field.label}</text>\n <Show\n when={Array.isArray(field.value)}\n fallback={\n <text fg={field.color || terminalColors.text}>\n {field.value as string}\n </text>\n }\n >\n <For each={field.value as string[]}>\n {(val) => (\n <text fg={field.color || terminalColors.text}>• {val}</text>\n )}\n </For>\n </Show>\n </box>\n )}\n </For>\n </box>\n </Show>\n\n <Show when={props.content}>\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>{props.content}</text>\n </box>\n </Show>\n\n <Show when={props.children}>\n <box flexDirection=\"column\" marginBottom={1}>\n {props.children}\n </box>\n </Show>\n\n <Show when={props.actions && props.actions.length > 0}>\n <text fg={terminalColors.textMuted}>─────</text>\n <For each={props.actions}>\n {(action) => (\n <text fg={terminalColors.textMuted}>\n <text fg={terminalColors.accent}>{action.key}</text> {action.label}\n </text>\n )}\n </For>\n </Show>\n </box>\n </Show>\n );\n}\n","/**\n * StatusIndicator Component\n * Loading/success/error/warning indicator\n */\n\nimport { Show, createSignal, createEffect, onCleanup } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport type StatusType = 'loading' | 'success' | 'error' | 'warning' | 'info' | 'pending';\n\ninterface StatusIndicatorProps {\n status: StatusType;\n label?: string;\n showLabel?: boolean;\n size?: 'sm' | 'md' | 'lg';\n animated?: boolean;\n}\n\nconst STATUS_ICONS: Record<StatusType, string> = {\n loading: '⟳',\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n};\n\nconst STATUS_COLORS: Record<StatusType, string> = {\n loading: terminalColors.accent,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n info: terminalColors.info,\n pending: terminalColors.textMuted,\n};\n\nconst SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function StatusIndicator(props: StatusIndicatorProps) {\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const showLabel = () => props.showLabel ?? true;\n const animated = () => props.animated ?? true;\n\n createEffect(() => {\n if (props.status === 'loading' && animated()) {\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER_FRAMES.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n }\n });\n\n const icon = () => {\n if (props.status === 'loading' && animated()) {\n return SPINNER_FRAMES[spinnerFrame()];\n }\n return STATUS_ICONS[props.status];\n };\n\n const color = () => STATUS_COLORS[props.status];\n\n const defaultLabel = () => {\n switch (props.status) {\n case 'loading':\n return 'Loading...';\n case 'success':\n return 'Success';\n case 'error':\n return 'Error';\n case 'warning':\n return 'Warning';\n case 'info':\n return 'Info';\n case 'pending':\n return 'Pending';\n }\n };\n\n return (\n <box flexDirection=\"row\">\n <text fg={color()}>{icon()}</text>\n <Show when={showLabel()}>\n <text fg={color()}> {props.label ?? defaultLabel()}</text>\n </Show>\n </box>\n );\n}\n\ninterface InlineStatusProps {\n status: StatusType;\n compact?: boolean;\n}\n\nexport function InlineStatus(props: InlineStatusProps) {\n const icon = () => {\n if (props.status === 'loading' || props.status === 'pending') {\n return '○';\n }\n return '●';\n };\n\n return <text fg={STATUS_COLORS[props.status]}>{icon()}</text>;\n}\n\ninterface StatusBadgeProps {\n status: StatusType;\n label: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps) {\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>[</text>\n <text fg={STATUS_COLORS[props.status]}>{props.label}</text>\n <text fg={terminalColors.textMuted}>]</text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport {\n type Screen,\n DEFAULT_REPOS,\n getMarketplaceRepos,\n fetchRepoSkills,\n type FetchedSkill,\n type RepoInfo,\n} from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\n\ninterface BrowseProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface RepoWithSkills extends RepoInfo {\n skills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n}\n\nexport function Browse(props: BrowseProps) {\n const [repos, setRepos] = createSignal<RepoWithSkills[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [searchMode, setSearchMode] = createSignal(false);\n const [showSkills, setShowSkills] = createSignal(false);\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const marketplaceRepos = getMarketplaceRepos();\n const reposWithState: RepoWithSkills[] = marketplaceRepos.map((repo) => ({\n ...repo,\n skills: [],\n loading: false,\n error: null,\n }));\n setRepos(reposWithState);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load repos');\n }\n\n setLoading(false);\n };\n\n const loadRepoSkills = async (index: number) => {\n const repo = repos()[index];\n if (!repo || repo.skills.length > 0 || repo.loading) return;\n\n setRepos((prev) =>\n prev.map((r, i) => (i === index ? { ...r, loading: true, error: null } : r))\n );\n\n try {\n const result = await fetchRepoSkills(repo.source, DEFAULT_REPOS);\n setRepos((prev) =>\n prev.map((r, i) =>\n i === index\n ? {\n ...r,\n skills: result.skills,\n loading: false,\n error: result.error || null,\n }\n : r\n )\n );\n } catch (err) {\n setRepos((prev) =>\n prev.map((r, i) =>\n i === index\n ? {\n ...r,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to fetch',\n }\n : r\n )\n );\n }\n };\n\n const filteredRepos = createMemo(() => {\n if (!searchQuery()) return repos();\n\n const query = searchQuery().toLowerCase();\n return repos().filter(\n (r) =>\n r.name.toLowerCase().includes(query) ||\n r.source.toLowerCase().includes(query)\n );\n });\n\n const maxVisible = () => Math.max(5, rows() - 12);\n const startIdx = () =>\n Math.max(\n 0,\n Math.min(\n selectedIndex() - Math.floor(maxVisible() / 2),\n filteredRepos().length - maxVisible()\n )\n );\n const visibleRepos = () =>\n filteredRepos().slice(startIdx(), startIdx() + maxVisible());\n\n const handleKeyNav = (delta: number) => {\n const max = filteredRepos().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n const handleOpenRepo = () => {\n const repo = filteredRepos()[selectedIndex()];\n if (repo) {\n const actualIndex = repos().findIndex(\n (r) => r.source === repo.source && r.name === repo.name\n );\n if (actualIndex !== -1) {\n loadRepoSkills(actualIndex);\n }\n setShowSkills(true);\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode()) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery((prev) => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (\n key.sequence &&\n key.sequence.length === 1 &&\n /[a-zA-Z0-9\\-_.]/.test(key.sequence)\n ) {\n setSearchQuery((prev) => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleOpenRepo();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showSkills()) setShowSkills(false);\n else if (searchQuery()) setSearchQuery('');\n else props.onNavigate('home');\n }\n });\n\n createEffect(() => {\n if (selectedIndex() >= filteredRepos().length && filteredRepos().length > 0) {\n setSelectedIndex(filteredRepos().length - 1);\n }\n });\n\n const selectedRepo = () => {\n const repoList = filteredRepos();\n if (repoList.length === 0) return null;\n return repoList[selectedIndex()];\n };\n\n const repoDetailFields = () => {\n const repo = selectedRepo();\n if (!repo) return [];\n\n return [\n { label: 'Name', value: repo.name },\n { label: 'Source', value: repo.source },\n { label: 'Skills', value: String(repo.skills.length) },\n {\n label: 'Status',\n value: repo.loading ? 'Loading...' : repo.error ? 'Error' : 'Ready',\n },\n ];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Browse\"\n subtitle=\"Explore skill repositories\"\n icon=\"⌕\"\n count={repos().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading repositories...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>/ </text>\n <text\n fg={\n searchQuery() || searchMode()\n ? terminalColors.text\n : terminalColors.textMuted\n }\n >\n {searchQuery() || (searchMode() ? '|' : 'type to filter...')}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show\n when={filteredRepos().length > 0}\n fallback={\n <EmptyState\n icon=\"⌕\"\n title=\"No repositories found\"\n description={\n searchQuery()\n ? 'Try a different search term'\n : 'No repositories configured'\n }\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Repositories</b>{' '}\n <text fg={terminalColors.textMuted}>\n ({filteredRepos().length})\n </text>\n </text>\n <text> </text>\n\n <For each={visibleRepos()}>\n {(repo, idx) => {\n const actualIdx = () => startIdx() + idx();\n const selected = () => actualIdx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {repo.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {repo.skills.length > 0\n ? `${repo.skills.length} skills`\n : repo.loading\n ? 'loading...'\n : ''}\n </text>\n <Show when={repo.error}>\n <text fg={terminalColors.error}>✗</text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={filteredRepos().length > maxVisible()}>\n <text fg={terminalColors.textMuted}>\n showing {startIdx() + 1}-\n {Math.min(startIdx() + maxVisible(), filteredRepos().length)} of{' '}\n {filteredRepos().length}\n </text>\n </Show>\n </Show>\n </box>\n\n <Show when={showSkills() && selectedRepo()}>\n <DetailPane\n title={selectedRepo()!.name}\n subtitle={`${selectedRepo()!.skills.length} skills`}\n icon=\"⌕\"\n fields={repoDetailFields()}\n actions={[\n { key: 'Enter', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showSkills()}\n onClose={() => setShowSkills(false)}\n >\n <Show when={selectedRepo()!.loading}>\n <StatusIndicator status=\"loading\" label=\"Loading skills...\" />\n </Show>\n <Show when={selectedRepo()!.skills.length > 0}>\n <text fg={terminalColors.text}>\n <b>Skills:</b>\n </text>\n <For each={selectedRepo()!.skills.slice(0, 5)}>\n {(skill) => (\n <text fg={terminalColors.textSecondary}>• {skill.name}</text>\n )}\n </For>\n <Show when={selectedRepo()!.skills.length > 5}>\n <text fg={terminalColors.textMuted}>\n +{selectedRepo()!.skills.length - 5} more\n </text>\n </Show>\n </Show>\n </DetailPane>\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter open / search r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkills, filterSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface InstalledProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function Installed(props: InstalledProps) {\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [searchMode, setSearchMode] = createSignal(false);\n const [animPhase, setAnimPhase] = createSignal(0);\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const [skills, setSkills] = createSignal<ReturnType<typeof loadSkills>>({\n skills: [],\n loading: true,\n error: null,\n });\n\n const cols = () => props.cols ?? 80;\n const rows = () => props.rows ?? 24;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase((p) => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n if (!skills().loading) return;\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const data = loadSkills();\n setSkills(data);\n });\n\n const filteredSkills = createMemo(() => filterSkills(skills().skills, searchQuery()));\n\n const handleKeyNav = (delta: number) => {\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, filteredSkills().length - 1)));\n };\n\n const handleToggle = () => {\n if (filteredSkills().length === 0) return;\n const skill = filteredSkills()[selectedIndex()];\n if (skill) {\n setSkills((prev) => ({\n ...prev,\n skills: prev.skills.map((s) => (s.name === skill.name ? { ...s, enabled: s.enabled === false } : s)),\n }));\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode()) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery((prev) => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (key.sequence && key.sequence.length === 1 && /[a-zA-Z0-9\\-_.]/.test(key.sequence)) {\n setSearchQuery((prev) => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'd') handleToggle();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n createEffect(() => {\n if (selectedIndex() >= filteredSkills().length && filteredSkills().length > 0) {\n setSelectedIndex(filteredSkills().length - 1);\n }\n });\n\n const maxVisible = () => Math.max(5, rows() - 10);\n const startIdx = () =>\n Math.max(0, Math.min(selectedIndex() - Math.floor(maxVisible() / 2), filteredSkills().length - maxVisible()));\n const visibleSkills = () => filteredSkills().slice(startIdx(), startIdx() + maxVisible());\n\n const divider = () => <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>;\n\n const enabledCount = () => skills().skills.filter((s) => s.enabled !== false).length;\n const totalCount = () => skills().skills.length;\n\n const shortcuts = () =>\n isCompact()\n ? 'j/k nav enter toggle d disable esc back'\n : 'j/k navigate enter toggle d disable esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.success}>✓ Installed</text>\n <text fg={terminalColors.textMuted}>\n {enabledCount()}/{totalCount()} active\n </text>\n </box>\n <text fg={terminalColors.textMuted}>manage your skills</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>/ </text>\n <text fg={searchQuery() ? terminalColors.text : terminalColors.textMuted}>\n {searchQuery() || 'type to filter...'}\n </text>\n </box>\n <text> </text>\n {divider()}\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n <Show\n when={!skills().loading}\n fallback={\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>{SPINNER[spinnerFrame()]} </text>\n <text fg={terminalColors.text}>Loading skills...</text>\n </box>\n }\n >\n <Show\n when={!skills().error}\n fallback={\n <box flexDirection=\"column\">\n <text fg={terminalColors.error}>✗ Error loading skills</text>\n <text fg={terminalColors.textMuted}>{skills().error}</text>\n </box>\n }\n >\n <Show\n when={filteredSkills().length > 0}\n fallback={\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>\n {skills().skills.length === 0 ? 'No skills installed yet' : 'No skills match your search'}\n </text>\n <Show when={skills().skills.length === 0}>\n <text> </text>\n <text fg={terminalColors.textMuted}>Press 'b' to browse or 'm' for marketplace</text>\n </Show>\n </box>\n }\n >\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Skills</text>\n <text> </text>\n <For each={visibleSkills()}>\n {(skill, idx) => {\n const actualIdx = () => startIdx() + idx();\n const selected = () => actualIdx() === selectedIndex();\n const indicator = () => (selected() ? '▸' : ' ');\n const statusIcon = () => (skill.enabled !== false ? '●' : '○');\n const qualityBadge = () => (skill.grade ? ` [${skill.grade}]` : '');\n const warningIndicator = () => (skill.warnings && skill.warnings > 2 ? ' ⚠' : '');\n const line = () =>\n `${indicator()}${statusIcon()} ${skill.name}${qualityBadge()}${warningIndicator()}`;\n const badgeColor = () =>\n skill.quality !== undefined\n ? skill.quality >= 80\n ? terminalColors.success\n : skill.quality >= 60\n ? terminalColors.warning\n : terminalColors.error\n : terminalColors.text;\n return <text fg={selected() ? terminalColors.accent : badgeColor()}>{line()}</text>;\n }}\n </For>\n\n <Show when={filteredSkills().length > maxVisible()}>\n <text fg={terminalColors.textMuted}>\n {'\\n'}showing {startIdx() + 1}-{Math.min(startIdx() + maxVisible(), filteredSkills().length)} of{' '}\n {filteredSkills().length}\n </text>\n </Show>\n </box>\n </Show>\n </Show>\n </Show>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>{shortcuts()}</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport {\n type Screen,\n DEFAULT_REPOS,\n fetchRepoSkills,\n filterMarketplaceSkills,\n type FetchedSkill,\n} from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { SearchInput } from '../components/SearchInput.js';\n\ninterface MarketplaceProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst CATEGORIES = [\n { name: 'Development', tag: 'development' },\n { name: 'Testing', tag: 'testing' },\n { name: 'DevOps', tag: 'devops' },\n { name: 'Security', tag: 'security' },\n { name: 'AI/ML', tag: 'ai' },\n];\n\nexport function Marketplace(props: MarketplaceProps) {\n const [allSkills, setAllSkills] = createSignal<FetchedSkill[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [selectedCategory, setSelectedCategory] = createSignal<string | null>(null);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n const [loadedRepos, setLoadedRepos] = createSignal<string[]>([]);\n const [failedRepos, setFailedRepos] = createSignal<string[]>([]);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n const skills: FetchedSkill[] = [];\n const loaded: string[] = [];\n const failed: string[] = [];\n\n for (const repo of DEFAULT_REPOS.slice(0, 5)) {\n try {\n const result = await fetchRepoSkills(repo.source, DEFAULT_REPOS);\n if (result.skills.length > 0) {\n skills.push(...result.skills);\n loaded.push(repo.name);\n } else if (result.error) {\n failed.push(repo.name);\n }\n } catch {\n failed.push(repo.name);\n }\n }\n\n setAllSkills(skills);\n setLoadedRepos(loaded);\n setFailedRepos(failed);\n\n const attemptedCount = DEFAULT_REPOS.slice(0, 5).length;\n if (failed.length === attemptedCount) {\n setError(`Failed to load all repos: ${failed.join(', ')}`);\n } else if (failed.length > 0 && skills.length === 0) {\n setError(`Some repos failed (${failed.join(', ')}) and no skills loaded`);\n }\n\n setLoading(false);\n };\n\n const filteredSkills = createMemo(() => {\n let skills = allSkills();\n\n if (selectedCategory()) {\n skills = skills.filter(\n (s) =>\n s.name.toLowerCase().includes(selectedCategory()!.toLowerCase()) ||\n s.description?.toLowerCase().includes(selectedCategory()!.toLowerCase())\n );\n }\n\n if (searchQuery()) {\n skills = filterMarketplaceSkills(skills, searchQuery());\n }\n\n return skills;\n });\n\n createEffect(() => {\n const list = filteredSkills();\n const maxIndex = Math.max(0, list.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n });\n\n const maxVisible = () => Math.max(4, Math.floor((rows() - 14) / 2));\n\n const skillsWindow = createMemo(() => {\n const list = filteredSkills();\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n const handleKeyNav = (delta: number) => {\n const max = filteredSkills().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n const handleInstall = () => {\n const skill = filteredSkills()[selectedIndex()];\n if (skill) {\n props.onNavigate('installed');\n }\n };\n\n const handleCategorySelect = (idx: number) => {\n const cat = CATEGORIES[idx];\n if (cat) {\n setSelectedCategory((prev) => (prev === cat.tag ? null : cat.tag));\n setSelectedIndex(0);\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleInstall();\n else if (key.name === 'b') props.onNavigate('browse');\n else if (key.name === 'r') loadData();\n else if (key.sequence && ['1', '2', '3', '4', '5'].includes(key.sequence)) {\n handleCategorySelect(parseInt(key.sequence) - 1);\n } else if (key.name === 'escape') {\n if (searchQuery() || selectedCategory()) {\n setSearchQuery('');\n setSelectedCategory(null);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n const selectedSkill = () => {\n const skills = filteredSkills();\n if (skills.length === 0) return null;\n return skills[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Marketplace\"\n subtitle=\"Discover and install skills\"\n icon=\"★\"\n count={allSkills().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <box flexDirection=\"column\">\n <Spinner label=\"Loading marketplace skills...\" />\n <Show when={loadedRepos().length > 0}>\n <text fg={terminalColors.textMuted}>\n Loaded: {loadedRepos().join(', ')}\n </text>\n </Show>\n </box>\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>\n ● {loadedRepos().length} repos\n </text>\n <Show when={failedRepos().length > 0}>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.warning}>\n ○ {failedRepos().length} failed\n </text>\n </Show>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.text}>{allSkills().length} skills</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}>Categories: </text>\n <For each={CATEGORIES}>\n {(cat, idx) => (\n <text\n fg={\n selectedCategory() === cat.tag\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n [{idx() + 1}]{cat.name}{' '}\n </text>\n )}\n </For>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={filteredSkills().length > 0}\n fallback={\n <EmptyState\n icon=\"★\"\n title=\"No skills found\"\n description={\n searchQuery() || selectedCategory()\n ? 'Try a different search or category'\n : 'No skills loaded yet'\n }\n action={{ label: 'Clear Filter', key: 'Esc' }}\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>\n {selectedCategory() ? `${selectedCategory()} Skills` : 'Featured Skills'}\n </b>{' '}\n <text fg={terminalColors.textMuted}>\n ({filteredSkills().length} results)\n </text>\n </text>\n <text> </text>\n\n <Show when={skillsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {skillsWindow().start} more</text>\n </Show>\n <For each={skillsWindow().items}>\n {(skill, idx) => {\n const originalIndex = () => skillsWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {skill.name}\n </text>\n <text fg={terminalColors.textMuted}>\n {skill.repoName}\n </text>\n </box>\n <Show when={skill.description}>\n <text fg={terminalColors.textMuted}>\n {' '}{skill.description?.slice(0, 50)}\n {(skill.description?.length || 0) > 50 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={skillsWindow().start + maxVisible() < filteredSkills().length}>\n <text fg={terminalColors.textMuted}>\n ▼ {filteredSkills().length - skillsWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter install 1-5 category b browse r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","export interface RecommendationDisplay {\n name: string;\n description: string;\n score: number;\n reasons: string[];\n source: string;\n tags: string[];\n installCommand?: string;\n}\n\nexport interface RecommendationOptions {\n limit?: number;\n minScore?: number;\n categories?: string[];\n refresh?: boolean;\n}\n\nexport interface RecommendServiceState {\n recommendations: RecommendationDisplay[];\n analyzing: boolean;\n loading: boolean;\n error: string | null;\n lastAnalyzed?: string;\n}\n\nexport async function getRecommendations(\n _projectPath?: string,\n _options?: RecommendationOptions\n): Promise<RecommendServiceState> {\n return {\n recommendations: [],\n analyzing: false,\n loading: false,\n error: null,\n lastAnalyzed: new Date().toISOString(),\n };\n}\n\nexport async function analyzeProject(_projectPath?: string): Promise<{\n languages: string[];\n frameworks: string[];\n libraries: string[];\n patterns: string[];\n} | null> {\n return {\n languages: ['TypeScript', 'JavaScript'],\n frameworks: ['Solid.js'],\n libraries: ['@opentui/solid'],\n patterns: [],\n };\n}\n\nexport async function refreshRecommendations(\n projectPath?: string\n): Promise<RecommendServiceState> {\n return getRecommendations(projectPath, { refresh: true });\n}\n\nexport async function getRecommendationsByCategory(\n _category: string,\n projectPath?: string\n): Promise<RecommendationDisplay[]> {\n const result = await getRecommendations(projectPath);\n return result.recommendations;\n}\n\nexport const recommendService = {\n getRecommendations,\n analyzeProject,\n refreshRecommendations,\n getRecommendationsByCategory,\n};\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport {\n getRecommendations,\n analyzeProject,\n type RecommendServiceState,\n type RecommendationDisplay,\n} from '../services/recommend.service.js';\n\ninterface RecommendProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Recommend(props: RecommendProps) {\n const [state, setState] = createSignal<RecommendServiceState>({\n recommendations: [],\n analyzing: false,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [projectInfo, setProjectInfo] = createSignal<{\n languages: string[];\n frameworks: string[];\n } | null>(null);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, analyzing: true, error: null }));\n\n try {\n const analysis = await analyzeProject();\n if (analysis) {\n setProjectInfo({\n languages: analysis.languages,\n frameworks: analysis.frameworks,\n });\n }\n\n const result = await getRecommendations();\n setState(result);\n\n const maxIndex = Math.max(0, result.recommendations.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to load recommendations',\n }));\n }\n };\n\n const handleRefresh = async () => {\n loadData();\n };\n\n const handleInstall = () => {\n const recs = state().recommendations;\n if (recs.length === 0) return;\n\n const rec = recs[selectedIndex()];\n if (rec) {\n props.onNavigate('installed');\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().recommendations.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') {\n if (showDetail()) handleInstall();\n else setShowDetail(true);\n } else if (key.name === 'r') handleRefresh();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getScoreColor = (score: number): string => {\n if (score >= 80) return terminalColors.success;\n if (score >= 60) return terminalColors.accent;\n if (score >= 40) return terminalColors.warning;\n return terminalColors.textMuted;\n };\n\n const getGrade = (score: number): string => {\n if (score >= 90) return 'A';\n if (score >= 80) return 'B';\n if (score >= 70) return 'C';\n if (score >= 60) return 'D';\n return 'F';\n };\n\n const selectedRec = () => {\n const recs = state().recommendations;\n if (recs.length === 0) return null;\n return recs[selectedIndex()];\n };\n\n const detailFields = () => {\n const rec = selectedRec();\n if (!rec) return [];\n\n return [\n { label: 'Name', value: rec.name },\n { label: 'Score', value: `${rec.score}%` },\n { label: 'Source', value: rec.source },\n { label: 'Tags', value: rec.tags.join(', ') || 'None' },\n { label: 'Install', value: rec.installCommand || `skillkit install ${rec.name}` },\n ];\n };\n\n const maxVisible = () => Math.max(4, Math.floor((rows() - 12) / 3));\n\n const recsWindow = createMemo(() => {\n const list = state().recommendations;\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Recommendations\"\n subtitle=\"AI skill suggestions based on your project\"\n icon=\"✦\"\n count={state().recommendations.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading && state().analyzing}>\n <box flexDirection=\"column\">\n <Spinner label=\"Analyzing your project...\" />\n <Show when={projectInfo()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Detected: {projectInfo()!.languages.slice(0, 3).join(', ')}\n {projectInfo()!.frameworks.length > 0\n ? ` + ${projectInfo()!.frameworks.slice(0, 2).join(', ')}`\n : ''}\n </text>\n </Show>\n </box>\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show when={projectInfo()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Stack: </text>\n <text fg={terminalColors.accent}>\n {[\n ...projectInfo()!.languages.slice(0, 2),\n ...projectInfo()!.frameworks.slice(0, 2),\n ].join(' • ')}\n </text>\n </box>\n </Show>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().recommendations.length > 0}\n fallback={\n <EmptyState\n icon=\"✦\"\n title=\"No recommendations found\"\n description=\"Try refreshing to analyze your project again\"\n action={{ label: 'Refresh', key: 'r' }}\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Suggested Skills</b>\n </text>\n <text> </text>\n\n <Show when={recsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {recsWindow().start} more</text>\n </Show>\n <For each={recsWindow().items}>\n {(rec, idx) => {\n const originalIndex = () => recsWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {rec.name}\n </text>\n <text fg={getScoreColor(rec.score)} width={6}>\n {rec.score}%\n </text>\n <text fg={getScoreColor(rec.score)} width={4}>\n [{getGrade(rec.score)}]\n </text>\n </box>\n <Show when={rec.reasons.length > 0}>\n <text fg={terminalColors.textMuted}>\n {' '}{rec.reasons[0]}\n </text>\n </Show>\n <Show when={rec.description && rec.reasons.length === 0}>\n <text fg={terminalColors.textMuted}>\n {' '}{rec.description.slice(0, 50)}\n {rec.description.length > 50 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={recsWindow().start + maxVisible() < state().recommendations.length}>\n <text fg={terminalColors.textMuted}>\n ▼ {state().recommendations.length - recsWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n\n <Show when={state().lastAnalyzed}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Last analyzed: {new Date(state().lastAnalyzed!).toLocaleTimeString()}\n </text>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedRec()}>\n <DetailPane\n title={selectedRec()!.name}\n subtitle={`Score: ${selectedRec()!.score}%`}\n icon=\"✦\"\n fields={detailFields()}\n actions={[\n { key: 'Enter', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details/install r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","export type AgentType =\n | 'claude-code'\n | 'cursor'\n | 'windsurf'\n | 'github-copilot'\n | 'codex'\n | 'gemini-cli'\n | 'opencode'\n | 'universal'\n | 'antigravity'\n | 'amp'\n | 'clawdbot'\n | 'droid'\n | 'goose'\n | 'kilo'\n | 'kiro-cli'\n | 'roo'\n | 'trae'\n | 'cline'\n | 'codebuddy'\n | 'commandcode'\n | 'continue'\n | 'crush'\n | 'factory'\n | 'mcpjam'\n | 'mux'\n | 'neovate'\n | 'openhands'\n | 'pi'\n | 'qoder'\n | 'qwen'\n | 'vercel'\n | 'zencoder';\n\nexport interface TranslationDisplay {\n sourceFormat: string;\n targetAgent: AgentType;\n success: boolean;\n content: string;\n filename?: string;\n warnings: string[];\n incompatible: string[];\n}\n\nexport interface TranslationOptions {\n sourceFilename?: string;\n preserveMetadata?: boolean;\n}\n\nexport interface CanonicalSkill {\n id: string;\n name: string;\n description?: string;\n content: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface TranslatorServiceState {\n supportedAgents: AgentType[];\n sourceAgent: AgentType | null;\n targetAgent: AgentType | null;\n skill: CanonicalSkill | null;\n result: TranslationDisplay | null;\n loading: boolean;\n error: string | null;\n}\n\nexport function getSupportedAgents(): AgentType[] {\n return [\n 'claude-code',\n 'cursor',\n 'windsurf',\n 'github-copilot',\n 'codex',\n 'gemini-cli',\n 'opencode',\n 'universal',\n ];\n}\n\nexport function checkCanTranslate(_from: AgentType, _to: AgentType): boolean {\n return true;\n}\n\nexport function translate(\n _content: string,\n targetAgent: AgentType,\n options?: TranslationOptions\n): TranslationDisplay {\n return {\n sourceFormat: options?.sourceFilename || 'SKILL.md',\n targetAgent,\n success: true,\n content: '',\n filename: undefined,\n warnings: [],\n incompatible: [],\n };\n}\n\nexport function translateFromFile(\n sourcePath: string,\n targetAgent: AgentType,\n _options?: TranslationOptions\n): TranslationDisplay {\n return {\n sourceFormat: sourcePath,\n targetAgent,\n success: true,\n content: '',\n filename: undefined,\n warnings: [],\n incompatible: [],\n };\n}\n\nexport function parseSkill(_content: string, _filename?: string): CanonicalSkill | null {\n return null;\n}\n\nexport function detectFormat(_content: string, _filename?: string): string | null {\n return 'markdown';\n}\n\nexport function previewTranslation(\n _content: string,\n _targetAgent: AgentType\n): { preview: string; compatible: boolean; issues: string[] } {\n return {\n preview: '',\n compatible: true,\n issues: [],\n };\n}\n\nexport function getAgentFormatInfo(agent: AgentType): {\n extension: string;\n formatName: string;\n description: string;\n} {\n const formatMap: Record<string, { extension: string; formatName: string; description: string }> = {\n 'claude-code': { extension: '.md', formatName: 'SKILL.md', description: 'Claude Code skills format' },\n cursor: { extension: '.mdc', formatName: 'MDC', description: 'Cursor rules format' },\n windsurf: { extension: '.md', formatName: 'Markdown', description: 'Windsurf rules format' },\n 'github-copilot': { extension: '.md', formatName: 'Markdown', description: 'GitHub Copilot instructions' },\n codex: { extension: '.md', formatName: 'Markdown', description: 'Codex instructions' },\n 'gemini-cli': { extension: '.md', formatName: 'Markdown', description: 'Gemini CLI instructions' },\n opencode: { extension: '.md', formatName: 'Markdown', description: 'OpenCode instructions' },\n universal: { extension: '.md', formatName: 'SKILL.md', description: 'Universal skill format' },\n };\n\n return formatMap[agent] || { extension: '.md', formatName: 'Markdown', description: 'Unknown format' };\n}\n\nexport const translatorService = {\n getSupportedAgents,\n checkCanTranslate,\n translate,\n translateFromFile,\n parseSkill,\n detectFormat,\n previewTranslation,\n getAgentFormatInfo,\n};\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkillsWithDetails, type SkillWithDetails } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n getSupportedAgents,\n checkCanTranslate,\n translate,\n previewTranslation,\n getAgentFormatInfo,\n} from '../services/translator.service.js';\nimport type { AgentType } from '@skillkit/core';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\ninterface TranslateProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ntype FocusedPane = 'source' | 'target' | 'skills';\n\nfunction readSkillContent(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (existsSync(skillMdPath)) {\n return readFileSync(skillMdPath, 'utf-8');\n }\n return undefined;\n}\n\nexport function Translate(props: TranslateProps) {\n const [supportedAgents, setSupportedAgents] = createSignal<AgentType[]>([]);\n const [skills, setSkills] = createSignal<SkillWithDetails[]>([]);\n const [sourceAgentIndex, setSourceAgentIndex] = createSignal(0);\n const [targetAgentIndex, setTargetAgentIndex] = createSignal(1);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [focusedPane, setFocusedPane] = createSignal<FocusedPane>('skills');\n const [translating, setTranslating] = createSignal(false);\n const [preview, setPreview] = createSignal<{\n preview: string;\n compatible: boolean;\n issues: string[];\n } | null>(null);\n const [result, setResult] = createSignal<{\n success: boolean;\n content: string;\n filename?: string;\n } | null>(null);\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const agents = getSupportedAgents();\n setSupportedAgents(agents);\n\n const skillsWithDetails = loadSkillsWithDetails();\n setSkills(skillsWithDetails);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n }\n\n setLoading(false);\n };\n\n const sourceAgent = () => {\n const agents = supportedAgents();\n if (agents.length === 0) return null;\n return agents[sourceAgentIndex()];\n };\n\n const targetAgent = () => {\n const agents = supportedAgents();\n if (agents.length === 0) return null;\n return agents[targetAgentIndex()];\n };\n\n const selectedSkill = () => {\n const skillList = skills();\n if (skillList.length === 0) return null;\n return skillList[selectedSkillIndex()];\n };\n\n const canDoTranslation = () => {\n const source = sourceAgent();\n const target = targetAgent();\n if (!source || !target) return false;\n return checkCanTranslate(source, target);\n };\n\n const handlePreview = () => {\n const skill = selectedSkill();\n const target = targetAgent();\n if (!skill || !target || !skill.path) {\n setError('No skill path available for preview');\n return;\n }\n\n try {\n const content = readSkillContent(skill.path);\n if (!content) {\n setError('Could not read skill content');\n return;\n }\n\n const previewResult = previewTranslation(content, target);\n setPreview(previewResult);\n setError(null);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Preview failed');\n }\n };\n\n const handleTranslate = async () => {\n const skill = selectedSkill();\n const target = targetAgent();\n if (!skill || !target || !skill.path) {\n setError('No skill path available for translation');\n return;\n }\n\n const content = readSkillContent(skill.path);\n if (!content) {\n setError('Could not read skill content');\n return;\n }\n\n setTranslating(true);\n setResult(null);\n setError(null);\n\n try {\n const translationResult = translate(content, target);\n setResult({\n success: translationResult.success,\n content: translationResult.content,\n filename: translationResult.filename,\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Translation failed');\n } finally {\n setTranslating(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'skills') {\n const max = skills().length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else if (focusedPane() === 'source') {\n const max = supportedAgents().length - 1;\n setSourceAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = supportedAgents().length - 1;\n setTargetAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab') {\n setFocusedPane((p) => {\n if (p === 'skills') return 'source';\n if (p === 'source') return 'target';\n return 'skills';\n });\n } else if (key.name === 'p') handlePreview();\n else if (key.name === 'return' || key.name === 't') handleTranslate();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (result() || preview()) {\n setResult(null);\n setPreview(null);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n const visibleAgents = () => supportedAgents().slice(0, 6);\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Translate Skills\"\n subtitle=\"Convert skills between agent formats\"\n icon=\"⇄\"\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading agents and skills...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'source'\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n Source Agent\n </text>\n <Show when={sourceAgent()}>\n <text fg={terminalColors.accent}>\n <b>\n {AGENT_LOGOS[sourceAgent()!]?.icon || '◇'}{' '}\n {AGENT_LOGOS[sourceAgent()!]?.name || sourceAgent()}\n </b>\n </text>\n <text fg={terminalColors.textMuted}>\n {getAgentFormatInfo(sourceAgent()!).formatName}\n </text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" width={5} justifyContent=\"center\">\n <text fg={terminalColors.textMuted}> → </text>\n </box>\n\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'target'\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n Target Agent\n </text>\n <Show when={targetAgent()}>\n <text fg={terminalColors.text}>\n <b>\n {AGENT_LOGOS[targetAgent()!]?.icon || '◇'}{' '}\n {AGENT_LOGOS[targetAgent()!]?.name || targetAgent()}\n </b>\n </text>\n <text fg={terminalColors.textMuted}>\n {getAgentFormatInfo(targetAgent()!).formatName}\n </text>\n </Show>\n </box>\n\n <Show when={!canDoTranslation()}>\n <text fg={terminalColors.warning}> ⚠ Incompatible</text>\n </Show>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Select Skill</b>\n </text>\n <text> </text>\n\n <Show\n when={skills().length > 0}\n fallback={\n <EmptyState\n title=\"No skills installed\"\n description=\"Install skills first\"\n action={{ label: 'Browse', key: 'b' }}\n compact\n />\n }\n >\n <For each={skills().slice(0, 6)}>\n {(skill, idx) => {\n const selected = () =>\n focusedPane() === 'skills' && idx() === selectedSkillIndex();\n return (\n <box marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n >\n {selected() ? '▸ ' : ' '}\n {skill.name}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={skills().length > 6}>\n <text fg={terminalColors.textMuted}>+{skills().length - 6} more</text>\n </Show>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={35}>\n <Show when={focusedPane() !== 'skills'}>\n <text fg={terminalColors.text}>\n <b>{focusedPane() === 'source' ? 'Source' : 'Target'} Agents</b>\n </text>\n <text> </text>\n <For each={visibleAgents()}>\n {(agent, idx) => {\n const isSource = focusedPane() === 'source';\n const selectedIdx = isSource ? sourceAgentIndex() : targetAgentIndex();\n const selected = () => idx() === selectedIdx;\n return (\n <box marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.textSecondary}\n >\n {selected() ? '▸ ' : ' '}\n {AGENT_LOGOS[agent]?.icon || '◇'} {AGENT_LOGOS[agent]?.name || agent}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={focusedPane() === 'skills' && selectedSkill()}>\n <text fg={terminalColors.text}>\n <b>Skill Info</b>\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>Name: {selectedSkill()!.name}</text>\n <text fg={terminalColors.textMuted}>\n Path: {selectedSkill()!.path ? 'Available' : 'Unknown'}\n </text>\n </Show>\n </box>\n </box>\n\n <Show when={translating()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Translating skill...\" />\n </Show>\n\n <Show when={preview() && !translating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Preview</b>\n </text>\n <text\n fg={\n preview()!.compatible ? terminalColors.success : terminalColors.warning\n }\n >\n {preview()!.compatible ? '✓ Compatible' : '⚠ Has issues'}\n </text>\n <Show when={preview()!.issues.length > 0}>\n <For each={preview()!.issues.slice(0, 2)}>\n {(issue) => <text fg={terminalColors.warning}>• {issue}</text>}\n </For>\n </Show>\n </Show>\n\n <Show when={result() && !translating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text\n fg={result()!.success ? terminalColors.success : terminalColors.error}\n >\n {result()!.success ? '✓ Translation complete' : '✗ Translation failed'}\n </text>\n <Show when={result()!.filename}>\n <text fg={terminalColors.textMuted}>Output: {result()!.filename}</text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n Tab switch pane j/k navigate p preview Enter translate Esc back\n </text>\n </Show>\n </box>\n );\n}\n","export interface ContextDisplay {\n projectName: string;\n rootPath: string;\n languages: string[];\n frameworks: string[];\n libraries: string[];\n patterns: Record<string, unknown>;\n lastUpdated?: string;\n}\n\nexport interface ContextServiceState {\n context: ContextDisplay | null;\n stack: unknown | null;\n loading: boolean;\n analyzing: boolean;\n error: string | null;\n}\n\nexport async function loadProjectContext(): Promise<ContextServiceState> {\n return {\n context: {\n projectName: 'skillkit',\n rootPath: process.cwd(),\n languages: ['TypeScript', 'JavaScript'],\n frameworks: ['Solid.js', 'React'],\n libraries: ['@opentui/solid'],\n patterns: {},\n lastUpdated: new Date().toISOString(),\n },\n stack: null,\n loading: false,\n analyzing: false,\n error: null,\n };\n}\n\nexport async function analyzeProjectContext(): Promise<ContextServiceState> {\n return loadProjectContext();\n}\n\nexport async function refreshContext(): Promise<ContextServiceState> {\n return loadProjectContext();\n}\n\nexport async function exportContext(_path?: string, _format?: string): Promise<boolean> {\n return true;\n}\n\nexport async function getStackTags(): Promise<string[]> {\n return ['typescript', 'solid-js', 'cli'];\n}\n\nexport const contextService = {\n loadProjectContext,\n analyzeProjectContext,\n refreshContext,\n exportContext,\n getStackTags,\n};\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadProjectContext,\n analyzeProjectContext,\n refreshContext,\n exportContext,\n getStackTags,\n type ContextServiceState,\n} from '../services/context.service.js';\n\ninterface ContextProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Context(props: ContextProps) {\n const [state, setState] = createSignal<ContextServiceState>({\n context: null,\n stack: null,\n loading: true,\n analyzing: false,\n error: null,\n });\n const [tags, setTags] = createSignal<string[]>([]);\n const [selectedSection, setSelectedSection] = createSignal(0);\n\n const sections = ['Overview', 'Languages', 'Frameworks', 'Libraries', 'Patterns'];\n\n const moveSection = (delta: number) => {\n setSelectedSection((i) =>\n Math.max(0, Math.min(sections.length - 1, i + delta))\n );\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'h' || key.name === 'left') moveSection(-1);\n else if (key.name === 'l' || key.name === 'right') moveSection(1);\n else if (key.name === 'r') handleRefresh();\n else if (key.name === 'e') handleExport();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n let result = await loadProjectContext();\n if (!result.context) {\n result = await analyzeProjectContext();\n }\n setState(result);\n setTags(await getStackTags());\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to load context',\n }));\n }\n };\n\n const handleRefresh = async () => {\n setState((s) => ({ ...s, analyzing: true, error: null }));\n try {\n const result = await refreshContext();\n setState(result);\n setTags(await getStackTags());\n } catch (err) {\n setState((s) => ({\n ...s,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to refresh context',\n }));\n }\n };\n\n const handleExport = async () => {\n try {\n await exportContext(undefined, 'json');\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to export context',\n }));\n }\n };\n\n const currentSection = () => sections[selectedSection()];\n const ctx = () => state().context;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Project Context\"\n subtitle=\"Analyze your project environment\"\n icon=\"◉\"\n count={tags().length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading || state().analyzing}>\n <Spinner\n label={state().analyzing ? 'Analyzing project...' : 'Loading context...'}\n />\n </Show>\n\n <Show when={!state().loading && !state().error && ctx()}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" marginBottom={1}>\n <For each={sections}>\n {(section, idx) => (\n <box marginRight={2}>\n <text\n fg={\n idx() === selectedSection()\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n {idx() === selectedSection() ? '▸ ' : ' '}\n {section}\n </text>\n </box>\n )}\n </For>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={currentSection() === 'Overview'}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Project:</text>\n <text fg={terminalColors.text}>{ctx()!.projectName}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Path:</text>\n <text fg={terminalColors.textSecondary}>{ctx()!.rootPath}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Languages:</text>\n <text fg={terminalColors.accent}>{ctx()!.languages.length}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Frameworks:</text>\n <text fg={terminalColors.accent}>{ctx()!.frameworks.length}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Libraries:</text>\n <text fg={terminalColors.accent}>{ctx()!.libraries.length}</text>\n </box>\n <Show when={ctx()!.lastUpdated}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Last Updated:</text>\n <text fg={terminalColors.textSecondary}>{ctx()!.lastUpdated}</text>\n </box>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Languages'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.languages.length > 0}\n fallback={<EmptyState title=\"No languages detected\" compact />}\n >\n <For each={ctx()!.languages}>\n {(lang) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {lang}\n </text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Frameworks'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.frameworks.length > 0}\n fallback={<EmptyState title=\"No frameworks detected\" compact />}\n >\n <For each={ctx()!.frameworks}>\n {(fw) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {fw}\n </text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Libraries'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.libraries.length > 0}\n fallback={<EmptyState title=\"No libraries detected\" compact />}\n >\n <For each={ctx()!.libraries.slice(0, 15)}>\n {(lib) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {lib}\n </text>\n </box>\n )}\n </For>\n <Show when={ctx()!.libraries.length > 15}>\n <text fg={terminalColors.textMuted}>\n +{ctx()!.libraries.length - 15} more\n </text>\n </Show>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Patterns'}>\n <box flexDirection=\"column\">\n <Show\n when={Object.keys(ctx()!.patterns).length > 0}\n fallback={<EmptyState title=\"No patterns detected\" compact />}\n >\n <For each={Object.entries(ctx()!.patterns)}>\n {([key, value]) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>{key}:</text>\n <text fg={terminalColors.text}>{String(value)}</text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={tags().length > 0}>\n <box flexDirection=\"row\" flexWrap=\"wrap\">\n <text fg={terminalColors.textMuted}>Tags: </text>\n <For each={tags().slice(0, 8)}>\n {(tag, idx) => (\n <text fg={terminalColors.textSecondary}>\n {tag}\n {idx() < Math.min(tags().length, 8) - 1 ? ', ' : ''}\n </text>\n )}\n </For>\n <Show when={tags().length > 8}>\n <text fg={terminalColors.textMuted}> +{tags().length - 8}</text>\n </Show>\n </box>\n </Show>\n </box>\n </Show>\n\n <Show when={!state().loading && !state().error && !ctx()}>\n <EmptyState\n icon=\"◉\"\n title=\"No context found\"\n description=\"Run analysis to detect project context\"\n action={{ label: 'Analyze', key: 'r' }}\n />\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n ←/→ sections r refresh e export Esc back\n </text>\n </box>\n );\n}\n","export type AgentType = string;\n\nexport interface ExecutorServiceState {\n availableAgents: AgentType[];\n selectedAgent: AgentType | null;\n selectedSkill: string | null;\n executing: boolean;\n result: unknown | null;\n error: string | null;\n}\n\nexport interface AgentAvailability {\n agent: AgentType;\n available: boolean;\n version?: string;\n path?: string;\n}\n\nexport async function getAgentAvailability(): Promise<AgentAvailability[]> {\n return [\n { agent: 'claude-code', available: true },\n { agent: 'cursor', available: false },\n { agent: 'codex', available: false },\n ];\n}\n\nexport async function listAvailableAgents(): Promise<AgentType[]> {\n return ['claude-code', 'cursor', 'codex'];\n}\n\nexport async function executeSkill(\n _skillPath: string,\n _agent: AgentType,\n _options?: unknown\n): Promise<{ success: boolean; output?: string; error?: string }> {\n return { success: true, output: 'Executed successfully' };\n}\n\nexport async function executeSkillWithAgent(\n _skillPath: string,\n _agent: AgentType,\n _options?: unknown\n): Promise<{ success: boolean; output?: string; error?: string }> {\n return { success: true, output: 'Executed successfully' };\n}\n\nexport function formatSkillPrompt(_content: string, _agent: AgentType): string {\n return '';\n}\n\nexport function getExecutionInstructions(_skill: string, _agent: AgentType): string {\n return 'Manual execution instructions';\n}\n\nexport const executorService = {\n getAgentAvailability,\n listAvailableAgents,\n executeSkill,\n executeSkillWithAgent,\n formatSkillPrompt,\n getExecutionInstructions,\n};\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport { getSupportedAgents } from '../services/translator.service.js';\nimport { getAgentAvailability } from '../services/executor.service.js';\nimport type { AgentType } from '@skillkit/core';\n\ninterface SyncProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface AgentSyncInfo {\n type: AgentType;\n name: string;\n icon: string;\n available: boolean;\n synced: boolean;\n skillCount: number;\n}\n\nexport function Sync(props: SyncProps) {\n const [agents, setAgents] = createSignal<AgentSyncInfo[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [syncStatus, setSyncStatus] = createSignal<'idle' | 'syncing' | 'done' | 'error'>('idle');\n const [syncMessage, setSyncMessage] = createSignal('');\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n const [skillCount, setSkillCount] = createSignal(0);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const skillsData = loadSkills();\n setSkillCount(skillsData.skills.length);\n\n const supportedAgents = getSupportedAgents();\n const availability = await getAgentAvailability();\n\n const agentInfos: AgentSyncInfo[] = supportedAgents.slice(0, isCompact() ? 4 : 8).map((agent) => {\n const logo = AGENT_LOGOS[agent];\n const availInfo = availability.find((a) => a.agent === agent);\n\n return {\n type: agent,\n name: logo?.name || agent,\n icon: logo?.icon || '◇',\n available: availInfo?.available || false,\n synced: false,\n skillCount: 0,\n };\n });\n\n setAgents(agentInfos);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load agents');\n }\n\n setLoading(false);\n };\n\n const handleSync = async () => {\n const agentList = agents();\n if (agentList.length === 0) return;\n\n const idx = selectedIndex();\n const agent = agentList[idx];\n if (!agent || !agent.available) return;\n\n const agentName = agent.name;\n const currentSkillCount = skillCount();\n\n setSyncStatus('syncing');\n setSyncMessage(`Syncing to ${agentName}...`);\n\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n setAgents((prev) =>\n prev.map((a, i) =>\n i === idx\n ? { ...a, synced: true, skillCount: currentSkillCount }\n : a\n )\n );\n\n setSyncStatus('done');\n setSyncMessage(`Synced ${currentSkillCount} skills to ${agentName}`);\n } catch {\n setSyncStatus('error');\n setSyncMessage('Sync failed');\n }\n };\n\n const handleSyncAll = async () => {\n setSyncStatus('syncing');\n setSyncMessage('Syncing to all available agents...');\n\n try {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n setAgents((prev) =>\n prev.map((a) =>\n a.available ? { ...a, synced: true, skillCount: skillCount() } : a\n )\n );\n\n const syncedCount = agents().filter((a) => a.available).length;\n setSyncStatus('done');\n setSyncMessage(`Synced to ${syncedCount} agents`);\n } catch {\n setSyncStatus('error');\n setSyncMessage('Sync failed');\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = agents().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleSync();\n else if (key.name === 'a') handleSyncAll();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const syncedCount = createMemo(() => agents().filter((a) => a.synced).length);\n const availableCount = createMemo(() => agents().filter((a) => a.available).length);\n const totalSkillsSynced = createMemo(() =>\n agents().reduce((sum, a) => sum + a.skillCount, 0)\n );\n\n const selectedAgent = () => {\n const agentList = agents();\n if (agentList.length === 0) return null;\n return agentList[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Sync\"\n subtitle=\"Share skills across agents\"\n icon=\"⟳\"\n count={agents().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading agents...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>● {syncedCount()} synced</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.accent}>◎ {availableCount()} available</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.text}>{skillCount()} skills to sync</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={syncStatus() === 'syncing'}>\n <StatusIndicator status=\"loading\" label={syncMessage()} />\n <text> </text>\n </Show>\n\n <Show when={syncStatus() === 'done'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>✓ </text>\n <text fg={terminalColors.text}>{syncMessage()}</text>\n </box>\n </Show>\n\n <Show when={syncStatus() === 'error'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.error}>✗ </text>\n <text fg={terminalColors.text}>{syncMessage()}</text>\n </box>\n </Show>\n\n <Show\n when={agents().length > 0}\n fallback={\n <EmptyState\n icon=\"⟳\"\n title=\"No agents found\"\n description=\"Install AI coding agents to sync skills\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Agents</b>\n </text>\n <text> </text>\n\n <For each={agents()}>\n {(agent, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={\n selected()\n ? terminalColors.accent\n : agent.available\n ? terminalColors.text\n : terminalColors.textMuted\n }\n width={20}\n >\n {agent.icon} {agent.name}\n </text>\n <text\n fg={\n agent.synced\n ? terminalColors.success\n : agent.available\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n width={3}\n >\n {agent.synced ? '✓' : agent.available ? '○' : '✗'}\n </text>\n <text fg={terminalColors.textMuted} width={12}>\n {agent.skillCount > 0 ? `${agent.skillCount} skills` : ''}\n </text>\n <Show when={!agent.available}>\n <text fg={terminalColors.textMuted}>(unavailable)</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={selectedAgent() && !selectedAgent()!.available}>\n <text> </text>\n <text fg={terminalColors.warning}>\n ⚠ {selectedAgent()!.name} is not installed or available\n </text>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter sync selected a sync all r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","export interface MemoryEntry {\n key: string;\n type: 'index' | 'learning' | 'observation';\n size: string;\n updated: string;\n}\n\nexport interface MemoryServiceState {\n entries: MemoryEntry[];\n status: { projectMemoryExists: boolean; globalMemoryExists: boolean } | null;\n paths: { projectMemoryDir: string; globalMemoryDir: string } | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadMemories(): Promise<MemoryServiceState> {\n return {\n entries: [],\n status: { projectMemoryExists: false, globalMemoryExists: true },\n paths: { projectMemoryDir: '.skillkit/memory', globalMemoryDir: '~/.skillkit/memory' },\n loading: false,\n error: null,\n };\n}\n\nexport async function deleteMemoryEntry(_key: string): Promise<boolean> {\n return true;\n}\n\nexport async function clearMemory(_path?: string, _scope?: string): Promise<boolean> {\n return true;\n}\n\nexport async function initializeMemory(): Promise<boolean> {\n return true;\n}\n\nexport const memoryService = {\n loadMemories,\n deleteMemoryEntry,\n clearMemory,\n initializeMemory,\n};\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport {\n loadMemories,\n deleteMemoryEntry,\n clearMemory,\n initializeMemory,\n type MemoryServiceState,\n type MemoryEntry,\n} from '../services/memory.service.js';\n\ninterface MemoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Memory(props: MemoryProps) {\n const [state, setState] = createSignal<MemoryServiceState>({\n entries: [],\n status: null,\n paths: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadMemories();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load memories',\n }));\n }\n };\n\n const handleDelete = async () => {\n const entries = state().entries;\n if (entries.length === 0) return;\n\n const entry = entries[selectedIndex()];\n if (!entry) return;\n\n try {\n const success = await deleteMemoryEntry(entry.key);\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to delete entry',\n }));\n }\n };\n\n const handleClearAll = async () => {\n try {\n const success = await clearMemory(undefined, 'all');\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to clear memory',\n }));\n }\n };\n\n const handleInitialize = async () => {\n try {\n const success = await initializeMemory();\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to initialize memory',\n }));\n }\n };\n\n const getTypeIcon = (type: MemoryEntry['type']): string => {\n switch (type) {\n case 'index':\n return '◈';\n case 'learning':\n return '◇';\n case 'observation':\n return '○';\n default:\n return '•';\n }\n };\n\n const selectedEntry = () => {\n const entries = state().entries;\n if (entries.length === 0) return null;\n return entries[selectedIndex()];\n };\n\n const detailFields = () => {\n const entry = selectedEntry();\n if (!entry) return [];\n\n return [\n { label: 'Key', value: entry.key },\n { label: 'Type', value: entry.type },\n { label: 'Size', value: entry.size },\n { label: 'Updated', value: entry.updated },\n ];\n };\n\n useKeyboard((key: { name?: string }) => {\n const entries = state().entries;\n const maxIndex = Math.max(0, entries.length - 1);\n\n if (key.name === 'j' || key.name === 'down') {\n setSelectedIndex((prev) => Math.min(prev + 1, maxIndex));\n } else if (key.name === 'k' || key.name === 'up') {\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\n } else if (key.name === 'return') {\n if (entries.length > 0) {\n setShowDetail(true);\n }\n } else if (key.name === 'd') {\n handleDelete();\n } else if (key.name === 'c') {\n handleClearAll();\n } else if (key.name === 'i') {\n handleInitialize();\n } else if (key.name === 'r') {\n loadData();\n } else if (key.name === 'escape') {\n if (showDetail()) {\n setShowDetail(false);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Memory\"\n subtitle=\"Manage persistent session memory\"\n count={state().entries.length}\n icon=\"◎\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading memories...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show when={state().status}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Status: </text>\n <text\n fg={\n state().status?.projectMemoryExists || state().status?.globalMemoryExists\n ? terminalColors.success\n : terminalColors.warning\n }\n >\n {state().status?.projectMemoryExists ? 'Project ✓' : 'Project ✗'}\n </text>\n <text fg={terminalColors.textMuted}> | </text>\n <text\n fg={state().status?.globalMemoryExists ? terminalColors.success : terminalColors.warning}\n >\n {state().status?.globalMemoryExists ? 'Global ✓' : 'Global ✗'}\n </text>\n </box>\n </Show>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().entries.length > 0}\n fallback={\n <EmptyState\n icon=\"◎\"\n title=\"No memories stored\"\n description=\"Memory will be created as you use skills\"\n action={{ label: 'Initialize', key: 'i' }}\n />\n }\n >\n <text fg={terminalColors.text}><b>Stored Memories</b></text>\n <text> </text>\n\n <For each={state().entries}>\n {(mem, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {idx() === selectedIndex() ? '▸ ' : ' '}\n </text>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n >\n {getTypeIcon(mem.type)}{' '}\n </text>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {mem.key}\n </text>\n <text fg={terminalColors.textMuted} width={12}>\n {mem.size}\n </text>\n <text fg={terminalColors.textMuted}>{mem.updated}</text>\n </box>\n )}\n </For>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedEntry()}>\n <DetailPane\n title={selectedEntry()!.key}\n icon={getTypeIcon(selectedEntry()!.type)}\n fields={detailFields()}\n actions={[\n { key: 'd', label: 'Delete' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={state().paths}>\n <text fg={terminalColors.textMuted}>\n Project: {state().paths?.projectMemoryDir || 'Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}>\n Global: {state().paths?.globalMemoryDir || 'Not initialized'}\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter view d delete c clear all i init Esc back\n </text>\n </box>\n );\n}\n","export interface WorkflowListItem {\n name: string;\n description: string;\n skills: number;\n waves: number;\n lastRun?: string;\n status: 'ready' | 'running' | 'completed' | 'failed';\n}\n\nexport interface Workflow {\n name: string;\n description?: string;\n waves: WorkflowWave[];\n metadata?: {\n lastRun?: string;\n };\n}\n\nexport interface WorkflowWave {\n name: string;\n skills: string[];\n parallel?: boolean;\n}\n\nexport interface WorkflowResult {\n success: boolean;\n completedWaves: number;\n totalWaves: number;\n errors: string[];\n}\n\nexport interface WorkflowProgress {\n currentWave: number;\n totalWaves: number;\n currentSkill?: string;\n totalSkills?: number;\n completedSkills?: number;\n status: 'running' | 'completed' | 'failed';\n}\n\nexport interface WorkflowServiceState {\n workflows: WorkflowListItem[];\n current: Workflow | null;\n progress: WorkflowProgress | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadWorkflowsList(_projectPath?: string): Promise<WorkflowServiceState> {\n return {\n workflows: [],\n current: null,\n progress: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function loadWorkflow(_name: string, _projectPath?: string): Promise<Workflow | null> {\n return null;\n}\n\nexport async function executeWorkflow(\n _name: string,\n _projectPath?: string,\n _onProgress?: (progress: WorkflowProgress) => void\n): Promise<WorkflowResult | null> {\n return { success: true, completedWaves: 0, totalWaves: 0, errors: [] };\n}\n\nexport async function createNewWorkflow(\n _name: string,\n _description: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function validateWorkflowByName(\n _name: string,\n _projectPath?: string\n): Promise<{ valid: boolean; errors: string[] }> {\n return { valid: true, errors: [] };\n}\n\nexport const workflowService = {\n loadWorkflowsList,\n loadWorkflow,\n executeWorkflow,\n createNewWorkflow,\n validateWorkflowByName,\n};\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadWorkflowsList,\n loadWorkflow,\n executeWorkflow,\n type WorkflowServiceState,\n type WorkflowListItem,\n} from '../services/workflow.service.js';\n\ninterface WorkflowProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Workflow(props: WorkflowProps) {\n const [state, setState] = createSignal<WorkflowServiceState>({\n workflows: [],\n current: null,\n progress: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [executing, setExecuting] = createSignal(false);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadWorkflowsList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load workflows',\n }));\n }\n };\n\n const handleExecute = async () => {\n if (executing()) return;\n\n const workflows = state().workflows;\n if (workflows.length === 0) return;\n\n const workflow = workflows[selectedIndex()];\n if (!workflow) return;\n\n setExecuting(true);\n try {\n const result = await executeWorkflow(workflow.name, undefined, (progress) => {\n setState((s) => ({ ...s, progress }));\n });\n\n if (result) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Workflow execution failed',\n }));\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().workflows.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'r') loadData();\n else if (key.name === 'x') handleExecute();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const successCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'completed').length\n );\n const failedCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'failed').length\n );\n const runningCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'running').length\n );\n\n const selectedWorkflow = () => {\n const workflows = state().workflows;\n if (workflows.length === 0) return null;\n return workflows[selectedIndex()];\n };\n\n const getStatusIcon = (status: WorkflowListItem['status']): string => {\n switch (status) {\n case 'completed':\n return '✓';\n case 'failed':\n return '✗';\n case 'running':\n return '⟳';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: WorkflowListItem['status']): string => {\n switch (status) {\n case 'completed':\n return terminalColors.success;\n case 'failed':\n return terminalColors.error;\n case 'running':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const divider = () => '─'.repeat(contentWidth());\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Workflows\"\n subtitle=\"Automate skill chains\"\n icon=\"~\"\n count={state().workflows.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading workflows...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <Show when={successCount() > 0}>\n <text fg={terminalColors.success}>✓ {successCount()} passed</text>\n <text fg={terminalColors.textMuted}> | </text>\n </Show>\n <Show when={failedCount() > 0}>\n <text fg={terminalColors.error}>✗ {failedCount()} failed</text>\n <text fg={terminalColors.textMuted}> | </text>\n </Show>\n <Show when={runningCount() > 0}>\n <text fg={terminalColors.accent}>⟳ {runningCount()} running</text>\n </Show>\n <Show when={successCount() === 0 && failedCount() === 0 && runningCount() === 0}>\n <text fg={terminalColors.textMuted}>No workflows run yet</text>\n </Show>\n </box>\n\n <text fg={terminalColors.textMuted}>{divider()}</text>\n <text> </text>\n\n <Show\n when={state().workflows.length > 0}\n fallback={\n <EmptyState\n icon=\"~\"\n title=\"No workflows found\"\n description=\"Create workflows in .skillkit/workflows/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Workflows</b>\n </text>\n <text> </text>\n\n <For each={state().workflows}>\n {(wf, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {wf.name}\n </text>\n <text fg={getStatusColor(wf.status)} width={3}>\n {getStatusIcon(wf.status)}{' '}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n {wf.skills}s / {wf.waves}w\n </text>\n <Show when={wf.lastRun}>\n <text fg={terminalColors.textMuted}> • {wf.lastRun}</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Executing workflow...\" />\n <Show when={state().progress}>\n <text fg={terminalColors.textMuted}>\n Wave {state().progress?.currentWave}/{state().progress?.totalWaves} •{' '}\n Skill {state().progress?.currentSkill}/{state().progress?.totalSkills}\n </text>\n </Show>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedWorkflow()}>\n <DetailPane\n title={selectedWorkflow()!.name}\n subtitle={selectedWorkflow()!.description}\n icon=\"~\"\n fields={[\n { label: 'Skills', value: String(selectedWorkflow()!.skills) },\n { label: 'Waves', value: String(selectedWorkflow()!.waves) },\n { label: 'Status', value: selectedWorkflow()!.status },\n {\n label: 'Last Run',\n value: selectedWorkflow()!.lastRun || 'Never',\n },\n ]}\n actions={[\n { key: 'x', label: 'Execute' },\n { key: 'e', label: 'Edit' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={28}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>{divider()}</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details x execute r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkillsWithDetails, type SkillWithDetails } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n getAgentAvailability,\n executeSkillWithAgent,\n listAvailableAgents,\n type AgentAvailability,\n} from '../services/executor.service.js';\nimport type { AgentType } from '@skillkit/core';\n\ninterface ExecuteProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Execute(props: ExecuteProps) {\n const [skills, setSkills] = createSignal<SkillWithDetails[]>([]);\n const [agents, setAgents] = createSignal<AgentAvailability[]>([]);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [selectedAgentIndex, setSelectedAgentIndex] = createSignal(0);\n const [focusedPane, setFocusedPane] = createSignal<'skills' | 'agents'>('skills');\n const [executing, setExecuting] = createSignal(false);\n const [executionResult, setExecutionResult] = createSignal<{\n success: boolean;\n output: string;\n error?: string;\n } | null>(null);\n const [loading, setLoading] = createSignal(true);\n const [loadError, setLoadError] = createSignal<string | null>(null);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setLoadError(null);\n\n try {\n const skillsWithDetails = loadSkillsWithDetails();\n setSkills(skillsWithDetails);\n\n const agentAvailability = await getAgentAvailability();\n setAgents(agentAvailability);\n } catch (err) {\n setLoadError(err instanceof Error ? err.message : 'Failed to load');\n } finally {\n setLoading(false);\n }\n };\n\n const handleExecute = async () => {\n if (executing()) return;\n\n const skillList = skills();\n const agentList = agents();\n\n if (skillList.length === 0 || agentList.length === 0) return;\n\n const skill = skillList[selectedSkillIndex()];\n const agent = agentList[selectedAgentIndex()];\n\n if (!skill || !agent || !agent.available) return;\n\n setExecuting(true);\n setExecutionResult(null);\n\n try {\n const result = await executeSkillWithAgent(\n skill.path,\n agent.agent,\n { timeout: 60000 }\n );\n\n setExecutionResult({\n success: result.success,\n output: result.output || '',\n error: result.error,\n });\n } catch (err) {\n setExecutionResult({\n success: false,\n output: '',\n error: err instanceof Error ? err.message : 'Execution failed',\n });\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'skills') {\n const max = skills().length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = agents().length - 1;\n setSelectedAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab' || key.name === 'l' || key.name === 'right') {\n setFocusedPane((p) => (p === 'skills' ? 'agents' : 'skills'));\n }\n else if (key.name === 'h' || key.name === 'left') {\n setFocusedPane((p) => (p === 'agents' ? 'skills' : 'agents'));\n }\n else if (key.name === 'return' || key.name === 'x') handleExecute();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (executionResult()) setExecutionResult(null);\n else props.onNavigate('home');\n }\n });\n\n const selectedSkill = () => {\n const list = skills();\n if (list.length === 0) return null;\n return list[selectedSkillIndex()];\n };\n\n const selectedAgent = () => {\n const list = agents();\n if (list.length === 0) return null;\n return list[selectedAgentIndex()];\n };\n\n const MAX_VISIBLE = 8;\n\n const skillsWindow = createMemo(() => {\n const list = skills();\n const selected = selectedSkillIndex();\n const total = list.length;\n if (total <= MAX_VISIBLE) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(MAX_VISIBLE / 2));\n start = Math.min(start, total - MAX_VISIBLE);\n return { start, items: list.slice(start, start + MAX_VISIBLE) };\n });\n\n const agentsWindow = createMemo(() => {\n const list = agents();\n const selected = selectedAgentIndex();\n const total = list.length;\n if (total <= MAX_VISIBLE) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(MAX_VISIBLE / 2));\n start = Math.min(start, total - MAX_VISIBLE);\n return { start, items: list.slice(start, start + MAX_VISIBLE) };\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Execute\"\n subtitle=\"Run skills with AI agents\"\n icon=\"▶\"\n />\n\n <Show when={loading()}>\n <Spinner label=\"Loading...\" />\n </Show>\n\n <Show when={loadError()}>\n <ErrorState\n message={loadError()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={!loading() && !loadError()}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Skills</b>\n </text>\n <text> </text>\n\n <Show\n when={skills().length > 0}\n fallback={\n <EmptyState\n title=\"No skills installed\"\n description=\"Browse to install\"\n action={{ label: 'Browse', key: 'b' }}\n compact\n />\n }\n >\n <Show when={skillsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {skillsWindow().start} more</text>\n </Show>\n <For each={skillsWindow().items}>\n {(skill, idx) => {\n const originalIndex = () => skillsWindow().start + idx();\n const isSelected = () =>\n focusedPane() === 'skills' && originalIndex() === selectedSkillIndex();\n return (\n <box marginBottom={1}>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.textSecondary}\n >\n {isSelected() ? '▸ ' : ' '}\n {skill.name}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={skillsWindow().start + MAX_VISIBLE < skills().length}>\n <text fg={terminalColors.textMuted}> ▼ {skills().length - skillsWindow().start - MAX_VISIBLE} more</text>\n </Show>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'agents'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Agents</b>\n </text>\n <text> </text>\n\n <Show\n when={agents().length > 0}\n fallback={\n <EmptyState\n title=\"No agents found\"\n compact\n />\n }\n >\n <Show when={agentsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {agentsWindow().start} more</text>\n </Show>\n <For each={agentsWindow().items}>\n {(agent, idx) => {\n const originalIndex = () => agentsWindow().start + idx();\n const isSelected = () =>\n focusedPane() === 'agents' && originalIndex() === selectedAgentIndex();\n const available = agent.available;\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={\n isSelected()\n ? terminalColors.accent\n : available\n ? terminalColors.textSecondary\n : terminalColors.textMuted\n }\n >\n {isSelected() ? '▸ ' : ' '}\n {agent.agent}\n </text>\n <text fg={available ? terminalColors.success : terminalColors.error}>\n {' '}\n {available ? '●' : '○'}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={agentsWindow().start + MAX_VISIBLE < agents().length}>\n <text fg={terminalColors.textMuted}> ▼ {agents().length - agentsWindow().start - MAX_VISIBLE} more</text>\n </Show>\n </Show>\n </box>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={selectedSkill() && selectedAgent()}>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>Selected: </text>\n <text fg={terminalColors.accent}>{selectedSkill()!.name}</text>\n <text fg={terminalColors.textMuted}> → </text>\n <text\n fg={\n selectedAgent()!.available\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n {selectedAgent()!.agent}\n </text>\n <Show when={!selectedAgent()!.available}>\n <text fg={terminalColors.warning}> (unavailable)</text>\n </Show>\n </box>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Executing skill...\" />\n </Show>\n\n <Show when={executionResult() && !executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text\n fg={\n executionResult()!.success\n ? terminalColors.success\n : terminalColors.error\n }\n >\n {executionResult()!.success ? '✓ Execution completed' : '✗ Execution failed'}\n </text>\n <Show when={executionResult()!.error}>\n <text fg={terminalColors.error}>{executionResult()!.error}</text>\n </Show>\n <Show when={executionResult()!.output}>\n <text fg={terminalColors.textMuted}>\n {executionResult()!.output.slice(0, 200)}\n {executionResult()!.output.length > 200 ? '...' : ''}\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Tab/←/→ switch pane j/k navigate Enter execute r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface HistoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function History(props: HistoryProps) {\n const history = [\n { skill: 'tdd-workflow', time: '10:32 AM', duration: '2.3s', status: 'success' },\n { skill: 'code-review', time: '10:15 AM', duration: '5.1s', status: 'success' },\n { skill: 'deploy-check', time: '09:45 AM', duration: '8.7s', status: 'failed' },\n { skill: 'lint-fix', time: '09:30 AM', duration: '1.2s', status: 'success' },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"History\"\n subtitle=\"View execution history\"\n count={history.length}\n icon=\"◷\"\n />\n\n <text fg={terminalColors.text}><b>Recent Executions</b></text>\n <text> </text>\n\n <For each={history}>\n {(item, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx() === 0 ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {idx() === 0 ? '\\u25B8 ' : ' '}{item.skill}\n </text>\n <text fg={terminalColors.textMuted} width={12}>{item.time}</text>\n <text fg={terminalColors.textMuted} width={10}>{item.duration}</text>\n <text\n fg={item.status === 'success' ? terminalColors.success : terminalColors.error}\n >\n {item.status === 'success' ? '\\u2713 success' : '\\u2717 failed'}\n </text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to view details, 'r' to re-run, 'c' to clear\n </text>\n </box>\n );\n}\n","export interface TeamMemberDisplay {\n name: string;\n role: string;\n skills: number;\n lastSync?: string;\n status: 'active' | 'inactive' | 'pending';\n}\n\nexport interface SharedSkillDisplay {\n name: string;\n sharedBy: string;\n sharedAt: string;\n agents: string[];\n}\n\nexport interface TeamConfig {\n name: string;\n teamName?: string;\n members: TeamMember[];\n}\n\nexport interface TeamMember {\n name: string;\n email?: string;\n role?: string;\n sharedSkills?: string[];\n lastSync?: string;\n}\n\nexport interface TeamServiceState {\n config: TeamConfig | null;\n members: TeamMemberDisplay[];\n sharedSkills: SharedSkillDisplay[];\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadTeamConfig(_projectPath?: string): Promise<TeamServiceState> {\n return {\n config: null,\n members: [],\n sharedSkills: [],\n loading: false,\n error: null,\n };\n}\n\nexport async function initializeTeam(\n _teamName: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function addTeamMember(\n _member: { name: string; email?: string; role?: string },\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function removeTeamMember(\n _memberName: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function shareSkill(\n _skillName: string,\n _targetMembers?: string[],\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function createBundle(\n _skills: string[],\n _bundleName: string,\n _projectPath?: string\n): Promise<string | null> {\n return null;\n}\n\nexport async function importSkillBundle(\n _bundlePath: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport const teamService = {\n loadTeamConfig,\n initializeTeam,\n addTeamMember,\n removeTeamMember,\n shareSkill,\n createBundle,\n importSkillBundle,\n};\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadTeamConfig,\n initializeTeam,\n shareSkill,\n type TeamServiceState,\n type TeamMemberDisplay,\n type SharedSkillDisplay,\n} from '../services/team.service.js';\n\ninterface TeamProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ntype FocusedPane = 'members' | 'skills';\n\nexport function Team(props: TeamProps) {\n const [state, setState] = createSignal<TeamServiceState>({\n config: null,\n members: [],\n sharedSkills: [],\n loading: true,\n error: null,\n });\n const [focusedPane, setFocusedPane] = createSignal<FocusedPane>('members');\n const [selectedMemberIndex, setSelectedMemberIndex] = createSignal(0);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [initializing, setInitializing] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadTeamConfig();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load team',\n }));\n }\n };\n\n const handleInitialize = async () => {\n if (initializing()) return;\n setInitializing(true);\n try {\n const success = await initializeTeam('My Team');\n if (success) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to initialize team',\n }));\n } finally {\n setInitializing(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'members') {\n const max = state().members.length - 1;\n setSelectedMemberIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = state().sharedSkills.length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (showDetail()) {\n if (key.name === 'escape') {\n setShowDetail(false);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab' || key.name === 'l' || key.name === 'right') {\n setFocusedPane((p) => (p === 'members' ? 'skills' : 'members'));\n } else if (key.name === 'h' || key.name === 'left') {\n setFocusedPane((p) => (p === 'skills' ? 'members' : 'skills'));\n } else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'i') handleInitialize();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const getStatusIcon = (status: TeamMemberDisplay['status']): string => {\n switch (status) {\n case 'active':\n return '●';\n case 'inactive':\n return '○';\n case 'pending':\n return '◐';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: TeamMemberDisplay['status']): string => {\n switch (status) {\n case 'active':\n return terminalColors.success;\n case 'inactive':\n return terminalColors.textMuted;\n case 'pending':\n return terminalColors.warning;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedMember = () => {\n const members = state().members;\n if (members.length === 0) return null;\n return members[selectedMemberIndex()];\n };\n\n const selectedSharedSkill = () => {\n const skills = state().sharedSkills;\n if (skills.length === 0) return null;\n return skills[selectedSkillIndex()];\n };\n\n const memberDetailFields = () => {\n const member = selectedMember();\n if (!member) return [];\n\n return [\n { label: 'Name', value: member.name },\n { label: 'Role', value: member.role },\n { label: 'Skills', value: String(member.skills) },\n { label: 'Status', value: member.status },\n { label: 'Last Sync', value: member.lastSync || 'Never' },\n ];\n };\n\n const skillDetailFields = () => {\n const skill = selectedSharedSkill();\n if (!skill) return [];\n\n return [\n { label: 'Name', value: skill.name },\n { label: 'Shared By', value: skill.sharedBy },\n { label: 'Shared At', value: skill.sharedAt },\n { label: 'Agents', value: skill.agents.join(', ') || 'All' },\n ];\n };\n\n const activeCount = createMemo(\n () => state().members.filter((m) => m.status === 'active').length\n );\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Team\"\n subtitle=\"Collaborate with your development team\"\n count={state().members.length}\n icon=\"◉\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading team...\" />\n </Show>\n\n <Show when={initializing()}>\n <StatusIndicator status=\"loading\" label=\"Initializing team...\" />\n </Show>\n\n <Show when={!state().loading && !state().error && !initializing()}>\n <Show\n when={state().config}\n fallback={\n <EmptyState\n icon=\"◉\"\n title=\"No team configured\"\n description=\"Initialize a team to start collaborating\"\n action={{ label: 'Initialize', key: 'i' }}\n />\n }\n >\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Team: </text>\n <text fg={terminalColors.accent}>{state().config?.teamName || 'Unnamed'}</text>\n <text fg={terminalColors.textMuted}> • </text>\n <text fg={terminalColors.success}>{activeCount()} active</text>\n <text fg={terminalColors.textMuted}> • </text>\n <text fg={terminalColors.text}>{state().sharedSkills.length} shared skills</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'members'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Members</b>\n </text>\n <text> </text>\n\n <Show\n when={state().members.length > 0}\n fallback={\n <EmptyState title=\"No members\" compact />\n }\n >\n <For each={state().members}>\n {(member, idx) => {\n const selected = () =>\n focusedPane() === 'members' && idx() === selectedMemberIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={15}\n >\n {member.name}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n {member.role}\n </text>\n <text fg={getStatusColor(member.status)}>\n {getStatusIcon(member.status)}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={35}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Shared Skills</b>\n </text>\n <text> </text>\n\n <Show\n when={state().sharedSkills.length > 0}\n fallback={\n <EmptyState\n title=\"No shared skills\"\n description=\"Share skills with 's'\"\n compact\n />\n }\n >\n <For each={state().sharedSkills.slice(0, 8)}>\n {(skill, idx) => {\n const selected = () =>\n focusedPane() === 'skills' && idx() === selectedSkillIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {skill.name}\n </text>\n <text fg={terminalColors.textMuted}>\n by {skill.sharedBy}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={state().sharedSkills.length > 8}>\n <text fg={terminalColors.textMuted}>\n +{state().sharedSkills.length - 8} more\n </text>\n </Show>\n </Show>\n </box>\n </box>\n\n <Show when={showDetail()}>\n <Show when={focusedPane() === 'members' && selectedMember()}>\n <DetailPane\n title={selectedMember()!.name}\n subtitle={selectedMember()!.role}\n icon=\"◉\"\n fields={memberDetailFields()}\n actions={[\n { key: 's', label: 'Share Skill' },\n { key: 'd', label: 'Remove' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n <Show when={focusedPane() === 'skills' && selectedSharedSkill()}>\n <DetailPane\n title={selectedSharedSkill()!.name}\n subtitle={`Shared by ${selectedSharedSkill()!.sharedBy}`}\n icon=\"◇\"\n fields={skillDetailFields()}\n actions={[\n { key: 'i', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n Tab/←/→ switch pane j/k navigate Enter details i init r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","export interface PluginListItem {\n name: string;\n version: string;\n description: string;\n type: 'translator' | 'provider' | 'command' | 'mixed';\n enabled: boolean;\n path?: string;\n}\n\nexport interface PluginServiceState {\n plugins: PluginListItem[];\n manager: unknown | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadPluginsList(_projectPath?: string): Promise<PluginServiceState> {\n return {\n plugins: [],\n manager: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function enablePlugin(_name: string, _manager: unknown): Promise<boolean> {\n return true;\n}\n\nexport async function disablePlugin(_name: string, _manager: unknown): Promise<boolean> {\n return true;\n}\n\nexport async function getPluginInfo(_name: string, _manager: unknown): Promise<unknown> {\n return null;\n}\n\nexport async function installPluginFromPath(\n _pluginPath: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport const pluginService = {\n loadPluginsList,\n enablePlugin,\n disablePlugin,\n getPluginInfo,\n installPluginFromPath,\n};\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadPluginsList,\n enablePlugin,\n disablePlugin,\n getPluginInfo,\n type PluginServiceState,\n type PluginListItem,\n} from '../services/plugin.service.js';\nimport type { PluginManager, Plugin } from '@skillkit/core';\n\ninterface PluginsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plugins(props: PluginsProps) {\n const [state, setState] = createSignal<PluginServiceState>({\n plugins: [],\n manager: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [selectedPlugin, setSelectedPlugin] = createSignal<Plugin | null>(null);\n const [toggling, setToggling] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadPluginsList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load plugins',\n }));\n }\n };\n\n const handleToggle = async () => {\n const plugins = state().plugins;\n const manager = state().manager;\n if (plugins.length === 0 || !manager) return;\n\n const plugin = plugins[selectedIndex()];\n if (!plugin) return;\n\n setToggling(true);\n\n try {\n if (plugin.enabled) {\n await disablePlugin(plugin.name, manager);\n } else {\n await enablePlugin(plugin.name, manager);\n }\n\n await loadData();\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to toggle plugin',\n }));\n } finally {\n setToggling(false);\n }\n };\n\n const handleShowDetail = async () => {\n const plugins = state().plugins;\n const manager = state().manager;\n if (plugins.length === 0 || !manager) return;\n\n const plugin = plugins[selectedIndex()];\n if (!plugin) return;\n\n try {\n const info = await getPluginInfo(plugin.name, manager);\n setSelectedPlugin(info as Plugin | null);\n setShowDetail(true);\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to load plugin details',\n }));\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().plugins.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleShowDetail();\n else if (key.name === 'space' || key.name === 't') handleToggle();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getTypeIcon = (type: PluginListItem['type']): string => {\n switch (type) {\n case 'translator':\n return '⇄';\n case 'provider':\n return '◆';\n case 'command':\n return '⌘';\n default:\n return '◈';\n }\n };\n\n const currentPlugin = () => {\n const plugins = state().plugins;\n if (plugins.length === 0) return null;\n return plugins[selectedIndex()];\n };\n\n const detailFields = () => {\n const plugin = selectedPlugin();\n if (!plugin) return [];\n\n const current = currentPlugin();\n return [\n { label: 'Name', value: plugin.metadata.name },\n { label: 'Version', value: plugin.metadata.version },\n { label: 'Description', value: plugin.metadata.description || 'No description' },\n { label: 'Type', value: current?.type || 'unknown' },\n { label: 'Status', value: current?.enabled ? 'Enabled' : 'Disabled' },\n { label: 'Path', value: current?.path || 'N/A' },\n ];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plugins\"\n subtitle=\"Extend SkillKit with plugins\"\n count={state().plugins.length}\n icon=\"◈\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading plugins...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show\n when={state().plugins.length > 0}\n fallback={\n <EmptyState\n icon=\"◈\"\n title=\"No plugins installed\"\n description=\"Install plugins from ~/.skillkit/plugins/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Installed Plugins</b>\n </text>\n <text> </text>\n\n <For each={state().plugins}>\n {(plugin, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.textSecondary}\n width={3}\n >\n {getTypeIcon(plugin.type)}{' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {plugin.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n v{plugin.version}\n </text>\n <text\n fg={\n plugin.enabled\n ? terminalColors.success\n : terminalColors.textMuted\n }\n >\n {plugin.enabled ? '● enabled' : '○ disabled'}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={toggling()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Toggling plugin...\" />\n </Show>\n\n <Show when={currentPlugin() && !toggling()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {currentPlugin()!.description || 'No description available'}\n </text>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedPlugin()}>\n <DetailPane\n title={selectedPlugin()!.metadata.name}\n subtitle={`v${selectedPlugin()!.metadata.version}`}\n icon={getTypeIcon(currentPlugin()?.type || 'mixed')}\n fields={detailFields()}\n actions={[\n {\n key: 't',\n label: currentPlugin()?.enabled ? 'Disable' : 'Enable',\n },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details Space toggle r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","export interface MethodologyPackDisplay {\n name: string;\n description: string;\n version: string;\n skills: number;\n tags: string[];\n installed: boolean;\n status: 'available' | 'installed' | 'synced';\n}\n\nexport interface MethodologyServiceState {\n packs: MethodologyPackDisplay[];\n installedPacks: string[];\n manager: unknown | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadMethodologies(): Promise<MethodologyServiceState> {\n return {\n packs: [],\n installedPacks: [],\n manager: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function installMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport async function uninstallMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport async function syncMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport const methodologyService = {\n loadMethodologies,\n installMethodologyPack,\n uninstallMethodologyPack,\n syncMethodologyPack,\n};\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadMethodologies,\n installMethodologyPack,\n uninstallMethodologyPack,\n syncMethodologyPack,\n type MethodologyServiceState,\n type MethodologyPackDisplay,\n} from '../services/methodology.service.js';\n\ninterface MethodologyProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Methodology(props: MethodologyProps) {\n const [state, setState] = createSignal<MethodologyServiceState>({\n packs: [],\n installedPacks: [],\n manager: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [installing, setInstalling] = createSignal(false);\n const [syncing, setSyncing] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadMethodologies();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load methodologies',\n }));\n }\n };\n\n const handleInstall = async () => {\n const packs = state().packs;\n if (packs.length === 0 || installing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || pack.installed) return;\n\n setInstalling(true);\n try {\n const result = await installMethodologyPack(pack.name);\n if (result) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to install pack',\n }));\n } finally {\n setInstalling(false);\n }\n };\n\n const handleUninstall = async () => {\n const packs = state().packs;\n if (packs.length === 0 || installing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || !pack.installed) return;\n\n setInstalling(true);\n try {\n const success = await uninstallMethodologyPack(pack.name);\n if (success) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to uninstall pack',\n }));\n } finally {\n setInstalling(false);\n }\n };\n\n const handleSync = async () => {\n const packs = state().packs;\n if (packs.length === 0 || syncing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || !pack.installed) return;\n\n setSyncing(true);\n try {\n const result = await syncMethodologyPack(pack.name);\n if (result) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to sync pack',\n }));\n } finally {\n setSyncing(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().packs.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'i') handleInstall();\n else if (key.name === 'u') handleUninstall();\n else if (key.name === 's') handleSync();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getStatusIcon = (status: MethodologyPackDisplay['status']): string => {\n switch (status) {\n case 'synced':\n return '✓';\n case 'installed':\n return '●';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: MethodologyPackDisplay['status']): string => {\n switch (status) {\n case 'synced':\n return terminalColors.success;\n case 'installed':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedPack = () => {\n const packs = state().packs;\n if (packs.length === 0) return null;\n return packs[selectedIndex()];\n };\n\n const detailFields = () => {\n const pack = selectedPack();\n if (!pack) return [];\n\n return [\n { label: 'Name', value: pack.name },\n { label: 'Version', value: pack.version },\n { label: 'Description', value: pack.description || 'No description' },\n { label: 'Skills', value: String(pack.skills) },\n { label: 'Tags', value: pack.tags.join(', ') || 'None' },\n { label: 'Status', value: pack.status },\n ];\n };\n\n const installedCount = () => state().packs.filter((p) => p.installed).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Methodologies\"\n subtitle=\"Development methodology skill packs\"\n count={state().packs.length}\n icon=\"◎\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading methodologies...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Installed: </text>\n <text fg={terminalColors.success}>{installedCount()}</text>\n <text fg={terminalColors.textMuted}> / </text>\n <text fg={terminalColors.text}>{state().packs.length}</text>\n <text fg={terminalColors.textMuted}> packs</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().packs.length > 0}\n fallback={\n <EmptyState\n icon=\"◎\"\n title=\"No methodology packs found\"\n description=\"Check .skillkit/methodology/packs/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Packs</b>\n </text>\n <text> </text>\n\n <For each={state().packs}>\n {(pack, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {pack.name}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n v{pack.version}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {pack.skills} skills\n </text>\n <text fg={getStatusColor(pack.status)}>\n {getStatusIcon(pack.status)} {pack.status}\n </text>\n </box>\n <Show when={pack.description}>\n <text fg={terminalColors.textMuted}>\n {' '}{pack.description.slice(0, 45)}\n {pack.description.length > 45 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={installing()}>\n <text> </text>\n <StatusIndicator\n status=\"loading\"\n label={selectedPack()?.installed ? 'Uninstalling...' : 'Installing...'}\n />\n </Show>\n\n <Show when={syncing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Syncing to agents...\" />\n </Show>\n </box>\n\n <Show when={showDetail() && selectedPack()}>\n <DetailPane\n title={selectedPack()!.name}\n subtitle={`v${selectedPack()!.version}`}\n icon=\"◎\"\n fields={detailFields()}\n actions={\n selectedPack()!.installed\n ? [\n { key: 's', label: 'Sync' },\n { key: 'u', label: 'Uninstall' },\n { key: 'Esc', label: 'Close' },\n ]\n : [\n { key: 'i', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]\n }\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details i install u uninstall s sync r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface ProgressBarProps {\n progress: number;\n width?: number;\n showPercentage?: boolean;\n color?: keyof typeof terminalColors;\n}\n\nexport function ProgressBar(props: ProgressBarProps) {\n const width = () => Math.max(1, Math.round(props.width ?? 20));\n const safeProgress = () => (Number.isFinite(props.progress) ? props.progress : 0);\n const showPercentage = () => props.showPercentage ?? true;\n const color = () => props.color ?? 'accent';\n\n const clampedProgress = () => Math.max(0, Math.min(100, safeProgress()));\n const filledWidth = () => Math.round((clampedProgress() / 100) * width());\n const emptyWidth = () => Math.max(0, width() - filledWidth());\n\n const filled = () => symbols.progressFilled.repeat(filledWidth());\n const empty = () => symbols.progressEmpty.repeat(emptyWidth());\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text>\n <span fg={terminalColors[color()]}>{filled()}</span>\n <span fg={terminalColors.textMuted}>{empty()}</span>\n </text>\n <Show when={showPercentage()}>\n <text fg={terminalColors.textSecondary}>{Math.round(clampedProgress())}%</text>\n </Show>\n </box>\n );\n}\n","export interface PlanListItem {\n name: string;\n path: string;\n tasks: number;\n status: 'pending' | 'in_progress' | 'completed' | 'failed';\n lastModified?: string;\n}\n\nexport interface StructuredPlan {\n title: string;\n description?: string;\n tasks: PlanTask[];\n}\n\nexport interface PlanTask {\n id: string;\n title: string;\n description?: string;\n status: 'pending' | 'in_progress' | 'completed' | 'failed';\n}\n\nexport interface PlanValidationIssue {\n message: string;\n type?: 'error' | 'warning';\n}\n\nexport interface PlanValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n issues?: PlanValidationIssue[];\n}\n\nexport interface PlanExecutionResult {\n success: boolean;\n completedTasks: string[];\n failedTasks: string[];\n totalTasks: number;\n errors: string[];\n}\n\nexport type PlanEvent = string;\n\nexport interface PlanServiceState {\n plans: PlanListItem[];\n current: StructuredPlan | null;\n validation: PlanValidationResult | null;\n execution: PlanExecutionResult | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadPlansList(_projectPath?: string): Promise<PlanServiceState> {\n return {\n plans: [],\n current: null,\n validation: null,\n execution: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function loadPlan(_planPath: string): Promise<StructuredPlan | null> {\n return null;\n}\n\nexport async function validatePlan(_plan: StructuredPlan): Promise<PlanValidationResult> {\n return { valid: true, errors: [], warnings: [], issues: [] };\n}\n\nexport async function executePlan(\n _plan: StructuredPlan,\n _projectPath?: string,\n _onEvent?: (event: PlanEvent) => void,\n _dryRun?: boolean\n): Promise<PlanExecutionResult | null> {\n return { success: true, completedTasks: [], failedTasks: [], totalTasks: 0, errors: [] };\n}\n\nexport async function executePlanDryRun(\n plan: StructuredPlan,\n projectPath?: string,\n onEvent?: (event: PlanEvent) => void\n): Promise<PlanExecutionResult | null> {\n return executePlan(plan, projectPath, onEvent, true);\n}\n\nexport async function parsePlanFromContent(_content: string): Promise<StructuredPlan | null> {\n return null;\n}\n\nexport const planService = {\n loadPlansList,\n loadPlan,\n validatePlan,\n executePlan,\n executePlanDryRun,\n parsePlanFromContent,\n};\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadPlansList,\n loadPlan,\n validatePlan,\n executePlan,\n executePlanDryRun,\n type PlanServiceState,\n type PlanListItem,\n} from '../services/plan.service.js';\n\ninterface PlanProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plan(props: PlanProps) {\n const [state, setState] = createSignal<PlanServiceState>({\n plans: [],\n current: null,\n validation: null,\n execution: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [executionProgress, setExecutionProgress] = createSignal(0);\n const [executing, setExecuting] = createSignal(false);\n const [validating, setValidating] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadPlansList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load plans',\n }));\n }\n };\n\n const handleValidate = async () => {\n const plans = state().plans;\n if (plans.length === 0 || validating()) return;\n\n const planItem = plans[selectedIndex()];\n if (!planItem) return;\n\n setValidating(true);\n try {\n const plan = await loadPlan(planItem.path);\n if (plan) {\n const validation = await validatePlan(plan);\n setState((s) => ({ ...s, current: plan, validation }));\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Validation failed',\n }));\n } finally {\n setValidating(false);\n }\n };\n\n const handleExecute = async (dryRun: boolean = false) => {\n const plans = state().plans;\n if (plans.length === 0 || executing()) return;\n\n const planItem = plans[selectedIndex()];\n if (!planItem) return;\n\n setExecuting(true);\n setExecutionProgress(0);\n\n try {\n const plan = await loadPlan(planItem.path);\n if (!plan) {\n setExecuting(false);\n return;\n }\n\n const executeFn = dryRun ? executePlanDryRun : executePlan;\n let completedCount = 0;\n const totalTasks = plan.tasks?.length || 0;\n const result = await executeFn(plan, undefined, (event) => {\n if (event === 'plan:task_completed') {\n completedCount++;\n setExecutionProgress(totalTasks > 0 ? (completedCount / totalTasks) * 100 : 100);\n }\n });\n\n setState((s) => ({ ...s, execution: result }));\n loadData();\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Execution failed',\n }));\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().plans.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'v') handleValidate();\n else if (key.name === 'x') handleExecute(false);\n else if (key.name === 'd') handleExecute(true);\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const getStatusIcon = (status: PlanListItem['status']): string => {\n switch (status) {\n case 'completed':\n return '✓';\n case 'failed':\n return '✗';\n case 'in_progress':\n return '⟳';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: PlanListItem['status']): string => {\n switch (status) {\n case 'completed':\n return terminalColors.success;\n case 'failed':\n return terminalColors.error;\n case 'in_progress':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedPlan = () => {\n const plans = state().plans;\n if (plans.length === 0) return null;\n return plans[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plan Execution\"\n subtitle=\"Structured multi-step execution\"\n icon=\"▣\"\n count={state().plans.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading plans...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <Show\n when={state().plans.length > 0}\n fallback={\n <EmptyState\n icon=\"▣\"\n title=\"No plans found\"\n description=\"Create plans in .skillkit/plans/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Plans</b>\n </text>\n <text> </text>\n\n <For each={state().plans}>\n {(plan, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {plan.name}\n </text>\n <text fg={getStatusColor(plan.status)} width={3}>\n {getStatusIcon(plan.status)}{' '}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {plan.tasks} tasks\n </text>\n <Show when={plan.lastModified}>\n <text fg={terminalColors.textMuted}> • {plan.lastModified}</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={validating()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Validating plan...\" />\n </Show>\n\n <Show when={state().validation && !validating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Validation Result</b>\n </text>\n <text\n fg={state().validation!.valid ? terminalColors.success : terminalColors.error}\n >\n {state().validation!.valid ? '✓ Valid' : '✗ Invalid'}\n </text>\n <Show when={state().validation!.issues && state().validation!.issues!.length > 0}>\n <For each={state().validation!.issues!.slice(0, 3)}>\n {(issue) => (\n <text fg={terminalColors.warning}>• {issue.message}</text>\n )}\n </For>\n </Show>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <StatusIndicator status=\"loading\" label=\"Executing plan...\" />\n <box flexDirection=\"row\" marginTop={1}>\n <text fg={terminalColors.text}>Progress: </text>\n <ProgressBar progress={executionProgress()} width={30} />\n </box>\n </Show>\n\n <Show when={state().execution && !executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Execution Result</b>\n </text>\n <text\n fg={state().execution!.success ? terminalColors.success : terminalColors.error}\n >\n {state().execution!.success ? '✓ Completed' : '✗ Failed'}\n </text>\n <text fg={terminalColors.textMuted}>\n Completed: {state().execution!.completedTasks.length} | Failed: {state().execution!.failedTasks.length}\n </text>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate v validate x execute d dry-run r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SettingsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface SettingItem {\n key: string;\n label: string;\n value: string;\n type: 'select' | 'path' | 'toggle';\n}\n\nconst DEFAULT_SETTINGS: SettingItem[] = [\n { key: 'defaultAgent', label: 'Default Agent', value: 'claude-code', type: 'select' },\n { key: 'skillsDir', label: 'Skills Directory', value: '.claude/skills', type: 'path' },\n { key: 'autoSync', label: 'Auto Sync', value: 'enabled', type: 'toggle' },\n { key: 'theme', label: 'Theme', value: 'dark', type: 'select' },\n { key: 'telemetry', label: 'Telemetry', value: 'disabled', type: 'toggle' },\n];\n\nexport function Settings(props: SettingsProps) {\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [settings, setSettings] = createSignal<SettingItem[]>(DEFAULT_SETTINGS);\n const [animPhase, setAnimPhase] = createSignal(0);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n const handleKeyNav = (delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, settings().length - 1)));\n };\n\n const handleToggle = () => {\n const setting = settings()[selectedIndex()];\n if (setting?.type === 'toggle') {\n setSettings(prev => prev.map((s, i) =>\n i === selectedIndex() ? { ...s, value: s.value === 'enabled' ? 'disabled' : 'enabled' } : s\n ));\n }\n };\n\n const handleReset = () => {\n setSettings(DEFAULT_SETTINGS);\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'r') handleReset();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const divider = createMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>\n );\n\n const shortcuts = () => isCompact()\n ? 'j/k nav enter toggle r reset esc back'\n : 'j/k navigate enter toggle r reset defaults esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.text}>Settings</text>\n <text fg={terminalColors.textMuted}>{settings().length} options</text>\n </box>\n <text fg={terminalColors.textMuted}>configure skillkit</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <text fg={terminalColors.text}>Configuration</text>\n <text> </text>\n\n <For each={settings()}>\n {(setting, idx) => {\n const selected = () => idx() === selectedIndex();\n const indicator = () => selected() ? '>' : ' ';\n const valueColor = () => setting.type === 'toggle'\n ? (setting.value === 'enabled' ? terminalColors.success : terminalColors.textMuted)\n : terminalColors.textMuted;\n const toggleIcon = () => setting.type === 'toggle'\n ? (setting.value === 'enabled' ? '* ' : 'o ')\n : '';\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator()}</text>\n <text fg={selected() ? terminalColors.accent : terminalColors.text} width={18}>\n {setting.label}\n </text>\n <text fg={valueColor()}>{toggleIcon()}{setting.value}</text>\n </box>\n );\n }}\n </For>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2 && !isCompact()}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>config: ~/.config/skillkit/config.json</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>{shortcuts()}</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HelpProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SHORTCUTS = [\n { section: 'Navigation', items: [\n { key: 'h', desc: 'Home screen' },\n { key: 'b', desc: 'Browse skills' },\n { key: 'm', desc: 'Marketplace' },\n { key: 'r', desc: 'Recommendations' },\n { key: 'i', desc: 'Installed skills' },\n { key: 's', desc: 'Sync settings' },\n { key: 'f', desc: 'Find skills' },\n ]},\n { section: 'Actions', items: [\n { key: 't', desc: 'Translate skills' },\n { key: 'w', desc: 'Workflows' },\n { key: 'x', desc: 'Execute' },\n { key: 'n', desc: 'Plan' },\n { key: 'v', desc: 'Validate' },\n { key: 'u', desc: 'Publish' },\n ]},\n { section: 'Team & Config', items: [\n { key: 'a', desc: 'Team settings' },\n { key: 'c', desc: 'Context' },\n { key: 'e', desc: 'Memory' },\n { key: 'p', desc: 'Plugins' },\n { key: 'o', desc: 'Methodology' },\n { key: ',', desc: 'Settings' },\n ]},\n { section: 'Global', items: [\n { key: '/', desc: 'This help screen' },\n { key: 'd', desc: 'Open docs' },\n { key: 'esc', desc: 'Go back / Home' },\n { key: 'q', desc: 'Quit application' },\n { key: 'j/k', desc: 'Navigate lists' },\n ]},\n];\n\ninterface ShortcutSectionProps {\n section: string;\n items: { key: string; desc: string }[];\n isLast: boolean;\n}\n\nfunction ShortcutSection(props: ShortcutSectionProps) {\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>{props.section}</text>\n <For each={props.items}>\n {(item) => (\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent} width={8}> {item.key}</text>\n <text fg={terminalColors.textMuted}>{item.desc}</text>\n </box>\n )}\n </For>\n <Show when={!props.isLast}>\n <text> </text>\n </Show>\n </box>\n );\n}\n\nexport function Help(props: HelpProps) {\n const [animPhase, setAnimPhase] = createSignal(0);\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const rawWidth = () => cols() - 4;\n const contentWidth = () => Math.max(1, Math.min(rawWidth(), 60));\n const version = getVersion();\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n const divider = createMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>\n );\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.text}>/ Help</text>\n <text fg={terminalColors.textMuted}>skillkit v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>keyboard shortcuts and navigation</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <Show when={isCompact()} fallback={\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={Math.floor(contentWidth() / 2)}>\n <For each={SHORTCUTS.slice(0, 2)}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === 1} />\n )}\n </For>\n </box>\n <box flexDirection=\"column\" width={Math.floor(contentWidth() / 2)}>\n <For each={SHORTCUTS.slice(2)}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === 1} />\n )}\n </For>\n </box>\n </box>\n }>\n <For each={SHORTCUTS}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === SHORTCUTS.length - 1} />\n )}\n </For>\n </Show>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>esc back h home q quit</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MeshProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Mesh(props: MeshProps) {\n const hosts = [\n { name: 'workstation-1', address: '192.168.1.10', status: 'online', peers: 3 },\n { name: 'laptop-dev', address: '192.168.1.15', status: 'online', peers: 2 },\n { name: 'server-main', address: '192.168.1.100', status: 'offline', peers: 0 },\n ];\n\n const securityStatus = {\n initialized: true,\n fingerprint: 'abc123def456',\n trustedPeers: 5,\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Mesh Network\"\n subtitle=\"Multi-machine agent distribution\"\n count={hosts.filter(h => h.status === 'online').length}\n icon=\"◉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Security: </b></text>\n <text fg={securityStatus.initialized ? terminalColors.success : terminalColors.warning}>\n {securityStatus.initialized ? '* Initialized' : 'o Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}> Fingerprint: {securityStatus.fingerprint}</text>\n </box>\n\n <text fg={terminalColors.text}><b>Known Hosts</b></text>\n <text> </text>\n\n <For each={hosts}>\n {(host, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={host.status === 'online' ? terminalColors.success : terminalColors.textMuted} width={3}>\n {host.status === 'online' ? '*' : 'o'}\n </text>\n <text fg={idx() === 0 ? terminalColors.accent : terminalColors.text} width={20}>\n {idx() === 0 ? '\\u25B8 ' : ' '}{host.name}\n </text>\n <text fg={terminalColors.textMuted} width={18}>{host.address}</text>\n <text fg={terminalColors.textMuted}>{host.peers} peers</text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n 'd' discover 'a' add host 'r' remove 's' security 'h' health check\n </text>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MessageProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Message(props: MessageProps) {\n const messages = [\n { id: '1', from: 'claude@laptop', subject: 'Code review completed', time: '2 min ago', unread: true },\n { id: '2', from: 'cursor@workstation', subject: 'Build artifacts ready', time: '15 min ago', unread: true },\n { id: '3', from: 'codex@server', subject: 'Test results', time: '1 hour ago', unread: false },\n ];\n\n const unreadCount = messages.filter(m => m.unread).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Messages\"\n subtitle=\"Inter-agent communication\"\n count={unreadCount}\n icon=\"✉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Inbox</b></text>\n <text fg={terminalColors.textMuted}> {unreadCount} unread</text>\n </box>\n\n <text> </text>\n\n <For each={messages}>\n {(msg, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={msg.unread ? terminalColors.accent : terminalColors.textMuted} width={3}>\n {msg.unread ? '*' : 'o'}\n </text>\n <text fg={idx() === 0 ? terminalColors.accent : terminalColors.text} width={22}>\n {idx() === 0 ? '\\u25B8 ' : ' '}{msg.from}\n </text>\n <text fg={msg.unread ? terminalColors.text : terminalColors.textMuted} width={30}>\n {msg.subject.slice(0, 28)}\n </text>\n <text fg={terminalColors.textMuted}>{msg.time}</text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Enter to read 'n' new message 'r' reply 'a' archive 's' sent\n </text>\n </box>\n );\n}\n","/**\n * Animation presets for SkillKit TUI\n * Uses OpenTUI's useTimeline for smooth 60fps animations\n */\n\n/**\n * Animation easing functions available in OpenTUI\n */\nexport type EasingFunction =\n | 'linear'\n | 'easeInQuad'\n | 'easeOutQuad'\n | 'easeInOutQuad'\n | 'easeInCubic'\n | 'easeOutCubic'\n | 'easeInOutCubic'\n | 'easeInQuart'\n | 'easeOutQuart'\n | 'easeInOutQuart';\n\n/**\n * Animation preset configuration\n */\nexport interface AnimationPreset {\n duration: number;\n ease: EasingFunction;\n stagger?: number;\n}\n\n/**\n * Predefined animation presets\n */\nexport const animations = {\n /**\n * Staggered fade-in for entrance animations\n * Used on home screen for progressive content reveal\n */\n staggeredFadeIn: {\n duration: 800,\n ease: 'easeOutCubic' as EasingFunction,\n stagger: 100,\n },\n\n /**\n * Logo reveal with scramble effect\n * Used for branding animation on startup\n */\n logoReveal: {\n duration: 600,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Count-up animation for stats\n * Used in StatsCard component\n */\n countUp: {\n duration: 1200,\n ease: 'easeOutQuart' as EasingFunction,\n },\n\n /**\n * Screen transition animation\n * Used when navigating between screens\n */\n screenTransition: {\n duration: 200,\n ease: 'easeInOutCubic' as EasingFunction,\n },\n\n /**\n * Quick fade for tooltips and hints\n */\n quickFade: {\n duration: 150,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Pulse animation for active states\n */\n pulse: {\n duration: 1000,\n ease: 'easeInOutQuad' as EasingFunction,\n },\n} as const;\n\n/**\n * Scramble effect characters\n * Used for text reveal animations\n */\nexport const SCRAMBLE_CHARS = '█▓▒░◆◇◈⟁◎✦⬡▣';\n\n/**\n * Scramble animation configuration\n */\nexport interface ScrambleConfig {\n /** Animation duration in ms */\n duration: number;\n /** Progress increment per frame */\n increment: number;\n /** Frame interval in ms */\n interval: number;\n}\n\n/**\n * Default scramble animation config\n */\nexport const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig = {\n duration: 420,\n increment: 12,\n interval: 35,\n};\n\n/**\n * Generate scrambled text with progressive reveal\n * @param target - The target text to reveal\n * @param progress - Progress percentage (0-100)\n * @param chars - Characters to use for scrambling\n */\nexport function scrambleText(\n target: string,\n progress: number,\n chars: string = SCRAMBLE_CHARS\n): string {\n return target\n .split('\\n')\n .map((line) => {\n return line\n .split('')\n .map((char, i) => {\n if (char === ' ') return char;\n if (progress > (i / line.length) * 100) return char;\n return chars[Math.floor(Math.random() * chars.length)];\n })\n .join('');\n })\n .join('\\n');\n}\n\n/**\n * Calculate staggered delay for an item in a list\n * @param index - Item index\n * @param stagger - Delay between items in ms\n * @returns Delay in ms for this item\n */\nexport function getStaggerDelay(index: number, stagger: number = 100): number {\n return index * stagger;\n}\n\n/**\n * New animation presets (Phase 1.4)\n */\nexport const interactionAnimations = {\n /**\n * Element appearance animation\n */\n fadeIn: {\n duration: 200,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Element disappear animation\n */\n fadeOut: {\n duration: 150,\n ease: 'easeInQuad' as EasingFunction,\n },\n\n /**\n * Detail pane slide in from right\n */\n slideInRight: {\n duration: 250,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Detail pane slide out to right\n */\n slideOutRight: {\n duration: 200,\n ease: 'easeInCubic' as EasingFunction,\n },\n\n /**\n * Hover state transition\n */\n hover: {\n duration: 100,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Button press feedback\n */\n press: {\n duration: 50,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Typewriter text reveal (per character)\n */\n typewriter: {\n duration: 30,\n ease: 'linear' as EasingFunction,\n },\n} as const;\n\n/**\n * Animation timing constants\n */\nexport const ANIMATION_DURATIONS = {\n instant: 0,\n fast: 100,\n normal: 200,\n slow: 400,\n verySlow: 800,\n} as const;\n\n/**\n * Frame rate constants\n */\nexport const FRAME_RATE = {\n fps60: 1000 / 60,\n fps30: 1000 / 30,\n fps24: 1000 / 24,\n} as const;\n\n/**\n * Spinner frame animations\n */\nexport const SPINNER_FRAMES = {\n braille: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n dots: ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'],\n line: ['|', '/', '-', '\\\\'],\n arrow: ['←', '↖', '↑', '↗', '→', '↘', '↓', '↙'],\n bounce: ['⠁', '⠂', '⠄', '⠂'],\n pulse: ['◐', '◓', '◑', '◒'],\n} as const;\n\n/**\n * Progress bar characters\n */\nexport const PROGRESS_CHARS = {\n filled: '█',\n empty: '░',\n partial: ['▏', '▎', '▍', '▌', '▋', '▊', '▉'],\n} as const;\n\n/**\n * Create a spring animation curve\n */\nexport function springCurve(\n progress: number,\n tension: number = 0.5,\n friction: number = 0.5\n): number {\n if (progress <= 0) return 0;\n if (progress >= 1) return 1;\n const p = progress;\n const oscillation = Math.sin(p * Math.PI * (1 + tension * 4));\n const damping = Math.exp(-p * friction * 6);\n return 1 - damping * oscillation * (1 - p);\n}\n\n/**\n * Create a bounce animation curve\n */\nexport function bounceCurve(progress: number): number {\n const n1 = 7.5625;\n const d1 = 2.75;\n let p = progress;\n\n if (p < 1 / d1) {\n return n1 * p * p;\n } else if (p < 2 / d1) {\n return n1 * (p -= 1.5 / d1) * p + 0.75;\n } else if (p < 2.5 / d1) {\n return n1 * (p -= 2.25 / d1) * p + 0.9375;\n } else {\n return n1 * (p -= 2.625 / d1) * p + 0.984375;\n }\n}\n\n/**\n * Interpolate between two values\n */\nexport function lerp(start: number, end: number, progress: number): number {\n return start + (end - start) * progress;\n}\n\n/**\n * Clamp a value between min and max\n */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n","/**\n * List navigation and pagination utilities\n */\n\n/**\n * Calculate visible items for paginated list display\n * Centers the selected item in the visible window\n */\nexport interface PaginationResult {\n /** Starting index in the full list */\n start: number;\n /** Ending index (exclusive) in the full list */\n end: number;\n /** Number of items above the visible window */\n itemsAbove: number;\n /** Number of items below the visible window */\n itemsBelow: number;\n}\n\n/**\n * Calculate pagination for a list with a selected index\n * @param totalItems - Total number of items in the list\n * @param selectedIndex - Currently selected item index\n * @param maxVisible - Maximum number of items to show at once\n * @returns Pagination information\n */\nexport function calculatePagination(\n totalItems: number,\n selectedIndex: number,\n maxVisible: number\n): PaginationResult {\n if (totalItems <= maxVisible) {\n return {\n start: 0,\n end: totalItems,\n itemsAbove: 0,\n itemsBelow: 0,\n };\n }\n\n // Center the selected item in the visible window\n const halfVisible = Math.floor(maxVisible / 2);\n let start = Math.max(0, selectedIndex - halfVisible);\n\n // Ensure we don't go past the end\n if (start + maxVisible > totalItems) {\n start = totalItems - maxVisible;\n }\n\n const end = start + maxVisible;\n\n return {\n start,\n end,\n itemsAbove: start,\n itemsBelow: totalItems - end,\n };\n}\n\n/**\n * Move selection up in a list\n * @param currentIndex - Current selected index\n * @param minIndex - Minimum allowed index (default: 0)\n * @returns New index after moving up\n */\nexport function moveUp(currentIndex: number, minIndex = 0): number {\n return Math.max(minIndex, currentIndex - 1);\n}\n\n/**\n * Move selection down in a list\n * @param currentIndex - Current selected index\n * @param maxIndex - Maximum allowed index\n * @returns New index after moving down\n */\nexport function moveDown(currentIndex: number, maxIndex: number): number {\n return Math.min(maxIndex, currentIndex + 1);\n}\n\n/**\n * Clamp an index within valid bounds\n * @param index - Index to clamp\n * @param listLength - Length of the list\n * @returns Clamped index\n */\nexport function clampIndex(index: number, listLength: number): number {\n if (listLength === 0) return 0;\n return Math.max(0, Math.min(index, listLength - 1));\n}\n\n/**\n * Calculate max visible items based on available rows\n * @param availableRows - Total available rows\n * @param reservedRows - Rows reserved for headers, footers, etc.\n * @param minVisible - Minimum visible items (default: 5)\n * @returns Maximum visible items\n */\nexport function calculateMaxVisible(\n availableRows: number,\n reservedRows: number,\n minVisible = 5\n): number {\n return Math.max(minVisible, availableRows - reservedRows);\n}\n","import { Show, For, createMemo } from 'solid-js';\nimport { AGENT_LOGOS, type AgentLogo } from '../theme/symbols.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface AgentGridProps {\n maxVisible?: number;\n showStatus?: boolean;\n detectedAgents?: string[];\n columns?: number;\n}\n\nexport function AgentGrid(props: AgentGridProps) {\n const maxVisible = () => props.maxVisible ?? 12;\n const showStatus = () => props.showStatus ?? true;\n const detectedAgents = () => props.detectedAgents ?? [];\n const columns = () => Math.max(1, props.columns ?? 4);\n\n const allAgents = Object.entries(AGENT_LOGOS);\n const visibleAgents = () => allAgents.slice(0, maxVisible());\n const hiddenCount = () => allAgents.length - maxVisible();\n\n const rows = createMemo((): [string, AgentLogo][][] => {\n const result: [string, AgentLogo][][] = [];\n const visible = visibleAgents();\n for (let i = 0; i < visible.length; i += columns()) {\n result.push(visible.slice(i, i + columns()));\n }\n return result;\n });\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Works with</b>\n </text>\n <text> </text>\n <For each={rows()}>\n {(row, rowIndex) => (\n <box flexDirection=\"row\">\n <For each={row}>\n {([agentType, agent]) => {\n const isDetected = () => detectedAgents().includes(agentType);\n const statusIcon = () => (showStatus() ? (isDetected() ? '●' : '○') : '');\n const fg = () => (isDetected() ? terminalColors.accent : terminalColors.text);\n\n return (\n <box width={18}>\n <text fg={fg()}>\n {agent.icon} {agent.name}\n <Show when={showStatus()}>\n <span fg={isDetected() ? terminalColors.success : terminalColors.textMuted}>\n {' '}\n {statusIcon()}\n </span>\n </Show>\n </text>\n </box>\n );\n }}\n </For>\n </box>\n )}\n </For>\n <Show when={hiddenCount() > 0}>\n <text fg={terminalColors.textMuted}>+{hiddenCount()} more agents</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { animations } from '../theme/animations.js';\n\ninterface StatItem {\n label: string;\n value: number;\n color?: keyof typeof terminalColors;\n}\n\ninterface StatsCardProps {\n items: StatItem[];\n animated?: boolean;\n}\n\nexport function StatsCard(props: StatsCardProps) {\n const animated = () => props.animated ?? true;\n\n const [displayValues, setDisplayValues] = createSignal<number[]>(\n animated() ? props.items.map(() => 0) : props.items.map((item) => item.value)\n );\n const [animComplete, setAnimComplete] = createSignal(!animated());\n\n createEffect(() => {\n const newValues = animated() ? props.items.map(() => 0) : props.items.map((item) => item.value);\n setDisplayValues(newValues);\n setAnimComplete(!animated());\n });\n\n createEffect(() => {\n if (!animated() || animComplete()) return;\n\n const duration = animations.countUp.duration;\n const startTime = Date.now();\n const targetValues = props.items.map((item) => item.value);\n const frameInterval = 16;\n\n const intervalId = setInterval(() => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n const newValues = targetValues.map((target) => Math.round(target * eased));\n setDisplayValues(newValues);\n\n if (progress >= 1) {\n clearInterval(intervalId);\n setAnimComplete(true);\n }\n }, frameInterval);\n\n onCleanup(() => clearInterval(intervalId));\n });\n\n return (\n <box flexDirection=\"row\" gap={2}>\n <For each={props.items}>\n {(item, index) => {\n const fg = () => (item.color ? terminalColors[item.color] : terminalColors.text);\n\n return (\n <box\n flexDirection=\"column\"\n alignItems=\"center\"\n padding={2}\n borderStyle=\"single\"\n borderColor={terminalColors.border}\n >\n <text fg={fg()}>\n <b>{String(displayValues()[index()])}</b>\n </text>\n <text fg={terminalColors.textMuted}>{item.label}</text>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n","import { Show, For, createSignal } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\n\ninterface RightSidebarProps {\n width: number;\n rows: number;\n}\n\nconst TOP_AGENTS = ['claude-code', 'cursor', 'codex'] as const;\n\nexport function RightSidebar(props: RightSidebarProps) {\n const [sections] = createSignal({\n context: true,\n agents: true,\n tasks: false,\n });\n\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n borderLeft\n borderColor={terminalColors.border}\n paddingLeft={1}\n >\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().context ? '▼' : '▸'} Context\n </text>\n <Show when={sections().context}>\n <text fg={terminalColors.textSecondary}> Skills: 127</text>\n <text fg={terminalColors.textSecondary}> Agents: 32 (3{symbols.active})</text>\n <text fg={terminalColors.textSecondary}> Workflows: 4</text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().agents ? '▼' : '▸'} Agents (3)\n </text>\n <Show when={sections().agents}>\n <For each={[...TOP_AGENTS]}>\n {(agent) => {\n const logo = AGENT_LOGOS[agent];\n return (\n <text fg={terminalColors.text}>\n {' '}{logo.icon} {logo.name} {symbols.active}\n </text>\n );\n }}\n </For>\n <text fg={terminalColors.textMuted}> +29 more</text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().tasks ? '▼' : '▸'} Tasks (2)\n </text>\n <Show when={sections().tasks}>\n <text fg={terminalColors.textSecondary}> {symbols.pending} Syncing...</text>\n </Show>\n </box>\n\n <box flexGrow={1} />\n </box>\n );\n}\n","import { type Screen } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface BottomStatusBarProps {\n currentScreen: Screen;\n}\n\nconst SCREEN_LABELS: Record<Screen, string> = {\n home: 'Home',\n browse: 'Browse',\n marketplace: 'Marketplace',\n installed: 'Installed',\n settings: 'Settings',\n recommend: 'Recommend',\n translate: 'Translate',\n context: 'Context',\n memory: 'Memory',\n team: 'Team',\n plugins: 'Plugins',\n methodology: 'Methodology',\n plan: 'Plan',\n workflow: 'Workflow',\n execute: 'Execute',\n history: 'History',\n sync: 'Sync',\n help: 'Help',\n mesh: 'Mesh',\n message: 'Message',\n};\n\nexport function BottomStatusBar(props: BottomStatusBarProps) {\n const version = getVersion();\n\n return (\n <box\n flexDirection=\"row\"\n height={1}\n borderTop\n borderColor={terminalColors.border}\n paddingX={1}\n >\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b> v{version}\n </text>\n <text fg={terminalColors.border}> {symbols.verticalLine} </text>\n <text fg={terminalColors.text}>\n <b>{SCREEN_LABELS[props.currentScreen]}</b>\n </text>\n <text fg={terminalColors.border}> {symbols.verticalLine} </text>\n <text fg={terminalColors.textMuted}>/ cmd h home m market q quit</text>\n </box>\n );\n}\n","import { Show, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { calculatePagination } from '../utils/list.js';\nimport type { SkillItem } from '../state/types.js';\n\ninterface SkillListProps {\n skills: SkillItem[];\n selectedIndex: number;\n maxVisible?: number;\n onSelect?: (skill: SkillItem) => void;\n}\n\nexport function SkillList(props: SkillListProps) {\n const maxVisible = () => props.maxVisible ?? 10;\n\n const pagination = () => calculatePagination(props.skills.length, props.selectedIndex, maxVisible());\n const visibleSkills = () => props.skills.slice(pagination().start, pagination().end);\n\n return (\n <Show when={props.skills.length > 0} fallback={<text fg={terminalColors.textMuted}>No skills found</text>}>\n <box flexDirection=\"column\">\n <Show when={pagination().itemsAbove > 0}>\n <text fg={terminalColors.textMuted}>\n {symbols.arrowUp} {pagination().itemsAbove} more above\n </text>\n </Show>\n\n <For each={visibleSkills()}>\n {(skill, idx) => {\n const actualIndex = () => pagination().start + idx();\n const isSelected = () => actualIndex() === props.selectedIndex;\n const pointer = () => (isSelected() ? symbols.pointer : symbols.pointerInactive);\n const fg = () => (isSelected() ? terminalColors.accent : terminalColors.text);\n const statusIcon = () => (skill.enabled ? symbols.active : symbols.pending);\n const descPart = () =>\n skill.description\n ? ` - ${skill.description.slice(0, 40)}${skill.description.length > 40 ? '...' : ''}`\n : '';\n const line = () => `${pointer()} ${skill.name} ${statusIcon()}${descPart()}`;\n\n return <text fg={fg()}>{isSelected() ? <b>{line()}</b> : line()}</text>;\n }}\n </For>\n\n <Show when={pagination().itemsBelow > 0}>\n <text fg={terminalColors.textMuted}>\n {symbols.arrowDown} {pagination().itemsBelow} more below\n </text>\n </Show>\n </box>\n </Show>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SearchInputProps {\n value: string;\n placeholder?: string;\n focused?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport function SearchInput(props: SearchInputProps) {\n const placeholder = () => props.placeholder ?? 'Search...';\n const focused = () => props.focused ?? false;\n const display = () => props.value || placeholder();\n const textColor = () => (props.value ? terminalColors.text : terminalColors.textMuted);\n\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>⌕ </text>\n <text fg={textColor()}>{display()}</text>\n <Show when={focused()}>\n <text fg={terminalColors.accent}>▏</text>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface Feature {\n key: string;\n label: string;\n description: string;\n color: keyof typeof terminalColors;\n}\n\nconst FEATURES: Feature[] = [\n { key: 'sync', label: 'Sync', color: 'sync', description: 'share skills across all your coding agents' },\n { key: 'browse', label: 'Browse', color: 'browse', description: 'discover skills from the marketplace' },\n { key: 'recommend', label: 'Recommend', color: 'recommend', description: 'AI-powered skill suggestions for your project' },\n { key: 'translate', label: 'Translate', color: 'translate', description: 'convert skills between agent formats' },\n { key: 'workflow', label: 'Workflow', color: 'workflow', description: 'automate skill execution chains' },\n { key: 'team', label: 'Team', color: 'team', description: 'collaborate with your development team' },\n];\n\ninterface FeatureListProps {\n features?: Feature[];\n}\n\nexport function FeatureList(props: FeatureListProps) {\n const features = () => props.features ?? FEATURES;\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Features</b>\n </text>\n <text> </text>\n <For each={features()}>\n {(feat) => (\n <box flexDirection=\"row\">\n <text fg={terminalColors[feat.color]}>\n <b>{' '}{feat.label.padEnd(12)}</b>\n </text>\n <text fg={terminalColors.textMuted}>{feat.description}</text>\n </box>\n )}\n </For>\n </box>\n );\n}\n\nexport { FEATURES, type Feature };\n","/**\n * SelectList Component\n * Reusable list with j/k + mouse navigation\n */\n\nimport { For, Show, createMemo } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface SelectListItem {\n id: string;\n label: string;\n description?: string;\n icon?: string;\n meta?: string;\n disabled?: boolean;\n}\n\ninterface SelectListProps {\n items: SelectListItem[];\n selectedIndex: number;\n hoveredIndex?: number | null;\n onSelect?: (item: SelectListItem, index: number) => void;\n onHover?: (index: number) => void;\n maxVisible?: number;\n showIndex?: boolean;\n emptyText?: string;\n compact?: boolean;\n}\n\nexport function SelectList(props: SelectListProps) {\n const maxVisible = () => props.maxVisible ?? 10;\n const showIndex = () => props.showIndex ?? false;\n const compact = () => props.compact ?? false;\n\n const scrollOffset = createMemo(() => {\n const selected = props.selectedIndex;\n const visible = maxVisible();\n const total = props.items.length;\n\n if (total <= visible) return 0;\n if (selected < visible / 2) return 0;\n if (selected > total - visible / 2) return total - visible;\n return Math.floor(selected - visible / 2);\n });\n\n const visibleItems = createMemo(() => {\n const offset = scrollOffset();\n return props.items.slice(offset, offset + maxVisible()).map((item, i) => ({\n item,\n originalIndex: offset + i,\n }));\n });\n\n const hasScrollUp = createMemo(() => scrollOffset() > 0);\n const hasScrollDown = createMemo(\n () => scrollOffset() + maxVisible() < props.items.length\n );\n\n const handleItemClick = (item: SelectListItem, index: number) => {\n if (!item.disabled && props.onSelect) {\n props.onSelect(item, index);\n }\n };\n\n const handleItemHover = (index: number) => {\n if (props.onHover) {\n props.onHover(index);\n }\n };\n\n return (\n <box flexDirection=\"column\">\n <Show when={props.items.length === 0}>\n <text fg={terminalColors.textMuted}>{props.emptyText || 'No items'}</text>\n </Show>\n\n <Show when={hasScrollUp()}>\n <text fg={terminalColors.textMuted}> ▲ {scrollOffset()} more</text>\n </Show>\n\n <For each={visibleItems()}>\n {({ item, originalIndex }) => {\n const isSelected = () => originalIndex === props.selectedIndex;\n const isHovered = () => originalIndex === props.hoveredIndex;\n const isDisabled = () => item.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isSelected()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const prefix = () => {\n if (isSelected()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n return (\n <box\n flexDirection={compact() ? 'row' : 'column'}\n marginBottom={compact() ? 0 : 1}\n onClick={() => handleItemClick(item, originalIndex)}\n onMouseEnter={() => handleItemHover(originalIndex)}\n >\n <box flexDirection=\"row\">\n <text fg={fg()}>{prefix()}</text>\n <Show when={showIndex()}>\n <text fg={terminalColors.textMuted} width={4}>\n {String(originalIndex + 1).padStart(2, ' ')}.{' '}\n </text>\n </Show>\n <Show when={item.icon}>\n <text fg={fg()}>{item.icon} </text>\n </Show>\n <text fg={fg()}>{item.label}</text>\n <Show when={item.meta}>\n <text fg={terminalColors.textMuted}> ({item.meta})</text>\n </Show>\n </box>\n <Show when={item.description && !compact()}>\n <box marginLeft={2}>\n <text fg={terminalColors.textMuted}>{item.description}</text>\n </box>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={hasScrollDown()}>\n <text fg={terminalColors.textMuted}>\n {' '}▼ {props.items.length - scrollOffset() - maxVisible()} more\n </text>\n </Show>\n </box>\n );\n}\n","/**\n * SplitPane Component\n * Horizontal/vertical split layout\n */\n\nimport { Show, type JSX } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SplitPaneProps {\n direction?: 'horizontal' | 'vertical';\n primarySize?: number | string;\n secondarySize?: number | string;\n showDivider?: boolean;\n dividerChar?: string;\n primary: JSX.Element;\n secondary?: JSX.Element;\n gap?: number;\n}\n\nexport function SplitPane(props: SplitPaneProps) {\n const direction = () => props.direction ?? 'horizontal';\n const showDivider = () => props.showDivider ?? true;\n const dividerChar = () => props.dividerChar ?? (direction() === 'horizontal' ? '│' : '─');\n const gap = () => props.gap ?? 1;\n\n const flexDir = () => (direction() === 'horizontal' ? 'row' : 'column');\n\n const primaryWidth = () => {\n if (direction() === 'vertical') return undefined;\n if (props.primarySize !== undefined) return props.primarySize;\n return undefined;\n };\n\n const primaryHeight = () => {\n if (direction() === 'horizontal') return undefined;\n if (props.primarySize !== undefined) return props.primarySize;\n return undefined;\n };\n\n const secondaryWidth = () => {\n if (direction() === 'vertical') return undefined;\n if (props.secondarySize !== undefined) return props.secondarySize;\n return undefined;\n };\n\n const secondaryHeight = () => {\n if (direction() === 'horizontal') return undefined;\n if (props.secondarySize !== undefined) return props.secondarySize;\n return undefined;\n };\n\n return (\n <box flexDirection={flexDir()}>\n <box\n width={primaryWidth()}\n height={primaryHeight()}\n flexGrow={primaryWidth() === undefined && primaryHeight() === undefined ? 1 : undefined}\n >\n {props.primary}\n </box>\n\n <Show when={props.secondary && showDivider()}>\n <box\n width={direction() === 'horizontal' ? gap() : undefined}\n height={direction() === 'vertical' ? gap() : undefined}\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <text fg={terminalColors.border}>{dividerChar()}</text>\n </box>\n </Show>\n\n <Show when={props.secondary}>\n <box\n width={secondaryWidth()}\n height={secondaryHeight()}\n flexGrow={secondaryWidth() === undefined && secondaryHeight() === undefined ? 1 : undefined}\n >\n {props.secondary}\n </box>\n </Show>\n </box>\n );\n}\n\ninterface ThreePaneLayoutProps {\n left?: JSX.Element;\n center: JSX.Element;\n right?: JSX.Element;\n leftWidth?: number;\n rightWidth?: number;\n showLeftDivider?: boolean;\n showRightDivider?: boolean;\n}\n\nexport function ThreePaneLayout(props: ThreePaneLayoutProps) {\n const leftWidth = () => props.leftWidth ?? 20;\n const rightWidth = () => props.rightWidth ?? 30;\n\n return (\n <box flexDirection=\"row\" flexGrow={1}>\n <Show when={props.left}>\n <box width={leftWidth()}>{props.left}</box>\n <Show when={props.showLeftDivider !== false}>\n <box width={1}>\n <text fg={terminalColors.border}>│</text>\n </box>\n </Show>\n </Show>\n\n <box flexGrow={1}>{props.center}</box>\n\n <Show when={props.right}>\n <Show when={props.showRightDivider !== false}>\n <box width={1}>\n <text fg={terminalColors.border}>│</text>\n </box>\n </Show>\n <box width={rightWidth()}>{props.right}</box>\n </Show>\n </box>\n );\n}\n","/**\n * CodeBlock Component\n * Basic syntax highlighting for code display\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n showLineNumbers?: boolean;\n maxLines?: number;\n highlightLines?: number[];\n title?: string;\n}\n\nconst KEYWORDS = new Set([\n 'const',\n 'let',\n 'var',\n 'function',\n 'return',\n 'if',\n 'else',\n 'for',\n 'while',\n 'import',\n 'export',\n 'from',\n 'class',\n 'extends',\n 'async',\n 'await',\n 'try',\n 'catch',\n 'throw',\n 'new',\n 'this',\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'type',\n 'interface',\n]);\n\nfunction tokenizeLine(line: string): Array<{ type: string; value: string }> {\n const tokens: Array<{ type: string; value: string }> = [];\n let remaining = line;\n\n while (remaining.length > 0) {\n if (remaining.startsWith('//')) {\n tokens.push({ type: 'comment', value: remaining });\n break;\n }\n\n const stringMatch = remaining.match(/^(['\"`])(?:\\\\.|[^\\\\])*?\\1/);\n if (stringMatch) {\n tokens.push({ type: 'string', value: stringMatch[0] });\n remaining = remaining.slice(stringMatch[0].length);\n continue;\n }\n\n const numberMatch = remaining.match(/^\\d+\\.?\\d*/);\n if (numberMatch) {\n tokens.push({ type: 'number', value: numberMatch[0] });\n remaining = remaining.slice(numberMatch[0].length);\n continue;\n }\n\n const wordMatch = remaining.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*/);\n if (wordMatch) {\n const word = wordMatch[0];\n const type = KEYWORDS.has(word) ? 'keyword' : 'identifier';\n tokens.push({ type, value: word });\n remaining = remaining.slice(word.length);\n continue;\n }\n\n const spaceMatch = remaining.match(/^\\s+/);\n if (spaceMatch) {\n tokens.push({ type: 'space', value: spaceMatch[0] });\n remaining = remaining.slice(spaceMatch[0].length);\n continue;\n }\n\n tokens.push({ type: 'punctuation', value: remaining[0] });\n remaining = remaining.slice(1);\n }\n\n return tokens;\n}\n\nfunction getTokenColor(type: string): string {\n switch (type) {\n case 'keyword':\n return terminalColors.accent;\n case 'string':\n return terminalColors.warning;\n case 'number':\n return terminalColors.info;\n case 'comment':\n return terminalColors.textMuted;\n default:\n return terminalColors.text;\n }\n}\n\nexport function CodeBlock(props: CodeBlockProps) {\n const showLineNumbers = () => props.showLineNumbers ?? true;\n const highlightLines = () => new Set(props.highlightLines ?? []);\n\n const lines = () => {\n const allLines = props.code.split('\\n');\n if (props.maxLines && allLines.length > props.maxLines) {\n return allLines.slice(0, props.maxLines);\n }\n return allLines;\n };\n\n const lineNumberWidth = () => String(lines().length).length + 1;\n\n const isTruncated = () => {\n const allLines = props.code.split('\\n');\n return props.maxLines !== undefined && allLines.length > props.maxLines;\n };\n\n return (\n <box flexDirection=\"column\">\n <Show when={props.title}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>\n {props.title}\n </text>\n </box>\n </Show>\n\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n >\n <For each={lines()}>\n {(line, index) => {\n const lineNum = index() + 1;\n const isHighlighted = highlightLines().has(lineNum);\n const tokens = tokenizeLine(line);\n\n return (\n <box flexDirection=\"row\">\n <Show when={showLineNumbers()}>\n <text\n fg={isHighlighted ? terminalColors.accent : terminalColors.textMuted}\n width={lineNumberWidth()}\n >\n {isHighlighted ? '▸' : ' '}\n {String(lineNum).padStart(lineNumberWidth() - 1, ' ')}{' '}\n </text>\n </Show>\n <For each={tokens}>\n {(token) => (\n <text fg={isHighlighted ? terminalColors.accent : getTokenColor(token.type)}>\n {token.value}\n </text>\n )}\n </For>\n </box>\n );\n }}\n </For>\n\n <Show when={isTruncated()}>\n <text fg={terminalColors.textMuted}>\n ... {props.code.split('\\n').length - (props.maxLines ?? 0)} more lines\n </text>\n </Show>\n </box>\n </box>\n );\n}\n\ninterface InlineCodeProps {\n children: string;\n}\n\nexport function InlineCode(props: InlineCodeProps) {\n return (\n <text fg={terminalColors.accent}>\n `{props.children}`\n </text>\n );\n}\n","/**\n * FormField Component\n * Input with label and validation\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface FormFieldProps {\n label: string;\n value: string;\n placeholder?: string;\n error?: string;\n hint?: string;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n type?: 'text' | 'password' | 'search';\n width?: number;\n}\n\nexport function FormField(props: FormFieldProps) {\n const type = () => props.type ?? 'text';\n const focused = () => props.focused ?? false;\n const disabled = () => props.disabled ?? false;\n const width = () => props.width ?? 30;\n\n const displayValue = () => {\n if (type() === 'password') {\n return '•'.repeat(props.value.length);\n }\n return props.value;\n };\n\n const borderColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n if (disabled()) return terminalColors.textMuted;\n return terminalColors.border;\n };\n\n const labelColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n return terminalColors.textSecondary;\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text fg={labelColor()}>\n {props.label}\n <Show when={props.required}>\n <text fg={terminalColors.error}>*</text>\n </Show>\n </text>\n </box>\n\n <box\n flexDirection=\"row\"\n width={width()}\n borderStyle=\"round\"\n borderColor={borderColor()}\n paddingX={1}\n >\n <Show when={type() === 'search'}>\n <text fg={terminalColors.textMuted}>/ </text>\n </Show>\n <text fg={disabled() ? terminalColors.textMuted : terminalColors.text}>\n {displayValue() || (\n <text fg={terminalColors.textMuted}>{props.placeholder ?? ''}</text>\n )}\n </text>\n <Show when={focused()}>\n <text fg={terminalColors.accent}>▌</text>\n </Show>\n </box>\n\n <Show when={props.error}>\n <text fg={terminalColors.error}>✗ {props.error}</text>\n </Show>\n\n <Show when={props.hint && !props.error}>\n <text fg={terminalColors.textMuted}>{props.hint}</text>\n </Show>\n </box>\n );\n}\n\ninterface TextAreaFieldProps {\n label: string;\n value: string;\n placeholder?: string;\n error?: string;\n rows?: number;\n width?: number;\n focused?: boolean;\n}\n\nexport function TextAreaField(props: TextAreaFieldProps) {\n const rows = () => props.rows ?? 3;\n const width = () => props.width ?? 40;\n const focused = () => props.focused ?? false;\n\n const lines = () => props.value.split('\\n').slice(0, rows());\n\n const hasContent = () => props.value !== '' && props.value !== undefined;\n\n const borderColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n return terminalColors.border;\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textSecondary}>{props.label}</text>\n\n <box\n flexDirection=\"column\"\n width={width()}\n height={rows() + 2}\n borderStyle=\"round\"\n borderColor={borderColor()}\n paddingX={1}\n >\n <Show\n when={hasContent()}\n fallback={<text fg={terminalColors.textMuted}>{props.placeholder ?? ''}</text>}\n >\n {lines().map((line) => (\n <text fg={terminalColors.text}>{line}</text>\n ))}\n </Show>\n </box>\n\n <Show when={props.error}>\n <text fg={terminalColors.error}>✗ {props.error}</text>\n </Show>\n </box>\n );\n}\n\ninterface SelectFieldProps {\n label: string;\n value: string;\n options: Array<{ value: string; label: string }>;\n focused?: boolean;\n expanded?: boolean;\n selectedOptionIndex?: number;\n}\n\nexport function SelectField(props: SelectFieldProps) {\n const focused = () => props.focused ?? false;\n const expanded = () => props.expanded ?? false;\n\n const selectedLabel = () => {\n const option = props.options.find((o) => o.value === props.value);\n return option?.label ?? props.value ?? 'Select...';\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textSecondary}>{props.label}</text>\n\n <box\n flexDirection=\"row\"\n borderStyle=\"round\"\n borderColor={focused() ? terminalColors.accent : terminalColors.border}\n paddingX={1}\n >\n <text fg={terminalColors.text}>{selectedLabel()}</text>\n <text fg={terminalColors.textMuted}> {expanded() ? '▲' : '▼'}</text>\n </box>\n\n <Show when={expanded()}>\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n >\n {props.options.map((option, index) => {\n const isSelected = index === props.selectedOptionIndex;\n return (\n <text\n fg={\n option.value === props.value\n ? terminalColors.accent\n : isSelected\n ? terminalColors.text\n : terminalColors.textSecondary\n }\n >\n {isSelected ? '▸ ' : ' '}\n {option.label}\n </text>\n );\n })}\n </box>\n </Show>\n </box>\n );\n}\n","/**\n * ErrorBoundary Component\n * Catch and display errors gracefully\n */\n\nimport { ErrorBoundary as SolidErrorBoundary, type JSX, Show } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n fallback?: JSX.Element | ((error: Error, reset: () => void) => JSX.Element);\n onError?: (error: Error) => void;\n}\n\nfunction DefaultErrorFallback(props: { error: Error; reset: () => void }) {\n const errorMessage = () => {\n if (props.error instanceof Error) {\n return props.error.message;\n }\n return String(props.error);\n };\n\n const errorStack = () => {\n if (props.error instanceof Error && props.error.stack) {\n const lines = props.error.stack.split('\\n').slice(1, 4);\n return lines.join('\\n');\n }\n return '';\n };\n\n useKeyboard((key) => {\n if (key.name === 'r') {\n props.reset();\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingY={2} paddingX={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.error}>✗ Something went wrong</text>\n </box>\n\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.error}\n paddingX={1}\n paddingY={1}\n >\n <text fg={terminalColors.text}>{errorMessage()}</text>\n\n <Show when={errorStack()}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n {errorStack()}\n </text>\n </box>\n </Show>\n </box>\n\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n Press <text fg={terminalColors.accent}>r</text> to retry or{' '}\n <text fg={terminalColors.accent}>Esc</text> to go back\n </text>\n </box>\n </box>\n );\n}\n\nexport function ErrorBoundary(props: ErrorBoundaryProps) {\n let handledErrorRef: Error | null = null;\n\n const fallbackComponent = (error: Error, reset: () => void) => {\n if (props.onError && handledErrorRef !== error) {\n handledErrorRef = error;\n props.onError(error);\n }\n\n const wrappedReset = () => {\n handledErrorRef = null;\n reset();\n };\n\n if (typeof props.fallback === 'function') {\n return props.fallback(error, wrappedReset);\n }\n\n if (props.fallback) {\n return props.fallback;\n }\n\n return <DefaultErrorFallback error={error} reset={wrappedReset} />;\n };\n\n return (\n <SolidErrorBoundary fallback={fallbackComponent}>\n {props.children}\n </SolidErrorBoundary>\n );\n}\n\ninterface TryProps {\n children: JSX.Element;\n catch?: JSX.Element;\n}\n\nexport function Try(props: TryProps) {\n return (\n <ErrorBoundary\n fallback={\n props.catch ?? (\n <text fg={terminalColors.error}>Error loading component</text>\n )\n }\n >\n {props.children}\n </ErrorBoundary>\n );\n}\n","/**\n * Button Component\n * Clickable button with hover/active states\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\ninterface ButtonProps {\n label: string;\n shortcut?: string;\n icon?: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n focused?: boolean;\n pressed?: boolean;\n hovered?: boolean;\n onClick?: () => void;\n}\n\nconst VARIANT_COLORS: Record<\n ButtonVariant,\n { fg: string; bg: string; border: string; hoverFg: string }\n> = {\n primary: {\n fg: terminalColors.text,\n bg: terminalColors.accent,\n border: terminalColors.accent,\n hoverFg: terminalColors.accent,\n },\n secondary: {\n fg: terminalColors.text,\n bg: terminalColors.surface,\n border: terminalColors.border,\n hoverFg: terminalColors.text,\n },\n ghost: {\n fg: terminalColors.textSecondary,\n bg: 'transparent',\n border: 'transparent',\n hoverFg: terminalColors.text,\n },\n danger: {\n fg: terminalColors.text,\n bg: terminalColors.error,\n border: terminalColors.error,\n hoverFg: terminalColors.error,\n },\n};\n\nexport function Button(props: ButtonProps) {\n const variant = () => props.variant ?? 'secondary';\n const size = () => props.size ?? 'md';\n const disabled = () => props.disabled ?? false;\n const focused = () => props.focused ?? false;\n const pressed = () => props.pressed ?? false;\n const hovered = () => props.hovered ?? false;\n\n const colors = () => VARIANT_COLORS[variant()];\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (pressed()) return colors().hoverFg;\n if (hovered() || focused()) return colors().hoverFg;\n return colors().fg;\n };\n\n const borderColor = () => {\n if (disabled()) return terminalColors.textMuted;\n if (focused()) return terminalColors.accent;\n return colors().border;\n };\n\n const paddingX = () => {\n switch (size()) {\n case 'sm':\n return 1;\n case 'lg':\n return 3;\n default:\n return 2;\n }\n };\n\n const brackets = () => {\n if (variant() === 'ghost') return { left: '', right: '' };\n if (pressed()) return { left: '▸', right: '◂' };\n return { left: '[', right: ']' };\n };\n\n const padding = ' '.repeat(paddingX());\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={borderColor()}>{brackets().left}</text>\n <text fg={fg()}>{padding}</text>\n <Show when={props.icon}>\n <text fg={fg()}>{props.icon} </text>\n </Show>\n <text fg={fg()}>{props.label}</text>\n <Show when={props.shortcut}>\n <text fg={terminalColors.textMuted}> ({props.shortcut})</text>\n </Show>\n <text fg={fg()}>{padding}</text>\n <text fg={borderColor()}>{brackets().right}</text>\n </box>\n );\n}\n\ninterface ButtonGroupProps {\n buttons: Array<{\n id: string;\n label: string;\n shortcut?: string;\n icon?: string;\n variant?: ButtonVariant;\n disabled?: boolean;\n onClick?: () => void;\n }>;\n selectedId?: string;\n focusedId?: string;\n direction?: 'horizontal' | 'vertical';\n gap?: number;\n}\n\nexport function ButtonGroup(props: ButtonGroupProps) {\n const direction = () => props.direction ?? 'horizontal';\n const gap = () => props.gap ?? 2;\n\n return (\n <box flexDirection={direction() === 'horizontal' ? 'row' : 'column'}>\n {props.buttons.map((btn, index) => (\n <box\n marginRight={direction() === 'horizontal' && index < props.buttons.length - 1 ? gap() : 0}\n marginBottom={direction() === 'vertical' && index < props.buttons.length - 1 ? gap() : 0}\n >\n <Button\n label={btn.label}\n shortcut={btn.shortcut}\n icon={btn.icon}\n variant={btn.variant}\n disabled={btn.disabled}\n focused={btn.id === props.focusedId}\n hovered={btn.id === props.selectedId}\n onClick={btn.onClick}\n />\n </box>\n ))}\n </box>\n );\n}\n\ninterface IconButtonProps {\n icon: string;\n label?: string;\n disabled?: boolean;\n focused?: boolean;\n hovered?: boolean;\n onClick?: () => void;\n}\n\nexport function IconButton(props: IconButtonProps) {\n const disabled = () => props.disabled ?? false;\n const focused = () => props.focused ?? false;\n const hovered = () => props.hovered ?? false;\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (focused() || hovered()) return terminalColors.accent;\n return terminalColors.textSecondary;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={fg()}>{props.icon}</text>\n <Show when={props.label}>\n <text fg={fg()}> {props.label}</text>\n </Show>\n </box>\n );\n}\n","/**\n * Clickable Component\n * Wrapper to make any element clickable with hover effects\n */\n\nimport { type JSX, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface ClickableProps {\n children: JSX.Element;\n onClick?: () => void;\n onDoubleClick?: () => void;\n onRightClick?: () => void;\n disabled?: boolean;\n hovered?: boolean;\n pressed?: boolean;\n focusable?: boolean;\n focused?: boolean;\n cursor?: string;\n hoverEffect?: 'highlight' | 'underline' | 'pointer' | 'none';\n}\n\nexport function Clickable(props: ClickableProps) {\n const disabled = () => props.disabled ?? false;\n const hovered = () => props.hovered ?? false;\n const focused = () => props.focused ?? false;\n const hoverEffect = () => props.hoverEffect ?? 'highlight';\n\n const showHighlight = () => {\n if (disabled()) return false;\n return hovered() || focused();\n };\n\n const cursor = () => {\n if (disabled()) return '';\n if (hovered()) return props.cursor ?? '▸';\n return '';\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n const handleDoubleClick = () => {\n if (!disabled() && props.onDoubleClick) {\n props.onDoubleClick();\n }\n };\n\n const handleRightClick = () => {\n if (!disabled() && props.onRightClick) {\n props.onRightClick();\n }\n };\n\n const renderContent = () => {\n if (hoverEffect() === 'underline' && showHighlight()) {\n return <text>{props.children}</text>;\n }\n return props.children;\n };\n\n return (\n <box\n flexDirection=\"row\"\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleRightClick}\n >\n <Show when={hoverEffect() === 'pointer' && showHighlight()}>\n <text fg={terminalColors.accent}>{cursor()} </text>\n </Show>\n <box\n fg={hoverEffect() === 'highlight' && showHighlight() ? terminalColors.accent : undefined}\n >\n {renderContent()}\n </box>\n </box>\n );\n}\n\ninterface ClickableTextProps {\n children: string;\n onClick?: () => void;\n disabled?: boolean;\n hovered?: boolean;\n color?: string;\n hoverColor?: string;\n underlineOnHover?: boolean;\n}\n\nexport function ClickableText(props: ClickableTextProps) {\n const disabled = () => props.disabled ?? false;\n const hovered = () => props.hovered ?? false;\n const underlineOnHover = () => props.underlineOnHover ?? false;\n\n const color = () => {\n if (disabled()) return terminalColors.textMuted;\n if (hovered()) return props.hoverColor ?? terminalColors.accent;\n return props.color ?? terminalColors.text;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <text fg={color()} onClick={handleClick}>\n {underlineOnHover() && hovered() ? (\n <u>{props.children}</u>\n ) : (\n props.children\n )}\n </text>\n );\n}\n\ninterface ClickableRowProps {\n children: JSX.Element;\n selected?: boolean;\n hovered?: boolean;\n disabled?: boolean;\n showIndicator?: boolean;\n indicatorChar?: string;\n onClick?: () => void;\n}\n\nexport function ClickableRow(props: ClickableRowProps) {\n const selected = () => props.selected ?? false;\n const hovered = () => props.hovered ?? false;\n const disabled = () => props.disabled ?? false;\n const showIndicator = () => props.showIndicator ?? true;\n const indicatorChar = () => props.indicatorChar ?? '▸';\n\n const indicator = () => {\n if (!showIndicator()) return ' ';\n if (selected()) return `${indicatorChar()} `;\n if (hovered()) return '▹ ';\n return ' ';\n };\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (selected()) return terminalColors.accent;\n if (hovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={fg()}>{indicator()}</text>\n {props.children}\n </box>\n );\n}\n\ninterface InteractiveAreaProps {\n children: JSX.Element;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n onMouseOver?: () => void;\n onMouseOut?: () => void;\n onClick?: () => void;\n onMouseDown?: () => void;\n onMouseUp?: () => void;\n}\n\nexport function InteractiveArea(props: InteractiveAreaProps) {\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n height={props.height}\n style={{ left: props.x, top: props.y }}\n onMouseEnter={props.onMouseOver}\n onMouseLeave={props.onMouseOut}\n onClick={props.onClick}\n onMouseDown={props.onMouseDown}\n onMouseUp={props.onMouseUp}\n >\n {props.children}\n </box>\n );\n}\n","/**\n * HoverHighlight Component\n * Hover highlight effect for list items and buttons\n * Note: Terminal background colors are limited, so we use text color changes for highlighting\n */\n\nimport { type JSX, Show, createSignal, createEffect } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface HoverHighlightProps {\n children: JSX.Element;\n isHovered?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n highlightColor?: string;\n selectedColor?: string;\n transitionMs?: number;\n}\n\nexport function HoverHighlight(props: HoverHighlightProps) {\n return <box>{props.children}</box>;\n}\n\ninterface HighlightableListItemProps {\n children: JSX.Element;\n index: number;\n selectedIndex?: number;\n hoveredIndex?: number | null;\n showPrefix?: boolean;\n prefixWidth?: number;\n}\n\nexport function HighlightableListItem(props: HighlightableListItemProps) {\n const showPrefix = () => props.showPrefix ?? true;\n const prefixWidth = () => props.prefixWidth ?? 3;\n\n const isSelected = () => props.index === props.selectedIndex;\n const isHovered = () => props.index === props.hoveredIndex;\n\n const prefix = () => {\n if (!showPrefix()) return '';\n if (isSelected()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n const fg = () => {\n if (isSelected()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n return (\n <box flexDirection=\"row\">\n <Show when={showPrefix()}>\n <text fg={fg()} width={prefixWidth()}>\n {prefix()}\n </text>\n </Show>\n {props.children}\n </box>\n );\n}\n\ninterface FocusRingProps {\n children: JSX.Element;\n isFocused?: boolean;\n ringColor?: string;\n}\n\nexport function FocusRing(props: FocusRingProps) {\n const ringColor = () => props.ringColor ?? terminalColors.accent;\n\n return (\n <box\n borderStyle={props.isFocused ? 'round' : undefined}\n borderColor={props.isFocused ? ringColor() : undefined}\n >\n {props.children}\n </box>\n );\n}\n\ninterface PressEffectProps {\n children: JSX.Element;\n isPressed?: boolean;\n pressColor?: string;\n}\n\nexport function PressEffect(props: PressEffectProps) {\n return <box>{props.children}</box>;\n}\n","/**\n * AnimatedText Component\n * Text with fade/slide animations\n */\n\nimport { Show, createSignal, createEffect, onCleanup } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { scrambleText } from '../theme/animations.js';\n\ninterface AnimatedTextProps {\n text: string;\n animation?: 'fadeIn' | 'typewriter' | 'scramble' | 'countUp' | 'none';\n duration?: number;\n delay?: number;\n color?: string;\n onComplete?: () => void;\n}\n\nexport function AnimatedText(props: AnimatedTextProps) {\n const [progress, setProgress] = createSignal(0);\n const [isComplete, setIsComplete] = createSignal(false);\n\n const animation = () => props.animation ?? 'fadeIn';\n const duration = () => Math.max(1, props.duration ?? 500);\n const delay = () => Math.max(0, props.delay ?? 0);\n const color = () => props.color ?? terminalColors.text;\n\n createEffect(() => {\n const anim = animation();\n const dur = duration();\n const dly = delay();\n\n setProgress(0);\n setIsComplete(false);\n\n if (anim === 'none') {\n setProgress(100);\n setIsComplete(true);\n return;\n }\n\n let delayTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let animationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let startTime: number | undefined;\n let cancelled = false;\n\n const animate = () => {\n if (cancelled) return;\n\n const now = Date.now();\n if (!startTime) startTime = now;\n const elapsed = now - startTime;\n const p = Math.min((elapsed / dur) * 100, 100);\n\n setProgress(p);\n\n if (p < 100) {\n animationTimeoutId = setTimeout(animate, 16);\n } else {\n setIsComplete(true);\n props.onComplete?.();\n }\n };\n\n if (dly > 0) {\n delayTimeoutId = setTimeout(() => {\n animationTimeoutId = setTimeout(animate, 16);\n }, dly);\n } else {\n animationTimeoutId = setTimeout(animate, 16);\n }\n\n onCleanup(() => {\n cancelled = true;\n if (delayTimeoutId) clearTimeout(delayTimeoutId);\n if (animationTimeoutId) clearTimeout(animationTimeoutId);\n });\n });\n\n const displayText = () => {\n switch (animation()) {\n case 'typewriter': {\n const charCount = Math.floor((progress() / 100) * props.text.length);\n return props.text.slice(0, charCount);\n }\n case 'scramble': {\n return scrambleText(props.text, progress());\n }\n case 'countUp': {\n const num = parseFloat(props.text);\n if (!isNaN(num)) {\n return String(Math.round((progress() / 100) * num));\n }\n return props.text;\n }\n case 'fadeIn':\n case 'none':\n default:\n return props.text;\n }\n };\n\n return (\n <text fg={color()}>\n {displayText()}\n <Show when={animation() === 'typewriter' && !isComplete()}>\n <text fg={terminalColors.accent}>▌</text>\n </Show>\n </text>\n );\n}\n\ninterface CountUpTextProps {\n value: number;\n duration?: number;\n delay?: number;\n prefix?: string;\n suffix?: string;\n color?: string;\n formatter?: (value: number) => string;\n}\n\nexport function CountUpText(props: CountUpTextProps) {\n const [displayValue, setDisplayValue] = createSignal(0);\n const duration = () => Math.max(1, props.duration ?? 1000);\n const delay = () => Math.max(0, props.delay ?? 0);\n const color = () => props.color ?? terminalColors.text;\n const formatter = () => props.formatter ?? ((v: number) => String(Math.round(v)));\n\n createEffect(() => {\n const target = props.value;\n const dur = duration();\n const dly = delay();\n\n setDisplayValue(0);\n\n let delayTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let animationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let startTime: number | undefined;\n let cancelled = false;\n\n const animate = () => {\n if (cancelled) return;\n\n const now = Date.now();\n if (!startTime) startTime = now;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / dur, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n setDisplayValue(eased * target);\n\n if (progress < 1) {\n animationTimeoutId = setTimeout(animate, 16);\n }\n };\n\n if (dly > 0) {\n delayTimeoutId = setTimeout(() => {\n animationTimeoutId = setTimeout(animate, 16);\n }, dly);\n } else {\n animationTimeoutId = setTimeout(animate, 16);\n }\n\n onCleanup(() => {\n cancelled = true;\n if (delayTimeoutId) clearTimeout(delayTimeoutId);\n if (animationTimeoutId) clearTimeout(animationTimeoutId);\n });\n });\n\n return (\n <text fg={color()}>\n {props.prefix ?? ''}\n {formatter()(displayValue())}\n {props.suffix ?? ''}\n </text>\n );\n}\n\ninterface BlinkingTextProps {\n text: string;\n interval?: number;\n color?: string;\n blinkColor?: string;\n}\n\nexport function BlinkingText(props: BlinkingTextProps) {\n const [visible, setVisible] = createSignal(true);\n const interval = () => props.interval ?? 500;\n const color = () => props.color ?? terminalColors.text;\n const blinkColor = () => props.blinkColor ?? terminalColors.textMuted;\n\n createEffect(() => {\n const timer = setInterval(() => {\n setVisible((v) => !v);\n }, interval());\n\n onCleanup(() => clearInterval(timer));\n });\n\n return <text fg={visible() ? color() : blinkColor()}>{props.text}</text>;\n}\n\ninterface PulsingTextProps {\n text: string;\n color?: string;\n pulseColor?: string;\n interval?: number;\n}\n\nexport function PulsingText(props: PulsingTextProps) {\n const [phase, setPhase] = createSignal(0);\n const interval = () => props.interval ?? 100;\n const color = () => props.color ?? terminalColors.accent;\n const pulseColor = () => props.pulseColor ?? terminalColors.text;\n\n createEffect(() => {\n const timer = setInterval(() => {\n setPhase((p) => (p + 1) % 20);\n }, interval());\n\n onCleanup(() => clearInterval(timer));\n });\n\n const currentColor = () => {\n const p = phase();\n if (p < 10) return color();\n return pulseColor();\n };\n\n return <text fg={currentColor()}>{props.text}</text>;\n}\n","/**\n * TabBar Component\n * Clickable tab navigation\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface Tab {\n id: string;\n label: string;\n icon?: string;\n badge?: string | number;\n disabled?: boolean;\n}\n\ninterface TabBarProps {\n tabs: Tab[];\n activeId: string;\n hoveredId?: string | null;\n onSelect?: (id: string) => void;\n variant?: 'default' | 'pills' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n showShortcuts?: boolean;\n}\n\nexport function TabBar(props: TabBarProps) {\n const variant = () => props.variant ?? 'default';\n const size = () => props.size ?? 'md';\n const showShortcuts = () => props.showShortcuts ?? false;\n\n const gap = () => {\n switch (size()) {\n case 'sm':\n return 1;\n case 'lg':\n return 3;\n default:\n return 2;\n }\n };\n\n return (\n <box flexDirection=\"row\">\n <For each={props.tabs}>\n {(tab, index) => {\n const isActive = () => tab.id === props.activeId;\n const isHovered = () => tab.id === props.hoveredId;\n const isDisabled = () => tab.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isActive()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const decoration = () => {\n if (variant() === 'underline' && isActive()) {\n return '─';\n }\n return '';\n };\n\n const brackets = () => {\n if (variant() === 'pills') {\n if (isActive()) return { left: '[', right: ']' };\n return { left: ' ', right: ' ' };\n }\n return { left: '', right: '' };\n };\n\n const handleClick = () => {\n if (!isDisabled() && props.onSelect) {\n props.onSelect(tab.id);\n }\n };\n\n return (\n <box flexDirection=\"column\" marginRight={index() < props.tabs.length - 1 ? gap() : 0} onClick={handleClick}>\n <box flexDirection=\"row\">\n <text fg={terminalColors.border}>{brackets().left}</text>\n <Show when={tab.icon}>\n <text fg={fg()}>{tab.icon} </text>\n </Show>\n <text fg={fg()}>{tab.label}</text>\n <Show when={tab.badge !== undefined}>\n <text fg={terminalColors.textMuted}> ({tab.badge})</text>\n </Show>\n <Show when={showShortcuts()}>\n <text fg={terminalColors.textMuted}>\n {' '}\n {String(index() + 1)}\n </text>\n </Show>\n <text fg={terminalColors.border}>{brackets().right}</text>\n </box>\n <Show when={variant() === 'underline'}>\n <text fg={isActive() ? terminalColors.accent : 'transparent'}>\n {decoration().repeat(tab.label.length + (tab.icon ? 2 : 0))}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface VerticalTabBarProps {\n tabs: Tab[];\n activeId: string;\n hoveredId?: string | null;\n onSelect?: (id: string) => void;\n width?: number;\n}\n\nexport function VerticalTabBar(props: VerticalTabBarProps) {\n const width = () => props.width ?? 20;\n\n return (\n <box flexDirection=\"column\" width={width()}>\n <For each={props.tabs}>\n {(tab) => {\n const isActive = () => tab.id === props.activeId;\n const isHovered = () => tab.id === props.hoveredId;\n const isDisabled = () => tab.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isActive()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const prefix = () => {\n if (isActive()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n const handleClick = () => {\n if (!isDisabled() && props.onSelect) {\n props.onSelect(tab.id);\n }\n };\n\n return (\n <box\n flexDirection=\"row\"\n marginBottom={1}\n onClick={handleClick}\n >\n <text fg={fg()}>{prefix()}</text>\n <Show when={tab.icon}>\n <text fg={fg()}>{tab.icon} </text>\n </Show>\n <text fg={fg()}>{tab.label}</text>\n <Show when={tab.badge !== undefined}>\n <text fg={terminalColors.textMuted}> ({tab.badge})</text>\n </Show>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n","/**\n * Breadcrumb Component\n * Clickable breadcrumb navigation\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface BreadcrumbItem {\n id: string;\n label: string;\n icon?: string;\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[];\n separator?: string;\n hoveredId?: string | null;\n onNavigate?: (id: string) => void;\n}\n\nexport function Breadcrumb(props: BreadcrumbProps) {\n const separator = () => props.separator ?? ' / ';\n\n const handleClick = (id: string) => {\n props.onNavigate?.(id);\n };\n\n return (\n <box flexDirection=\"row\">\n <For each={props.items}>\n {(item, index) => {\n const isLast = () => index() === props.items.length - 1;\n const isHovered = () => item.id === props.hoveredId;\n\n const fg = () => {\n if (isLast()) return terminalColors.text;\n if (isHovered()) return terminalColors.accent;\n return terminalColors.textMuted;\n };\n\n return (\n <>\n <box\n flexDirection=\"row\"\n onClick={() => handleClick(item.id)}\n >\n <Show when={item.icon}>\n <text fg={fg()}>{item.icon} </text>\n </Show>\n <text fg={fg()}>\n {isLast() ? <b>{item.label}</b> : item.label}\n </text>\n </box>\n <Show when={!isLast()}>\n <text fg={terminalColors.textMuted}>{separator()}</text>\n </Show>\n </>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface PathBreadcrumbProps {\n path: string;\n separator?: string;\n maxSegments?: number;\n hoveredSegment?: number | null;\n onNavigate?: (path: string, segmentIndex: number) => void;\n}\n\nexport function PathBreadcrumb(props: PathBreadcrumbProps) {\n const separator = () => props.separator ?? '/';\n const maxSegments = () => props.maxSegments ?? 5;\n\n const segments = () => {\n const parts = props.path.split('/').filter(Boolean);\n if (parts.length <= maxSegments()) {\n return parts;\n }\n return ['...', ...parts.slice(-(maxSegments() - 1))];\n };\n\n const getPathAtIndex = (index: number): string => {\n const parts = props.path.split('/').filter(Boolean);\n const segs = segments();\n let actualIndex: number;\n\n if (segs[0] === '...') {\n const offset = parts.length - (segs.length - 1);\n actualIndex = offset + index - 1;\n } else {\n actualIndex = index;\n }\n\n return '/' + parts.slice(0, actualIndex + 1).join('/');\n };\n\n const handleClick = (segment: string, index: number) => {\n if (segment === '...') return;\n props.onNavigate?.(getPathAtIndex(index), index);\n };\n\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{separator()}</text>\n <For each={segments()}>\n {(segment, index) => {\n const isLast = () => index() === segments().length - 1;\n const isHovered = () => index() === props.hoveredSegment;\n const isEllipsis = () => segment === '...';\n\n const fg = () => {\n if (isEllipsis()) return terminalColors.textMuted;\n if (isLast()) return terminalColors.text;\n if (isHovered()) return terminalColors.accent;\n return terminalColors.textMuted;\n };\n\n return (\n <>\n <text\n fg={fg()}\n onClick={() => handleClick(segment, index())}\n >\n {isLast() ? <b>{segment}</b> : segment}\n </text>\n <Show when={!isLast()}>\n <text fg={terminalColors.textMuted}>{separator()}</text>\n </Show>\n </>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface NavigationTrailProps {\n items: Array<{ screen: string; label: string }>;\n currentIndex: number;\n hoveredIndex?: number | null;\n}\n\nexport function NavigationTrail(props: NavigationTrailProps) {\n return (\n <box flexDirection=\"row\">\n <For each={props.items}>\n {(item, index) => {\n const isCurrent = () => index() === props.currentIndex;\n const isPast = () => index() < props.currentIndex;\n const isHovered = () => index() === props.hoveredIndex;\n\n const fg = () => {\n if (isCurrent()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n if (isPast()) return terminalColors.textSecondary;\n return terminalColors.textMuted;\n };\n\n const indicator = () => {\n if (isCurrent()) return '●';\n if (isPast()) return '○';\n return '○';\n };\n\n return (\n <box flexDirection=\"row\" marginRight={2}>\n <text fg={fg()}>{indicator()} </text>\n <text fg={fg()}>{item.label}</text>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n"],"mappings":"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","names":["value","children","memo","e","children","i","sources","renderer","renderer","createElement","createTextNode","createSlotNode","insertNode","insert","dispose","renderer","children","dispose","renderer","createCliRenderer","execFile","LOGO_FRAMES","LOGO_SMALL","SPINNER","PROGRESS","empty","filled","head","PHASES","message","detail","Splash","props","frame","setFrame","createSignal","progress","setProgress","spinnerFrame","setSpinnerFrame","phase","setPhase","fadeIn","setFadeIn","particles","setParticles","version","createMemo","getVersion","cols","process","stdout","columns","rows","useSmallLogo","currentLogo","Math","min","maxWidth","max","map","l","length","generateParticles","chars","Array","fill","random","floor","join","createEffect","timer","setTimeout","f","onCleanup","clearTimeout","interval","setInterval","p","newProgress","clearInterval","phaseProgress","prev","newParticles","shift","push","onComplete","duration","pad","repeat","progressWidth","progressPad","filledWidth","emptyWidth","progressBar","currentPhase","_el$","_$createElement","_el$2","_el$3","_el$4","_el$5","_el$13","_el$15","_el$36","_el$37","_el$38","_el$39","_$createTextNode","_el$41","_el$43","_$insertNode","_$setProp","_$insert","_$createComponent","For","each","children","line","idx","_el$44","_c$","_$memo","_el$45","_$effect","_$p","terminalColors","accent","textMuted","Show","when","_el$7","_el$8","textSecondary","_el$0","_el$10","_el$11","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$25","_el$27","_el$28","_el$29","_el$30","_el$31","_el$33","_el$34","_el$35","_el$23","_el$24","_p$","_v$","_v$2","text","_v$3","_v$4","_v$5","_v$6","e","t","a","o","i","n","undefined","_v$7","_v$8","_v$9","Sidebar","props","version","getVersion","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$7","_el$9","_el$0","_el$1","_$insertNode","_$setProp","_$insert","symbols","brandIcon","_$createComponent","For","each","SIDEBAR_NAV","children","nav","idx","_el$11","_el$14","_el$15","Show","when","_el$12","section","items","item","active","screen","_el$16","_c$","_$memo","_el$17","_el$18","pointer","label","pointerInactive","_$effect","_$p","terminalColors","accent","text","textMuted","horizontalLine","repeat","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","undefined","StatusBar","props","messageType","shortcuts","STATUS_BAR_SHORTCUTS","messageColors","info","terminalColors","success","error","warning","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","Show","when","message","fallback","_el$5","_$effect","_$p","textMuted","children","_el$4","loadConfig","getAdapter","loadConfig","readFileSync","rmSync","join","loadConfig","join","readFileSync","rmSync","FEATURES","key","color","terminalColors","sync","desc","browse","recommend","translate","workflow","text","Home","props","animPhase","setAnimPhase","createSignal","stats","setStats","skills","agents","TOTAL_AGENTS","synced","detectedAgents","setDetectedAgents","cols","version","getVersion","isCompact","isNarrow","contentWidth","Math","min","line","repeat","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","skillsData","loadSkills","length","visibleAgents","createMemo","allAgents","Object","entries","AGENT_LOGOS","perRow","maxAgents","slice","remaining","getAgentWidth","agentRows","rows","i","push","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Show","when","children","_el$2","_el$3","_el$4","_el$5","_$createTextNode","_el$6","_el$7","_el$8","_el$0","_$insertNode","symbols","brandIcon","_$effect","_p$","_v$","_v$2","textMuted","_v$3","e","t","a","undefined","_el$10","_el$11","_el$12","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$24","_el$26","_el$28","_el$30","_el$31","_v$4","_v$5","accent","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","o","n","s","h","_el$33","_el$34","_el$36","_el$41","_el$43","_el$44","For","each","row","_el$56","type","agent","isDetected","includes","_el$57","_el$58","_el$59","_el$60","_el$61","icon","name","_v$14","_v$15","_v$16","_el$38","_el$39","_el$40","_$p","_v$10","_v$11","_el$46","_el$47","_el$49","_el$51","feat","_el$62","_el$63","_el$64","_el$65","_v$17","_v$18","_el$53","_el$54","_el$55","_v$12","_v$13","Header","props","_el$","_$createElement","_el$2","_el$3","_el$4","_$insertNode","_$setProp","_$insert","_c$","_$memo","icon","title","_$createComponent","Show","when","count","undefined","children","_el$5","_el$6","_$createTextNode","_el$7","_$effect","_$p","terminalColors","textMuted","badge","_el$8","_el$9","_el$0","accent","subtitle","_el$1","textSecondary","text","Spinner","props","frame","setFrame","createSignal","createEffect","interval","setInterval","f","symbols","spinner","length","onCleanup","clearInterval","color","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","label","children","_el$3","_$effect","_$p","terminalColors","text","EmptyState","props","compact","_el$","_$createElement","_el$4","_el$5","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","icon","children","_el$2","_el$3","_$effect","_$p","terminalColors","textMuted","title","description","_el$6","action","_el$7","_el$8","key","_el$9","accent","label","_p$","_v$","_v$2","textSecondary","e","t","undefined","LoadingState","message","_el$0","_el$1","_el$10","_$createTextNode","_v$3","_v$4","ErrorState","_el$11","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_v$5","_v$6","error","_v$7","a","DetailPane","props","slideProgress","setSlideProgress","createSignal","width","visible","createEffect","frame","timeoutId","animate","progress","Math","min","setTimeout","onCleanup","clearTimeout","effectiveWidth","round","_$createComponent","Show","when","_$memo","children","_el$","_$createElement","_el$2","_el$5","_el$6","_$insertNode","_$setProp","_$insert","icon","_el$3","_el$4","_$createTextNode","_$effect","_$p","terminalColors","accent","title","onClose","_el$7","_el$8","textMuted","subtitle","_el$0","_el$1","fields","length","_el$10","For","each","field","_el$16","_el$17","label","Array","isArray","value","fallback","_el$18","color","text","val","_el$19","_el$20","content","_el$11","_el$12","_el$13","actions","_el$14","action","_el$21","_el$22","_el$23","key","_p$","_v$4","_v$5","e","t","undefined","_v$","_v$2","border","_v$3","a","STATUS_ICONS","loading","success","error","warning","info","pending","STATUS_COLORS","terminalColors","accent","textMuted","SPINNER_FRAMES","StatusIndicator","props","spinnerFrame","setSpinnerFrame","createSignal","showLabel","animated","createEffect","status","interval","setInterval","f","length","onCleanup","clearInterval","icon","color","defaultLabel","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$3","_el$4","_$createTextNode","label","_$effect","_$p","InlineStatus","_el$5","StatusBadge","_el$6","_el$7","_el$9","_el$0","_p$","_v$","_v$2","_v$3","e","t","a","undefined","Browse","props","repos","setRepos","createSignal","selectedIndex","setSelectedIndex","searchQuery","setSearchQuery","searchMode","setSearchMode","showSkills","setShowSkills","loading","setLoading","error","setError","rows","createEffect","loadData","marketplaceRepos","getMarketplaceRepos","reposWithState","map","repo","skills","err","Error","message","loadRepoSkills","index","length","prev","r","i","result","fetchRepoSkills","source","DEFAULT_REPOS","filteredRepos","createMemo","query","toLowerCase","filter","name","includes","maxVisible","Math","max","startIdx","min","floor","visibleRepos","slice","handleKeyNav","delta","handleOpenRepo","actualIndex","findIndex","useKeyboard","key","sequence","test","onNavigate","selectedRepo","repoList","repoDetailFields","label","value","String","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$5","_$insertNode","_$createTextNode","_$effect","_p$","_v$","terminalColors","textMuted","_v$2","text","e","t","undefined","_el$6","_$p","_el$8","_el$0","_el$1","fallback","EmptyState","description","_el$10","_el$11","_el$13","_el$14","_el$15","_el$16","_v$3","_v$4","_el$17","For","each","idx","actualIdx","selected","_el$36","_el$37","_el$38","_el$39","_c$","_el$40","_v$5","accent","_v$6","_v$7","a","_el$19","_el$20","_el$21","_el$22","DetailPane","fields","actions","width","visible","onClose","StatusIndicator","status","_el$24","_el$25","skill","_el$42","_el$43","textSecondary","_el$27","_el$28","_el$29","_el$30","_el$32","_el$34","SPINNER","Installed","props","selectedIndex","setSelectedIndex","createSignal","searchQuery","setSearchQuery","searchMode","setSearchMode","animPhase","setAnimPhase","spinnerFrame","setSpinnerFrame","skills","setSkills","loading","error","cols","rows","isCompact","contentWidth","Math","max","min","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","interval","setInterval","f","length","clearInterval","data","loadSkills","filteredSkills","createMemo","filterSkills","handleKeyNav","delta","prev","handleToggle","skill","map","s","name","enabled","useKeyboard","key","slice","sequence","test","onNavigate","maxVisible","startIdx","floor","visibleSkills","divider","_el$","_$createElement","_$insert","repeat","_$effect","_$p","_$setProp","terminalColors","textMuted","enabledCount","filter","totalCount","shortcuts","_el$2","_$createComponent","Show","when","children","_el$3","_el$4","_el$5","_el$7","_el$8","_$createTextNode","_el$9","_el$0","_el$10","_$insertNode","_p$","_v$","_v$2","success","_v$3","_v$4","e","t","a","o","undefined","_el$12","_el$13","_el$15","_el$16","_el$18","_el$19","_el$21","_v$5","_v$6","text","_el$23","_el$35","fallback","_el$39","_el$40","_el$41","_el$42","_v$7","accent","_v$8","_el$44","_el$45","_el$47","_v$9","_v$0","_el$48","_el$49","_el$50","_el$52","_el$24","_el$25","_el$27","For","each","idx","actualIdx","selected","indicator","statusIcon","qualityBadge","grade","warningIndicator","warnings","line","badgeColor","quality","warning","_el$54","_el$29","_el$30","_el$32","_el$33","_el$37","_el$38","CATEGORIES","name","tag","Marketplace","props","allSkills","setAllSkills","createSignal","selectedIndex","setSelectedIndex","selectedCategory","setSelectedCategory","searchQuery","setSearchQuery","loading","setLoading","error","setError","loadedRepos","setLoadedRepos","failedRepos","setFailedRepos","rows","createEffect","loadData","skills","loaded","failed","repo","DEFAULT_REPOS","slice","result","fetchRepoSkills","source","length","push","attemptedCount","join","filteredSkills","createMemo","filter","s","toLowerCase","includes","description","filterMarketplaceSkills","list","maxIndex","Math","max","prev","min","maxVisible","floor","skillsWindow","selected","visible","total","start","items","handleKeyNav","delta","handleInstall","skill","onNavigate","handleCategorySelect","idx","cat","useKeyboard","key","sequence","parseInt","selectedSkill","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","message","action","label","compact","_el$2","Spinner","_el$3","_el$4","_$createTextNode","_$insertNode","_$effect","_$p","terminalColors","textMuted","_$memo","_el$5","_el$6","_el$7","_el$8","_el$12","_el$14","_el$15","_el$9","_el$1","_el$10","_el$11","warning","_p$","_v$","success","_v$2","_v$3","text","e","t","a","undefined","_el$16","_el$18","_el$20","_el$21","For","each","_el$47","_el$48","_el$49","_el$50","accent","_el$23","_el$25","fallback","EmptyState","_el$27","_el$28","_el$29","_el$30","_el$31","_el$32","_c$","_v$4","_v$5","_el$33","_el$35","_el$36","_el$37","originalIndex","isSelected","_el$51","_el$52","_el$53","_el$54","_el$55","repoName","_el$56","_el$57","_v$6","_v$7","_v$8","_el$38","_el$39","_el$40","_el$41","_el$43","_el$45","Recommend","props","state","setState","createSignal","recommendations","analyzing","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","projectInfo","setProjectInfo","rows","createEffect","loadData","s","analysis","analyzeProject","languages","frameworks","result","getRecommendations","maxIndex","Math","max","length","prev","min","err","Error","message","handleRefresh","handleInstall","recs","rec","onNavigate","handleKeyNav","delta","useKeyboard","key","name","getScoreColor","score","terminalColors","success","accent","warning","textMuted","getGrade","selectedRec","detailFields","label","value","source","tags","join","installCommand","maxVisible","floor","recsWindow","createMemo","list","selected","visible","total","start","items","slice","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","compact","_$memo","_el$2","Spinner","_el$3","_$insertNode","_$createTextNode","_el$5","_el$6","_c$","_$effect","_$p","_el$7","_el$8","_el$11","_el$13","_el$9","_el$0","_el$10","_p$","_v$","_v$2","e","t","undefined","fallback","EmptyState","description","_el$15","_el$16","text","_el$18","_el$20","_el$21","_el$22","For","each","idx","originalIndex","isSelected","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","reasons","_el$45","_el$46","_el$47","_el$48","_v$3","_v$4","_v$5","_v$6","a","o","_el$23","_el$24","_el$25","lastAnalyzed","_el$26","_el$28","_el$29","Date","toLocaleTimeString","DetailPane","fields","actions","width","onClose","_el$30","_el$32","_el$34","existsSync","readFileSync","join","readSkillContent","skillPath","skillMdPath","undefined","Translate","props","supportedAgents","setSupportedAgents","createSignal","skills","setSkills","sourceAgentIndex","setSourceAgentIndex","targetAgentIndex","setTargetAgentIndex","selectedSkillIndex","setSelectedSkillIndex","focusedPane","setFocusedPane","translating","setTranslating","preview","setPreview","result","setResult","loading","setLoading","error","setError","createEffect","loadData","agents","getSupportedAgents","skillsWithDetails","loadSkillsWithDetails","err","Error","message","sourceAgent","length","targetAgent","selectedSkill","skillList","canDoTranslation","source","target","checkCanTranslate","handlePreview","skill","path","content","previewResult","previewTranslation","handleTranslate","translationResult","translate","success","filename","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","p","onNavigate","visibleAgents","slice","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$0","_el$1","_el$11","_el$12","_$insertNode","_$createTextNode","_el$6","_el$7","_el$8","AGENT_LOGOS","_$effect","_$p","terminalColors","accent","_el$9","getAgentFormatInfo","formatName","textMuted","_el$14","_el$15","_el$16","text","_el$17","_el$18","warning","_p$","_v$","_v$2","_v$3","e","t","a","_el$20","_el$22","_el$24","_el$25","_el$26","_el$27","_el$29","_el$34","_el$35","_el$37","fallback","EmptyState","description","For","each","idx","selected","_el$75","_el$76","_el$31","_el$32","_el$33","_el$38","_el$39","_el$40","_el$41","agent","isSource","selectedIdx","_el$77","_el$78","_el$79","textSecondary","_el$43","_el$44","_el$46","_el$48","_el$49","_el$50","_el$51","_v$4","_v$5","border","_el$52","StatusIndicator","status","_el$54","_el$56","_el$58","_el$59","_el$61","compatible","issues","issue","_el$80","_el$81","_el$62","_el$64","_el$66","_el$67","_el$68","_el$69","_el$71","_el$73","Context","props","state","setState","createSignal","context","stack","loading","analyzing","error","tags","setTags","selectedSection","setSelectedSection","sections","moveSection","delta","i","Math","max","min","length","useKeyboard","key","name","handleRefresh","handleExport","onNavigate","createEffect","loadData","s","result","loadProjectContext","analyzeProjectContext","getStackTags","err","Error","message","refreshContext","exportContext","undefined","currentSection","ctx","_el$","_$createElement","_el$49","_el$51","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$6","_el$38","_el$40","_el$42","For","each","section","idx","_el$53","_el$54","_$effect","_$p","terminalColors","accent","textMuted","_$createTextNode","_el$8","_el$9","_el$0","_el$10","_el$11","_el$12","_el$14","_el$15","_el$16","_el$18","_el$19","_el$20","_el$22","_el$23","_el$24","_el$26","projectName","rootPath","languages","frameworks","libraries","lastUpdated","_el$27","_el$28","_el$30","_p$","_v$","_v$2","textSecondary","e","t","_v$3","_v$4","text","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","a","o","n","h","r","d","_el$31","fallback","EmptyState","lang","_el$55","_el$56","_el$57","_el$32","fw","_el$58","_el$59","_el$60","_el$33","slice","lib","_el$61","_el$62","_el$63","_el$34","_el$35","_el$36","_el$37","Object","keys","patterns","entries","value","_el$64","_el$65","_el$66","_el$67","String","_v$13","_v$14","_el$44","_el$45","tag","_el$68","_el$47","_el$48","_v$11","_v$12","description","Sync","props","agents","setAgents","createSignal","selectedIndex","setSelectedIndex","syncStatus","setSyncStatus","syncMessage","setSyncMessage","loading","setLoading","error","setError","skillCount","setSkillCount","cols","isCompact","createEffect","loadData","skillsData","loadSkills","skills","length","supportedAgents","getSupportedAgents","availability","getAgentAvailability","agentInfos","slice","map","agent","logo","AGENT_LOGOS","availInfo","find","a","type","name","icon","available","synced","err","Error","message","handleSync","agentList","idx","agentName","currentSkillCount","Promise","resolve","setTimeout","prev","i","handleSyncAll","syncedCount","filter","handleKeyNav","delta","max","Math","min","useKeyboard","key","onNavigate","createMemo","availableCount","totalSkillsSynced","reduce","sum","selectedAgent","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$8","_el$9","_el$0","_el$1","_el$11","_el$12","_$insertNode","_$effect","_p$","_v$","terminalColors","success","_v$2","textMuted","_v$3","accent","_v$4","_v$5","text","e","t","o","undefined","_el$13","_$p","_el$15","StatusIndicator","status","_el$17","_el$19","_el$20","_el$22","_v$6","_v$7","_el$23","_el$24","_el$26","_v$8","_v$9","fallback","EmptyState","description","_el$27","_el$28","_el$30","For","each","selected","_el$43","_el$44","_el$45","_el$46","_el$47","_el$48","_c$","_c$2","_el$49","_v$0","_v$1","_v$10","_v$11","_el$32","_el$34","_el$35","_el$36","warning","_el$37","_el$39","_el$41","Memory","props","state","setState","createSignal","entries","status","paths","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","createEffect","loadData","s","result","loadMemories","err","Error","message","handleDelete","length","entry","success","deleteMemoryEntry","key","handleClearAll","clearMemory","undefined","handleInitialize","initializeMemory","getTypeIcon","type","selectedEntry","detailFields","label","value","size","updated","useKeyboard","maxIndex","Math","max","name","prev","min","onNavigate","_el$","_$createElement","_el$28","_el$30","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$1","_el$11","_el$4","_el$5","_el$7","_el$8","_el$0","_$createTextNode","projectMemoryExists","globalMemoryExists","_$effect","_p$","_v$","terminalColors","textMuted","_v$2","warning","_v$3","_v$4","e","t","a","o","fallback","EmptyState","description","_el$13","_el$14","_$p","text","_el$16","For","each","mem","idx","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_v$5","accent","_v$6","_v$7","_v$8","_v$9","i","DetailPane","fields","actions","width","visible","onClose","_el$18","_el$20","_el$22","_el$24","_el$25","projectMemoryDir","_el$26","_el$27","globalMemoryDir","Workflow","props","state","setState","createSignal","workflows","current","progress","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","executing","setExecuting","cols","isCompact","contentWidth","Math","max","min","createEffect","loadData","s","result","loadWorkflowsList","err","Error","message","handleExecute","length","workflow","executeWorkflow","name","undefined","handleKeyNav","delta","prev","useKeyboard","key","onNavigate","successCount","createMemo","filter","w","status","failedCount","runningCount","selectedWorkflow","getStatusIcon","getStatusColor","terminalColors","success","accent","textMuted","divider","repeat","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$18","_el$19","_$insertNode","_el$5","_el$6","_$createTextNode","_el$7","_$effect","_$p","_el$8","_el$0","_el$1","_el$10","_el$11","_el$13","_el$14","_el$15","_el$16","fallback","EmptyState","description","_el$21","_el$22","text","_el$24","For","each","wf","idx","selected","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","skills","waves","lastRun","_el$48","_el$49","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","_el$26","StatusIndicator","_el$28","_el$29","_el$30","_el$31","_el$34","currentWave","totalWaves","currentSkill","totalSkills","DetailPane","fields","value","String","actions","width","visible","onClose","_el$35","_el$37","_el$38","Execute","props","skills","setSkills","createSignal","agents","setAgents","selectedSkillIndex","setSelectedSkillIndex","selectedAgentIndex","setSelectedAgentIndex","focusedPane","setFocusedPane","executing","setExecuting","executionResult","setExecutionResult","loading","setLoading","loadError","setLoadError","createEffect","loadData","skillsWithDetails","loadSkillsWithDetails","agentAvailability","getAgentAvailability","err","Error","message","handleExecute","skillList","agentList","length","skill","agent","available","result","executeSkillWithAgent","path","timeout","success","output","error","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","p","onNavigate","selectedSkill","list","selectedAgent","MAX_VISIBLE","skillsWindow","createMemo","selected","total","start","items","floor","slice","agentsWindow","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","Show","when","children","Spinner","label","ErrorState","action","compact","_$memo","_el$2","_el$3","_el$4","_el$5","_el$7","_el$13","_el$14","_el$16","_el$17","_el$18","_el$20","_$insertNode","_$createTextNode","fallback","EmptyState","description","_el$9","_el$0","_el$1","_$effect","_$p","terminalColors","textMuted","For","each","idx","originalIndex","isSelected","_el$56","_el$57","accent","textSecondary","_el$10","_el$11","_el$12","_el$22","_el$23","_el$24","_el$58","_el$59","_el$60","_el$61","_p$","_v$8","_v$9","e","t","undefined","_el$25","_el$26","_el$27","_v$","text","_v$2","border","_v$3","a","_el$28","_el$30","_el$32","_el$34","_el$35","_el$37","_el$38","_el$40","_el$41","warning","_v$4","_v$5","_v$6","_v$7","o","_el$43","StatusIndicator","status","_el$45","_el$47","_el$49","_el$50","_el$51","_el$52","_el$54","History","props","history","skill","time","duration","status","_el$","_$createElement","_el$2","_el$3","_el$5","_el$7","_el$9","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","length","icon","_$createTextNode","For","each","children","item","idx","_el$1","_el$10","_el$11","_el$12","_el$13","_$effect","_p$","_v$3","terminalColors","accent","text","_v$4","textMuted","_v$5","_v$6","success","error","e","t","a","o","undefined","_v$","_v$2","Team","props","state","setState","createSignal","config","members","sharedSkills","loading","error","focusedPane","setFocusedPane","selectedMemberIndex","setSelectedMemberIndex","selectedSkillIndex","setSelectedSkillIndex","showDetail","setShowDetail","initializing","setInitializing","createEffect","loadData","s","result","loadTeamConfig","err","Error","message","handleInitialize","success","initializeTeam","handleKeyNav","delta","max","length","prev","Math","min","useKeyboard","key","name","p","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","textMuted","warning","selectedMember","selectedSharedSkill","skills","memberDetailFields","member","label","value","role","String","lastSync","skillDetailFields","skill","sharedBy","sharedAt","agents","join","activeCount","createMemo","filter","m","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","StatusIndicator","_$memo","fallback","EmptyState","description","_el$2","_el$3","_el$5","_el$6","_el$8","_el$9","_$createTextNode","_el$0","_el$10","_el$11","_$insertNode","teamName","_$effect","_p$","_v$","_v$2","accent","_v$3","_v$4","_v$5","_v$6","text","e","t","a","o","i","n","undefined","_el$12","_$p","_el$14","_el$16","_el$17","_el$18","_el$19","_el$21","_el$23","_el$24","_el$26","_el$27","_el$28","_el$30","For","each","idx","selected","_el$41","_el$42","_el$43","_el$44","_el$45","_v$0","_v$1","_v$10","_v$11","slice","_el$46","_el$47","_el$48","_el$49","_el$50","_v$12","_v$13","_v$14","_el$32","_el$33","_el$34","_v$7","_v$8","border","_v$9","DetailPane","fields","actions","width","visible","onClose","_el$35","_el$37","_el$39","Plugins","props","state","setState","createSignal","plugins","manager","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","selectedPlugin","setSelectedPlugin","toggling","setToggling","createEffect","loadData","s","result","loadPluginsList","err","Error","message","handleToggle","length","plugin","enabled","disablePlugin","name","enablePlugin","handleShowDetail","info","getPluginInfo","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","onNavigate","getTypeIcon","type","currentPlugin","detailFields","current","label","value","metadata","version","description","path","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_$insertNode","fallback","EmptyState","_el$4","_el$5","_$createTextNode","_$effect","_$p","terminalColors","text","_el$7","For","each","idx","selected","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_p$","_v$","accent","_v$2","textSecondary","_v$3","_v$4","textMuted","_v$5","success","e","t","a","o","i","undefined","_el$9","StatusIndicator","status","_el$1","_el$11","_el$13","_el$15","DetailPane","fields","actions","width","visible","onClose","_el$16","_el$18","_el$20","Methodology","props","state","setState","createSignal","packs","installedPacks","manager","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","installing","setInstalling","syncing","setSyncing","createEffect","loadData","s","result","loadMethodologies","err","Error","message","handleInstall","length","pack","installed","installMethodologyPack","name","handleUninstall","success","uninstallMethodologyPack","handleSync","syncMethodologyPack","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","accent","textMuted","selectedPack","detailFields","label","value","version","description","String","skills","tags","join","installedCount","filter","p","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$5","_el$7","_el$8","_el$0","_el$1","_el$11","_el$13","_$insertNode","_$createTextNode","fallback","EmptyState","_el$15","_el$16","_$effect","_$p","text","_el$18","For","each","idx","selected","_el$30","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","slice","_p$","_v$7","_v$8","_v$9","_v$0","_v$1","e","t","a","o","i","undefined","_el$20","StatusIndicator","_el$22","DetailPane","fields","actions","width","visible","onClose","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","n","_el$24","_el$26","_el$28","ProgressBar","props","width","Math","max","round","safeProgress","Number","isFinite","progress","showPercentage","color","clampedProgress","min","filledWidth","emptyWidth","filled","symbols","progressFilled","repeat","empty","progressEmpty","_el$","_$createElement","_el$2","_el$3","_el$4","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$5","_el$6","_$createTextNode","_$effect","_$p","terminalColors","textSecondary","_p$","_v$","_v$2","textMuted","e","t","undefined","Plan","props","state","setState","createSignal","plans","current","validation","execution","loading","error","selectedIndex","setSelectedIndex","executionProgress","setExecutionProgress","executing","setExecuting","validating","setValidating","createEffect","loadData","s","result","loadPlansList","err","Error","message","handleValidate","length","planItem","plan","loadPlan","path","validatePlan","handleExecute","dryRun","executeFn","executePlanDryRun","executePlan","completedCount","totalTasks","tasks","undefined","event","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","success","accent","textMuted","selectedPlan","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","fallback","EmptyState","description","_el$2","_el$3","_$insertNode","_$createTextNode","_$effect","_$p","text","_el$5","For","each","idx","selected","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","lastModified","_el$46","_el$47","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","_el$7","StatusIndicator","_el$9","_el$1","_el$11","_el$12","_el$14","valid","issues","slice","issue","_el$48","_el$49","warning","_el$15","_el$17","_el$19","_el$20","ProgressBar","progress","width","_el$22","_el$24","_el$26","_el$27","_el$29","_el$30","_el$31","_el$32","completedTasks","failedTasks","_el$33","_el$35","_el$37","DEFAULT_SETTINGS","key","label","value","type","Settings","props","selectedIndex","setSelectedIndex","createSignal","settings","setSettings","animPhase","setAnimPhase","cols","isCompact","contentWidth","Math","max","min","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","handleKeyNav","delta","prev","length","handleToggle","setting","map","s","i","handleReset","useKeyboard","name","onNavigate","divider","createMemo","_el$","_$createElement","_$insert","repeat","_$effect","_$p","_$setProp","terminalColors","textMuted","shortcuts","_el$2","_$createComponent","Show","when","children","_el$3","_el$4","_el$5","_el$7","_el$8","_$createTextNode","_el$9","_el$1","_$insertNode","_p$","_v$","_v$2","text","_v$3","_v$4","e","t","a","o","undefined","_el$11","_el$12","_el$14","_el$16","_el$18","For","each","idx","selected","indicator","valueColor","success","toggleIcon","_el$27","_el$28","_el$29","_el$30","_v$5","_v$6","accent","_v$7","_$memo","_el$20","_el$21","_el$23","_el$25","_el$26","SHORTCUTS","section","items","key","desc","ShortcutSection","props","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","For","each","children","item","_el$5","_el$6","_el$7","_$createTextNode","_el$8","_$effect","_p$","_v$","terminalColors","accent","_v$2","textMuted","e","t","undefined","Show","when","isLast","_el$3","_$p","text","Help","animPhase","setAnimPhase","createSignal","cols","isCompact","rawWidth","contentWidth","Math","max","min","version","getVersion","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","divider","createMemo","_el$9","repeat","_el$0","_el$1","_el$10","_el$11","_el$13","_el$14","_el$15","_el$17","_v$3","_v$4","_v$5","_v$6","a","o","_el$19","_el$20","_el$22","fallback","_el$27","_el$28","_el$29","slice","s","idx","_v$7","floor","_v$8","length","_el$24","_el$25","Mesh","props","hosts","name","address","status","peers","securityStatus","initialized","fingerprint","trustedPeers","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_$createTextNode","_el$9","_el$0","_el$10","_el$12","_el$14","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","filter","h","length","icon","For","each","children","host","idx","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_$effect","_p$","_v$6","terminalColors","success","textMuted","_v$7","accent","text","_v$8","_v$9","e","t","a","o","undefined","_v$","_v$2","warning","_v$3","_v$4","_v$5","i","Message","props","messages","id","from","subject","time","unread","unreadCount","filter","m","length","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_$createTextNode","_el$8","_el$9","_el$1","_el$11","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","For","each","children","msg","idx","_el$13","_el$14","_el$15","_el$16","_el$17","slice","_$effect","_p$","_v$4","terminalColors","accent","textMuted","_v$5","text","_v$6","_v$7","e","t","a","o","undefined","_v$","_v$2","_v$3","DOCS_URL","openUrl","url","process","platform","execFile","cmd","App","props","showSplash","setShowSplash","createSignal","currentScreen","setCurrentScreen","showSidebar","setShowSidebar","dimensions","setDimensions","cols","stdout","columns","rows","createEffect","handleResize","on","onCleanup","off","sidebarVisible","sidebarWidth","statusBarHeight","contentHeight","handleNavigate","newScreen","handleSplashComplete","useKeyboard","key","name","ctrl","onExit","exit","sequence","v","targetScreen","NAV_KEYS","screenProps","onNavigate","Math","max","_$createComponent","Show","when","fallback","Splash","onComplete","duration","children","_el$","_$createElement","_el$2","_el$3","_$insertNode","_$setProp","_$insert","Sidebar","screen","Switch","Home","_$mergeProps","Match","Browse","Installed","Marketplace","Settings","Recommend","Translate","Context","Memory","Team","Plugins","Methodology","Plan","Workflow","Execute","History","Sync","Help","Mesh","Message","StatusBar","_$effect","_p$","_v$","_v$2","e","t","undefined","AgentGrid","props","maxVisible","showStatus","detectedAgents","columns","Math","max","allAgents","Object","entries","AGENT_LOGOS","visibleAgents","slice","hiddenCount","length","rows","createMemo","result","visible","i","push","_el$","_$createElement","_el$2","_el$3","_el$5","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","For","each","children","row","rowIndex","_el$0","agentType","agent","isDetected","includes","statusIcon","fg","terminalColors","accent","text","_el$1","_el$10","_el$11","icon","name","Show","when","_el$12","_el$13","_$effect","_$p","success","textMuted","_el$7","_el$8","_el$9","StatsCard","props","animated","displayValues","setDisplayValues","createSignal","items","map","item","value","animComplete","setAnimComplete","createEffect","newValues","duration","animations","countUp","startTime","Date","now","targetValues","frameInterval","intervalId","setInterval","elapsed","progress","Math","min","eased","pow","target","round","clearInterval","onCleanup","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","children","index","fg","color","terminalColors","text","_el$2","_el$3","_el$4","_el$5","_$insertNode","String","label","_$effect","_p$","_v$","border","_v$2","_v$3","textMuted","e","t","a","undefined","TOP_AGENTS","RightSidebar","props","sections","createSignal","context","agents","tasks","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$10","_el$11","_el$12","_el$15","_el$16","_el$17","_el$21","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$5","_$effect","_$p","terminalColors","textSecondary","_el$7","_el$8","_el$9","symbols","active","_el$0","For","each","agent","logo","AGENT_LOGOS","_el$22","_el$23","_el$24","_el$25","icon","name","text","_el$13","textMuted","_el$18","_el$19","_el$20","pending","_p$","_v$","width","_v$2","border","_v$3","_v$4","_v$5","e","t","a","o","i","undefined","SCREEN_LABELS","home","browse","marketplace","installed","settings","recommend","translate","context","memory","team","plugins","methodology","plan","workflow","execute","history","sync","help","mesh","message","BottomStatusBar","props","version","getVersion","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_$insertNode","_$setProp","_$insert","symbols","brandIcon","verticalLine","currentScreen","_$effect","_p$","_v$","terminalColors","border","_v$2","accent","_v$3","_v$4","text","_v$5","_v$6","textMuted","e","t","a","o","i","n","undefined","SkillList","props","maxVisible","pagination","calculatePagination","skills","length","selectedIndex","visibleSkills","slice","start","end","_$createComponent","Show","when","fallback","_el$8","_$createElement","_$insertNode","_$createTextNode","_$effect","_$p","_$setProp","terminalColors","textMuted","children","_el$","_$insert","itemsAbove","_el$2","_el$3","_el$4","symbols","arrowUp","For","each","skill","idx","actualIndex","isSelected","pointer","pointerInactive","fg","accent","text","statusIcon","enabled","active","pending","descPart","description","line","name","_el$0","_c$","_$memo","_el$1","itemsBelow","_el$5","_el$6","_el$7","arrowDown","SearchInput","props","placeholder","focused","display","value","textColor","terminalColors","text","textMuted","_el$","_$createElement","_el$2","_el$4","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","Show","when","children","_el$5","_$effect","_$p","accent","_p$","_v$","_v$2","e","t","undefined","FEATURES","key","label","color","description","FeatureList","props","features","_el$","_$createElement","_el$2","_el$3","_el$5","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","For","each","children","feat","_el$7","_el$8","_el$9","_el$0","_el$1","padEnd","_$effect","_p$","_v$","terminalColors","_v$2","textMuted","e","t","undefined","_$p","text","SelectList","props","maxVisible","showIndex","compact","scrollOffset","createMemo","selected","selectedIndex","visible","total","items","length","Math","floor","visibleItems","offset","slice","map","item","i","originalIndex","hasScrollUp","hasScrollDown","handleItemClick","index","disabled","onSelect","handleItemHover","onHover","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Show","when","children","_el$2","emptyText","_$effect","_$p","terminalColors","textMuted","_el$3","_el$4","_$createTextNode","_el$5","_$insertNode","For","each","isSelected","isHovered","hoveredIndex","isDisabled","fg","accent","text","textSecondary","prefix","_el$0","_el$1","_el$10","_el$16","_el$11","_el$12","String","padStart","icon","_el$14","_el$15","label","meta","_el$17","_el$18","_el$19","_$memo","description","_el$20","_el$21","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","undefined","_el$6","_el$7","_el$9","SplitPane","props","direction","showDivider","dividerChar","gap","flexDir","primaryWidth","undefined","primarySize","primaryHeight","secondaryWidth","secondarySize","secondaryHeight","_el$","_$createElement","_el$2","_$insertNode","_$insert","primary","_$createComponent","Show","when","_$memo","secondary","children","_el$3","_el$4","_$setProp","_$effect","_p$","_v$","_v$2","_v$3","terminalColors","border","e","t","a","_el$5","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","o","ThreePaneLayout","leftWidth","rightWidth","_el$6","_el$1","left","_el$7","_$p","showLeftDivider","_el$8","_el$9","_$createTextNode","center","right","showRightDivider","_el$10","_el$11","_el$13","KEYWORDS","Set","tokenizeLine","line","tokens","remaining","length","startsWith","push","type","value","stringMatch","match","slice","numberMatch","wordMatch","word","has","spaceMatch","getTokenColor","terminalColors","accent","warning","info","textMuted","text","CodeBlock","props","showLineNumbers","highlightLines","lines","allLines","code","split","maxLines","lineNumberWidth","String","isTruncated","undefined","_el$","_$createElement","_el$4","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","title","children","_el$2","_el$3","_$effect","_$p","For","each","index","lineNum","isHighlighted","_el$8","_el$9","_el$0","_$createTextNode","padStart","_p$","_v$","_v$2","e","t","token","_el$1","_el$5","_el$6","_el$7","border","InlineCode","_el$10","_el$11","_el$12","FormField","props","type","focused","disabled","width","displayValue","repeat","value","length","borderColor","error","terminalColors","accent","textMuted","border","labelColor","textSecondary","_el$","_$createElement","_el$2","_el$3","_el$6","_el$9","_$insertNode","_$setProp","_$insert","label","_$createComponent","Show","when","required","children","_el$4","_$createTextNode","_$effect","_$p","_el$7","_el$13","placeholder","_el$0","_el$10","_el$11","_$memo","hint","_el$12","_p$","_v$","_v$2","_v$3","_v$4","text","e","t","a","o","undefined","TextAreaField","rows","lines","split","slice","hasContent","_el$14","_el$15","_el$16","fallback","_el$19","map","line","_el$20","_el$17","_el$18","_v$5","_v$6","_v$7","_v$8","SelectField","expanded","selectedLabel","option","options","find","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","index","isSelected","selectedOptionIndex","_el$28","_v$9","_v$0","_v$1","_v$10","DefaultErrorFallback","props","errorMessage","error","Error","message","String","errorStack","stack","lines","split","slice","join","useKeyboard","key","name","reset","_el$","_$createElement","_el$2","_el$3","_el$5","_el$6","_el$9","_el$0","_el$1","_$createTextNode","_el$10","_el$12","_el$14","_el$16","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$7","_el$8","_$effect","_$p","terminalColors","textMuted","_p$","_v$","_v$2","_v$3","text","_v$4","_v$5","accent","_v$6","e","t","a","o","i","n","undefined","ErrorBoundary","handledErrorRef","fallbackComponent","onError","wrappedReset","fallback","SolidErrorBoundary","Try","catch","_el$17","VARIANT_COLORS","primary","fg","terminalColors","text","bg","accent","border","hoverFg","secondary","surface","ghost","textSecondary","danger","error","Button","props","variant","size","disabled","focused","pressed","hovered","colors","textMuted","borderColor","paddingX","brackets","left","right","padding","repeat","handleClick","onClick","_el$","_$createElement","_el$2","_el$3","_el$6","_el$0","_el$1","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","icon","children","_el$4","_el$5","_$createTextNode","_$effect","_$p","label","shortcut","_el$7","_el$8","_el$9","_p$","_v$","_v$2","_v$3","_v$4","_v$5","e","t","a","o","i","undefined","ButtonGroup","direction","gap","_el$10","buttons","map","btn","index","_el$11","id","focusedId","selectedId","_v$6","length","_v$7","IconButton","_el$12","_el$13","_el$14","_el$15","Clickable","props","disabled","hovered","focused","hoverEffect","showHighlight","cursor","handleClick","onClick","handleDoubleClick","onDoubleClick","handleRightClick","onRightClick","renderContent","_el$","_$createElement","_$insert","children","_el$2","_el$5","_$insertNode","_$setProp","_$createComponent","Show","when","_$memo","_el$3","_el$4","_$createTextNode","_$effect","_$p","terminalColors","accent","undefined","ClickableText","underlineOnHover","color","textMuted","hoverColor","text","_el$6","_c$","_el$7","ClickableRow","selected","showIndicator","indicatorChar","indicator","fg","textSecondary","_el$8","_el$9","InteractiveArea","_el$0","_p$","_v$","width","_v$2","height","_v$3","left","x","top","y","_v$4","onMouseOver","_v$5","onMouseOut","_v$6","_v$7","onMouseDown","_v$8","onMouseUp","e","t","a","o","i","n","s","h","HoverHighlight","props","_el$","_$createElement","_$insert","children","HighlightableListItem","showPrefix","prefixWidth","isSelected","index","selectedIndex","isHovered","hoveredIndex","prefix","fg","terminalColors","accent","text","textSecondary","_el$2","_$setProp","_$createComponent","Show","when","_el$3","_$effect","_p$","_v$","_v$2","e","t","undefined","FocusRing","ringColor","_el$4","_v$3","isFocused","_v$4","PressEffect","_el$5","AnimatedText","props","progress","setProgress","createSignal","isComplete","setIsComplete","animation","duration","Math","max","delay","color","terminalColors","text","createEffect","anim","dur","dly","delayTimeoutId","animationTimeoutId","startTime","cancelled","animate","now","Date","elapsed","p","min","setTimeout","onComplete","onCleanup","clearTimeout","displayText","charCount","floor","length","slice","scrambleText","num","parseFloat","isNaN","String","round","_el$","_$createElement","_$insert","_$createComponent","Show","when","_$memo","children","_el$2","_$insertNode","_$createTextNode","_$effect","_$p","_$setProp","accent","CountUpText","displayValue","setDisplayValue","formatter","v","target","value","eased","pow","_el$4","prefix","suffix","BlinkingText","visible","setVisible","interval","blinkColor","textMuted","timer","setInterval","clearInterval","_el$5","PulsingText","phase","setPhase","pulseColor","currentColor","_el$6","TabBar","props","variant","size","showShortcuts","gap","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","tabs","children","tab","index","isActive","id","activeId","isHovered","hoveredId","isDisabled","disabled","fg","terminalColors","textMuted","accent","text","textSecondary","decoration","brackets","left","right","handleClick","onSelect","_el$2","_el$3","_el$4","_el$7","_el$11","_$insertNode","Show","when","icon","_el$5","_el$6","_$createTextNode","_$effect","_$p","label","badge","undefined","_el$8","_el$9","_el$0","_el$1","_el$10","String","_el$12","repeat","length","_p$","_v$","_v$2","border","_v$3","_v$4","e","t","a","o","VerticalTabBar","width","_el$13","prefix","_el$14","_el$15","_el$18","_el$16","_el$17","_el$19","_el$20","_el$21","_v$5","_v$6","Breadcrumb","props","separator","handleClick","id","onNavigate","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","items","children","item","index","isLast","length","isHovered","hoveredId","fg","terminalColors","text","accent","textMuted","_el$2","_el$5","_$insertNode","Show","when","icon","_el$3","_el$4","_$createTextNode","_$effect","_$p","_c$","_$memo","_el$7","label","_el$6","PathBreadcrumb","maxSegments","segments","parts","path","split","filter","Boolean","slice","getPathAtIndex","segs","actualIndex","offset","join","segment","_el$8","_el$9","hoveredSegment","isEllipsis","_el$0","_c$2","_el$10","_el$1","NavigationTrail","_el$11","isCurrent","currentIndex","isPast","hoveredIndex","textSecondary","indicator","_el$12","_el$13","_el$14","_el$15","_p$","_v$","_v$2","e","t","undefined","isRunning","renderer","exitTUI","code","dispose","process","stdout","write","setImmediate","exit","startTUI","on","err","console","error","message","createCliRenderer","exitOnCtrlC","useMouse","enableMouseMovement","render","_$createComponent","App","onExit","Promise"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/@opentui+solid@0.1.75_solid-js@1.9.11_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/solid/index.js","../../../node_modules/.pnpm/solid-js@1.9.11/node_modules/solid-js/dist/solid.js","../src/index.tsx","../src/App.tsx","../src/state/types.ts","../src/theme/colors.ts","../src/utils/helpers.ts","../src/components/Splash.tsx","../src/theme/symbols.ts","../src/components/Sidebar.tsx","../src/components/StatusBar.tsx","../src/state/navigation.ts","../src/state/skills.ts","../src/state/agents.ts","../src/state/marketplace.ts","../../../marketplace/sources.json","../src/screens/Home.tsx","../src/components/Header.tsx","../src/components/Spinner.tsx","../src/components/EmptyState.tsx","../src/components/DetailPane.tsx","../src/components/StatusIndicator.tsx","../src/screens/Browse.tsx","../src/screens/Installed.tsx","../src/services/memory.service.ts","../src/services/workflow.service.ts","../src/services/plan.service.ts","../src/services/plugin.service.ts","../src/services/team.service.ts","../src/services/methodology.service.ts","../src/services/recommend.service.ts","../src/services/context.service.ts","../src/services/executor.service.ts","../src/services/translator.service.ts","../src/services/tree.service.ts","../src/screens/Marketplace.tsx","../src/screens/Recommend.tsx","../src/screens/Translate.tsx","../src/screens/Context.tsx","../src/screens/Sync.tsx","../src/screens/Memory.tsx","../src/screens/Workflow.tsx","../src/screens/Execute.tsx","../src/screens/History.tsx","../src/screens/Team.tsx","../src/screens/Plugins.tsx","../src/screens/Methodology.tsx","../src/components/ProgressBar.tsx","../src/screens/Plan.tsx","../src/screens/Settings.tsx","../src/screens/Help.tsx","../src/screens/Mesh.tsx","../src/screens/Message.tsx","../src/theme/animations.ts","../src/utils/list.ts","../src/components/AgentGrid.tsx","../src/components/StatsCard.tsx","../src/components/RightSidebar.tsx","../src/components/BottomStatusBar.tsx","../src/components/SkillList.tsx","../src/components/SearchInput.tsx","../src/components/FeatureList.tsx","../src/components/SelectList.tsx","../src/components/SplitPane.tsx","../src/components/CodeBlock.tsx","../src/components/FormField.tsx","../src/components/ErrorBoundary.tsx","../src/components/Button.tsx","../src/components/Clickable.tsx","../src/components/HoverHighlight.tsx","../src/components/AnimatedText.tsx","../src/components/TabBar.tsx","../src/components/Breadcrumb.tsx"],"sourcesContent":["// @bun\n// index.ts\nimport { CliRenderer, createCliRenderer, engine as engine2 } from \"@opentui/core\";\nimport { createTestRenderer } from \"@opentui/core/testing\";\n\n// src/elements/index.ts\nimport {\n ASCIIFontRenderable,\n BoxRenderable,\n CodeRenderable,\n DiffRenderable,\n InputRenderable as InputRenderable2,\n LineNumberRenderable,\n MarkdownRenderable,\n ScrollBoxRenderable,\n SelectRenderable as SelectRenderable2,\n TabSelectRenderable as TabSelectRenderable2,\n TextareaRenderable,\n TextAttributes,\n TextNodeRenderable as TextNodeRenderable3,\n TextRenderable as TextRenderable3\n} from \"@opentui/core\";\n\n// src/elements/hooks.ts\nimport {\n engine,\n Timeline\n} from \"@opentui/core\";\nimport { createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js\";\nvar RendererContext = createContext();\nvar useRenderer = () => {\n const renderer = useContext(RendererContext);\n if (!renderer) {\n throw new Error(\"No renderer found\");\n }\n return renderer;\n};\nvar onResize = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"resize\", callback);\n });\n onCleanup(() => {\n renderer.off(\"resize\", callback);\n });\n};\nvar useTerminalDimensions = () => {\n const renderer = useRenderer();\n const [terminalDimensions, setTerminalDimensions] = createSignal({ width: renderer.width, height: renderer.height });\n const callback = (width, height) => {\n setTerminalDimensions({ width, height });\n };\n onResize(callback);\n return terminalDimensions;\n};\nvar useKeyboard = (callback, options) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"keypress\", callback);\n if (options?.release) {\n keyHandler.on(\"keyrelease\", callback);\n }\n });\n onCleanup(() => {\n keyHandler.off(\"keypress\", callback);\n if (options?.release) {\n keyHandler.off(\"keyrelease\", callback);\n }\n });\n};\nvar usePaste = (callback) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"paste\", callback);\n });\n onCleanup(() => {\n keyHandler.off(\"paste\", callback);\n });\n};\nvar useKeyHandler = useKeyboard;\nvar useSelectionHandler = (callback) => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"selection\", callback);\n });\n onCleanup(() => {\n renderer.off(\"selection\", callback);\n });\n};\nvar useTimeline = (options = {}) => {\n const timeline = new Timeline(options);\n onMount(() => {\n if (options.autoplay !== false) {\n timeline.play();\n }\n engine.register(timeline);\n });\n onCleanup(() => {\n timeline.pause();\n engine.unregister(timeline);\n });\n return timeline;\n};\n// src/elements/extras.ts\nimport { createEffect, createMemo as createMemo2, getOwner, onCleanup as onCleanup2, runWithOwner, splitProps, untrack as untrack2 } from \"solid-js\";\n\n// src/reconciler.ts\nimport {\n BaseRenderable,\n createTextAttributes,\n InputRenderable,\n InputRenderableEvents,\n isTextNodeRenderable,\n parseColor,\n Renderable,\n RootTextNodeRenderable,\n SelectRenderable,\n SelectRenderableEvents,\n TabSelectRenderable,\n TabSelectRenderableEvents,\n TextNodeRenderable,\n TextRenderable\n} from \"@opentui/core\";\nimport { useContext as useContext2 } from \"solid-js\";\n\n// src/renderer/universal.js\nimport { createRoot, createRenderEffect, createMemo, createComponent, untrack, mergeProps } from \"solid-js\";\nvar memo = (fn) => createMemo(() => fn());\nfunction createRenderer({\n createElement,\n createTextNode,\n createSlotNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial)\n initial = [];\n if (typeof accessor !== \"function\")\n return insertExpression(parent, accessor, initial, marker);\n createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\")\n current = current();\n if (value === current)\n return current;\n const t = typeof value, multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\")\n value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else\n node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), current = value);\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\")\n v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi)\n return current = replacement;\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else\n reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, multi && current || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi)\n return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else\n replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length;i < len; i++) {\n let item = array[i], t;\n if (item == null || item === true || item === false)\n ;\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\")\n item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else\n normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = getNextSibling(a[aEnd - 1]), map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after;\n while (bStart < bEnd)\n insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart]))\n removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map;\n let i = bStart;\n while (i < bEnd)\n map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart, sequence = 1, t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence)\n break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index)\n insertNode(parentNode, b[bStart++], node);\n } else\n replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else\n aStart++;\n } else\n removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while (removed = getFirstChild(parent))\n removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return replacement;\n }\n const node = replacement || createSlotNode();\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1;i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i)\n isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);\n else\n isParent && removeNode(parent, el);\n } else\n inserted = true;\n }\n } else\n insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length;i < len; i++)\n insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\")\n continue;\n const value = props[prop];\n if (value === prevProps[prop])\n continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot((dispose) => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect((current) => spreadExpression(node, accessor(), current, skipChildren));\n } else\n spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}\n\n// src/renderer/index.ts\nimport { mergeProps as mergeProps2 } from \"solid-js\";\nfunction createRenderer2(options) {\n const renderer = createRenderer(options);\n renderer.mergeProps = mergeProps2;\n return renderer;\n}\n\n// src/utils/id-counter.ts\nvar idCounter = new Map;\nfunction getNextId(elementType) {\n if (!idCounter.has(elementType)) {\n idCounter.set(elementType, 0);\n }\n const value = idCounter.get(elementType) + 1;\n idCounter.set(elementType, value);\n return `${elementType}-${value}`;\n}\n\n// src/utils/log.ts\nvar log = (...args) => {\n if (process.env.DEBUG) {\n console.log(\"[Reconciler]\", ...args);\n }\n};\n\n// src/reconciler.ts\nclass TextNode extends TextNodeRenderable {\n static fromString(text, options = {}) {\n const node = new TextNode(options);\n node.add(text);\n return node;\n }\n}\nvar logId = (node) => {\n if (!node)\n return;\n return node.id;\n};\nvar getNodeChildren = (node) => {\n let children;\n if (node instanceof TextRenderable) {\n children = node.getTextChildren();\n } else {\n children = node.getChildren();\n }\n return children;\n};\nfunction _insertNode(parent, node, anchor) {\n log(\"Inserting node:\", logId(node), \"into parent:\", logId(parent), \"with anchor:\", logId(anchor), node instanceof TextNode);\n if (node instanceof SlotRenderable) {\n node.parent = parent;\n node = node.getSlotChild(parent);\n }\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent);\n }\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(`Orphan text error: \"${node.toChunks().map((c) => c.text).join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`);\n }\n }\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\");\n throw new Error(\"Tried to mount a non base renderable\");\n }\n if (!anchor) {\n parent.add(node);\n return;\n }\n const children = getNodeChildren(parent);\n const anchorIndex = children.findIndex((el) => el.id === anchor.id);\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map((c) => c.id));\n }\n parent.add(node, anchorIndex);\n}\nfunction _removeNode(parent, node) {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent));\n if (node instanceof SlotRenderable) {\n node.parent = null;\n node = node.getSlotChild(parent);\n }\n parent.remove(node.id);\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively();\n return;\n }\n });\n}\nfunction _createTextNode(value) {\n log(\"Creating text node:\", value);\n const id = getNextId(\"text-node\");\n if (typeof value === \"number\") {\n value = value.toString();\n }\n return TextNode.fromString(value, { id });\n}\nfunction createSlotNode() {\n const id = getNextId(\"slot-node\");\n log(\"Creating slot node\", id);\n return new SlotRenderable(id);\n}\nfunction _getParentNode(childNode) {\n log(\"Getting parent of node:\", logId(childNode));\n let parent = childNode.parent ?? undefined;\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined;\n }\n return parent;\n}\nvar {\n render: _render,\n effect,\n memo: memo2,\n createComponent: createComponent2,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps: mergeProps3,\n use\n} = createRenderer2({\n createElement(tagName) {\n log(\"Creating element:\", tagName);\n const id = getNextId(tagName);\n const solidRenderer = useContext2(RendererContext);\n if (!solidRenderer) {\n throw new Error(\"No renderer found\");\n }\n const elements = getComponentCatalogue();\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`);\n }\n const element = new elements[tagName](solidRenderer, { id });\n log(\"Element created with id:\", id);\n return element;\n },\n createTextNode: _createTextNode,\n createSlotNode,\n replaceText(textNode, value) {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode));\n if (!(textNode instanceof TextNode))\n return;\n textNode.replace(value, 0);\n },\n setProperty(node, name, value, prev) {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3);\n if (value) {\n node.on(eventName, value);\n }\n if (prev) {\n node.off(eventName, prev);\n }\n return;\n }\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = { url: value };\n return;\n }\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value);\n node.fg = value.fg ? parseColor(value.fg) : node.fg;\n node.bg = value.bg ? parseColor(value.bg) : node.bg;\n return;\n }\n return;\n }\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value);\n node[name] = value;\n break;\n case \"focused\":\n if (!(node instanceof Renderable))\n return;\n if (value) {\n node.focus();\n } else {\n node.blur();\n }\n break;\n case \"onChange\":\n let event = undefined;\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE;\n }\n if (!event)\n break;\n if (value) {\n node.on(event, value);\n }\n if (prev) {\n node.off(event, prev);\n }\n break;\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev);\n }\n }\n break;\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev);\n }\n } else {\n node[name] = value;\n }\n break;\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev);\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev);\n }\n }\n break;\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop];\n if (prev !== undefined && propVal === prev[prop])\n continue;\n node[prop] = propVal;\n }\n break;\n case \"text\":\n case \"content\":\n node[name] = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`;\n break;\n default:\n node[name] = value;\n }\n },\n isTextNode(node) {\n return node instanceof TextNode;\n },\n insertNode: _insertNode,\n removeNode: _removeNode,\n getParentNode: _getParentNode,\n getFirstChild(node) {\n log(\"Getting first child of node:\", logId(node));\n const firstChild = getNodeChildren(node)[0];\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node));\n return;\n }\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node));\n return firstChild;\n },\n getNextSibling(node) {\n log(\"Getting next sibling of node:\", logId(node));\n const parent = _getParentNode(node);\n if (!parent) {\n log(\"No parent found for node:\", logId(node));\n return;\n }\n const siblings = getNodeChildren(parent);\n const index = siblings.indexOf(node);\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node));\n return;\n }\n const nextSibling = siblings[index + 1];\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node));\n return;\n }\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node));\n return nextSibling;\n }\n});\n\n// src/elements/extras.ts\nfunction Portal(props) {\n const renderer = useRenderer();\n const marker = createSlotNode(), mount = () => props.mount || renderer.root, owner = getOwner();\n let content;\n createEffect(() => {\n content || (content = runWithOwner(owner, () => createMemo2(() => props.children)));\n const el = mount();\n const container = createElement(\"box\"), renderRoot = container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.add(container);\n props.ref && props.ref(container);\n onCleanup2(() => el.remove(container.id));\n }, undefined, { render: true });\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo2(component);\n return createMemo2(() => {\n const component2 = cached();\n switch (typeof component2) {\n case \"function\":\n return untrack2(() => component2(props));\n case \"string\":\n const el = createElement(component2);\n spread(el, props);\n return el;\n default:\n break;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n// src/elements/slot.ts\nimport { BaseRenderable as BaseRenderable2, isTextNodeRenderable as isTextNodeRenderable2, TextNodeRenderable as TextNodeRenderable2, TextRenderable as TextRenderable2, Yoga } from \"@opentui/core\";\n\nclass SlotBaseRenderable extends BaseRenderable2 {\n constructor(id) {\n super({\n id\n });\n }\n add(obj, index) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getChildren() {\n return [];\n }\n remove(id) {}\n insertBefore(obj, anchor) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getRenderable(id) {\n return;\n }\n getChildrenCount() {\n return 0;\n }\n requestRender() {}\n findDescendantById(id) {\n return;\n }\n}\n\nclass TextSlotRenderable extends TextNodeRenderable2 {\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super({ id });\n this._visible = false;\n this.slotParent = parent;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.slotParent?.destroy();\n super.destroy();\n }\n}\n\nclass LayoutSlotRenderable extends SlotBaseRenderable {\n yogaNode;\n slotParent;\n destroyed = false;\n constructor(id, parent) {\n super(id);\n this._visible = false;\n this.slotParent = parent;\n this.yogaNode = Yoga.default.Node.create();\n this.yogaNode.setDisplay(Yoga.Display.None);\n }\n getLayoutNode() {\n return this.yogaNode;\n }\n updateFromLayout() {}\n updateLayout() {}\n onRemove() {}\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n super.destroy();\n this.slotParent?.destroy();\n }\n}\n\nclass SlotRenderable extends SlotBaseRenderable {\n layoutNode;\n textNode;\n destroyed = false;\n constructor(id) {\n super(id);\n this._visible = false;\n }\n getSlotChild(parent) {\n if (isTextNodeRenderable2(parent) || parent instanceof TextRenderable2) {\n if (!this.textNode) {\n this.textNode = new TextSlotRenderable(`slot-text-${this.id}`, this);\n }\n return this.textNode;\n }\n if (!this.layoutNode) {\n this.layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}`, this);\n }\n return this.layoutNode;\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n if (this.layoutNode) {\n this.layoutNode.destroy();\n }\n if (this.textNode) {\n this.textNode.destroy();\n }\n }\n}\n\n// src/elements/index.ts\nclass SpanRenderable extends TextNodeRenderable3 {\n _ctx;\n constructor(_ctx, options) {\n super(options);\n this._ctx = _ctx;\n }\n}\nvar textNodeKeys = [\"span\", \"b\", \"strong\", \"i\", \"em\", \"u\", \"a\"];\n\nclass TextModifierRenderable extends SpanRenderable {\n constructor(options, modifier) {\n super(null, options);\n if (modifier === \"b\" || modifier === \"strong\") {\n this.attributes = (this.attributes || 0) | TextAttributes.BOLD;\n } else if (modifier === \"i\" || modifier === \"em\") {\n this.attributes = (this.attributes || 0) | TextAttributes.ITALIC;\n } else if (modifier === \"u\") {\n this.attributes = (this.attributes || 0) | TextAttributes.UNDERLINE;\n }\n }\n}\n\nclass BoldSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"b\");\n }\n}\n\nclass ItalicSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"i\");\n }\n}\n\nclass UnderlineSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"u\");\n }\n}\n\nclass LineBreakRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n super(null, options);\n this.add();\n }\n add() {\n return super.add(`\n`);\n }\n}\n\nclass LinkRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n const linkOptions = {\n ...options,\n link: { url: options.href }\n };\n super(null, linkOptions);\n }\n}\nvar baseComponents = {\n box: BoxRenderable,\n text: TextRenderable3,\n input: InputRenderable2,\n select: SelectRenderable2,\n textarea: TextareaRenderable,\n ascii_font: ASCIIFontRenderable,\n tab_select: TabSelectRenderable2,\n scrollbox: ScrollBoxRenderable,\n code: CodeRenderable,\n diff: DiffRenderable,\n line_number: LineNumberRenderable,\n markdown: MarkdownRenderable,\n span: SpanRenderable,\n strong: BoldSpanRenderable,\n b: BoldSpanRenderable,\n em: ItalicSpanRenderable,\n i: ItalicSpanRenderable,\n u: UnderlineSpanRenderable,\n br: LineBreakRenderable,\n a: LinkRenderable\n};\nvar componentCatalogue = { ...baseComponents };\nfunction extend(objects) {\n Object.assign(componentCatalogue, objects);\n}\nfunction getComponentCatalogue() {\n return componentCatalogue;\n}\n\n// index.ts\nvar render = async (node, rendererOrConfig = {}) => {\n let isDisposed = false;\n let dispose;\n const renderer = rendererOrConfig instanceof CliRenderer ? rendererOrConfig : await createCliRenderer({\n ...rendererOrConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n rendererOrConfig.onDestroy?.();\n }\n });\n if (rendererOrConfig instanceof CliRenderer) {\n renderer.on(\"destroy\", () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n });\n }\n engine2.attach(renderer);\n dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), renderer.root);\n};\nvar testRender = async (node, renderConfig = {}) => {\n let isDisposed = false;\n const testSetup = await createTestRenderer({\n ...renderConfig,\n onDestroy: () => {\n if (!isDisposed) {\n isDisposed = true;\n dispose();\n }\n renderConfig.onDestroy?.();\n }\n });\n engine2.attach(testSetup.renderer);\n const dispose = _render(() => createComponent2(RendererContext.Provider, {\n get value() {\n return testSetup.renderer;\n },\n get children() {\n return createComponent2(node, {});\n }\n }), testSetup.renderer.root);\n return testSetup;\n};\nexport {\n useTimeline,\n useTerminalDimensions,\n useSelectionHandler,\n useRenderer,\n usePaste,\n useKeyboard,\n useKeyHandler,\n use,\n textNodeKeys,\n testRender,\n spread,\n setProp,\n render,\n onResize,\n mergeProps3 as mergeProps,\n memo2 as memo,\n insertNode,\n insert,\n getComponentCatalogue,\n extend,\n effect,\n createTextNode,\n createSlotNode,\n createElement,\n createDynamic,\n createComponent2 as createComponent,\n componentCatalogue,\n baseComponents,\n _render,\n UnderlineSpanRenderable,\n TextSlotRenderable,\n SlotRenderable,\n RendererContext,\n Portal,\n LinkRenderable,\n LineBreakRenderable,\n LayoutSlotRenderable,\n ItalicSpanRenderable,\n Dynamic,\n BoldSpanRenderable\n};\n","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n maxDeadline = 0,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n maxDeadline = currentTime + maxYieldInterval;\n try {\n const hasMoreWork = scheduledCallback(currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxDeadline;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n let error;\n const p = initP !== NO_INIT ? initP : untrack(() => {\n try {\n return fetcher(lookup, {\n value: value(),\n refetching\n });\n } catch (fetcherError) {\n error = fetcherError;\n }\n });\n if (error !== undefined) {\n loadEnd(pr, undefined, castError(error), lookup);\n return;\n } else if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"v\" in p) {\n if (p.s === 1) loadEnd(pr, p.v, undefined, lookup);else loadEnd(pr, undefined, castError(p.v), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n let owner = Owner;\n if (dynamic) createComputed(() => (owner = Owner, load(false)));else load(false);\n return [read, {\n refetch: info => runWithOwner(owner, () => load(info)),\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined ? value : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const {\n factory: oldFactory,\n untrack: oldUntrack\n } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n } : desc.value !== undefined ? desc : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const len = keys.length;\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = len > 1 ? keys.flat() : keys[0];\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.includes(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.includes(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.includes(k));\n }\n }, propTraps));\n return res;\n }\n const objects = [];\n for (let i = 0; i <= len; i++) {\n objects[i] = {};\n }\n for (const propName of Object.getOwnPropertyNames(props)) {\n let keyIndex = len;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].includes(propName)) {\n keyIndex = i;\n break;\n }\n }\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n isDefaultDesc ? objects[keyIndex][propName] = desc.value : Object.defineProperty(objects[keyIndex], propName, desc);\n }\n return objects;\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) ? untrack(() => {\n if (IS_DEV) ;\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }) : \"\");\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(() => prevFunc() ? undefined : mp.when, undefined, undefined);\n const condition = mp.keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(() => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n })) : child;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.s !== 1) p = ref;else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }, err => {\n error = err;\n set();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createCliRenderer } from '@opentui/core';\nimport { render } from '@opentui/solid';\nimport { App } from './App.js';\n\nlet isRunning = true;\nlet renderer: Awaited<ReturnType<typeof createCliRenderer>> | null = null;\n\nexport function exitTUI(code = 0): void {\n if (!isRunning) return;\n isRunning = false;\n\n try {\n if (renderer && 'dispose' in renderer) {\n (renderer as { dispose?: () => void }).dispose?.();\n }\n } catch {}\n\n try {\n process.stdout.write('\\x1b[?1049l\\x1b[?25h\\x1b[0m\\x1b[H\\x1b[2J');\n } catch {}\n\n setImmediate(() => process.exit(code));\n}\n\nexport async function startTUI(): Promise<never> {\n process.on('SIGINT', () => exitTUI(0));\n process.on('SIGTERM', () => exitTUI(0));\n process.on('uncaughtException', (err) => {\n console.error('TUI Error:', err.message);\n exitTUI(1);\n });\n process.on('unhandledRejection', (err) => {\n console.error('TUI Error:', err);\n exitTUI(1);\n });\n\n renderer = await createCliRenderer({\n exitOnCtrlC: false,\n useMouse: true,\n enableMouseMovement: true,\n });\n\n try {\n await render(() => <App onExit={exitTUI} />, renderer);\n } catch (err) {\n console.error('Render failed:', err);\n exitTUI(1);\n }\n\n return new Promise(() => {});\n}\n\nexport { type Screen } from './state/types.js';\nexport { App } from './App.js';\nexport * from './theme/index.js';\nexport * from './state/index.js';\nexport * from './utils/index.js';\nexport * from './components/index.js';\nexport * from './screens/index.js';\n","import { createSignal, createEffect, onCleanup, Show, Switch, Match } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { execFile } from 'node:child_process';\nimport { type Screen, NAV_KEYS } from './state/types.js';\nimport { Splash } from './components/Splash.js';\nimport { Sidebar } from './components/Sidebar.js';\nimport { StatusBar } from './components/StatusBar.js';\nimport {\n Home, Browse, Installed, Marketplace, Settings, Recommend,\n Translate, Context, Memory, Team, Plugins, Methodology,\n Plan, Workflow, Execute, History, Sync, Help, Mesh, Message,\n} from './screens/index.js';\n\nconst DOCS_URL = 'https://agenstskills.com/docs';\n\nfunction openUrl(url: string): void {\n if (process.platform === 'win32') {\n execFile('cmd', ['/c', 'start', '', url]);\n } else {\n const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';\n execFile(cmd, [url]);\n }\n}\n\ninterface AppProps {\n onExit?: (code?: number) => void;\n}\n\nexport function App(props: AppProps) {\n const [showSplash, setShowSplash] = createSignal(true);\n const [currentScreen, setCurrentScreen] = createSignal<Screen>('home');\n const [showSidebar, setShowSidebar] = createSignal(true);\n const [dimensions, setDimensions] = createSignal({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n\n createEffect(() => {\n const handleResize = () => {\n setDimensions({\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n });\n };\n process.stdout.on('resize', handleResize);\n onCleanup(() => {\n process.stdout.off('resize', handleResize);\n });\n });\n\n const cols = () => dimensions().cols;\n const rows = () => dimensions().rows;\n const sidebarVisible = () => showSidebar() && cols() >= 80;\n const sidebarWidth = () => {\n if (!sidebarVisible()) return 0;\n if (cols() >= 100) return 24;\n return 18;\n };\n const statusBarHeight = 2;\n const contentHeight = () => rows() - statusBarHeight;\n\n const handleNavigate = (newScreen: Screen) => {\n setCurrentScreen(newScreen);\n };\n\n const handleSplashComplete = () => {\n setShowSplash(false);\n };\n\n useKeyboard((key: { name?: string; ctrl?: boolean; sequence?: string }) => {\n if (showSplash()) {\n setShowSplash(false);\n return;\n }\n\n if (key.name === 'q' || (key.ctrl && key.name === 'c')) {\n props.onExit ? props.onExit(0) : process.exit(0);\n return;\n }\n\n if (key.name === 'd') {\n openUrl(DOCS_URL);\n return;\n }\n\n if (key.sequence === '\\\\') {\n setShowSidebar((v) => !v);\n return;\n }\n\n const targetScreen = NAV_KEYS[key.name || ''];\n if (targetScreen) {\n setCurrentScreen(targetScreen);\n }\n\n if (key.name === 'escape' && currentScreen() !== 'home') {\n setCurrentScreen('home');\n }\n });\n\n const screenProps = () => ({\n onNavigate: handleNavigate,\n cols: Math.max(1, cols() - sidebarWidth() - 2),\n rows: Math.max(1, contentHeight() - 1),\n });\n\n return (\n <Show when={!showSplash()} fallback={<Splash onComplete={handleSplashComplete} duration={3000} />}>\n <box flexDirection=\"column\" height={rows()}>\n <box flexDirection=\"row\" height={contentHeight()}>\n <Show when={sidebarVisible()}>\n <Sidebar\n screen={currentScreen()}\n onNavigate={handleNavigate}\n />\n </Show>\n\n <box flexDirection=\"column\" flexGrow={1} paddingX={1}>\n <Switch fallback={<Home {...screenProps()} />}>\n <Match when={currentScreen() === 'home'}><Home {...screenProps()} /></Match>\n <Match when={currentScreen() === 'browse'}><Browse {...screenProps()} /></Match>\n <Match when={currentScreen() === 'installed'}><Installed {...screenProps()} /></Match>\n <Match when={currentScreen() === 'marketplace'}><Marketplace {...screenProps()} /></Match>\n <Match when={currentScreen() === 'settings'}><Settings {...screenProps()} /></Match>\n <Match when={currentScreen() === 'recommend'}><Recommend {...screenProps()} /></Match>\n <Match when={currentScreen() === 'translate'}><Translate {...screenProps()} /></Match>\n <Match when={currentScreen() === 'context'}><Context {...screenProps()} /></Match>\n <Match when={currentScreen() === 'memory'}><Memory {...screenProps()} /></Match>\n <Match when={currentScreen() === 'team'}><Team {...screenProps()} /></Match>\n <Match when={currentScreen() === 'plugins'}><Plugins {...screenProps()} /></Match>\n <Match when={currentScreen() === 'methodology'}><Methodology {...screenProps()} /></Match>\n <Match when={currentScreen() === 'plan'}><Plan {...screenProps()} /></Match>\n <Match when={currentScreen() === 'workflow'}><Workflow {...screenProps()} /></Match>\n <Match when={currentScreen() === 'execute'}><Execute {...screenProps()} /></Match>\n <Match when={currentScreen() === 'history'}><History {...screenProps()} /></Match>\n <Match when={currentScreen() === 'sync'}><Sync {...screenProps()} /></Match>\n <Match when={currentScreen() === 'help'}><Help {...screenProps()} /></Match>\n <Match when={currentScreen() === 'mesh'}><Mesh {...screenProps()} /></Match>\n <Match when={currentScreen() === 'message'}><Message {...screenProps()} /></Match>\n </Switch>\n </box>\n </box>\n\n <StatusBar />\n </box>\n </Show>\n );\n}\n\nexport { type Screen };\n","export interface SkillItem {\n name: string;\n description?: string;\n source?: string;\n installs?: number;\n enabled?: boolean;\n quality?: number;\n grade?: string;\n warnings?: number;\n}\n\nexport interface RepoInfo {\n source: string;\n name: string;\n}\n\nexport interface FetchedSkill {\n name: string;\n source: string;\n repoName: string;\n description?: string;\n}\n\nexport type Screen =\n | 'home' | 'browse' | 'installed' | 'marketplace' | 'recommend'\n | 'translate' | 'context' | 'memory' | 'team' | 'plugins'\n | 'methodology' | 'plan' | 'workflow' | 'execute' | 'history'\n | 'sync' | 'settings' | 'help' | 'mesh' | 'message';\n\nexport const NAV_KEYS: Record<string, Screen> = {\n h: 'home', m: 'marketplace', b: 'browse', w: 'workflow',\n x: 'execute', y: 'history', r: 'recommend', t: 'translate',\n c: 'context', e: 'memory', i: 'installed', s: 'sync',\n a: 'team', p: 'plugins', o: 'methodology', n: 'plan',\n ',': 'settings', '/': 'help', 'g': 'mesh', 'j': 'message',\n} as const;\n\nexport const STATUS_BAR_SHORTCUTS = 'b browse m market i installed s sync / help q quit';\n\nexport interface ScreenMeta {\n key: string;\n label: string;\n screen: Screen;\n}\n\nexport interface SidebarSection {\n section: string;\n items: ScreenMeta[];\n}\n\nexport const SIDEBAR_NAV: SidebarSection[] = [\n {\n section: 'Discover',\n items: [\n { key: 'h', label: 'Home', screen: 'home' },\n { key: 'b', label: 'Browse', screen: 'browse' },\n { key: 'm', label: 'Market', screen: 'marketplace' },\n { key: 'r', label: 'Recommend', screen: 'recommend' },\n ],\n },\n {\n section: 'Manage',\n items: [\n { key: 'i', label: 'Installed', screen: 'installed' },\n { key: 's', label: 'Sync', screen: 'sync' },\n { key: 't', label: 'Translate', screen: 'translate' },\n ],\n },\n {\n section: 'Execute',\n items: [\n { key: 'w', label: 'Workflows', screen: 'workflow' },\n { key: 'x', label: 'Execute', screen: 'execute' },\n { key: 'n', label: 'Plan', screen: 'plan' },\n ],\n },\n {\n section: 'Team',\n items: [\n { key: 'a', label: 'Team', screen: 'team' },\n { key: 'c', label: 'Context', screen: 'context' },\n { key: 'e', label: 'Memory', screen: 'memory' },\n { key: 'g', label: 'Mesh', screen: 'mesh' },\n { key: 'j', label: 'Messages', screen: 'message' },\n ],\n },\n {\n section: 'More',\n items: [\n { key: 'p', label: 'Plugins', screen: 'plugins' },\n { key: 'o', label: 'Methods', screen: 'methodology' },\n { key: ',', label: 'Settings', screen: 'settings' },\n ],\n },\n];\n","/**\n * Monochromatic color palette for SkillKit TUI\n * Inspired by OpenSync's elegant dark theme\n */\n\nexport const colors = {\n // Base (monochromatic grays)\n background: '#0d0d0d',\n surface: '#1a1a1a',\n surfaceHover: '#262626',\n border: '#333333',\n borderDim: '#1f1f1f',\n\n // Text hierarchy\n text: '#ffffff',\n textSecondary: '#a0a0a0',\n textMuted: '#666666',\n\n // Accent (single brand color - vibrant green)\n accent: '#00ff88',\n accentDim: '#00cc6a',\n\n // Status colors (subtle variations)\n success: '#22c55e',\n warning: '#eab308',\n error: '#ef4444',\n info: '#3b82f6',\n\n // Feature-specific accent colors (for colored keywords)\n sync: '#00d9ff', // cyan\n browse: '#22c55e', // green\n recommend: '#fbbf24', // yellow/gold\n translate: '#a855f7', // purple\n workflow: '#3b82f6', // blue\n team: '#ffffff', // white\n private: '#ef4444', // red\n tag: '#fbbf24', // yellow\n export: '#22c55e', // green\n delete: '#ef4444', // red\n} as const;\n\nexport type ColorName = keyof typeof colors;\nexport type ColorValue = (typeof colors)[ColorName];\n\n/**\n * Get a color value by name\n */\nexport function getColor(name: ColorName): ColorValue {\n return colors[name];\n}\n\n/**\n * Terminal-safe color names for OpenTUI\n * Maps our design system colors to terminal-compatible values\n */\nexport const terminalColors = {\n background: 'black',\n surface: 'black',\n text: 'white',\n textSecondary: 'gray',\n textMuted: 'gray',\n accent: 'green',\n success: 'green',\n warning: 'yellow',\n error: 'red',\n info: 'blue',\n sync: 'cyan',\n browse: 'green',\n recommend: 'yellow',\n translate: 'magenta',\n workflow: 'blue',\n team: 'white',\n border: 'gray',\n} as const;\n","/**\n * Helper utilities for agent and skill operations\n */\nimport {\n loadConfig,\n getSearchDirs as coreGetSearchDirs,\n getInstallDir as coreGetInstallDir,\n saveSkillMetadata as coreSaveSkillMetadata,\n} from '@skillkit/core';\nimport { getAdapter } from '@skillkit/agents';\nimport type { AgentType, AgentAdapterInfo, SkillMetadata } from '@skillkit/core';\nimport { readFileSync } from 'node:fs';\nimport { join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Get search directories for skills based on agent type\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Array of directories to search for skills\n */\nexport function getSearchDirs(agentType?: AgentType): string[] {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetSearchDirs(adapterInfo);\n}\n\n/**\n * Get installation directory for skills\n * @param global - Whether to get global or project-local directory\n * @param agentType - Optional agent type (defaults to configured agent)\n * @returns Installation directory path\n */\nexport function getInstallDir(global = false, agentType?: AgentType): string {\n const type = agentType || loadConfig().agent;\n const adapter = getAdapter(type);\n const adapterInfo: AgentAdapterInfo = {\n type: adapter.type,\n name: adapter.name,\n skillsDir: adapter.skillsDir,\n configFile: adapter.configFile,\n };\n return coreGetInstallDir(adapterInfo, global);\n}\n\n/**\n * Save skill metadata to a skill directory\n * @param skillDir - Directory containing the skill\n * @param metadata - Metadata to save\n */\nexport function saveSkillMetadata(\n skillDir: string,\n metadata: SkillMetadata\n): void {\n coreSaveSkillMetadata(skillDir, metadata);\n}\n\n/**\n * Get version from package.json\n * @returns Version string\n */\nexport function getVersion(): string {\n try {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const paths = [\n join(__dirname, '..', 'package.json'),\n join(__dirname, '..', '..', 'package.json'),\n join(__dirname, '..', '..', '..', 'package.json'),\n ];\n for (const packagePath of paths) {\n try {\n const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));\n if (packageJson.name === '@skillkit/tui' || packageJson.name === 'skillkit') {\n return packageJson.version || '1.8.0';\n }\n } catch {}\n }\n return '1.8.0';\n } catch {\n return '1.8.0';\n }\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\nconst LOGO_FRAMES = [\n [\n ' ',\n ' · · · · · · · · · · · · · · · ',\n ' ',\n ],\n [\n ' ',\n ' ━━━ ━ ━ ━ ━ ━ ━ ━ ━━━ ',\n ' ',\n ],\n [\n ' ┌──┐ ┬ ┌─ ┬ ┬ ┬ ┬ ┌─ ┬ ┌─┐ ',\n ' └──┐ │ │ │ │ │ │ │ │ │ ',\n ' └──┘ ┴ └─ ┴ ┴─┘ ┴─┘ ┴ └─ ┴ ┴ ',\n ],\n [\n ' ╔═╗ ╦╔═ ╦ ╦ ╦ ╦╔═ ╦╔╦╗ ',\n ' ╚═╗ ╠╩╗ ║ ║ ║ ╠╩╗ ║ ║ ',\n ' ╚═╝ ╩ ╩ ╩ ╩═╝ ╩═╝ ╩ ╩ ╩ ╩ ',\n ],\n [\n ' ███████╗██╗ ██╗██╗██╗ ██╗ ██╗ ██╗██╗████████╗',\n ' ██╔════╝██║ ██╔╝██║██║ ██║ ██║ ██╔╝██║╚══██╔══╝',\n ' ███████╗█████╔╝ ██║██║ ██║ █████╔╝ ██║ ██║ ',\n ' ╚════██║██╔═██╗ ██║██║ ██║ ██╔═██╗ ██║ ██║ ',\n ' ███████║██║ ██╗██║███████╗███████╗██║ ██╗██║ ██║ ',\n ' ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ',\n ],\n];\n\nconst LOGO_SMALL = [\n ' ╔═╗╦╔═╦╦ ╦ ╦╔═╦╔╦╗ ',\n ' ╚═╗╠╩╗║║ ║ ╠╩╗║ ║ ',\n ' ╚═╝╩ ╩╩╩═╝╩═╝╩ ╩╩ ╩ ',\n];\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nconst PROGRESS = {\n empty: '░',\n filled: '█',\n head: '▓',\n};\n\nconst PHASES = [\n { message: 'Initializing', detail: 'skill engine' },\n { message: 'Connecting', detail: 'agent network' },\n { message: 'Loading', detail: 'skill manifests' },\n { message: 'Syncing', detail: 'configurations' },\n { message: 'Ready', detail: '' },\n];\n\ninterface SplashProps {\n onComplete: () => void;\n duration?: number;\n}\n\nexport function Splash(props: SplashProps) {\n const [frame, setFrame] = createSignal(0);\n const [progress, setProgress] = createSignal(0);\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const [phase, setPhase] = createSignal(0);\n const [fadeIn, setFadeIn] = createSignal(0);\n const [particles, setParticles] = createSignal<string[]>([]);\n\n const version = createMemo(() => getVersion());\n const cols = process.stdout.columns || 80;\n const rows = process.stdout.rows || 24;\n const useSmallLogo = cols < 70;\n\n const currentLogo = () => {\n return useSmallLogo ? LOGO_SMALL : (LOGO_FRAMES[Math.min(frame(), 4)] || LOGO_FRAMES[4]);\n };\n\n const maxWidth = () => Math.max(...currentLogo().map((l) => l.length));\n\n const generateParticles = () => {\n const chars = ['·', '∙', '•', '○', '◦', '◌', '◍', '◎'];\n return Array(cols)\n .fill(0)\n .map(() => (Math.random() > 0.97 ? chars[Math.floor(Math.random() * chars.length)] : ' '))\n .join('');\n };\n\n createEffect(() => {\n if (frame() >= 4) return;\n const timer = setTimeout(() => setFrame((f) => f + 1), 200);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n if (fadeIn() >= 10) return;\n const timer = setTimeout(() => setFadeIn((f) => f + 1), 50);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setProgress((p) => {\n const newProgress = p + (Math.random() * 3 + 1);\n if (newProgress >= 100) {\n clearInterval(interval);\n return 100;\n }\n return newProgress;\n });\n }, 50);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const phaseProgress = progress() / 20;\n setPhase(Math.min(Math.floor(phaseProgress), PHASES.length - 1));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const interval = setInterval(() => {\n setParticles((prev) => {\n const newParticles = [...prev];\n if (newParticles.length > 3) newParticles.shift();\n newParticles.push(generateParticles());\n return newParticles;\n });\n }, 150);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const timer = setTimeout(props.onComplete, props.duration ?? 3500);\n onCleanup(() => clearTimeout(timer));\n });\n\n const pad = () => ' '.repeat(Math.max(0, Math.floor((cols - maxWidth()) / 2)));\n const progressWidth = Math.max(1, Math.min(40, cols - 20));\n const progressPad = ' '.repeat(Math.max(0, Math.floor((cols - progressWidth) / 2)));\n\n const filledWidth = () => Math.min(Math.floor((progress() / 100) * progressWidth), progressWidth);\n const emptyWidth = () => Math.max(0, progressWidth - filledWidth() - 1);\n const progressBar = () =>\n PROGRESS.filled.repeat(filledWidth()) +\n (filledWidth() < progressWidth ? PROGRESS.head : '') +\n PROGRESS.empty.repeat(emptyWidth());\n\n const currentPhase = () => PHASES[phase()];\n\n return (\n <box flexDirection=\"column\" height={rows}>\n <text fg={terminalColors.textMuted}>{particles()[0] || ''}</text>\n\n <box flexGrow={1} />\n\n <box flexDirection=\"column\" alignItems=\"center\">\n <For each={currentLogo()}>\n {(line, idx) => (\n <text fg={frame() >= 4 ? terminalColors.accent : terminalColors.textMuted}>\n {frame() >= 4 ? (\n <b>\n {pad()}\n {line}\n </b>\n ) : (\n <>\n {pad()}\n {line}\n </>\n )}\n </text>\n )}\n </For>\n </box>\n\n <text> </text>\n <Show when={fadeIn() > 3}>\n <text fg={terminalColors.textSecondary}>\n {pad()}\n {' '}universal skills for ai coding agents\n </text>\n </Show>\n\n <Show when={fadeIn() > 5}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {pad()}\n {' '}v{version()}\n </text>\n </Show>\n\n <text> </text>\n <text> </text>\n\n <Show when={fadeIn() > 7}>\n <box flexDirection=\"column\" alignItems=\"center\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>\n {progressPad}\n {SPINNER[spinnerFrame()]}{' '}\n </text>\n <text fg={terminalColors.text}>\n <b>{currentPhase().message}</b>\n </text>\n <Show when={currentPhase().detail}>\n <text fg={terminalColors.textMuted}> {currentPhase().detail}</text>\n </Show>\n </box>\n\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{progressPad}[</text>\n <text fg={terminalColors.accent}>{progressBar()}</text>\n <text fg={terminalColors.textMuted}>]</text>\n <text fg={terminalColors.textSecondary}> {Math.floor(progress())}%</text>\n </box>\n </box>\n </Show>\n\n <box flexGrow={1} />\n\n <box flexDirection=\"column\" alignItems=\"center\">\n <text fg={terminalColors.textMuted}>\n {progressPad}\n {' '}press any key to skip\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>{particles()[1] || ''}</text>\n </box>\n </box>\n );\n}\n","/**\n * Unicode symbols and agent logos for SkillKit TUI\n * Monochromatic design system for terminal display\n */\n\n/**\n * Agent logo definitions with monochromatic icons\n */\nexport interface AgentLogo {\n icon: string;\n name: string;\n company: string;\n}\n\n/**\n * All 32 supported agents with monochromatic Unicode logos\n */\nexport const AGENT_LOGOS: Record<string, AgentLogo> = {\n 'claude-code': { icon: '⟁', name: 'Claude Code', company: 'Anthropic' },\n 'cursor': { icon: '◫', name: 'Cursor', company: 'Anysphere' },\n 'codex': { icon: '◎', name: 'Codex CLI', company: 'OpenAI' },\n 'gemini-cli': { icon: '✦', name: 'Gemini CLI', company: 'Google' },\n 'opencode': { icon: '⬡', name: 'OpenCode', company: 'SST' },\n 'github-copilot': { icon: '◈', name: 'Copilot', company: 'GitHub' },\n 'windsurf': { icon: '≋', name: 'Windsurf', company: 'Codeium' },\n 'droid': { icon: '▣', name: 'Droid', company: 'Factory' },\n 'goose': { icon: '◇', name: 'Goose', company: 'Block' },\n 'amp': { icon: '△', name: 'Amp', company: 'Sourcegraph' },\n 'kilo': { icon: '◉', name: 'Kilo Code', company: '' },\n 'kiro-cli': { icon: '⬢', name: 'Kiro', company: 'AWS' },\n 'roo': { icon: '⊙', name: 'Roo Code', company: '' },\n 'trae': { icon: '◆', name: 'Trae', company: 'ByteDance' },\n 'antigravity': { icon: '⊛', name: 'Antigravity', company: '' },\n 'clawdbot': { icon: '⟐', name: 'Clawdbot', company: '' },\n 'cline': { icon: '⊕', name: 'Cline', company: '' },\n 'codebuddy': { icon: '⊗', name: 'CodeBuddy', company: '' },\n 'commandcode': { icon: '⊘', name: 'CommandCode', company: '' },\n 'continue': { icon: '⊞', name: 'Continue', company: '' },\n 'crush': { icon: '⊟', name: 'Crush', company: '' },\n 'factory': { icon: '⊠', name: 'Factory', company: '' },\n 'mcpjam': { icon: '⊡', name: 'MCPJam', company: '' },\n 'mux': { icon: '⊢', name: 'Mux', company: '' },\n 'neovate': { icon: '⊣', name: 'Neovate', company: '' },\n 'openhands': { icon: '⊤', name: 'OpenHands', company: '' },\n 'pi': { icon: '⊥', name: 'Pi', company: '' },\n 'qoder': { icon: '⊦', name: 'Qoder', company: '' },\n 'qwen': { icon: '⊧', name: 'Qwen', company: 'Alibaba' },\n 'vercel': { icon: '▲', name: 'Vercel', company: 'Vercel' },\n 'zencoder': { icon: '⊩', name: 'Zencoder', company: '' },\n 'universal': { icon: '●', name: 'Universal', company: '' },\n} as const;\n\n/**\n * UI symbols for status and navigation\n */\nexport const symbols = {\n // Navigation\n pointer: '▸',\n pointerInactive: ' ',\n bullet: '●',\n bulletEmpty: '○',\n\n // Status\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n active: '●',\n synced: '●',\n\n // Progress\n progressFilled: '█',\n progressEmpty: '░',\n\n // Spinner frames\n spinner: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] as const,\n\n // Arrows\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n\n // Decorative\n diamond: '◆',\n diamondEmpty: '◇',\n star: '★',\n starEmpty: '☆',\n\n // Box drawing\n horizontalLine: '─',\n verticalLine: '│',\n topLeft: '┌',\n topRight: '┐',\n bottomLeft: '└',\n bottomRight: '┘',\n\n // Brand\n brandIcon: '◆',\n} as const;\n\nexport type SymbolName = keyof typeof symbols;\n\n/**\n * Get agent logo by agent type ID\n */\nexport function getAgentLogo(agentType: string): AgentLogo | undefined {\n return AGENT_LOGOS[agentType];\n}\n\n/**\n * Get all agent types\n */\nexport function getAgentTypes(): string[] {\n return Object.keys(AGENT_LOGOS);\n}\n\n/**\n * Get formatted agent display string (icon + name)\n */\nexport function formatAgentDisplay(agentType: string): string {\n const logo = AGENT_LOGOS[agentType];\n if (!logo) return agentType;\n return `${logo.icon} ${logo.name}`;\n}\n","import { For, Show } from 'solid-js';\nimport { type Screen, SIDEBAR_NAV } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface SidebarProps {\n screen: Screen;\n onNavigate: (screen: Screen) => void;\n}\n\nexport function Sidebar(props: SidebarProps) {\n const version = getVersion();\n\n return (\n <box flexDirection=\"column\" width={18} paddingRight={1}>\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b>\n </text>\n <text fg={terminalColors.textMuted}>v{version}</text>\n <text> </text>\n\n <For each={SIDEBAR_NAV}>\n {(nav, idx) => (\n <box flexDirection=\"column\">\n <Show when={idx() > 0}>\n <text> </text>\n </Show>\n <text fg={terminalColors.textMuted}>\n <i>{nav.section}</i>\n </text>\n <For each={nav.items}>\n {(item) => {\n const active = () => props.screen === item.screen;\n return (\n <text fg={active() ? terminalColors.accent : terminalColors.text}>\n {active() ? (\n <b>\n {symbols.pointer} {item.label}\n </b>\n ) : (\n <>\n {symbols.pointerInactive} {item.label}\n </>\n )}\n </text>\n );\n }}\n </For>\n </box>\n )}\n </For>\n\n <box flexGrow={1} />\n <text fg={terminalColors.textMuted}>{symbols.horizontalLine.repeat(14)}</text>\n <text fg={terminalColors.textMuted}>/ help q quit</text>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { STATUS_BAR_SHORTCUTS } from '../state/types.js';\n\ninterface StatusBarProps {\n message?: string;\n messageType?: 'info' | 'success' | 'error' | 'warning';\n shortcuts?: string;\n}\n\nexport function StatusBar(props: StatusBarProps) {\n const messageType = () => props.messageType ?? 'info';\n const shortcuts = () => props.shortcuts ?? STATUS_BAR_SHORTCUTS;\n\n const messageColors = {\n info: terminalColors.info,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n };\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{'\\u2500'.repeat(70)}</text>\n <Show when={props.message} fallback={<text fg={terminalColors.textMuted}>{shortcuts()}</text>}>\n <text fg={messageColors[messageType()]}>{props.message}</text>\n </Show>\n </box>\n );\n}\n","/**\n * Navigation state management for SkillKit TUI\n */\nimport type { Screen } from './types.js';\nimport { NAV_KEYS } from './types.js';\n\n/**\n * Navigation state\n */\nexport interface NavigationState {\n currentScreen: Screen;\n previousScreen: Screen | null;\n history: Screen[];\n}\n\n/**\n * Create initial navigation state\n */\nexport function createNavigationState(): NavigationState {\n return {\n currentScreen: 'home',\n previousScreen: null,\n history: ['home'],\n };\n}\n\n/**\n * Navigate to a new screen\n */\nexport function navigateTo(state: NavigationState, screen: Screen): NavigationState {\n if (state.currentScreen === screen) return state;\n\n return {\n currentScreen: screen,\n previousScreen: state.currentScreen,\n history: [...state.history, screen],\n };\n}\n\n/**\n * Go back to previous screen (or home)\n */\nexport function goBack(state: NavigationState): NavigationState {\n const previousScreen = state.previousScreen || 'home';\n return {\n currentScreen: previousScreen,\n previousScreen: state.history[state.history.length - 3] || null,\n history: state.history.slice(0, -1),\n };\n}\n\n/**\n * Get screen from key press\n */\nexport function getScreenFromKey(key: string): Screen | undefined {\n return NAV_KEYS[key];\n}\n\n/**\n * Check if a key is a navigation key\n */\nexport function isNavKey(key: string): boolean {\n return key in NAV_KEYS;\n}\n\nexport { NAV_KEYS };\n","/**\n * Skills state management for SkillKit TUI\n */\nimport { findAllSkills, evaluateSkillDirectory, getQualityGrade } from '@skillkit/core';\nimport { rmSync } from 'node:fs';\nimport { resolve, normalize } from 'node:path';\nimport { getSearchDirs } from '../utils/helpers.js';\nimport type { SkillItem } from './types.js';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Detailed skill info including path for translation\n */\nexport interface SkillWithDetails {\n name: string;\n description?: string;\n path: string;\n source?: string;\n enabled: boolean;\n}\n\n/**\n * Skills store state\n */\nexport interface SkillsState {\n skills: SkillItem[];\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial skills state\n */\nexport function createSkillsState(): SkillsState {\n return {\n skills: [],\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load installed skills\n * @param agentType - Optional agent type to load skills for\n * @returns Updated skills state\n */\nexport function loadSkills(agentType?: AgentType): SkillsState {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n const skillItems: SkillItem[] = foundSkills.map((s) => {\n const quality = evaluateSkillDirectory(s.path);\n return {\n name: s.name,\n description: s.description,\n source: s.metadata?.source,\n enabled: s.enabled,\n quality: quality?.overall,\n grade: quality ? getQualityGrade(quality.overall) : undefined,\n warnings: quality?.warnings.length,\n };\n });\n\n return {\n skills: skillItems,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n skills: [],\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load skills',\n };\n }\n}\n\n/**\n * Remove a skill by name\n * @param skillName - Name of the skill to remove\n * @param agentType - Optional agent type\n * @returns true if removed, false otherwise\n */\nexport function removeSkill(skillName: string, agentType?: AgentType): boolean {\n try {\n const searchDirs = getSearchDirs(agentType);\n const allSkills = findAllSkills(searchDirs);\n const skill = allSkills.find((s) => s.name === skillName);\n\n if (skill) {\n const normalizedPath = normalize(resolve(skill.path));\n const isWithinSearchDirs = searchDirs.some((dir) => {\n const normalizedDir = normalize(resolve(dir));\n return normalizedPath.startsWith(normalizedDir + '/') || normalizedPath === normalizedDir;\n });\n\n if (!isWithinSearchDirs) {\n return false;\n }\n\n rmSync(skill.path, { recursive: true, force: true });\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterSkills(skills: SkillItem[], query: string): SkillItem[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery) ||\n s.source?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Load skills with full details including path for translation\n * @param agentType - Optional agent type to load skills for\n * @returns Array of skills with path details\n */\nexport function loadSkillsWithDetails(agentType?: AgentType): SkillWithDetails[] {\n try {\n const searchDirs = getSearchDirs(agentType);\n const foundSkills = findAllSkills(searchDirs);\n\n return foundSkills.map((s) => ({\n name: s.name,\n description: s.description,\n path: s.path,\n source: s.metadata?.source,\n enabled: s.enabled,\n }));\n } catch {\n return [];\n }\n}\n","/**\n * Agent state management for SkillKit TUI\n */\nimport { loadConfig } from '@skillkit/core';\nimport { detectAgent, getAdapter, getAllAdapters } from '@skillkit/agents';\nimport type { AgentType } from '@skillkit/core';\n\n/**\n * Agent status information\n */\nexport interface AgentStatus {\n type: AgentType;\n name: string;\n detected: boolean;\n configured: boolean;\n}\n\n/**\n * Agents state\n */\nexport interface AgentsState {\n agents: AgentStatus[];\n currentAgent: AgentType;\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Create initial agents state\n */\nexport function createAgentsState(): AgentsState {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: true,\n error: null,\n };\n}\n\n/**\n * Load all agents with their detection status\n */\nexport async function loadAgents(): Promise<AgentsState> {\n try {\n const config = loadConfig();\n const currentAgent = config.agent || 'universal';\n const detectedAgent = await detectAgent();\n const allAdapters = getAllAdapters();\n\n const agents: AgentStatus[] = allAdapters.map((adapter) => ({\n type: adapter.type,\n name: adapter.name,\n detected: adapter.type === detectedAgent,\n configured: adapter.type === currentAgent,\n }));\n\n return {\n agents,\n currentAgent,\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n agents: [],\n currentAgent: 'universal',\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load agents',\n };\n }\n}\n\n/**\n * Get count of detected agents\n */\nexport function getDetectedAgentCount(state: AgentsState): number {\n return state.agents.filter((a) => a.detected).length;\n}\n\n/**\n * Get list of detected agents\n */\nexport function getDetectedAgents(state: AgentsState): AgentStatus[] {\n return state.agents.filter((a) => a.detected);\n}\n\n/**\n * Get agent adapter by type\n */\nexport function getAgentAdapter(type: AgentType) {\n return getAdapter(type);\n}\n\n/**\n * Total number of supported agents (derived from adapters)\n */\nexport const TOTAL_AGENTS = getAllAdapters().length;\n","/**\n * Marketplace state management for SkillKit TUI\n */\nimport { detectProvider, loadConfig, extractFrontmatter } from '@skillkit/core';\nimport { readFileSync, existsSync, rmSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { SkillItem, RepoInfo, FetchedSkill } from './types.js';\n\n/**\n * Default repos loaded from marketplace/sources.json (single source of truth)\n * Import at runtime to allow updates without code changes\n */\nimport sourcesData from '../../../../marketplace/sources.json' with { type: 'json' };\n\nexport const DEFAULT_REPOS: RepoInfo[] = sourcesData.sources.map((s: { source: string; name: string }) => ({\n source: s.source,\n name: s.name,\n}));\n\n/**\n * Marketplace state\n */\nexport interface MarketplaceState {\n allSkills: FetchedSkill[];\n filteredSkills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n currentRepo: string | null;\n fetchedRepos: Set<string>;\n failedRepos: string[];\n repos: RepoInfo[];\n}\n\n/**\n * Get marketplace repos from config or use defaults\n */\nexport function getMarketplaceRepos(): RepoInfo[] {\n try {\n const config = loadConfig();\n if (config.marketplaceSources?.length) {\n const configRepos: RepoInfo[] = config.marketplaceSources.map((source) => ({\n source,\n name: source.split('/').pop() || source,\n }));\n const existingSources = new Set(configRepos.map((r) => r.source));\n for (const repo of DEFAULT_REPOS) {\n if (!existingSources.has(repo.source)) {\n configRepos.push(repo);\n }\n }\n return configRepos;\n }\n } catch {\n // Config load failed, use defaults\n }\n return DEFAULT_REPOS;\n}\n\n/**\n * Create initial marketplace state\n */\nexport function createMarketplaceState(): MarketplaceState {\n return {\n allSkills: [],\n filteredSkills: [],\n loading: false,\n error: null,\n currentRepo: null,\n fetchedRepos: new Set(),\n failedRepos: [],\n repos: getMarketplaceRepos(),\n };\n}\n\n/**\n * Try to read skill description from frontmatter\n */\nexport function readSkillDescription(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (!existsSync(skillMdPath)) {\n return undefined;\n }\n try {\n const content = readFileSync(skillMdPath, 'utf-8');\n const frontmatter = extractFrontmatter(content);\n if (frontmatter && typeof frontmatter.description === 'string') {\n return frontmatter.description;\n }\n } catch {\n // Failed to read, return undefined\n }\n return undefined;\n}\n\n/**\n * Fetch skills from a single repository\n */\nexport async function fetchRepoSkills(\n source: string,\n repos: RepoInfo[]\n): Promise<{\n skills: FetchedSkill[];\n tempRoot?: string;\n error?: string;\n}> {\n try {\n const provider = detectProvider(source);\n if (!provider) {\n return { skills: [], error: `Could not detect provider for: ${source}` };\n }\n\n const result = await provider.clone(source, '', { depth: 1 });\n\n if (!result.success || !result.discoveredSkills) {\n return { skills: [], error: result.error || 'Failed to fetch skills' };\n }\n\n const repoName = repos.find((r) => r.source === source)?.name || source;\n const skills: FetchedSkill[] = result.discoveredSkills.map((skill) => ({\n name: skill.name,\n source: source,\n repoName: repoName,\n description: readSkillDescription(skill.path),\n }));\n\n return { skills, tempRoot: result.tempRoot };\n } catch (err) {\n return {\n skills: [],\n error: err instanceof Error ? err.message : 'Failed to fetch repository',\n };\n }\n}\n\n/**\n * Clean up temp directory from fetch\n */\nexport function cleanupTempRoot(tempRoot: string): void {\n try {\n rmSync(tempRoot, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n}\n\n/**\n * Filter skills by search query\n */\nexport function filterMarketplaceSkills(\n skills: FetchedSkill[],\n query: string\n): FetchedSkill[] {\n if (!query.trim()) return skills;\n\n const lowerQuery = query.toLowerCase();\n return skills.filter(\n (s) =>\n s.name.toLowerCase().includes(lowerQuery) ||\n s.source.toLowerCase().includes(lowerQuery) ||\n s.repoName.toLowerCase().includes(lowerQuery) ||\n s.description?.toLowerCase().includes(lowerQuery)\n );\n}\n\n/**\n * Convert fetched skills to skill items for display\n */\nexport function toSkillItems(skills: FetchedSkill[]): SkillItem[] {\n return skills.map((s) => ({\n name: s.name,\n description: s.description || s.repoName,\n source: s.source,\n }));\n}\n\n/**\n * Sort skills alphabetically by name\n */\nexport function sortSkillsByName(skills: FetchedSkill[]): FetchedSkill[] {\n return [...skills].sort((a, b) => a.name.localeCompare(b.name));\n}\n","{\n \"$schema\": \"./sources-schema.json\",\n \"version\": 1,\n \"updatedAt\": \"2026-01-26\",\n \"description\": \"Curated skill repository sources - THE SINGLE SOURCE OF TRUTH\",\n \"sources\": [\n { \"source\": \"anthropics/skills\", \"name\": \"Anthropic Official\", \"official\": true },\n { \"source\": \"vercel-labs/agent-skills\", \"name\": \"Vercel Labs\", \"official\": true },\n { \"source\": \"expo/skills\", \"name\": \"Expo / React Native\", \"official\": true },\n { \"source\": \"remotion-dev/skills\", \"name\": \"Remotion Video\", \"official\": true },\n { \"source\": \"supabase/agent-skills\", \"name\": \"Supabase\", \"official\": true },\n { \"source\": \"stripe/ai\", \"name\": \"Stripe Payments\", \"official\": true },\n { \"source\": \"ComposioHQ/awesome-claude-skills\", \"name\": \"Composio Awesome\" },\n { \"source\": \"travisvn/awesome-claude-skills\", \"name\": \"Travis Awesome\" },\n { \"source\": \"mhattingpete/claude-skills-marketplace\", \"name\": \"Skills Marketplace\" },\n { \"source\": \"coreyhaines31/marketingskills\", \"name\": \"Marketing Skills\" },\n { \"source\": \"obra/superpowers\", \"name\": \"Superpowers TDD\" },\n { \"source\": \"softaworks/agent-toolkit\", \"name\": \"Softaworks Toolkit\" },\n { \"source\": \"wshobson/agents\", \"name\": \"Dev Patterns\" },\n { \"source\": \"langgenius/dify\", \"name\": \"Dify Frontend\" },\n { \"source\": \"trailofbits/skills\", \"name\": \"Trail of Bits Security\" },\n { \"source\": \"better-auth/skills\", \"name\": \"Better Auth\" },\n { \"source\": \"onmax/nuxt-skills\", \"name\": \"Nuxt / Vue\" },\n { \"source\": \"hyf0/vue-skills\", \"name\": \"Vue Best Practices\" },\n { \"source\": \"jezweb/claude-skills\", \"name\": \"Cloudflare / TanStack\" },\n { \"source\": \"elysiajs/skills\", \"name\": \"ElysiaJS / Bun\" },\n { \"source\": \"kadajett/agent-nestjs-skills\", \"name\": \"NestJS\" },\n { \"source\": \"callstackincubator/agent-skills\", \"name\": \"React Native\" },\n { \"source\": \"cloudai-x/threejs-skills\", \"name\": \"Three.js\" },\n { \"source\": \"emalorenzo/three-agent-skills\", \"name\": \"Three.js Advanced\" },\n { \"source\": \"dimillian/skills\", \"name\": \"SwiftUI iOS\" },\n { \"source\": \"waynesutton/convexskills\", \"name\": \"Convex Backend\" },\n { \"source\": \"kepano/obsidian-skills\", \"name\": \"Obsidian Notes\" },\n { \"source\": \"jimliu/baoyu-skills\", \"name\": \"Baoyu Tools\" },\n { \"source\": \"giuseppe-trisciuoglio/developer-kit\", \"name\": \"Shadcn / Radix\" },\n { \"source\": \"openrouterteam/agent-skills\", \"name\": \"OpenRouter SDK\" },\n { \"source\": \"intellectronica/agent-skills\", \"name\": \"Context7\" }\n ]\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { type Screen, loadSkills, TOTAL_AGENTS } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HomeProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst FEATURES = [\n { key: 'Sync', color: terminalColors.sync, desc: 'share across agents' },\n { key: 'Browse', color: terminalColors.browse, desc: 'discover skills' },\n { key: 'Recommend', color: terminalColors.recommend, desc: 'AI suggestions' },\n { key: 'Translate', color: terminalColors.translate, desc: 'convert formats' },\n { key: 'Workflow', color: terminalColors.workflow, desc: 'automate chains' },\n { key: 'Team', color: terminalColors.text, desc: 'collaborate' },\n];\n\nexport function Home(props: HomeProps) {\n const [animPhase, setAnimPhase] = createSignal(0);\n const [stats, setStats] = createSignal({ skills: 0, agents: TOTAL_AGENTS, synced: 0 });\n const [detectedAgents, setDetectedAgents] = createSignal<string[]>([]);\n\n const cols = () => props.cols ?? 80;\n const version = getVersion();\n const isCompact = () => cols() < 70;\n const isNarrow = () => cols() < 50;\n const contentWidth = () => Math.min(cols() - 4, 55);\n const line = () => '─'.repeat(contentWidth());\n\n createEffect(() => {\n if (animPhase() >= 5) return;\n const timer = setTimeout(() => setAnimPhase((p) => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n const skillsData = loadSkills();\n setStats({\n skills: skillsData.skills.length,\n agents: TOTAL_AGENTS,\n synced: Math.min(skillsData.skills.length, 3),\n });\n setDetectedAgents(['claude-code', 'cursor', 'github-copilot']);\n });\n\n const visibleAgents = createMemo(() => {\n const allAgents = Object.entries(AGENT_LOGOS);\n const perRow = isNarrow() || isCompact() ? 2 : 3;\n const maxAgents = isNarrow() ? 4 : isCompact() ? 6 : 9;\n return {\n agents: allAgents.slice(0, maxAgents),\n perRow,\n remaining: allAgents.length - maxAgents,\n };\n });\n\n const getAgentWidth = () => {\n if (isNarrow()) return 22;\n if (isCompact()) return 26;\n return 18;\n };\n\n const agentRows = createMemo(() => {\n const { agents, perRow } = visibleAgents();\n const rows: typeof agents[] = [];\n for (let i = 0; i < agents.length; i += perRow) {\n rows.push(agents.slice(i, i + perRow));\n }\n return rows;\n });\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>\n {symbols.brandIcon} skillkit\n </text>\n <text fg={terminalColors.textMuted}> v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>universal skills for ai coding agents</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n <box flexDirection=\"row\">\n <box width={14}>\n <text fg={terminalColors.accent}>{stats().skills}</text>\n </box>\n <box width={14}>\n <text fg={terminalColors.text}>{stats().agents}</text>\n </box>\n <box width={14}>\n <text fg={terminalColors.text}>{stats().synced}</text>\n </box>\n </box>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted} width={14}>\n skills\n </text>\n <text fg={terminalColors.textMuted} width={14}>\n agents\n </text>\n <text fg={terminalColors.textMuted} width={14}>\n synced\n </text>\n </box>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 3}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Works with</text>\n <text> </text>\n <For each={agentRows()}>\n {(row) => (\n <box flexDirection=\"row\">\n <For each={row}>\n {([type, agent]) => {\n const isDetected = () => detectedAgents().includes(type);\n return (\n <box width={getAgentWidth()} flexDirection=\"row\">\n <text fg={terminalColors.text}>\n {agent.icon} {agent.name}{' '}\n </text>\n <text fg={isDetected() ? terminalColors.accent : terminalColors.textMuted}>\n {isDetected() ? '●' : '○'}\n </text>\n </box>\n );\n }}\n </For>\n </box>\n )}\n </For>\n <Show when={visibleAgents().remaining > 0}>\n <text fg={terminalColors.textMuted}>+{visibleAgents().remaining} more</text>\n </Show>\n <text> </text>\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 4}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Features</text>\n <text> </text>\n <For each={FEATURES}>\n {(feat) => (\n <box flexDirection=\"row\">\n <text fg={feat.color} width={12}>\n {' '}\n {feat.key}\n </text>\n <text fg={terminalColors.textMuted}>{feat.desc}</text>\n </box>\n )}\n </For>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 5}>\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>{line()}</text>\n <text fg={terminalColors.textMuted}>\n {isCompact()\n ? 'b browse m market / help q quit'\n : 'b browse m market i installed / help q quit'}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface HeaderProps {\n title: string;\n subtitle?: string;\n count?: number;\n badge?: string;\n icon?: string;\n}\n\nexport function Header(props: HeaderProps) {\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\" gap={2}>\n <text fg={terminalColors.text}>\n <b>\n {props.icon && `${props.icon} `}\n {props.title}\n </b>\n </text>\n <Show when={props.count !== undefined}>\n <text fg={terminalColors.textMuted}>({props.count})</text>\n </Show>\n <Show when={props.badge}>\n <text fg={terminalColors.accent}>[{props.badge}]</text>\n </Show>\n </box>\n <Show when={props.subtitle}>\n <text fg={terminalColors.textSecondary}>{props.subtitle}</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface SpinnerProps {\n label?: string;\n color?: keyof typeof terminalColors;\n}\n\nexport function Spinner(props: SpinnerProps) {\n const [frame, setFrame] = createSignal(0);\n\n createEffect(() => {\n const interval = setInterval(() => {\n setFrame((f) => (f + 1) % symbols.spinner.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n const color = () => props.color ?? 'accent';\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text fg={terminalColors[color()]}>{symbols.spinner[frame()]}</text>\n <Show when={props.label}>\n <text fg={terminalColors.text}>{props.label}</text>\n </Show>\n </box>\n );\n}\n","/**\n * EmptyState Component\n * Consistent \"no data\" display\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface EmptyStateProps {\n icon?: string;\n title: string;\n description?: string;\n action?: {\n label: string;\n key?: string;\n };\n compact?: boolean;\n}\n\nexport function EmptyState(props: EmptyStateProps) {\n const compact = () => props.compact ?? false;\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <Show when={props.icon}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>\n {props.icon}\n </text>\n </box>\n </Show>\n\n <box marginBottom={1}>\n <text fg={terminalColors.textSecondary}>\n {props.title}\n </text>\n </box>\n\n <Show when={props.description}>\n <text fg={terminalColors.textMuted}>{props.description}</text>\n </Show>\n\n <Show when={props.action}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n <Show when={props.action!.key}>\n <text fg={terminalColors.accent}>{props.action!.key}</text>{' '}\n </Show>\n {props.action!.label}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n\ninterface LoadingStateProps {\n message?: string;\n compact?: boolean;\n}\n\nexport function LoadingState(props: LoadingStateProps) {\n const compact = () => props.compact ?? false;\n const message = () => props.message ?? 'Loading...';\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <text fg={terminalColors.accent}>⟳ {message()}</text>\n </box>\n );\n}\n\ninterface ErrorStateProps {\n title?: string;\n message: string;\n action?: {\n label: string;\n key?: string;\n };\n compact?: boolean;\n}\n\nexport function ErrorState(props: ErrorStateProps) {\n const compact = () => props.compact ?? false;\n const title = () => props.title ?? 'Error';\n\n return (\n <box flexDirection=\"column\" alignItems=\"center\" paddingY={compact() ? 1 : 3}>\n <box marginBottom={1}>\n <text fg={terminalColors.error}>\n ✗ {title()}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>{props.message}</text>\n\n <Show when={props.action}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n <Show when={props.action!.key}>\n <text fg={terminalColors.accent}>{props.action!.key}</text>{' '}\n </Show>\n {props.action!.label}\n </text>\n </box>\n </Show>\n </box>\n );\n}\n","/**\n * DetailPane Component\n * Right-side detail panel with animated slide-in\n */\n\nimport { Show, For, createSignal, createEffect, onCleanup, type JSX } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface DetailField {\n label: string;\n value: string | string[];\n color?: string;\n}\n\ninterface DetailPaneProps {\n title: string;\n subtitle?: string;\n icon?: string;\n fields?: DetailField[];\n content?: string;\n actions?: Array<{ key: string; label: string }>;\n width?: number;\n visible?: boolean;\n onClose?: () => void;\n children?: JSX.Element;\n}\n\nexport function DetailPane(props: DetailPaneProps) {\n const [slideProgress, setSlideProgress] = createSignal(0);\n const width = () => props.width ?? 30;\n const visible = () => props.visible ?? true;\n\n createEffect(() => {\n if (visible()) {\n let frame = 0;\n let timeoutId: ReturnType<typeof setTimeout>;\n const animate = () => {\n frame++;\n const progress = Math.min(frame / 10, 1);\n setSlideProgress(progress);\n if (progress < 1) {\n timeoutId = setTimeout(animate, 16);\n }\n };\n timeoutId = setTimeout(animate, 16);\n onCleanup(() => clearTimeout(timeoutId));\n } else {\n setSlideProgress(0);\n }\n });\n\n const effectiveWidth = () => Math.round(width() * slideProgress());\n\n return (\n <Show when={visible() && slideProgress() > 0}>\n <box\n flexDirection=\"column\"\n width={effectiveWidth()}\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n paddingY={1}\n >\n <box flexDirection=\"row\" marginBottom={1}>\n <Show when={props.icon}>\n <text fg={terminalColors.accent}>{props.icon} </text>\n </Show>\n <text fg={terminalColors.text}>\n <b>{props.title}</b>\n </text>\n <Show when={props.onClose}>\n <box onClick={() => props.onClose?.()}>\n <text fg={terminalColors.textMuted}> [x]</text>\n </box>\n </Show>\n </box>\n\n <Show when={props.subtitle}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>{props.subtitle}</text>\n </box>\n </Show>\n\n <Show when={props.fields && props.fields.length > 0}>\n <box flexDirection=\"column\" marginBottom={1}>\n <For each={props.fields}>\n {(field) => (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>{field.label}</text>\n <Show\n when={Array.isArray(field.value)}\n fallback={\n <text fg={field.color || terminalColors.text}>\n {field.value as string}\n </text>\n }\n >\n <For each={field.value as string[]}>\n {(val) => (\n <text fg={field.color || terminalColors.text}>• {val}</text>\n )}\n </For>\n </Show>\n </box>\n )}\n </For>\n </box>\n </Show>\n\n <Show when={props.content}>\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>{props.content}</text>\n </box>\n </Show>\n\n <Show when={props.children}>\n <box flexDirection=\"column\" marginBottom={1}>\n {props.children}\n </box>\n </Show>\n\n <Show when={props.actions && props.actions.length > 0}>\n <text fg={terminalColors.textMuted}>─────</text>\n <For each={props.actions}>\n {(action) => (\n <text fg={terminalColors.textMuted}>\n <text fg={terminalColors.accent}>{action.key}</text> {action.label}\n </text>\n )}\n </For>\n </Show>\n </box>\n </Show>\n );\n}\n","/**\n * StatusIndicator Component\n * Loading/success/error/warning indicator\n */\n\nimport { Show, createSignal, createEffect, onCleanup } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport type StatusType = 'loading' | 'success' | 'error' | 'warning' | 'info' | 'pending';\n\ninterface StatusIndicatorProps {\n status: StatusType;\n label?: string;\n showLabel?: boolean;\n size?: 'sm' | 'md' | 'lg';\n animated?: boolean;\n}\n\nconst STATUS_ICONS: Record<StatusType, string> = {\n loading: '⟳',\n success: '✓',\n error: '✗',\n warning: '⚠',\n info: 'ℹ',\n pending: '○',\n};\n\nconst STATUS_COLORS: Record<StatusType, string> = {\n loading: terminalColors.accent,\n success: terminalColors.success,\n error: terminalColors.error,\n warning: terminalColors.warning,\n info: terminalColors.info,\n pending: terminalColors.textMuted,\n};\n\nconst SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function StatusIndicator(props: StatusIndicatorProps) {\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const showLabel = () => props.showLabel ?? true;\n const animated = () => props.animated ?? true;\n\n createEffect(() => {\n if (props.status === 'loading' && animated()) {\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER_FRAMES.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n }\n });\n\n const icon = () => {\n if (props.status === 'loading' && animated()) {\n return SPINNER_FRAMES[spinnerFrame()];\n }\n return STATUS_ICONS[props.status];\n };\n\n const color = () => STATUS_COLORS[props.status];\n\n const defaultLabel = () => {\n switch (props.status) {\n case 'loading':\n return 'Loading...';\n case 'success':\n return 'Success';\n case 'error':\n return 'Error';\n case 'warning':\n return 'Warning';\n case 'info':\n return 'Info';\n case 'pending':\n return 'Pending';\n }\n };\n\n return (\n <box flexDirection=\"row\">\n <text fg={color()}>{icon()}</text>\n <Show when={showLabel()}>\n <text fg={color()}> {props.label ?? defaultLabel()}</text>\n </Show>\n </box>\n );\n}\n\ninterface InlineStatusProps {\n status: StatusType;\n compact?: boolean;\n}\n\nexport function InlineStatus(props: InlineStatusProps) {\n const icon = () => {\n if (props.status === 'loading' || props.status === 'pending') {\n return '○';\n }\n return '●';\n };\n\n return <text fg={STATUS_COLORS[props.status]}>{icon()}</text>;\n}\n\ninterface StatusBadgeProps {\n status: StatusType;\n label: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps) {\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>[</text>\n <text fg={STATUS_COLORS[props.status]}>{props.label}</text>\n <text fg={terminalColors.textMuted}>]</text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport {\n type Screen,\n DEFAULT_REPOS,\n getMarketplaceRepos,\n fetchRepoSkills,\n type FetchedSkill,\n type RepoInfo,\n} from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\n\ninterface BrowseProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface RepoWithSkills extends RepoInfo {\n skills: FetchedSkill[];\n loading: boolean;\n error: string | null;\n}\n\nexport function Browse(props: BrowseProps) {\n const [repos, setRepos] = createSignal<RepoWithSkills[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [searchMode, setSearchMode] = createSignal(false);\n const [showSkills, setShowSkills] = createSignal(false);\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const marketplaceRepos = getMarketplaceRepos();\n const reposWithState: RepoWithSkills[] = marketplaceRepos.map((repo) => ({\n ...repo,\n skills: [],\n loading: false,\n error: null,\n }));\n setRepos(reposWithState);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load repos');\n }\n\n setLoading(false);\n };\n\n const loadRepoSkills = async (index: number) => {\n const repo = repos()[index];\n if (!repo || repo.skills.length > 0 || repo.loading) return;\n\n setRepos((prev) =>\n prev.map((r, i) => (i === index ? { ...r, loading: true, error: null } : r))\n );\n\n try {\n const result = await fetchRepoSkills(repo.source, DEFAULT_REPOS);\n setRepos((prev) =>\n prev.map((r, i) =>\n i === index\n ? {\n ...r,\n skills: result.skills,\n loading: false,\n error: result.error || null,\n }\n : r\n )\n );\n } catch (err) {\n setRepos((prev) =>\n prev.map((r, i) =>\n i === index\n ? {\n ...r,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to fetch',\n }\n : r\n )\n );\n }\n };\n\n const filteredRepos = createMemo(() => {\n if (!searchQuery()) return repos();\n\n const query = searchQuery().toLowerCase();\n return repos().filter(\n (r) =>\n r.name.toLowerCase().includes(query) ||\n r.source.toLowerCase().includes(query)\n );\n });\n\n const maxVisible = () => Math.max(5, rows() - 12);\n const startIdx = () =>\n Math.max(\n 0,\n Math.min(\n selectedIndex() - Math.floor(maxVisible() / 2),\n filteredRepos().length - maxVisible()\n )\n );\n const visibleRepos = () =>\n filteredRepos().slice(startIdx(), startIdx() + maxVisible());\n\n const handleKeyNav = (delta: number) => {\n const max = filteredRepos().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n const handleOpenRepo = () => {\n const repo = filteredRepos()[selectedIndex()];\n if (repo) {\n const actualIndex = repos().findIndex(\n (r) => r.source === repo.source && r.name === repo.name\n );\n if (actualIndex !== -1) {\n loadRepoSkills(actualIndex);\n }\n setShowSkills(true);\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode()) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery((prev) => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (\n key.sequence &&\n key.sequence.length === 1 &&\n /[a-zA-Z0-9\\-_.]/.test(key.sequence)\n ) {\n setSearchQuery((prev) => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleOpenRepo();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showSkills()) setShowSkills(false);\n else if (searchQuery()) setSearchQuery('');\n else props.onNavigate('home');\n }\n });\n\n createEffect(() => {\n if (selectedIndex() >= filteredRepos().length && filteredRepos().length > 0) {\n setSelectedIndex(filteredRepos().length - 1);\n }\n });\n\n const selectedRepo = () => {\n const repoList = filteredRepos();\n if (repoList.length === 0) return null;\n return repoList[selectedIndex()];\n };\n\n const repoDetailFields = () => {\n const repo = selectedRepo();\n if (!repo) return [];\n\n return [\n { label: 'Name', value: repo.name },\n { label: 'Source', value: repo.source },\n { label: 'Skills', value: String(repo.skills.length) },\n {\n label: 'Status',\n value: repo.loading ? 'Loading...' : repo.error ? 'Error' : 'Ready',\n },\n ];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Browse\"\n subtitle=\"Explore skill repositories\"\n icon=\"⌕\"\n count={repos().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading repositories...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>/ </text>\n <text\n fg={\n searchQuery() || searchMode()\n ? terminalColors.text\n : terminalColors.textMuted\n }\n >\n {searchQuery() || (searchMode() ? '|' : 'type to filter...')}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show\n when={filteredRepos().length > 0}\n fallback={\n <EmptyState\n icon=\"⌕\"\n title=\"No repositories found\"\n description={\n searchQuery()\n ? 'Try a different search term'\n : 'No repositories configured'\n }\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Repositories</b>{' '}\n <text fg={terminalColors.textMuted}>\n ({filteredRepos().length})\n </text>\n </text>\n <text> </text>\n\n <For each={visibleRepos()}>\n {(repo, idx) => {\n const actualIdx = () => startIdx() + idx();\n const selected = () => actualIdx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {repo.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {repo.skills.length > 0\n ? `${repo.skills.length} skills`\n : repo.loading\n ? 'loading...'\n : ''}\n </text>\n <Show when={repo.error}>\n <text fg={terminalColors.error}>✗</text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={filteredRepos().length > maxVisible()}>\n <text fg={terminalColors.textMuted}>\n showing {startIdx() + 1}-\n {Math.min(startIdx() + maxVisible(), filteredRepos().length)} of{' '}\n {filteredRepos().length}\n </text>\n </Show>\n </Show>\n </box>\n\n <Show when={showSkills() && selectedRepo()}>\n <DetailPane\n title={selectedRepo()!.name}\n subtitle={`${selectedRepo()!.skills.length} skills`}\n icon=\"⌕\"\n fields={repoDetailFields()}\n actions={[\n { key: 'Enter', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showSkills()}\n onClose={() => setShowSkills(false)}\n >\n <Show when={selectedRepo()!.loading}>\n <StatusIndicator status=\"loading\" label=\"Loading skills...\" />\n </Show>\n <Show when={selectedRepo()!.skills.length > 0}>\n <text fg={terminalColors.text}>\n <b>Skills:</b>\n </text>\n <For each={selectedRepo()!.skills.slice(0, 5)}>\n {(skill) => (\n <text fg={terminalColors.textSecondary}>• {skill.name}</text>\n )}\n </For>\n <Show when={selectedRepo()!.skills.length > 5}>\n <text fg={terminalColors.textMuted}>\n +{selectedRepo()!.skills.length - 5} more\n </text>\n </Show>\n </Show>\n </DetailPane>\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter open / search r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkills, filterSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface InstalledProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n\nexport function Installed(props: InstalledProps) {\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [searchMode, setSearchMode] = createSignal(false);\n const [animPhase, setAnimPhase] = createSignal(0);\n const [spinnerFrame, setSpinnerFrame] = createSignal(0);\n const [skills, setSkills] = createSignal<ReturnType<typeof loadSkills>>({\n skills: [],\n loading: true,\n error: null,\n });\n\n const cols = () => props.cols ?? 80;\n const rows = () => props.rows ?? 24;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase((p) => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n createEffect(() => {\n if (!skills().loading) return;\n const interval = setInterval(() => {\n setSpinnerFrame((f) => (f + 1) % SPINNER.length);\n }, 80);\n onCleanup(() => clearInterval(interval));\n });\n\n createEffect(() => {\n const data = loadSkills();\n setSkills(data);\n });\n\n const filteredSkills = createMemo(() => filterSkills(skills().skills, searchQuery()));\n\n const handleKeyNav = (delta: number) => {\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, filteredSkills().length - 1)));\n };\n\n const handleToggle = () => {\n if (filteredSkills().length === 0) return;\n const skill = filteredSkills()[selectedIndex()];\n if (skill) {\n setSkills((prev) => ({\n ...prev,\n skills: prev.skills.map((s) => (s.name === skill.name ? { ...s, enabled: s.enabled === false } : s)),\n }));\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (searchMode()) {\n if (key.name === 'escape') {\n setSearchMode(false);\n } else if (key.name === 'backspace') {\n setSearchQuery((prev) => prev.slice(0, -1));\n } else if (key.name === 'return') {\n setSearchMode(false);\n } else if (key.sequence && key.sequence.length === 1 && /[a-zA-Z0-9\\-_.]/.test(key.sequence)) {\n setSearchQuery((prev) => prev + key.sequence);\n setSelectedIndex(0);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.sequence === '/') setSearchMode(true);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'd') handleToggle();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n createEffect(() => {\n if (selectedIndex() >= filteredSkills().length && filteredSkills().length > 0) {\n setSelectedIndex(filteredSkills().length - 1);\n }\n });\n\n const maxVisible = () => Math.max(5, rows() - 10);\n const startIdx = () =>\n Math.max(0, Math.min(selectedIndex() - Math.floor(maxVisible() / 2), filteredSkills().length - maxVisible()));\n const visibleSkills = () => filteredSkills().slice(startIdx(), startIdx() + maxVisible());\n\n const divider = () => <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>;\n\n const enabledCount = () => skills().skills.filter((s) => s.enabled !== false).length;\n const totalCount = () => skills().skills.length;\n\n const shortcuts = () =>\n isCompact()\n ? 'j/k nav enter toggle d disable esc back'\n : 'j/k navigate enter toggle d disable esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.success}>✓ Installed</text>\n <text fg={terminalColors.textMuted}>\n {enabledCount()}/{totalCount()} active\n </text>\n </box>\n <text fg={terminalColors.textMuted}>manage your skills</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>/ </text>\n <text fg={searchQuery() ? terminalColors.text : terminalColors.textMuted}>\n {searchQuery() || 'type to filter...'}\n </text>\n </box>\n <text> </text>\n {divider()}\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n <Show\n when={!skills().loading}\n fallback={\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent}>{SPINNER[spinnerFrame()]} </text>\n <text fg={terminalColors.text}>Loading skills...</text>\n </box>\n }\n >\n <Show\n when={!skills().error}\n fallback={\n <box flexDirection=\"column\">\n <text fg={terminalColors.error}>✗ Error loading skills</text>\n <text fg={terminalColors.textMuted}>{skills().error}</text>\n </box>\n }\n >\n <Show\n when={filteredSkills().length > 0}\n fallback={\n <box flexDirection=\"column\">\n <text fg={terminalColors.textMuted}>\n {skills().skills.length === 0 ? 'No skills installed yet' : 'No skills match your search'}\n </text>\n <Show when={skills().skills.length === 0}>\n <text> </text>\n <text fg={terminalColors.textMuted}>Press 'b' to browse or 'm' for marketplace</text>\n </Show>\n </box>\n }\n >\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>Skills</text>\n <text> </text>\n <For each={visibleSkills()}>\n {(skill, idx) => {\n const actualIdx = () => startIdx() + idx();\n const selected = () => actualIdx() === selectedIndex();\n const indicator = () => (selected() ? '▸' : ' ');\n const statusIcon = () => (skill.enabled !== false ? '●' : '○');\n const qualityBadge = () => (skill.grade ? ` [${skill.grade}]` : '');\n const warningIndicator = () => (skill.warnings && skill.warnings > 2 ? ' ⚠' : '');\n const line = () =>\n `${indicator()}${statusIcon()} ${skill.name}${qualityBadge()}${warningIndicator()}`;\n const badgeColor = () =>\n skill.quality !== undefined\n ? skill.quality >= 80\n ? terminalColors.success\n : skill.quality >= 60\n ? terminalColors.warning\n : terminalColors.error\n : terminalColors.text;\n return <text fg={selected() ? terminalColors.accent : badgeColor()}>{line()}</text>;\n }}\n </For>\n\n <Show when={filteredSkills().length > maxVisible()}>\n <text fg={terminalColors.textMuted}>\n {'\\n'}showing {startIdx() + 1}-{Math.min(startIdx() + maxVisible(), filteredSkills().length)} of{' '}\n {filteredSkills().length}\n </text>\n </Show>\n </box>\n </Show>\n </Show>\n </Show>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>{shortcuts()}</text>\n </box>\n </Show>\n </box>\n );\n}\n","export interface MemoryEntry {\n key: string;\n type: 'index' | 'learning' | 'observation';\n size: string;\n updated: string;\n}\n\nexport interface MemoryServiceState {\n entries: MemoryEntry[];\n status: { projectMemoryExists: boolean; globalMemoryExists: boolean } | null;\n paths: { projectMemoryDir: string; globalMemoryDir: string } | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadMemories(): Promise<MemoryServiceState> {\n return {\n entries: [],\n status: { projectMemoryExists: false, globalMemoryExists: true },\n paths: { projectMemoryDir: '.skillkit/memory', globalMemoryDir: '~/.skillkit/memory' },\n loading: false,\n error: null,\n };\n}\n\nexport async function deleteMemoryEntry(_key: string): Promise<boolean> {\n return true;\n}\n\nexport async function clearMemory(_path?: string, _scope?: string): Promise<boolean> {\n return true;\n}\n\nexport async function initializeMemory(): Promise<boolean> {\n return true;\n}\n\nexport const memoryService = {\n loadMemories,\n deleteMemoryEntry,\n clearMemory,\n initializeMemory,\n};\n","export interface WorkflowListItem {\n name: string;\n description: string;\n skills: number;\n waves: number;\n lastRun?: string;\n status: 'ready' | 'running' | 'completed' | 'failed';\n}\n\nexport interface Workflow {\n name: string;\n description?: string;\n waves: WorkflowWave[];\n metadata?: {\n lastRun?: string;\n };\n}\n\nexport interface WorkflowWave {\n name: string;\n skills: string[];\n parallel?: boolean;\n}\n\nexport interface WorkflowResult {\n success: boolean;\n completedWaves: number;\n totalWaves: number;\n errors: string[];\n}\n\nexport interface WorkflowProgress {\n currentWave: number;\n totalWaves: number;\n currentSkill?: string;\n totalSkills?: number;\n completedSkills?: number;\n status: 'running' | 'completed' | 'failed';\n}\n\nexport interface WorkflowServiceState {\n workflows: WorkflowListItem[];\n current: Workflow | null;\n progress: WorkflowProgress | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadWorkflowsList(_projectPath?: string): Promise<WorkflowServiceState> {\n return {\n workflows: [],\n current: null,\n progress: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function loadWorkflow(_name: string, _projectPath?: string): Promise<Workflow | null> {\n return null;\n}\n\nexport async function executeWorkflow(\n _name: string,\n _projectPath?: string,\n _onProgress?: (progress: WorkflowProgress) => void\n): Promise<WorkflowResult | null> {\n return { success: true, completedWaves: 0, totalWaves: 0, errors: [] };\n}\n\nexport async function createNewWorkflow(\n _name: string,\n _description: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function validateWorkflowByName(\n _name: string,\n _projectPath?: string\n): Promise<{ valid: boolean; errors: string[] }> {\n return { valid: true, errors: [] };\n}\n\nexport const workflowService = {\n loadWorkflowsList,\n loadWorkflow,\n executeWorkflow,\n createNewWorkflow,\n validateWorkflowByName,\n};\n","export interface PlanListItem {\n name: string;\n path: string;\n tasks: number;\n status: 'pending' | 'in_progress' | 'completed' | 'failed';\n lastModified?: string;\n}\n\nexport interface StructuredPlan {\n title: string;\n description?: string;\n tasks: PlanTask[];\n}\n\nexport interface PlanTask {\n id: string;\n title: string;\n description?: string;\n status: 'pending' | 'in_progress' | 'completed' | 'failed';\n}\n\nexport interface PlanValidationIssue {\n message: string;\n type?: 'error' | 'warning';\n}\n\nexport interface PlanValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n issues?: PlanValidationIssue[];\n}\n\nexport interface PlanExecutionResult {\n success: boolean;\n completedTasks: string[];\n failedTasks: string[];\n totalTasks: number;\n errors: string[];\n}\n\nexport type PlanEvent = string;\n\nexport interface PlanServiceState {\n plans: PlanListItem[];\n current: StructuredPlan | null;\n validation: PlanValidationResult | null;\n execution: PlanExecutionResult | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadPlansList(_projectPath?: string): Promise<PlanServiceState> {\n return {\n plans: [],\n current: null,\n validation: null,\n execution: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function loadPlan(_planPath: string): Promise<StructuredPlan | null> {\n return null;\n}\n\nexport async function validatePlan(_plan: StructuredPlan): Promise<PlanValidationResult> {\n return { valid: true, errors: [], warnings: [], issues: [] };\n}\n\nexport async function executePlan(\n _plan: StructuredPlan,\n _projectPath?: string,\n _onEvent?: (event: PlanEvent) => void,\n _dryRun?: boolean\n): Promise<PlanExecutionResult | null> {\n return { success: true, completedTasks: [], failedTasks: [], totalTasks: 0, errors: [] };\n}\n\nexport async function executePlanDryRun(\n plan: StructuredPlan,\n projectPath?: string,\n onEvent?: (event: PlanEvent) => void\n): Promise<PlanExecutionResult | null> {\n return executePlan(plan, projectPath, onEvent, true);\n}\n\nexport async function parsePlanFromContent(_content: string): Promise<StructuredPlan | null> {\n return null;\n}\n\nexport const planService = {\n loadPlansList,\n loadPlan,\n validatePlan,\n executePlan,\n executePlanDryRun,\n parsePlanFromContent,\n};\n","export interface PluginListItem {\n name: string;\n version: string;\n description: string;\n type: 'translator' | 'provider' | 'command' | 'mixed';\n enabled: boolean;\n path?: string;\n}\n\nexport interface PluginServiceState {\n plugins: PluginListItem[];\n manager: unknown | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadPluginsList(_projectPath?: string): Promise<PluginServiceState> {\n return {\n plugins: [],\n manager: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function enablePlugin(_name: string, _manager: unknown): Promise<boolean> {\n return true;\n}\n\nexport async function disablePlugin(_name: string, _manager: unknown): Promise<boolean> {\n return true;\n}\n\nexport async function getPluginInfo(_name: string, _manager: unknown): Promise<unknown> {\n return null;\n}\n\nexport async function installPluginFromPath(\n _pluginPath: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport const pluginService = {\n loadPluginsList,\n enablePlugin,\n disablePlugin,\n getPluginInfo,\n installPluginFromPath,\n};\n","export interface TeamMemberDisplay {\n name: string;\n role: string;\n skills: number;\n lastSync?: string;\n status: 'active' | 'inactive' | 'pending';\n}\n\nexport interface SharedSkillDisplay {\n name: string;\n sharedBy: string;\n sharedAt: string;\n agents: string[];\n}\n\nexport interface TeamConfig {\n name: string;\n teamName?: string;\n members: TeamMember[];\n}\n\nexport interface TeamMember {\n name: string;\n email?: string;\n role?: string;\n sharedSkills?: string[];\n lastSync?: string;\n}\n\nexport interface TeamServiceState {\n config: TeamConfig | null;\n members: TeamMemberDisplay[];\n sharedSkills: SharedSkillDisplay[];\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadTeamConfig(_projectPath?: string): Promise<TeamServiceState> {\n return {\n config: null,\n members: [],\n sharedSkills: [],\n loading: false,\n error: null,\n };\n}\n\nexport async function initializeTeam(\n _teamName: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function addTeamMember(\n _member: { name: string; email?: string; role?: string },\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function removeTeamMember(\n _memberName: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function shareSkill(\n _skillName: string,\n _targetMembers?: string[],\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport async function createBundle(\n _skills: string[],\n _bundleName: string,\n _projectPath?: string\n): Promise<string | null> {\n return null;\n}\n\nexport async function importSkillBundle(\n _bundlePath: string,\n _projectPath?: string\n): Promise<boolean> {\n return true;\n}\n\nexport const teamService = {\n loadTeamConfig,\n initializeTeam,\n addTeamMember,\n removeTeamMember,\n shareSkill,\n createBundle,\n importSkillBundle,\n};\n","export interface MethodologyPackDisplay {\n name: string;\n description: string;\n version: string;\n skills: number;\n tags: string[];\n installed: boolean;\n status: 'available' | 'installed' | 'synced';\n}\n\nexport interface MethodologyServiceState {\n packs: MethodologyPackDisplay[];\n installedPacks: string[];\n manager: unknown | null;\n loading: boolean;\n error: string | null;\n}\n\nexport async function loadMethodologies(): Promise<MethodologyServiceState> {\n return {\n packs: [],\n installedPacks: [],\n manager: null,\n loading: false,\n error: null,\n };\n}\n\nexport async function installMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport async function uninstallMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport async function syncMethodologyPack(_name: string): Promise<boolean> {\n return true;\n}\n\nexport const methodologyService = {\n loadMethodologies,\n installMethodologyPack,\n uninstallMethodologyPack,\n syncMethodologyPack,\n};\n","export interface RecommendationDisplay {\n name: string;\n description: string;\n score: number;\n reasons: string[];\n source: string;\n tags: string[];\n installCommand?: string;\n treePath?: string[];\n explanation?: {\n matchedBecause: string[];\n relevantFor: string[];\n confidence: 'high' | 'medium' | 'low';\n };\n}\n\nexport interface RecommendationOptions {\n limit?: number;\n minScore?: number;\n categories?: string[];\n refresh?: boolean;\n}\n\nexport interface RecommendServiceState {\n recommendations: RecommendationDisplay[];\n analyzing: boolean;\n loading: boolean;\n error: string | null;\n lastAnalyzed?: string;\n}\n\nexport async function getRecommendations(\n _projectPath?: string,\n _options?: RecommendationOptions\n): Promise<RecommendServiceState> {\n return {\n recommendations: [],\n analyzing: false,\n loading: false,\n error: null,\n lastAnalyzed: new Date().toISOString(),\n };\n}\n\nexport async function analyzeProject(_projectPath?: string): Promise<{\n languages: string[];\n frameworks: string[];\n libraries: string[];\n patterns: string[];\n} | null> {\n return {\n languages: ['TypeScript', 'JavaScript'],\n frameworks: ['Solid.js'],\n libraries: ['@opentui/solid'],\n patterns: [],\n };\n}\n\nexport async function refreshRecommendations(\n projectPath?: string\n): Promise<RecommendServiceState> {\n return getRecommendations(projectPath, { refresh: true });\n}\n\nexport async function getRecommendationsByCategory(\n _category: string,\n projectPath?: string\n): Promise<RecommendationDisplay[]> {\n const result = await getRecommendations(projectPath);\n return result.recommendations;\n}\n\nexport const recommendService = {\n getRecommendations,\n analyzeProject,\n refreshRecommendations,\n getRecommendationsByCategory,\n};\n","export interface ContextDisplay {\n projectName: string;\n rootPath: string;\n languages: string[];\n frameworks: string[];\n libraries: string[];\n patterns: Record<string, unknown>;\n lastUpdated?: string;\n}\n\nexport interface ContextServiceState {\n context: ContextDisplay | null;\n stack: unknown | null;\n loading: boolean;\n analyzing: boolean;\n error: string | null;\n}\n\nexport async function loadProjectContext(): Promise<ContextServiceState> {\n return {\n context: {\n projectName: 'skillkit',\n rootPath: process.cwd(),\n languages: ['TypeScript', 'JavaScript'],\n frameworks: ['Solid.js', 'React'],\n libraries: ['@opentui/solid'],\n patterns: {},\n lastUpdated: new Date().toISOString(),\n },\n stack: null,\n loading: false,\n analyzing: false,\n error: null,\n };\n}\n\nexport async function analyzeProjectContext(): Promise<ContextServiceState> {\n return loadProjectContext();\n}\n\nexport async function refreshContext(): Promise<ContextServiceState> {\n return loadProjectContext();\n}\n\nexport async function exportContext(_path?: string, _format?: string): Promise<boolean> {\n return true;\n}\n\nexport async function getStackTags(): Promise<string[]> {\n return ['typescript', 'solid-js', 'cli'];\n}\n\nexport const contextService = {\n loadProjectContext,\n analyzeProjectContext,\n refreshContext,\n exportContext,\n getStackTags,\n};\n","export type AgentType = string;\n\nexport interface ExecutorServiceState {\n availableAgents: AgentType[];\n selectedAgent: AgentType | null;\n selectedSkill: string | null;\n executing: boolean;\n result: unknown | null;\n error: string | null;\n}\n\nexport interface AgentAvailability {\n agent: AgentType;\n available: boolean;\n version?: string;\n path?: string;\n}\n\nexport async function getAgentAvailability(): Promise<AgentAvailability[]> {\n return [\n { agent: 'claude-code', available: true },\n { agent: 'cursor', available: false },\n { agent: 'codex', available: false },\n ];\n}\n\nexport async function listAvailableAgents(): Promise<AgentType[]> {\n return ['claude-code', 'cursor', 'codex'];\n}\n\nexport async function executeSkill(\n _skillPath: string,\n _agent: AgentType,\n _options?: unknown\n): Promise<{ success: boolean; output?: string; error?: string }> {\n return { success: true, output: 'Executed successfully' };\n}\n\nexport async function executeSkillWithAgent(\n _skillPath: string,\n _agent: AgentType,\n _options?: unknown\n): Promise<{ success: boolean; output?: string; error?: string }> {\n return { success: true, output: 'Executed successfully' };\n}\n\nexport function formatSkillPrompt(_content: string, _agent: AgentType): string {\n return '';\n}\n\nexport function getExecutionInstructions(_skill: string, _agent: AgentType): string {\n return 'Manual execution instructions';\n}\n\nexport const executorService = {\n getAgentAvailability,\n listAvailableAgents,\n executeSkill,\n executeSkillWithAgent,\n formatSkillPrompt,\n getExecutionInstructions,\n};\n","export type AgentType =\n | 'claude-code'\n | 'cursor'\n | 'windsurf'\n | 'github-copilot'\n | 'codex'\n | 'gemini-cli'\n | 'opencode'\n | 'universal'\n | 'antigravity'\n | 'amp'\n | 'clawdbot'\n | 'droid'\n | 'goose'\n | 'kilo'\n | 'kiro-cli'\n | 'roo'\n | 'trae'\n | 'cline'\n | 'codebuddy'\n | 'commandcode'\n | 'continue'\n | 'crush'\n | 'factory'\n | 'mcpjam'\n | 'mux'\n | 'neovate'\n | 'openhands'\n | 'pi'\n | 'qoder'\n | 'qwen'\n | 'vercel'\n | 'zencoder';\n\nexport interface TranslationDisplay {\n sourceFormat: string;\n targetAgent: AgentType;\n success: boolean;\n content: string;\n filename?: string;\n warnings: string[];\n incompatible: string[];\n}\n\nexport interface TranslationOptions {\n sourceFilename?: string;\n preserveMetadata?: boolean;\n}\n\nexport interface CanonicalSkill {\n id: string;\n name: string;\n description?: string;\n content: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface TranslatorServiceState {\n supportedAgents: AgentType[];\n sourceAgent: AgentType | null;\n targetAgent: AgentType | null;\n skill: CanonicalSkill | null;\n result: TranslationDisplay | null;\n loading: boolean;\n error: string | null;\n}\n\nexport function getSupportedAgents(): AgentType[] {\n return [\n 'claude-code',\n 'cursor',\n 'windsurf',\n 'github-copilot',\n 'codex',\n 'gemini-cli',\n 'opencode',\n 'universal',\n ];\n}\n\nexport function checkCanTranslate(_from: AgentType, _to: AgentType): boolean {\n return true;\n}\n\nexport function translate(\n _content: string,\n targetAgent: AgentType,\n options?: TranslationOptions\n): TranslationDisplay {\n return {\n sourceFormat: options?.sourceFilename || 'SKILL.md',\n targetAgent,\n success: true,\n content: '',\n filename: undefined,\n warnings: [],\n incompatible: [],\n };\n}\n\nexport function translateFromFile(\n sourcePath: string,\n targetAgent: AgentType,\n _options?: TranslationOptions\n): TranslationDisplay {\n return {\n sourceFormat: sourcePath,\n targetAgent,\n success: true,\n content: '',\n filename: undefined,\n warnings: [],\n incompatible: [],\n };\n}\n\nexport function parseSkill(_content: string, _filename?: string): CanonicalSkill | null {\n return null;\n}\n\nexport function detectFormat(_content: string, _filename?: string): string | null {\n return 'markdown';\n}\n\nexport function previewTranslation(\n _content: string,\n _targetAgent: AgentType\n): { preview: string; compatible: boolean; issues: string[] } {\n return {\n preview: '',\n compatible: true,\n issues: [],\n };\n}\n\nexport function getAgentFormatInfo(agent: AgentType): {\n extension: string;\n formatName: string;\n description: string;\n} {\n const formatMap: Record<string, { extension: string; formatName: string; description: string }> = {\n 'claude-code': { extension: '.md', formatName: 'SKILL.md', description: 'Claude Code skills format' },\n cursor: { extension: '.mdc', formatName: 'MDC', description: 'Cursor rules format' },\n windsurf: { extension: '.md', formatName: 'Markdown', description: 'Windsurf rules format' },\n 'github-copilot': { extension: '.md', formatName: 'Markdown', description: 'GitHub Copilot instructions' },\n codex: { extension: '.md', formatName: 'Markdown', description: 'Codex instructions' },\n 'gemini-cli': { extension: '.md', formatName: 'Markdown', description: 'Gemini CLI instructions' },\n opencode: { extension: '.md', formatName: 'Markdown', description: 'OpenCode instructions' },\n universal: { extension: '.md', formatName: 'SKILL.md', description: 'Universal skill format' },\n };\n\n return formatMap[agent] || { extension: '.md', formatName: 'Markdown', description: 'Unknown format' };\n}\n\nexport const translatorService = {\n getSupportedAgents,\n checkCanTranslate,\n translate,\n translateFromFile,\n parseSkill,\n detectFormat,\n previewTranslation,\n getAgentFormatInfo,\n};\n","import { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport {\n generateSkillTree,\n loadTree,\n saveTree,\n treeToText,\n loadIndex,\n type SkillTree,\n type TreeNode,\n} from '@skillkit/core';\n\nconst TREE_PATH = join(homedir(), '.skillkit', 'skill-tree.json');\n\nexport interface TreeServiceState {\n tree: SkillTree | null;\n currentNode: TreeNode | null;\n currentPath: string[];\n loading: boolean;\n error: string | null;\n}\n\nexport interface TreeNodeDisplay {\n id: string;\n name: string;\n description?: string;\n skillCount: number;\n childCount: number;\n depth: number;\n isExpanded: boolean;\n isCategory: boolean;\n}\n\nexport async function loadOrGenerateTree(): Promise<TreeServiceState> {\n try {\n let tree = loadTree(TREE_PATH);\n\n if (!tree) {\n const index = loadIndex();\n if (index && index.skills.length > 0) {\n tree = generateSkillTree(index.skills);\n saveTree(tree, TREE_PATH);\n }\n }\n\n if (!tree) {\n return {\n tree: null,\n currentNode: null,\n currentPath: [],\n loading: false,\n error: 'No skill index found. Run \"skillkit recommend --update\" first.',\n };\n }\n\n return {\n tree,\n currentNode: tree.rootNode,\n currentPath: [],\n loading: false,\n error: null,\n };\n } catch (err) {\n return {\n tree: null,\n currentNode: null,\n currentPath: [],\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load tree',\n };\n }\n}\n\nexport function navigateToPath(tree: SkillTree, path: string[]): TreeNode | null {\n let current = tree.rootNode;\n\n for (const segment of path) {\n const child = current.children.find(\n (c) => c.name.toLowerCase() === segment.toLowerCase()\n );\n if (!child) {\n return null;\n }\n current = child;\n }\n\n return current;\n}\n\nexport function getNodeChildren(node: TreeNode): TreeNodeDisplay[] {\n return node.children.map((child) => ({\n id: child.id,\n name: child.name,\n description: child.description,\n skillCount: child.skillCount,\n childCount: child.children.length,\n depth: child.depth,\n isExpanded: false,\n isCategory: child.children.length > 0,\n }));\n}\n\nexport function getNodeSkills(node: TreeNode): string[] {\n return node.skills;\n}\n\nexport function getTreeStats(tree: SkillTree): {\n totalSkills: number;\n totalCategories: number;\n maxDepth: number;\n topCategories: { name: string; count: number }[];\n} {\n const topCategories = tree.rootNode.children\n .sort((a, b) => b.skillCount - a.skillCount)\n .slice(0, 5)\n .map((c) => ({ name: c.name, count: c.skillCount }));\n\n return {\n totalSkills: tree.totalSkills,\n totalCategories: tree.totalCategories,\n maxDepth: tree.maxDepth,\n topCategories,\n };\n}\n\nexport function searchInTree(tree: SkillTree, query: string): TreeNodeDisplay[] {\n const results: TreeNodeDisplay[] = [];\n const queryLower = query.toLowerCase();\n\n const traverse = (node: TreeNode) => {\n const nameMatch = node.name.toLowerCase().includes(queryLower);\n const skillMatch = node.skills.some((s) =>\n s.toLowerCase().includes(queryLower)\n );\n\n if (nameMatch || skillMatch) {\n results.push({\n id: node.id,\n name: node.name,\n description: node.description,\n skillCount: node.skillCount,\n childCount: node.children.length,\n depth: node.depth,\n isExpanded: false,\n isCategory: node.children.length > 0,\n });\n }\n\n for (const child of node.children) {\n traverse(child);\n }\n };\n\n traverse(tree.rootNode);\n return results;\n}\n\nexport function formatTreePath(path: string[]): string {\n if (path.length === 0) return 'Root';\n return path.join(' > ');\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport {\n type Screen,\n DEFAULT_REPOS,\n fetchRepoSkills,\n filterMarketplaceSkills,\n type FetchedSkill,\n} from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport {\n loadOrGenerateTree,\n getNodeChildren,\n getNodeSkills,\n formatTreePath,\n type TreeServiceState,\n type TreeNodeDisplay,\n} from '../services/index.js';\nimport type { TreeNode } from '@skillkit/core';\n\ninterface MarketplaceProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst CATEGORIES = [\n { name: 'Development', tag: 'development' },\n { name: 'Testing', tag: 'testing' },\n { name: 'DevOps', tag: 'devops' },\n { name: 'Security', tag: 'security' },\n { name: 'AI/ML', tag: 'ai' },\n];\n\ntype ViewMode = 'list' | 'tree';\n\nexport function Marketplace(props: MarketplaceProps) {\n const [allSkills, setAllSkills] = createSignal<FetchedSkill[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [selectedCategory, setSelectedCategory] = createSignal<string | null>(null);\n const [searchQuery, setSearchQuery] = createSignal('');\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n const [loadedRepos, setLoadedRepos] = createSignal<string[]>([]);\n const [failedRepos, setFailedRepos] = createSignal<string[]>([]);\n\n const [viewMode, setViewMode] = createSignal<ViewMode>('list');\n const [treeState, setTreeState] = createSignal<TreeServiceState | null>(null);\n const [currentPath, setCurrentPath] = createSignal<string[]>([]);\n const [treeItems, setTreeItems] = createSignal<(TreeNodeDisplay | { type: 'skill'; name: string })[]>([]);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n const skills: FetchedSkill[] = [];\n const loaded: string[] = [];\n const failed: string[] = [];\n\n for (const repo of DEFAULT_REPOS.slice(0, 5)) {\n try {\n const result = await fetchRepoSkills(repo.source, DEFAULT_REPOS);\n if (result.skills.length > 0) {\n skills.push(...result.skills);\n loaded.push(repo.name);\n } else if (result.error) {\n failed.push(repo.name);\n }\n } catch {\n failed.push(repo.name);\n }\n }\n\n setAllSkills(skills);\n setLoadedRepos(loaded);\n setFailedRepos(failed);\n\n const attemptedCount = DEFAULT_REPOS.slice(0, 5).length;\n if (failed.length === attemptedCount) {\n setError(`Failed to load all repos: ${failed.join(', ')}`);\n } else if (failed.length > 0 && skills.length === 0) {\n setError(`Some repos failed (${failed.join(', ')}) and no skills loaded`);\n }\n\n try {\n const tree = await loadOrGenerateTree();\n setTreeState(tree);\n if (tree.tree && tree.currentNode) {\n updateTreeItems(tree.currentNode);\n }\n } catch (e) {\n console.error('Failed to load skill tree:', e);\n }\n\n setLoading(false);\n };\n\n const updateTreeItems = (node: TreeNode) => {\n const children = getNodeChildren(node);\n const skills = getNodeSkills(node);\n\n const items: (TreeNodeDisplay | { type: 'skill'; name: string })[] = [\n ...children,\n ...skills.map(name => ({ type: 'skill' as const, name })),\n ];\n\n setTreeItems(items);\n setSelectedIndex(0);\n };\n\n const filteredSkills = createMemo(() => {\n let skills = allSkills();\n\n if (selectedCategory()) {\n skills = skills.filter(\n (s) =>\n s.name.toLowerCase().includes(selectedCategory()!.toLowerCase()) ||\n s.description?.toLowerCase().includes(selectedCategory()!.toLowerCase())\n );\n }\n\n if (searchQuery()) {\n skills = filterMarketplaceSkills(skills, searchQuery());\n }\n\n return skills;\n });\n\n createEffect(() => {\n if (viewMode() === 'list') {\n const list = filteredSkills();\n const maxIndex = Math.max(0, list.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n } else {\n const items = treeItems();\n const maxIndex = Math.max(0, items.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n }\n });\n\n const maxVisible = () => Math.max(4, Math.floor((rows() - 14) / 2));\n\n const skillsWindow = createMemo(() => {\n const list = filteredSkills();\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n const treeWindow = createMemo(() => {\n const list = treeItems();\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n const handleKeyNav = (delta: number) => {\n if (viewMode() === 'list') {\n const max = filteredSkills().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = treeItems().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n const handleInstall = () => {\n const skill = filteredSkills()[selectedIndex()];\n if (skill) {\n props.onNavigate('installed');\n }\n };\n\n const handleTreeEnter = () => {\n const items = treeItems();\n const item = items[selectedIndex()];\n if (!item) return;\n\n if ('type' in item && item.type === 'skill') {\n props.onNavigate('installed');\n } else if ('isCategory' in item && item.isCategory) {\n const state = treeState();\n if (state?.tree) {\n const newPath = [...currentPath(), item.name];\n setCurrentPath(newPath);\n\n let node = state.tree.rootNode;\n for (const segment of newPath) {\n const child = node.children.find(c => c.name === segment);\n if (child) {\n node = child;\n } else {\n setCurrentPath([]);\n updateTreeItems(state.tree.rootNode);\n return;\n }\n }\n updateTreeItems(node);\n }\n }\n };\n\n const handleTreeBack = () => {\n const path = currentPath();\n if (path.length === 0) {\n setViewMode('list');\n return;\n }\n\n const newPath = path.slice(0, -1);\n setCurrentPath(newPath);\n\n const state = treeState();\n if (state?.tree) {\n let node = state.tree.rootNode;\n for (const segment of newPath) {\n const child = node.children.find(c => c.name === segment);\n if (child) {\n node = child;\n }\n }\n updateTreeItems(node);\n }\n };\n\n const handleCategorySelect = (idx: number) => {\n const cat = CATEGORIES[idx];\n if (cat) {\n setSelectedCategory((prev) => (prev === cat.tag ? null : cat.tag));\n setSelectedIndex(0);\n }\n };\n\n const toggleViewMode = () => {\n if (viewMode() === 'list') {\n setViewMode('tree');\n setSelectedIndex(0);\n const state = treeState();\n if (state?.tree) {\n updateTreeItems(state.tree.rootNode);\n }\n } else {\n setViewMode('list');\n setCurrentPath([]);\n setSelectedIndex(0);\n }\n };\n\n useKeyboard((key: { name?: string; sequence?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') {\n if (viewMode() === 'tree') {\n handleTreeEnter();\n } else {\n handleInstall();\n }\n }\n else if (key.name === 'b') props.onNavigate('browse');\n else if (key.name === 'r') loadData();\n else if (key.sequence === 'v') toggleViewMode();\n else if (key.sequence && ['1', '2', '3', '4', '5'].includes(key.sequence)) {\n if (viewMode() === 'list') {\n handleCategorySelect(parseInt(key.sequence) - 1);\n }\n } else if (key.name === 'escape') {\n if (viewMode() === 'tree') {\n handleTreeBack();\n } else if (searchQuery() || selectedCategory()) {\n setSearchQuery('');\n setSelectedCategory(null);\n } else {\n props.onNavigate('home');\n }\n } else if (key.name === 'left' && viewMode() === 'tree') {\n handleTreeBack();\n } else if (key.name === 'right' && viewMode() === 'tree') {\n handleTreeEnter();\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Marketplace\"\n subtitle={viewMode() === 'tree' ? `Tree View: ${formatTreePath(currentPath())}` : 'Discover and install skills'}\n icon={viewMode() === 'tree' ? '🌳' : '★'}\n count={viewMode() === 'tree' ? (treeState()?.tree?.totalSkills ?? 0) : allSkills().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <box flexDirection=\"column\">\n <Spinner label=\"Loading marketplace skills...\" />\n <Show when={loadedRepos().length > 0}>\n <text fg={terminalColors.textMuted}>\n Loaded: {loadedRepos().join(', ')}\n </text>\n </Show>\n </box>\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>\n ● {loadedRepos().length} repos\n </text>\n <Show when={failedRepos().length > 0}>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.warning}>\n ○ {failedRepos().length} failed\n </text>\n </Show>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.text}>{allSkills().length} skills</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={viewMode() === 'tree' ? terminalColors.accent : terminalColors.textMuted}>\n [v] {viewMode() === 'tree' ? '🌳 Tree' : '📋 List'}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={viewMode() === 'list'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}>Categories: </text>\n <For each={CATEGORIES}>\n {(cat, idx) => (\n <text\n fg={\n selectedCategory() === cat.tag\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n [{idx() + 1}]{cat.name}{' '}\n </text>\n )}\n </For>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={filteredSkills().length > 0}\n fallback={\n <EmptyState\n icon=\"★\"\n title=\"No skills found\"\n description={\n searchQuery() || selectedCategory()\n ? 'Try a different search or category'\n : 'No skills loaded yet'\n }\n action={{ label: 'Clear Filter', key: 'Esc' }}\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>\n {selectedCategory() ? `${selectedCategory()} Skills` : 'Featured Skills'}\n </b>{' '}\n <text fg={terminalColors.textMuted}>\n ({filteredSkills().length} results)\n </text>\n </text>\n <text> </text>\n\n <Show when={skillsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {skillsWindow().start} more</text>\n </Show>\n <For each={skillsWindow().items}>\n {(skill, idx) => {\n const originalIndex = () => skillsWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {skill.name}\n </text>\n <text fg={terminalColors.textMuted}>\n {skill.repoName}\n </text>\n </box>\n <Show when={skill.description}>\n <text fg={terminalColors.textMuted}>\n {' '}{skill.description?.slice(0, 50)}\n {(skill.description?.length || 0) > 50 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={skillsWindow().start + maxVisible() < filteredSkills().length}>\n <text fg={terminalColors.textMuted}>\n ▼ {filteredSkills().length - skillsWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n </Show>\n\n <Show when={viewMode() === 'tree'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.accent}>\n 📁 {currentPath().length === 0 ? 'Root' : currentPath().join(' > ')}\n </text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={treeItems().length > 0}\n fallback={\n <EmptyState\n icon=\"🌳\"\n title=\"Empty category\"\n description=\"This category has no skills\"\n action={{ label: 'Go Back', key: 'Esc' }}\n />\n }\n >\n <Show when={treeWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {treeWindow().start} more</text>\n </Show>\n <For each={treeWindow().items}>\n {(item, idx) => {\n const originalIndex = () => treeWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n const isCategory = () => 'isCategory' in item && item.isCategory;\n const isSkill = () => 'type' in item && item.type === 'skill';\n\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.textMuted}\n width={3}\n >\n {isCategory() ? '📁' : isSkill() ? '📄' : '📁'}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {'name' in item ? item.name : ''}\n </text>\n <Show when={isCategory() && 'skillCount' in item}>\n <text fg={terminalColors.textMuted}>\n ({(item as TreeNodeDisplay).skillCount} skills)\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={treeWindow().start + maxVisible() < treeItems().length}>\n <text fg={terminalColors.textMuted}>\n ▼ {treeItems().length - treeWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <Show when={viewMode() === 'list'}>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter install 1-5 category v tree view r refresh Esc back\n </text>\n </Show>\n <Show when={viewMode() === 'tree'}>\n <text fg={terminalColors.textMuted}>\n j/k ↑↓ navigate Enter/→ open ←/Esc back v list view r refresh\n </text>\n </Show>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport {\n getRecommendations,\n analyzeProject,\n type RecommendServiceState,\n type RecommendationDisplay,\n} from '../services/recommend.service.js';\n\ninterface RecommendProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Recommend(props: RecommendProps) {\n const [state, setState] = createSignal<RecommendServiceState>({\n recommendations: [],\n analyzing: false,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [projectInfo, setProjectInfo] = createSignal<{\n languages: string[];\n frameworks: string[];\n } | null>(null);\n\n const rows = () => props.rows ?? 24;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, analyzing: true, error: null }));\n\n try {\n const analysis = await analyzeProject();\n if (analysis) {\n setProjectInfo({\n languages: analysis.languages,\n frameworks: analysis.frameworks,\n });\n }\n\n const result = await getRecommendations();\n setState(result);\n\n const maxIndex = Math.max(0, result.recommendations.length - 1);\n setSelectedIndex((prev) => Math.max(0, Math.min(prev, maxIndex)));\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to load recommendations',\n }));\n }\n };\n\n const handleRefresh = async () => {\n loadData();\n };\n\n const handleInstall = () => {\n const recs = state().recommendations;\n if (recs.length === 0) return;\n\n const rec = recs[selectedIndex()];\n if (rec) {\n props.onNavigate('installed');\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().recommendations.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') {\n if (showDetail()) handleInstall();\n else setShowDetail(true);\n } else if (key.name === 'r') handleRefresh();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getScoreColor = (score: number): string => {\n if (score >= 80) return terminalColors.success;\n if (score >= 60) return terminalColors.accent;\n if (score >= 40) return terminalColors.warning;\n return terminalColors.textMuted;\n };\n\n const getGrade = (score: number): string => {\n if (score >= 90) return 'A';\n if (score >= 80) return 'B';\n if (score >= 70) return 'C';\n if (score >= 60) return 'D';\n return 'F';\n };\n\n const selectedRec = () => {\n const recs = state().recommendations;\n if (recs.length === 0) return null;\n return recs[selectedIndex()];\n };\n\n const detailFields = () => {\n const rec = selectedRec();\n if (!rec) return [];\n\n return [\n { label: 'Name', value: rec.name },\n { label: 'Score', value: `${rec.score}%` },\n { label: 'Source', value: rec.source },\n { label: 'Tags', value: rec.tags.join(', ') || 'None' },\n { label: 'Install', value: rec.installCommand || `skillkit install ${rec.name}` },\n ];\n };\n\n const maxVisible = () => Math.max(4, Math.floor((rows() - 12) / 3));\n\n const recsWindow = createMemo(() => {\n const list = state().recommendations;\n const selected = selectedIndex();\n const visible = maxVisible();\n const total = list.length;\n if (total <= visible) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(visible / 2));\n start = Math.min(start, total - visible);\n return { start, items: list.slice(start, start + visible) };\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Recommendations\"\n subtitle=\"AI skill suggestions based on your project\"\n icon=\"✦\"\n count={state().recommendations.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading && state().analyzing}>\n <box flexDirection=\"column\">\n <Spinner label=\"Analyzing your project...\" />\n <Show when={projectInfo()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Detected: {projectInfo()!.languages.slice(0, 3).join(', ')}\n {projectInfo()!.frameworks.length > 0\n ? ` + ${projectInfo()!.frameworks.slice(0, 2).join(', ')}`\n : ''}\n </text>\n </Show>\n </box>\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show when={projectInfo()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Stack: </text>\n <text fg={terminalColors.accent}>\n {[\n ...projectInfo()!.languages.slice(0, 2),\n ...projectInfo()!.frameworks.slice(0, 2),\n ].join(' • ')}\n </text>\n </box>\n </Show>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().recommendations.length > 0}\n fallback={\n <EmptyState\n icon=\"✦\"\n title=\"No recommendations found\"\n description=\"Try refreshing to analyze your project again\"\n action={{ label: 'Refresh', key: 'r' }}\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Suggested Skills</b>\n </text>\n <text> </text>\n\n <Show when={recsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {recsWindow().start} more</text>\n </Show>\n <For each={recsWindow().items}>\n {(rec, idx) => {\n const originalIndex = () => recsWindow().start + idx();\n const isSelected = () => originalIndex() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {isSelected() ? '▸ ' : ' '}\n </text>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {rec.name}\n </text>\n <text fg={getScoreColor(rec.score)} width={6}>\n {rec.score}%\n </text>\n <text fg={getScoreColor(rec.score)} width={4}>\n [{getGrade(rec.score)}]\n </text>\n </box>\n <Show when={rec.reasons.length > 0}>\n <text fg={terminalColors.textMuted}>\n {' '}{rec.reasons[0]}\n </text>\n </Show>\n <Show when={rec.description && rec.reasons.length === 0}>\n <text fg={terminalColors.textMuted}>\n {' '}{rec.description.slice(0, 50)}\n {rec.description.length > 50 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={recsWindow().start + maxVisible() < state().recommendations.length}>\n <text fg={terminalColors.textMuted}>\n ▼ {state().recommendations.length - recsWindow().start - maxVisible()} more\n </text>\n </Show>\n </Show>\n\n <Show when={state().lastAnalyzed}>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Last analyzed: {new Date(state().lastAnalyzed!).toLocaleTimeString()}\n </text>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedRec()}>\n <DetailPane\n title={selectedRec()!.name}\n subtitle={`Score: ${selectedRec()!.score}%`}\n icon=\"✦\"\n fields={detailFields()}\n actions={[\n { key: 'Enter', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details/install r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkillsWithDetails, type SkillWithDetails } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n getSupportedAgents,\n checkCanTranslate,\n translate,\n previewTranslation,\n getAgentFormatInfo,\n} from '../services/translator.service.js';\nimport type { AgentType } from '@skillkit/core';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\ninterface TranslateProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ntype FocusedPane = 'source' | 'target' | 'skills';\n\nfunction readSkillContent(skillPath: string): string | undefined {\n const skillMdPath = join(skillPath, 'SKILL.md');\n if (existsSync(skillMdPath)) {\n return readFileSync(skillMdPath, 'utf-8');\n }\n return undefined;\n}\n\nexport function Translate(props: TranslateProps) {\n const [supportedAgents, setSupportedAgents] = createSignal<AgentType[]>([]);\n const [skills, setSkills] = createSignal<SkillWithDetails[]>([]);\n const [sourceAgentIndex, setSourceAgentIndex] = createSignal(0);\n const [targetAgentIndex, setTargetAgentIndex] = createSignal(1);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [focusedPane, setFocusedPane] = createSignal<FocusedPane>('skills');\n const [translating, setTranslating] = createSignal(false);\n const [preview, setPreview] = createSignal<{\n preview: string;\n compatible: boolean;\n issues: string[];\n } | null>(null);\n const [result, setResult] = createSignal<{\n success: boolean;\n content: string;\n filename?: string;\n } | null>(null);\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const agents = getSupportedAgents();\n setSupportedAgents(agents);\n\n const skillsWithDetails = loadSkillsWithDetails();\n setSkills(skillsWithDetails);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load data');\n }\n\n setLoading(false);\n };\n\n const sourceAgent = () => {\n const agents = supportedAgents();\n if (agents.length === 0) return null;\n return agents[sourceAgentIndex()];\n };\n\n const targetAgent = () => {\n const agents = supportedAgents();\n if (agents.length === 0) return null;\n return agents[targetAgentIndex()];\n };\n\n const selectedSkill = () => {\n const skillList = skills();\n if (skillList.length === 0) return null;\n return skillList[selectedSkillIndex()];\n };\n\n const canDoTranslation = () => {\n const source = sourceAgent();\n const target = targetAgent();\n if (!source || !target) return false;\n return checkCanTranslate(source, target);\n };\n\n const handlePreview = () => {\n const skill = selectedSkill();\n const target = targetAgent();\n if (!skill || !target || !skill.path) {\n setError('No skill path available for preview');\n return;\n }\n\n try {\n const content = readSkillContent(skill.path);\n if (!content) {\n setError('Could not read skill content');\n return;\n }\n\n const previewResult = previewTranslation(content, target);\n setPreview(previewResult);\n setError(null);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Preview failed');\n }\n };\n\n const handleTranslate = async () => {\n const skill = selectedSkill();\n const target = targetAgent();\n if (!skill || !target || !skill.path) {\n setError('No skill path available for translation');\n return;\n }\n\n const content = readSkillContent(skill.path);\n if (!content) {\n setError('Could not read skill content');\n return;\n }\n\n setTranslating(true);\n setResult(null);\n setError(null);\n\n try {\n const translationResult = translate(content, target);\n setResult({\n success: translationResult.success,\n content: translationResult.content,\n filename: translationResult.filename,\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Translation failed');\n } finally {\n setTranslating(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'skills') {\n const max = skills().length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else if (focusedPane() === 'source') {\n const max = supportedAgents().length - 1;\n setSourceAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = supportedAgents().length - 1;\n setTargetAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab') {\n setFocusedPane((p) => {\n if (p === 'skills') return 'source';\n if (p === 'source') return 'target';\n return 'skills';\n });\n } else if (key.name === 'p') handlePreview();\n else if (key.name === 'return' || key.name === 't') handleTranslate();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (result() || preview()) {\n setResult(null);\n setPreview(null);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n const visibleAgents = () => supportedAgents().slice(0, 6);\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Translate Skills\"\n subtitle=\"Convert skills between agent formats\"\n icon=\"⇄\"\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading agents and skills...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'source'\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n Source Agent\n </text>\n <Show when={sourceAgent()}>\n <text fg={terminalColors.accent}>\n <b>\n {AGENT_LOGOS[sourceAgent()!]?.icon || '◇'}{' '}\n {AGENT_LOGOS[sourceAgent()!]?.name || sourceAgent()}\n </b>\n </text>\n <text fg={terminalColors.textMuted}>\n {getAgentFormatInfo(sourceAgent()!).formatName}\n </text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" width={5} justifyContent=\"center\">\n <text fg={terminalColors.textMuted}> → </text>\n </box>\n\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'target'\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n Target Agent\n </text>\n <Show when={targetAgent()}>\n <text fg={terminalColors.text}>\n <b>\n {AGENT_LOGOS[targetAgent()!]?.icon || '◇'}{' '}\n {AGENT_LOGOS[targetAgent()!]?.name || targetAgent()}\n </b>\n </text>\n <text fg={terminalColors.textMuted}>\n {getAgentFormatInfo(targetAgent()!).formatName}\n </text>\n </Show>\n </box>\n\n <Show when={!canDoTranslation()}>\n <text fg={terminalColors.warning}> ⚠ Incompatible</text>\n </Show>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Select Skill</b>\n </text>\n <text> </text>\n\n <Show\n when={skills().length > 0}\n fallback={\n <EmptyState\n title=\"No skills installed\"\n description=\"Install skills first\"\n action={{ label: 'Browse', key: 'b' }}\n compact\n />\n }\n >\n <For each={skills().slice(0, 6)}>\n {(skill, idx) => {\n const selected = () =>\n focusedPane() === 'skills' && idx() === selectedSkillIndex();\n return (\n <box marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n >\n {selected() ? '▸ ' : ' '}\n {skill.name}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={skills().length > 6}>\n <text fg={terminalColors.textMuted}>+{skills().length - 6} more</text>\n </Show>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={35}>\n <Show when={focusedPane() !== 'skills'}>\n <text fg={terminalColors.text}>\n <b>{focusedPane() === 'source' ? 'Source' : 'Target'} Agents</b>\n </text>\n <text> </text>\n <For each={visibleAgents()}>\n {(agent, idx) => {\n const isSource = focusedPane() === 'source';\n const selectedIdx = isSource ? sourceAgentIndex() : targetAgentIndex();\n const selected = () => idx() === selectedIdx;\n return (\n <box marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.textSecondary}\n >\n {selected() ? '▸ ' : ' '}\n {AGENT_LOGOS[agent]?.icon || '◇'} {AGENT_LOGOS[agent]?.name || agent}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={focusedPane() === 'skills' && selectedSkill()}>\n <text fg={terminalColors.text}>\n <b>Skill Info</b>\n </text>\n <text> </text>\n <text fg={terminalColors.textMuted}>Name: {selectedSkill()!.name}</text>\n <text fg={terminalColors.textMuted}>\n Path: {selectedSkill()!.path ? 'Available' : 'Unknown'}\n </text>\n </Show>\n </box>\n </box>\n\n <Show when={translating()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Translating skill...\" />\n </Show>\n\n <Show when={preview() && !translating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Preview</b>\n </text>\n <text\n fg={\n preview()!.compatible ? terminalColors.success : terminalColors.warning\n }\n >\n {preview()!.compatible ? '✓ Compatible' : '⚠ Has issues'}\n </text>\n <Show when={preview()!.issues.length > 0}>\n <For each={preview()!.issues.slice(0, 2)}>\n {(issue) => <text fg={terminalColors.warning}>• {issue}</text>}\n </For>\n </Show>\n </Show>\n\n <Show when={result() && !translating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text\n fg={result()!.success ? terminalColors.success : terminalColors.error}\n >\n {result()!.success ? '✓ Translation complete' : '✗ Translation failed'}\n </text>\n <Show when={result()!.filename}>\n <text fg={terminalColors.textMuted}>Output: {result()!.filename}</text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n Tab switch pane j/k navigate p preview Enter translate Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadProjectContext,\n analyzeProjectContext,\n refreshContext,\n exportContext,\n getStackTags,\n type ContextServiceState,\n} from '../services/context.service.js';\n\ninterface ContextProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Context(props: ContextProps) {\n const [state, setState] = createSignal<ContextServiceState>({\n context: null,\n stack: null,\n loading: true,\n analyzing: false,\n error: null,\n });\n const [tags, setTags] = createSignal<string[]>([]);\n const [selectedSection, setSelectedSection] = createSignal(0);\n\n const sections = ['Overview', 'Languages', 'Frameworks', 'Libraries', 'Patterns'];\n\n const moveSection = (delta: number) => {\n setSelectedSection((i) =>\n Math.max(0, Math.min(sections.length - 1, i + delta))\n );\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'h' || key.name === 'left') moveSection(-1);\n else if (key.name === 'l' || key.name === 'right') moveSection(1);\n else if (key.name === 'r') handleRefresh();\n else if (key.name === 'e') handleExport();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n let result = await loadProjectContext();\n if (!result.context) {\n result = await analyzeProjectContext();\n }\n setState(result);\n setTags(await getStackTags());\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to load context',\n }));\n }\n };\n\n const handleRefresh = async () => {\n setState((s) => ({ ...s, analyzing: true, error: null }));\n try {\n const result = await refreshContext();\n setState(result);\n setTags(await getStackTags());\n } catch (err) {\n setState((s) => ({\n ...s,\n analyzing: false,\n error: err instanceof Error ? err.message : 'Failed to refresh context',\n }));\n }\n };\n\n const handleExport = async () => {\n try {\n await exportContext(undefined, 'json');\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to export context',\n }));\n }\n };\n\n const currentSection = () => sections[selectedSection()];\n const ctx = () => state().context;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Project Context\"\n subtitle=\"Analyze your project environment\"\n icon=\"◉\"\n count={tags().length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading || state().analyzing}>\n <Spinner\n label={state().analyzing ? 'Analyzing project...' : 'Loading context...'}\n />\n </Show>\n\n <Show when={!state().loading && !state().error && ctx()}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" marginBottom={1}>\n <For each={sections}>\n {(section, idx) => (\n <box marginRight={2}>\n <text\n fg={\n idx() === selectedSection()\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n {idx() === selectedSection() ? '▸ ' : ' '}\n {section}\n </text>\n </box>\n )}\n </For>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={currentSection() === 'Overview'}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Project:</text>\n <text fg={terminalColors.text}>{ctx()!.projectName}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Path:</text>\n <text fg={terminalColors.textSecondary}>{ctx()!.rootPath}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Languages:</text>\n <text fg={terminalColors.accent}>{ctx()!.languages.length}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Frameworks:</text>\n <text fg={terminalColors.accent}>{ctx()!.frameworks.length}</text>\n </box>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Libraries:</text>\n <text fg={terminalColors.accent}>{ctx()!.libraries.length}</text>\n </box>\n <Show when={ctx()!.lastUpdated}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>Last Updated:</text>\n <text fg={terminalColors.textSecondary}>{ctx()!.lastUpdated}</text>\n </box>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Languages'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.languages.length > 0}\n fallback={<EmptyState title=\"No languages detected\" compact />}\n >\n <For each={ctx()!.languages}>\n {(lang) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {lang}\n </text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Frameworks'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.frameworks.length > 0}\n fallback={<EmptyState title=\"No frameworks detected\" compact />}\n >\n <For each={ctx()!.frameworks}>\n {(fw) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {fw}\n </text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Libraries'}>\n <box flexDirection=\"column\">\n <Show\n when={ctx()!.libraries.length > 0}\n fallback={<EmptyState title=\"No libraries detected\" compact />}\n >\n <For each={ctx()!.libraries.slice(0, 15)}>\n {(lib) => (\n <box marginBottom={1}>\n <text fg={terminalColors.text}>\n • {lib}\n </text>\n </box>\n )}\n </For>\n <Show when={ctx()!.libraries.length > 15}>\n <text fg={terminalColors.textMuted}>\n +{ctx()!.libraries.length - 15} more\n </text>\n </Show>\n </Show>\n </box>\n </Show>\n\n <Show when={currentSection() === 'Patterns'}>\n <box flexDirection=\"column\">\n <Show\n when={Object.keys(ctx()!.patterns).length > 0}\n fallback={<EmptyState title=\"No patterns detected\" compact />}\n >\n <For each={Object.entries(ctx()!.patterns)}>\n {([key, value]) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted} width={18}>{key}:</text>\n <text fg={terminalColors.text}>{String(value)}</text>\n </box>\n )}\n </For>\n </Show>\n </box>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={tags().length > 0}>\n <box flexDirection=\"row\" flexWrap=\"wrap\">\n <text fg={terminalColors.textMuted}>Tags: </text>\n <For each={tags().slice(0, 8)}>\n {(tag, idx) => (\n <text fg={terminalColors.textSecondary}>\n {tag}\n {idx() < Math.min(tags().length, 8) - 1 ? ', ' : ''}\n </text>\n )}\n </For>\n <Show when={tags().length > 8}>\n <text fg={terminalColors.textMuted}> +{tags().length - 8}</text>\n </Show>\n </box>\n </Show>\n </box>\n </Show>\n\n <Show when={!state().loading && !state().error && !ctx()}>\n <EmptyState\n icon=\"◉\"\n title=\"No context found\"\n description=\"Run analysis to detect project context\"\n action={{ label: 'Analyze', key: 'r' }}\n />\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n ←/→ sections r refresh e export Esc back\n </text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkills } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { AGENT_LOGOS } from '../theme/symbols.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport { getSupportedAgents } from '../services/translator.service.js';\nimport { getAgentAvailability } from '../services/executor.service.js';\nimport type { AgentType } from '@skillkit/core';\n\ninterface SyncProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface AgentSyncInfo {\n type: AgentType;\n name: string;\n icon: string;\n available: boolean;\n synced: boolean;\n skillCount: number;\n}\n\nexport function Sync(props: SyncProps) {\n const [agents, setAgents] = createSignal<AgentSyncInfo[]>([]);\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [syncStatus, setSyncStatus] = createSignal<'idle' | 'syncing' | 'done' | 'error'>('idle');\n const [syncMessage, setSyncMessage] = createSignal('');\n const [loading, setLoading] = createSignal(true);\n const [error, setError] = createSignal<string | null>(null);\n const [skillCount, setSkillCount] = createSignal(0);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setError(null);\n\n try {\n const skillsData = loadSkills();\n setSkillCount(skillsData.skills.length);\n\n const supportedAgents = getSupportedAgents();\n const availability = await getAgentAvailability();\n\n const agentInfos: AgentSyncInfo[] = supportedAgents.slice(0, isCompact() ? 4 : 8).map((agent) => {\n const logo = AGENT_LOGOS[agent];\n const availInfo = availability.find((a) => a.agent === agent);\n\n return {\n type: agent,\n name: logo?.name || agent,\n icon: logo?.icon || '◇',\n available: availInfo?.available || false,\n synced: false,\n skillCount: 0,\n };\n });\n\n setAgents(agentInfos);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load agents');\n }\n\n setLoading(false);\n };\n\n const handleSync = async () => {\n const agentList = agents();\n if (agentList.length === 0) return;\n\n const idx = selectedIndex();\n const agent = agentList[idx];\n if (!agent || !agent.available) return;\n\n const agentName = agent.name;\n const currentSkillCount = skillCount();\n\n setSyncStatus('syncing');\n setSyncMessage(`Syncing to ${agentName}...`);\n\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n setAgents((prev) =>\n prev.map((a, i) =>\n i === idx\n ? { ...a, synced: true, skillCount: currentSkillCount }\n : a\n )\n );\n\n setSyncStatus('done');\n setSyncMessage(`Synced ${currentSkillCount} skills to ${agentName}`);\n } catch {\n setSyncStatus('error');\n setSyncMessage('Sync failed');\n }\n };\n\n const handleSyncAll = async () => {\n setSyncStatus('syncing');\n setSyncMessage('Syncing to all available agents...');\n\n try {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n setAgents((prev) =>\n prev.map((a) =>\n a.available ? { ...a, synced: true, skillCount: skillCount() } : a\n )\n );\n\n const syncedCount = agents().filter((a) => a.available).length;\n setSyncStatus('done');\n setSyncMessage(`Synced to ${syncedCount} agents`);\n } catch {\n setSyncStatus('error');\n setSyncMessage('Sync failed');\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = agents().length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleSync();\n else if (key.name === 'a') handleSyncAll();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const syncedCount = createMemo(() => agents().filter((a) => a.synced).length);\n const availableCount = createMemo(() => agents().filter((a) => a.available).length);\n const totalSkillsSynced = createMemo(() =>\n agents().reduce((sum, a) => sum + a.skillCount, 0)\n );\n\n const selectedAgent = () => {\n const agentList = agents();\n if (agentList.length === 0) return null;\n return agentList[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Sync\"\n subtitle=\"Share skills across agents\"\n icon=\"⟳\"\n count={agents().length}\n />\n\n <Show when={error()}>\n <ErrorState\n message={error()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={loading()}>\n <Spinner label=\"Loading agents...\" />\n </Show>\n\n <Show when={!loading() && !error()}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>● {syncedCount()} synced</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.accent}>◎ {availableCount()} available</text>\n <text fg={terminalColors.textMuted}> | </text>\n <text fg={terminalColors.text}>{skillCount()} skills to sync</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={syncStatus() === 'syncing'}>\n <StatusIndicator status=\"loading\" label={syncMessage()} />\n <text> </text>\n </Show>\n\n <Show when={syncStatus() === 'done'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.success}>✓ </text>\n <text fg={terminalColors.text}>{syncMessage()}</text>\n </box>\n </Show>\n\n <Show when={syncStatus() === 'error'}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.error}>✗ </text>\n <text fg={terminalColors.text}>{syncMessage()}</text>\n </box>\n </Show>\n\n <Show\n when={agents().length > 0}\n fallback={\n <EmptyState\n icon=\"⟳\"\n title=\"No agents found\"\n description=\"Install AI coding agents to sync skills\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Agents</b>\n </text>\n <text> </text>\n\n <For each={agents()}>\n {(agent, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={\n selected()\n ? terminalColors.accent\n : agent.available\n ? terminalColors.text\n : terminalColors.textMuted\n }\n width={20}\n >\n {agent.icon} {agent.name}\n </text>\n <text\n fg={\n agent.synced\n ? terminalColors.success\n : agent.available\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n width={3}\n >\n {agent.synced ? '✓' : agent.available ? '○' : '✗'}\n </text>\n <text fg={terminalColors.textMuted} width={12}>\n {agent.skillCount > 0 ? `${agent.skillCount} skills` : ''}\n </text>\n <Show when={!agent.available}>\n <text fg={terminalColors.textMuted}>(unavailable)</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={selectedAgent() && !selectedAgent()!.available}>\n <text> </text>\n <text fg={terminalColors.warning}>\n ⚠ {selectedAgent()!.name} is not installed or available\n </text>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter sync selected a sync all r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport {\n loadMemories,\n deleteMemoryEntry,\n clearMemory,\n initializeMemory,\n type MemoryServiceState,\n type MemoryEntry,\n} from '../services/memory.service.js';\n\ninterface MemoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Memory(props: MemoryProps) {\n const [state, setState] = createSignal<MemoryServiceState>({\n entries: [],\n status: null,\n paths: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadMemories();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load memories',\n }));\n }\n };\n\n const handleDelete = async () => {\n const entries = state().entries;\n if (entries.length === 0) return;\n\n const entry = entries[selectedIndex()];\n if (!entry) return;\n\n try {\n const success = await deleteMemoryEntry(entry.key);\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to delete entry',\n }));\n }\n };\n\n const handleClearAll = async () => {\n try {\n const success = await clearMemory(undefined, 'all');\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to clear memory',\n }));\n }\n };\n\n const handleInitialize = async () => {\n try {\n const success = await initializeMemory();\n if (success) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to initialize memory',\n }));\n }\n };\n\n const getTypeIcon = (type: MemoryEntry['type']): string => {\n switch (type) {\n case 'index':\n return '◈';\n case 'learning':\n return '◇';\n case 'observation':\n return '○';\n default:\n return '•';\n }\n };\n\n const selectedEntry = () => {\n const entries = state().entries;\n if (entries.length === 0) return null;\n return entries[selectedIndex()];\n };\n\n const detailFields = () => {\n const entry = selectedEntry();\n if (!entry) return [];\n\n return [\n { label: 'Key', value: entry.key },\n { label: 'Type', value: entry.type },\n { label: 'Size', value: entry.size },\n { label: 'Updated', value: entry.updated },\n ];\n };\n\n useKeyboard((key: { name?: string }) => {\n const entries = state().entries;\n const maxIndex = Math.max(0, entries.length - 1);\n\n if (key.name === 'j' || key.name === 'down') {\n setSelectedIndex((prev) => Math.min(prev + 1, maxIndex));\n } else if (key.name === 'k' || key.name === 'up') {\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\n } else if (key.name === 'return') {\n if (entries.length > 0) {\n setShowDetail(true);\n }\n } else if (key.name === 'd') {\n handleDelete();\n } else if (key.name === 'c') {\n handleClearAll();\n } else if (key.name === 'i') {\n handleInitialize();\n } else if (key.name === 'r') {\n loadData();\n } else if (key.name === 'escape') {\n if (showDetail()) {\n setShowDetail(false);\n } else {\n props.onNavigate('home');\n }\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Memory\"\n subtitle=\"Manage persistent session memory\"\n count={state().entries.length}\n icon=\"◎\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading memories...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show when={state().status}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Status: </text>\n <text\n fg={\n state().status?.projectMemoryExists || state().status?.globalMemoryExists\n ? terminalColors.success\n : terminalColors.warning\n }\n >\n {state().status?.projectMemoryExists ? 'Project ✓' : 'Project ✗'}\n </text>\n <text fg={terminalColors.textMuted}> | </text>\n <text\n fg={state().status?.globalMemoryExists ? terminalColors.success : terminalColors.warning}\n >\n {state().status?.globalMemoryExists ? 'Global ✓' : 'Global ✗'}\n </text>\n </box>\n </Show>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().entries.length > 0}\n fallback={\n <EmptyState\n icon=\"◎\"\n title=\"No memories stored\"\n description=\"Memory will be created as you use skills\"\n action={{ label: 'Initialize', key: 'i' }}\n />\n }\n >\n <text fg={terminalColors.text}><b>Stored Memories</b></text>\n <text> </text>\n\n <For each={state().entries}>\n {(mem, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {idx() === selectedIndex() ? '▸ ' : ' '}\n </text>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n >\n {getTypeIcon(mem.type)}{' '}\n </text>\n <text\n fg={idx() === selectedIndex() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {mem.key}\n </text>\n <text fg={terminalColors.textMuted} width={12}>\n {mem.size}\n </text>\n <text fg={terminalColors.textMuted}>{mem.updated}</text>\n </box>\n )}\n </For>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedEntry()}>\n <DetailPane\n title={selectedEntry()!.key}\n icon={getTypeIcon(selectedEntry()!.type)}\n fields={detailFields()}\n actions={[\n { key: 'd', label: 'Delete' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show when={state().paths}>\n <text fg={terminalColors.textMuted}>\n Project: {state().paths?.projectMemoryDir || 'Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}>\n Global: {state().paths?.globalMemoryDir || 'Not initialized'}\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter view d delete c clear all i init Esc back\n </text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadWorkflowsList,\n loadWorkflow,\n executeWorkflow,\n type WorkflowServiceState,\n type WorkflowListItem,\n} from '../services/workflow.service.js';\n\ninterface WorkflowProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Workflow(props: WorkflowProps) {\n const [state, setState] = createSignal<WorkflowServiceState>({\n workflows: [],\n current: null,\n progress: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [executing, setExecuting] = createSignal(false);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadWorkflowsList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load workflows',\n }));\n }\n };\n\n const handleExecute = async () => {\n if (executing()) return;\n\n const workflows = state().workflows;\n if (workflows.length === 0) return;\n\n const workflow = workflows[selectedIndex()];\n if (!workflow) return;\n\n setExecuting(true);\n try {\n const result = await executeWorkflow(workflow.name, undefined, (progress) => {\n setState((s) => ({ ...s, progress }));\n });\n\n if (result) {\n loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Workflow execution failed',\n }));\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().workflows.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'r') loadData();\n else if (key.name === 'x') handleExecute();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const successCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'completed').length\n );\n const failedCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'failed').length\n );\n const runningCount = createMemo(\n () => state().workflows.filter((w) => w.status === 'running').length\n );\n\n const selectedWorkflow = () => {\n const workflows = state().workflows;\n if (workflows.length === 0) return null;\n return workflows[selectedIndex()];\n };\n\n const getStatusIcon = (status: WorkflowListItem['status']): string => {\n switch (status) {\n case 'completed':\n return '✓';\n case 'failed':\n return '✗';\n case 'running':\n return '⟳';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: WorkflowListItem['status']): string => {\n switch (status) {\n case 'completed':\n return terminalColors.success;\n case 'failed':\n return terminalColors.error;\n case 'running':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const divider = () => '─'.repeat(contentWidth());\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Workflows\"\n subtitle=\"Automate skill chains\"\n icon=\"~\"\n count={state().workflows.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading workflows...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <Show when={successCount() > 0}>\n <text fg={terminalColors.success}>✓ {successCount()} passed</text>\n <text fg={terminalColors.textMuted}> | </text>\n </Show>\n <Show when={failedCount() > 0}>\n <text fg={terminalColors.error}>✗ {failedCount()} failed</text>\n <text fg={terminalColors.textMuted}> | </text>\n </Show>\n <Show when={runningCount() > 0}>\n <text fg={terminalColors.accent}>⟳ {runningCount()} running</text>\n </Show>\n <Show when={successCount() === 0 && failedCount() === 0 && runningCount() === 0}>\n <text fg={terminalColors.textMuted}>No workflows run yet</text>\n </Show>\n </box>\n\n <text fg={terminalColors.textMuted}>{divider()}</text>\n <text> </text>\n\n <Show\n when={state().workflows.length > 0}\n fallback={\n <EmptyState\n icon=\"~\"\n title=\"No workflows found\"\n description=\"Create workflows in .skillkit/workflows/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Workflows</b>\n </text>\n <text> </text>\n\n <For each={state().workflows}>\n {(wf, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {wf.name}\n </text>\n <text fg={getStatusColor(wf.status)} width={3}>\n {getStatusIcon(wf.status)}{' '}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n {wf.skills}s / {wf.waves}w\n </text>\n <Show when={wf.lastRun}>\n <text fg={terminalColors.textMuted}> • {wf.lastRun}</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Executing workflow...\" />\n <Show when={state().progress}>\n <text fg={terminalColors.textMuted}>\n Wave {state().progress?.currentWave}/{state().progress?.totalWaves} •{' '}\n Skill {state().progress?.currentSkill}/{state().progress?.totalSkills}\n </text>\n </Show>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedWorkflow()}>\n <DetailPane\n title={selectedWorkflow()!.name}\n subtitle={selectedWorkflow()!.description}\n icon=\"~\"\n fields={[\n { label: 'Skills', value: String(selectedWorkflow()!.skills) },\n { label: 'Waves', value: String(selectedWorkflow()!.waves) },\n { label: 'Status', value: selectedWorkflow()!.status },\n {\n label: 'Last Run',\n value: selectedWorkflow()!.lastRun || 'Never',\n },\n ]}\n actions={[\n { key: 'x', label: 'Execute' },\n { key: 'e', label: 'Edit' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={28}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>{divider()}</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details x execute r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen, loadSkillsWithDetails, type SkillWithDetails } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n getAgentAvailability,\n executeSkillWithAgent,\n listAvailableAgents,\n type AgentAvailability,\n} from '../services/executor.service.js';\nimport type { AgentType } from '@skillkit/core';\n\ninterface ExecuteProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Execute(props: ExecuteProps) {\n const [skills, setSkills] = createSignal<SkillWithDetails[]>([]);\n const [agents, setAgents] = createSignal<AgentAvailability[]>([]);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [selectedAgentIndex, setSelectedAgentIndex] = createSignal(0);\n const [focusedPane, setFocusedPane] = createSignal<'skills' | 'agents'>('skills');\n const [executing, setExecuting] = createSignal(false);\n const [executionResult, setExecutionResult] = createSignal<{\n success: boolean;\n output: string;\n error?: string;\n } | null>(null);\n const [loading, setLoading] = createSignal(true);\n const [loadError, setLoadError] = createSignal<string | null>(null);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setLoading(true);\n setLoadError(null);\n\n try {\n const skillsWithDetails = loadSkillsWithDetails();\n setSkills(skillsWithDetails);\n\n const agentAvailability = await getAgentAvailability();\n setAgents(agentAvailability);\n } catch (err) {\n setLoadError(err instanceof Error ? err.message : 'Failed to load');\n } finally {\n setLoading(false);\n }\n };\n\n const handleExecute = async () => {\n if (executing()) return;\n\n const skillList = skills();\n const agentList = agents();\n\n if (skillList.length === 0 || agentList.length === 0) return;\n\n const skill = skillList[selectedSkillIndex()];\n const agent = agentList[selectedAgentIndex()];\n\n if (!skill || !agent || !agent.available) return;\n\n setExecuting(true);\n setExecutionResult(null);\n\n try {\n const result = await executeSkillWithAgent(\n skill.path,\n agent.agent,\n { timeout: 60000 }\n );\n\n setExecutionResult({\n success: result.success,\n output: result.output || '',\n error: result.error,\n });\n } catch (err) {\n setExecutionResult({\n success: false,\n output: '',\n error: err instanceof Error ? err.message : 'Execution failed',\n });\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'skills') {\n const max = skills().length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = agents().length - 1;\n setSelectedAgentIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab' || key.name === 'l' || key.name === 'right') {\n setFocusedPane((p) => (p === 'skills' ? 'agents' : 'skills'));\n }\n else if (key.name === 'h' || key.name === 'left') {\n setFocusedPane((p) => (p === 'agents' ? 'skills' : 'agents'));\n }\n else if (key.name === 'return' || key.name === 'x') handleExecute();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (executionResult()) setExecutionResult(null);\n else props.onNavigate('home');\n }\n });\n\n const selectedSkill = () => {\n const list = skills();\n if (list.length === 0) return null;\n return list[selectedSkillIndex()];\n };\n\n const selectedAgent = () => {\n const list = agents();\n if (list.length === 0) return null;\n return list[selectedAgentIndex()];\n };\n\n const MAX_VISIBLE = 8;\n\n const skillsWindow = createMemo(() => {\n const list = skills();\n const selected = selectedSkillIndex();\n const total = list.length;\n if (total <= MAX_VISIBLE) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(MAX_VISIBLE / 2));\n start = Math.min(start, total - MAX_VISIBLE);\n return { start, items: list.slice(start, start + MAX_VISIBLE) };\n });\n\n const agentsWindow = createMemo(() => {\n const list = agents();\n const selected = selectedAgentIndex();\n const total = list.length;\n if (total <= MAX_VISIBLE) return { start: 0, items: list };\n let start = Math.max(0, selected - Math.floor(MAX_VISIBLE / 2));\n start = Math.min(start, total - MAX_VISIBLE);\n return { start, items: list.slice(start, start + MAX_VISIBLE) };\n });\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Execute\"\n subtitle=\"Run skills with AI agents\"\n icon=\"▶\"\n />\n\n <Show when={loading()}>\n <Spinner label=\"Loading...\" />\n </Show>\n\n <Show when={loadError()}>\n <ErrorState\n message={loadError()!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={!loading() && !loadError()}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Skills</b>\n </text>\n <text> </text>\n\n <Show\n when={skills().length > 0}\n fallback={\n <EmptyState\n title=\"No skills installed\"\n description=\"Browse to install\"\n action={{ label: 'Browse', key: 'b' }}\n compact\n />\n }\n >\n <Show when={skillsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {skillsWindow().start} more</text>\n </Show>\n <For each={skillsWindow().items}>\n {(skill, idx) => {\n const originalIndex = () => skillsWindow().start + idx();\n const isSelected = () =>\n focusedPane() === 'skills' && originalIndex() === selectedSkillIndex();\n return (\n <box marginBottom={1}>\n <text\n fg={isSelected() ? terminalColors.accent : terminalColors.textSecondary}\n >\n {isSelected() ? '▸ ' : ' '}\n {skill.name}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={skillsWindow().start + MAX_VISIBLE < skills().length}>\n <text fg={terminalColors.textMuted}> ▼ {skills().length - skillsWindow().start - MAX_VISIBLE} more</text>\n </Show>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={25}>\n <text\n fg={\n focusedPane() === 'agents'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Agents</b>\n </text>\n <text> </text>\n\n <Show\n when={agents().length > 0}\n fallback={\n <EmptyState\n title=\"No agents found\"\n compact\n />\n }\n >\n <Show when={agentsWindow().start > 0}>\n <text fg={terminalColors.textMuted}> ▲ {agentsWindow().start} more</text>\n </Show>\n <For each={agentsWindow().items}>\n {(agent, idx) => {\n const originalIndex = () => agentsWindow().start + idx();\n const isSelected = () =>\n focusedPane() === 'agents' && originalIndex() === selectedAgentIndex();\n const available = agent.available;\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={\n isSelected()\n ? terminalColors.accent\n : available\n ? terminalColors.textSecondary\n : terminalColors.textMuted\n }\n >\n {isSelected() ? '▸ ' : ' '}\n {agent.agent}\n </text>\n <text fg={available ? terminalColors.success : terminalColors.error}>\n {' '}\n {available ? '●' : '○'}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={agentsWindow().start + MAX_VISIBLE < agents().length}>\n <text fg={terminalColors.textMuted}> ▼ {agents().length - agentsWindow().start - MAX_VISIBLE} more</text>\n </Show>\n </Show>\n </box>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <Show when={selectedSkill() && selectedAgent()}>\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>Selected: </text>\n <text fg={terminalColors.accent}>{selectedSkill()!.name}</text>\n <text fg={terminalColors.textMuted}> → </text>\n <text\n fg={\n selectedAgent()!.available\n ? terminalColors.accent\n : terminalColors.textMuted\n }\n >\n {selectedAgent()!.agent}\n </text>\n <Show when={!selectedAgent()!.available}>\n <text fg={terminalColors.warning}> (unavailable)</text>\n </Show>\n </box>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Executing skill...\" />\n </Show>\n\n <Show when={executionResult() && !executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text\n fg={\n executionResult()!.success\n ? terminalColors.success\n : terminalColors.error\n }\n >\n {executionResult()!.success ? '✓ Execution completed' : '✗ Execution failed'}\n </text>\n <Show when={executionResult()!.error}>\n <text fg={terminalColors.error}>{executionResult()!.error}</text>\n </Show>\n <Show when={executionResult()!.output}>\n <text fg={terminalColors.textMuted}>\n {executionResult()!.output.slice(0, 200)}\n {executionResult()!.output.length > 200 ? '...' : ''}\n </text>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Tab/←/→ switch pane j/k navigate Enter execute r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface HistoryProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function History(props: HistoryProps) {\n const history = [\n { skill: 'tdd-workflow', time: '10:32 AM', duration: '2.3s', status: 'success' },\n { skill: 'code-review', time: '10:15 AM', duration: '5.1s', status: 'success' },\n { skill: 'deploy-check', time: '09:45 AM', duration: '8.7s', status: 'failed' },\n { skill: 'lint-fix', time: '09:30 AM', duration: '1.2s', status: 'success' },\n ];\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"History\"\n subtitle=\"View execution history\"\n count={history.length}\n icon=\"◷\"\n />\n\n <text fg={terminalColors.text}><b>Recent Executions</b></text>\n <text> </text>\n\n <For each={history}>\n {(item, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={idx() === 0 ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {idx() === 0 ? '\\u25B8 ' : ' '}{item.skill}\n </text>\n <text fg={terminalColors.textMuted} width={12}>{item.time}</text>\n <text fg={terminalColors.textMuted} width={10}>{item.duration}</text>\n <text\n fg={item.status === 'success' ? terminalColors.success : terminalColors.error}\n >\n {item.status === 'success' ? '\\u2713 success' : '\\u2717 failed'}\n </text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Press Enter to view details, 'r' to re-run, 'c' to clear\n </text>\n </box>\n );\n}\n","import { createSignal, createEffect, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadTeamConfig,\n initializeTeam,\n shareSkill,\n type TeamServiceState,\n type TeamMemberDisplay,\n type SharedSkillDisplay,\n} from '../services/team.service.js';\n\ninterface TeamProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ntype FocusedPane = 'members' | 'skills';\n\nexport function Team(props: TeamProps) {\n const [state, setState] = createSignal<TeamServiceState>({\n config: null,\n members: [],\n sharedSkills: [],\n loading: true,\n error: null,\n });\n const [focusedPane, setFocusedPane] = createSignal<FocusedPane>('members');\n const [selectedMemberIndex, setSelectedMemberIndex] = createSignal(0);\n const [selectedSkillIndex, setSelectedSkillIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [initializing, setInitializing] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadTeamConfig();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load team',\n }));\n }\n };\n\n const handleInitialize = async () => {\n if (initializing()) return;\n setInitializing(true);\n try {\n const success = await initializeTeam('My Team');\n if (success) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to initialize team',\n }));\n } finally {\n setInitializing(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n if (focusedPane() === 'members') {\n const max = state().members.length - 1;\n setSelectedMemberIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n } else {\n const max = state().sharedSkills.length - 1;\n setSelectedSkillIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n }\n };\n\n useKeyboard((key: { name?: string }) => {\n if (showDetail()) {\n if (key.name === 'escape') {\n setShowDetail(false);\n }\n return;\n }\n\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'tab' || key.name === 'l' || key.name === 'right') {\n setFocusedPane((p) => (p === 'members' ? 'skills' : 'members'));\n } else if (key.name === 'h' || key.name === 'left') {\n setFocusedPane((p) => (p === 'skills' ? 'members' : 'skills'));\n } else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'i') handleInitialize();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const getStatusIcon = (status: TeamMemberDisplay['status']): string => {\n switch (status) {\n case 'active':\n return '●';\n case 'inactive':\n return '○';\n case 'pending':\n return '◐';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: TeamMemberDisplay['status']): string => {\n switch (status) {\n case 'active':\n return terminalColors.success;\n case 'inactive':\n return terminalColors.textMuted;\n case 'pending':\n return terminalColors.warning;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedMember = () => {\n const members = state().members;\n if (members.length === 0) return null;\n return members[selectedMemberIndex()];\n };\n\n const selectedSharedSkill = () => {\n const skills = state().sharedSkills;\n if (skills.length === 0) return null;\n return skills[selectedSkillIndex()];\n };\n\n const memberDetailFields = () => {\n const member = selectedMember();\n if (!member) return [];\n\n return [\n { label: 'Name', value: member.name },\n { label: 'Role', value: member.role },\n { label: 'Skills', value: String(member.skills) },\n { label: 'Status', value: member.status },\n { label: 'Last Sync', value: member.lastSync || 'Never' },\n ];\n };\n\n const skillDetailFields = () => {\n const skill = selectedSharedSkill();\n if (!skill) return [];\n\n return [\n { label: 'Name', value: skill.name },\n { label: 'Shared By', value: skill.sharedBy },\n { label: 'Shared At', value: skill.sharedAt },\n { label: 'Agents', value: skill.agents.join(', ') || 'All' },\n ];\n };\n\n const activeCount = createMemo(\n () => state().members.filter((m) => m.status === 'active').length\n );\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Team\"\n subtitle=\"Collaborate with your development team\"\n count={state().members.length}\n icon=\"◉\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading team...\" />\n </Show>\n\n <Show when={initializing()}>\n <StatusIndicator status=\"loading\" label=\"Initializing team...\" />\n </Show>\n\n <Show when={!state().loading && !state().error && !initializing()}>\n <Show\n when={state().config}\n fallback={\n <EmptyState\n icon=\"◉\"\n title=\"No team configured\"\n description=\"Initialize a team to start collaborating\"\n action={{ label: 'Initialize', key: 'i' }}\n />\n }\n >\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Team: </text>\n <text fg={terminalColors.accent}>{state().config?.teamName || 'Unnamed'}</text>\n <text fg={terminalColors.textMuted}> • </text>\n <text fg={terminalColors.success}>{activeCount()} active</text>\n <text fg={terminalColors.textMuted}> • </text>\n <text fg={terminalColors.text}>{state().sharedSkills.length} shared skills</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text> </text>\n\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={30}>\n <text\n fg={\n focusedPane() === 'members'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Members</b>\n </text>\n <text> </text>\n\n <Show\n when={state().members.length > 0}\n fallback={\n <EmptyState title=\"No members\" compact />\n }\n >\n <For each={state().members}>\n {(member, idx) => {\n const selected = () =>\n focusedPane() === 'members' && idx() === selectedMemberIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={15}\n >\n {member.name}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n {member.role}\n </text>\n <text fg={getStatusColor(member.status)}>\n {getStatusIcon(member.status)}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n </box>\n\n <box width={2}>\n <text fg={terminalColors.border}>│</text>\n </box>\n\n <box flexDirection=\"column\" width={35}>\n <text\n fg={\n focusedPane() === 'skills'\n ? terminalColors.accent\n : terminalColors.text\n }\n >\n <b>Shared Skills</b>\n </text>\n <text> </text>\n\n <Show\n when={state().sharedSkills.length > 0}\n fallback={\n <EmptyState\n title=\"No shared skills\"\n description=\"Share skills with 's'\"\n compact\n />\n }\n >\n <For each={state().sharedSkills.slice(0, 8)}>\n {(skill, idx) => {\n const selected = () =>\n focusedPane() === 'skills' && idx() === selectedSkillIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={18}\n >\n {skill.name}\n </text>\n <text fg={terminalColors.textMuted}>\n by {skill.sharedBy}\n </text>\n </box>\n );\n }}\n </For>\n <Show when={state().sharedSkills.length > 8}>\n <text fg={terminalColors.textMuted}>\n +{state().sharedSkills.length - 8} more\n </text>\n </Show>\n </Show>\n </box>\n </box>\n\n <Show when={showDetail()}>\n <Show when={focusedPane() === 'members' && selectedMember()}>\n <DetailPane\n title={selectedMember()!.name}\n subtitle={selectedMember()!.role}\n icon=\"◉\"\n fields={memberDetailFields()}\n actions={[\n { key: 's', label: 'Share Skill' },\n { key: 'd', label: 'Remove' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n <Show when={focusedPane() === 'skills' && selectedSharedSkill()}>\n <DetailPane\n title={selectedSharedSkill()!.name}\n subtitle={`Shared by ${selectedSharedSkill()!.sharedBy}`}\n icon=\"◇\"\n fields={skillDetailFields()}\n actions={[\n { key: 'i', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]}\n width={30}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </Show>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n Tab/←/→ switch pane j/k navigate Enter details i init r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadPluginsList,\n enablePlugin,\n disablePlugin,\n getPluginInfo,\n type PluginServiceState,\n type PluginListItem,\n} from '../services/plugin.service.js';\nimport type { PluginManager, Plugin } from '@skillkit/core';\n\ninterface PluginsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plugins(props: PluginsProps) {\n const [state, setState] = createSignal<PluginServiceState>({\n plugins: [],\n manager: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [selectedPlugin, setSelectedPlugin] = createSignal<Plugin | null>(null);\n const [toggling, setToggling] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadPluginsList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load plugins',\n }));\n }\n };\n\n const handleToggle = async () => {\n const plugins = state().plugins;\n const manager = state().manager;\n if (plugins.length === 0 || !manager) return;\n\n const plugin = plugins[selectedIndex()];\n if (!plugin) return;\n\n setToggling(true);\n\n try {\n if (plugin.enabled) {\n await disablePlugin(plugin.name, manager);\n } else {\n await enablePlugin(plugin.name, manager);\n }\n\n await loadData();\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to toggle plugin',\n }));\n } finally {\n setToggling(false);\n }\n };\n\n const handleShowDetail = async () => {\n const plugins = state().plugins;\n const manager = state().manager;\n if (plugins.length === 0 || !manager) return;\n\n const plugin = plugins[selectedIndex()];\n if (!plugin) return;\n\n try {\n const info = await getPluginInfo(plugin.name, manager);\n setSelectedPlugin(info as Plugin | null);\n setShowDetail(true);\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to load plugin details',\n }));\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().plugins.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleShowDetail();\n else if (key.name === 'space' || key.name === 't') handleToggle();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getTypeIcon = (type: PluginListItem['type']): string => {\n switch (type) {\n case 'translator':\n return '⇄';\n case 'provider':\n return '◆';\n case 'command':\n return '⌘';\n default:\n return '◈';\n }\n };\n\n const currentPlugin = () => {\n const plugins = state().plugins;\n if (plugins.length === 0) return null;\n return plugins[selectedIndex()];\n };\n\n const detailFields = () => {\n const plugin = selectedPlugin();\n if (!plugin) return [];\n\n const current = currentPlugin();\n return [\n { label: 'Name', value: plugin.metadata.name },\n { label: 'Version', value: plugin.metadata.version },\n { label: 'Description', value: plugin.metadata.description || 'No description' },\n { label: 'Type', value: current?.type || 'unknown' },\n { label: 'Status', value: current?.enabled ? 'Enabled' : 'Disabled' },\n { label: 'Path', value: current?.path || 'N/A' },\n ];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plugins\"\n subtitle=\"Extend SkillKit with plugins\"\n count={state().plugins.length}\n icon=\"◈\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading plugins...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <Show\n when={state().plugins.length > 0}\n fallback={\n <EmptyState\n icon=\"◈\"\n title=\"No plugins installed\"\n description=\"Install plugins from ~/.skillkit/plugins/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Installed Plugins</b>\n </text>\n <text> </text>\n\n <For each={state().plugins}>\n {(plugin, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.textSecondary}\n width={3}\n >\n {getTypeIcon(plugin.type)}{' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {plugin.name}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n v{plugin.version}\n </text>\n <text\n fg={\n plugin.enabled\n ? terminalColors.success\n : terminalColors.textMuted\n }\n >\n {plugin.enabled ? '● enabled' : '○ disabled'}\n </text>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={toggling()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Toggling plugin...\" />\n </Show>\n\n <Show when={currentPlugin() && !toggling()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n <text fg={terminalColors.textMuted}>\n {currentPlugin()!.description || 'No description available'}\n </text>\n </Show>\n </box>\n\n <Show when={showDetail() && selectedPlugin()}>\n <DetailPane\n title={selectedPlugin()!.metadata.name}\n subtitle={`v${selectedPlugin()!.metadata.version}`}\n icon={getTypeIcon(currentPlugin()?.type || 'mixed')}\n fields={detailFields()}\n actions={[\n {\n key: 't',\n label: currentPlugin()?.enabled ? 'Disable' : 'Enable',\n },\n { key: 'Esc', label: 'Close' },\n ]}\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details Space toggle r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { DetailPane } from '../components/DetailPane.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadMethodologies,\n installMethodologyPack,\n uninstallMethodologyPack,\n syncMethodologyPack,\n type MethodologyServiceState,\n type MethodologyPackDisplay,\n} from '../services/methodology.service.js';\n\ninterface MethodologyProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Methodology(props: MethodologyProps) {\n const [state, setState] = createSignal<MethodologyServiceState>({\n packs: [],\n installedPacks: [],\n manager: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [showDetail, setShowDetail] = createSignal(false);\n const [installing, setInstalling] = createSignal(false);\n const [syncing, setSyncing] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadMethodologies();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load methodologies',\n }));\n }\n };\n\n const handleInstall = async () => {\n const packs = state().packs;\n if (packs.length === 0 || installing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || pack.installed) return;\n\n setInstalling(true);\n try {\n const result = await installMethodologyPack(pack.name);\n if (result) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to install pack',\n }));\n } finally {\n setInstalling(false);\n }\n };\n\n const handleUninstall = async () => {\n const packs = state().packs;\n if (packs.length === 0 || installing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || !pack.installed) return;\n\n setInstalling(true);\n try {\n const success = await uninstallMethodologyPack(pack.name);\n if (success) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to uninstall pack',\n }));\n } finally {\n setInstalling(false);\n }\n };\n\n const handleSync = async () => {\n const packs = state().packs;\n if (packs.length === 0 || syncing()) return;\n\n const pack = packs[selectedIndex()];\n if (!pack || !pack.installed) return;\n\n setSyncing(true);\n try {\n const result = await syncMethodologyPack(pack.name);\n if (result) {\n await loadData();\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Failed to sync pack',\n }));\n } finally {\n setSyncing(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().packs.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') setShowDetail(true);\n else if (key.name === 'i') handleInstall();\n else if (key.name === 'u') handleUninstall();\n else if (key.name === 's') handleSync();\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') {\n if (showDetail()) setShowDetail(false);\n else props.onNavigate('home');\n }\n });\n\n const getStatusIcon = (status: MethodologyPackDisplay['status']): string => {\n switch (status) {\n case 'synced':\n return '✓';\n case 'installed':\n return '●';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: MethodologyPackDisplay['status']): string => {\n switch (status) {\n case 'synced':\n return terminalColors.success;\n case 'installed':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedPack = () => {\n const packs = state().packs;\n if (packs.length === 0) return null;\n return packs[selectedIndex()];\n };\n\n const detailFields = () => {\n const pack = selectedPack();\n if (!pack) return [];\n\n return [\n { label: 'Name', value: pack.name },\n { label: 'Version', value: pack.version },\n { label: 'Description', value: pack.description || 'No description' },\n { label: 'Skills', value: String(pack.skills) },\n { label: 'Tags', value: pack.tags.join(', ') || 'None' },\n { label: 'Status', value: pack.status },\n ];\n };\n\n const installedCount = () => state().packs.filter((p) => p.installed).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Methodologies\"\n subtitle=\"Development methodology skill packs\"\n count={state().packs.length}\n icon=\"◎\"\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading methodologies...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" flexGrow={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>Installed: </text>\n <text fg={terminalColors.success}>{installedCount()}</text>\n <text fg={terminalColors.textMuted}> / </text>\n <text fg={terminalColors.text}>{state().packs.length}</text>\n <text fg={terminalColors.textMuted}> packs</text>\n </box>\n\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text> </text>\n\n <Show\n when={state().packs.length > 0}\n fallback={\n <EmptyState\n icon=\"◎\"\n title=\"No methodology packs found\"\n description=\"Check .skillkit/methodology/packs/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Packs</b>\n </text>\n <text> </text>\n\n <For each={state().packs}>\n {(pack, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={20}\n >\n {pack.name}\n </text>\n <text fg={terminalColors.textMuted} width={8}>\n v{pack.version}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {pack.skills} skills\n </text>\n <text fg={getStatusColor(pack.status)}>\n {getStatusIcon(pack.status)} {pack.status}\n </text>\n </box>\n <Show when={pack.description}>\n <text fg={terminalColors.textMuted}>\n {' '}{pack.description.slice(0, 45)}\n {pack.description.length > 45 ? '...' : ''}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={installing()}>\n <text> </text>\n <StatusIndicator\n status=\"loading\"\n label={selectedPack()?.installed ? 'Uninstalling...' : 'Installing...'}\n />\n </Show>\n\n <Show when={syncing()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Syncing to agents...\" />\n </Show>\n </box>\n\n <Show when={showDetail() && selectedPack()}>\n <DetailPane\n title={selectedPack()!.name}\n subtitle={`v${selectedPack()!.version}`}\n icon=\"◎\"\n fields={detailFields()}\n actions={\n selectedPack()!.installed\n ? [\n { key: 's', label: 'Sync' },\n { key: 'u', label: 'Uninstall' },\n { key: 'Esc', label: 'Close' },\n ]\n : [\n { key: 'i', label: 'Install' },\n { key: 'Esc', label: 'Close' },\n ]\n }\n width={35}\n visible={showDetail()}\n onClose={() => setShowDetail(false)}\n />\n </Show>\n </box>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate Enter details i install u uninstall s sync r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\n\ninterface ProgressBarProps {\n progress: number;\n width?: number;\n showPercentage?: boolean;\n color?: keyof typeof terminalColors;\n}\n\nexport function ProgressBar(props: ProgressBarProps) {\n const width = () => Math.max(1, Math.round(props.width ?? 20));\n const safeProgress = () => (Number.isFinite(props.progress) ? props.progress : 0);\n const showPercentage = () => props.showPercentage ?? true;\n const color = () => props.color ?? 'accent';\n\n const clampedProgress = () => Math.max(0, Math.min(100, safeProgress()));\n const filledWidth = () => Math.round((clampedProgress() / 100) * width());\n const emptyWidth = () => Math.max(0, width() - filledWidth());\n\n const filled = () => symbols.progressFilled.repeat(filledWidth());\n const empty = () => symbols.progressEmpty.repeat(emptyWidth());\n\n return (\n <box flexDirection=\"row\" gap={1}>\n <text>\n <span fg={terminalColors[color()]}>{filled()}</span>\n <span fg={terminalColors.textMuted}>{empty()}</span>\n </text>\n <Show when={showPercentage()}>\n <text fg={terminalColors.textSecondary}>{Math.round(clampedProgress())}%</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\nimport { Spinner } from '../components/Spinner.js';\nimport { ProgressBar } from '../components/ProgressBar.js';\nimport { EmptyState, ErrorState } from '../components/EmptyState.js';\nimport { StatusIndicator } from '../components/StatusIndicator.js';\nimport {\n loadPlansList,\n loadPlan,\n validatePlan,\n executePlan,\n executePlanDryRun,\n type PlanServiceState,\n type PlanListItem,\n} from '../services/plan.service.js';\n\ninterface PlanProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Plan(props: PlanProps) {\n const [state, setState] = createSignal<PlanServiceState>({\n plans: [],\n current: null,\n validation: null,\n execution: null,\n loading: true,\n error: null,\n });\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [executionProgress, setExecutionProgress] = createSignal(0);\n const [executing, setExecuting] = createSignal(false);\n const [validating, setValidating] = createSignal(false);\n\n createEffect(() => {\n loadData();\n });\n\n const loadData = async () => {\n setState((s) => ({ ...s, loading: true, error: null }));\n try {\n const result = await loadPlansList();\n setState(result);\n } catch (err) {\n setState((s) => ({\n ...s,\n loading: false,\n error: err instanceof Error ? err.message : 'Failed to load plans',\n }));\n }\n };\n\n const handleValidate = async () => {\n const plans = state().plans;\n if (plans.length === 0 || validating()) return;\n\n const planItem = plans[selectedIndex()];\n if (!planItem) return;\n\n setValidating(true);\n try {\n const plan = await loadPlan(planItem.path);\n if (plan) {\n const validation = await validatePlan(plan);\n setState((s) => ({ ...s, current: plan, validation }));\n }\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Validation failed',\n }));\n } finally {\n setValidating(false);\n }\n };\n\n const handleExecute = async (dryRun: boolean = false) => {\n const plans = state().plans;\n if (plans.length === 0 || executing()) return;\n\n const planItem = plans[selectedIndex()];\n if (!planItem) return;\n\n setExecuting(true);\n setExecutionProgress(0);\n\n try {\n const plan = await loadPlan(planItem.path);\n if (!plan) {\n setExecuting(false);\n return;\n }\n\n const executeFn = dryRun ? executePlanDryRun : executePlan;\n let completedCount = 0;\n const totalTasks = plan.tasks?.length || 0;\n const result = await executeFn(plan, undefined, (event) => {\n if (event === 'plan:task_completed') {\n completedCount++;\n setExecutionProgress(totalTasks > 0 ? (completedCount / totalTasks) * 100 : 100);\n }\n });\n\n setState((s) => ({ ...s, execution: result }));\n loadData();\n } catch (err) {\n setState((s) => ({\n ...s,\n error: err instanceof Error ? err.message : 'Execution failed',\n }));\n } finally {\n setExecuting(false);\n }\n };\n\n const handleKeyNav = (delta: number) => {\n const max = state().plans.length - 1;\n setSelectedIndex((prev) => Math.max(0, Math.min(prev + delta, max)));\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'v') handleValidate();\n else if (key.name === 'x') handleExecute(false);\n else if (key.name === 'd') handleExecute(true);\n else if (key.name === 'r') loadData();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const getStatusIcon = (status: PlanListItem['status']): string => {\n switch (status) {\n case 'completed':\n return '✓';\n case 'failed':\n return '✗';\n case 'in_progress':\n return '⟳';\n default:\n return '○';\n }\n };\n\n const getStatusColor = (status: PlanListItem['status']): string => {\n switch (status) {\n case 'completed':\n return terminalColors.success;\n case 'failed':\n return terminalColors.error;\n case 'in_progress':\n return terminalColors.accent;\n default:\n return terminalColors.textMuted;\n }\n };\n\n const selectedPlan = () => {\n const plans = state().plans;\n if (plans.length === 0) return null;\n return plans[selectedIndex()];\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Plan Execution\"\n subtitle=\"Structured multi-step execution\"\n icon=\"▣\"\n count={state().plans.length}\n />\n\n <Show when={state().error}>\n <ErrorState\n message={state().error!}\n action={{ label: 'Retry', key: 'r' }}\n compact\n />\n </Show>\n\n <Show when={state().loading}>\n <Spinner label=\"Loading plans...\" />\n </Show>\n\n <Show when={!state().loading && !state().error}>\n <Show\n when={state().plans.length > 0}\n fallback={\n <EmptyState\n icon=\"▣\"\n title=\"No plans found\"\n description=\"Create plans in .skillkit/plans/\"\n />\n }\n >\n <text fg={terminalColors.text}>\n <b>Available Plans</b>\n </text>\n <text> </text>\n\n <For each={state().plans}>\n {(plan, idx) => {\n const selected = () => idx() === selectedIndex();\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={3}\n >\n {selected() ? '▸ ' : ' '}\n </text>\n <text\n fg={selected() ? terminalColors.accent : terminalColors.text}\n width={25}\n >\n {plan.name}\n </text>\n <text fg={getStatusColor(plan.status)} width={3}>\n {getStatusIcon(plan.status)}{' '}\n </text>\n <text fg={terminalColors.textMuted} width={10}>\n {plan.tasks} tasks\n </text>\n <Show when={plan.lastModified}>\n <text fg={terminalColors.textMuted}> • {plan.lastModified}</text>\n </Show>\n </box>\n );\n }}\n </For>\n </Show>\n\n <Show when={validating()}>\n <text> </text>\n <StatusIndicator status=\"loading\" label=\"Validating plan...\" />\n </Show>\n\n <Show when={state().validation && !validating()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Validation Result</b>\n </text>\n <text\n fg={state().validation!.valid ? terminalColors.success : terminalColors.error}\n >\n {state().validation!.valid ? '✓ Valid' : '✗ Invalid'}\n </text>\n <Show when={state().validation!.issues && state().validation!.issues!.length > 0}>\n <For each={state().validation!.issues!.slice(0, 3)}>\n {(issue) => (\n <text fg={terminalColors.warning}>• {issue.message}</text>\n )}\n </For>\n </Show>\n </Show>\n\n <Show when={executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <StatusIndicator status=\"loading\" label=\"Executing plan...\" />\n <box flexDirection=\"row\" marginTop={1}>\n <text fg={terminalColors.text}>Progress: </text>\n <ProgressBar progress={executionProgress()} width={30} />\n </box>\n </Show>\n\n <Show when={state().execution && !executing()}>\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.text}>\n <b>Execution Result</b>\n </text>\n <text\n fg={state().execution!.success ? terminalColors.success : terminalColors.error}\n >\n {state().execution!.success ? '✓ Completed' : '✗ Failed'}\n </text>\n <text fg={terminalColors.textMuted}>\n Completed: {state().execution!.completedTasks.length} | Failed: {state().execution!.failedTasks.length}\n </text>\n </Show>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>─────────────────────────────</text>\n <text fg={terminalColors.textMuted}>\n j/k navigate v validate x execute d dry-run r refresh Esc back\n </text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SettingsProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\ninterface SettingItem {\n key: string;\n label: string;\n value: string;\n type: 'select' | 'path' | 'toggle';\n}\n\nconst DEFAULT_SETTINGS: SettingItem[] = [\n { key: 'defaultAgent', label: 'Default Agent', value: 'claude-code', type: 'select' },\n { key: 'skillsDir', label: 'Skills Directory', value: '.claude/skills', type: 'path' },\n { key: 'autoSync', label: 'Auto Sync', value: 'enabled', type: 'toggle' },\n { key: 'theme', label: 'Theme', value: 'dark', type: 'select' },\n { key: 'telemetry', label: 'Telemetry', value: 'disabled', type: 'toggle' },\n];\n\nexport function Settings(props: SettingsProps) {\n const [selectedIndex, setSelectedIndex] = createSignal(0);\n const [settings, setSettings] = createSignal<SettingItem[]>(DEFAULT_SETTINGS);\n const [animPhase, setAnimPhase] = createSignal(0);\n\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const contentWidth = () => Math.max(1, Math.min(cols() - 4, 60));\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n const handleKeyNav = (delta: number) => {\n setSelectedIndex(prev => Math.max(0, Math.min(prev + delta, settings().length - 1)));\n };\n\n const handleToggle = () => {\n const setting = settings()[selectedIndex()];\n if (setting?.type === 'toggle') {\n setSettings(prev => prev.map((s, i) =>\n i === selectedIndex() ? { ...s, value: s.value === 'enabled' ? 'disabled' : 'enabled' } : s\n ));\n }\n };\n\n const handleReset = () => {\n setSettings(DEFAULT_SETTINGS);\n };\n\n useKeyboard((key: { name?: string }) => {\n if (key.name === 'j' || key.name === 'down') handleKeyNav(1);\n else if (key.name === 'k' || key.name === 'up') handleKeyNav(-1);\n else if (key.name === 'return') handleToggle();\n else if (key.name === 'r') handleReset();\n else if (key.name === 'escape') props.onNavigate('home');\n });\n\n const divider = createMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>\n );\n\n const shortcuts = () => isCompact()\n ? 'j/k nav enter toggle r reset esc back'\n : 'j/k navigate enter toggle r reset defaults esc back';\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.text}>Settings</text>\n <text fg={terminalColors.textMuted}>{settings().length} options</text>\n </box>\n <text fg={terminalColors.textMuted}>configure skillkit</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <text fg={terminalColors.text}>Configuration</text>\n <text> </text>\n\n <For each={settings()}>\n {(setting, idx) => {\n const selected = () => idx() === selectedIndex();\n const indicator = () => selected() ? '>' : ' ';\n const valueColor = () => setting.type === 'toggle'\n ? (setting.value === 'enabled' ? terminalColors.success : terminalColors.textMuted)\n : terminalColors.textMuted;\n const toggleIcon = () => setting.type === 'toggle'\n ? (setting.value === 'enabled' ? '* ' : 'o ')\n : '';\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.text}>{indicator()}</text>\n <text fg={selected() ? terminalColors.accent : terminalColors.text} width={18}>\n {setting.label}\n </text>\n <text fg={valueColor()}>{toggleIcon()}{setting.value}</text>\n </box>\n );\n }}\n </For>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2 && !isCompact()}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>config: ~/.config/skillkit/config.json</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>{shortcuts()}</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, createMemo, Show, For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface HelpProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nconst SHORTCUTS = [\n { section: 'Navigation', items: [\n { key: 'h', desc: 'Home screen' },\n { key: 'b', desc: 'Browse skills' },\n { key: 'm', desc: 'Marketplace' },\n { key: 'r', desc: 'Recommendations' },\n { key: 'i', desc: 'Installed skills' },\n { key: 's', desc: 'Sync settings' },\n { key: 'f', desc: 'Find skills' },\n ]},\n { section: 'Actions', items: [\n { key: 't', desc: 'Translate skills' },\n { key: 'w', desc: 'Workflows' },\n { key: 'x', desc: 'Execute' },\n { key: 'n', desc: 'Plan' },\n { key: 'v', desc: 'Validate' },\n { key: 'u', desc: 'Publish' },\n ]},\n { section: 'Team & Config', items: [\n { key: 'a', desc: 'Team settings' },\n { key: 'c', desc: 'Context' },\n { key: 'e', desc: 'Memory' },\n { key: 'p', desc: 'Plugins' },\n { key: 'o', desc: 'Methodology' },\n { key: ',', desc: 'Settings' },\n ]},\n { section: 'Global', items: [\n { key: '/', desc: 'This help screen' },\n { key: 'd', desc: 'Open docs' },\n { key: 'esc', desc: 'Go back / Home' },\n { key: 'q', desc: 'Quit application' },\n { key: 'j/k', desc: 'Navigate lists' },\n ]},\n];\n\ninterface ShortcutSectionProps {\n section: string;\n items: { key: string; desc: string }[];\n isLast: boolean;\n}\n\nfunction ShortcutSection(props: ShortcutSectionProps) {\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>{props.section}</text>\n <For each={props.items}>\n {(item) => (\n <box flexDirection=\"row\">\n <text fg={terminalColors.accent} width={8}> {item.key}</text>\n <text fg={terminalColors.textMuted}>{item.desc}</text>\n </box>\n )}\n </For>\n <Show when={!props.isLast}>\n <text> </text>\n </Show>\n </box>\n );\n}\n\nexport function Help(props: HelpProps) {\n const [animPhase, setAnimPhase] = createSignal(0);\n const cols = () => props.cols ?? 80;\n const isCompact = () => cols() < 60;\n const rawWidth = () => cols() - 4;\n const contentWidth = () => Math.max(1, Math.min(rawWidth(), 60));\n const version = getVersion();\n\n createEffect(() => {\n if (animPhase() >= 2) return;\n const timer = setTimeout(() => setAnimPhase(p => p + 1), 100);\n onCleanup(() => clearTimeout(timer));\n });\n\n const divider = createMemo(() =>\n <text fg={terminalColors.textMuted}>{'─'.repeat(contentWidth())}</text>\n );\n\n return (\n <box flexDirection=\"column\" padding={1}>\n <Show when={animPhase() >= 1}>\n <box flexDirection=\"column\">\n <box flexDirection=\"row\" justifyContent=\"space-between\" width={contentWidth()}>\n <text fg={terminalColors.text}>/ Help</text>\n <text fg={terminalColors.textMuted}>skillkit v{version}</text>\n </box>\n <text fg={terminalColors.textMuted}>keyboard shortcuts and navigation</text>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text> </text>\n <Show when={isCompact()} fallback={\n <box flexDirection=\"row\">\n <box flexDirection=\"column\" width={Math.floor(contentWidth() / 2)}>\n <For each={SHORTCUTS.slice(0, 2)}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === 1} />\n )}\n </For>\n </box>\n <box flexDirection=\"column\" width={Math.floor(contentWidth() / 2)}>\n <For each={SHORTCUTS.slice(2)}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === 1} />\n )}\n </For>\n </box>\n </box>\n }>\n <For each={SHORTCUTS}>\n {(s, idx) => (\n <ShortcutSection section={s.section} items={s.items} isLast={idx() === SHORTCUTS.length - 1} />\n )}\n </For>\n </Show>\n <text> </text>\n </box>\n </Show>\n\n <Show when={animPhase() >= 2}>\n <box flexDirection=\"column\">\n {divider()}\n <text fg={terminalColors.textMuted}>esc back h home q quit</text>\n </box>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MeshProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Mesh(props: MeshProps) {\n const hosts = [\n { name: 'workstation-1', address: '192.168.1.10', status: 'online', peers: 3 },\n { name: 'laptop-dev', address: '192.168.1.15', status: 'online', peers: 2 },\n { name: 'server-main', address: '192.168.1.100', status: 'offline', peers: 0 },\n ];\n\n const securityStatus = {\n initialized: true,\n fingerprint: 'abc123def456',\n trustedPeers: 5,\n };\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Mesh Network\"\n subtitle=\"Multi-machine agent distribution\"\n count={hosts.filter(h => h.status === 'online').length}\n icon=\"◉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Security: </b></text>\n <text fg={securityStatus.initialized ? terminalColors.success : terminalColors.warning}>\n {securityStatus.initialized ? '* Initialized' : 'o Not initialized'}\n </text>\n <text fg={terminalColors.textMuted}> Fingerprint: {securityStatus.fingerprint}</text>\n </box>\n\n <text fg={terminalColors.text}><b>Known Hosts</b></text>\n <text> </text>\n\n <For each={hosts}>\n {(host, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={host.status === 'online' ? terminalColors.success : terminalColors.textMuted} width={3}>\n {host.status === 'online' ? '*' : 'o'}\n </text>\n <text fg={idx() === 0 ? terminalColors.accent : terminalColors.text} width={20}>\n {idx() === 0 ? '\\u25B8 ' : ' '}{host.name}\n </text>\n <text fg={terminalColors.textMuted} width={18}>{host.address}</text>\n <text fg={terminalColors.textMuted}>{host.peers} peers</text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n 'd' discover 'a' add host 'r' remove 's' security 'h' health check\n </text>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { type Screen } from '../state/index.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { Header } from '../components/Header.js';\n\ninterface MessageProps {\n onNavigate: (screen: Screen) => void;\n cols?: number;\n rows?: number;\n}\n\nexport function Message(props: MessageProps) {\n const messages = [\n { id: '1', from: 'claude@laptop', subject: 'Code review completed', time: '2 min ago', unread: true },\n { id: '2', from: 'cursor@workstation', subject: 'Build artifacts ready', time: '15 min ago', unread: true },\n { id: '3', from: 'codex@server', subject: 'Test results', time: '1 hour ago', unread: false },\n ];\n\n const unreadCount = messages.filter(m => m.unread).length;\n\n return (\n <box flexDirection=\"column\" paddingLeft={1}>\n <Header\n title=\"Messages\"\n subtitle=\"Inter-agent communication\"\n count={unreadCount}\n icon=\"✉\"\n />\n\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.text}><b>Inbox</b></text>\n <text fg={terminalColors.textMuted}> {unreadCount} unread</text>\n </box>\n\n <text> </text>\n\n <For each={messages}>\n {(msg, idx) => (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={msg.unread ? terminalColors.accent : terminalColors.textMuted} width={3}>\n {msg.unread ? '*' : 'o'}\n </text>\n <text fg={idx() === 0 ? terminalColors.accent : terminalColors.text} width={22}>\n {idx() === 0 ? '\\u25B8 ' : ' '}{msg.from}\n </text>\n <text fg={msg.unread ? terminalColors.text : terminalColors.textMuted} width={30}>\n {msg.subject.slice(0, 28)}\n </text>\n <text fg={terminalColors.textMuted}>{msg.time}</text>\n </box>\n )}\n </For>\n\n <text> </text>\n <text fg={terminalColors.textMuted}>\n Enter to read 'n' new message 'r' reply 'a' archive 's' sent\n </text>\n </box>\n );\n}\n","/**\n * Animation presets for SkillKit TUI\n * Uses OpenTUI's useTimeline for smooth 60fps animations\n */\n\n/**\n * Animation easing functions available in OpenTUI\n */\nexport type EasingFunction =\n | 'linear'\n | 'easeInQuad'\n | 'easeOutQuad'\n | 'easeInOutQuad'\n | 'easeInCubic'\n | 'easeOutCubic'\n | 'easeInOutCubic'\n | 'easeInQuart'\n | 'easeOutQuart'\n | 'easeInOutQuart';\n\n/**\n * Animation preset configuration\n */\nexport interface AnimationPreset {\n duration: number;\n ease: EasingFunction;\n stagger?: number;\n}\n\n/**\n * Predefined animation presets\n */\nexport const animations = {\n /**\n * Staggered fade-in for entrance animations\n * Used on home screen for progressive content reveal\n */\n staggeredFadeIn: {\n duration: 800,\n ease: 'easeOutCubic' as EasingFunction,\n stagger: 100,\n },\n\n /**\n * Logo reveal with scramble effect\n * Used for branding animation on startup\n */\n logoReveal: {\n duration: 600,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Count-up animation for stats\n * Used in StatsCard component\n */\n countUp: {\n duration: 1200,\n ease: 'easeOutQuart' as EasingFunction,\n },\n\n /**\n * Screen transition animation\n * Used when navigating between screens\n */\n screenTransition: {\n duration: 200,\n ease: 'easeInOutCubic' as EasingFunction,\n },\n\n /**\n * Quick fade for tooltips and hints\n */\n quickFade: {\n duration: 150,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Pulse animation for active states\n */\n pulse: {\n duration: 1000,\n ease: 'easeInOutQuad' as EasingFunction,\n },\n} as const;\n\n/**\n * Scramble effect characters\n * Used for text reveal animations\n */\nexport const SCRAMBLE_CHARS = '█▓▒░◆◇◈⟁◎✦⬡▣';\n\n/**\n * Scramble animation configuration\n */\nexport interface ScrambleConfig {\n /** Animation duration in ms */\n duration: number;\n /** Progress increment per frame */\n increment: number;\n /** Frame interval in ms */\n interval: number;\n}\n\n/**\n * Default scramble animation config\n */\nexport const DEFAULT_SCRAMBLE_CONFIG: ScrambleConfig = {\n duration: 420,\n increment: 12,\n interval: 35,\n};\n\n/**\n * Generate scrambled text with progressive reveal\n * @param target - The target text to reveal\n * @param progress - Progress percentage (0-100)\n * @param chars - Characters to use for scrambling\n */\nexport function scrambleText(\n target: string,\n progress: number,\n chars: string = SCRAMBLE_CHARS\n): string {\n return target\n .split('\\n')\n .map((line) => {\n return line\n .split('')\n .map((char, i) => {\n if (char === ' ') return char;\n if (progress > (i / line.length) * 100) return char;\n return chars[Math.floor(Math.random() * chars.length)];\n })\n .join('');\n })\n .join('\\n');\n}\n\n/**\n * Calculate staggered delay for an item in a list\n * @param index - Item index\n * @param stagger - Delay between items in ms\n * @returns Delay in ms for this item\n */\nexport function getStaggerDelay(index: number, stagger: number = 100): number {\n return index * stagger;\n}\n\n/**\n * New animation presets (Phase 1.4)\n */\nexport const interactionAnimations = {\n /**\n * Element appearance animation\n */\n fadeIn: {\n duration: 200,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Element disappear animation\n */\n fadeOut: {\n duration: 150,\n ease: 'easeInQuad' as EasingFunction,\n },\n\n /**\n * Detail pane slide in from right\n */\n slideInRight: {\n duration: 250,\n ease: 'easeOutCubic' as EasingFunction,\n },\n\n /**\n * Detail pane slide out to right\n */\n slideOutRight: {\n duration: 200,\n ease: 'easeInCubic' as EasingFunction,\n },\n\n /**\n * Hover state transition\n */\n hover: {\n duration: 100,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Button press feedback\n */\n press: {\n duration: 50,\n ease: 'easeOutQuad' as EasingFunction,\n },\n\n /**\n * Typewriter text reveal (per character)\n */\n typewriter: {\n duration: 30,\n ease: 'linear' as EasingFunction,\n },\n} as const;\n\n/**\n * Animation timing constants\n */\nexport const ANIMATION_DURATIONS = {\n instant: 0,\n fast: 100,\n normal: 200,\n slow: 400,\n verySlow: 800,\n} as const;\n\n/**\n * Frame rate constants\n */\nexport const FRAME_RATE = {\n fps60: 1000 / 60,\n fps30: 1000 / 30,\n fps24: 1000 / 24,\n} as const;\n\n/**\n * Spinner frame animations\n */\nexport const SPINNER_FRAMES = {\n braille: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n dots: ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'],\n line: ['|', '/', '-', '\\\\'],\n arrow: ['←', '↖', '↑', '↗', '→', '↘', '↓', '↙'],\n bounce: ['⠁', '⠂', '⠄', '⠂'],\n pulse: ['◐', '◓', '◑', '◒'],\n} as const;\n\n/**\n * Progress bar characters\n */\nexport const PROGRESS_CHARS = {\n filled: '█',\n empty: '░',\n partial: ['▏', '▎', '▍', '▌', '▋', '▊', '▉'],\n} as const;\n\n/**\n * Create a spring animation curve\n */\nexport function springCurve(\n progress: number,\n tension: number = 0.5,\n friction: number = 0.5\n): number {\n if (progress <= 0) return 0;\n if (progress >= 1) return 1;\n const p = progress;\n const oscillation = Math.sin(p * Math.PI * (1 + tension * 4));\n const damping = Math.exp(-p * friction * 6);\n return 1 - damping * oscillation * (1 - p);\n}\n\n/**\n * Create a bounce animation curve\n */\nexport function bounceCurve(progress: number): number {\n const n1 = 7.5625;\n const d1 = 2.75;\n let p = progress;\n\n if (p < 1 / d1) {\n return n1 * p * p;\n } else if (p < 2 / d1) {\n return n1 * (p -= 1.5 / d1) * p + 0.75;\n } else if (p < 2.5 / d1) {\n return n1 * (p -= 2.25 / d1) * p + 0.9375;\n } else {\n return n1 * (p -= 2.625 / d1) * p + 0.984375;\n }\n}\n\n/**\n * Interpolate between two values\n */\nexport function lerp(start: number, end: number, progress: number): number {\n return start + (end - start) * progress;\n}\n\n/**\n * Clamp a value between min and max\n */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n","/**\n * List navigation and pagination utilities\n */\n\n/**\n * Calculate visible items for paginated list display\n * Centers the selected item in the visible window\n */\nexport interface PaginationResult {\n /** Starting index in the full list */\n start: number;\n /** Ending index (exclusive) in the full list */\n end: number;\n /** Number of items above the visible window */\n itemsAbove: number;\n /** Number of items below the visible window */\n itemsBelow: number;\n}\n\n/**\n * Calculate pagination for a list with a selected index\n * @param totalItems - Total number of items in the list\n * @param selectedIndex - Currently selected item index\n * @param maxVisible - Maximum number of items to show at once\n * @returns Pagination information\n */\nexport function calculatePagination(\n totalItems: number,\n selectedIndex: number,\n maxVisible: number\n): PaginationResult {\n if (totalItems <= maxVisible) {\n return {\n start: 0,\n end: totalItems,\n itemsAbove: 0,\n itemsBelow: 0,\n };\n }\n\n // Center the selected item in the visible window\n const halfVisible = Math.floor(maxVisible / 2);\n let start = Math.max(0, selectedIndex - halfVisible);\n\n // Ensure we don't go past the end\n if (start + maxVisible > totalItems) {\n start = totalItems - maxVisible;\n }\n\n const end = start + maxVisible;\n\n return {\n start,\n end,\n itemsAbove: start,\n itemsBelow: totalItems - end,\n };\n}\n\n/**\n * Move selection up in a list\n * @param currentIndex - Current selected index\n * @param minIndex - Minimum allowed index (default: 0)\n * @returns New index after moving up\n */\nexport function moveUp(currentIndex: number, minIndex = 0): number {\n return Math.max(minIndex, currentIndex - 1);\n}\n\n/**\n * Move selection down in a list\n * @param currentIndex - Current selected index\n * @param maxIndex - Maximum allowed index\n * @returns New index after moving down\n */\nexport function moveDown(currentIndex: number, maxIndex: number): number {\n return Math.min(maxIndex, currentIndex + 1);\n}\n\n/**\n * Clamp an index within valid bounds\n * @param index - Index to clamp\n * @param listLength - Length of the list\n * @returns Clamped index\n */\nexport function clampIndex(index: number, listLength: number): number {\n if (listLength === 0) return 0;\n return Math.max(0, Math.min(index, listLength - 1));\n}\n\n/**\n * Calculate max visible items based on available rows\n * @param availableRows - Total available rows\n * @param reservedRows - Rows reserved for headers, footers, etc.\n * @param minVisible - Minimum visible items (default: 5)\n * @returns Maximum visible items\n */\nexport function calculateMaxVisible(\n availableRows: number,\n reservedRows: number,\n minVisible = 5\n): number {\n return Math.max(minVisible, availableRows - reservedRows);\n}\n","import { Show, For, createMemo } from 'solid-js';\nimport { AGENT_LOGOS, type AgentLogo } from '../theme/symbols.js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface AgentGridProps {\n maxVisible?: number;\n showStatus?: boolean;\n detectedAgents?: string[];\n columns?: number;\n}\n\nexport function AgentGrid(props: AgentGridProps) {\n const maxVisible = () => props.maxVisible ?? 12;\n const showStatus = () => props.showStatus ?? true;\n const detectedAgents = () => props.detectedAgents ?? [];\n const columns = () => Math.max(1, props.columns ?? 4);\n\n const allAgents = Object.entries(AGENT_LOGOS);\n const visibleAgents = () => allAgents.slice(0, maxVisible());\n const hiddenCount = () => allAgents.length - maxVisible();\n\n const rows = createMemo((): [string, AgentLogo][][] => {\n const result: [string, AgentLogo][][] = [];\n const visible = visibleAgents();\n for (let i = 0; i < visible.length; i += columns()) {\n result.push(visible.slice(i, i + columns()));\n }\n return result;\n });\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Works with</b>\n </text>\n <text> </text>\n <For each={rows()}>\n {(row, rowIndex) => (\n <box flexDirection=\"row\">\n <For each={row}>\n {([agentType, agent]) => {\n const isDetected = () => detectedAgents().includes(agentType);\n const statusIcon = () => (showStatus() ? (isDetected() ? '●' : '○') : '');\n const fg = () => (isDetected() ? terminalColors.accent : terminalColors.text);\n\n return (\n <box width={18}>\n <text fg={fg()}>\n {agent.icon} {agent.name}\n <Show when={showStatus()}>\n <span fg={isDetected() ? terminalColors.success : terminalColors.textMuted}>\n {' '}\n {statusIcon()}\n </span>\n </Show>\n </text>\n </box>\n );\n }}\n </For>\n </box>\n )}\n </For>\n <Show when={hiddenCount() > 0}>\n <text fg={terminalColors.textMuted}>+{hiddenCount()} more agents</text>\n </Show>\n </box>\n );\n}\n","import { createSignal, createEffect, onCleanup, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { animations } from '../theme/animations.js';\n\ninterface StatItem {\n label: string;\n value: number;\n color?: keyof typeof terminalColors;\n}\n\ninterface StatsCardProps {\n items: StatItem[];\n animated?: boolean;\n}\n\nexport function StatsCard(props: StatsCardProps) {\n const animated = () => props.animated ?? true;\n\n const [displayValues, setDisplayValues] = createSignal<number[]>(\n animated() ? props.items.map(() => 0) : props.items.map((item) => item.value)\n );\n const [animComplete, setAnimComplete] = createSignal(!animated());\n\n createEffect(() => {\n const newValues = animated() ? props.items.map(() => 0) : props.items.map((item) => item.value);\n setDisplayValues(newValues);\n setAnimComplete(!animated());\n });\n\n createEffect(() => {\n if (!animated() || animComplete()) return;\n\n const duration = animations.countUp.duration;\n const startTime = Date.now();\n const targetValues = props.items.map((item) => item.value);\n const frameInterval = 16;\n\n const intervalId = setInterval(() => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n const newValues = targetValues.map((target) => Math.round(target * eased));\n setDisplayValues(newValues);\n\n if (progress >= 1) {\n clearInterval(intervalId);\n setAnimComplete(true);\n }\n }, frameInterval);\n\n onCleanup(() => clearInterval(intervalId));\n });\n\n return (\n <box flexDirection=\"row\" gap={2}>\n <For each={props.items}>\n {(item, index) => {\n const fg = () => (item.color ? terminalColors[item.color] : terminalColors.text);\n\n return (\n <box\n flexDirection=\"column\"\n alignItems=\"center\"\n padding={2}\n borderStyle=\"single\"\n borderColor={terminalColors.border}\n >\n <text fg={fg()}>\n <b>{String(displayValues()[index()])}</b>\n </text>\n <text fg={terminalColors.textMuted}>{item.label}</text>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n","import { Show, For, createSignal } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols, AGENT_LOGOS } from '../theme/symbols.js';\n\ninterface RightSidebarProps {\n width: number;\n rows: number;\n}\n\nconst TOP_AGENTS = ['claude-code', 'cursor', 'codex'] as const;\n\nexport function RightSidebar(props: RightSidebarProps) {\n const [sections] = createSignal({\n context: true,\n agents: true,\n tasks: false,\n });\n\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n borderLeft\n borderColor={terminalColors.border}\n paddingLeft={1}\n >\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().context ? '▼' : '▸'} Context\n </text>\n <Show when={sections().context}>\n <text fg={terminalColors.textSecondary}> Skills: 127</text>\n <text fg={terminalColors.textSecondary}> Agents: 32 (3{symbols.active})</text>\n <text fg={terminalColors.textSecondary}> Workflows: 4</text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().agents ? '▼' : '▸'} Agents (3)\n </text>\n <Show when={sections().agents}>\n <For each={[...TOP_AGENTS]}>\n {(agent) => {\n const logo = AGENT_LOGOS[agent];\n return (\n <text fg={terminalColors.text}>\n {' '}{logo.icon} {logo.name} {symbols.active}\n </text>\n );\n }}\n </For>\n <text fg={terminalColors.textMuted}> +29 more</text>\n </Show>\n </box>\n\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.text}>\n {sections().tasks ? '▼' : '▸'} Tasks (2)\n </text>\n <Show when={sections().tasks}>\n <text fg={terminalColors.textSecondary}> {symbols.pending} Syncing...</text>\n </Show>\n </box>\n\n <box flexGrow={1} />\n </box>\n );\n}\n","import { type Screen } from '../state/types.js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { getVersion } from '../utils/helpers.js';\n\ninterface BottomStatusBarProps {\n currentScreen: Screen;\n}\n\nconst SCREEN_LABELS: Record<Screen, string> = {\n home: 'Home',\n browse: 'Browse',\n marketplace: 'Marketplace',\n installed: 'Installed',\n settings: 'Settings',\n recommend: 'Recommend',\n translate: 'Translate',\n context: 'Context',\n memory: 'Memory',\n team: 'Team',\n plugins: 'Plugins',\n methodology: 'Methodology',\n plan: 'Plan',\n workflow: 'Workflow',\n execute: 'Execute',\n history: 'History',\n sync: 'Sync',\n help: 'Help',\n mesh: 'Mesh',\n message: 'Message',\n};\n\nexport function BottomStatusBar(props: BottomStatusBarProps) {\n const version = getVersion();\n\n return (\n <box\n flexDirection=\"row\"\n height={1}\n borderTop\n borderColor={terminalColors.border}\n paddingX={1}\n >\n <text fg={terminalColors.accent}>\n <b>{symbols.brandIcon} skillkit</b> v{version}\n </text>\n <text fg={terminalColors.border}> {symbols.verticalLine} </text>\n <text fg={terminalColors.text}>\n <b>{SCREEN_LABELS[props.currentScreen]}</b>\n </text>\n <text fg={terminalColors.border}> {symbols.verticalLine} </text>\n <text fg={terminalColors.textMuted}>/ cmd h home m market q quit</text>\n </box>\n );\n}\n","import { Show, For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { symbols } from '../theme/symbols.js';\nimport { calculatePagination } from '../utils/list.js';\nimport type { SkillItem } from '../state/types.js';\n\ninterface SkillListProps {\n skills: SkillItem[];\n selectedIndex: number;\n maxVisible?: number;\n onSelect?: (skill: SkillItem) => void;\n}\n\nexport function SkillList(props: SkillListProps) {\n const maxVisible = () => props.maxVisible ?? 10;\n\n const pagination = () => calculatePagination(props.skills.length, props.selectedIndex, maxVisible());\n const visibleSkills = () => props.skills.slice(pagination().start, pagination().end);\n\n return (\n <Show when={props.skills.length > 0} fallback={<text fg={terminalColors.textMuted}>No skills found</text>}>\n <box flexDirection=\"column\">\n <Show when={pagination().itemsAbove > 0}>\n <text fg={terminalColors.textMuted}>\n {symbols.arrowUp} {pagination().itemsAbove} more above\n </text>\n </Show>\n\n <For each={visibleSkills()}>\n {(skill, idx) => {\n const actualIndex = () => pagination().start + idx();\n const isSelected = () => actualIndex() === props.selectedIndex;\n const pointer = () => (isSelected() ? symbols.pointer : symbols.pointerInactive);\n const fg = () => (isSelected() ? terminalColors.accent : terminalColors.text);\n const statusIcon = () => (skill.enabled ? symbols.active : symbols.pending);\n const descPart = () =>\n skill.description\n ? ` - ${skill.description.slice(0, 40)}${skill.description.length > 40 ? '...' : ''}`\n : '';\n const line = () => `${pointer()} ${skill.name} ${statusIcon()}${descPart()}`;\n\n return <text fg={fg()}>{isSelected() ? <b>{line()}</b> : line()}</text>;\n }}\n </For>\n\n <Show when={pagination().itemsBelow > 0}>\n <text fg={terminalColors.textMuted}>\n {symbols.arrowDown} {pagination().itemsBelow} more below\n </text>\n </Show>\n </box>\n </Show>\n );\n}\n","import { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SearchInputProps {\n value: string;\n placeholder?: string;\n focused?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport function SearchInput(props: SearchInputProps) {\n const placeholder = () => props.placeholder ?? 'Search...';\n const focused = () => props.focused ?? false;\n const display = () => props.value || placeholder();\n const textColor = () => (props.value ? terminalColors.text : terminalColors.textMuted);\n\n return (\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.textMuted}>⌕ </text>\n <text fg={textColor()}>{display()}</text>\n <Show when={focused()}>\n <text fg={terminalColors.accent}>▏</text>\n </Show>\n </box>\n );\n}\n","import { For } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface Feature {\n key: string;\n label: string;\n description: string;\n color: keyof typeof terminalColors;\n}\n\nconst FEATURES: Feature[] = [\n { key: 'sync', label: 'Sync', color: 'sync', description: 'share skills across all your coding agents' },\n { key: 'browse', label: 'Browse', color: 'browse', description: 'discover skills from the marketplace' },\n { key: 'recommend', label: 'Recommend', color: 'recommend', description: 'AI-powered skill suggestions for your project' },\n { key: 'translate', label: 'Translate', color: 'translate', description: 'convert skills between agent formats' },\n { key: 'workflow', label: 'Workflow', color: 'workflow', description: 'automate skill execution chains' },\n { key: 'team', label: 'Team', color: 'team', description: 'collaborate with your development team' },\n];\n\ninterface FeatureListProps {\n features?: Feature[];\n}\n\nexport function FeatureList(props: FeatureListProps) {\n const features = () => props.features ?? FEATURES;\n\n return (\n <box flexDirection=\"column\">\n <text fg={terminalColors.text}>\n <b>Features</b>\n </text>\n <text> </text>\n <For each={features()}>\n {(feat) => (\n <box flexDirection=\"row\">\n <text fg={terminalColors[feat.color]}>\n <b>{' '}{feat.label.padEnd(12)}</b>\n </text>\n <text fg={terminalColors.textMuted}>{feat.description}</text>\n </box>\n )}\n </For>\n </box>\n );\n}\n\nexport { FEATURES, type Feature };\n","/**\n * SelectList Component\n * Reusable list with j/k + mouse navigation\n */\n\nimport { For, Show, createMemo } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface SelectListItem {\n id: string;\n label: string;\n description?: string;\n icon?: string;\n meta?: string;\n disabled?: boolean;\n}\n\ninterface SelectListProps {\n items: SelectListItem[];\n selectedIndex: number;\n hoveredIndex?: number | null;\n onSelect?: (item: SelectListItem, index: number) => void;\n onHover?: (index: number) => void;\n maxVisible?: number;\n showIndex?: boolean;\n emptyText?: string;\n compact?: boolean;\n}\n\nexport function SelectList(props: SelectListProps) {\n const maxVisible = () => props.maxVisible ?? 10;\n const showIndex = () => props.showIndex ?? false;\n const compact = () => props.compact ?? false;\n\n const scrollOffset = createMemo(() => {\n const selected = props.selectedIndex;\n const visible = maxVisible();\n const total = props.items.length;\n\n if (total <= visible) return 0;\n if (selected < visible / 2) return 0;\n if (selected > total - visible / 2) return total - visible;\n return Math.floor(selected - visible / 2);\n });\n\n const visibleItems = createMemo(() => {\n const offset = scrollOffset();\n return props.items.slice(offset, offset + maxVisible()).map((item, i) => ({\n item,\n originalIndex: offset + i,\n }));\n });\n\n const hasScrollUp = createMemo(() => scrollOffset() > 0);\n const hasScrollDown = createMemo(\n () => scrollOffset() + maxVisible() < props.items.length\n );\n\n const handleItemClick = (item: SelectListItem, index: number) => {\n if (!item.disabled && props.onSelect) {\n props.onSelect(item, index);\n }\n };\n\n const handleItemHover = (index: number) => {\n if (props.onHover) {\n props.onHover(index);\n }\n };\n\n return (\n <box flexDirection=\"column\">\n <Show when={props.items.length === 0}>\n <text fg={terminalColors.textMuted}>{props.emptyText || 'No items'}</text>\n </Show>\n\n <Show when={hasScrollUp()}>\n <text fg={terminalColors.textMuted}> ▲ {scrollOffset()} more</text>\n </Show>\n\n <For each={visibleItems()}>\n {({ item, originalIndex }) => {\n const isSelected = () => originalIndex === props.selectedIndex;\n const isHovered = () => originalIndex === props.hoveredIndex;\n const isDisabled = () => item.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isSelected()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const prefix = () => {\n if (isSelected()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n return (\n <box\n flexDirection={compact() ? 'row' : 'column'}\n marginBottom={compact() ? 0 : 1}\n onClick={() => handleItemClick(item, originalIndex)}\n onMouseEnter={() => handleItemHover(originalIndex)}\n >\n <box flexDirection=\"row\">\n <text fg={fg()}>{prefix()}</text>\n <Show when={showIndex()}>\n <text fg={terminalColors.textMuted} width={4}>\n {String(originalIndex + 1).padStart(2, ' ')}.{' '}\n </text>\n </Show>\n <Show when={item.icon}>\n <text fg={fg()}>{item.icon} </text>\n </Show>\n <text fg={fg()}>{item.label}</text>\n <Show when={item.meta}>\n <text fg={terminalColors.textMuted}> ({item.meta})</text>\n </Show>\n </box>\n <Show when={item.description && !compact()}>\n <box marginLeft={2}>\n <text fg={terminalColors.textMuted}>{item.description}</text>\n </box>\n </Show>\n </box>\n );\n }}\n </For>\n\n <Show when={hasScrollDown()}>\n <text fg={terminalColors.textMuted}>\n {' '}▼ {props.items.length - scrollOffset() - maxVisible()} more\n </text>\n </Show>\n </box>\n );\n}\n","/**\n * SplitPane Component\n * Horizontal/vertical split layout\n */\n\nimport { Show, type JSX } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface SplitPaneProps {\n direction?: 'horizontal' | 'vertical';\n primarySize?: number | string;\n secondarySize?: number | string;\n showDivider?: boolean;\n dividerChar?: string;\n primary: JSX.Element;\n secondary?: JSX.Element;\n gap?: number;\n}\n\nexport function SplitPane(props: SplitPaneProps) {\n const direction = () => props.direction ?? 'horizontal';\n const showDivider = () => props.showDivider ?? true;\n const dividerChar = () => props.dividerChar ?? (direction() === 'horizontal' ? '│' : '─');\n const gap = () => props.gap ?? 1;\n\n const flexDir = () => (direction() === 'horizontal' ? 'row' : 'column');\n\n const primaryWidth = () => {\n if (direction() === 'vertical') return undefined;\n if (props.primarySize !== undefined) return props.primarySize;\n return undefined;\n };\n\n const primaryHeight = () => {\n if (direction() === 'horizontal') return undefined;\n if (props.primarySize !== undefined) return props.primarySize;\n return undefined;\n };\n\n const secondaryWidth = () => {\n if (direction() === 'vertical') return undefined;\n if (props.secondarySize !== undefined) return props.secondarySize;\n return undefined;\n };\n\n const secondaryHeight = () => {\n if (direction() === 'horizontal') return undefined;\n if (props.secondarySize !== undefined) return props.secondarySize;\n return undefined;\n };\n\n return (\n <box flexDirection={flexDir()}>\n <box\n width={primaryWidth()}\n height={primaryHeight()}\n flexGrow={primaryWidth() === undefined && primaryHeight() === undefined ? 1 : undefined}\n >\n {props.primary}\n </box>\n\n <Show when={props.secondary && showDivider()}>\n <box\n width={direction() === 'horizontal' ? gap() : undefined}\n height={direction() === 'vertical' ? gap() : undefined}\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <text fg={terminalColors.border}>{dividerChar()}</text>\n </box>\n </Show>\n\n <Show when={props.secondary}>\n <box\n width={secondaryWidth()}\n height={secondaryHeight()}\n flexGrow={secondaryWidth() === undefined && secondaryHeight() === undefined ? 1 : undefined}\n >\n {props.secondary}\n </box>\n </Show>\n </box>\n );\n}\n\ninterface ThreePaneLayoutProps {\n left?: JSX.Element;\n center: JSX.Element;\n right?: JSX.Element;\n leftWidth?: number;\n rightWidth?: number;\n showLeftDivider?: boolean;\n showRightDivider?: boolean;\n}\n\nexport function ThreePaneLayout(props: ThreePaneLayoutProps) {\n const leftWidth = () => props.leftWidth ?? 20;\n const rightWidth = () => props.rightWidth ?? 30;\n\n return (\n <box flexDirection=\"row\" flexGrow={1}>\n <Show when={props.left}>\n <box width={leftWidth()}>{props.left}</box>\n <Show when={props.showLeftDivider !== false}>\n <box width={1}>\n <text fg={terminalColors.border}>│</text>\n </box>\n </Show>\n </Show>\n\n <box flexGrow={1}>{props.center}</box>\n\n <Show when={props.right}>\n <Show when={props.showRightDivider !== false}>\n <box width={1}>\n <text fg={terminalColors.border}>│</text>\n </box>\n </Show>\n <box width={rightWidth()}>{props.right}</box>\n </Show>\n </box>\n );\n}\n","/**\n * CodeBlock Component\n * Basic syntax highlighting for code display\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n showLineNumbers?: boolean;\n maxLines?: number;\n highlightLines?: number[];\n title?: string;\n}\n\nconst KEYWORDS = new Set([\n 'const',\n 'let',\n 'var',\n 'function',\n 'return',\n 'if',\n 'else',\n 'for',\n 'while',\n 'import',\n 'export',\n 'from',\n 'class',\n 'extends',\n 'async',\n 'await',\n 'try',\n 'catch',\n 'throw',\n 'new',\n 'this',\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'type',\n 'interface',\n]);\n\nfunction tokenizeLine(line: string): Array<{ type: string; value: string }> {\n const tokens: Array<{ type: string; value: string }> = [];\n let remaining = line;\n\n while (remaining.length > 0) {\n if (remaining.startsWith('//')) {\n tokens.push({ type: 'comment', value: remaining });\n break;\n }\n\n const stringMatch = remaining.match(/^(['\"`])(?:\\\\.|[^\\\\])*?\\1/);\n if (stringMatch) {\n tokens.push({ type: 'string', value: stringMatch[0] });\n remaining = remaining.slice(stringMatch[0].length);\n continue;\n }\n\n const numberMatch = remaining.match(/^\\d+\\.?\\d*/);\n if (numberMatch) {\n tokens.push({ type: 'number', value: numberMatch[0] });\n remaining = remaining.slice(numberMatch[0].length);\n continue;\n }\n\n const wordMatch = remaining.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*/);\n if (wordMatch) {\n const word = wordMatch[0];\n const type = KEYWORDS.has(word) ? 'keyword' : 'identifier';\n tokens.push({ type, value: word });\n remaining = remaining.slice(word.length);\n continue;\n }\n\n const spaceMatch = remaining.match(/^\\s+/);\n if (spaceMatch) {\n tokens.push({ type: 'space', value: spaceMatch[0] });\n remaining = remaining.slice(spaceMatch[0].length);\n continue;\n }\n\n tokens.push({ type: 'punctuation', value: remaining[0] });\n remaining = remaining.slice(1);\n }\n\n return tokens;\n}\n\nfunction getTokenColor(type: string): string {\n switch (type) {\n case 'keyword':\n return terminalColors.accent;\n case 'string':\n return terminalColors.warning;\n case 'number':\n return terminalColors.info;\n case 'comment':\n return terminalColors.textMuted;\n default:\n return terminalColors.text;\n }\n}\n\nexport function CodeBlock(props: CodeBlockProps) {\n const showLineNumbers = () => props.showLineNumbers ?? true;\n const highlightLines = () => new Set(props.highlightLines ?? []);\n\n const lines = () => {\n const allLines = props.code.split('\\n');\n if (props.maxLines && allLines.length > props.maxLines) {\n return allLines.slice(0, props.maxLines);\n }\n return allLines;\n };\n\n const lineNumberWidth = () => String(lines().length).length + 1;\n\n const isTruncated = () => {\n const allLines = props.code.split('\\n');\n return props.maxLines !== undefined && allLines.length > props.maxLines;\n };\n\n return (\n <box flexDirection=\"column\">\n <Show when={props.title}>\n <box marginBottom={1}>\n <text fg={terminalColors.textMuted}>\n {props.title}\n </text>\n </box>\n </Show>\n\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n >\n <For each={lines()}>\n {(line, index) => {\n const lineNum = index() + 1;\n const isHighlighted = highlightLines().has(lineNum);\n const tokens = tokenizeLine(line);\n\n return (\n <box flexDirection=\"row\">\n <Show when={showLineNumbers()}>\n <text\n fg={isHighlighted ? terminalColors.accent : terminalColors.textMuted}\n width={lineNumberWidth()}\n >\n {isHighlighted ? '▸' : ' '}\n {String(lineNum).padStart(lineNumberWidth() - 1, ' ')}{' '}\n </text>\n </Show>\n <For each={tokens}>\n {(token) => (\n <text fg={isHighlighted ? terminalColors.accent : getTokenColor(token.type)}>\n {token.value}\n </text>\n )}\n </For>\n </box>\n );\n }}\n </For>\n\n <Show when={isTruncated()}>\n <text fg={terminalColors.textMuted}>\n ... {props.code.split('\\n').length - (props.maxLines ?? 0)} more lines\n </text>\n </Show>\n </box>\n </box>\n );\n}\n\ninterface InlineCodeProps {\n children: string;\n}\n\nexport function InlineCode(props: InlineCodeProps) {\n return (\n <text fg={terminalColors.accent}>\n `{props.children}`\n </text>\n );\n}\n","/**\n * FormField Component\n * Input with label and validation\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface FormFieldProps {\n label: string;\n value: string;\n placeholder?: string;\n error?: string;\n hint?: string;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n type?: 'text' | 'password' | 'search';\n width?: number;\n}\n\nexport function FormField(props: FormFieldProps) {\n const type = () => props.type ?? 'text';\n const focused = () => props.focused ?? false;\n const disabled = () => props.disabled ?? false;\n const width = () => props.width ?? 30;\n\n const displayValue = () => {\n if (type() === 'password') {\n return '•'.repeat(props.value.length);\n }\n return props.value;\n };\n\n const borderColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n if (disabled()) return terminalColors.textMuted;\n return terminalColors.border;\n };\n\n const labelColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n return terminalColors.textSecondary;\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <box flexDirection=\"row\">\n <text fg={labelColor()}>\n {props.label}\n <Show when={props.required}>\n <text fg={terminalColors.error}>*</text>\n </Show>\n </text>\n </box>\n\n <box\n flexDirection=\"row\"\n width={width()}\n borderStyle=\"round\"\n borderColor={borderColor()}\n paddingX={1}\n >\n <Show when={type() === 'search'}>\n <text fg={terminalColors.textMuted}>/ </text>\n </Show>\n <text fg={disabled() ? terminalColors.textMuted : terminalColors.text}>\n {displayValue() || (\n <text fg={terminalColors.textMuted}>{props.placeholder ?? ''}</text>\n )}\n </text>\n <Show when={focused()}>\n <text fg={terminalColors.accent}>▌</text>\n </Show>\n </box>\n\n <Show when={props.error}>\n <text fg={terminalColors.error}>✗ {props.error}</text>\n </Show>\n\n <Show when={props.hint && !props.error}>\n <text fg={terminalColors.textMuted}>{props.hint}</text>\n </Show>\n </box>\n );\n}\n\ninterface TextAreaFieldProps {\n label: string;\n value: string;\n placeholder?: string;\n error?: string;\n rows?: number;\n width?: number;\n focused?: boolean;\n}\n\nexport function TextAreaField(props: TextAreaFieldProps) {\n const rows = () => props.rows ?? 3;\n const width = () => props.width ?? 40;\n const focused = () => props.focused ?? false;\n\n const lines = () => props.value.split('\\n').slice(0, rows());\n\n const hasContent = () => props.value !== '' && props.value !== undefined;\n\n const borderColor = () => {\n if (props.error) return terminalColors.error;\n if (focused()) return terminalColors.accent;\n return terminalColors.border;\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textSecondary}>{props.label}</text>\n\n <box\n flexDirection=\"column\"\n width={width()}\n height={rows() + 2}\n borderStyle=\"round\"\n borderColor={borderColor()}\n paddingX={1}\n >\n <Show\n when={hasContent()}\n fallback={<text fg={terminalColors.textMuted}>{props.placeholder ?? ''}</text>}\n >\n {lines().map((line) => (\n <text fg={terminalColors.text}>{line}</text>\n ))}\n </Show>\n </box>\n\n <Show when={props.error}>\n <text fg={terminalColors.error}>✗ {props.error}</text>\n </Show>\n </box>\n );\n}\n\ninterface SelectFieldProps {\n label: string;\n value: string;\n options: Array<{ value: string; label: string }>;\n focused?: boolean;\n expanded?: boolean;\n selectedOptionIndex?: number;\n}\n\nexport function SelectField(props: SelectFieldProps) {\n const focused = () => props.focused ?? false;\n const expanded = () => props.expanded ?? false;\n\n const selectedLabel = () => {\n const option = props.options.find((o) => o.value === props.value);\n return option?.label ?? props.value ?? 'Select...';\n };\n\n return (\n <box flexDirection=\"column\" marginBottom={1}>\n <text fg={terminalColors.textSecondary}>{props.label}</text>\n\n <box\n flexDirection=\"row\"\n borderStyle=\"round\"\n borderColor={focused() ? terminalColors.accent : terminalColors.border}\n paddingX={1}\n >\n <text fg={terminalColors.text}>{selectedLabel()}</text>\n <text fg={terminalColors.textMuted}> {expanded() ? '▲' : '▼'}</text>\n </box>\n\n <Show when={expanded()}>\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.border}\n paddingX={1}\n >\n {props.options.map((option, index) => {\n const isSelected = index === props.selectedOptionIndex;\n return (\n <text\n fg={\n option.value === props.value\n ? terminalColors.accent\n : isSelected\n ? terminalColors.text\n : terminalColors.textSecondary\n }\n >\n {isSelected ? '▸ ' : ' '}\n {option.label}\n </text>\n );\n })}\n </box>\n </Show>\n </box>\n );\n}\n","/**\n * ErrorBoundary Component\n * Catch and display errors gracefully\n */\n\nimport { ErrorBoundary as SolidErrorBoundary, type JSX, Show } from 'solid-js';\nimport { useKeyboard } from '@opentui/solid';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n fallback?: JSX.Element | ((error: Error, reset: () => void) => JSX.Element);\n onError?: (error: Error) => void;\n}\n\nfunction DefaultErrorFallback(props: { error: Error; reset: () => void }) {\n const errorMessage = () => {\n if (props.error instanceof Error) {\n return props.error.message;\n }\n return String(props.error);\n };\n\n const errorStack = () => {\n if (props.error instanceof Error && props.error.stack) {\n const lines = props.error.stack.split('\\n').slice(1, 4);\n return lines.join('\\n');\n }\n return '';\n };\n\n useKeyboard((key) => {\n if (key.name === 'r') {\n props.reset();\n }\n });\n\n return (\n <box flexDirection=\"column\" paddingY={2} paddingX={1}>\n <box flexDirection=\"row\" marginBottom={1}>\n <text fg={terminalColors.error}>✗ Something went wrong</text>\n </box>\n\n <box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={terminalColors.error}\n paddingX={1}\n paddingY={1}\n >\n <text fg={terminalColors.text}>{errorMessage()}</text>\n\n <Show when={errorStack()}>\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n {errorStack()}\n </text>\n </box>\n </Show>\n </box>\n\n <box marginTop={1}>\n <text fg={terminalColors.textMuted}>\n Press <text fg={terminalColors.accent}>r</text> to retry or{' '}\n <text fg={terminalColors.accent}>Esc</text> to go back\n </text>\n </box>\n </box>\n );\n}\n\nexport function ErrorBoundary(props: ErrorBoundaryProps) {\n let handledErrorRef: Error | null = null;\n\n const fallbackComponent = (error: Error, reset: () => void) => {\n if (props.onError && handledErrorRef !== error) {\n handledErrorRef = error;\n props.onError(error);\n }\n\n const wrappedReset = () => {\n handledErrorRef = null;\n reset();\n };\n\n if (typeof props.fallback === 'function') {\n return props.fallback(error, wrappedReset);\n }\n\n if (props.fallback) {\n return props.fallback;\n }\n\n return <DefaultErrorFallback error={error} reset={wrappedReset} />;\n };\n\n return (\n <SolidErrorBoundary fallback={fallbackComponent}>\n {props.children}\n </SolidErrorBoundary>\n );\n}\n\ninterface TryProps {\n children: JSX.Element;\n catch?: JSX.Element;\n}\n\nexport function Try(props: TryProps) {\n return (\n <ErrorBoundary\n fallback={\n props.catch ?? (\n <text fg={terminalColors.error}>Error loading component</text>\n )\n }\n >\n {props.children}\n </ErrorBoundary>\n );\n}\n","/**\n * Button Component\n * Clickable button with hover/active states\n */\n\nimport { Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\ninterface ButtonProps {\n label: string;\n shortcut?: string;\n icon?: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n focused?: boolean;\n pressed?: boolean;\n hovered?: boolean;\n onClick?: () => void;\n}\n\nconst VARIANT_COLORS: Record<\n ButtonVariant,\n { fg: string; bg: string; border: string; hoverFg: string }\n> = {\n primary: {\n fg: terminalColors.text,\n bg: terminalColors.accent,\n border: terminalColors.accent,\n hoverFg: terminalColors.accent,\n },\n secondary: {\n fg: terminalColors.text,\n bg: terminalColors.surface,\n border: terminalColors.border,\n hoverFg: terminalColors.text,\n },\n ghost: {\n fg: terminalColors.textSecondary,\n bg: 'transparent',\n border: 'transparent',\n hoverFg: terminalColors.text,\n },\n danger: {\n fg: terminalColors.text,\n bg: terminalColors.error,\n border: terminalColors.error,\n hoverFg: terminalColors.error,\n },\n};\n\nexport function Button(props: ButtonProps) {\n const variant = () => props.variant ?? 'secondary';\n const size = () => props.size ?? 'md';\n const disabled = () => props.disabled ?? false;\n const focused = () => props.focused ?? false;\n const pressed = () => props.pressed ?? false;\n const hovered = () => props.hovered ?? false;\n\n const colors = () => VARIANT_COLORS[variant()];\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (pressed()) return colors().hoverFg;\n if (hovered() || focused()) return colors().hoverFg;\n return colors().fg;\n };\n\n const borderColor = () => {\n if (disabled()) return terminalColors.textMuted;\n if (focused()) return terminalColors.accent;\n return colors().border;\n };\n\n const paddingX = () => {\n switch (size()) {\n case 'sm':\n return 1;\n case 'lg':\n return 3;\n default:\n return 2;\n }\n };\n\n const brackets = () => {\n if (variant() === 'ghost') return { left: '', right: '' };\n if (pressed()) return { left: '▸', right: '◂' };\n return { left: '[', right: ']' };\n };\n\n const padding = ' '.repeat(paddingX());\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={borderColor()}>{brackets().left}</text>\n <text fg={fg()}>{padding}</text>\n <Show when={props.icon}>\n <text fg={fg()}>{props.icon} </text>\n </Show>\n <text fg={fg()}>{props.label}</text>\n <Show when={props.shortcut}>\n <text fg={terminalColors.textMuted}> ({props.shortcut})</text>\n </Show>\n <text fg={fg()}>{padding}</text>\n <text fg={borderColor()}>{brackets().right}</text>\n </box>\n );\n}\n\ninterface ButtonGroupProps {\n buttons: Array<{\n id: string;\n label: string;\n shortcut?: string;\n icon?: string;\n variant?: ButtonVariant;\n disabled?: boolean;\n onClick?: () => void;\n }>;\n selectedId?: string;\n focusedId?: string;\n direction?: 'horizontal' | 'vertical';\n gap?: number;\n}\n\nexport function ButtonGroup(props: ButtonGroupProps) {\n const direction = () => props.direction ?? 'horizontal';\n const gap = () => props.gap ?? 2;\n\n return (\n <box flexDirection={direction() === 'horizontal' ? 'row' : 'column'}>\n {props.buttons.map((btn, index) => (\n <box\n marginRight={direction() === 'horizontal' && index < props.buttons.length - 1 ? gap() : 0}\n marginBottom={direction() === 'vertical' && index < props.buttons.length - 1 ? gap() : 0}\n >\n <Button\n label={btn.label}\n shortcut={btn.shortcut}\n icon={btn.icon}\n variant={btn.variant}\n disabled={btn.disabled}\n focused={btn.id === props.focusedId}\n hovered={btn.id === props.selectedId}\n onClick={btn.onClick}\n />\n </box>\n ))}\n </box>\n );\n}\n\ninterface IconButtonProps {\n icon: string;\n label?: string;\n disabled?: boolean;\n focused?: boolean;\n hovered?: boolean;\n onClick?: () => void;\n}\n\nexport function IconButton(props: IconButtonProps) {\n const disabled = () => props.disabled ?? false;\n const focused = () => props.focused ?? false;\n const hovered = () => props.hovered ?? false;\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (focused() || hovered()) return terminalColors.accent;\n return terminalColors.textSecondary;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={fg()}>{props.icon}</text>\n <Show when={props.label}>\n <text fg={fg()}> {props.label}</text>\n </Show>\n </box>\n );\n}\n","/**\n * Clickable Component\n * Wrapper to make any element clickable with hover effects\n */\n\nimport { type JSX, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface ClickableProps {\n children: JSX.Element;\n onClick?: () => void;\n onDoubleClick?: () => void;\n onRightClick?: () => void;\n disabled?: boolean;\n hovered?: boolean;\n pressed?: boolean;\n focusable?: boolean;\n focused?: boolean;\n cursor?: string;\n hoverEffect?: 'highlight' | 'underline' | 'pointer' | 'none';\n}\n\nexport function Clickable(props: ClickableProps) {\n const disabled = () => props.disabled ?? false;\n const hovered = () => props.hovered ?? false;\n const focused = () => props.focused ?? false;\n const hoverEffect = () => props.hoverEffect ?? 'highlight';\n\n const showHighlight = () => {\n if (disabled()) return false;\n return hovered() || focused();\n };\n\n const cursor = () => {\n if (disabled()) return '';\n if (hovered()) return props.cursor ?? '▸';\n return '';\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n const handleDoubleClick = () => {\n if (!disabled() && props.onDoubleClick) {\n props.onDoubleClick();\n }\n };\n\n const handleRightClick = () => {\n if (!disabled() && props.onRightClick) {\n props.onRightClick();\n }\n };\n\n const renderContent = () => {\n if (hoverEffect() === 'underline' && showHighlight()) {\n return <text>{props.children}</text>;\n }\n return props.children;\n };\n\n return (\n <box\n flexDirection=\"row\"\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onContextMenu={handleRightClick}\n >\n <Show when={hoverEffect() === 'pointer' && showHighlight()}>\n <text fg={terminalColors.accent}>{cursor()} </text>\n </Show>\n <box\n fg={hoverEffect() === 'highlight' && showHighlight() ? terminalColors.accent : undefined}\n >\n {renderContent()}\n </box>\n </box>\n );\n}\n\ninterface ClickableTextProps {\n children: string;\n onClick?: () => void;\n disabled?: boolean;\n hovered?: boolean;\n color?: string;\n hoverColor?: string;\n underlineOnHover?: boolean;\n}\n\nexport function ClickableText(props: ClickableTextProps) {\n const disabled = () => props.disabled ?? false;\n const hovered = () => props.hovered ?? false;\n const underlineOnHover = () => props.underlineOnHover ?? false;\n\n const color = () => {\n if (disabled()) return terminalColors.textMuted;\n if (hovered()) return props.hoverColor ?? terminalColors.accent;\n return props.color ?? terminalColors.text;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <text fg={color()} onClick={handleClick}>\n {underlineOnHover() && hovered() ? (\n <u>{props.children}</u>\n ) : (\n props.children\n )}\n </text>\n );\n}\n\ninterface ClickableRowProps {\n children: JSX.Element;\n selected?: boolean;\n hovered?: boolean;\n disabled?: boolean;\n showIndicator?: boolean;\n indicatorChar?: string;\n onClick?: () => void;\n}\n\nexport function ClickableRow(props: ClickableRowProps) {\n const selected = () => props.selected ?? false;\n const hovered = () => props.hovered ?? false;\n const disabled = () => props.disabled ?? false;\n const showIndicator = () => props.showIndicator ?? true;\n const indicatorChar = () => props.indicatorChar ?? '▸';\n\n const indicator = () => {\n if (!showIndicator()) return ' ';\n if (selected()) return `${indicatorChar()} `;\n if (hovered()) return '▹ ';\n return ' ';\n };\n\n const fg = () => {\n if (disabled()) return terminalColors.textMuted;\n if (selected()) return terminalColors.accent;\n if (hovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const handleClick = () => {\n if (!disabled() && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n <box flexDirection=\"row\" onClick={handleClick}>\n <text fg={fg()}>{indicator()}</text>\n {props.children}\n </box>\n );\n}\n\ninterface InteractiveAreaProps {\n children: JSX.Element;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n onMouseOver?: () => void;\n onMouseOut?: () => void;\n onClick?: () => void;\n onMouseDown?: () => void;\n onMouseUp?: () => void;\n}\n\nexport function InteractiveArea(props: InteractiveAreaProps) {\n return (\n <box\n flexDirection=\"column\"\n width={props.width}\n height={props.height}\n style={{ left: props.x, top: props.y }}\n onMouseEnter={props.onMouseOver}\n onMouseLeave={props.onMouseOut}\n onClick={props.onClick}\n onMouseDown={props.onMouseDown}\n onMouseUp={props.onMouseUp}\n >\n {props.children}\n </box>\n );\n}\n","/**\n * HoverHighlight Component\n * Hover highlight effect for list items and buttons\n * Note: Terminal background colors are limited, so we use text color changes for highlighting\n */\n\nimport { type JSX, Show, createSignal, createEffect } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\ninterface HoverHighlightProps {\n children: JSX.Element;\n isHovered?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n highlightColor?: string;\n selectedColor?: string;\n transitionMs?: number;\n}\n\nexport function HoverHighlight(props: HoverHighlightProps) {\n return <box>{props.children}</box>;\n}\n\ninterface HighlightableListItemProps {\n children: JSX.Element;\n index: number;\n selectedIndex?: number;\n hoveredIndex?: number | null;\n showPrefix?: boolean;\n prefixWidth?: number;\n}\n\nexport function HighlightableListItem(props: HighlightableListItemProps) {\n const showPrefix = () => props.showPrefix ?? true;\n const prefixWidth = () => props.prefixWidth ?? 3;\n\n const isSelected = () => props.index === props.selectedIndex;\n const isHovered = () => props.index === props.hoveredIndex;\n\n const prefix = () => {\n if (!showPrefix()) return '';\n if (isSelected()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n const fg = () => {\n if (isSelected()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n return (\n <box flexDirection=\"row\">\n <Show when={showPrefix()}>\n <text fg={fg()} width={prefixWidth()}>\n {prefix()}\n </text>\n </Show>\n {props.children}\n </box>\n );\n}\n\ninterface FocusRingProps {\n children: JSX.Element;\n isFocused?: boolean;\n ringColor?: string;\n}\n\nexport function FocusRing(props: FocusRingProps) {\n const ringColor = () => props.ringColor ?? terminalColors.accent;\n\n return (\n <box\n borderStyle={props.isFocused ? 'round' : undefined}\n borderColor={props.isFocused ? ringColor() : undefined}\n >\n {props.children}\n </box>\n );\n}\n\ninterface PressEffectProps {\n children: JSX.Element;\n isPressed?: boolean;\n pressColor?: string;\n}\n\nexport function PressEffect(props: PressEffectProps) {\n return <box>{props.children}</box>;\n}\n","/**\n * AnimatedText Component\n * Text with fade/slide animations\n */\n\nimport { Show, createSignal, createEffect, onCleanup } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\nimport { scrambleText } from '../theme/animations.js';\n\ninterface AnimatedTextProps {\n text: string;\n animation?: 'fadeIn' | 'typewriter' | 'scramble' | 'countUp' | 'none';\n duration?: number;\n delay?: number;\n color?: string;\n onComplete?: () => void;\n}\n\nexport function AnimatedText(props: AnimatedTextProps) {\n const [progress, setProgress] = createSignal(0);\n const [isComplete, setIsComplete] = createSignal(false);\n\n const animation = () => props.animation ?? 'fadeIn';\n const duration = () => Math.max(1, props.duration ?? 500);\n const delay = () => Math.max(0, props.delay ?? 0);\n const color = () => props.color ?? terminalColors.text;\n\n createEffect(() => {\n const anim = animation();\n const dur = duration();\n const dly = delay();\n\n setProgress(0);\n setIsComplete(false);\n\n if (anim === 'none') {\n setProgress(100);\n setIsComplete(true);\n return;\n }\n\n let delayTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let animationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let startTime: number | undefined;\n let cancelled = false;\n\n const animate = () => {\n if (cancelled) return;\n\n const now = Date.now();\n if (!startTime) startTime = now;\n const elapsed = now - startTime;\n const p = Math.min((elapsed / dur) * 100, 100);\n\n setProgress(p);\n\n if (p < 100) {\n animationTimeoutId = setTimeout(animate, 16);\n } else {\n setIsComplete(true);\n props.onComplete?.();\n }\n };\n\n if (dly > 0) {\n delayTimeoutId = setTimeout(() => {\n animationTimeoutId = setTimeout(animate, 16);\n }, dly);\n } else {\n animationTimeoutId = setTimeout(animate, 16);\n }\n\n onCleanup(() => {\n cancelled = true;\n if (delayTimeoutId) clearTimeout(delayTimeoutId);\n if (animationTimeoutId) clearTimeout(animationTimeoutId);\n });\n });\n\n const displayText = () => {\n switch (animation()) {\n case 'typewriter': {\n const charCount = Math.floor((progress() / 100) * props.text.length);\n return props.text.slice(0, charCount);\n }\n case 'scramble': {\n return scrambleText(props.text, progress());\n }\n case 'countUp': {\n const num = parseFloat(props.text);\n if (!isNaN(num)) {\n return String(Math.round((progress() / 100) * num));\n }\n return props.text;\n }\n case 'fadeIn':\n case 'none':\n default:\n return props.text;\n }\n };\n\n return (\n <text fg={color()}>\n {displayText()}\n <Show when={animation() === 'typewriter' && !isComplete()}>\n <text fg={terminalColors.accent}>▌</text>\n </Show>\n </text>\n );\n}\n\ninterface CountUpTextProps {\n value: number;\n duration?: number;\n delay?: number;\n prefix?: string;\n suffix?: string;\n color?: string;\n formatter?: (value: number) => string;\n}\n\nexport function CountUpText(props: CountUpTextProps) {\n const [displayValue, setDisplayValue] = createSignal(0);\n const duration = () => Math.max(1, props.duration ?? 1000);\n const delay = () => Math.max(0, props.delay ?? 0);\n const color = () => props.color ?? terminalColors.text;\n const formatter = () => props.formatter ?? ((v: number) => String(Math.round(v)));\n\n createEffect(() => {\n const target = props.value;\n const dur = duration();\n const dly = delay();\n\n setDisplayValue(0);\n\n let delayTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let animationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n let startTime: number | undefined;\n let cancelled = false;\n\n const animate = () => {\n if (cancelled) return;\n\n const now = Date.now();\n if (!startTime) startTime = now;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / dur, 1);\n const eased = 1 - Math.pow(1 - progress, 4);\n\n setDisplayValue(eased * target);\n\n if (progress < 1) {\n animationTimeoutId = setTimeout(animate, 16);\n }\n };\n\n if (dly > 0) {\n delayTimeoutId = setTimeout(() => {\n animationTimeoutId = setTimeout(animate, 16);\n }, dly);\n } else {\n animationTimeoutId = setTimeout(animate, 16);\n }\n\n onCleanup(() => {\n cancelled = true;\n if (delayTimeoutId) clearTimeout(delayTimeoutId);\n if (animationTimeoutId) clearTimeout(animationTimeoutId);\n });\n });\n\n return (\n <text fg={color()}>\n {props.prefix ?? ''}\n {formatter()(displayValue())}\n {props.suffix ?? ''}\n </text>\n );\n}\n\ninterface BlinkingTextProps {\n text: string;\n interval?: number;\n color?: string;\n blinkColor?: string;\n}\n\nexport function BlinkingText(props: BlinkingTextProps) {\n const [visible, setVisible] = createSignal(true);\n const interval = () => props.interval ?? 500;\n const color = () => props.color ?? terminalColors.text;\n const blinkColor = () => props.blinkColor ?? terminalColors.textMuted;\n\n createEffect(() => {\n const timer = setInterval(() => {\n setVisible((v) => !v);\n }, interval());\n\n onCleanup(() => clearInterval(timer));\n });\n\n return <text fg={visible() ? color() : blinkColor()}>{props.text}</text>;\n}\n\ninterface PulsingTextProps {\n text: string;\n color?: string;\n pulseColor?: string;\n interval?: number;\n}\n\nexport function PulsingText(props: PulsingTextProps) {\n const [phase, setPhase] = createSignal(0);\n const interval = () => props.interval ?? 100;\n const color = () => props.color ?? terminalColors.accent;\n const pulseColor = () => props.pulseColor ?? terminalColors.text;\n\n createEffect(() => {\n const timer = setInterval(() => {\n setPhase((p) => (p + 1) % 20);\n }, interval());\n\n onCleanup(() => clearInterval(timer));\n });\n\n const currentColor = () => {\n const p = phase();\n if (p < 10) return color();\n return pulseColor();\n };\n\n return <text fg={currentColor()}>{props.text}</text>;\n}\n","/**\n * TabBar Component\n * Clickable tab navigation\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface Tab {\n id: string;\n label: string;\n icon?: string;\n badge?: string | number;\n disabled?: boolean;\n}\n\ninterface TabBarProps {\n tabs: Tab[];\n activeId: string;\n hoveredId?: string | null;\n onSelect?: (id: string) => void;\n variant?: 'default' | 'pills' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n showShortcuts?: boolean;\n}\n\nexport function TabBar(props: TabBarProps) {\n const variant = () => props.variant ?? 'default';\n const size = () => props.size ?? 'md';\n const showShortcuts = () => props.showShortcuts ?? false;\n\n const gap = () => {\n switch (size()) {\n case 'sm':\n return 1;\n case 'lg':\n return 3;\n default:\n return 2;\n }\n };\n\n return (\n <box flexDirection=\"row\">\n <For each={props.tabs}>\n {(tab, index) => {\n const isActive = () => tab.id === props.activeId;\n const isHovered = () => tab.id === props.hoveredId;\n const isDisabled = () => tab.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isActive()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const decoration = () => {\n if (variant() === 'underline' && isActive()) {\n return '─';\n }\n return '';\n };\n\n const brackets = () => {\n if (variant() === 'pills') {\n if (isActive()) return { left: '[', right: ']' };\n return { left: ' ', right: ' ' };\n }\n return { left: '', right: '' };\n };\n\n const handleClick = () => {\n if (!isDisabled() && props.onSelect) {\n props.onSelect(tab.id);\n }\n };\n\n return (\n <box flexDirection=\"column\" marginRight={index() < props.tabs.length - 1 ? gap() : 0} onClick={handleClick}>\n <box flexDirection=\"row\">\n <text fg={terminalColors.border}>{brackets().left}</text>\n <Show when={tab.icon}>\n <text fg={fg()}>{tab.icon} </text>\n </Show>\n <text fg={fg()}>{tab.label}</text>\n <Show when={tab.badge !== undefined}>\n <text fg={terminalColors.textMuted}> ({tab.badge})</text>\n </Show>\n <Show when={showShortcuts()}>\n <text fg={terminalColors.textMuted}>\n {' '}\n {String(index() + 1)}\n </text>\n </Show>\n <text fg={terminalColors.border}>{brackets().right}</text>\n </box>\n <Show when={variant() === 'underline'}>\n <text fg={isActive() ? terminalColors.accent : 'transparent'}>\n {decoration().repeat(tab.label.length + (tab.icon ? 2 : 0))}\n </text>\n </Show>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface VerticalTabBarProps {\n tabs: Tab[];\n activeId: string;\n hoveredId?: string | null;\n onSelect?: (id: string) => void;\n width?: number;\n}\n\nexport function VerticalTabBar(props: VerticalTabBarProps) {\n const width = () => props.width ?? 20;\n\n return (\n <box flexDirection=\"column\" width={width()}>\n <For each={props.tabs}>\n {(tab) => {\n const isActive = () => tab.id === props.activeId;\n const isHovered = () => tab.id === props.hoveredId;\n const isDisabled = () => tab.disabled ?? false;\n\n const fg = () => {\n if (isDisabled()) return terminalColors.textMuted;\n if (isActive()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n return terminalColors.textSecondary;\n };\n\n const prefix = () => {\n if (isActive()) return '▸ ';\n if (isHovered()) return '▹ ';\n return ' ';\n };\n\n const handleClick = () => {\n if (!isDisabled() && props.onSelect) {\n props.onSelect(tab.id);\n }\n };\n\n return (\n <box\n flexDirection=\"row\"\n marginBottom={1}\n onClick={handleClick}\n >\n <text fg={fg()}>{prefix()}</text>\n <Show when={tab.icon}>\n <text fg={fg()}>{tab.icon} </text>\n </Show>\n <text fg={fg()}>{tab.label}</text>\n <Show when={tab.badge !== undefined}>\n <text fg={terminalColors.textMuted}> ({tab.badge})</text>\n </Show>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n","/**\n * Breadcrumb Component\n * Clickable breadcrumb navigation\n */\n\nimport { For, Show } from 'solid-js';\nimport { terminalColors } from '../theme/colors.js';\n\nexport interface BreadcrumbItem {\n id: string;\n label: string;\n icon?: string;\n}\n\ninterface BreadcrumbProps {\n items: BreadcrumbItem[];\n separator?: string;\n hoveredId?: string | null;\n onNavigate?: (id: string) => void;\n}\n\nexport function Breadcrumb(props: BreadcrumbProps) {\n const separator = () => props.separator ?? ' / ';\n\n const handleClick = (id: string) => {\n props.onNavigate?.(id);\n };\n\n return (\n <box flexDirection=\"row\">\n <For each={props.items}>\n {(item, index) => {\n const isLast = () => index() === props.items.length - 1;\n const isHovered = () => item.id === props.hoveredId;\n\n const fg = () => {\n if (isLast()) return terminalColors.text;\n if (isHovered()) return terminalColors.accent;\n return terminalColors.textMuted;\n };\n\n return (\n <>\n <box\n flexDirection=\"row\"\n onClick={() => handleClick(item.id)}\n >\n <Show when={item.icon}>\n <text fg={fg()}>{item.icon} </text>\n </Show>\n <text fg={fg()}>\n {isLast() ? <b>{item.label}</b> : item.label}\n </text>\n </box>\n <Show when={!isLast()}>\n <text fg={terminalColors.textMuted}>{separator()}</text>\n </Show>\n </>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface PathBreadcrumbProps {\n path: string;\n separator?: string;\n maxSegments?: number;\n hoveredSegment?: number | null;\n onNavigate?: (path: string, segmentIndex: number) => void;\n}\n\nexport function PathBreadcrumb(props: PathBreadcrumbProps) {\n const separator = () => props.separator ?? '/';\n const maxSegments = () => props.maxSegments ?? 5;\n\n const segments = () => {\n const parts = props.path.split('/').filter(Boolean);\n if (parts.length <= maxSegments()) {\n return parts;\n }\n return ['...', ...parts.slice(-(maxSegments() - 1))];\n };\n\n const getPathAtIndex = (index: number): string => {\n const parts = props.path.split('/').filter(Boolean);\n const segs = segments();\n let actualIndex: number;\n\n if (segs[0] === '...') {\n const offset = parts.length - (segs.length - 1);\n actualIndex = offset + index - 1;\n } else {\n actualIndex = index;\n }\n\n return '/' + parts.slice(0, actualIndex + 1).join('/');\n };\n\n const handleClick = (segment: string, index: number) => {\n if (segment === '...') return;\n props.onNavigate?.(getPathAtIndex(index), index);\n };\n\n return (\n <box flexDirection=\"row\">\n <text fg={terminalColors.textMuted}>{separator()}</text>\n <For each={segments()}>\n {(segment, index) => {\n const isLast = () => index() === segments().length - 1;\n const isHovered = () => index() === props.hoveredSegment;\n const isEllipsis = () => segment === '...';\n\n const fg = () => {\n if (isEllipsis()) return terminalColors.textMuted;\n if (isLast()) return terminalColors.text;\n if (isHovered()) return terminalColors.accent;\n return terminalColors.textMuted;\n };\n\n return (\n <>\n <text\n fg={fg()}\n onClick={() => handleClick(segment, index())}\n >\n {isLast() ? <b>{segment}</b> : segment}\n </text>\n <Show when={!isLast()}>\n <text fg={terminalColors.textMuted}>{separator()}</text>\n </Show>\n </>\n );\n }}\n </For>\n </box>\n );\n}\n\ninterface NavigationTrailProps {\n items: Array<{ screen: string; label: string }>;\n currentIndex: number;\n hoveredIndex?: number | null;\n}\n\nexport function NavigationTrail(props: NavigationTrailProps) {\n return (\n <box flexDirection=\"row\">\n <For each={props.items}>\n {(item, index) => {\n const isCurrent = () => index() === props.currentIndex;\n const isPast = () => index() < props.currentIndex;\n const isHovered = () => index() === props.hoveredIndex;\n\n const fg = () => {\n if (isCurrent()) return terminalColors.accent;\n if (isHovered()) return terminalColors.text;\n if (isPast()) return terminalColors.textSecondary;\n return terminalColors.textMuted;\n };\n\n const indicator = () => {\n if (isCurrent()) return '●';\n if (isPast()) return '○';\n return '○';\n };\n\n return (\n <box flexDirection=\"row\" marginRight={2}>\n <text fg={fg()}>{indicator()} </text>\n <text fg={fg()}>{item.label}</text>\n </box>\n );\n }}\n </For>\n </box>\n );\n}\n"],"mappings":"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","names":["value","children","memo","e","children","i","sources","renderer","renderer","createElement","createTextNode","createSlotNode","insertNode","insert","dispose","renderer","children","dispose","renderer","createCliRenderer","execFile","LOGO_FRAMES","LOGO_SMALL","SPINNER","PROGRESS","empty","filled","head","PHASES","message","detail","Splash","props","frame","setFrame","createSignal","progress","setProgress","spinnerFrame","setSpinnerFrame","phase","setPhase","fadeIn","setFadeIn","particles","setParticles","version","createMemo","getVersion","cols","process","stdout","columns","rows","useSmallLogo","currentLogo","Math","min","maxWidth","max","map","l","length","generateParticles","chars","Array","fill","random","floor","join","createEffect","timer","setTimeout","f","onCleanup","clearTimeout","interval","setInterval","p","newProgress","clearInterval","phaseProgress","prev","newParticles","shift","push","onComplete","duration","pad","repeat","progressWidth","progressPad","filledWidth","emptyWidth","progressBar","currentPhase","_el$","_$createElement","_el$2","_el$3","_el$4","_el$5","_el$13","_el$15","_el$36","_el$37","_el$38","_el$39","_$createTextNode","_el$41","_el$43","_$insertNode","_$setProp","_$insert","_$createComponent","For","each","children","line","idx","_el$44","_c$","_$memo","_el$45","_$effect","_$p","terminalColors","accent","textMuted","Show","when","_el$7","_el$8","textSecondary","_el$0","_el$10","_el$11","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$25","_el$27","_el$28","_el$29","_el$30","_el$31","_el$33","_el$34","_el$35","_el$23","_el$24","_p$","_v$","_v$2","text","_v$3","_v$4","_v$5","_v$6","e","t","a","o","i","n","undefined","_v$7","_v$8","_v$9","Sidebar","props","version","getVersion","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$7","_el$9","_el$0","_el$1","_$insertNode","_$setProp","_$insert","symbols","brandIcon","_$createComponent","For","each","SIDEBAR_NAV","children","nav","idx","_el$11","_el$14","_el$15","Show","when","_el$12","section","items","item","active","screen","_el$16","_c$","_$memo","_el$17","_el$18","pointer","label","pointerInactive","_$effect","_$p","terminalColors","accent","text","textMuted","horizontalLine","repeat","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","undefined","StatusBar","props","messageType","shortcuts","STATUS_BAR_SHORTCUTS","messageColors","info","terminalColors","success","error","warning","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","Show","when","message","fallback","_el$5","_$effect","_$p","textMuted","children","_el$4","loadConfig","getAdapter","loadConfig","readFileSync","rmSync","join","loadConfig","join","readFileSync","rmSync","FEATURES","key","color","terminalColors","sync","desc","browse","recommend","translate","workflow","text","Home","props","animPhase","setAnimPhase","createSignal","stats","setStats","skills","agents","TOTAL_AGENTS","synced","detectedAgents","setDetectedAgents","cols","version","getVersion","isCompact","isNarrow","contentWidth","Math","min","line","repeat","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","skillsData","loadSkills","length","visibleAgents","createMemo","allAgents","Object","entries","AGENT_LOGOS","perRow","maxAgents","slice","remaining","getAgentWidth","agentRows","rows","i","push","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Show","when","children","_el$2","_el$3","_el$4","_el$5","_$createTextNode","_el$6","_el$7","_el$8","_el$0","_$insertNode","symbols","brandIcon","_$effect","_p$","_v$","_v$2","textMuted","_v$3","e","t","a","undefined","_el$10","_el$11","_el$12","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$24","_el$26","_el$28","_el$30","_el$31","_v$4","_v$5","accent","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","o","n","s","h","_el$33","_el$34","_el$36","_el$41","_el$43","_el$44","For","each","row","_el$56","type","agent","isDetected","includes","_el$57","_el$58","_el$59","_el$60","_el$61","icon","name","_v$14","_v$15","_v$16","_el$38","_el$39","_el$40","_$p","_v$10","_v$11","_el$46","_el$47","_el$49","_el$51","feat","_el$62","_el$63","_el$64","_el$65","_v$17","_v$18","_el$53","_el$54","_el$55","_v$12","_v$13","Header","props","_el$","_$createElement","_el$2","_el$3","_el$4","_$insertNode","_$setProp","_$insert","_c$","_$memo","icon","title","_$createComponent","Show","when","count","undefined","children","_el$5","_el$6","_$createTextNode","_el$7","_$effect","_$p","terminalColors","textMuted","badge","_el$8","_el$9","_el$0","accent","subtitle","_el$1","textSecondary","text","Spinner","props","frame","setFrame","createSignal","createEffect","interval","setInterval","f","symbols","spinner","length","onCleanup","clearInterval","color","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","label","children","_el$3","_$effect","_$p","terminalColors","text","EmptyState","props","compact","_el$","_$createElement","_el$4","_el$5","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","icon","children","_el$2","_el$3","_$effect","_$p","terminalColors","textMuted","title","description","_el$6","action","_el$7","_el$8","key","_el$9","accent","label","_p$","_v$","_v$2","textSecondary","e","t","undefined","LoadingState","message","_el$0","_el$1","_el$10","_$createTextNode","_v$3","_v$4","ErrorState","_el$11","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_v$5","_v$6","error","_v$7","a","DetailPane","props","slideProgress","setSlideProgress","createSignal","width","visible","createEffect","frame","timeoutId","animate","progress","Math","min","setTimeout","onCleanup","clearTimeout","effectiveWidth","round","_$createComponent","Show","when","_$memo","children","_el$","_$createElement","_el$2","_el$5","_el$6","_$insertNode","_$setProp","_$insert","icon","_el$3","_el$4","_$createTextNode","_$effect","_$p","terminalColors","accent","title","onClose","_el$7","_el$8","textMuted","subtitle","_el$0","_el$1","fields","length","_el$10","For","each","field","_el$16","_el$17","label","Array","isArray","value","fallback","_el$18","color","text","val","_el$19","_el$20","content","_el$11","_el$12","_el$13","actions","_el$14","action","_el$21","_el$22","_el$23","key","_p$","_v$4","_v$5","e","t","undefined","_v$","_v$2","border","_v$3","a","STATUS_ICONS","loading","success","error","warning","info","pending","STATUS_COLORS","terminalColors","accent","textMuted","SPINNER_FRAMES","StatusIndicator","props","spinnerFrame","setSpinnerFrame","createSignal","showLabel","animated","createEffect","status","interval","setInterval","f","length","onCleanup","clearInterval","icon","color","defaultLabel","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$3","_el$4","_$createTextNode","label","_$effect","_$p","InlineStatus","_el$5","StatusBadge","_el$6","_el$7","_el$9","_el$0","_p$","_v$","_v$2","_v$3","e","t","a","undefined","Browse","props","repos","setRepos","createSignal","selectedIndex","setSelectedIndex","searchQuery","setSearchQuery","searchMode","setSearchMode","showSkills","setShowSkills","loading","setLoading","error","setError","rows","createEffect","loadData","marketplaceRepos","getMarketplaceRepos","reposWithState","map","repo","skills","err","Error","message","loadRepoSkills","index","length","prev","r","i","result","fetchRepoSkills","source","DEFAULT_REPOS","filteredRepos","createMemo","query","toLowerCase","filter","name","includes","maxVisible","Math","max","startIdx","min","floor","visibleRepos","slice","handleKeyNav","delta","handleOpenRepo","actualIndex","findIndex","useKeyboard","key","sequence","test","onNavigate","selectedRepo","repoList","repoDetailFields","label","value","String","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$5","_$insertNode","_$createTextNode","_$effect","_p$","_v$","terminalColors","textMuted","_v$2","text","e","t","undefined","_el$6","_$p","_el$8","_el$0","_el$1","fallback","EmptyState","description","_el$10","_el$11","_el$13","_el$14","_el$15","_el$16","_v$3","_v$4","_el$17","For","each","idx","actualIdx","selected","_el$36","_el$37","_el$38","_el$39","_c$","_el$40","_v$5","accent","_v$6","_v$7","a","_el$19","_el$20","_el$21","_el$22","DetailPane","fields","actions","width","visible","onClose","StatusIndicator","status","_el$24","_el$25","skill","_el$42","_el$43","textSecondary","_el$27","_el$28","_el$29","_el$30","_el$32","_el$34","SPINNER","Installed","props","selectedIndex","setSelectedIndex","createSignal","searchQuery","setSearchQuery","searchMode","setSearchMode","animPhase","setAnimPhase","spinnerFrame","setSpinnerFrame","skills","setSkills","loading","error","cols","rows","isCompact","contentWidth","Math","max","min","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","interval","setInterval","f","length","clearInterval","data","loadSkills","filteredSkills","createMemo","filterSkills","handleKeyNav","delta","prev","handleToggle","skill","map","s","name","enabled","useKeyboard","key","slice","sequence","test","onNavigate","maxVisible","startIdx","floor","visibleSkills","divider","_el$","_$createElement","_$insert","repeat","_$effect","_$p","_$setProp","terminalColors","textMuted","enabledCount","filter","totalCount","shortcuts","_el$2","_$createComponent","Show","when","children","_el$3","_el$4","_el$5","_el$7","_el$8","_$createTextNode","_el$9","_el$0","_el$10","_$insertNode","_p$","_v$","_v$2","success","_v$3","_v$4","e","t","a","o","undefined","_el$12","_el$13","_el$15","_el$16","_el$18","_el$19","_el$21","_v$5","_v$6","text","_el$23","_el$35","fallback","_el$39","_el$40","_el$41","_el$42","_v$7","accent","_v$8","_el$44","_el$45","_el$47","_v$9","_v$0","_el$48","_el$49","_el$50","_el$52","_el$24","_el$25","_el$27","For","each","idx","actualIdx","selected","indicator","statusIcon","qualityBadge","grade","warningIndicator","warnings","line","badgeColor","quality","warning","_el$54","_el$29","_el$30","_el$32","_el$33","_el$37","_el$38","join","getNodeChildren","CATEGORIES","name","tag","Marketplace","props","allSkills","setAllSkills","createSignal","selectedIndex","setSelectedIndex","selectedCategory","setSelectedCategory","searchQuery","setSearchQuery","loading","setLoading","error","setError","loadedRepos","setLoadedRepos","failedRepos","setFailedRepos","viewMode","setViewMode","treeState","setTreeState","currentPath","setCurrentPath","treeItems","setTreeItems","rows","createEffect","loadData","skills","loaded","failed","repo","DEFAULT_REPOS","slice","result","fetchRepoSkills","source","length","push","attemptedCount","join","tree","loadOrGenerateTree","currentNode","updateTreeItems","e","console","node","children","getNodeChildren","getNodeSkills","items","map","type","filteredSkills","createMemo","filter","s","toLowerCase","includes","description","filterMarketplaceSkills","list","maxIndex","Math","max","prev","min","maxVisible","floor","skillsWindow","selected","visible","total","start","treeWindow","handleKeyNav","delta","handleInstall","skill","onNavigate","handleTreeEnter","item","isCategory","state","newPath","rootNode","segment","child","find","c","handleTreeBack","path","handleCategorySelect","idx","cat","toggleViewMode","useKeyboard","key","sequence","parseInt","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","_$memo","formatTreePath","icon","count","totalSkills","Show","when","ErrorState","message","action","label","compact","_el$2","Spinner","_el$3","_el$4","_$createTextNode","_$insertNode","_$effect","_$p","terminalColors","textMuted","_el$5","_el$6","_el$7","_el$8","_el$12","_el$14","_el$15","_el$16","_el$18","_el$19","_el$9","_el$1","_el$10","_el$11","warning","_p$","_v$","success","_v$2","_v$3","text","_v$4","_v$5","accent","t","a","o","i","undefined","_el$20","_el$22","_el$24","_el$25","For","each","_el$66","_el$67","_el$68","_el$69","_el$27","_el$29","fallback","EmptyState","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_c$","_v$6","_v$7","_el$37","_el$39","_el$40","_el$41","originalIndex","isSelected","_el$70","_el$71","_el$72","_el$73","_el$74","repoName","_el$75","_el$76","_v$8","_v$9","_v$0","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","_c$2","_el$48","_el$50","_el$52","_el$53","_el$54","isSkill","_el$77","_el$78","_el$79","_el$80","_c$3","_c$4","_el$81","_el$82","_el$83","skillCount","_v$1","_v$10","_v$11","_el$55","_el$56","_el$57","_el$58","_el$60","_el$62","_el$64","Recommend","props","state","setState","createSignal","recommendations","analyzing","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","projectInfo","setProjectInfo","rows","createEffect","loadData","s","analysis","analyzeProject","languages","frameworks","result","getRecommendations","maxIndex","Math","max","length","prev","min","err","Error","message","handleRefresh","handleInstall","recs","rec","onNavigate","handleKeyNav","delta","useKeyboard","key","name","getScoreColor","score","terminalColors","success","accent","warning","textMuted","getGrade","selectedRec","detailFields","label","value","source","tags","join","installCommand","maxVisible","floor","recsWindow","createMemo","list","selected","visible","total","start","items","slice","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","compact","_$memo","_el$2","Spinner","_el$3","_$insertNode","_$createTextNode","_el$5","_el$6","_c$","_$effect","_$p","_el$7","_el$8","_el$11","_el$13","_el$9","_el$0","_el$10","_p$","_v$","_v$2","e","t","undefined","fallback","EmptyState","description","_el$15","_el$16","text","_el$18","_el$20","_el$21","_el$22","For","each","idx","originalIndex","isSelected","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","reasons","_el$45","_el$46","_el$47","_el$48","_v$3","_v$4","_v$5","_v$6","a","o","_el$23","_el$24","_el$25","lastAnalyzed","_el$26","_el$28","_el$29","Date","toLocaleTimeString","DetailPane","fields","actions","width","onClose","_el$30","_el$32","_el$34","existsSync","readFileSync","join","readSkillContent","skillPath","skillMdPath","undefined","Translate","props","supportedAgents","setSupportedAgents","createSignal","skills","setSkills","sourceAgentIndex","setSourceAgentIndex","targetAgentIndex","setTargetAgentIndex","selectedSkillIndex","setSelectedSkillIndex","focusedPane","setFocusedPane","translating","setTranslating","preview","setPreview","result","setResult","loading","setLoading","error","setError","createEffect","loadData","agents","getSupportedAgents","skillsWithDetails","loadSkillsWithDetails","err","Error","message","sourceAgent","length","targetAgent","selectedSkill","skillList","canDoTranslation","source","target","checkCanTranslate","handlePreview","skill","path","content","previewResult","previewTranslation","handleTranslate","translationResult","translate","success","filename","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","p","onNavigate","visibleAgents","slice","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$0","_el$1","_el$11","_el$12","_$insertNode","_$createTextNode","_el$6","_el$7","_el$8","AGENT_LOGOS","_$effect","_$p","terminalColors","accent","_el$9","getAgentFormatInfo","formatName","textMuted","_el$14","_el$15","_el$16","text","_el$17","_el$18","warning","_p$","_v$","_v$2","_v$3","e","t","a","_el$20","_el$22","_el$24","_el$25","_el$26","_el$27","_el$29","_el$34","_el$35","_el$37","fallback","EmptyState","description","For","each","idx","selected","_el$75","_el$76","_el$31","_el$32","_el$33","_el$38","_el$39","_el$40","_el$41","agent","isSource","selectedIdx","_el$77","_el$78","_el$79","textSecondary","_el$43","_el$44","_el$46","_el$48","_el$49","_el$50","_el$51","_v$4","_v$5","border","_el$52","StatusIndicator","status","_el$54","_el$56","_el$58","_el$59","_el$61","compatible","issues","issue","_el$80","_el$81","_el$62","_el$64","_el$66","_el$67","_el$68","_el$69","_el$71","_el$73","Context","props","state","setState","createSignal","context","stack","loading","analyzing","error","tags","setTags","selectedSection","setSelectedSection","sections","moveSection","delta","i","Math","max","min","length","useKeyboard","key","name","handleRefresh","handleExport","onNavigate","createEffect","loadData","s","result","loadProjectContext","analyzeProjectContext","getStackTags","err","Error","message","refreshContext","exportContext","undefined","currentSection","ctx","_el$","_$createElement","_el$49","_el$51","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$6","_el$38","_el$40","_el$42","For","each","section","idx","_el$53","_el$54","_$effect","_$p","terminalColors","accent","textMuted","_$createTextNode","_el$8","_el$9","_el$0","_el$10","_el$11","_el$12","_el$14","_el$15","_el$16","_el$18","_el$19","_el$20","_el$22","_el$23","_el$24","_el$26","projectName","rootPath","languages","frameworks","libraries","lastUpdated","_el$27","_el$28","_el$30","_p$","_v$","_v$2","textSecondary","e","t","_v$3","_v$4","text","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","a","o","n","h","r","d","_el$31","fallback","EmptyState","lang","_el$55","_el$56","_el$57","_el$32","fw","_el$58","_el$59","_el$60","_el$33","slice","lib","_el$61","_el$62","_el$63","_el$34","_el$35","_el$36","_el$37","Object","keys","patterns","entries","value","_el$64","_el$65","_el$66","_el$67","String","_v$13","_v$14","_el$44","_el$45","tag","_el$68","_el$47","_el$48","_v$11","_v$12","description","Sync","props","agents","setAgents","createSignal","selectedIndex","setSelectedIndex","syncStatus","setSyncStatus","syncMessage","setSyncMessage","loading","setLoading","error","setError","skillCount","setSkillCount","cols","isCompact","createEffect","loadData","skillsData","loadSkills","skills","length","supportedAgents","getSupportedAgents","availability","getAgentAvailability","agentInfos","slice","map","agent","logo","AGENT_LOGOS","availInfo","find","a","type","name","icon","available","synced","err","Error","message","handleSync","agentList","idx","agentName","currentSkillCount","Promise","resolve","setTimeout","prev","i","handleSyncAll","syncedCount","filter","handleKeyNav","delta","max","Math","min","useKeyboard","key","onNavigate","createMemo","availableCount","totalSkillsSynced","reduce","sum","selectedAgent","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$8","_el$9","_el$0","_el$1","_el$11","_el$12","_$insertNode","_$effect","_p$","_v$","terminalColors","success","_v$2","textMuted","_v$3","accent","_v$4","_v$5","text","e","t","o","undefined","_el$13","_$p","_el$15","StatusIndicator","status","_el$17","_el$19","_el$20","_el$22","_v$6","_v$7","_el$23","_el$24","_el$26","_v$8","_v$9","fallback","EmptyState","description","_el$27","_el$28","_el$30","For","each","selected","_el$43","_el$44","_el$45","_el$46","_el$47","_el$48","_c$","_c$2","_el$49","_v$0","_v$1","_v$10","_v$11","_el$32","_el$34","_el$35","_el$36","warning","_el$37","_el$39","_el$41","Memory","props","state","setState","createSignal","entries","status","paths","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","createEffect","loadData","s","result","loadMemories","err","Error","message","handleDelete","length","entry","success","deleteMemoryEntry","key","handleClearAll","clearMemory","undefined","handleInitialize","initializeMemory","getTypeIcon","type","selectedEntry","detailFields","label","value","size","updated","useKeyboard","maxIndex","Math","max","name","prev","min","onNavigate","_el$","_$createElement","_el$28","_el$30","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$1","_el$11","_el$4","_el$5","_el$7","_el$8","_el$0","_$createTextNode","projectMemoryExists","globalMemoryExists","_$effect","_p$","_v$","terminalColors","textMuted","_v$2","warning","_v$3","_v$4","e","t","a","o","fallback","EmptyState","description","_el$13","_el$14","_$p","text","_el$16","For","each","mem","idx","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_v$5","accent","_v$6","_v$7","_v$8","_v$9","i","DetailPane","fields","actions","width","visible","onClose","_el$18","_el$20","_el$22","_el$24","_el$25","projectMemoryDir","_el$26","_el$27","globalMemoryDir","Workflow","props","state","setState","createSignal","workflows","current","progress","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","executing","setExecuting","cols","isCompact","contentWidth","Math","max","min","createEffect","loadData","s","result","loadWorkflowsList","err","Error","message","handleExecute","length","workflow","executeWorkflow","name","undefined","handleKeyNav","delta","prev","useKeyboard","key","onNavigate","successCount","createMemo","filter","w","status","failedCount","runningCount","selectedWorkflow","getStatusIcon","getStatusColor","terminalColors","success","accent","textMuted","divider","repeat","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$18","_el$19","_$insertNode","_el$5","_el$6","_$createTextNode","_el$7","_$effect","_$p","_el$8","_el$0","_el$1","_el$10","_el$11","_el$13","_el$14","_el$15","_el$16","fallback","EmptyState","description","_el$21","_el$22","text","_el$24","For","each","wf","idx","selected","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","skills","waves","lastRun","_el$48","_el$49","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","_el$26","StatusIndicator","_el$28","_el$29","_el$30","_el$31","_el$34","currentWave","totalWaves","currentSkill","totalSkills","DetailPane","fields","value","String","actions","width","visible","onClose","_el$35","_el$37","_el$38","Execute","props","skills","setSkills","createSignal","agents","setAgents","selectedSkillIndex","setSelectedSkillIndex","selectedAgentIndex","setSelectedAgentIndex","focusedPane","setFocusedPane","executing","setExecuting","executionResult","setExecutionResult","loading","setLoading","loadError","setLoadError","createEffect","loadData","skillsWithDetails","loadSkillsWithDetails","agentAvailability","getAgentAvailability","err","Error","message","handleExecute","skillList","agentList","length","skill","agent","available","result","executeSkillWithAgent","path","timeout","success","output","error","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","p","onNavigate","selectedSkill","list","selectedAgent","MAX_VISIBLE","skillsWindow","createMemo","selected","total","start","items","floor","slice","agentsWindow","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","Show","when","children","Spinner","label","ErrorState","action","compact","_$memo","_el$2","_el$3","_el$4","_el$5","_el$7","_el$13","_el$14","_el$16","_el$17","_el$18","_el$20","_$insertNode","_$createTextNode","fallback","EmptyState","description","_el$9","_el$0","_el$1","_$effect","_$p","terminalColors","textMuted","For","each","idx","originalIndex","isSelected","_el$56","_el$57","accent","textSecondary","_el$10","_el$11","_el$12","_el$22","_el$23","_el$24","_el$58","_el$59","_el$60","_el$61","_p$","_v$8","_v$9","e","t","undefined","_el$25","_el$26","_el$27","_v$","text","_v$2","border","_v$3","a","_el$28","_el$30","_el$32","_el$34","_el$35","_el$37","_el$38","_el$40","_el$41","warning","_v$4","_v$5","_v$6","_v$7","o","_el$43","StatusIndicator","status","_el$45","_el$47","_el$49","_el$50","_el$51","_el$52","_el$54","History","props","history","skill","time","duration","status","_el$","_$createElement","_el$2","_el$3","_el$5","_el$7","_el$9","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","length","icon","_$createTextNode","For","each","children","item","idx","_el$1","_el$10","_el$11","_el$12","_el$13","_$effect","_p$","_v$3","terminalColors","accent","text","_v$4","textMuted","_v$5","_v$6","success","error","e","t","a","o","undefined","_v$","_v$2","Team","props","state","setState","createSignal","config","members","sharedSkills","loading","error","focusedPane","setFocusedPane","selectedMemberIndex","setSelectedMemberIndex","selectedSkillIndex","setSelectedSkillIndex","showDetail","setShowDetail","initializing","setInitializing","createEffect","loadData","s","result","loadTeamConfig","err","Error","message","handleInitialize","success","initializeTeam","handleKeyNav","delta","max","length","prev","Math","min","useKeyboard","key","name","p","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","textMuted","warning","selectedMember","selectedSharedSkill","skills","memberDetailFields","member","label","value","role","String","lastSync","skillDetailFields","skill","sharedBy","sharedAt","agents","join","activeCount","createMemo","filter","m","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","StatusIndicator","_$memo","fallback","EmptyState","description","_el$2","_el$3","_el$5","_el$6","_el$8","_el$9","_$createTextNode","_el$0","_el$10","_el$11","_$insertNode","teamName","_$effect","_p$","_v$","_v$2","accent","_v$3","_v$4","_v$5","_v$6","text","e","t","a","o","i","n","undefined","_el$12","_$p","_el$14","_el$16","_el$17","_el$18","_el$19","_el$21","_el$23","_el$24","_el$26","_el$27","_el$28","_el$30","For","each","idx","selected","_el$41","_el$42","_el$43","_el$44","_el$45","_v$0","_v$1","_v$10","_v$11","slice","_el$46","_el$47","_el$48","_el$49","_el$50","_v$12","_v$13","_v$14","_el$32","_el$33","_el$34","_v$7","_v$8","border","_v$9","DetailPane","fields","actions","width","visible","onClose","_el$35","_el$37","_el$39","Plugins","props","state","setState","createSignal","plugins","manager","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","selectedPlugin","setSelectedPlugin","toggling","setToggling","createEffect","loadData","s","result","loadPluginsList","err","Error","message","handleToggle","length","plugin","enabled","disablePlugin","name","enablePlugin","handleShowDetail","info","getPluginInfo","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","onNavigate","getTypeIcon","type","currentPlugin","detailFields","current","label","value","metadata","version","description","path","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_$insertNode","fallback","EmptyState","_el$4","_el$5","_$createTextNode","_$effect","_$p","terminalColors","text","_el$7","For","each","idx","selected","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_p$","_v$","accent","_v$2","textSecondary","_v$3","_v$4","textMuted","_v$5","success","e","t","a","o","i","undefined","_el$9","StatusIndicator","status","_el$1","_el$11","_el$13","_el$15","DetailPane","fields","actions","width","visible","onClose","_el$16","_el$18","_el$20","Methodology","props","state","setState","createSignal","packs","installedPacks","manager","loading","error","selectedIndex","setSelectedIndex","showDetail","setShowDetail","installing","setInstalling","syncing","setSyncing","createEffect","loadData","s","result","loadMethodologies","err","Error","message","handleInstall","length","pack","installed","installMethodologyPack","name","handleUninstall","success","uninstallMethodologyPack","handleSync","syncMethodologyPack","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","accent","textMuted","selectedPack","detailFields","label","value","version","description","String","skills","tags","join","installedCount","filter","p","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","Show","when","children","ErrorState","action","compact","Spinner","_$memo","_el$2","_el$3","_el$4","_el$5","_el$7","_el$8","_el$0","_el$1","_el$11","_el$13","_$insertNode","_$createTextNode","fallback","EmptyState","_el$15","_el$16","_$effect","_$p","text","_el$18","For","each","idx","selected","_el$30","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","slice","_p$","_v$7","_v$8","_v$9","_v$0","_v$1","e","t","a","o","i","undefined","_el$20","StatusIndicator","_el$22","DetailPane","fields","actions","width","visible","onClose","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","n","_el$24","_el$26","_el$28","ProgressBar","props","width","Math","max","round","safeProgress","Number","isFinite","progress","showPercentage","color","clampedProgress","min","filledWidth","emptyWidth","filled","symbols","progressFilled","repeat","empty","progressEmpty","_el$","_$createElement","_el$2","_el$3","_el$4","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$5","_el$6","_$createTextNode","_$effect","_$p","terminalColors","textSecondary","_p$","_v$","_v$2","textMuted","e","t","undefined","Plan","props","state","setState","createSignal","plans","current","validation","execution","loading","error","selectedIndex","setSelectedIndex","executionProgress","setExecutionProgress","executing","setExecuting","validating","setValidating","createEffect","loadData","s","result","loadPlansList","err","Error","message","handleValidate","length","planItem","plan","loadPlan","path","validatePlan","handleExecute","dryRun","executeFn","executePlanDryRun","executePlan","completedCount","totalTasks","tasks","undefined","event","handleKeyNav","delta","max","prev","Math","min","useKeyboard","key","name","onNavigate","getStatusIcon","status","getStatusColor","terminalColors","success","accent","textMuted","selectedPlan","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Header","title","subtitle","icon","count","Show","when","children","ErrorState","action","label","compact","Spinner","_$memo","fallback","EmptyState","description","_el$2","_el$3","_$insertNode","_$createTextNode","_$effect","_$p","text","_el$5","For","each","idx","selected","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","lastModified","_el$46","_el$47","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","_el$7","StatusIndicator","_el$9","_el$1","_el$11","_el$12","_el$14","valid","issues","slice","issue","_el$48","_el$49","warning","_el$15","_el$17","_el$19","_el$20","ProgressBar","progress","width","_el$22","_el$24","_el$26","_el$27","_el$29","_el$30","_el$31","_el$32","completedTasks","failedTasks","_el$33","_el$35","_el$37","DEFAULT_SETTINGS","key","label","value","type","Settings","props","selectedIndex","setSelectedIndex","createSignal","settings","setSettings","animPhase","setAnimPhase","cols","isCompact","contentWidth","Math","max","min","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","handleKeyNav","delta","prev","length","handleToggle","setting","map","s","i","handleReset","useKeyboard","name","onNavigate","divider","createMemo","_el$","_$createElement","_$insert","repeat","_$effect","_$p","_$setProp","terminalColors","textMuted","shortcuts","_el$2","_$createComponent","Show","when","children","_el$3","_el$4","_el$5","_el$7","_el$8","_$createTextNode","_el$9","_el$1","_$insertNode","_p$","_v$","_v$2","text","_v$3","_v$4","e","t","a","o","undefined","_el$11","_el$12","_el$14","_el$16","_el$18","For","each","idx","selected","indicator","valueColor","success","toggleIcon","_el$27","_el$28","_el$29","_el$30","_v$5","_v$6","accent","_v$7","_$memo","_el$20","_el$21","_el$23","_el$25","_el$26","SHORTCUTS","section","items","key","desc","ShortcutSection","props","_el$","_$createElement","_el$2","_$insertNode","_$setProp","_$insert","_$createComponent","For","each","children","item","_el$5","_el$6","_el$7","_$createTextNode","_el$8","_$effect","_p$","_v$","terminalColors","accent","_v$2","textMuted","e","t","undefined","Show","when","isLast","_el$3","_$p","text","Help","animPhase","setAnimPhase","createSignal","cols","isCompact","rawWidth","contentWidth","Math","max","min","version","getVersion","createEffect","timer","setTimeout","p","onCleanup","clearTimeout","divider","createMemo","_el$9","repeat","_el$0","_el$1","_el$10","_el$11","_el$13","_el$14","_el$15","_el$17","_v$3","_v$4","_v$5","_v$6","a","o","_el$19","_el$20","_el$22","fallback","_el$27","_el$28","_el$29","slice","s","idx","_v$7","floor","_v$8","length","_el$24","_el$25","Mesh","props","hosts","name","address","status","peers","securityStatus","initialized","fingerprint","trustedPeers","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_$createTextNode","_el$9","_el$0","_el$10","_el$12","_el$14","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","filter","h","length","icon","For","each","children","host","idx","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_$effect","_p$","_v$6","terminalColors","success","textMuted","_v$7","accent","text","_v$8","_v$9","e","t","a","o","undefined","_v$","_v$2","warning","_v$3","_v$4","_v$5","i","Message","props","messages","id","from","subject","time","unread","unreadCount","filter","m","length","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_$createTextNode","_el$8","_el$9","_el$1","_el$11","_$insertNode","_$setProp","_$insert","_$createComponent","Header","title","subtitle","count","icon","For","each","children","msg","idx","_el$13","_el$14","_el$15","_el$16","_el$17","slice","_$effect","_p$","_v$4","terminalColors","accent","textMuted","_v$5","text","_v$6","_v$7","e","t","a","o","undefined","_v$","_v$2","_v$3","DOCS_URL","openUrl","url","process","platform","execFile","cmd","App","props","showSplash","setShowSplash","createSignal","currentScreen","setCurrentScreen","showSidebar","setShowSidebar","dimensions","setDimensions","cols","stdout","columns","rows","createEffect","handleResize","on","onCleanup","off","sidebarVisible","sidebarWidth","statusBarHeight","contentHeight","handleNavigate","newScreen","handleSplashComplete","useKeyboard","key","name","ctrl","onExit","exit","sequence","v","targetScreen","NAV_KEYS","screenProps","onNavigate","Math","max","_$createComponent","Show","when","fallback","Splash","onComplete","duration","children","_el$","_$createElement","_el$2","_el$3","_$insertNode","_$setProp","_$insert","Sidebar","screen","Switch","Home","_$mergeProps","Match","Browse","Installed","Marketplace","Settings","Recommend","Translate","Context","Memory","Team","Plugins","Methodology","Plan","Workflow","Execute","History","Sync","Help","Mesh","Message","StatusBar","_$effect","_p$","_v$","_v$2","e","t","undefined","AgentGrid","props","maxVisible","showStatus","detectedAgents","columns","Math","max","allAgents","Object","entries","AGENT_LOGOS","visibleAgents","slice","hiddenCount","length","rows","createMemo","result","visible","i","push","_el$","_$createElement","_el$2","_el$3","_el$5","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","For","each","children","row","rowIndex","_el$0","agentType","agent","isDetected","includes","statusIcon","fg","terminalColors","accent","text","_el$1","_el$10","_el$11","icon","name","Show","when","_el$12","_el$13","_$effect","_$p","success","textMuted","_el$7","_el$8","_el$9","StatsCard","props","animated","displayValues","setDisplayValues","createSignal","items","map","item","value","animComplete","setAnimComplete","createEffect","newValues","duration","animations","countUp","startTime","Date","now","targetValues","frameInterval","intervalId","setInterval","elapsed","progress","Math","min","eased","pow","target","round","clearInterval","onCleanup","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","children","index","fg","color","terminalColors","text","_el$2","_el$3","_el$4","_el$5","_$insertNode","String","label","_$effect","_p$","_v$","border","_v$2","_v$3","textMuted","e","t","a","undefined","TOP_AGENTS","RightSidebar","props","sections","createSignal","context","agents","tasks","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$10","_el$11","_el$12","_el$15","_el$16","_el$17","_el$21","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$5","_$effect","_$p","terminalColors","textSecondary","_el$7","_el$8","_el$9","symbols","active","_el$0","For","each","agent","logo","AGENT_LOGOS","_el$22","_el$23","_el$24","_el$25","icon","name","text","_el$13","textMuted","_el$18","_el$19","_el$20","pending","_p$","_v$","width","_v$2","border","_v$3","_v$4","_v$5","e","t","a","o","i","undefined","SCREEN_LABELS","home","browse","marketplace","installed","settings","recommend","translate","context","memory","team","plugins","methodology","plan","workflow","execute","history","sync","help","mesh","message","BottomStatusBar","props","version","getVersion","_el$","_$createElement","_el$2","_el$3","_el$4","_$createTextNode","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_$insertNode","_$setProp","_$insert","symbols","brandIcon","verticalLine","currentScreen","_$effect","_p$","_v$","terminalColors","border","_v$2","accent","_v$3","_v$4","text","_v$5","_v$6","textMuted","e","t","a","o","i","n","undefined","SkillList","props","maxVisible","pagination","calculatePagination","skills","length","selectedIndex","visibleSkills","slice","start","end","_$createComponent","Show","when","fallback","_el$8","_$createElement","_$insertNode","_$createTextNode","_$effect","_$p","_$setProp","terminalColors","textMuted","children","_el$","_$insert","itemsAbove","_el$2","_el$3","_el$4","symbols","arrowUp","For","each","skill","idx","actualIndex","isSelected","pointer","pointerInactive","fg","accent","text","statusIcon","enabled","active","pending","descPart","description","line","name","_el$0","_c$","_$memo","_el$1","itemsBelow","_el$5","_el$6","_el$7","arrowDown","SearchInput","props","placeholder","focused","display","value","textColor","terminalColors","text","textMuted","_el$","_$createElement","_el$2","_el$4","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","Show","when","children","_el$5","_$effect","_$p","accent","_p$","_v$","_v$2","e","t","undefined","FEATURES","key","label","color","description","FeatureList","props","features","_el$","_$createElement","_el$2","_el$3","_el$5","_$insertNode","_$setProp","_$createTextNode","_$insert","_$createComponent","For","each","children","feat","_el$7","_el$8","_el$9","_el$0","_el$1","padEnd","_$effect","_p$","_v$","terminalColors","_v$2","textMuted","e","t","undefined","_$p","text","SelectList","props","maxVisible","showIndex","compact","scrollOffset","createMemo","selected","selectedIndex","visible","total","items","length","Math","floor","visibleItems","offset","slice","map","item","i","originalIndex","hasScrollUp","hasScrollDown","handleItemClick","index","disabled","onSelect","handleItemHover","onHover","_el$","_$createElement","_$setProp","_$insert","_$createComponent","Show","when","children","_el$2","emptyText","_$effect","_$p","terminalColors","textMuted","_el$3","_el$4","_$createTextNode","_el$5","_$insertNode","For","each","isSelected","isHovered","hoveredIndex","isDisabled","fg","accent","text","textSecondary","prefix","_el$0","_el$1","_el$10","_el$16","_el$11","_el$12","String","padStart","icon","_el$14","_el$15","label","meta","_el$17","_el$18","_el$19","_$memo","description","_el$20","_el$21","_p$","_v$","_v$2","_v$3","_v$4","e","t","a","o","undefined","_el$6","_el$7","_el$9","SplitPane","props","direction","showDivider","dividerChar","gap","flexDir","primaryWidth","undefined","primarySize","primaryHeight","secondaryWidth","secondarySize","secondaryHeight","_el$","_$createElement","_el$2","_$insertNode","_$insert","primary","_$createComponent","Show","when","_$memo","secondary","children","_el$3","_el$4","_$setProp","_$effect","_p$","_v$","_v$2","_v$3","terminalColors","border","e","t","a","_el$5","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","o","ThreePaneLayout","leftWidth","rightWidth","_el$6","_el$1","left","_el$7","_$p","showLeftDivider","_el$8","_el$9","_$createTextNode","center","right","showRightDivider","_el$10","_el$11","_el$13","KEYWORDS","Set","tokenizeLine","line","tokens","remaining","length","startsWith","push","type","value","stringMatch","match","slice","numberMatch","wordMatch","word","has","spaceMatch","getTokenColor","terminalColors","accent","warning","info","textMuted","text","CodeBlock","props","showLineNumbers","highlightLines","lines","allLines","code","split","maxLines","lineNumberWidth","String","isTruncated","undefined","_el$","_$createElement","_el$4","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","title","children","_el$2","_el$3","_$effect","_$p","For","each","index","lineNum","isHighlighted","_el$8","_el$9","_el$0","_$createTextNode","padStart","_p$","_v$","_v$2","e","t","token","_el$1","_el$5","_el$6","_el$7","border","InlineCode","_el$10","_el$11","_el$12","FormField","props","type","focused","disabled","width","displayValue","repeat","value","length","borderColor","error","terminalColors","accent","textMuted","border","labelColor","textSecondary","_el$","_$createElement","_el$2","_el$3","_el$6","_el$9","_$insertNode","_$setProp","_$insert","label","_$createComponent","Show","when","required","children","_el$4","_$createTextNode","_$effect","_$p","_el$7","_el$13","placeholder","_el$0","_el$10","_el$11","_$memo","hint","_el$12","_p$","_v$","_v$2","_v$3","_v$4","text","e","t","a","o","undefined","TextAreaField","rows","lines","split","slice","hasContent","_el$14","_el$15","_el$16","fallback","_el$19","map","line","_el$20","_el$17","_el$18","_v$5","_v$6","_v$7","_v$8","SelectField","expanded","selectedLabel","option","options","find","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","index","isSelected","selectedOptionIndex","_el$28","_v$9","_v$0","_v$1","_v$10","DefaultErrorFallback","props","errorMessage","error","Error","message","String","errorStack","stack","lines","split","slice","join","useKeyboard","key","name","reset","_el$","_$createElement","_el$2","_el$3","_el$5","_el$6","_el$9","_el$0","_el$1","_$createTextNode","_el$10","_el$12","_el$14","_el$16","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","children","_el$7","_el$8","_$effect","_$p","terminalColors","textMuted","_p$","_v$","_v$2","_v$3","text","_v$4","_v$5","accent","_v$6","e","t","a","o","i","n","undefined","ErrorBoundary","handledErrorRef","fallbackComponent","onError","wrappedReset","fallback","SolidErrorBoundary","Try","catch","_el$17","VARIANT_COLORS","primary","fg","terminalColors","text","bg","accent","border","hoverFg","secondary","surface","ghost","textSecondary","danger","error","Button","props","variant","size","disabled","focused","pressed","hovered","colors","textMuted","borderColor","paddingX","brackets","left","right","padding","repeat","handleClick","onClick","_el$","_$createElement","_el$2","_el$3","_el$6","_el$0","_el$1","_$insertNode","_$setProp","_$insert","_$createComponent","Show","when","icon","children","_el$4","_el$5","_$createTextNode","_$effect","_$p","label","shortcut","_el$7","_el$8","_el$9","_p$","_v$","_v$2","_v$3","_v$4","_v$5","e","t","a","o","i","undefined","ButtonGroup","direction","gap","_el$10","buttons","map","btn","index","_el$11","id","focusedId","selectedId","_v$6","length","_v$7","IconButton","_el$12","_el$13","_el$14","_el$15","Clickable","props","disabled","hovered","focused","hoverEffect","showHighlight","cursor","handleClick","onClick","handleDoubleClick","onDoubleClick","handleRightClick","onRightClick","renderContent","_el$","_$createElement","_$insert","children","_el$2","_el$5","_$insertNode","_$setProp","_$createComponent","Show","when","_$memo","_el$3","_el$4","_$createTextNode","_$effect","_$p","terminalColors","accent","undefined","ClickableText","underlineOnHover","color","textMuted","hoverColor","text","_el$6","_c$","_el$7","ClickableRow","selected","showIndicator","indicatorChar","indicator","fg","textSecondary","_el$8","_el$9","InteractiveArea","_el$0","_p$","_v$","width","_v$2","height","_v$3","left","x","top","y","_v$4","onMouseOver","_v$5","onMouseOut","_v$6","_v$7","onMouseDown","_v$8","onMouseUp","e","t","a","o","i","n","s","h","HoverHighlight","props","_el$","_$createElement","_$insert","children","HighlightableListItem","showPrefix","prefixWidth","isSelected","index","selectedIndex","isHovered","hoveredIndex","prefix","fg","terminalColors","accent","text","textSecondary","_el$2","_$setProp","_$createComponent","Show","when","_el$3","_$effect","_p$","_v$","_v$2","e","t","undefined","FocusRing","ringColor","_el$4","_v$3","isFocused","_v$4","PressEffect","_el$5","AnimatedText","props","progress","setProgress","createSignal","isComplete","setIsComplete","animation","duration","Math","max","delay","color","terminalColors","text","createEffect","anim","dur","dly","delayTimeoutId","animationTimeoutId","startTime","cancelled","animate","now","Date","elapsed","p","min","setTimeout","onComplete","onCleanup","clearTimeout","displayText","charCount","floor","length","slice","scrambleText","num","parseFloat","isNaN","String","round","_el$","_$createElement","_$insert","_$createComponent","Show","when","_$memo","children","_el$2","_$insertNode","_$createTextNode","_$effect","_$p","_$setProp","accent","CountUpText","displayValue","setDisplayValue","formatter","v","target","value","eased","pow","_el$4","prefix","suffix","BlinkingText","visible","setVisible","interval","blinkColor","textMuted","timer","setInterval","clearInterval","_el$5","PulsingText","phase","setPhase","pulseColor","currentColor","_el$6","TabBar","props","variant","size","showShortcuts","gap","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","tabs","children","tab","index","isActive","id","activeId","isHovered","hoveredId","isDisabled","disabled","fg","terminalColors","textMuted","accent","text","textSecondary","decoration","brackets","left","right","handleClick","onSelect","_el$2","_el$3","_el$4","_el$7","_el$11","_$insertNode","Show","when","icon","_el$5","_el$6","_$createTextNode","_$effect","_$p","label","badge","undefined","_el$8","_el$9","_el$0","_el$1","_el$10","String","_el$12","repeat","length","_p$","_v$","_v$2","border","_v$3","_v$4","e","t","a","o","VerticalTabBar","width","_el$13","prefix","_el$14","_el$15","_el$18","_el$16","_el$17","_el$19","_el$20","_el$21","_v$5","_v$6","Breadcrumb","props","separator","handleClick","id","onNavigate","_el$","_$createElement","_$setProp","_$insert","_$createComponent","For","each","items","children","item","index","isLast","length","isHovered","hoveredId","fg","terminalColors","text","accent","textMuted","_el$2","_el$5","_$insertNode","Show","when","icon","_el$3","_el$4","_$createTextNode","_$effect","_$p","_c$","_$memo","_el$7","label","_el$6","PathBreadcrumb","maxSegments","segments","parts","path","split","filter","Boolean","slice","getPathAtIndex","segs","actualIndex","offset","join","segment","_el$8","_el$9","hoveredSegment","isEllipsis","_el$0","_c$2","_el$10","_el$1","NavigationTrail","_el$11","isCurrent","currentIndex","isPast","hoveredIndex","textSecondary","indicator","_el$12","_el$13","_el$14","_el$15","_p$","_v$","_v$2","e","t","undefined","isRunning","renderer","exitTUI","code","dispose","process","stdout","write","setImmediate","exit","startTUI","on","err","console","error","message","createCliRenderer","exitOnCtrlC","useMouse","enableMouseMovement","render","_$createComponent","App","onExit","Promise"]}
|