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.
- package/CHANGELOG.md +10 -0
- package/dist/{chunk-CDMHSHBN.js → chunk-3XFUQ6OL.js} +2 -2
- package/dist/{chunk-ZDLTLNU2.js → chunk-3YGUHWLR.js} +2 -2
- package/dist/{chunk-MC5DUZ3V.js → chunk-44LLPS2N.js} +3 -3
- package/dist/{chunk-N4IZ6GBO.js → chunk-4R6PGHQQ.js} +4 -4
- package/dist/{chunk-GRPSDKIS.js → chunk-5V2O6C3T.js} +3 -3
- package/dist/{chunk-HIPGKIT3.js → chunk-6RBQBOBS.js} +2 -2
- package/dist/{chunk-OA5SUEQD.js → chunk-7QIHKQL5.js} +2 -2
- package/dist/{chunk-UZRISDBZ.js → chunk-BNE4HHIH.js} +2 -2
- package/dist/{chunk-DJAZE4PD.js → chunk-DG2NGZ7S.js} +296 -296
- package/dist/chunk-DG2NGZ7S.js.map +1 -0
- package/dist/{chunk-RP7R73JO.js → chunk-EVXG3X6G.js} +2 -2
- package/dist/{chunk-RJN7W2C7.js → chunk-EZ7STXUV.js} +12 -12
- package/dist/{chunk-4GL2F5AB.js → chunk-LAXAQ3PZ.js} +50 -37
- package/dist/chunk-LAXAQ3PZ.js.map +1 -0
- package/dist/{chunk-YKKIJHZB.js → chunk-NGLQ5W7U.js} +2 -2
- package/dist/{chunk-LRYNF3J7.js → chunk-NHCGC6DG.js} +3 -3
- package/dist/{chunk-EN2GCPW7.js → chunk-NM3EDGB5.js} +5 -5
- package/dist/{chunk-E4FT2KFV.js → chunk-OJIESW5B.js} +4 -4
- package/dist/{chunk-4LPJZNT7.js → chunk-PV2HNW4I.js} +3 -3
- package/dist/{chunk-6I6RZHYP.js → chunk-QTFQEYDA.js} +11 -11
- package/dist/{chunk-5K5RBRTD.js → chunk-SHHOMVWC.js} +4 -4
- package/dist/{chunk-NUIZ6ZUO.js → chunk-SI5FOARI.js} +3 -3
- package/dist/{chunk-KH7MOIM5.js → chunk-TVHRMRD3.js} +14 -10
- package/dist/chunk-TVHRMRD3.js.map +1 -0
- package/dist/{chunk-ZHTXPFDK.js → chunk-TYJLR32W.js} +4 -4
- package/dist/{chunk-ZHTXPFDK.js.map → chunk-TYJLR32W.js.map} +1 -1
- package/dist/{chunk-F3756A5B.js → chunk-UFURYGD3.js} +2 -2
- package/dist/{chunk-ZKJAJWK6.js → chunk-UTFN6UJS.js} +5 -5
- package/dist/{chunk-CFQT72MJ.js → chunk-WFWCZEMS.js} +2 -2
- package/dist/{chunk-7URSGJLE.js → chunk-WK4J2CHH.js} +2 -2
- package/dist/{chunk-DDG4F3FE.js → chunk-Y4CXDA3I.js} +3 -3
- package/dist/{chunk-FWT3CBLL.js → chunk-YA4QQKKE.js} +3 -3
- package/dist/{chunk-VIFZ6NFH.js → chunk-YBVA7GPW.js} +2 -2
- package/dist/commands/build/marketplace.js +4 -4
- package/dist/commands/build/plugins.js +4 -4
- package/dist/commands/compile.js +8 -8
- package/dist/commands/doctor.js +8 -8
- package/dist/commands/edit.js +26 -26
- package/dist/commands/eject.js +8 -8
- package/dist/commands/import/skill.js +3 -3
- package/dist/commands/init.js +27 -27
- package/dist/commands/list.js +5 -5
- package/dist/commands/new/agent.js +4 -4
- package/dist/commands/new/marketplace.js +5 -5
- package/dist/commands/new/skill.js +4 -4
- package/dist/commands/search.js +8 -8
- package/dist/commands/uninstall.js +8 -8
- package/dist/commands/update.js +8 -8
- package/dist/commands/validate.js +4 -4
- package/dist/components/wizard/category-grid.js +2 -2
- package/dist/components/wizard/category-grid.test.js +2 -2
- package/dist/components/wizard/domain-selection.js +5 -5
- package/dist/components/wizard/run-wizard-session.js +20 -20
- package/dist/components/wizard/skill-agent-summary.js +4 -4
- package/dist/components/wizard/source-grid.js +2 -2
- package/dist/components/wizard/source-grid.test.js +2 -2
- package/dist/components/wizard/stack-selection.js +4 -4
- package/dist/components/wizard/step-agents.js +5 -5
- package/dist/components/wizard/step-agents.test.js +5 -5
- package/dist/components/wizard/step-build.js +5 -5
- package/dist/components/wizard/step-build.test.js +6 -6
- package/dist/components/wizard/step-confirm.js +7 -7
- package/dist/components/wizard/step-confirm.test.js +19 -19
- package/dist/components/wizard/step-settings.js +3 -3
- package/dist/components/wizard/step-settings.test.js +6 -6
- package/dist/components/wizard/step-sources.js +5 -5
- package/dist/components/wizard/step-sources.test.js +5 -5
- package/dist/components/wizard/step-stack.js +5 -5
- package/dist/components/wizard/step-stack.test.js +5 -5
- package/dist/components/wizard/summary-panel.js +6 -6
- package/dist/components/wizard/summary-panel.test.js +19 -19
- package/dist/components/wizard/wizard-layout.js +8 -8
- package/dist/components/wizard/wizard-layout.test.js +8 -8
- package/dist/components/wizard/wizard-tabs.js +4 -4
- package/dist/components/wizard/wizard-tabs.test.js +4 -4
- package/dist/components/wizard/wizard.js +19 -19
- package/dist/{copy-local-skills-CA7P73RZ.js → copy-local-skills-UPA2GUZV.js} +4 -4
- package/dist/hooks/init.js +27 -27
- package/dist/{load-agent-defs-6MAY5ABI.js → load-agent-defs-SB4XAOVB.js} +5 -5
- package/dist/{recompile-project-agents-VYQJ6UZB.js → recompile-project-agents-U4ZY2GDX.js} +7 -7
- package/dist/{source-loader-VVHMQEX5.js → source-loader-5UNRU7EZ.js} +3 -3
- package/dist/{source-manager-TPDXV5FO.js → source-manager-3O54SIIB.js} +3 -3
- package/dist/stores/d227-same-scope-tombstone-duplicate.test.js +19 -19
- package/dist/stores/wizard-store.js +3 -3
- package/dist/stores/wizard-store.test.js +19 -19
- package/package.json +8 -8
- package/dist/chunk-4GL2F5AB.js.map +0 -1
- package/dist/chunk-DJAZE4PD.js.map +0 -1
- package/dist/chunk-KH7MOIM5.js.map +0 -1
- /package/dist/{chunk-CDMHSHBN.js.map → chunk-3XFUQ6OL.js.map} +0 -0
- /package/dist/{chunk-ZDLTLNU2.js.map → chunk-3YGUHWLR.js.map} +0 -0
- /package/dist/{chunk-MC5DUZ3V.js.map → chunk-44LLPS2N.js.map} +0 -0
- /package/dist/{chunk-N4IZ6GBO.js.map → chunk-4R6PGHQQ.js.map} +0 -0
- /package/dist/{chunk-GRPSDKIS.js.map → chunk-5V2O6C3T.js.map} +0 -0
- /package/dist/{chunk-HIPGKIT3.js.map → chunk-6RBQBOBS.js.map} +0 -0
- /package/dist/{chunk-OA5SUEQD.js.map → chunk-7QIHKQL5.js.map} +0 -0
- /package/dist/{chunk-UZRISDBZ.js.map → chunk-BNE4HHIH.js.map} +0 -0
- /package/dist/{chunk-RP7R73JO.js.map → chunk-EVXG3X6G.js.map} +0 -0
- /package/dist/{chunk-RJN7W2C7.js.map → chunk-EZ7STXUV.js.map} +0 -0
- /package/dist/{chunk-YKKIJHZB.js.map → chunk-NGLQ5W7U.js.map} +0 -0
- /package/dist/{chunk-LRYNF3J7.js.map → chunk-NHCGC6DG.js.map} +0 -0
- /package/dist/{chunk-EN2GCPW7.js.map → chunk-NM3EDGB5.js.map} +0 -0
- /package/dist/{chunk-E4FT2KFV.js.map → chunk-OJIESW5B.js.map} +0 -0
- /package/dist/{chunk-4LPJZNT7.js.map → chunk-PV2HNW4I.js.map} +0 -0
- /package/dist/{chunk-6I6RZHYP.js.map → chunk-QTFQEYDA.js.map} +0 -0
- /package/dist/{chunk-5K5RBRTD.js.map → chunk-SHHOMVWC.js.map} +0 -0
- /package/dist/{chunk-NUIZ6ZUO.js.map → chunk-SI5FOARI.js.map} +0 -0
- /package/dist/{chunk-F3756A5B.js.map → chunk-UFURYGD3.js.map} +0 -0
- /package/dist/{chunk-ZKJAJWK6.js.map → chunk-UTFN6UJS.js.map} +0 -0
- /package/dist/{chunk-CFQT72MJ.js.map → chunk-WFWCZEMS.js.map} +0 -0
- /package/dist/{chunk-7URSGJLE.js.map → chunk-WK4J2CHH.js.map} +0 -0
- /package/dist/{chunk-DDG4F3FE.js.map → chunk-Y4CXDA3I.js.map} +0 -0
- /package/dist/{chunk-FWT3CBLL.js.map → chunk-YA4QQKKE.js.map} +0 -0
- /package/dist/{chunk-VIFZ6NFH.js.map → chunk-YBVA7GPW.js.map} +0 -0
- /package/dist/{copy-local-skills-CA7P73RZ.js.map → copy-local-skills-UPA2GUZV.js.map} +0 -0
- /package/dist/{load-agent-defs-6MAY5ABI.js.map → load-agent-defs-SB4XAOVB.js.map} +0 -0
- /package/dist/{recompile-project-agents-VYQJ6UZB.js.map → recompile-project-agents-U4ZY2GDX.js.map} +0 -0
- /package/dist/{source-loader-VVHMQEX5.js.map → source-loader-5UNRU7EZ.js.map} +0 -0
- /package/dist/{source-manager-TPDXV5FO.js.map → source-manager-3O54SIIB.js.map} +0 -0
|
@@ -13,48 +13,48 @@ import {
|
|
|
13
13
|
globalExpect,
|
|
14
14
|
it
|
|
15
15
|
} from "../chunk-I3XKEGHM.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-EZ7STXUV.js";
|
|
17
|
+
import "../chunk-UTFN6UJS.js";
|
|
18
|
+
import "../chunk-EVXG3X6G.js";
|
|
19
|
+
import "../chunk-OJIESW5B.js";
|
|
20
|
+
import "../chunk-UFURYGD3.js";
|
|
21
21
|
import "../chunk-RBHYLCUB.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-LAXAQ3PZ.js";
|
|
23
|
+
import "../chunk-NM3EDGB5.js";
|
|
24
|
+
import "../chunk-NHCGC6DG.js";
|
|
25
|
+
import "../chunk-BNE4HHIH.js";
|
|
26
|
+
import "../chunk-TYJLR32W.js";
|
|
27
27
|
import "../chunk-IOJR5TOY.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-3YGUHWLR.js";
|
|
29
29
|
import "../chunk-QQLRX4KI.js";
|
|
30
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-WK4J2CHH.js";
|
|
31
31
|
import "../chunk-NIKUMXE7.js";
|
|
32
32
|
import "../chunk-KOPEM3Q7.js";
|
|
33
33
|
import "../chunk-2RSNKBXC.js";
|
|
34
34
|
import "../chunk-DUVWGO6E.js";
|
|
35
35
|
import "../chunk-KIR7VYQD.js";
|
|
36
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-6RBQBOBS.js";
|
|
37
37
|
import "../chunk-LYYXX2W5.js";
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-SHHOMVWC.js";
|
|
39
|
+
import "../chunk-YA4QQKKE.js";
|
|
40
40
|
import "../chunk-XA57SX4T.js";
|
|
41
41
|
import "../chunk-FYPUUYSG.js";
|
|
42
42
|
import "../chunk-DAG2ULNF.js";
|
|
43
43
|
import "../chunk-VG2TVBFN.js";
|
|
44
44
|
import "../chunk-IHO75PMZ.js";
|
|
45
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-5V2O6C3T.js";
|
|
46
46
|
import {
|
|
47
47
|
useWizardStore
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-44LLPS2N.js";
|
|
49
49
|
import "../chunk-P3PN5SVI.js";
|
|
50
50
|
import {
|
|
51
51
|
generateProjectConfigFromSkills,
|
|
52
52
|
mergeConfigs
|
|
53
|
-
} from "../chunk-
|
|
53
|
+
} from "../chunk-TVHRMRD3.js";
|
|
54
54
|
import "../chunk-3LIU2ZEF.js";
|
|
55
55
|
import {
|
|
56
56
|
initializeMatrix
|
|
57
|
-
} from "../chunk-
|
|
57
|
+
} from "../chunk-DG2NGZ7S.js";
|
|
58
58
|
import "../chunk-VEP23B5W.js";
|
|
59
59
|
import "../chunk-O5ASLZ2K.js";
|
|
60
60
|
import "../chunk-YU2VGX5R.js";
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
createInitialState,
|
|
5
5
|
hydrateWizardStore,
|
|
6
6
|
useWizardStore
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-44LLPS2N.js";
|
|
8
|
+
import "../chunk-TVHRMRD3.js";
|
|
9
9
|
import "../chunk-3LIU2ZEF.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-DG2NGZ7S.js";
|
|
11
11
|
import "../chunk-VEP23B5W.js";
|
|
12
12
|
import "../chunk-O5ASLZ2K.js";
|
|
13
13
|
import "../chunk-YU2VGX5R.js";
|
|
@@ -22,46 +22,46 @@ import {
|
|
|
22
22
|
globalExpect,
|
|
23
23
|
it
|
|
24
24
|
} from "../chunk-I3XKEGHM.js";
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-EZ7STXUV.js";
|
|
26
|
+
import "../chunk-UTFN6UJS.js";
|
|
27
|
+
import "../chunk-EVXG3X6G.js";
|
|
28
|
+
import "../chunk-OJIESW5B.js";
|
|
29
|
+
import "../chunk-UFURYGD3.js";
|
|
30
30
|
import "../chunk-RBHYLCUB.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-LAXAQ3PZ.js";
|
|
32
|
+
import "../chunk-NM3EDGB5.js";
|
|
33
|
+
import "../chunk-NHCGC6DG.js";
|
|
34
|
+
import "../chunk-BNE4HHIH.js";
|
|
35
|
+
import "../chunk-TYJLR32W.js";
|
|
36
36
|
import "../chunk-IOJR5TOY.js";
|
|
37
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-3YGUHWLR.js";
|
|
38
38
|
import "../chunk-QQLRX4KI.js";
|
|
39
|
-
import "../chunk-
|
|
39
|
+
import "../chunk-WK4J2CHH.js";
|
|
40
40
|
import "../chunk-NIKUMXE7.js";
|
|
41
41
|
import "../chunk-KOPEM3Q7.js";
|
|
42
42
|
import "../chunk-2RSNKBXC.js";
|
|
43
43
|
import "../chunk-DUVWGO6E.js";
|
|
44
44
|
import "../chunk-KIR7VYQD.js";
|
|
45
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-6RBQBOBS.js";
|
|
46
46
|
import "../chunk-LYYXX2W5.js";
|
|
47
|
-
import "../chunk-
|
|
48
|
-
import "../chunk-
|
|
47
|
+
import "../chunk-SHHOMVWC.js";
|
|
48
|
+
import "../chunk-YA4QQKKE.js";
|
|
49
49
|
import "../chunk-XA57SX4T.js";
|
|
50
50
|
import "../chunk-FYPUUYSG.js";
|
|
51
51
|
import "../chunk-DAG2ULNF.js";
|
|
52
52
|
import "../chunk-VG2TVBFN.js";
|
|
53
53
|
import "../chunk-IHO75PMZ.js";
|
|
54
|
-
import "../chunk-
|
|
54
|
+
import "../chunk-5V2O6C3T.js";
|
|
55
55
|
import {
|
|
56
56
|
hydrateWizardStore,
|
|
57
57
|
useWizardStore
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-44LLPS2N.js";
|
|
59
59
|
import "../chunk-P3PN5SVI.js";
|
|
60
|
-
import "../chunk-
|
|
60
|
+
import "../chunk-TVHRMRD3.js";
|
|
61
61
|
import "../chunk-3LIU2ZEF.js";
|
|
62
62
|
import {
|
|
63
63
|
initializeMatrix
|
|
64
|
-
} from "../chunk-
|
|
64
|
+
} from "../chunk-DG2NGZ7S.js";
|
|
65
65
|
import {
|
|
66
66
|
typedKeys
|
|
67
67
|
} from "../chunk-VEP23B5W.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agents-inc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.151.0",
|
|
4
4
|
"description": "CLI for managing Agents Inc. skills, stacks, and agents for Claude Code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -110,35 +110,35 @@
|
|
|
110
110
|
"fs-extra": "^11.2.0",
|
|
111
111
|
"giget": "^1.2.0",
|
|
112
112
|
"gray-matter": "^4.0.3",
|
|
113
|
-
"ink": "^
|
|
113
|
+
"ink": "^7",
|
|
114
114
|
"jiti": "2.4.2",
|
|
115
115
|
"liquidjs": "^10.24.0",
|
|
116
|
-
"react": "^
|
|
116
|
+
"react": "^19.2.6",
|
|
117
117
|
"remeda": "^2.33.6",
|
|
118
118
|
"yaml": "^2.8.2",
|
|
119
119
|
"zod": "^4.3.6",
|
|
120
120
|
"zustand": "^5.0.0"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
|
-
"@eslint/js": "^
|
|
123
|
+
"@eslint/js": "^10",
|
|
124
124
|
"@lydell/node-pty": "^1.2.0-beta.3",
|
|
125
125
|
"@oclif/test": "^4.0.0",
|
|
126
126
|
"@types/fs-extra": "^11.0.0",
|
|
127
127
|
"@types/node": "^22.0.0",
|
|
128
|
-
"@types/react": "^
|
|
128
|
+
"@types/react": "^19",
|
|
129
129
|
"@vitest/coverage-v8": "^4.0.18",
|
|
130
130
|
"@xterm/headless": "^6.0.0",
|
|
131
|
-
"eslint": "^
|
|
131
|
+
"eslint": "^10",
|
|
132
132
|
"eslint-config-prettier": "^10.1.8",
|
|
133
133
|
"ink-testing-library": "^4.0.0",
|
|
134
134
|
"prettier": "^3.2.0",
|
|
135
135
|
"tree-kill": "^1.2.2",
|
|
136
136
|
"tsup": "^8.0.0",
|
|
137
|
-
"typescript": "
|
|
137
|
+
"typescript": "~6",
|
|
138
138
|
"typescript-eslint": "^8.65.0",
|
|
139
139
|
"vitest": "^4.0.18"
|
|
140
140
|
},
|
|
141
141
|
"engines": {
|
|
142
|
-
"node": ">=
|
|
142
|
+
"node": ">=22"
|
|
143
143
|
}
|
|
144
144
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/components/wizard/stack-selection.tsx"],"sourcesContent":["import { groupBy } from \"remeda\";\nimport { useKeyboardNavigation } from \"../hooks/use-keyboard-navigation.js\";\nimport { Box, Text } from \"ink\";\nimport React, { useMemo } from \"react\";\nimport { CLI_COLORS, DEFAULT_SCRATCH_DOMAINS, UI_SYMBOLS } from \"../../consts.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport { useMeasuredHeight } from \"../hooks/use-measured-height.js\";\nimport { useRowScroll } from \"../hooks/use-row-scroll.js\";\n\nimport type { AgentName, ResolvedStack } from \"../../types/index.js\";\nimport { typedKeys } from \"../../utils/typed-object.js\";\n\ntype StackItem = Pick<ResolvedStack, \"id\" | \"name\" | \"description\">;\ntype StackGroup = { label: string; items: StackItem[] };\n/** A focusable row id: a stack id, or the \"scratch\" sentinel for the \"Start from scratch\" row. */\ntype FocusId = string;\n\nconst OTHER_FRAMEWORKS_LABEL = \"Other Frameworks\";\nconst GROUP_ORDER: string[] = [\"React\", \"CLI\"];\nconst SCRATCH_LABEL = \"Start from scratch\";\nconst SCRATCH_DESCRIPTION = \"Select domains and skills manually\";\n\ntype GroupableStack = Pick<ResolvedStack, \"id\" | \"name\" | \"description\" | \"group\">;\n\nfunction toStackItem(stack: GroupableStack): StackItem {\n return { id: stack.id, name: stack.name, description: stack.description };\n}\n\n/** GROUP_ORDER labels first (in order), then unknown labels alphabetically. */\nfunction compareGroupLabels(a: string, b: string): number {\n const ai = GROUP_ORDER.indexOf(a);\n const bi = GROUP_ORDER.indexOf(b);\n if (ai !== -1 && bi !== -1) return ai - bi;\n if (ai !== -1) return -1;\n if (bi !== -1) return 1;\n return a.localeCompare(b);\n}\n\nfunction groupStacks(stacks: GroupableStack[]): StackGroup[] {\n // `|| undefined` keeps an empty-string group ungrouped; groupBy drops undefined keys.\n const byLabel = groupBy(stacks, (stack) => stack.group || undefined);\n const ungrouped = stacks.filter((stack) => !stack.group).map(toStackItem);\n\n // No explicit groups — flat list, no headers\n const sortedLabels = Object.keys(byLabel).sort(compareGroupLabels);\n if (sortedLabels.length === 0) {\n return [{ label: \"\", items: ungrouped }];\n }\n\n const groups = sortedLabels.map((label) => ({\n label,\n items: byLabel[label].map(toStackItem),\n }));\n return ungrouped.length > 0\n ? [...groups, { label: OTHER_FRAMEWORKS_LABEL, items: ungrouped }]\n : groups;\n}\n\nfunction buildFocusableIds(groups: StackGroup[]): FocusId[] {\n return [...groups.flatMap((g) => g.items.map((i) => i.id)), \"scratch\"];\n}\n\ntype StackListRow =\n | { type: \"header\"; label: string }\n | { type: \"spacer\" }\n | { type: \"stack\"; item: StackItem }\n | { type: \"scratch\" };\n\n/** One row per rendered line — headers, spacers, stack items, then the scratch row. */\nfunction buildStackRows(groups: StackGroup[]): StackListRow[] {\n const groupRows = groups.flatMap((group, groupIndex): StackListRow[] => [\n ...(groupIndex > 0 ? [{ type: \"spacer\" as const }] : []),\n ...(group.label ? [{ type: \"header\" as const, label: group.label }] : []),\n ...group.items.map((item): StackListRow => ({ type: \"stack\", item })),\n ]);\n return [...groupRows, { type: \"spacer\" }, { type: \"scratch\" }];\n}\n\nfunction isRowFocused(row: StackListRow, focusedId: FocusId): boolean {\n if (row.type === \"stack\") return row.item.id === focusedId;\n return row.type === \"scratch\" && focusedId === \"scratch\";\n}\n\nconst StackRow: React.FC<{ item: StackItem; isFocused: boolean }> = ({ item, isFocused }) => {\n const pointer = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;\n return (\n <Box flexShrink={0}>\n <Text>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined}>{pointer}</Text>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined} bold={isFocused}>\n {\" \"}\n {item.name}\n </Text>\n <Text dimColor>\n {\" \"}\n {item.description}\n </Text>\n </Text>\n </Box>\n );\n};\n\nconst ScratchRow: React.FC<{ isFocused: boolean }> = ({ isFocused }) => {\n const pointer = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;\n return (\n <Box flexShrink={0}>\n <Text>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined}>{pointer}</Text>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined} bold={isFocused}>\n {\" \"}\n {SCRATCH_LABEL}\n </Text>\n <Text dimColor>\n {\" \"}\n {SCRATCH_DESCRIPTION}\n </Text>\n </Text>\n </Box>\n );\n};\n\nexport type StackSelectionProps = {\n onCancel?: () => void;\n};\n\nexport const StackSelection: React.FC<StackSelectionProps> = ({ onCancel }) => {\n const {\n selectStack,\n setApproach,\n setStackAction,\n populateFromSkillIds,\n preselectAgentsFromStack,\n toggleDomain,\n setStep,\n } = useWizardStore();\n\n const stacks = matrix.suggestedStacks;\n const groups = useMemo(() => groupStacks(stacks), [stacks]);\n const rows = useMemo(() => buildStackRows(groups), [groups]);\n const focusableIds = useMemo(() => buildFocusableIds(groups), [groups]);\n\n const { focusedIndex } = useKeyboardNavigation(focusableIds.length, {\n onEscape: onCancel,\n onEnter: (index) => handleSelect(focusableIds[index] ?? \"scratch\"),\n });\n const focusedId: FocusId = focusableIds[focusedIndex] ?? \"scratch\";\n const { ref: listRef, measuredHeight: listHeight } = useMeasuredHeight();\n\n const focusedVisualRow = useMemo(\n () => rows.findIndex((row) => isRowFocused(row, focusedId)),\n [rows, focusedId],\n );\n\n const { scrollEnabled, scrollTop } = useRowScroll({\n focusedIndex: focusedVisualRow,\n itemCount: rows.length,\n availableHeight: listHeight,\n });\n\n function handleSelect(selectedId: FocusId): void {\n if (selectedId === \"scratch\") {\n selectStack(null);\n setApproach(\"scratch\");\n\n // Restore global agent preselections (selectStack wipes selectedAgents/agentConfigs)\n const globalAgentPre = useWizardStore.getState().globalAgentPreselections;\n if (globalAgentPre) {\n useWizardStore.setState({\n selectedAgents: globalAgentPre.agents,\n agentConfigs: globalAgentPre.configs,\n });\n }\n\n // Pre-select global skills first (sets selectedDomains to global skill domains)\n const globalPreselections = useWizardStore.getState().globalPreselections;\n if (globalPreselections?.length) {\n populateFromSkillIds(\n globalPreselections.map((s) => s.id),\n globalPreselections,\n );\n }\n\n // Then toggle scratch domains (additive — adds any not already selected)\n for (const domain of DEFAULT_SCRATCH_DOMAINS) {\n if (!useWizardStore.getState().selectedDomains.includes(domain)) {\n toggleDomain(domain);\n }\n }\n\n setStep(\"domains\");\n return;\n }\n const focusedStack = stacks.find((s) => s.id === selectedId);\n if (focusedStack) {\n selectStack(focusedStack.id);\n setStackAction(\"customize\");\n\n // Derive agent preselection from stack agent keys, merged with global agent preselections\n const stackAgents = typedKeys<AgentName>(focusedStack.skills);\n preselectAgentsFromStack(stackAgents);\n\n // Merge global preselections with stack skills\n const globalPreselections = useWizardStore.getState().globalPreselections;\n const globalIds = globalPreselections?.map((s) => s.id) ?? [];\n const mergedIds = [...new Set([...focusedStack.allSkillIds, ...globalIds])];\n populateFromSkillIds(mergedIds, globalPreselections ?? undefined);\n\n setApproach(\"stack\");\n setStep(\"domains\");\n }\n }\n\n return (\n <Box ref={listRef} flexDirection=\"column\" flexGrow={1} flexBasis={0}>\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n {...(scrollEnabled && { overflow: \"hidden\" as const })}\n >\n <Box\n flexDirection=\"column\"\n marginTop={scrollTop > 0 ? -scrollTop : 0}\n {...(scrollEnabled && { flexShrink: 0 })}\n >\n {rows.map((row, index) => {\n switch (row.type) {\n case \"spacer\":\n return (\n <Box key={`spacer-${index}`} flexShrink={0}>\n <Text> </Text>\n </Box>\n );\n case \"header\":\n return (\n <Box key={`header-${row.label}`} flexShrink={0}>\n <Text dimColor bold>\n {\" \"}\n {row.label}\n </Text>\n </Box>\n );\n case \"stack\":\n return (\n <StackRow\n key={row.item.id}\n item={row.item}\n isFocused={row.item.id === focusedId}\n />\n );\n case \"scratch\":\n return <ScratchRow key=\"scratch\" isFocused={focusedId === \"scratch\"} />;\n default: {\n const _exhaustive: never = row;\n return _exhaustive;\n }\n }\n })}\n </Box>\n </Box>\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
|