@agents-inc/cli 0.65.0 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -0
- package/dist/chunk-2MHSOPIU.js +84 -0
- package/dist/chunk-2MHSOPIU.js.map +1 -0
- package/dist/{chunk-BGPGQF35.js → chunk-2VT2DMD7.js} +6 -6
- package/dist/{chunk-FGLUQSVU.js → chunk-6BXKF5GP.js} +2 -2
- package/dist/{chunk-KFDTVSIC.js → chunk-6YMW4HMX.js} +2 -2
- package/dist/{chunk-6DEK3TDF.js → chunk-AX6MMYAZ.js} +4 -4
- package/dist/{chunk-53URJ5XK.js → chunk-CADG5WWP.js} +32 -30
- package/dist/chunk-CADG5WWP.js.map +1 -0
- package/dist/chunk-DA3WIZ4C.js +253 -0
- package/dist/chunk-DA3WIZ4C.js.map +1 -0
- package/dist/chunk-DHBRWGRZ.js +58 -0
- package/dist/chunk-DHBRWGRZ.js.map +1 -0
- package/dist/{chunk-EE5EPS32.js → chunk-FCF4WQEI.js} +2 -2
- package/dist/{chunk-J4POGAJF.js → chunk-HWVRHPXR.js} +2 -2
- package/dist/{chunk-N4D43IOO.js → chunk-J2D6OBIX.js} +26 -2
- package/dist/chunk-J2D6OBIX.js.map +1 -0
- package/dist/{chunk-O2HK3NTG.js → chunk-KANNRFY7.js} +2 -2
- package/dist/{chunk-YEGPTBX5.js → chunk-KSAGOKWT.js} +3 -3
- package/dist/{chunk-EC3UJRKZ.js → chunk-KWB3B2HS.js} +92 -163
- package/dist/chunk-KWB3B2HS.js.map +1 -0
- package/dist/{chunk-7DI3HGKL.js → chunk-KYULKBFC.js} +2 -2
- package/dist/chunk-KYULKBFC.js.map +1 -0
- package/dist/{chunk-F3REOP7N.js → chunk-L6MTIQ2U.js} +2 -2
- package/dist/{chunk-4C7CSZC5.js → chunk-QOJAZI72.js} +3 -3
- package/dist/{chunk-LMZXL5RQ.js → chunk-R3AR4VLZ.js} +11 -11
- package/dist/chunk-R3AR4VLZ.js.map +1 -0
- package/dist/{chunk-OORWBS6F.js → chunk-UDAHHJIM.js} +16 -10
- package/dist/chunk-UDAHHJIM.js.map +1 -0
- package/dist/{chunk-ZFY5EMDV.js → chunk-UQM5YPPJ.js} +4 -4
- package/dist/{chunk-WSMQ5GAP.js → chunk-V5L532ZH.js} +6 -6
- package/dist/{chunk-4KVBH2X4.js → chunk-VUUGWE6G.js} +3 -3
- package/dist/chunk-WF5PMBIR.js +54 -0
- package/dist/chunk-WF5PMBIR.js.map +1 -0
- package/dist/{chunk-R46CB36B.js → chunk-X4RIMJNY.js} +4 -4
- package/dist/{chunk-RG3KDXMR.js → chunk-XB3TYSPL.js} +3 -3
- package/dist/{chunk-EZ35IPXZ.js → chunk-XMZNHLV3.js} +2 -2
- package/dist/{chunk-3YNT3NX3.js → chunk-XYRVAEI6.js} +76 -113
- package/dist/chunk-XYRVAEI6.js.map +1 -0
- package/dist/commands/build/marketplace.js +3 -3
- package/dist/commands/build/plugins.js +6 -6
- package/dist/commands/build/stack.js +6 -6
- package/dist/commands/compile.js +6 -6
- package/dist/commands/config/index.js +6 -6
- package/dist/commands/config/path.js +5 -5
- package/dist/commands/config/show.js +6 -6
- package/dist/commands/diff.js +5 -5
- package/dist/commands/doctor.js +5 -5
- package/dist/commands/edit.js +45 -24
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +5 -5
- package/dist/commands/import/skill.js +5 -5
- package/dist/commands/info.js +5 -5
- package/dist/commands/init.js +22 -21
- package/dist/commands/list.js +5 -5
- package/dist/commands/new/agent.js +6 -6
- package/dist/commands/new/marketplace.js +7 -7
- package/dist/commands/new/skill.js +6 -6
- package/dist/commands/outdated.js +5 -5
- package/dist/commands/search.js +5 -5
- package/dist/commands/uninstall.js +5 -5
- package/dist/commands/update.js +6 -6
- package/dist/commands/validate.js +5 -5
- package/dist/components/common/select-list.js +11 -0
- package/dist/components/wizard/category-grid.test.js +6 -6
- package/dist/components/wizard/domain-selection.js +6 -6
- package/dist/components/wizard/help-modal.js +1 -1
- package/dist/components/wizard/search-modal.js +2 -1
- package/dist/components/wizard/search-modal.test.js +3 -2
- package/dist/components/wizard/search-modal.test.js.map +1 -1
- package/dist/components/wizard/source-grid.js +3 -2
- package/dist/components/wizard/source-grid.test.js +14 -10
- package/dist/components/wizard/source-grid.test.js.map +1 -1
- package/dist/components/wizard/stack-selection.js +6 -6
- package/dist/components/wizard/step-agents.js +6 -6
- package/dist/components/wizard/step-agents.test.js +10 -9
- package/dist/components/wizard/step-agents.test.js.map +1 -1
- package/dist/components/wizard/step-build.js +7 -7
- package/dist/components/wizard/step-build.test.js +17 -52
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.test.js +6 -6
- package/dist/components/wizard/step-settings.js +5 -5
- package/dist/components/wizard/step-settings.test.js +8 -8
- package/dist/components/wizard/step-sources.js +10 -9
- package/dist/components/wizard/step-sources.test.js +15 -13
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +9 -9
- package/dist/components/wizard/step-stack.test.js +10 -10
- package/dist/components/wizard/wizard-layout.js +7 -7
- package/dist/components/wizard/wizard.js +20 -19
- package/dist/config-exports.js +1 -1
- package/dist/hooks/init.js +22 -21
- package/dist/hooks/init.js.map +1 -1
- package/dist/{loader-4YOZCFIP.js → loader-CMSC3RAO.js} +3 -3
- package/dist/{source-loader-O5RMYUBW.js → source-loader-3MZ2MBOF.js} +5 -5
- package/dist/{source-manager-NKLL6HCL.js → source-manager-NEH6QXE5.js} +5 -5
- package/dist/source-manager-NEH6QXE5.js.map +1 -0
- package/dist/stores/matrix-store.test.js +17 -13
- package/dist/stores/matrix-store.test.js.map +1 -1
- package/dist/stores/wizard-store.js +5 -5
- package/dist/stores/wizard-store.test.js +31 -106
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/src/schemas/metadata.schema.json +1 -1
- package/dist/chunk-3YNT3NX3.js.map +0 -1
- package/dist/chunk-53URJ5XK.js.map +0 -1
- package/dist/chunk-6IK2TCK7.js +0 -97
- package/dist/chunk-6IK2TCK7.js.map +0 -1
- package/dist/chunk-7DI3HGKL.js.map +0 -1
- package/dist/chunk-EC3UJRKZ.js.map +0 -1
- package/dist/chunk-LMZXL5RQ.js.map +0 -1
- package/dist/chunk-N4D43IOO.js.map +0 -1
- package/dist/chunk-OORWBS6F.js.map +0 -1
- /package/dist/{chunk-BGPGQF35.js.map → chunk-2VT2DMD7.js.map} +0 -0
- /package/dist/{chunk-FGLUQSVU.js.map → chunk-6BXKF5GP.js.map} +0 -0
- /package/dist/{chunk-KFDTVSIC.js.map → chunk-6YMW4HMX.js.map} +0 -0
- /package/dist/{chunk-6DEK3TDF.js.map → chunk-AX6MMYAZ.js.map} +0 -0
- /package/dist/{chunk-EE5EPS32.js.map → chunk-FCF4WQEI.js.map} +0 -0
- /package/dist/{chunk-J4POGAJF.js.map → chunk-HWVRHPXR.js.map} +0 -0
- /package/dist/{chunk-O2HK3NTG.js.map → chunk-KANNRFY7.js.map} +0 -0
- /package/dist/{chunk-YEGPTBX5.js.map → chunk-KSAGOKWT.js.map} +0 -0
- /package/dist/{chunk-F3REOP7N.js.map → chunk-L6MTIQ2U.js.map} +0 -0
- /package/dist/{chunk-4C7CSZC5.js.map → chunk-QOJAZI72.js.map} +0 -0
- /package/dist/{chunk-ZFY5EMDV.js.map → chunk-UQM5YPPJ.js.map} +0 -0
- /package/dist/{chunk-WSMQ5GAP.js.map → chunk-V5L532ZH.js.map} +0 -0
- /package/dist/{chunk-4KVBH2X4.js.map → chunk-VUUGWE6G.js.map} +0 -0
- /package/dist/{chunk-R46CB36B.js.map → chunk-X4RIMJNY.js.map} +0 -0
- /package/dist/{chunk-RG3KDXMR.js.map → chunk-XB3TYSPL.js.map} +0 -0
- /package/dist/{chunk-EZ35IPXZ.js.map → chunk-XMZNHLV3.js.map} +0 -0
- /package/dist/{loader-4YOZCFIP.js.map → components/common/select-list.js.map} +0 -0
- /package/dist/{source-loader-O5RMYUBW.js.map → loader-CMSC3RAO.js.map} +0 -0
- /package/dist/{source-manager-NKLL6HCL.js.map → source-loader-3MZ2MBOF.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,76 @@ Each release has detailed notes in its own file under [`changelogs/`](./changelo
|
|
|
7
7
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
8
8
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
9
|
|
|
10
|
+
## [0.71.0] - 2026-03-11
|
|
11
|
+
|
|
12
|
+
**Reusable SelectList component, Dashboard and GlobalConfigPrompt UX overhaul**
|
|
13
|
+
|
|
14
|
+
- New `SelectList<T>` component for vertical single-select lists
|
|
15
|
+
- Dashboard simplified to vertical menu (no stats display)
|
|
16
|
+
- Screen clears between successive Ink renders
|
|
17
|
+
|
|
18
|
+
See [changelogs/0.71.0.md](./changelogs/0.71.0.md) for full details.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## [0.70.0] - 2026-03-11
|
|
23
|
+
|
|
24
|
+
**Centralize remaining test data (R-09b)**
|
|
25
|
+
|
|
26
|
+
- Pre-built matrix constants and config factories replace inline test data construction
|
|
27
|
+
- CLAUDE.md conventions updated for new test data patterns
|
|
28
|
+
|
|
29
|
+
See [changelogs/0.70.0.md](./changelogs/0.70.0.md) for full details.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## [0.69.0] - 2026-03-11
|
|
34
|
+
|
|
35
|
+
**loadStackById default stacks fallback (R-01)**
|
|
36
|
+
|
|
37
|
+
- `loadStackById` now checks built-in default stacks internally
|
|
38
|
+
- R-07 codegen plan for source-derived type unions
|
|
39
|
+
|
|
40
|
+
See [changelogs/0.69.0.md](./changelogs/0.69.0.md) for full details.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## [0.68.0] - 2026-03-11
|
|
45
|
+
|
|
46
|
+
**Per-agent scope in edit mode (D-74)**
|
|
47
|
+
|
|
48
|
+
- Edit command detects and displays agent scope changes (project/global)
|
|
49
|
+
- Agent scope configs restored when entering edit mode
|
|
50
|
+
- Help modal shows `S` key for agent scope toggle
|
|
51
|
+
|
|
52
|
+
See [changelogs/0.68.0.md](./changelogs/0.68.0.md) for full details.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## [0.67.0] - 2026-03-11
|
|
57
|
+
|
|
58
|
+
**Split init-wizard E2E tests for parallel execution (D-73)**
|
|
59
|
+
|
|
60
|
+
- Monolithic `init-wizard.e2e.test.ts` (55 tests) split into 7 independent files
|
|
61
|
+
- ~3.8x speedup from parallel execution (~3.5min → ~55s)
|
|
62
|
+
- TODO tracker cleanup: 8 tasks marked complete
|
|
63
|
+
|
|
64
|
+
See [changelogs/0.67.0.md](./changelogs/0.67.0.md) for full details.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## [0.66.0] - 2026-03-11
|
|
69
|
+
|
|
70
|
+
**Slug-based relationship rules (R-04 Phase 2)**
|
|
71
|
+
|
|
72
|
+
- All relationship rule types now reference skills by slug (`"react"`) instead of canonical ID (`"web-framework-react"`)
|
|
73
|
+
- `slug` field now required in metadata.schema.json (Step 7 finalized)
|
|
74
|
+
- 9 new E2E tests for slug-based relationship validation
|
|
75
|
+
|
|
76
|
+
See [changelogs/0.66.0.md](./changelogs/0.66.0.md) for full details.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
10
80
|
## [0.65.0] - 2026-03-11
|
|
11
81
|
|
|
12
82
|
**Narrowed config types, edit command refactor, test consolidation (R-09)**
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SelectList
|
|
4
|
+
} from "./chunk-WF5PMBIR.js";
|
|
5
|
+
import {
|
|
6
|
+
KEY_LABEL_ARROWS_VERT,
|
|
7
|
+
KEY_LABEL_ENTER,
|
|
8
|
+
KEY_LABEL_ESC
|
|
9
|
+
} from "./chunk-6VIOO74O.js";
|
|
10
|
+
import {
|
|
11
|
+
CLI_COLORS
|
|
12
|
+
} from "./chunk-EGMQ3SXN.js";
|
|
13
|
+
import {
|
|
14
|
+
init_esm_shims
|
|
15
|
+
} from "./chunk-DHET7RCE.js";
|
|
16
|
+
|
|
17
|
+
// src/cli/components/wizard/search-modal.tsx
|
|
18
|
+
init_esm_shims();
|
|
19
|
+
import { Box, Text } from "ink";
|
|
20
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
+
function candidateToItem(candidate) {
|
|
22
|
+
return {
|
|
23
|
+
label: `${candidate.sourceName}/${candidate.id}`,
|
|
24
|
+
value: candidate
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
var SearchModal = ({
|
|
28
|
+
results,
|
|
29
|
+
alias,
|
|
30
|
+
onBind,
|
|
31
|
+
onClose,
|
|
32
|
+
active
|
|
33
|
+
}) => {
|
|
34
|
+
const items = results.map(candidateToItem);
|
|
35
|
+
return /* @__PURE__ */ jsxs(
|
|
36
|
+
Box,
|
|
37
|
+
{
|
|
38
|
+
flexDirection: "column",
|
|
39
|
+
borderStyle: "single",
|
|
40
|
+
borderColor: CLI_COLORS.NEUTRAL,
|
|
41
|
+
paddingX: 1,
|
|
42
|
+
paddingY: 0,
|
|
43
|
+
marginTop: 1,
|
|
44
|
+
children: [
|
|
45
|
+
/* @__PURE__ */ jsxs(Text, { bold: true, children: [
|
|
46
|
+
'Search results for "',
|
|
47
|
+
alias,
|
|
48
|
+
'"'
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
51
|
+
results.length === 0 ? /* @__PURE__ */ jsx(Text, { dimColor: true, children: "No results found" }) : /* @__PURE__ */ jsx(
|
|
52
|
+
SelectList,
|
|
53
|
+
{
|
|
54
|
+
items,
|
|
55
|
+
onSelect: onBind,
|
|
56
|
+
onCancel: onClose,
|
|
57
|
+
active,
|
|
58
|
+
renderItem: (item, isFocused) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
59
|
+
/* @__PURE__ */ jsx(Text, { bold: isFocused, color: isFocused ? CLI_COLORS.PRIMARY : void 0, children: item.label }),
|
|
60
|
+
item.value.description && /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
61
|
+
" ",
|
|
62
|
+
item.value.description
|
|
63
|
+
] })
|
|
64
|
+
] })
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
68
|
+
/* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
69
|
+
KEY_LABEL_ARROWS_VERT,
|
|
70
|
+
" navigate ",
|
|
71
|
+
KEY_LABEL_ENTER,
|
|
72
|
+
" bind ",
|
|
73
|
+
KEY_LABEL_ESC,
|
|
74
|
+
" close"
|
|
75
|
+
] })
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export {
|
|
82
|
+
SearchModal
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=chunk-2MHSOPIU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/search-modal.tsx"],"sourcesContent":["import React from \"react\";\nimport { Box, Text } from \"ink\";\nimport type { BoundSkillCandidate } from \"../../types/index.js\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { SelectList, type SelectListItem } from \"../common/select-list.js\";\nimport { KEY_LABEL_ARROWS_VERT, KEY_LABEL_ENTER, KEY_LABEL_ESC } from \"./hotkeys.js\";\n\nexport type SearchModalProps = {\n results: BoundSkillCandidate[];\n alias: string;\n onBind: (candidate: BoundSkillCandidate) => void;\n onClose: () => void;\n active?: boolean;\n};\n\nfunction candidateToItem(candidate: BoundSkillCandidate): SelectListItem<BoundSkillCandidate> {\n return {\n label: `${candidate.sourceName}/${candidate.id}`,\n value: candidate,\n };\n}\n\nexport const SearchModal: React.FC<SearchModalProps> = ({\n results,\n alias,\n onBind,\n onClose,\n active,\n}) => {\n const items = results.map(candidateToItem);\n\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"single\"\n borderColor={CLI_COLORS.NEUTRAL}\n paddingX={1}\n paddingY={0}\n marginTop={1}\n >\n <Text bold>Search results for "{alias}"</Text>\n <Text> </Text>\n\n {results.length === 0 ? (\n <Text dimColor>No results found</Text>\n ) : (\n <SelectList\n items={items}\n onSelect={onBind}\n onCancel={onClose}\n active={active}\n renderItem={(item, isFocused) => (\n <>\n <Text bold={isFocused} color={isFocused ? CLI_COLORS.PRIMARY : undefined}>\n {item.label}\n </Text>\n {item.value.description && (\n <Text dimColor>\n {\" \"}\n {item.value.description}\n </Text>\n )}\n </>\n )}\n />\n )}\n\n <Text> </Text>\n <Text dimColor>\n {KEY_LABEL_ARROWS_VERT} navigate {KEY_LABEL_ENTER} bind {KEY_LABEL_ESC} close\n </Text>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA,SAAS,KAAK,YAAY;AAuCpB,SAYM,UAXN,KADA;AAzBN,SAAS,gBAAgB,WAAqE;AAC5F,SAAO;AAAA,IACL,OAAO,GAAG,UAAU,UAAU,IAAI,UAAU,EAAE;AAAA,IAC9C,OAAO;AAAA,EACT;AACF;AAEO,IAAM,cAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,QAAQ,IAAI,eAAe;AAEzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAa,WAAW;AAAA,MACxB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MAEX;AAAA,6BAAC,QAAK,MAAI,MAAC;AAAA;AAAA,UAA0B;AAAA,UAAM;AAAA,WAAM;AAAA,QACjD,oBAAC,QAAK,eAAC;AAAA,QAEN,QAAQ,WAAW,IAClB,oBAAC,QAAK,UAAQ,MAAC,8BAAgB,IAE/B;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV,UAAU;AAAA,YACV;AAAA,YACA,YAAY,CAAC,MAAM,cACjB,iCACE;AAAA,kCAAC,QAAK,MAAM,WAAW,OAAO,YAAY,WAAW,UAAU,QAC5D,eAAK,OACR;AAAA,cACC,KAAK,MAAM,eACV,qBAAC,QAAK,UAAQ,MACX;AAAA;AAAA,gBACA,KAAK,MAAM;AAAA,iBACd;AAAA,eAEJ;AAAA;AAAA,QAEJ;AAAA,QAGF,oBAAC,QAAK,eAAC;AAAA,QACP,qBAAC,QAAK,UAAQ,MACX;AAAA;AAAA,UAAsB;AAAA,UAAW;AAAA,UAAgB;AAAA,UAAO;AAAA,UAAc;AAAA,WACzE;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
import {
|
|
3
3
|
useMeasuredHeight
|
|
4
4
|
} from "./chunk-K77I4XGL.js";
|
|
5
|
-
import {
|
|
6
|
-
CategoryGrid
|
|
7
|
-
} from "./chunk-CKPJTMNC.js";
|
|
8
5
|
import {
|
|
9
6
|
getDomainDisplayName,
|
|
10
7
|
orderDomains
|
|
11
8
|
} from "./chunk-ZYUASJUN.js";
|
|
9
|
+
import {
|
|
10
|
+
CategoryGrid
|
|
11
|
+
} from "./chunk-CKPJTMNC.js";
|
|
12
12
|
import {
|
|
13
13
|
ViewTitle
|
|
14
14
|
} from "./chunk-AQYAVLZK.js";
|
|
15
15
|
import {
|
|
16
16
|
useWizardStore
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-QOJAZI72.js";
|
|
18
18
|
import {
|
|
19
19
|
KEY_LABEL_ENTER,
|
|
20
20
|
KEY_LABEL_ESC
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
getAvailableSkills,
|
|
24
24
|
resolveAlias
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-CADG5WWP.js";
|
|
26
26
|
import {
|
|
27
27
|
findSkill,
|
|
28
28
|
getMatrix
|
|
@@ -245,4 +245,4 @@ export {
|
|
|
245
245
|
validateBuildStep,
|
|
246
246
|
StepBuild
|
|
247
247
|
};
|
|
248
|
-
//# sourceMappingURL=chunk-
|
|
248
|
+
//# sourceMappingURL=chunk-2VT2DMD7.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
verbose,
|
|
9
9
|
warn,
|
|
10
10
|
writeFile
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
12
12
|
import {
|
|
13
13
|
MAX_PLUGIN_FILE_SIZE
|
|
14
14
|
} from "./chunk-EGMQ3SXN.js";
|
|
@@ -129,4 +129,4 @@ export {
|
|
|
129
129
|
writeMarketplace,
|
|
130
130
|
getMarketplaceStats
|
|
131
131
|
};
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-6BXKF5GP.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-7SOPVGDV.js";
|
|
5
5
|
import {
|
|
6
6
|
SearchModal
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2MHSOPIU.js";
|
|
8
8
|
import {
|
|
9
9
|
useFocusedListItem
|
|
10
10
|
} from "./chunk-GG4BSB6S.js";
|
|
@@ -259,4 +259,4 @@ var SourceGrid = ({
|
|
|
259
259
|
export {
|
|
260
260
|
SourceGrid
|
|
261
261
|
};
|
|
262
|
-
//# sourceMappingURL=chunk-
|
|
262
|
+
//# sourceMappingURL=chunk-6YMW4HMX.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
StackSelection
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XMZNHLV3.js";
|
|
5
5
|
import {
|
|
6
6
|
useMeasuredHeight
|
|
7
7
|
} from "./chunk-K77I4XGL.js";
|
|
8
8
|
import {
|
|
9
9
|
DomainSelection
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KANNRFY7.js";
|
|
11
11
|
import {
|
|
12
12
|
ViewTitle
|
|
13
13
|
} from "./chunk-AQYAVLZK.js";
|
|
14
14
|
import {
|
|
15
15
|
useWizardStore
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-QOJAZI72.js";
|
|
17
17
|
import {
|
|
18
18
|
init_esm_shims
|
|
19
19
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -37,4 +37,4 @@ var StepStack = ({ onCancel }) => {
|
|
|
37
37
|
export {
|
|
38
38
|
StepStack
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-AX6MMYAZ.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
loadPluginSkills,
|
|
5
5
|
loadSkillsByIds,
|
|
6
6
|
parseFrontmatter
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-L6MTIQ2U.js";
|
|
8
8
|
import {
|
|
9
9
|
typedEntries,
|
|
10
10
|
typedKeys
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
warn,
|
|
59
59
|
warnUnknownFields,
|
|
60
60
|
writeFile
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
62
62
|
import {
|
|
63
63
|
CACHE_DIR,
|
|
64
64
|
CACHE_HASH_LENGTH,
|
|
@@ -99,7 +99,7 @@ import {
|
|
|
99
99
|
defaultCategories,
|
|
100
100
|
defaultRules,
|
|
101
101
|
defaultStacks
|
|
102
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-KWB3B2HS.js";
|
|
103
103
|
import {
|
|
104
104
|
init_esm_shims
|
|
105
105
|
} from "./chunk-DHET7RCE.js";
|
|
@@ -692,12 +692,17 @@ async function loadStacks(configDir, stacksFile) {
|
|
|
692
692
|
async function loadStackById(stackId, configDir) {
|
|
693
693
|
const stacks = await loadStacks(configDir);
|
|
694
694
|
const stack = stacks.find((s) => s.id === stackId);
|
|
695
|
-
if (
|
|
696
|
-
verbose(`
|
|
697
|
-
return
|
|
695
|
+
if (stack) {
|
|
696
|
+
verbose(`Found stack: ${stack.name} (${stackId})`);
|
|
697
|
+
return stack;
|
|
698
698
|
}
|
|
699
|
-
|
|
700
|
-
|
|
699
|
+
const defaultStack = defaultStacks.find((s) => s.id === stackId) ?? null;
|
|
700
|
+
if (defaultStack) {
|
|
701
|
+
verbose(`Found default stack: ${defaultStack.name} (${stackId})`);
|
|
702
|
+
} else {
|
|
703
|
+
verbose(`Stack '${stackId}' not found in source or defaults`);
|
|
704
|
+
}
|
|
705
|
+
return defaultStack;
|
|
701
706
|
}
|
|
702
707
|
function resolveAgentConfigToSkills(agentConfig) {
|
|
703
708
|
return typedEntries(agentConfig).flatMap(
|
|
@@ -1263,18 +1268,18 @@ function buildDirectoryPathToIdMap(skills) {
|
|
|
1263
1268
|
}
|
|
1264
1269
|
return map;
|
|
1265
1270
|
}
|
|
1266
|
-
function resolveToCanonicalId(
|
|
1267
|
-
const slugResult = slugToId[
|
|
1271
|
+
function resolveToCanonicalId(slug, slugToId, directoryPathToId = {}, context) {
|
|
1272
|
+
const slugResult = slugToId[slug];
|
|
1268
1273
|
if (slugResult) {
|
|
1269
1274
|
return slugResult;
|
|
1270
1275
|
}
|
|
1271
|
-
if (directoryPathToId[
|
|
1272
|
-
return directoryPathToId[
|
|
1276
|
+
if (directoryPathToId[slug]) {
|
|
1277
|
+
return directoryPathToId[slug];
|
|
1273
1278
|
}
|
|
1274
1279
|
if (context) {
|
|
1275
|
-
verbose(`Unresolved
|
|
1280
|
+
verbose(`Unresolved slug '${slug}' in ${context} \u2014 passing through as-is`);
|
|
1276
1281
|
}
|
|
1277
|
-
return
|
|
1282
|
+
return slug;
|
|
1278
1283
|
}
|
|
1279
1284
|
async function mergeMatrixWithSkills(categories, relationships, skills) {
|
|
1280
1285
|
const slugMap = buildSlugMap(skills);
|
|
@@ -1313,7 +1318,7 @@ async function mergeMatrixWithSkills(categories, relationships, skills) {
|
|
|
1313
1318
|
function resolveConflicts(skillId, conflictRules, resolve) {
|
|
1314
1319
|
const conflicts = [];
|
|
1315
1320
|
for (const rule of conflictRules) {
|
|
1316
|
-
const resolved = rule.skills.map((
|
|
1321
|
+
const resolved = rule.skills.map((slug) => resolve(slug, "conflicts"));
|
|
1317
1322
|
if (!resolved.includes(skillId)) continue;
|
|
1318
1323
|
for (const other of resolved) {
|
|
1319
1324
|
if (other !== skillId && !conflicts.some((c) => c.skillId === other)) {
|
|
@@ -1326,7 +1331,7 @@ function resolveConflicts(skillId, conflictRules, resolve) {
|
|
|
1326
1331
|
function resolveCompatibilityGroups(skillId, compatibilityGroups, resolve) {
|
|
1327
1332
|
const compatible = /* @__PURE__ */ new Set();
|
|
1328
1333
|
for (const group of compatibilityGroups) {
|
|
1329
|
-
const resolved = group.skills.map((
|
|
1334
|
+
const resolved = group.skills.map((slug) => resolve(slug, "compatibleWith"));
|
|
1330
1335
|
if (!resolved.includes(skillId)) continue;
|
|
1331
1336
|
for (const other of resolved) {
|
|
1332
1337
|
if (other !== skillId) {
|
|
@@ -1341,7 +1346,7 @@ function resolveSetupPairs(skillId, setupPairs, resolve) {
|
|
|
1341
1346
|
const providesSetupFor = /* @__PURE__ */ new Set();
|
|
1342
1347
|
for (const pair of setupPairs) {
|
|
1343
1348
|
const setupId = resolve(pair.setup, "setupPairs.setup");
|
|
1344
|
-
const configuresIds = pair.configures.map((
|
|
1349
|
+
const configuresIds = pair.configures.map((slug) => resolve(slug, "setupPairs.configures"));
|
|
1345
1350
|
if (setupId === skillId) {
|
|
1346
1351
|
for (const configuredId of configuresIds) {
|
|
1347
1352
|
providesSetupFor.add(configuredId);
|
|
@@ -1361,7 +1366,7 @@ function resolveRequirements(skillId, requireRules, resolve) {
|
|
|
1361
1366
|
for (const rule of requireRules) {
|
|
1362
1367
|
if (resolve(rule.skill, "requires.skill") !== skillId) continue;
|
|
1363
1368
|
requires.push({
|
|
1364
|
-
skillIds: rule.needs.map((
|
|
1369
|
+
skillIds: rule.needs.map((slug) => resolve(slug, "requires.needs")),
|
|
1365
1370
|
needsAny: rule.needsAny ?? false,
|
|
1366
1371
|
reason: rule.reason
|
|
1367
1372
|
});
|
|
@@ -1371,7 +1376,7 @@ function resolveRequirements(skillId, requireRules, resolve) {
|
|
|
1371
1376
|
function resolveAlternatives(skillId, alternativeGroups, resolve) {
|
|
1372
1377
|
const alternatives = [];
|
|
1373
1378
|
for (const group of alternativeGroups) {
|
|
1374
|
-
const resolved = group.skills.map((
|
|
1379
|
+
const resolved = group.skills.map((slug) => resolve(slug, "alternatives"));
|
|
1375
1380
|
if (!resolved.includes(skillId)) continue;
|
|
1376
1381
|
for (const alt of resolved) {
|
|
1377
1382
|
if (alt !== skillId) {
|
|
@@ -1385,7 +1390,7 @@ function resolveDiscourages(skillId, discourageRules, resolve) {
|
|
|
1385
1390
|
if (!discourageRules) return [];
|
|
1386
1391
|
const discourages = [];
|
|
1387
1392
|
for (const rule of discourageRules) {
|
|
1388
|
-
const resolved = rule.skills.map((
|
|
1393
|
+
const resolved = rule.skills.map((slug) => resolve(slug, "discourages"));
|
|
1389
1394
|
if (!resolved.includes(skillId)) continue;
|
|
1390
1395
|
for (const other of resolved) {
|
|
1391
1396
|
if (other !== skillId && !discourages.some((d) => d.skillId === other)) {
|
|
@@ -1396,14 +1401,14 @@ function resolveDiscourages(skillId, discourageRules, resolve) {
|
|
|
1396
1401
|
return discourages;
|
|
1397
1402
|
}
|
|
1398
1403
|
function buildResolvedSkill(skill, _categories, relationships, slugMap, directoryPathToId) {
|
|
1399
|
-
const resolve = (
|
|
1400
|
-
|
|
1404
|
+
const resolve = (slug2, context) => resolveToCanonicalId(
|
|
1405
|
+
slug2,
|
|
1401
1406
|
slugMap.slugToId,
|
|
1402
1407
|
directoryPathToId,
|
|
1403
1408
|
context ? `${skill.id} ${context}` : void 0
|
|
1404
1409
|
);
|
|
1405
1410
|
const slug = skill.slug;
|
|
1406
|
-
const recommendation = relationships.recommends.find((r) => r.skill === skill.
|
|
1411
|
+
const recommendation = relationships.recommends.find((r) => r.skill === skill.slug);
|
|
1407
1412
|
const { requiresSetup, providesSetupFor } = resolveSetupPairs(
|
|
1408
1413
|
skill.id,
|
|
1409
1414
|
relationships.setupPairs ?? [],
|
|
@@ -2814,7 +2819,7 @@ async function compileStackPlugin(options) {
|
|
|
2814
2819
|
verbose(
|
|
2815
2820
|
` Loaded ${Object.keys(localAgents).length} local agents, ${Object.keys(cliAgents).length} CLI agents`
|
|
2816
2821
|
);
|
|
2817
|
-
const newStack = options.stack || await loadStackById(stackId, projectRoot)
|
|
2822
|
+
const newStack = options.stack || await loadStackById(stackId, projectRoot);
|
|
2818
2823
|
let stack;
|
|
2819
2824
|
if (newStack) {
|
|
2820
2825
|
verbose(` Found stack: ${newStack.name}`);
|
|
@@ -3193,8 +3198,8 @@ function loadConfigTypesDataInBackground(sourceFlag, projectDir) {
|
|
|
3193
3198
|
if (!await directoryExists(claudeSrcDir)) {
|
|
3194
3199
|
throw new Error(`${CLAUDE_SRC_DIR}/ not found \u2014 run '${CLI_BIN_NAME} init' first`);
|
|
3195
3200
|
}
|
|
3196
|
-
const { loadSkillsMatrixFromSource: loadSkillsMatrixFromSource2 } = await import("./source-loader-
|
|
3197
|
-
const { loadAllAgents: loadAllAgents2 } = await import("./loader-
|
|
3201
|
+
const { loadSkillsMatrixFromSource: loadSkillsMatrixFromSource2 } = await import("./source-loader-3MZ2MBOF.js");
|
|
3202
|
+
const { loadAllAgents: loadAllAgents2 } = await import("./loader-CMSC3RAO.js");
|
|
3198
3203
|
const sourceResult = await loadSkillsMatrixFromSource2({
|
|
3199
3204
|
sourceFlag,
|
|
3200
3205
|
projectDir,
|
|
@@ -3652,9 +3657,6 @@ async function buildLocalConfig(wizardResult, sourceResult) {
|
|
|
3652
3657
|
let loadedStack = null;
|
|
3653
3658
|
if (wizardResult.selectedStackId) {
|
|
3654
3659
|
loadedStack = await loadStackById(wizardResult.selectedStackId, sourceResult.sourcePath);
|
|
3655
|
-
if (!loadedStack) {
|
|
3656
|
-
loadedStack = defaultStacks.find((s) => s.id === wizardResult.selectedStackId) ?? null;
|
|
3657
|
-
}
|
|
3658
3660
|
verbose(
|
|
3659
3661
|
`buildLocalConfig: loadedStack=${loadedStack ? `found (id='${loadedStack.id}')` : "NOT FOUND"}`
|
|
3660
3662
|
);
|
|
@@ -5653,4 +5655,4 @@ export {
|
|
|
5653
5655
|
validateAllPlugins,
|
|
5654
5656
|
printPluginValidationResult
|
|
5655
5657
|
};
|
|
5656
|
-
//# sourceMappingURL=chunk-
|
|
5658
|
+
//# sourceMappingURL=chunk-CADG5WWP.js.map
|