@agents-inc/cli 0.74.12 → 0.75.1

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 (155) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{chunk-6W4H2K3Z.js → chunk-5BGBH3KD.js} +34 -20
  3. package/dist/chunk-5BGBH3KD.js.map +1 -0
  4. package/dist/{chunk-4CRWKTNQ.js → chunk-6C66NL4X.js} +2 -8
  5. package/dist/chunk-6C66NL4X.js.map +1 -0
  6. package/dist/{chunk-JBQRRJRY.js → chunk-7QAVO7VN.js} +43 -14
  7. package/dist/{chunk-JBQRRJRY.js.map → chunk-7QAVO7VN.js.map} +1 -1
  8. package/dist/{chunk-HT5KOOUQ.js → chunk-AOZBHMYL.js} +1 -2
  9. package/dist/chunk-AOZBHMYL.js.map +1 -0
  10. package/dist/{chunk-EWGFIBBU.js → chunk-BVSWWBPE.js} +4 -4
  11. package/dist/{chunk-62FBXUNR.js → chunk-CBXMOWQY.js} +2 -2
  12. package/dist/{chunk-NO2XIAJC.js → chunk-CUCF5LM4.js} +5 -5
  13. package/dist/{chunk-6RGNXTTG.js → chunk-DFKNFZI2.js} +16 -23
  14. package/dist/chunk-DFKNFZI2.js.map +1 -0
  15. package/dist/{chunk-MZQKSK3J.js → chunk-FHHTDPMW.js} +20 -11
  16. package/dist/{chunk-MZQKSK3J.js.map → chunk-FHHTDPMW.js.map} +1 -1
  17. package/dist/{chunk-DZUZVT5X.js → chunk-FYYIRFYT.js} +4 -4
  18. package/dist/{chunk-2YFC7IJ6.js → chunk-GCT7LSYW.js} +3 -3
  19. package/dist/{chunk-YUSLPHXO.js → chunk-GMUOEQOY.js} +5 -5
  20. package/dist/{chunk-NG2GGK6P.js → chunk-HKIQA4F6.js} +3813 -2751
  21. package/dist/chunk-HKIQA4F6.js.map +1 -0
  22. package/dist/{chunk-ZU7AOE3X.js → chunk-JGSPESM3.js} +2 -6
  23. package/dist/chunk-JGSPESM3.js.map +1 -0
  24. package/dist/{chunk-7M4INWUR.js → chunk-JNQKCZA3.js} +4 -7
  25. package/dist/chunk-JNQKCZA3.js.map +1 -0
  26. package/dist/{chunk-PJUC2WCA.js → chunk-JOTAIMTC.js} +27 -11
  27. package/dist/chunk-JOTAIMTC.js.map +1 -0
  28. package/dist/{chunk-IJLAVOKZ.js → chunk-KDYE3AGL.js} +2 -2
  29. package/dist/{chunk-NKKYTCBH.js → chunk-PSU42CXK.js} +609 -118
  30. package/dist/chunk-PSU42CXK.js.map +1 -0
  31. package/dist/{chunk-AKW425U6.js → chunk-Q3F36QZZ.js} +2 -2
  32. package/dist/{chunk-BM5Y6LIC.js → chunk-Q72ZBA4X.js} +2 -2
  33. package/dist/{chunk-DG2T7KYG.js → chunk-QN3V3ES7.js} +6 -6
  34. package/dist/{chunk-I7WXUAWA.js → chunk-SPATQKH6.js} +3 -3
  35. package/dist/{chunk-SRIH4U5Y.js → chunk-SYGXJBG6.js} +14 -3
  36. package/dist/chunk-SYGXJBG6.js.map +1 -0
  37. package/dist/{chunk-IJNNVCS4.js → chunk-TYM4D3OF.js} +2 -2
  38. package/dist/{chunk-ARGCINJC.js → chunk-U5R4M7MA.js} +6 -8
  39. package/dist/chunk-U5R4M7MA.js.map +1 -0
  40. package/dist/{chunk-LVNNP7T4.js → chunk-U6A4YFOF.js} +3 -3
  41. package/dist/{chunk-ICJV3JJF.js → chunk-UQKCYLOA.js} +26 -67
  42. package/dist/chunk-UQKCYLOA.js.map +1 -0
  43. package/dist/{chunk-HGTC76BX.js → chunk-V36FRPAU.js} +4 -2
  44. package/dist/chunk-V36FRPAU.js.map +1 -0
  45. package/dist/{chunk-NPMGVQM4.js → chunk-VU4ZCRZS.js} +5 -5
  46. package/dist/{chunk-TDHEAHXD.js → chunk-W22IYRZV.js} +3 -3
  47. package/dist/chunk-W22IYRZV.js.map +1 -0
  48. package/dist/{chunk-GJWHA6P4.js → chunk-WXC2Y5TF.js} +23 -17
  49. package/dist/chunk-WXC2Y5TF.js.map +1 -0
  50. package/dist/{chunk-RRBWNEG3.js → chunk-XHTN56UT.js} +2 -2
  51. package/dist/{chunk-W6NWOYMS.js → chunk-XZ57QYVI.js} +3 -3
  52. package/dist/{chunk-2DKJM7RO.js → chunk-ZZJ6H6VB.js} +23 -8
  53. package/dist/chunk-ZZJ6H6VB.js.map +1 -0
  54. package/dist/commands/build/marketplace.js +4 -4
  55. package/dist/commands/build/plugins.js +8 -8
  56. package/dist/commands/build/stack.js +8 -8
  57. package/dist/commands/compile.js +8 -8
  58. package/dist/commands/config/index.js +8 -8
  59. package/dist/commands/config/path.js +7 -7
  60. package/dist/commands/config/show.js +8 -8
  61. package/dist/commands/diff.js +7 -7
  62. package/dist/commands/doctor.js +7 -7
  63. package/dist/commands/edit.js +25 -25
  64. package/dist/commands/eject.js +7 -7
  65. package/dist/commands/import/skill.js +7 -7
  66. package/dist/commands/info.js +7 -15
  67. package/dist/commands/info.js.map +1 -1
  68. package/dist/commands/init.js +25 -25
  69. package/dist/commands/list.js +7 -7
  70. package/dist/commands/new/agent.js +8 -8
  71. package/dist/commands/new/marketplace.js +9 -9
  72. package/dist/commands/new/skill.js +8 -8
  73. package/dist/commands/outdated.js +7 -7
  74. package/dist/commands/search.js +11 -12
  75. package/dist/commands/search.js.map +1 -1
  76. package/dist/commands/uninstall.js +7 -7
  77. package/dist/commands/update.js +8 -8
  78. package/dist/commands/validate.js +7 -7
  79. package/dist/components/skill-search/skill-search.js +1 -1
  80. package/dist/components/wizard/category-grid.js +2 -2
  81. package/dist/components/wizard/category-grid.test.js +16 -17
  82. package/dist/components/wizard/category-grid.test.js.map +1 -1
  83. package/dist/components/wizard/checkbox-grid.js +2 -2
  84. package/dist/components/wizard/checkbox-grid.test.js +2 -2
  85. package/dist/components/wizard/domain-selection.js +11 -11
  86. package/dist/components/wizard/source-grid.js +2 -2
  87. package/dist/components/wizard/source-grid.test.js +11 -11
  88. package/dist/components/wizard/stack-selection.js +8 -8
  89. package/dist/components/wizard/step-agents.js +10 -10
  90. package/dist/components/wizard/step-agents.test.js +14 -14
  91. package/dist/components/wizard/step-agents.test.js.map +1 -1
  92. package/dist/components/wizard/step-build.js +11 -11
  93. package/dist/components/wizard/step-build.test.js +13 -13
  94. package/dist/components/wizard/step-confirm.js +5 -5
  95. package/dist/components/wizard/step-confirm.test.js +11 -11
  96. package/dist/components/wizard/step-refine.js +2 -2
  97. package/dist/components/wizard/step-refine.test.js +2 -2
  98. package/dist/components/wizard/step-settings.js +8 -8
  99. package/dist/components/wizard/step-settings.test.js +11 -11
  100. package/dist/components/wizard/step-sources.js +11 -11
  101. package/dist/components/wizard/step-sources.test.js +24 -168
  102. package/dist/components/wizard/step-sources.test.js.map +1 -1
  103. package/dist/components/wizard/step-stack.js +13 -13
  104. package/dist/components/wizard/step-stack.test.js +14 -14
  105. package/dist/components/wizard/view-title.js +1 -2
  106. package/dist/components/wizard/wizard-layout.js +9 -9
  107. package/dist/components/wizard/wizard.js +23 -23
  108. package/dist/config-exports.js +1 -1
  109. package/dist/hooks/init.js +25 -25
  110. package/dist/{loader-NHUCFMFQ.js → loader-TK7YS2I5.js} +4 -4
  111. package/dist/plugins/dummy-skill/.claude-plugin/.content-hash +1 -0
  112. package/dist/plugins/dummy-skill/.claude-plugin/plugin.json +13 -0
  113. package/dist/{source-loader-42GVUFZA.js → source-loader-UQXJVVSO.js} +7 -7
  114. package/dist/source-manager-HS2ZT4XE.js +19 -0
  115. package/dist/stores/wizard-store.js +7 -7
  116. package/dist/stores/wizard-store.test.js +10 -10
  117. package/package.json +1 -1
  118. package/src/schemas/custom-metadata.schema.json +0 -7
  119. package/src/schemas/metadata.schema.json +0 -7
  120. package/dist/chunk-2DKJM7RO.js.map +0 -1
  121. package/dist/chunk-4CRWKTNQ.js.map +0 -1
  122. package/dist/chunk-6RGNXTTG.js.map +0 -1
  123. package/dist/chunk-6W4H2K3Z.js.map +0 -1
  124. package/dist/chunk-7M4INWUR.js.map +0 -1
  125. package/dist/chunk-ARGCINJC.js.map +0 -1
  126. package/dist/chunk-GJWHA6P4.js.map +0 -1
  127. package/dist/chunk-HGTC76BX.js.map +0 -1
  128. package/dist/chunk-HT5KOOUQ.js.map +0 -1
  129. package/dist/chunk-ICJV3JJF.js.map +0 -1
  130. package/dist/chunk-NG2GGK6P.js.map +0 -1
  131. package/dist/chunk-NKKYTCBH.js.map +0 -1
  132. package/dist/chunk-PJUC2WCA.js.map +0 -1
  133. package/dist/chunk-SRIH4U5Y.js.map +0 -1
  134. package/dist/chunk-TDHEAHXD.js.map +0 -1
  135. package/dist/chunk-ZU7AOE3X.js.map +0 -1
  136. package/dist/source-manager-WRZBOTEH.js +0 -19
  137. /package/dist/{chunk-EWGFIBBU.js.map → chunk-BVSWWBPE.js.map} +0 -0
  138. /package/dist/{chunk-62FBXUNR.js.map → chunk-CBXMOWQY.js.map} +0 -0
  139. /package/dist/{chunk-NO2XIAJC.js.map → chunk-CUCF5LM4.js.map} +0 -0
  140. /package/dist/{chunk-DZUZVT5X.js.map → chunk-FYYIRFYT.js.map} +0 -0
  141. /package/dist/{chunk-2YFC7IJ6.js.map → chunk-GCT7LSYW.js.map} +0 -0
  142. /package/dist/{chunk-YUSLPHXO.js.map → chunk-GMUOEQOY.js.map} +0 -0
  143. /package/dist/{chunk-IJLAVOKZ.js.map → chunk-KDYE3AGL.js.map} +0 -0
  144. /package/dist/{chunk-AKW425U6.js.map → chunk-Q3F36QZZ.js.map} +0 -0
  145. /package/dist/{chunk-BM5Y6LIC.js.map → chunk-Q72ZBA4X.js.map} +0 -0
  146. /package/dist/{chunk-DG2T7KYG.js.map → chunk-QN3V3ES7.js.map} +0 -0
  147. /package/dist/{chunk-I7WXUAWA.js.map → chunk-SPATQKH6.js.map} +0 -0
  148. /package/dist/{chunk-IJNNVCS4.js.map → chunk-TYM4D3OF.js.map} +0 -0
  149. /package/dist/{chunk-LVNNP7T4.js.map → chunk-U6A4YFOF.js.map} +0 -0
  150. /package/dist/{chunk-NPMGVQM4.js.map → chunk-VU4ZCRZS.js.map} +0 -0
  151. /package/dist/{chunk-RRBWNEG3.js.map → chunk-XHTN56UT.js.map} +0 -0
  152. /package/dist/{chunk-W6NWOYMS.js.map → chunk-XZ57QYVI.js.map} +0 -0
  153. /package/dist/{loader-NHUCFMFQ.js.map → loader-TK7YS2I5.js.map} +0 -0
  154. /package/dist/{source-loader-42GVUFZA.js.map → source-loader-UQXJVVSO.js.map} +0 -0
  155. /package/dist/{source-manager-WRZBOTEH.js.map → source-manager-HS2ZT4XE.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/source-grid.tsx","../src/cli/components/hooks/use-source-grid-search-modal.ts"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport type { BoundSkillCandidate, SkillAlias, SkillId } from \"../../types/index.js\";\nimport { CLI_COLORS, SOURCE_DISPLAY_NAMES } from \"../../consts.js\";\nimport { getSkillById } from \"../../lib/matrix/matrix-provider.js\";\nimport { useFocusedListItem } from \"../hooks/use-focused-list-item.js\";\nimport { useSectionScroll } from \"../hooks/use-section-scroll.js\";\nimport { useSourceGridSearchModal } from \"../hooks/use-source-grid-search-modal.js\";\nimport { SearchModal } from \"./search-modal.js\";\n\nconst SEARCH_PILL_LABEL = \"\\u2315 Search\";\n\nexport type SourceOption = {\n id: string;\n selected: boolean;\n installed: boolean;\n};\n\nexport type SourceRow = {\n skillId: SkillId;\n options: SourceOption[];\n};\n\nexport type SourceGridProps = {\n rows: SourceRow[];\n /** Available height in terminal lines for the scrollable viewport. 0 = no constraint. */\n availableHeight?: number;\n onSelect: (skillId: SkillId, sourceId: string) => void;\n onSearch?: (alias: SkillAlias) => Promise<BoundSkillCandidate[]>;\n onBind?: (candidate: BoundSkillCandidate) => void;\n onSearchStateChange?: (active: boolean) => void;\n /** Optional initial focus row (default: 0). Use with React `key` to reset. */\n defaultFocusedRow?: number;\n /** Optional initial focus col (default: 0). Use with React `key` to reset. */\n defaultFocusedCol?: number;\n /** Optional callback fired whenever the focused position changes */\n onFocusChange?: (row: number, col: number) => void;\n};\n\ntype SearchPillProps = {\n isFocused: boolean;\n};\n\nconst SearchPill: React.FC<SearchPillProps> = ({ isFocused }) => {\n const borderColor = isFocused ? CLI_COLORS.UNFOCUSED : CLI_COLORS.NEUTRAL;\n\n return (\n <Box marginRight={1} borderColor={borderColor} borderStyle=\"single\" borderDimColor={!isFocused}>\n <Text dimColor={!isFocused} bold={isFocused}>\n {\" \"}\n {SEARCH_PILL_LABEL}{\" \"}\n </Text>\n </Box>\n );\n};\n\ntype SourceSectionProps = {\n row: SourceRow;\n isFocused: boolean;\n focusedOptionIndex: number;\n showSearchPill: boolean;\n};\n\nfunction formatSourceLabel(option: SourceOption): string {\n const displayName = SOURCE_DISPLAY_NAMES[option.id] ?? option.id;\n const prefix = option.installed ? \"\\u2713 \" : \"\";\n return `${prefix}${displayName}`;\n}\n\nconst SourceTag: React.FC<{ option: SourceOption; isFocused: boolean }> = ({\n option,\n isFocused,\n}) => {\n const getBorderColor = (): string => {\n if (isFocused) {\n return option.selected ? CLI_COLORS.PRIMARY : CLI_COLORS.UNFOCUSED;\n }\n return CLI_COLORS.NEUTRAL;\n };\n\n const textColor = option.selected ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL;\n const isBold = isFocused || option.selected;\n\n return (\n <Box\n marginRight={1}\n borderColor={getBorderColor()}\n borderStyle=\"single\"\n borderDimColor={!isFocused && !option.selected}\n >\n <Text color={textColor} bold={isBold} dimColor={false}>\n {\" \"}\n {formatSourceLabel(option)}{\" \"}\n </Text>\n </Box>\n );\n};\n\nconst SourceSection: React.FC<SourceSectionProps> = ({\n row,\n isFocused,\n focusedOptionIndex,\n showSearchPill,\n}) => {\n const searchPillIndex = row.options.length;\n\n return (\n <Box flexDirection=\"column\" marginTop={1}>\n <Box flexDirection=\"row\">\n <Text>{getSkillById(row.skillId).displayName}</Text>\n </Box>\n\n <Box flexDirection=\"row\" flexWrap=\"wrap\" marginTop={0}>\n {row.options.map((option, index) => (\n <SourceTag\n key={option.id}\n option={option}\n isFocused={isFocused && index === focusedOptionIndex}\n />\n ))}\n {showSearchPill && (\n <SearchPill isFocused={isFocused && focusedOptionIndex === searchPillIndex} />\n )}\n </Box>\n </Box>\n );\n};\n\n/** Total navigable columns for a row (options + search pill if applicable) */\nconst getNavigableCount = (row: SourceRow, showSearchPill: boolean): number => {\n return row.options.length + (showSearchPill ? 1 : 0);\n};\n\nexport const SourceGrid: React.FC<SourceGridProps> = ({\n rows,\n availableHeight = 0,\n onSelect,\n onSearch,\n onBind,\n onSearchStateChange,\n defaultFocusedRow = 0,\n defaultFocusedCol = 0,\n onFocusChange,\n}) => {\n const {\n searchModal,\n searchResults,\n searchAlias,\n handleSearchTrigger,\n handleBind,\n handleCloseSearch,\n } = useSourceGridSearchModal({ rows, onSearch, onBind, onSearchStateChange });\n\n const showSearchPill = !!onSearch;\n\n const getColCount = useCallback(\n (row: number): number => {\n const rowData = rows[row];\n return rowData ? getNavigableCount(rowData, showSearchPill) : 0;\n },\n [rows, showSearchPill],\n );\n\n const { focusedRow, focusedCol, moveFocus } = useFocusedListItem(rows.length, getColCount, {\n wrap: true,\n onChange: onFocusChange,\n initialRow: defaultFocusedRow,\n initialCol: defaultFocusedCol,\n });\n\n const { setSectionRef, scrollEnabled, scrollTopPx } = useSectionScroll({\n sectionCount: rows.length,\n focusedIndex: focusedRow,\n availableHeight,\n });\n\n useInput(\n useCallback(\n (\n input: string,\n key: {\n leftArrow: boolean;\n rightArrow: boolean;\n upArrow: boolean;\n downArrow: boolean;\n return: boolean;\n },\n ) => {\n if (input === \" \") {\n const currentRow = rows[focusedRow];\n if (!currentRow) return;\n if (showSearchPill && focusedCol === currentRow.options.length) {\n void handleSearchTrigger(focusedRow);\n return;\n }\n if (focusedCol < currentRow.options.length) {\n const currentOption = currentRow.options[focusedCol];\n if (currentOption) {\n onSelect(currentRow.skillId, currentOption.id);\n }\n }\n return;\n }\n\n const isLeft = key.leftArrow;\n const isRight = key.rightArrow;\n const isUp = key.upArrow;\n const isDown = key.downArrow;\n\n if (isLeft) {\n moveFocus(\"left\");\n } else if (isRight) {\n moveFocus(\"right\");\n } else if (isUp) {\n moveFocus(\"up\");\n } else if (isDown) {\n moveFocus(\"down\");\n }\n },\n [rows, focusedRow, focusedCol, onSelect, showSearchPill, handleSearchTrigger, moveFocus],\n ),\n { isActive: !searchModal.isOpen },\n );\n\n if (rows.length === 0) {\n return (\n <Box flexDirection=\"column\">\n <Text dimColor>No skills to display.</Text>\n </Box>\n );\n }\n\n const noShrink = scrollEnabled ? { flexShrink: 0 } : {};\n\n const sectionElements = rows.map((row, rowIndex) => (\n <Box key={row.skillId} ref={(el) => setSectionRef(rowIndex, el)} {...noShrink}>\n <SourceSection\n row={row}\n isFocused={rowIndex === focusedRow}\n focusedOptionIndex={focusedCol}\n showSearchPill={showSearchPill}\n />\n </Box>\n ));\n\n const searchModalElement = searchModal.isOpen && (\n <SearchModal\n results={searchResults}\n alias={searchAlias}\n onBind={handleBind}\n onClose={handleCloseSearch}\n />\n );\n\n return (\n <Box\n flexDirection=\"column\"\n {...(scrollEnabled ? { height: availableHeight } : { flexGrow: 1 })}\n >\n <Box flexDirection=\"column\" overflow=\"hidden\" flexGrow={1}>\n <Box flexDirection=\"column\" marginTop={scrollTopPx > 0 ? -scrollTopPx : 0} {...noShrink}>\n {sectionElements}\n </Box>\n </Box>\n {searchModalElement}\n </Box>\n );\n};\n","import { useCallback, useState } from \"react\";\nimport type { BoundSkillCandidate, SkillAlias } from \"../../types/index.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport { useModalState } from \"./use-modal-state.js\";\nimport type { SourceRow } from \"../wizard/source-grid.js\";\n\ntype UseSourceGridSearchModalOptions = {\n rows: SourceRow[];\n onSearch?: (alias: SkillAlias) => Promise<BoundSkillCandidate[]>;\n onBind?: (candidate: BoundSkillCandidate) => void;\n onSearchStateChange?: (active: boolean) => void;\n};\n\ntype UseSourceGridSearchModalResult = {\n searchModal: { isOpen: boolean };\n searchResults: BoundSkillCandidate[];\n searchAlias: string;\n handleSearchTrigger: (rowIndex: number) => Promise<void>;\n handleBind: (candidate: BoundSkillCandidate) => void;\n handleCloseSearch: () => void;\n};\n\nexport function useSourceGridSearchModal({\n rows,\n onSearch,\n onBind,\n onSearchStateChange,\n}: UseSourceGridSearchModalOptions): UseSourceGridSearchModalResult {\n const searchModal = useModalState<number>();\n const [searchResults, setSearchResults] = useState<BoundSkillCandidate[]>([]);\n const [searchAlias, setSearchAlias] = useState(\"\");\n\n const resetSearch = useCallback(() => {\n searchModal.close();\n setSearchResults([]);\n setSearchAlias(\"\");\n onSearchStateChange?.(false);\n }, [onSearchStateChange, searchModal]);\n\n const handleSearchTrigger = useCallback(\n async (rowIndex: number) => {\n const row = rows[rowIndex];\n if (!row || !onSearch) return;\n\n const alias = matrix.slugMap.idToSlug[row.skillId];\n if (!alias) return;\n setSearchAlias(alias);\n searchModal.open(rowIndex);\n onSearchStateChange?.(true);\n\n const results = await onSearch(alias);\n setSearchResults(results);\n },\n [rows, onSearch, onSearchStateChange, searchModal],\n );\n\n const handleBind = useCallback(\n (candidate: BoundSkillCandidate) => {\n onBind?.(candidate);\n resetSearch();\n },\n [onBind, resetSearch],\n );\n\n const handleCloseSearch = useCallback(() => {\n resetSearch();\n }, [resetSearch]);\n\n return {\n searchModal: { isOpen: searchModal.isOpen },\n searchResults,\n searchAlias,\n handleSearchTrigger,\n handleBind,\n handleCloseSearch,\n };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
@@ -4,25 +4,26 @@ import {
4
4
  } from "./chunk-K77I4XGL.js";
5
5
  import {
6
6
  CategoryGrid
7
- } from "./chunk-PJUC2WCA.js";
7
+ } from "./chunk-JOTAIMTC.js";
8
8
  import {
9
9
  getDomainDisplayName,
10
10
  orderDomains
11
- } from "./chunk-LVNNP7T4.js";
11
+ } from "./chunk-U6A4YFOF.js";
12
12
  import {
13
13
  ViewTitle
14
- } from "./chunk-7M4INWUR.js";
14
+ } from "./chunk-JNQKCZA3.js";
15
15
  import {
16
16
  useWizardStore
17
- } from "./chunk-EWGFIBBU.js";
17
+ } from "./chunk-BVSWWBPE.js";
18
18
  import {
19
19
  getAvailableSkills,
20
+ getDependentSkills,
20
21
  resolveAlias
21
- } from "./chunk-6W4H2K3Z.js";
22
+ } from "./chunk-5BGBH3KD.js";
22
23
  import {
23
24
  getSkillById,
24
25
  matrix
25
- } from "./chunk-NG2GGK6P.js";
26
+ } from "./chunk-HKIQA4F6.js";
26
27
  import {
27
28
  CLI_COLORS
28
29
  } from "./chunk-EGMQ3SXN.js";
@@ -92,16 +93,21 @@ function buildCategoriesForDomain(domain, allSelections, selections, installedSk
92
93
  const filteredSkillOptions = useFrameworkFilter ? skillOptions.filter(
93
94
  (skill) => isCompatibleWithSelectedFrameworks(skill.id, selectedFrameworkIds)
94
95
  ) : skillOptions;
95
- const options = filteredSkillOptions.map((skill) => ({
96
- id: skill.id,
97
- state: skill.advisoryState,
98
- selected: skill.selected,
99
- local: getSkillById(skill.id).local,
100
- installed: installedSkillIds?.includes(skill.id) || false,
101
- scope: skillConfigs?.find((sc) => sc.id === skill.id)?.scope,
102
- hasUnmetRequirements: skill.hasUnmetRequirements,
103
- unmetRequirementsReason: skill.unmetRequirementsReason
104
- }));
96
+ const options = filteredSkillOptions.map((skill) => {
97
+ const dependents = skill.selected ? getDependentSkills(skill.id, allSelections) : [];
98
+ const firstDependent = dependents.length > 0 ? getSkillById(dependents[0]).displayName : void 0;
99
+ return {
100
+ id: skill.id,
101
+ state: skill.advisoryState,
102
+ selected: skill.selected,
103
+ local: getSkillById(skill.id).local,
104
+ installed: installedSkillIds?.includes(skill.id) || false,
105
+ scope: skillConfigs?.find((sc) => sc.id === skill.id)?.scope,
106
+ hasUnmetRequirements: skill.hasUnmetRequirements,
107
+ unmetRequirementsReason: skill.unmetRequirementsReason,
108
+ requiredBy: skill.selected ? firstDependent : void 0
109
+ };
110
+ });
105
111
  return {
106
112
  id: cat.id,
107
113
  displayName: cat.displayName,
@@ -203,4 +209,4 @@ export {
203
209
  validateBuildStep,
204
210
  StepBuild
205
211
  };
206
- //# sourceMappingURL=chunk-GJWHA6P4.js.map
212
+ //# sourceMappingURL=chunk-WXC2Y5TF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/step-build.tsx","../src/cli/components/hooks/use-framework-filtering.ts","../src/cli/lib/wizard/index.ts","../src/cli/lib/wizard/build-step-logic.ts"],"sourcesContent":["import { Box, Text, useInput } from \"ink\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport type { Domain, SkillId, Category, CategorySelections } from \"../../types/index.js\";\nimport { useFrameworkFiltering } from \"../hooks/use-framework-filtering.js\";\nimport { useMeasuredHeight } from \"../hooks/use-measured-height.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport { CategoryGrid } from \"./category-grid.js\";\nimport { getDomainDisplayName, orderDomains } from \"./utils.js\";\nimport { ViewTitle } from \"./view-title.js\";\n\nexport type StepBuildProps = {\n domain: Domain;\n selectedDomains: Domain[];\n selections: CategorySelections;\n allSelections: SkillId[];\n showLabels: boolean;\n /** Skill IDs already installed on disk, shown with a dimmed checkmark */\n installedSkillIds?: SkillId[];\n onToggle: (categoryId: Category, technologyId: SkillId) => void;\n onToggleLabels: () => void;\n onContinue: () => void;\n onBack: () => void;\n};\n\nexport const StepBuild: React.FC<StepBuildProps> = ({\n domain: activeDomain,\n selectedDomains,\n selections,\n allSelections,\n showLabels,\n installedSkillIds,\n onToggle,\n onToggleLabels,\n onContinue,\n onBack,\n}) => {\n const { ref: gridRef, measuredHeight: gridHeight } = useMeasuredHeight();\n const skillConfigs = useWizardStore((s) => s.skillConfigs);\n\n const handleFocusedSkillChange = useCallback(\n (id: SkillId | null) => useWizardStore.getState().setFocusedSkillId(id),\n [],\n );\n\n const orderedDomains = useMemo(() => orderDomains(selectedDomains), [selectedDomains]);\n\n const categories = useFrameworkFiltering({\n domain: activeDomain,\n allSelections,\n selections,\n installedSkillIds,\n skillConfigs,\n });\n\n useInput((_input, key) => {\n if (key.return) {\n onContinue();\n } else if (key.escape) {\n onBack();\n }\n });\n\n return (\n <Box flexDirection=\"column\" width=\"100%\" flexGrow={1} flexBasis={0}>\n <Box\n columnGap={2}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n marginBottom={1}\n paddingRight={1}\n marginTop={-1}\n borderTop={false}\n borderRight={false}\n borderLeft={false}\n borderColor={CLI_COLORS.NEUTRAL}\n borderStyle=\"single\"\n >\n <Box columnGap={2} flexDirection=\"row\">\n {orderedDomains.map((domain) => {\n const isActive = domain === activeDomain;\n return (\n <Text key={domain} color={isActive ? CLI_COLORS.WARNING : undefined} bold={isActive}>\n {getDomainDisplayName(domain)}\n </Text>\n );\n })}\n </Box>\n </Box>\n <ViewTitle>{`Customize your ${getDomainDisplayName(activeDomain)} stack`}</ViewTitle>\n\n <Box ref={gridRef} flexGrow={1} flexBasis={0}>\n <CategoryGrid\n key={activeDomain}\n categories={categories}\n availableHeight={gridHeight}\n showLabels={showLabels}\n onToggle={onToggle}\n onToggleLabels={onToggleLabels}\n onFocusedSkillChange={handleFocusedSkillChange}\n />\n </Box>\n </Box>\n );\n};\n","import { useMemo } from \"react\";\nimport type { Domain, SkillId, CategorySelections } from \"../../types/index.js\";\nimport type { SkillConfig } from \"../../types/config.js\";\nimport { buildCategoriesForDomain } from \"../../lib/wizard/index.js\";\nimport type { CategoryRow } from \"../wizard/category-grid.js\";\n\ntype UseFrameworkFilteringOptions = {\n domain: Domain;\n allSelections: SkillId[];\n selections: CategorySelections;\n installedSkillIds?: SkillId[];\n skillConfigs?: SkillConfig[];\n};\n\nexport function useFrameworkFiltering({\n domain,\n allSelections,\n selections,\n installedSkillIds,\n skillConfigs,\n}: UseFrameworkFilteringOptions): CategoryRow[] {\n return useMemo(\n () =>\n buildCategoriesForDomain(domain, allSelections, selections, installedSkillIds, skillConfigs),\n [domain, allSelections, selections, installedSkillIds, skillConfigs],\n );\n}\n","export {\n type BuildStepValidation,\n validateBuildStep,\n buildCategoriesForDomain,\n} from \"./build-step-logic\";\n","import { sortBy } from \"remeda\";\nimport type { CategoryDefinition, Domain, SkillId, CategorySelections } from \"../../types/index.js\";\nimport type { SkillConfig } from \"../../types/config.js\";\nimport { getAvailableSkills, resolveAlias, getDependentSkills } from \"../matrix/index.js\";\nimport { matrix, getSkillById } from \"../matrix/matrix-provider.js\";\nimport type { CategoryRow, CategoryOption } from \"../../components/wizard/category-grid.js\";\n\nconst FRAMEWORK_CATEGORY_ID = \"web-framework\";\nconst WEB_DOMAIN_ID = \"web\";\n\nexport type BuildStepValidation = {\n valid: boolean;\n message?: string;\n};\n\nexport function validateBuildStep(\n categories: CategoryRow[],\n selections: CategorySelections,\n): BuildStepValidation {\n for (const category of categories) {\n if (category.required) {\n const categorySelections = selections[category.id] || [];\n if (categorySelections.length === 0) {\n return {\n valid: true,\n message: `No skills selected in ${category.displayName} (required category)`,\n };\n }\n }\n }\n return { valid: true };\n}\n\nfunction isFrameworkSelected(selections: CategorySelections): boolean {\n const frameworkSelections = selections[FRAMEWORK_CATEGORY_ID] ?? [];\n return frameworkSelections.length > 0;\n}\n\nfunction getSelectedFrameworks(selections: CategorySelections): SkillId[] {\n const frameworkSelections = selections[FRAMEWORK_CATEGORY_ID] ?? [];\n return frameworkSelections.map((alias) => resolveAlias(alias));\n}\n\nfunction isCompatibleWithSelectedFrameworks(\n skillId: SkillId,\n selectedFrameworkIds: SkillId[],\n): boolean {\n const skill = getSkillById(skillId);\n\n // No compatibleWith = compatible with all (allows legacy skills to appear)\n if (skill.compatibleWith.length === 0) {\n return true;\n }\n\n return selectedFrameworkIds.some((frameworkId) => skill.compatibleWith.includes(frameworkId));\n}\n\n// Build CategoryRow[] from matrix for a domain, with framework-first filtering for web\nexport function buildCategoriesForDomain(\n domain: Domain,\n allSelections: SkillId[],\n selections: CategorySelections,\n installedSkillIds?: SkillId[],\n skillConfigs?: SkillConfig[],\n): CategoryRow[] {\n const frameworkSource = selections;\n const frameworkSelected = isFrameworkSelected(frameworkSource);\n const selectedFrameworkIds = frameworkSelected ? getSelectedFrameworks(frameworkSource) : [];\n\n // Object.values() on a Partial record only yields values that exist — all are CategoryDefinition\n const categories = sortBy(\n (Object.values(matrix.categories) as CategoryDefinition[]).filter(\n (cat) => cat.domain === domain,\n ),\n (cat) => cat.order ?? 0,\n );\n\n const categoryRows: CategoryRow[] = categories.map((cat) => {\n const skillOptions = getAvailableSkills(cat.id, allSelections);\n\n const useFrameworkFilter =\n domain === WEB_DOMAIN_ID && cat.id !== FRAMEWORK_CATEGORY_ID && frameworkSelected;\n const filteredSkillOptions = useFrameworkFilter\n ? skillOptions.filter((skill) =>\n isCompatibleWithSelectedFrameworks(skill.id, selectedFrameworkIds),\n )\n : skillOptions;\n\n const options: CategoryOption[] = filteredSkillOptions.map((skill) => {\n // Check if any currently selected skill depends on this one\n const dependents = skill.selected ? getDependentSkills(skill.id, allSelections) : [];\n const firstDependent =\n dependents.length > 0 ? getSkillById(dependents[0]).displayName : undefined;\n\n return {\n id: skill.id,\n state: skill.advisoryState,\n selected: skill.selected,\n local: getSkillById(skill.id).local,\n installed: installedSkillIds?.includes(skill.id) || false,\n scope: skillConfigs?.find((sc) => sc.id === skill.id)?.scope,\n hasUnmetRequirements: skill.hasUnmetRequirements,\n unmetRequirementsReason: skill.unmetRequirementsReason,\n requiredBy: skill.selected ? firstDependent : undefined,\n };\n });\n\n return {\n id: cat.id,\n displayName: cat.displayName,\n required: cat.required ?? false,\n exclusive: cat.exclusive ?? true,\n options,\n };\n });\n\n return categoryRows.filter((row) => row.options.length > 0);\n}\n"],"mappings":"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","names":["useMemo","useMemo"]}
@@ -9,7 +9,7 @@ import {
9
9
  skillFrontmatterLoaderSchema,
10
10
  verbose,
11
11
  warn
12
- } from "./chunk-4CRWKTNQ.js";
12
+ } from "./chunk-6C66NL4X.js";
13
13
  import {
14
14
  CLAUDE_SRC_DIR,
15
15
  DIRS,
@@ -198,4 +198,4 @@ export {
198
198
  loadSkillsByIds,
199
199
  loadPluginSkills
200
200
  };
201
- //# sourceMappingURL=chunk-RRBWNEG3.js.map
201
+ //# sourceMappingURL=chunk-XHTN56UT.js.map
@@ -7,10 +7,10 @@ import {
7
7
  loadProjectSourceConfig,
8
8
  resolveAgentsSource,
9
9
  resolveSource
10
- } from "./chunk-6W4H2K3Z.js";
10
+ } from "./chunk-5BGBH3KD.js";
11
11
  import {
12
12
  BaseCommand
13
- } from "./chunk-IJLAVOKZ.js";
13
+ } from "./chunk-KDYE3AGL.js";
14
14
  import {
15
15
  DEFAULT_BRANDING
16
16
  } from "./chunk-EGMQ3SXN.js";
@@ -90,4 +90,4 @@ ${DEFAULT_BRANDING.NAME} Configuration
90
90
  export {
91
91
  ConfigShow
92
92
  };
93
- //# sourceMappingURL=chunk-W6NWOYMS.js.map
93
+ //# sourceMappingURL=chunk-XZ57QYVI.js.map
@@ -5,19 +5,20 @@ import {
5
5
  } from "./chunk-SXGBPQY6.js";
6
6
  import {
7
7
  FEATURE_FLAGS
8
- } from "./chunk-HGTC76BX.js";
8
+ } from "./chunk-V36FRPAU.js";
9
9
  import {
10
10
  HelpModal
11
11
  } from "./chunk-2PZ7LBFT.js";
12
12
  import {
13
13
  useWizardStore
14
- } from "./chunk-EWGFIBBU.js";
14
+ } from "./chunk-BVSWWBPE.js";
15
15
  import {
16
16
  HOTKEY_HELP,
17
17
  HOTKEY_SCOPE,
18
18
  HOTKEY_SETTINGS,
19
+ HOTKEY_SET_ALL_LOCAL,
20
+ HOTKEY_SET_ALL_PLUGIN,
19
21
  HOTKEY_TOGGLE_LABELS,
20
- KEY_LABEL_ARROWS_VERT,
21
22
  KEY_LABEL_ENTER,
22
23
  KEY_LABEL_ESC,
23
24
  KEY_LABEL_SPACE
@@ -93,7 +94,6 @@ var DefinitionItem = ({
93
94
  ] });
94
95
  };
95
96
  var HOT_KEYS = [
96
- { label: "navigate", values: [KEY_LABEL_ARROWS_VERT] },
97
97
  { label: "select", values: [KEY_LABEL_SPACE] },
98
98
  { label: "continue", values: [KEY_LABEL_ENTER] },
99
99
  { label: "back", values: [KEY_LABEL_ESC] }
@@ -152,8 +152,7 @@ var WizardLayout = ({
152
152
  {
153
153
  label: "Labels",
154
154
  values: [HOTKEY_TOGGLE_LABELS.label],
155
- isVisible: store.step === "build",
156
- isActive: store.showLabels
155
+ isVisible: store.step === "build"
157
156
  }
158
157
  ),
159
158
  /* @__PURE__ */ jsx(
@@ -161,7 +160,23 @@ var WizardLayout = ({
161
160
  {
162
161
  label: "Scope",
163
162
  values: [HOTKEY_SCOPE.label],
164
- isVisible: store.step === "build"
163
+ isVisible: store.step === "build" || store.step === "agents"
164
+ }
165
+ ),
166
+ /* @__PURE__ */ jsx(
167
+ DefinitionItem,
168
+ {
169
+ label: "Set all local",
170
+ values: [HOTKEY_SET_ALL_LOCAL.label],
171
+ isVisible: store.step === "sources"
172
+ }
173
+ ),
174
+ /* @__PURE__ */ jsx(
175
+ DefinitionItem,
176
+ {
177
+ label: "Set all plugin",
178
+ values: [HOTKEY_SET_ALL_PLUGIN.label],
179
+ isVisible: store.step === "sources"
165
180
  }
166
181
  ),
167
182
  /* @__PURE__ */ jsx(
@@ -184,4 +199,4 @@ var WizardLayout = ({
184
199
  export {
185
200
  WizardLayout
186
201
  };
187
- //# sourceMappingURL=chunk-2DKJM7RO.js.map
202
+ //# sourceMappingURL=chunk-ZZJ6H6VB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/wizard-layout.tsx","../src/cli/components/hooks/use-terminal-dimensions.ts"],"sourcesContent":["import { Box, Static, Text } from \"ink\";\nimport React, { Fragment } from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport type { StartupMessage } from \"../../utils/logger.js\";\nimport { FEATURE_FLAGS } from \"../../lib/feature-flags.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport { useTerminalDimensions } from \"../hooks/use-terminal-dimensions.js\";\nimport { HelpModal } from \"./help-modal.js\";\nimport {\n HOTKEY_HELP,\n HOTKEY_SCOPE,\n HOTKEY_SET_ALL_LOCAL,\n HOTKEY_SET_ALL_PLUGIN,\n HOTKEY_SETTINGS,\n HOTKEY_TOGGLE_LABELS,\n KEY_LABEL_ENTER,\n KEY_LABEL_ESC,\n KEY_LABEL_SPACE,\n} from \"./hotkeys.js\";\nimport { WIZARD_STEPS, WizardTabs } from \"./wizard-tabs.js\";\n\ntype KeyHintProps = {\n isVisible?: boolean;\n isActive?: boolean;\n label: string;\n values: string[];\n};\n\nconst DefinitionItem: React.FC<KeyHintProps> = ({\n isVisible = true,\n isActive = false,\n label,\n values,\n}) => {\n if (!isVisible) {\n return null;\n }\n\n return (\n <Text>\n {values.map((value) => (\n <Fragment key={value}>\n <Text\n backgroundColor=\"black\"\n color={isActive ? CLI_COLORS.PRIMARY : CLI_COLORS.UNFOCUSED}\n >\n {\" \"}\n {value}{\" \"}\n </Text>{\" \"}\n </Fragment>\n ))}\n <Text color={isActive ? CLI_COLORS.PRIMARY : undefined}>{label}</Text>\n </Text>\n );\n};\n\nconst HOT_KEYS: { label: string; values: string[] }[] = [\n { label: \"select\", values: [KEY_LABEL_SPACE] },\n { label: \"continue\", values: [KEY_LABEL_ENTER] },\n { label: \"back\", values: [KEY_LABEL_ESC] },\n];\n\nconst WizardFooter = () => {\n return (\n <Box\n columnGap={2}\n borderTop\n borderRight={false}\n borderBottom\n borderLeft={false}\n borderColor=\"blackBright\"\n borderStyle=\"single\"\n paddingLeft={1}\n paddingRight={1}\n >\n {HOT_KEYS.map((hotkey) => (\n <DefinitionItem {...hotkey} key={hotkey.label} />\n ))}\n </Box>\n );\n};\n\ntype WizardLayoutProps = {\n version?: string;\n logo?: string;\n startupMessages?: StartupMessage[];\n children: React.ReactNode;\n};\n\nexport const WizardLayout: React.FC<WizardLayoutProps> = ({\n version,\n logo,\n startupMessages,\n children,\n}) => {\n const store = useWizardStore();\n const { completedSteps, skippedSteps } = store.getStepProgress();\n const { rows: terminalHeight } = useTerminalDimensions();\n\n return (\n <>\n {startupMessages && startupMessages.length > 0 && (\n <Static items={startupMessages}>\n {(msg, index) => (\n <Box key={index}>\n <Text\n color={msg.level === \"warn\" ? \"yellow\" : msg.level === \"error\" ? \"red\" : undefined}\n >\n {msg.level === \"warn\" ? ` Warning: ${msg.text}` : msg.text}\n </Text>\n </Box>\n )}\n </Static>\n )}\n <Box flexDirection=\"column\" paddingX={1} height={terminalHeight}>\n {logo && store.step === \"stack\" && (\n <Box flexDirection=\"row\" marginTop={1} columnGap={1}>\n <Text>{logo}</Text>\n </Box>\n )}\n <WizardTabs\n steps={WIZARD_STEPS}\n currentStep={store.step}\n completedSteps={completedSteps}\n skippedSteps={skippedSteps}\n version={version}\n />\n {store.showHelp ? (\n <HelpModal currentStep={store.step} />\n ) : (\n <>\n <Box flexDirection=\"column\" flexGrow={1} flexBasis={0} marginTop={1}>\n {children}\n </Box>\n <Box paddingX={1} columnGap={2} marginTop={2}>\n <DefinitionItem\n label=\"Labels\"\n values={[HOTKEY_TOGGLE_LABELS.label]}\n isVisible={store.step === \"build\"}\n />\n <DefinitionItem\n label=\"Scope\"\n values={[HOTKEY_SCOPE.label]}\n isVisible={store.step === \"build\" || store.step === \"agents\"}\n />\n <DefinitionItem\n label=\"Set all local\"\n values={[HOTKEY_SET_ALL_LOCAL.label]}\n isVisible={store.step === \"sources\"}\n />\n <DefinitionItem\n label=\"Set all plugin\"\n values={[HOTKEY_SET_ALL_PLUGIN.label]}\n isVisible={store.step === \"sources\"}\n />\n <DefinitionItem\n label=\"Settings\"\n values={[HOTKEY_SETTINGS.label]}\n isVisible={store.step === \"sources\" && FEATURE_FLAGS.SOURCE_SEARCH}\n isActive={store.showSettings}\n />\n <DefinitionItem label=\"Help\" values={[HOTKEY_HELP.label]} />\n </Box>\n <WizardFooter />\n </>\n )}\n </Box>\n </>\n );\n};\n","import { useState, useEffect } from \"react\";\nimport { useStdout } from \"ink\";\n\nconst DEFAULT_COLUMNS = 80;\nconst DEFAULT_ROWS = 24;\n\nexport type TerminalDimensions = {\n /** Terminal width in columns */\n columns: number;\n /** Terminal height in rows */\n rows: number;\n};\n\n/**\n * Tracks terminal dimensions reactively. Re-renders on resize.\n *\n * Falls back to DEFAULT_COLUMNS x DEFAULT_ROWS when stdout is not a TTY\n * (e.g., piped output, CI environments, tests).\n */\nexport function useTerminalDimensions(): TerminalDimensions {\n const { stdout } = useStdout();\n\n const [dimensions, setDimensions] = useState<TerminalDimensions>(() => ({\n columns: stdout.columns || DEFAULT_COLUMNS,\n rows: stdout.rows || DEFAULT_ROWS,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n setDimensions({\n columns: stdout.columns || DEFAULT_COLUMNS,\n rows: stdout.rows || DEFAULT_ROWS,\n });\n };\n\n stdout.on(\"resize\", handleResize);\n return () => {\n stdout.off(\"resize\", handleResize);\n };\n }, [stdout]);\n\n return dimensions;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAS,KAAK,QAAQ,YAAY;AAClC,SAAgB,gBAAgB;;;ACDhC;AAAA,SAAS,UAAU,iBAAiB;AACpC,SAAS,iBAAiB;AAE1B,IAAM,kBAAkB;AACxB,IAAM,eAAe;AAed,SAAS,wBAA4C;AAC1D,QAAM,EAAE,OAAO,IAAI,UAAU;AAE7B,QAAM,CAAC,YAAY,aAAa,IAAI,SAA6B,OAAO;AAAA,IACtE,SAAS,OAAO,WAAW;AAAA,IAC3B,MAAM,OAAO,QAAQ;AAAA,EACvB,EAAE;AAEF,YAAU,MAAM;AACd,UAAM,eAAe,MAAM;AACzB,oBAAc;AAAA,QACZ,SAAS,OAAO,WAAW;AAAA,QAC3B,MAAM,OAAO,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,WAAO,GAAG,UAAU,YAAY;AAChC,WAAO,MAAM;AACX,aAAO,IAAI,UAAU,YAAY;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT;;;ADAU,SAwFA,YAAAA,WA/EJ,KATI;AAkCF;AAhDR,IAAM,iBAAyC,CAAC;AAAA,EAC9C,YAAY;AAAA,EACZ,WAAW;AAAA,EACX;AAAA,EACA;AACF,MAAM;AACJ,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SACE,qBAAC,QACE;AAAA,WAAO,IAAI,CAAC,UACX,qBAAC,YACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,iBAAgB;AAAA,UAChB,OAAO,WAAW,WAAW,UAAU,WAAW;AAAA,UAEjD;AAAA;AAAA,YACA;AAAA,YAAO;AAAA;AAAA;AAAA,MACV;AAAA,MAAQ;AAAA,SAPK,KAQf,CACD;AAAA,IACD,oBAAC,QAAK,OAAO,WAAW,WAAW,UAAU,QAAY,iBAAM;AAAA,KACjE;AAEJ;AAEA,IAAM,WAAkD;AAAA,EACtD,EAAE,OAAO,UAAU,QAAQ,CAAC,eAAe,EAAE;AAAA,EAC7C,EAAE,OAAO,YAAY,QAAQ,CAAC,eAAe,EAAE;AAAA,EAC/C,EAAE,OAAO,QAAQ,QAAQ,CAAC,aAAa,EAAE;AAC3C;AAEA,IAAM,eAAe,MAAM;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,WAAS;AAAA,MACT,aAAa;AAAA,MACb,cAAY;AAAA,MACZ,YAAY;AAAA,MACZ,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,aAAa;AAAA,MACb,cAAc;AAAA,MAEb,mBAAS,IAAI,CAAC,WACb,8BAAC,kBAAgB,GAAG,QAAQ,KAAK,OAAO,OAAO,CAChD;AAAA;AAAA,EACH;AAEJ;AASO,IAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,eAAe;AAC7B,QAAM,EAAE,gBAAgB,aAAa,IAAI,MAAM,gBAAgB;AAC/D,QAAM,EAAE,MAAM,eAAe,IAAI,sBAAsB;AAEvD,SACE,qBAAAA,WAAA,EACG;AAAA,uBAAmB,gBAAgB,SAAS,KAC3C,oBAAC,UAAO,OAAO,iBACZ,WAAC,KAAK,UACL,oBAAC,OACC;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,IAAI,UAAU,SAAS,WAAW,IAAI,UAAU,UAAU,QAAQ;AAAA,QAExE,cAAI,UAAU,SAAS,cAAc,IAAI,IAAI,KAAK,IAAI;AAAA;AAAA,IACzD,KALQ,KAMV,GAEJ;AAAA,IAEF,qBAAC,OAAI,eAAc,UAAS,UAAU,GAAG,QAAQ,gBAC9C;AAAA,cAAQ,MAAM,SAAS,WACtB,oBAAC,OAAI,eAAc,OAAM,WAAW,GAAG,WAAW,GAChD,8BAAC,QAAM,gBAAK,GACd;AAAA,MAEF;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,aAAa,MAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,MACC,MAAM,WACL,oBAAC,aAAU,aAAa,MAAM,MAAM,IAEpC,qBAAAA,WAAA,EACE;AAAA,4BAAC,OAAI,eAAc,UAAS,UAAU,GAAG,WAAW,GAAG,WAAW,GAC/D,UACH;AAAA,QACA,qBAAC,OAAI,UAAU,GAAG,WAAW,GAAG,WAAW,GACzC;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,QAAQ,CAAC,qBAAqB,KAAK;AAAA,cACnC,WAAW,MAAM,SAAS;AAAA;AAAA,UAC5B;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,QAAQ,CAAC,aAAa,KAAK;AAAA,cAC3B,WAAW,MAAM,SAAS,WAAW,MAAM,SAAS;AAAA;AAAA,UACtD;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,QAAQ,CAAC,qBAAqB,KAAK;AAAA,cACnC,WAAW,MAAM,SAAS;AAAA;AAAA,UAC5B;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,QAAQ,CAAC,sBAAsB,KAAK;AAAA,cACpC,WAAW,MAAM,SAAS;AAAA;AAAA,UAC5B;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,QAAQ,CAAC,gBAAgB,KAAK;AAAA,cAC9B,WAAW,MAAM,SAAS,aAAa,cAAc;AAAA,cACrD,UAAU,MAAM;AAAA;AAAA,UAClB;AAAA,UACA,oBAAC,kBAAe,OAAM,QAAO,QAAQ,CAAC,YAAY,KAAK,GAAG;AAAA,WAC5D;AAAA,QACA,oBAAC,gBAAa;AAAA,SAChB;AAAA,OAEJ;AAAA,KACF;AAEJ;","names":["Fragment"]}
@@ -3,14 +3,14 @@ import {
3
3
  generateMarketplace,
4
4
  getMarketplaceStats,
5
5
  writeMarketplace
6
- } from "../../chunk-BM5Y6LIC.js";
6
+ } from "../../chunk-Q72ZBA4X.js";
7
7
  import {
8
8
  BaseCommand
9
- } from "../../chunk-IJLAVOKZ.js";
9
+ } from "../../chunk-KDYE3AGL.js";
10
10
  import {
11
11
  setVerbose
12
- } from "../../chunk-4CRWKTNQ.js";
13
- import "../../chunk-SRIH4U5Y.js";
12
+ } from "../../chunk-6C66NL4X.js";
13
+ import "../../chunk-SYGXJBG6.js";
14
14
  import {
15
15
  DEFAULT_BRANDING,
16
16
  DEFAULT_PLUGIN_NAME,
@@ -2,25 +2,25 @@
2
2
  import {
3
3
  compileAllAgentPlugins,
4
4
  printAgentCompilationSummary
5
- } from "../../chunk-NPMGVQM4.js";
5
+ } from "../../chunk-VU4ZCRZS.js";
6
6
  import {
7
7
  compileAllSkillPlugins,
8
8
  compileSkillPlugin,
9
9
  printCompilationSummary
10
- } from "../../chunk-6W4H2K3Z.js";
11
- import "../../chunk-RRBWNEG3.js";
12
- import "../../chunk-NG2GGK6P.js";
10
+ } from "../../chunk-5BGBH3KD.js";
11
+ import "../../chunk-XHTN56UT.js";
12
+ import "../../chunk-HKIQA4F6.js";
13
13
  import {
14
14
  BaseCommand
15
- } from "../../chunk-IJLAVOKZ.js";
15
+ } from "../../chunk-KDYE3AGL.js";
16
16
  import {
17
17
  setVerbose
18
- } from "../../chunk-4CRWKTNQ.js";
19
- import "../../chunk-SRIH4U5Y.js";
18
+ } from "../../chunk-6C66NL4X.js";
19
+ import "../../chunk-SYGXJBG6.js";
20
20
  import {
21
21
  DIRS
22
22
  } from "../../chunk-EGMQ3SXN.js";
23
- import "../../chunk-NKKYTCBH.js";
23
+ import "../../chunk-PSU42CXK.js";
24
24
  import {
25
25
  init_esm_shims
26
26
  } from "../../chunk-DHET7RCE.js";
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAgentDefinitions
4
- } from "../../chunk-NPMGVQM4.js";
4
+ } from "../../chunk-VU4ZCRZS.js";
5
5
  import {
6
6
  compileStackPlugin,
7
7
  loadStacks,
8
8
  printStackCompilationSummary
9
- } from "../../chunk-6W4H2K3Z.js";
10
- import "../../chunk-RRBWNEG3.js";
11
- import "../../chunk-NG2GGK6P.js";
9
+ } from "../../chunk-5BGBH3KD.js";
10
+ import "../../chunk-XHTN56UT.js";
11
+ import "../../chunk-HKIQA4F6.js";
12
12
  import {
13
13
  BaseCommand,
14
14
  EXIT_CODES
15
- } from "../../chunk-IJLAVOKZ.js";
15
+ } from "../../chunk-KDYE3AGL.js";
16
16
  import {
17
17
  setVerbose
18
- } from "../../chunk-4CRWKTNQ.js";
19
- import "../../chunk-SRIH4U5Y.js";
18
+ } from "../../chunk-6C66NL4X.js";
19
+ import "../../chunk-SYGXJBG6.js";
20
20
  import {
21
21
  PROJECT_ROOT,
22
22
  STACKS_FILE_PATH
23
23
  } from "../../chunk-EGMQ3SXN.js";
24
- import "../../chunk-NKKYTCBH.js";
24
+ import "../../chunk-PSU42CXK.js";
25
25
  import {
26
26
  init_esm_shims
27
27
  } from "../../chunk-DHET7RCE.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getAgentDefinitions,
4
4
  recompileAgents
5
- } from "../chunk-NPMGVQM4.js";
5
+ } from "../chunk-VU4ZCRZS.js";
6
6
  import {
7
7
  ERROR_MESSAGES,
8
8
  INFO_MESSAGES,
@@ -13,18 +13,18 @@ import {
13
13
  detectProjectInstallation,
14
14
  discoverAllPluginSkills,
15
15
  resolveSource
16
- } from "../chunk-6W4H2K3Z.js";
16
+ } from "../chunk-5BGBH3KD.js";
17
17
  import {
18
18
  parseFrontmatter
19
- } from "../chunk-RRBWNEG3.js";
19
+ } from "../chunk-XHTN56UT.js";
20
20
  import {
21
21
  typedEntries,
22
22
  typedKeys
23
- } from "../chunk-NG2GGK6P.js";
23
+ } from "../chunk-HKIQA4F6.js";
24
24
  import {
25
25
  BaseCommand,
26
26
  EXIT_CODES
27
- } from "../chunk-IJLAVOKZ.js";
27
+ } from "../chunk-KDYE3AGL.js";
28
28
  import {
29
29
  directoryExists,
30
30
  fileExists,
@@ -33,15 +33,15 @@ import {
33
33
  setVerbose,
34
34
  verbose,
35
35
  warn
36
- } from "../chunk-4CRWKTNQ.js";
37
- import "../chunk-SRIH4U5Y.js";
36
+ } from "../chunk-6C66NL4X.js";
37
+ import "../chunk-SYGXJBG6.js";
38
38
  import {
39
39
  CLI_BIN_NAME,
40
40
  GLOBAL_INSTALL_ROOT,
41
41
  LOCAL_SKILLS_PATH,
42
42
  STANDARD_FILES
43
43
  } from "../chunk-EGMQ3SXN.js";
44
- import "../chunk-NKKYTCBH.js";
44
+ import "../chunk-PSU42CXK.js";
45
45
  import {
46
46
  init_esm_shims
47
47
  } from "../chunk-DHET7RCE.js";
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigShow
4
- } from "../../chunk-W6NWOYMS.js";
5
- import "../../chunk-6W4H2K3Z.js";
6
- import "../../chunk-RRBWNEG3.js";
7
- import "../../chunk-NG2GGK6P.js";
8
- import "../../chunk-IJLAVOKZ.js";
9
- import "../../chunk-4CRWKTNQ.js";
10
- import "../../chunk-SRIH4U5Y.js";
4
+ } from "../../chunk-XZ57QYVI.js";
5
+ import "../../chunk-5BGBH3KD.js";
6
+ import "../../chunk-XHTN56UT.js";
7
+ import "../../chunk-HKIQA4F6.js";
8
+ import "../../chunk-KDYE3AGL.js";
9
+ import "../../chunk-6C66NL4X.js";
10
+ import "../../chunk-SYGXJBG6.js";
11
11
  import "../../chunk-EGMQ3SXN.js";
12
- import "../../chunk-NKKYTCBH.js";
12
+ import "../../chunk-PSU42CXK.js";
13
13
  import {
14
14
  init_esm_shims
15
15
  } from "../../chunk-DHET7RCE.js";
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getProjectConfigPath
4
- } from "../../chunk-6W4H2K3Z.js";
5
- import "../../chunk-RRBWNEG3.js";
6
- import "../../chunk-NG2GGK6P.js";
4
+ } from "../../chunk-5BGBH3KD.js";
5
+ import "../../chunk-XHTN56UT.js";
6
+ import "../../chunk-HKIQA4F6.js";
7
7
  import {
8
8
  BaseCommand
9
- } from "../../chunk-IJLAVOKZ.js";
10
- import "../../chunk-4CRWKTNQ.js";
11
- import "../../chunk-SRIH4U5Y.js";
9
+ } from "../../chunk-KDYE3AGL.js";
10
+ import "../../chunk-6C66NL4X.js";
11
+ import "../../chunk-SYGXJBG6.js";
12
12
  import "../../chunk-EGMQ3SXN.js";
13
- import "../../chunk-NKKYTCBH.js";
13
+ import "../../chunk-PSU42CXK.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "../../chunk-DHET7RCE.js";
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigShow
4
- } from "../../chunk-W6NWOYMS.js";
5
- import "../../chunk-6W4H2K3Z.js";
6
- import "../../chunk-RRBWNEG3.js";
7
- import "../../chunk-NG2GGK6P.js";
8
- import "../../chunk-IJLAVOKZ.js";
9
- import "../../chunk-4CRWKTNQ.js";
10
- import "../../chunk-SRIH4U5Y.js";
4
+ } from "../../chunk-XZ57QYVI.js";
5
+ import "../../chunk-5BGBH3KD.js";
6
+ import "../../chunk-XHTN56UT.js";
7
+ import "../../chunk-HKIQA4F6.js";
8
+ import "../../chunk-KDYE3AGL.js";
9
+ import "../../chunk-6C66NL4X.js";
10
+ import "../../chunk-SYGXJBG6.js";
11
11
  import "../../chunk-EGMQ3SXN.js";
12
- import "../../chunk-NKKYTCBH.js";
12
+ import "../../chunk-PSU42CXK.js";
13
13
  import "../../chunk-DHET7RCE.js";
14
14
  export {
15
15
  ConfigShow as default
@@ -2,26 +2,26 @@
2
2
  import {
3
3
  loadSkillsMatrixFromSource,
4
4
  readForkedFromMetadata
5
- } from "../chunk-6W4H2K3Z.js";
6
- import "../chunk-RRBWNEG3.js";
7
- import "../chunk-NG2GGK6P.js";
5
+ } from "../chunk-5BGBH3KD.js";
6
+ import "../chunk-XHTN56UT.js";
7
+ import "../chunk-HKIQA4F6.js";
8
8
  import {
9
9
  BaseCommand,
10
10
  EXIT_CODES
11
- } from "../chunk-IJLAVOKZ.js";
11
+ } from "../chunk-KDYE3AGL.js";
12
12
  import {
13
13
  fileExists,
14
14
  getErrorMessage,
15
15
  listDirectories,
16
16
  readFile
17
- } from "../chunk-4CRWKTNQ.js";
18
- import "../chunk-SRIH4U5Y.js";
17
+ } from "../chunk-6C66NL4X.js";
18
+ import "../chunk-SYGXJBG6.js";
19
19
  import {
20
20
  CLI_BIN_NAME,
21
21
  LOCAL_SKILLS_PATH,
22
22
  STANDARD_FILES
23
23
  } from "../chunk-EGMQ3SXN.js";
24
- import "../chunk-NKKYTCBH.js";
24
+ import "../chunk-PSU42CXK.js";
25
25
  import {
26
26
  init_esm_shims
27
27
  } from "../chunk-DHET7RCE.js";
@@ -5,23 +5,23 @@ import {
5
5
  loadProjectConfig,
6
6
  loadSkillsMatrixFromSource,
7
7
  validateProjectConfig
8
- } from "../chunk-6W4H2K3Z.js";
9
- import "../chunk-RRBWNEG3.js";
8
+ } from "../chunk-5BGBH3KD.js";
9
+ import "../chunk-XHTN56UT.js";
10
10
  import {
11
11
  matrix
12
- } from "../chunk-NG2GGK6P.js";
12
+ } from "../chunk-HKIQA4F6.js";
13
13
  import {
14
14
  BaseCommand,
15
15
  EXIT_CODES
16
- } from "../chunk-IJLAVOKZ.js";
16
+ } from "../chunk-KDYE3AGL.js";
17
17
  import {
18
18
  directoryExists,
19
19
  fileExists,
20
20
  getErrorMessage,
21
21
  glob,
22
22
  setVerbose
23
- } from "../chunk-4CRWKTNQ.js";
24
- import "../chunk-SRIH4U5Y.js";
23
+ } from "../chunk-6C66NL4X.js";
24
+ import "../chunk-SYGXJBG6.js";
25
25
  import {
26
26
  CLAUDE_DIR,
27
27
  CLAUDE_SRC_DIR,
@@ -29,7 +29,7 @@ import {
29
29
  DEFAULT_BRANDING,
30
30
  STANDARD_FILES
31
31
  } from "../chunk-EGMQ3SXN.js";
32
- import "../chunk-NKKYTCBH.js";
32
+ import "../chunk-PSU42CXK.js";
33
33
  import {
34
34
  init_esm_shims
35
35
  } from "../chunk-DHET7RCE.js";