agents-inc 0.150.0 → 0.151.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.
Files changed (120) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{chunk-CDMHSHBN.js → chunk-3XFUQ6OL.js} +2 -2
  3. package/dist/{chunk-ZDLTLNU2.js → chunk-3YGUHWLR.js} +2 -2
  4. package/dist/{chunk-MC5DUZ3V.js → chunk-44LLPS2N.js} +3 -3
  5. package/dist/{chunk-N4IZ6GBO.js → chunk-4R6PGHQQ.js} +4 -4
  6. package/dist/{chunk-GRPSDKIS.js → chunk-5V2O6C3T.js} +3 -3
  7. package/dist/{chunk-HIPGKIT3.js → chunk-6RBQBOBS.js} +2 -2
  8. package/dist/{chunk-OA5SUEQD.js → chunk-7QIHKQL5.js} +2 -2
  9. package/dist/{chunk-UZRISDBZ.js → chunk-BNE4HHIH.js} +2 -2
  10. package/dist/{chunk-DJAZE4PD.js → chunk-DG2NGZ7S.js} +296 -296
  11. package/dist/chunk-DG2NGZ7S.js.map +1 -0
  12. package/dist/{chunk-RP7R73JO.js → chunk-EVXG3X6G.js} +2 -2
  13. package/dist/{chunk-RJN7W2C7.js → chunk-EZ7STXUV.js} +12 -12
  14. package/dist/{chunk-4GL2F5AB.js → chunk-LAXAQ3PZ.js} +50 -37
  15. package/dist/chunk-LAXAQ3PZ.js.map +1 -0
  16. package/dist/{chunk-YKKIJHZB.js → chunk-NGLQ5W7U.js} +2 -2
  17. package/dist/{chunk-LRYNF3J7.js → chunk-NHCGC6DG.js} +3 -3
  18. package/dist/{chunk-EN2GCPW7.js → chunk-NM3EDGB5.js} +5 -5
  19. package/dist/{chunk-E4FT2KFV.js → chunk-OJIESW5B.js} +4 -4
  20. package/dist/{chunk-4LPJZNT7.js → chunk-PV2HNW4I.js} +3 -3
  21. package/dist/{chunk-6I6RZHYP.js → chunk-QTFQEYDA.js} +11 -11
  22. package/dist/{chunk-5K5RBRTD.js → chunk-SHHOMVWC.js} +4 -4
  23. package/dist/{chunk-NUIZ6ZUO.js → chunk-SI5FOARI.js} +3 -3
  24. package/dist/{chunk-KH7MOIM5.js → chunk-TVHRMRD3.js} +14 -10
  25. package/dist/chunk-TVHRMRD3.js.map +1 -0
  26. package/dist/{chunk-ZHTXPFDK.js → chunk-TYJLR32W.js} +4 -4
  27. package/dist/{chunk-ZHTXPFDK.js.map → chunk-TYJLR32W.js.map} +1 -1
  28. package/dist/{chunk-F3756A5B.js → chunk-UFURYGD3.js} +2 -2
  29. package/dist/{chunk-ZKJAJWK6.js → chunk-UTFN6UJS.js} +5 -5
  30. package/dist/{chunk-CFQT72MJ.js → chunk-WFWCZEMS.js} +2 -2
  31. package/dist/{chunk-7URSGJLE.js → chunk-WK4J2CHH.js} +2 -2
  32. package/dist/{chunk-DDG4F3FE.js → chunk-Y4CXDA3I.js} +3 -3
  33. package/dist/{chunk-FWT3CBLL.js → chunk-YA4QQKKE.js} +3 -3
  34. package/dist/{chunk-VIFZ6NFH.js → chunk-YBVA7GPW.js} +2 -2
  35. package/dist/commands/build/marketplace.js +4 -4
  36. package/dist/commands/build/plugins.js +4 -4
  37. package/dist/commands/compile.js +8 -8
  38. package/dist/commands/doctor.js +8 -8
  39. package/dist/commands/edit.js +26 -26
  40. package/dist/commands/eject.js +8 -8
  41. package/dist/commands/import/skill.js +3 -3
  42. package/dist/commands/init.js +27 -27
  43. package/dist/commands/list.js +5 -5
  44. package/dist/commands/new/agent.js +4 -4
  45. package/dist/commands/new/marketplace.js +5 -5
  46. package/dist/commands/new/skill.js +4 -4
  47. package/dist/commands/search.js +8 -8
  48. package/dist/commands/uninstall.js +8 -8
  49. package/dist/commands/update.js +8 -8
  50. package/dist/commands/validate.js +4 -4
  51. package/dist/components/wizard/category-grid.js +2 -2
  52. package/dist/components/wizard/category-grid.test.js +2 -2
  53. package/dist/components/wizard/domain-selection.js +5 -5
  54. package/dist/components/wizard/run-wizard-session.js +20 -20
  55. package/dist/components/wizard/skill-agent-summary.js +4 -4
  56. package/dist/components/wizard/source-grid.js +2 -2
  57. package/dist/components/wizard/source-grid.test.js +2 -2
  58. package/dist/components/wizard/stack-selection.js +4 -4
  59. package/dist/components/wizard/step-agents.js +5 -5
  60. package/dist/components/wizard/step-agents.test.js +5 -5
  61. package/dist/components/wizard/step-build.js +5 -5
  62. package/dist/components/wizard/step-build.test.js +6 -6
  63. package/dist/components/wizard/step-confirm.js +7 -7
  64. package/dist/components/wizard/step-confirm.test.js +19 -19
  65. package/dist/components/wizard/step-settings.js +3 -3
  66. package/dist/components/wizard/step-settings.test.js +6 -6
  67. package/dist/components/wizard/step-sources.js +5 -5
  68. package/dist/components/wizard/step-sources.test.js +5 -5
  69. package/dist/components/wizard/step-stack.js +5 -5
  70. package/dist/components/wizard/step-stack.test.js +5 -5
  71. package/dist/components/wizard/summary-panel.js +6 -6
  72. package/dist/components/wizard/summary-panel.test.js +19 -19
  73. package/dist/components/wizard/wizard-layout.js +8 -8
  74. package/dist/components/wizard/wizard-layout.test.js +8 -8
  75. package/dist/components/wizard/wizard-tabs.js +4 -4
  76. package/dist/components/wizard/wizard-tabs.test.js +4 -4
  77. package/dist/components/wizard/wizard.js +19 -19
  78. package/dist/{copy-local-skills-CA7P73RZ.js → copy-local-skills-UPA2GUZV.js} +4 -4
  79. package/dist/hooks/init.js +27 -27
  80. package/dist/{load-agent-defs-6MAY5ABI.js → load-agent-defs-SB4XAOVB.js} +5 -5
  81. package/dist/{recompile-project-agents-VYQJ6UZB.js → recompile-project-agents-U4ZY2GDX.js} +7 -7
  82. package/dist/{source-loader-VVHMQEX5.js → source-loader-5UNRU7EZ.js} +3 -3
  83. package/dist/{source-manager-TPDXV5FO.js → source-manager-3O54SIIB.js} +3 -3
  84. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js +19 -19
  85. package/dist/stores/wizard-store.js +3 -3
  86. package/dist/stores/wizard-store.test.js +19 -19
  87. package/package.json +8 -8
  88. package/dist/chunk-4GL2F5AB.js.map +0 -1
  89. package/dist/chunk-DJAZE4PD.js.map +0 -1
  90. package/dist/chunk-KH7MOIM5.js.map +0 -1
  91. /package/dist/{chunk-CDMHSHBN.js.map → chunk-3XFUQ6OL.js.map} +0 -0
  92. /package/dist/{chunk-ZDLTLNU2.js.map → chunk-3YGUHWLR.js.map} +0 -0
  93. /package/dist/{chunk-MC5DUZ3V.js.map → chunk-44LLPS2N.js.map} +0 -0
  94. /package/dist/{chunk-N4IZ6GBO.js.map → chunk-4R6PGHQQ.js.map} +0 -0
  95. /package/dist/{chunk-GRPSDKIS.js.map → chunk-5V2O6C3T.js.map} +0 -0
  96. /package/dist/{chunk-HIPGKIT3.js.map → chunk-6RBQBOBS.js.map} +0 -0
  97. /package/dist/{chunk-OA5SUEQD.js.map → chunk-7QIHKQL5.js.map} +0 -0
  98. /package/dist/{chunk-UZRISDBZ.js.map → chunk-BNE4HHIH.js.map} +0 -0
  99. /package/dist/{chunk-RP7R73JO.js.map → chunk-EVXG3X6G.js.map} +0 -0
  100. /package/dist/{chunk-RJN7W2C7.js.map → chunk-EZ7STXUV.js.map} +0 -0
  101. /package/dist/{chunk-YKKIJHZB.js.map → chunk-NGLQ5W7U.js.map} +0 -0
  102. /package/dist/{chunk-LRYNF3J7.js.map → chunk-NHCGC6DG.js.map} +0 -0
  103. /package/dist/{chunk-EN2GCPW7.js.map → chunk-NM3EDGB5.js.map} +0 -0
  104. /package/dist/{chunk-E4FT2KFV.js.map → chunk-OJIESW5B.js.map} +0 -0
  105. /package/dist/{chunk-4LPJZNT7.js.map → chunk-PV2HNW4I.js.map} +0 -0
  106. /package/dist/{chunk-6I6RZHYP.js.map → chunk-QTFQEYDA.js.map} +0 -0
  107. /package/dist/{chunk-5K5RBRTD.js.map → chunk-SHHOMVWC.js.map} +0 -0
  108. /package/dist/{chunk-NUIZ6ZUO.js.map → chunk-SI5FOARI.js.map} +0 -0
  109. /package/dist/{chunk-F3756A5B.js.map → chunk-UFURYGD3.js.map} +0 -0
  110. /package/dist/{chunk-ZKJAJWK6.js.map → chunk-UTFN6UJS.js.map} +0 -0
  111. /package/dist/{chunk-CFQT72MJ.js.map → chunk-WFWCZEMS.js.map} +0 -0
  112. /package/dist/{chunk-7URSGJLE.js.map → chunk-WK4J2CHH.js.map} +0 -0
  113. /package/dist/{chunk-DDG4F3FE.js.map → chunk-Y4CXDA3I.js.map} +0 -0
  114. /package/dist/{chunk-FWT3CBLL.js.map → chunk-YA4QQKKE.js.map} +0 -0
  115. /package/dist/{chunk-VIFZ6NFH.js.map → chunk-YBVA7GPW.js.map} +0 -0
  116. /package/dist/{copy-local-skills-CA7P73RZ.js.map → copy-local-skills-UPA2GUZV.js.map} +0 -0
  117. /package/dist/{load-agent-defs-6MAY5ABI.js.map → load-agent-defs-SB4XAOVB.js.map} +0 -0
  118. /package/dist/{recompile-project-agents-VYQJ6UZB.js.map → recompile-project-agents-U4ZY2GDX.js.map} +0 -0
  119. /package/dist/{source-loader-VVHMQEX5.js.map → source-loader-5UNRU7EZ.js.map} +0 -0
  120. /package/dist/{source-manager-TPDXV5FO.js.map → source-manager-3O54SIIB.js.map} +0 -0
@@ -7,13 +7,13 @@ import {
7
7
  } from "./chunk-KOPEM3Q7.js";
8
8
  import {
9
9
  getStackName
10
- } from "./chunk-FWT3CBLL.js";
10
+ } from "./chunk-YA4QQKKE.js";
11
11
  import {
12
12
  SkillAgentSummary
13
- } from "./chunk-GRPSDKIS.js";
13
+ } from "./chunk-5V2O6C3T.js";
14
14
  import {
15
15
  useWizardStore
16
- } from "./chunk-MC5DUZ3V.js";
16
+ } from "./chunk-44LLPS2N.js";
17
17
  import {
18
18
  ALL_SKILLS_EJECTED_LABEL,
19
19
  CLI_COLORS,
@@ -125,4 +125,4 @@ var SummaryPanel = () => {
125
125
  export {
126
126
  SummaryPanel
127
127
  };
128
- //# sourceMappingURL=chunk-ZHTXPFDK.js.map
128
+ //# sourceMappingURL=chunk-TYJLR32W.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/components/wizard/summary-panel.tsx","../src/cli/components/hooks/use-panel-scroll.ts"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { unique } from \"remeda\";\nimport {\n ALL_SKILLS_EJECTED_LABEL,\n CLI_COLORS,\n DEFAULT_PUBLIC_SOURCE_NAME,\n EJECT_SOURCE,\n formatSourceDisplayName,\n} from \"../../consts.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport type { SkillConfig } from \"../../types/config.js\";\nimport { usePanelScroll } from \"../hooks/use-panel-scroll.js\";\nimport { ScrollAffordance } from \"./scroll-affordance.js\";\nimport { SkillAgentSummary } from \"./skill-agent-summary.js\";\nimport { getStackName } from \"./utils.js\";\n\n/**\n * The Marketplace row's value: the distinct marketplaces the summarised skills come from.\n *\n * `SkillConfig.source` is authoritative for where a skill came from (D-217) and holds exactly one\n * of two things: {@link EJECT_SOURCE}, meaning the files were copied locally, or the marketplace's\n * own name as its `marketplace.json` declares it — which is why a project initialised from a\n * different marketplace names that marketplace here without any extra plumbing.\n *\n * Three cases, and the two zero-marketplace ones are NOT the same state:\n * - **No skills at all.** Reachable — the `I` overlay opens from the stack step before anything is\n * selected. Nothing is claimed yet, so the default public marketplace stands in.\n * - **Skills, but every one ejected.** \"eject\" names no marketplace, so there is none to list;\n * naming the default would assert an origin none of those skills has.\n * - **Any marketplace-sourced skill.** Its marketplace is named. Ejected siblings contribute no\n * name but do not suppress the ones that do.\n *\n * Tombstoned (`excluded`) entries count. One still records a real global install and the\n * marketplace it came from, and `computeScopeDiff` renders it as a row in the summary below, so\n * dropping it here would leave the header disowning a row it sits above.\n *\n * Sorted, so the row cannot reorder between renders on config iteration order alone.\n */\nfunction formatSkillMarketplaces(skillConfigs: SkillConfig[]): string {\n if (skillConfigs.length === 0) return formatSourceDisplayName(DEFAULT_PUBLIC_SOURCE_NAME);\n\n const marketplaceNames = unique(\n skillConfigs.map((config) => config.source).filter((source) => source !== EJECT_SOURCE),\n );\n if (marketplaceNames.length === 0) return ALL_SKILLS_EJECTED_LABEL;\n\n return marketplaceNames\n .map((name) => formatSourceDisplayName(name))\n .sort()\n .join(\" · \");\n}\n\ntype PanelHeaderProps = {\n sourceNames: string;\n stackName: string | undefined;\n};\n\n/**\n * Which marketplaces and which stack the summary below was built from.\n *\n * Rendered inside the scrolled content, so its `marginBottom` scrolls away\n * rather than permanently costing the viewport a row.\n *\n * `flexShrink={0}` is load-bearing: Ink defaults every box to `flexShrink: 1`,\n * so on a short terminal Yoga squeezes this block to fit instead of letting the\n * viewport clip it, and the Marketplace and Stack rows overprint into one\n * unreadable line. Clipping is the panel's job; the header must keep its height.\n */\nconst PanelHeader: React.FC<PanelHeaderProps> = ({ sourceNames, stackName }) => (\n <Box\n flexDirection=\"column\"\n flexShrink={0}\n borderStyle=\"single\"\n borderBottom={true}\n borderTop={false}\n borderLeft={false}\n borderRight={false}\n borderColor={CLI_COLORS.NEUTRAL}\n borderBottomDimColor\n paddingBottom={1}\n marginBottom={1}\n >\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Marketplace\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{sourceNames}</Text>\n </Box>\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Stack\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{stackName ?? \"none\"}</Text>\n </Box>\n </Box>\n);\n\n/**\n * Marketplace/stack header above a clipped, arrow-scrollable\n * `SkillAgentSummary` — the one panel both summary surfaces render: the `I`\n * overlay in `wizard-layout.tsx` and the confirm step.\n *\n * It owns the `↑`/`↓` keys through `usePanelScroll`. A host that needs other\n * keys adds its own `useInput` alongside it — `StepConfirm` claims `Enter` and\n * `Esc` that way.\n *\n * Horizontal padding only. Vertical padding is unshrinkable, so on a short\n * terminal it claims the last row the viewport has and the content measures 0\n * before it has ever been laid out — the panel then paints neither a summary\n * row nor the affordance that would say rows are missing.\n */\nexport const SummaryPanel: React.FC = () => {\n const skillConfigs = useWizardStore((s) => s.skillConfigs);\n const agentConfigs = useWizardStore((s) => s.agentConfigs);\n const selectedStackId = useWizardStore((s) => s.selectedStackId);\n const { viewportRef, contentRef, contentMarginTop, hiddenAbove, hiddenBelow } = usePanelScroll();\n\n const sourceNames = formatSkillMarketplaces(skillConfigs);\n const stackName = getStackName(selectedStackId);\n\n return (\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n flexBasis={0}\n borderStyle=\"single\"\n borderColor={CLI_COLORS.NEUTRAL}\n paddingX={2}\n >\n <Box ref={viewportRef} flexDirection=\"column\" flexGrow={1} flexBasis={0} overflow=\"hidden\">\n <Box ref={contentRef} flexDirection=\"column\" flexShrink={0} marginTop={contentMarginTop}>\n <PanelHeader sourceNames={sourceNames} stackName={stackName} />\n\n <Box width=\"100%\">\n <SkillAgentSummary skillConfigs={skillConfigs} agentConfigs={agentConfigs} />\n </Box>\n </Box>\n </Box>\n <ScrollAffordance hiddenAbove={hiddenAbove} hiddenBelow={hiddenBelow} />\n </Box>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport type { Ref, RefObject } from \"react\";\nimport { type DOMElement, measureElement, useInput } from \"ink\";\nimport { useMeasuredHeight } from \"./use-measured-height.js\";\n\nexport type UsePanelScrollResult = {\n /** Attach to the clipping box — the one with `overflow=\"hidden\"`. */\n viewportRef: Ref<DOMElement>;\n /** Attach to the scrolled content box inside the viewport. */\n contentRef: RefObject<DOMElement>;\n /** Apply as the content box's `marginTop`; negative by the number of lines scrolled off the top. */\n contentMarginTop: number;\n /** Content lines scrolled off the top of the viewport. */\n hiddenAbove: number;\n /** Content lines clipped below the viewport. */\n hiddenBelow: number;\n};\n\n/**\n * Line scrolling for a single clipped viewport, driven by the `↑`/`↓` keys.\n *\n * The caller renders viewport, content and a `ScrollAffordance` sibling; this\n * owns the offset those three agree on. Distinct from `useSectionScroll`, which\n * moves a viewport to follow focus across variable-height sections — here there\n * is no focus, only the arrow keys.\n *\n * A host that needs other keys adds its own `useInput` alongside it, on keys\n * disjoint from `↑`/`↓`.\n */\nexport function usePanelScroll(): UsePanelScrollResult {\n // Measured on the clipping box itself, inside the border and padding, so it\n // is the height the content actually gets.\n const { ref: viewportRef, measuredHeight: viewportHeight } = useMeasuredHeight();\n const contentRef = useRef<DOMElement>(null);\n const [contentHeight, setContentHeight] = useState(0);\n const [scrollOffset, setScrollOffset] = useState(0);\n\n useEffect(() => {\n if (!contentRef.current) return;\n const { height } = measureElement(contentRef.current);\n // Yoga under-reports a wrapped subtree measured inside a viewport too\n // short to lay it out, and reports 0 inside a zero-height one, so the\n // tallest reading is the trustworthy one. Believing a squeezed reading\n // would shrink the hidden-line count until the affordance disappeared,\n // which hands its row back and grows the count again — a render loop.\n setContentHeight((prev) => Math.max(prev, height));\n });\n\n // contentHeight only ever sizes the scroll range and the affordance count.\n // It must never gate the clip — which is why it is not returned: a viewport\n // that stops clipping when it looks too small grows to content height, which\n // makes it look big enough to stop clipping — a stable wrong answer that\n // paints the content over the border.\n const maxScroll = Math.max(0, contentHeight - viewportHeight);\n const hiddenBelow = Math.max(0, maxScroll - scrollOffset);\n\n useInput((_input, key) => {\n if (key.upArrow) setScrollOffset((prev) => Math.max(0, prev - 1));\n if (key.downArrow) setScrollOffset((prev) => Math.min(maxScroll, prev + 1));\n });\n\n return {\n viewportRef,\n contentRef,\n contentMarginTop: scrollOffset > 0 ? -scrollOffset : 0,\n hiddenAbove: scrollOffset,\n hiddenBelow,\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli/components/wizard/summary-panel.tsx","../src/cli/components/hooks/use-panel-scroll.ts"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { unique } from \"remeda\";\nimport {\n ALL_SKILLS_EJECTED_LABEL,\n CLI_COLORS,\n DEFAULT_PUBLIC_SOURCE_NAME,\n EJECT_SOURCE,\n formatSourceDisplayName,\n} from \"../../consts.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport type { SkillConfig } from \"../../types/config.js\";\nimport { usePanelScroll } from \"../hooks/use-panel-scroll.js\";\nimport { ScrollAffordance } from \"./scroll-affordance.js\";\nimport { SkillAgentSummary } from \"./skill-agent-summary.js\";\nimport { getStackName } from \"./utils.js\";\n\n/**\n * The Marketplace row's value: the distinct marketplaces the summarised skills come from.\n *\n * `SkillConfig.source` is authoritative for where a skill came from (D-217) and holds exactly one\n * of two things: {@link EJECT_SOURCE}, meaning the files were copied locally, or the marketplace's\n * own name as its `marketplace.json` declares it — which is why a project initialised from a\n * different marketplace names that marketplace here without any extra plumbing.\n *\n * Three cases, and the two zero-marketplace ones are NOT the same state:\n * - **No skills at all.** Reachable — the `I` overlay opens from the stack step before anything is\n * selected. Nothing is claimed yet, so the default public marketplace stands in.\n * - **Skills, but every one ejected.** \"eject\" names no marketplace, so there is none to list;\n * naming the default would assert an origin none of those skills has.\n * - **Any marketplace-sourced skill.** Its marketplace is named. Ejected siblings contribute no\n * name but do not suppress the ones that do.\n *\n * Tombstoned (`excluded`) entries count. One still records a real global install and the\n * marketplace it came from, and `computeScopeDiff` renders it as a row in the summary below, so\n * dropping it here would leave the header disowning a row it sits above.\n *\n * Sorted, so the row cannot reorder between renders on config iteration order alone.\n */\nfunction formatSkillMarketplaces(skillConfigs: SkillConfig[]): string {\n if (skillConfigs.length === 0) return formatSourceDisplayName(DEFAULT_PUBLIC_SOURCE_NAME);\n\n const marketplaceNames = unique(\n skillConfigs.map((config) => config.source).filter((source) => source !== EJECT_SOURCE),\n );\n if (marketplaceNames.length === 0) return ALL_SKILLS_EJECTED_LABEL;\n\n return marketplaceNames\n .map((name) => formatSourceDisplayName(name))\n .sort()\n .join(\" · \");\n}\n\ntype PanelHeaderProps = {\n sourceNames: string;\n stackName: string | undefined;\n};\n\n/**\n * Which marketplaces and which stack the summary below was built from.\n *\n * Rendered inside the scrolled content, so its `marginBottom` scrolls away\n * rather than permanently costing the viewport a row.\n *\n * `flexShrink={0}` is load-bearing: Ink defaults every box to `flexShrink: 1`,\n * so on a short terminal Yoga squeezes this block to fit instead of letting the\n * viewport clip it, and the Marketplace and Stack rows overprint into one\n * unreadable line. Clipping is the panel's job; the header must keep its height.\n */\nconst PanelHeader: React.FC<PanelHeaderProps> = ({ sourceNames, stackName }) => (\n <Box\n flexDirection=\"column\"\n flexShrink={0}\n borderStyle=\"single\"\n borderBottom={true}\n borderTop={false}\n borderLeft={false}\n borderRight={false}\n borderColor={CLI_COLORS.NEUTRAL}\n borderBottomDimColor\n paddingBottom={1}\n marginBottom={1}\n >\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Marketplace\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{sourceNames}</Text>\n </Box>\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Stack\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{stackName ?? \"none\"}</Text>\n </Box>\n </Box>\n);\n\n/**\n * Marketplace/stack header above a clipped, arrow-scrollable\n * `SkillAgentSummary` — the one panel both summary surfaces render: the `I`\n * overlay in `wizard-layout.tsx` and the confirm step.\n *\n * It owns the `↑`/`↓` keys through `usePanelScroll`. A host that needs other\n * keys adds its own `useInput` alongside it — `StepConfirm` claims `Enter` and\n * `Esc` that way.\n *\n * Horizontal padding only. Vertical padding is unshrinkable, so on a short\n * terminal it claims the last row the viewport has and the content measures 0\n * before it has ever been laid out — the panel then paints neither a summary\n * row nor the affordance that would say rows are missing.\n */\nexport const SummaryPanel: React.FC = () => {\n const skillConfigs = useWizardStore((s) => s.skillConfigs);\n const agentConfigs = useWizardStore((s) => s.agentConfigs);\n const selectedStackId = useWizardStore((s) => s.selectedStackId);\n const { viewportRef, contentRef, contentMarginTop, hiddenAbove, hiddenBelow } = usePanelScroll();\n\n const sourceNames = formatSkillMarketplaces(skillConfigs);\n const stackName = getStackName(selectedStackId);\n\n return (\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n flexBasis={0}\n borderStyle=\"single\"\n borderColor={CLI_COLORS.NEUTRAL}\n paddingX={2}\n >\n <Box ref={viewportRef} flexDirection=\"column\" flexGrow={1} flexBasis={0} overflow=\"hidden\">\n <Box ref={contentRef} flexDirection=\"column\" flexShrink={0} marginTop={contentMarginTop}>\n <PanelHeader sourceNames={sourceNames} stackName={stackName} />\n\n <Box width=\"100%\">\n <SkillAgentSummary skillConfigs={skillConfigs} agentConfigs={agentConfigs} />\n </Box>\n </Box>\n </Box>\n <ScrollAffordance hiddenAbove={hiddenAbove} hiddenBelow={hiddenBelow} />\n </Box>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport type { Ref, RefObject } from \"react\";\nimport { type DOMElement, measureElement, useInput } from \"ink\";\nimport { useMeasuredHeight } from \"./use-measured-height.js\";\n\nexport type UsePanelScrollResult = {\n /** Attach to the clipping box — the one with `overflow=\"hidden\"`. */\n viewportRef: Ref<DOMElement>;\n /** Attach to the scrolled content box inside the viewport. */\n contentRef: RefObject<DOMElement | null>;\n /** Apply as the content box's `marginTop`; negative by the number of lines scrolled off the top. */\n contentMarginTop: number;\n /** Content lines scrolled off the top of the viewport. */\n hiddenAbove: number;\n /** Content lines clipped below the viewport. */\n hiddenBelow: number;\n};\n\n/**\n * Line scrolling for a single clipped viewport, driven by the `↑`/`↓` keys.\n *\n * The caller renders viewport, content and a `ScrollAffordance` sibling; this\n * owns the offset those three agree on. Distinct from `useSectionScroll`, which\n * moves a viewport to follow focus across variable-height sections — here there\n * is no focus, only the arrow keys.\n *\n * A host that needs other keys adds its own `useInput` alongside it, on keys\n * disjoint from `↑`/`↓`.\n */\nexport function usePanelScroll(): UsePanelScrollResult {\n // Measured on the clipping box itself, inside the border and padding, so it\n // is the height the content actually gets.\n const { ref: viewportRef, measuredHeight: viewportHeight } = useMeasuredHeight();\n const contentRef = useRef<DOMElement>(null);\n const [contentHeight, setContentHeight] = useState(0);\n const [scrollOffset, setScrollOffset] = useState(0);\n\n useEffect(() => {\n if (!contentRef.current) return;\n const { height } = measureElement(contentRef.current);\n // Yoga under-reports a wrapped subtree measured inside a viewport too\n // short to lay it out, and reports 0 inside a zero-height one, so the\n // tallest reading is the trustworthy one. Believing a squeezed reading\n // would shrink the hidden-line count until the affordance disappeared,\n // which hands its row back and grows the count again — a render loop.\n setContentHeight((prev) => Math.max(prev, height));\n });\n\n // contentHeight only ever sizes the scroll range and the affordance count.\n // It must never gate the clip — which is why it is not returned: a viewport\n // that stops clipping when it looks too small grows to content height, which\n // makes it look big enough to stop clipping — a stable wrong answer that\n // paints the content over the border.\n const maxScroll = Math.max(0, contentHeight - viewportHeight);\n const hiddenBelow = Math.max(0, maxScroll - scrollOffset);\n\n useInput((_input, key) => {\n if (key.upArrow) setScrollOffset((prev) => Math.max(0, prev - 1));\n if (key.downArrow) setScrollOffset((prev) => Math.min(maxScroll, prev + 1));\n });\n\n return {\n viewportRef,\n contentRef,\n contentMarginTop: scrollOffset > 0 ? -scrollOffset : 0,\n hiddenAbove: scrollOffset,\n hiddenBelow,\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StackSelection
4
- } from "./chunk-4GL2F5AB.js";
4
+ } from "./chunk-LAXAQ3PZ.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-P56WJ5FA.js";
@@ -17,4 +17,4 @@ var StepStack = ({ onCancel }) => {
17
17
  export {
18
18
  StepStack
19
19
  };
20
- //# sourceMappingURL=chunk-F3756A5B.js.map
20
+ //# sourceMappingURL=chunk-UFURYGD3.js.map
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  WIZARD_STEPS,
4
4
  WizardTabs
5
- } from "./chunk-RP7R73JO.js";
5
+ } from "./chunk-EVXG3X6G.js";
6
6
  import {
7
7
  Toast
8
8
  } from "./chunk-RBHYLCUB.js";
9
9
  import {
10
10
  SummaryPanel
11
- } from "./chunk-ZHTXPFDK.js";
11
+ } from "./chunk-TYJLR32W.js";
12
12
  import {
13
13
  getDomainDisplayName,
14
14
  getStackName
15
- } from "./chunk-FWT3CBLL.js";
15
+ } from "./chunk-YA4QQKKE.js";
16
16
  import {
17
17
  HOTKEY_FILTER_INCOMPATIBLE,
18
18
  HOTKEY_INFO,
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  orderDomains,
34
34
  useWizardStore
35
- } from "./chunk-MC5DUZ3V.js";
35
+ } from "./chunk-44LLPS2N.js";
36
36
  import {
37
37
  formatTerminalTooSmallMessage,
38
38
  isTerminalLargeEnough
@@ -250,4 +250,4 @@ export {
250
250
  useTerminalDimensions,
251
251
  WizardLayout
252
252
  };
253
- //# sourceMappingURL=chunk-ZKJAJWK6.js.map
253
+ //# sourceMappingURL=chunk-UTFN6UJS.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readPluginManifest
4
- } from "./chunk-KH7MOIM5.js";
4
+ } from "./chunk-TVHRMRD3.js";
5
5
  import {
6
6
  ensureDir,
7
7
  glob,
@@ -89,4 +89,4 @@ export {
89
89
  writeMarketplace,
90
90
  getMarketplaceStats
91
91
  };
92
- //# sourceMappingURL=chunk-CFQT72MJ.js.map
92
+ //# sourceMappingURL=chunk-WFWCZEMS.js.map
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  getSkillById,
22
22
  matrix
23
- } from "./chunk-DJAZE4PD.js";
23
+ } from "./chunk-DG2NGZ7S.js";
24
24
  import {
25
25
  CLI_COLORS,
26
26
  SOURCE_DISPLAY_NAMES,
@@ -427,4 +427,4 @@ export {
427
427
  isRowInert,
428
428
  SourceGrid
429
429
  };
430
- //# sourceMappingURL=chunk-7URSGJLE.js.map
430
+ //# sourceMappingURL=chunk-WK4J2CHH.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  compileAgents
4
- } from "./chunk-N4IZ6GBO.js";
4
+ } from "./chunk-4R6PGHQQ.js";
5
5
  import {
6
6
  ConfigLoadError,
7
7
  buildAndMergeConfig,
@@ -14,7 +14,7 @@ import {
14
14
  loadSkillsMatrixFromSource,
15
15
  resolveInstallPaths,
16
16
  writeScopedFromWizard
17
- } from "./chunk-KH7MOIM5.js";
17
+ } from "./chunk-TVHRMRD3.js";
18
18
  import {
19
19
  disableBuffering,
20
20
  drainBuffer,
@@ -178,4 +178,4 @@ export {
178
178
  writeProjectConfig,
179
179
  compileAgentsAllScopes
180
180
  };
181
- //# sourceMappingURL=chunk-DDG4F3FE.js.map
181
+ //# sourceMappingURL=chunk-Y4CXDA3I.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  isDomain
4
- } from "./chunk-KH7MOIM5.js";
4
+ } from "./chunk-TVHRMRD3.js";
5
5
  import {
6
6
  findStack
7
- } from "./chunk-DJAZE4PD.js";
7
+ } from "./chunk-DG2NGZ7S.js";
8
8
  import {
9
9
  init_esm_shims
10
10
  } from "./chunk-P56WJ5FA.js";
@@ -48,4 +48,4 @@ export {
48
48
  getDomainDisplayName,
49
49
  getStackName
50
50
  };
51
- //# sourceMappingURL=chunk-FWT3CBLL.js.map
51
+ //# sourceMappingURL=chunk-YA4QQKKE.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAgentDefinitions
4
- } from "./chunk-YKKIJHZB.js";
4
+ } from "./chunk-NGLQ5W7U.js";
5
5
  import {
6
6
  loadMergedAgents
7
7
  } from "./chunk-3LIU2ZEF.js";
@@ -24,4 +24,4 @@ async function loadAgentDefs(options) {
24
24
  export {
25
25
  loadAgentDefs
26
26
  };
27
- //# sourceMappingURL=chunk-VIFZ6NFH.js.map
27
+ //# sourceMappingURL=chunk-YBVA7GPW.js.map
@@ -3,24 +3,24 @@ import {
3
3
  generateMarketplace,
4
4
  getMarketplaceStats,
5
5
  writeMarketplace
6
- } from "../../chunk-CFQT72MJ.js";
6
+ } from "../../chunk-WFWCZEMS.js";
7
7
  import {
8
8
  validateKebabCaseName
9
9
  } from "../../chunk-PG4G4IIK.js";
10
10
  import {
11
11
  BaseCommand,
12
12
  EXIT_CODES
13
- } from "../../chunk-OA5SUEQD.js";
13
+ } from "../../chunk-7QIHKQL5.js";
14
14
  import "../../chunk-SYUOXSPU.js";
15
15
  import "../../chunk-P3PN5SVI.js";
16
- import "../../chunk-KH7MOIM5.js";
16
+ import "../../chunk-TVHRMRD3.js";
17
17
  import {
18
18
  getErrorMessage,
19
19
  readFile,
20
20
  setVerbose,
21
21
  warn
22
22
  } from "../../chunk-3LIU2ZEF.js";
23
- import "../../chunk-DJAZE4PD.js";
23
+ import "../../chunk-DG2NGZ7S.js";
24
24
  import "../../chunk-VEP23B5W.js";
25
25
  import {
26
26
  MARKETPLACE_JSON,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  compileAllAgentPlugins,
4
4
  printAgentCompilationSummary
5
- } from "../../chunk-YKKIJHZB.js";
5
+ } from "../../chunk-NGLQ5W7U.js";
6
6
  import {
7
7
  BaseCommand
8
- } from "../../chunk-OA5SUEQD.js";
8
+ } from "../../chunk-7QIHKQL5.js";
9
9
  import "../../chunk-SYUOXSPU.js";
10
10
  import "../../chunk-P3PN5SVI.js";
11
11
  import {
@@ -13,13 +13,13 @@ import {
13
13
  compileSkillPlugin,
14
14
  printCompilationSummary,
15
15
  readPluginManifest
16
- } from "../../chunk-KH7MOIM5.js";
16
+ } from "../../chunk-TVHRMRD3.js";
17
17
  import {
18
18
  listDirectories,
19
19
  remove,
20
20
  setVerbose
21
21
  } from "../../chunk-3LIU2ZEF.js";
22
- import "../../chunk-DJAZE4PD.js";
22
+ import "../../chunk-DG2NGZ7S.js";
23
23
  import "../../chunk-VEP23B5W.js";
24
24
  import {
25
25
  DIRS,
@@ -9,20 +9,20 @@ import {
9
9
  } from "../chunk-GYG5SE2D.js";
10
10
  import {
11
11
  detectBothInstallations
12
- } from "../chunk-DDG4F3FE.js";
12
+ } from "../chunk-Y4CXDA3I.js";
13
13
  import {
14
14
  compileAgents,
15
15
  discoverInstalledSkills
16
- } from "../chunk-N4IZ6GBO.js";
17
- import "../chunk-CDMHSHBN.js";
16
+ } from "../chunk-4R6PGHQQ.js";
17
+ import "../chunk-3XFUQ6OL.js";
18
18
  import {
19
19
  loadAgentDefs
20
- } from "../chunk-VIFZ6NFH.js";
21
- import "../chunk-YKKIJHZB.js";
20
+ } from "../chunk-YBVA7GPW.js";
21
+ import "../chunk-NGLQ5W7U.js";
22
22
  import {
23
23
  BaseCommand,
24
24
  EXIT_CODES
25
- } from "../chunk-OA5SUEQD.js";
25
+ } from "../chunk-7QIHKQL5.js";
26
26
  import "../chunk-SYUOXSPU.js";
27
27
  import "../chunk-P3PN5SVI.js";
28
28
  import {
@@ -34,13 +34,13 @@ import {
34
34
  loadSkillsMatrixFromSource,
35
35
  reconcileTypesFromDisk,
36
36
  resolveSource
37
- } from "../chunk-KH7MOIM5.js";
37
+ } from "../chunk-TVHRMRD3.js";
38
38
  import {
39
39
  getErrorMessage,
40
40
  setVerbose,
41
41
  verbose
42
42
  } from "../chunk-3LIU2ZEF.js";
43
- import "../chunk-DJAZE4PD.js";
43
+ import "../chunk-DG2NGZ7S.js";
44
44
  import "../chunk-VEP23B5W.js";
45
45
  import {
46
46
  CLI_INVOKE_COMMAND,
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  detectProject,
4
4
  loadSource
5
- } from "../chunk-DDG4F3FE.js";
6
- import "../chunk-N4IZ6GBO.js";
7
- import "../chunk-CDMHSHBN.js";
8
- import "../chunk-VIFZ6NFH.js";
5
+ } from "../chunk-Y4CXDA3I.js";
6
+ import "../chunk-4R6PGHQQ.js";
7
+ import "../chunk-3XFUQ6OL.js";
8
+ import "../chunk-YBVA7GPW.js";
9
9
  import {
10
10
  filterExcludedEntries,
11
11
  listAgentMdFiles
12
- } from "../chunk-YKKIJHZB.js";
12
+ } from "../chunk-NGLQ5W7U.js";
13
13
  import {
14
14
  BaseCommand,
15
15
  EXIT_CODES
16
- } from "../chunk-OA5SUEQD.js";
16
+ } from "../chunk-7QIHKQL5.js";
17
17
  import "../chunk-SYUOXSPU.js";
18
18
  import "../chunk-P3PN5SVI.js";
19
19
  import {
@@ -26,7 +26,7 @@ import {
26
26
  parseMarketplacePluginRef,
27
27
  resolveInstallPaths,
28
28
  validateProjectConfig
29
- } from "../chunk-KH7MOIM5.js";
29
+ } from "../chunk-TVHRMRD3.js";
30
30
  import {
31
31
  directoryExists,
32
32
  fileExists,
@@ -35,7 +35,7 @@ import {
35
35
  } from "../chunk-3LIU2ZEF.js";
36
36
  import {
37
37
  matrix
38
- } from "../chunk-DJAZE4PD.js";
38
+ } from "../chunk-DG2NGZ7S.js";
39
39
  import "../chunk-VEP23B5W.js";
40
40
  import {
41
41
  CLAUDE_SRC_DIR,
@@ -1,34 +1,34 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runWizardSession
4
- } from "../chunk-NUIZ6ZUO.js";
4
+ } from "../chunk-SI5FOARI.js";
5
5
  import {
6
6
  Spinner
7
7
  } from "../chunk-OZZGXBCN.js";
8
- import "../chunk-RJN7W2C7.js";
9
- import "../chunk-ZKJAJWK6.js";
10
- import "../chunk-RP7R73JO.js";
11
- import "../chunk-E4FT2KFV.js";
12
- import "../chunk-F3756A5B.js";
8
+ import "../chunk-EZ7STXUV.js";
9
+ import "../chunk-UTFN6UJS.js";
10
+ import "../chunk-EVXG3X6G.js";
11
+ import "../chunk-OJIESW5B.js";
12
+ import "../chunk-UFURYGD3.js";
13
13
  import "../chunk-RBHYLCUB.js";
14
- import "../chunk-4GL2F5AB.js";
15
- import "../chunk-EN2GCPW7.js";
16
- import "../chunk-LRYNF3J7.js";
17
- import "../chunk-UZRISDBZ.js";
18
- import "../chunk-ZHTXPFDK.js";
14
+ import "../chunk-LAXAQ3PZ.js";
15
+ import "../chunk-NM3EDGB5.js";
16
+ import "../chunk-NHCGC6DG.js";
17
+ import "../chunk-BNE4HHIH.js";
18
+ import "../chunk-TYJLR32W.js";
19
19
  import "../chunk-IOJR5TOY.js";
20
- import "../chunk-ZDLTLNU2.js";
20
+ import "../chunk-3YGUHWLR.js";
21
21
  import "../chunk-QQLRX4KI.js";
22
- import "../chunk-7URSGJLE.js";
22
+ import "../chunk-WK4J2CHH.js";
23
23
  import "../chunk-NIKUMXE7.js";
24
24
  import "../chunk-KOPEM3Q7.js";
25
25
  import "../chunk-2RSNKBXC.js";
26
26
  import "../chunk-DUVWGO6E.js";
27
27
  import "../chunk-KIR7VYQD.js";
28
- import "../chunk-HIPGKIT3.js";
28
+ import "../chunk-6RBQBOBS.js";
29
29
  import "../chunk-LYYXX2W5.js";
30
- import "../chunk-5K5RBRTD.js";
31
- import "../chunk-FWT3CBLL.js";
30
+ import "../chunk-SHHOMVWC.js";
31
+ import "../chunk-YA4QQKKE.js";
32
32
  import "../chunk-XA57SX4T.js";
33
33
  import "../chunk-FYPUUYSG.js";
34
34
  import "../chunk-DAG2ULNF.js";
@@ -43,28 +43,28 @@ import {
43
43
  detectProject,
44
44
  loadSource,
45
45
  writeProjectConfig
46
- } from "../chunk-DDG4F3FE.js";
46
+ } from "../chunk-Y4CXDA3I.js";
47
47
  import {
48
48
  discoverInstalledSkills,
49
49
  installPluginSkills,
50
50
  pluginInstallFailureError,
51
51
  uninstallPluginSkills
52
- } from "../chunk-N4IZ6GBO.js";
52
+ } from "../chunk-4R6PGHQQ.js";
53
53
  import {
54
54
  copyLocalSkills
55
- } from "../chunk-CDMHSHBN.js";
55
+ } from "../chunk-3XFUQ6OL.js";
56
56
  import {
57
57
  loadAgentDefs
58
- } from "../chunk-VIFZ6NFH.js";
59
- import "../chunk-YKKIJHZB.js";
60
- import "../chunk-GRPSDKIS.js";
58
+ } from "../chunk-YBVA7GPW.js";
59
+ import "../chunk-NGLQ5W7U.js";
60
+ import "../chunk-5V2O6C3T.js";
61
61
  import {
62
62
  formatScopeTag
63
- } from "../chunk-MC5DUZ3V.js";
63
+ } from "../chunk-44LLPS2N.js";
64
64
  import {
65
65
  BaseCommand,
66
66
  EXIT_CODES
67
- } from "../chunk-OA5SUEQD.js";
67
+ } from "../chunk-7QIHKQL5.js";
68
68
  import {
69
69
  source_default
70
70
  } from "../chunk-SYUOXSPU.js";
@@ -86,7 +86,7 @@ import {
86
86
  mutateGlobal,
87
87
  resolveInstallPaths,
88
88
  toClaudePluginScope
89
- } from "../chunk-KH7MOIM5.js";
89
+ } from "../chunk-TVHRMRD3.js";
90
90
  import {
91
91
  getErrorMessage,
92
92
  remove
@@ -95,7 +95,7 @@ import {
95
95
  getSkillById,
96
96
  getSkillDisplayName,
97
97
  matrix
98
- } from "../chunk-DJAZE4PD.js";
98
+ } from "../chunk-DG2NGZ7S.js";
99
99
  import {
100
100
  typedKeys
101
101
  } from "../chunk-VEP23B5W.js";
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  loadSource
4
- } from "../chunk-DDG4F3FE.js";
5
- import "../chunk-N4IZ6GBO.js";
6
- import "../chunk-CDMHSHBN.js";
7
- import "../chunk-VIFZ6NFH.js";
8
- import "../chunk-YKKIJHZB.js";
4
+ } from "../chunk-Y4CXDA3I.js";
5
+ import "../chunk-4R6PGHQQ.js";
6
+ import "../chunk-3XFUQ6OL.js";
7
+ import "../chunk-YBVA7GPW.js";
8
+ import "../chunk-NGLQ5W7U.js";
9
9
  import {
10
10
  BaseCommand,
11
11
  EXIT_CODES
12
- } from "../chunk-OA5SUEQD.js";
12
+ } from "../chunk-7QIHKQL5.js";
13
13
  import "../chunk-SYUOXSPU.js";
14
14
  import "../chunk-P3PN5SVI.js";
15
15
  import {
@@ -22,7 +22,7 @@ import {
22
22
  mutateGlobal,
23
23
  resolveSource,
24
24
  writeProjectPartial
25
- } from "../chunk-KH7MOIM5.js";
25
+ } from "../chunk-TVHRMRD3.js";
26
26
  import {
27
27
  copy,
28
28
  directoryExists,
@@ -32,7 +32,7 @@ import {
32
32
  } from "../chunk-3LIU2ZEF.js";
33
33
  import {
34
34
  matrix
35
- } from "../chunk-DJAZE4PD.js";
35
+ } from "../chunk-DG2NGZ7S.js";
36
36
  import {
37
37
  typedKeys
38
38
  } from "../chunk-VEP23B5W.js";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  BaseCommand,
8
8
  EXIT_CODES
9
- } from "../../chunk-OA5SUEQD.js";
9
+ } from "../../chunk-7QIHKQL5.js";
10
10
  import "../../chunk-SYUOXSPU.js";
11
11
  import "../../chunk-P3PN5SVI.js";
12
12
  import {
@@ -17,7 +17,7 @@ import {
17
17
  stripYamlSchemaComment,
18
18
  toTitleCase,
19
19
  writeMetadataYaml
20
- } from "../../chunk-KH7MOIM5.js";
20
+ } from "../../chunk-TVHRMRD3.js";
21
21
  import {
22
22
  copy,
23
23
  directoryExists,
@@ -29,7 +29,7 @@ import {
29
29
  readFile,
30
30
  warn
31
31
  } from "../../chunk-3LIU2ZEF.js";
32
- import "../../chunk-DJAZE4PD.js";
32
+ import "../../chunk-DG2NGZ7S.js";
33
33
  import "../../chunk-VEP23B5W.js";
34
34
  import {
35
35
  DEFAULT_SKILLS_SUBDIR,
@@ -5,53 +5,53 @@ import {
5
5
  getDashboardData,
6
6
  runDashboardFlow,
7
7
  showDashboard
8
- } from "../chunk-6I6RZHYP.js";
8
+ } from "../chunk-QTFQEYDA.js";
9
9
  import "../chunk-C55DN7GE.js";
10
- import "../chunk-NUIZ6ZUO.js";
10
+ import "../chunk-SI5FOARI.js";
11
11
  import "../chunk-OZZGXBCN.js";
12
- import "../chunk-RJN7W2C7.js";
13
- import "../chunk-ZKJAJWK6.js";
14
- import "../chunk-RP7R73JO.js";
15
- import "../chunk-E4FT2KFV.js";
16
- import "../chunk-F3756A5B.js";
12
+ import "../chunk-EZ7STXUV.js";
13
+ import "../chunk-UTFN6UJS.js";
14
+ import "../chunk-EVXG3X6G.js";
15
+ import "../chunk-OJIESW5B.js";
16
+ import "../chunk-UFURYGD3.js";
17
17
  import "../chunk-RBHYLCUB.js";
18
- import "../chunk-4GL2F5AB.js";
19
- import "../chunk-EN2GCPW7.js";
20
- import "../chunk-LRYNF3J7.js";
21
- import "../chunk-UZRISDBZ.js";
22
- import "../chunk-ZHTXPFDK.js";
18
+ import "../chunk-LAXAQ3PZ.js";
19
+ import "../chunk-NM3EDGB5.js";
20
+ import "../chunk-NHCGC6DG.js";
21
+ import "../chunk-BNE4HHIH.js";
22
+ import "../chunk-TYJLR32W.js";
23
23
  import "../chunk-IOJR5TOY.js";
24
- import "../chunk-ZDLTLNU2.js";
24
+ import "../chunk-3YGUHWLR.js";
25
25
  import "../chunk-QQLRX4KI.js";
26
- import "../chunk-7URSGJLE.js";
26
+ import "../chunk-WK4J2CHH.js";
27
27
  import "../chunk-NIKUMXE7.js";
28
28
  import "../chunk-KOPEM3Q7.js";
29
29
  import "../chunk-2RSNKBXC.js";
30
30
  import "../chunk-DUVWGO6E.js";
31
31
  import "../chunk-KIR7VYQD.js";
32
- import "../chunk-HIPGKIT3.js";
32
+ import "../chunk-6RBQBOBS.js";
33
33
  import "../chunk-LYYXX2W5.js";
34
- import "../chunk-5K5RBRTD.js";
35
- import "../chunk-FWT3CBLL.js";
34
+ import "../chunk-SHHOMVWC.js";
35
+ import "../chunk-YA4QQKKE.js";
36
36
  import "../chunk-XA57SX4T.js";
37
37
  import "../chunk-FYPUUYSG.js";
38
38
  import "../chunk-DAG2ULNF.js";
39
39
  import "../chunk-VG2TVBFN.js";
40
40
  import "../chunk-IHO75PMZ.js";
41
41
  import "../chunk-GYG5SE2D.js";
42
- import "../chunk-DDG4F3FE.js";
43
- import "../chunk-N4IZ6GBO.js";
44
- import "../chunk-CDMHSHBN.js";
45
- import "../chunk-VIFZ6NFH.js";
46
- import "../chunk-YKKIJHZB.js";
47
- import "../chunk-GRPSDKIS.js";
48
- import "../chunk-MC5DUZ3V.js";
49
- import "../chunk-OA5SUEQD.js";
42
+ import "../chunk-Y4CXDA3I.js";
43
+ import "../chunk-4R6PGHQQ.js";
44
+ import "../chunk-3XFUQ6OL.js";
45
+ import "../chunk-YBVA7GPW.js";
46
+ import "../chunk-NGLQ5W7U.js";
47
+ import "../chunk-5V2O6C3T.js";
48
+ import "../chunk-44LLPS2N.js";
49
+ import "../chunk-7QIHKQL5.js";
50
50
  import "../chunk-SYUOXSPU.js";
51
51
  import "../chunk-P3PN5SVI.js";
52
- import "../chunk-KH7MOIM5.js";
52
+ import "../chunk-TVHRMRD3.js";
53
53
  import "../chunk-3LIU2ZEF.js";
54
- import "../chunk-DJAZE4PD.js";
54
+ import "../chunk-DG2NGZ7S.js";
55
55
  import "../chunk-VEP23B5W.js";
56
56
  import "../chunk-O5ASLZ2K.js";
57
57
  import "../chunk-YU2VGX5R.js";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SkillAgentSummary
4
- } from "../chunk-GRPSDKIS.js";
4
+ } from "../chunk-5V2O6C3T.js";
5
5
  import {
6
6
  hydrateWizardStore
7
- } from "../chunk-MC5DUZ3V.js";
7
+ } from "../chunk-44LLPS2N.js";
8
8
  import {
9
9
  BaseCommand
10
- } from "../chunk-OA5SUEQD.js";
10
+ } from "../chunk-7QIHKQL5.js";
11
11
  import "../chunk-SYUOXSPU.js";
12
12
  import "../chunk-P3PN5SVI.js";
13
13
  import {
@@ -16,9 +16,9 @@ import {
16
16
  formatInstallationDisplay,
17
17
  getInstallationInfo,
18
18
  loadProjectConfig
19
- } from "../chunk-KH7MOIM5.js";
19
+ } from "../chunk-TVHRMRD3.js";
20
20
  import "../chunk-3LIU2ZEF.js";
21
- import "../chunk-DJAZE4PD.js";
21
+ import "../chunk-DG2NGZ7S.js";
22
22
  import "../chunk-VEP23B5W.js";
23
23
  import {
24
24
  CLI_COLORS,