@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
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
WizardLayout
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VUUGWE6G.js";
|
|
5
5
|
import {
|
|
6
6
|
StepSettings
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XB3TYSPL.js";
|
|
8
8
|
import {
|
|
9
9
|
StepSources
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-V5L532ZH.js";
|
|
11
11
|
import {
|
|
12
12
|
StepStack
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AX6MMYAZ.js";
|
|
14
14
|
import {
|
|
15
15
|
StepAgents
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-HWVRHPXR.js";
|
|
17
17
|
import {
|
|
18
18
|
StepBuild
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-2VT2DMD7.js";
|
|
20
20
|
import {
|
|
21
21
|
StepConfirm
|
|
22
22
|
} from "./chunk-52THXN5G.js";
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
} from "./chunk-ZYUASJUN.js";
|
|
26
26
|
import {
|
|
27
27
|
useWizardStore
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-QOJAZI72.js";
|
|
29
29
|
import {
|
|
30
30
|
cliTheme
|
|
31
31
|
} from "./chunk-T5DJCIUP.js";
|
|
@@ -39,13 +39,13 @@ import {
|
|
|
39
39
|
import {
|
|
40
40
|
resolveAlias,
|
|
41
41
|
validateSelection
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-CADG5WWP.js";
|
|
43
43
|
import {
|
|
44
44
|
getMatrix
|
|
45
45
|
} from "./chunk-BKL3DF2Q.js";
|
|
46
46
|
import {
|
|
47
47
|
warn
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
49
49
|
import {
|
|
50
50
|
CLI_COLORS
|
|
51
51
|
} from "./chunk-EGMQ3SXN.js";
|
|
@@ -68,6 +68,7 @@ function useWizardInitialization({
|
|
|
68
68
|
initialAgents,
|
|
69
69
|
installedSkillIds,
|
|
70
70
|
installedSkillConfigs,
|
|
71
|
+
installedAgentConfigs,
|
|
71
72
|
lockedSkillIds,
|
|
72
73
|
lockedAgentNames
|
|
73
74
|
}) {
|
|
@@ -86,6 +87,9 @@ function useWizardInitialization({
|
|
|
86
87
|
if (initialAgents?.length) {
|
|
87
88
|
useWizardStore.setState({ selectedAgents: initialAgents });
|
|
88
89
|
}
|
|
90
|
+
if (initialAgents?.length && installedAgentConfigs?.length) {
|
|
91
|
+
useWizardStore.setState({ agentConfigs: installedAgentConfigs });
|
|
92
|
+
}
|
|
89
93
|
if (lockedSkillIds?.length || lockedAgentNames?.length) {
|
|
90
94
|
useWizardStore.setState({
|
|
91
95
|
...lockedSkillIds?.length && { lockedSkillIds },
|
|
@@ -154,6 +158,7 @@ var Wizard = ({
|
|
|
154
158
|
initialAgents,
|
|
155
159
|
installedSkillIds,
|
|
156
160
|
installedSkillConfigs,
|
|
161
|
+
installedAgentConfigs,
|
|
157
162
|
lockedSkillIds,
|
|
158
163
|
lockedAgentNames,
|
|
159
164
|
projectDir,
|
|
@@ -172,6 +177,7 @@ var Wizard = ({
|
|
|
172
177
|
initialAgents,
|
|
173
178
|
installedSkillIds,
|
|
174
179
|
installedSkillConfigs,
|
|
180
|
+
installedAgentConfigs,
|
|
175
181
|
lockedSkillIds,
|
|
176
182
|
lockedAgentNames
|
|
177
183
|
});
|
|
@@ -335,4 +341,4 @@ var Wizard = ({
|
|
|
335
341
|
export {
|
|
336
342
|
Wizard
|
|
337
343
|
};
|
|
338
|
-
//# sourceMappingURL=chunk-
|
|
344
|
+
//# sourceMappingURL=chunk-UDAHHJIM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/wizard.tsx","../src/cli/components/hooks/use-wizard-initialization.ts","../src/cli/components/hooks/use-build-step-props.ts"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Box, Text, useApp, useInput, useStdout } from \"ink\";\nimport { ThemeProvider } from \"@inkjs/ui\";\nimport { useWizardStore, type WizardStep } from \"../../stores/wizard-store.js\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { cliTheme } from \"../themes/default.js\";\nimport { WizardLayout } from \"./wizard-layout.js\";\nimport { StepStack } from \"./step-stack.js\";\nimport { StepBuild } from \"./step-build.js\";\nimport { StepConfirm } from \"./step-confirm.js\";\nimport { StepSources } from \"./step-sources.js\";\nimport { StepSettings } from \"./step-settings.js\";\nimport { StepAgents } from \"./step-agents.js\";\nimport { resolveAlias, validateSelection } from \"../../lib/matrix/index.js\";\nimport { getMatrix } from \"../../stores/matrix-store.js\";\nimport {\n HOTKEY_ACCEPT_DEFAULTS,\n HOTKEY_HELP,\n HOTKEY_SCOPE,\n HOTKEY_SETTINGS,\n isHotkey,\n} from \"./hotkeys.js\";\nimport type { AgentName, Domain, DomainSelections, SkillId } from \"../../types/index.js\";\nimport type { AgentScopeConfig, SkillConfig } from \"../../types/config.js\";\nimport { getStackName } from \"./utils.js\";\nimport { warn, type StartupMessage } from \"../../utils/logger.js\";\nimport { useWizardInitialization } from \"../hooks/use-wizard-initialization.js\";\nimport { useBuildStepProps } from \"../hooks/use-build-step-props.js\";\n\nexport type WizardResultV2 = {\n skills: SkillConfig[];\n selectedAgents: AgentName[];\n agentConfigs: AgentScopeConfig[];\n selectedStackId: string | null;\n domainSelections: DomainSelections;\n selectedDomains: Domain[];\n cancelled: boolean;\n validation: {\n valid: boolean;\n errors: Array<{ message: string }>;\n warnings: Array<{ message: string }>;\n };\n};\n\ntype WizardProps = {\n onComplete: (result: WizardResultV2) => void;\n onCancel: () => void;\n version?: string;\n marketplaceLabel?: string;\n logo?: string;\n initialStep?: WizardStep;\n initialDomains?: Domain[];\n initialAgents?: AgentName[];\n installedSkillIds?: SkillId[];\n installedSkillConfigs?: SkillConfig[];\n installedAgentConfigs?: AgentScopeConfig[];\n lockedSkillIds?: SkillId[];\n lockedAgentNames?: AgentName[];\n projectDir?: string;\n startupMessages?: StartupMessage[];\n};\n\nconst MIN_TERMINAL_WIDTH = 80;\nconst MIN_TERMINAL_HEIGHT = 15;\n\nexport const Wizard: React.FC<WizardProps> = ({\n onComplete,\n onCancel,\n version,\n marketplaceLabel,\n logo,\n initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\n projectDir,\n startupMessages,\n}) => {\n const store = useWizardStore();\n const { exit } = useApp();\n const { stdout } = useStdout();\n\n const terminalWidth = stdout.columns || MIN_TERMINAL_WIDTH;\n const terminalHeight = stdout.rows || MIN_TERMINAL_HEIGHT;\n const isNarrowTerminal = terminalWidth < MIN_TERMINAL_WIDTH;\n const isShortTerminal = terminalHeight < MIN_TERMINAL_HEIGHT;\n\n useWizardInitialization({\n initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\n });\n\n const buildStepProps = useBuildStepProps({ store, installedSkillIds });\n\n useInput((input, key) => {\n // ESC is handled by step-settings.tsx's own useKeyboardNavigation hook\n if (store.showSettings) {\n if (isHotkey(input, HOTKEY_SETTINGS)) {\n store.toggleSettings();\n }\n return;\n }\n\n if (store.showHelp) {\n if (key.escape || isHotkey(input, HOTKEY_HELP)) {\n store.toggleHelp();\n }\n return;\n }\n\n if (isHotkey(input, HOTKEY_HELP)) {\n store.toggleHelp();\n return;\n }\n\n if (key.escape) {\n // At the initial stack/scratch selection (approach not yet set), ESC cancels the wizard.\n // StackSelection handles its own ESC via the onCancel prop.\n // Other steps that don't have their own escape handler use goBack.\n if (\n store.step !== \"build\" &&\n store.step !== \"confirm\" &&\n store.step !== \"sources\" &&\n store.step !== \"agents\" &&\n store.step !== \"stack\"\n ) {\n store.goBack();\n }\n return;\n }\n\n if (\n isHotkey(input, HOTKEY_ACCEPT_DEFAULTS) &&\n store.step === \"build\" &&\n store.selectedStackId\n ) {\n store.setStackAction(\"defaults\");\n store.setStep(\"confirm\");\n return;\n }\n\n if (isHotkey(input, HOTKEY_SCOPE) && store.step === \"build\") {\n const focused = store.focusedSkillId;\n if (focused) {\n store.toggleSkillScope(focused);\n }\n return;\n }\n\n if (isHotkey(input, HOTKEY_SCOPE) && store.step === \"agents\") {\n const focused = store.focusedAgentId;\n if (focused) {\n store.toggleAgentScope(focused);\n }\n return;\n }\n\n if (isHotkey(input, HOTKEY_SETTINGS) && store.step === \"sources\") {\n store.toggleSettings();\n return;\n }\n });\n\n const handleComplete = useCallback(() => {\n let allSkills: SkillId[];\n\n if (store.selectedStackId && store.stackAction === \"defaults\") {\n const stack = getMatrix().suggestedStacks.find((s) => s.id === store.selectedStackId);\n if (!stack) {\n warn(`Stack not found in matrix: '${store.selectedStackId}'`);\n }\n allSkills = [...(stack?.allSkillIds || [])];\n } else {\n const techNames = store.getAllSelectedTechnologies();\n allSkills = techNames.map((tech) => resolveAlias(tech));\n }\n\n const skillConfigs: SkillConfig[] = allSkills.map((id) => {\n const existing = store.skillConfigs.find((sc) => sc.id === id);\n return existing ?? { id, scope: \"global\" as const, source: \"local\" };\n });\n\n const validation = validateSelection(allSkills);\n\n const result: WizardResultV2 = {\n skills: skillConfigs,\n selectedAgents: store.selectedAgents,\n agentConfigs: store.agentConfigs,\n selectedStackId: store.selectedStackId,\n domainSelections: store.domainSelections,\n selectedDomains: store.selectedDomains,\n cancelled: false,\n validation,\n };\n\n onComplete(result);\n exit();\n }, [store, onComplete, exit]);\n\n const handleCancel = useCallback(() => {\n onCancel();\n exit();\n }, [onCancel, exit]);\n\n const renderStep = () => {\n switch (store.step) {\n case \"stack\":\n return <StepStack onCancel={handleCancel} />;\n\n case \"build\":\n return <StepBuild {...buildStepProps} />;\n\n case \"sources\": {\n if (store.showSettings) {\n return (\n <StepSettings\n projectDir={projectDir || process.cwd()}\n onClose={() => store.toggleSettings()}\n />\n );\n }\n return (\n <StepSources\n projectDir={projectDir}\n onContinue={() => {\n if (!initialAgents?.length) {\n store.preselectAgentsFromDomains();\n }\n store.setStep(\"agents\");\n }}\n onBack={store.goBack}\n />\n );\n }\n\n case \"agents\":\n return <StepAgents />;\n\n case \"confirm\": {\n const stackName = getStackName(store.selectedStackId);\n const selectedSkills = store.getAllSelectedTechnologies();\n return (\n <StepConfirm\n onComplete={handleComplete}\n stackName={stackName}\n selectedDomains={store.selectedDomains}\n domainSelections={store.domainSelections}\n technologyCount={selectedSkills.length}\n skillCount={selectedSkills.length}\n agentCount={store.selectedAgents.length}\n skillConfigs={store.skillConfigs}\n agentConfigs={store.agentConfigs}\n onBack={store.goBack}\n />\n );\n }\n\n default:\n return null;\n }\n };\n\n if (isNarrowTerminal || isShortTerminal) {\n const issue = isNarrowTerminal\n ? `too narrow (${terminalWidth} columns, need ${MIN_TERMINAL_WIDTH})`\n : `too short (${terminalHeight} rows, need ${MIN_TERMINAL_HEIGHT})`;\n\n return (\n <ThemeProvider theme={cliTheme}>\n <Box flexDirection=\"column\" padding={1}>\n <Text color={CLI_COLORS.WARNING}>Terminal {issue}. Please resize your terminal.</Text>\n </Box>\n </ThemeProvider>\n );\n }\n\n return (\n <ThemeProvider theme={cliTheme}>\n <WizardLayout\n version={version}\n marketplaceLabel={marketplaceLabel}\n logo={logo}\n startupMessages={startupMessages}\n >\n {renderStep()}\n </WizardLayout>\n </ThemeProvider>\n );\n};\n","import { useRef } from \"react\";\nimport { useWizardStore, type WizardStep } from \"../../stores/wizard-store.js\";\nimport type { AgentScopeConfig, SkillConfig } from \"../../types/config.js\";\nimport type { AgentName, Domain, SkillId } from \"../../types/index.js\";\n\ntype UseWizardInitializationOptions = {\n initialStep?: WizardStep;\n initialDomains?: Domain[];\n initialAgents?: AgentName[];\n installedSkillIds?: SkillId[];\n installedSkillConfigs?: SkillConfig[];\n installedAgentConfigs?: AgentScopeConfig[];\n lockedSkillIds?: SkillId[];\n lockedAgentNames?: AgentName[];\n};\n\n/**\n * Runs one-time wizard store initialization before the first render.\n * Populates step, approach, and skill selections from props.\n */\nexport function useWizardInitialization({\n initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\n}: UseWizardInitializationOptions): void {\n const initialized = useRef(false);\n\n if (!initialized.current) {\n initialized.current = true;\n\n if (initialStep) {\n if (installedSkillIds?.length) {\n useWizardStore.getState().populateFromSkillIds(installedSkillIds, installedSkillConfigs);\n }\n useWizardStore.setState({ step: initialStep, approach: \"scratch\" });\n }\n // Restore saved domains from config, overriding the domains\n // derived by populateFromSkillIds\n if (initialDomains?.length) {\n useWizardStore.setState({ selectedDomains: initialDomains });\n }\n // Restore saved agents from config, overriding the default empty array\n if (initialAgents?.length) {\n useWizardStore.setState({ selectedAgents: initialAgents });\n }\n // Restore saved agent scope configs (project vs global)\n if (initialAgents?.length && installedAgentConfigs?.length) {\n useWizardStore.setState({ agentConfigs: installedAgentConfigs });\n }\n // Set locked IDs (D9: global items read-only in project context)\n if (lockedSkillIds?.length || lockedAgentNames?.length) {\n useWizardStore.setState({\n ...(lockedSkillIds?.length && { lockedSkillIds }),\n ...(lockedAgentNames?.length && { lockedAgentNames }),\n });\n }\n }\n}\n","import { useCallback } from \"react\";\nimport type { Domain, SkillId } from \"../../types/index.js\";\nimport type { WizardState } from \"../../stores/wizard-store.js\";\nimport { getMatrix } from \"../../stores/matrix-store.js\";\nimport type { StepBuildProps } from \"../wizard/step-build.js\";\n\ntype UseBuildStepPropsOptions = {\n store: WizardState;\n installedSkillIds?: SkillId[];\n};\n\nexport function useBuildStepProps({\n store,\n installedSkillIds,\n}: UseBuildStepPropsOptions): StepBuildProps {\n const currentDomain = store.getCurrentDomain();\n const defaultDomains: Domain[] = [\"web\"];\n const effectiveDomains =\n store.selectedDomains.length > 0 ? store.selectedDomains : defaultDomains;\n\n const allSelections = store.getAllSelectedTechnologies();\n\n const activeDomain: Domain = currentDomain || effectiveDomains[0] || \"web\";\n\n const onToggle = useCallback(\n (categoryId: Parameters<StepBuildProps[\"onToggle\"]>[0], techId: SkillId) => {\n const domain: Domain = store.getCurrentDomain() || \"web\";\n const cat = getMatrix().categories[categoryId];\n store.toggleTechnology(domain, categoryId, techId, cat?.exclusive ?? true);\n },\n [store],\n );\n\n const onContinue = useCallback(() => {\n if (!store.nextDomain()) {\n store.setStep(\"sources\");\n }\n }, [store]);\n\n const onBack = useCallback(() => {\n if (!store.prevDomain()) {\n store.goBack();\n }\n }, [store]);\n\n return {\n domain: activeDomain,\n selectedDomains: effectiveDomains,\n selections: store.domainSelections[activeDomain] || {},\n allSelections,\n showLabels: store.showLabels,\n installedSkillIds,\n onToggle,\n onToggleLabels: store.toggleShowLabels,\n onContinue,\n onBack,\n };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
|
|
@@ -17,11 +17,11 @@ import {
|
|
|
17
17
|
resolveAgents,
|
|
18
18
|
writeContentHash,
|
|
19
19
|
writePluginManifest
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-CADG5WWP.js";
|
|
21
21
|
import {
|
|
22
22
|
loadAllAgents,
|
|
23
23
|
loadProjectAgents
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-L6MTIQ2U.js";
|
|
25
25
|
import {
|
|
26
26
|
typedEntries,
|
|
27
27
|
typedKeys
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
verbose,
|
|
40
40
|
warn,
|
|
41
41
|
writeFile
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
43
43
|
import {
|
|
44
44
|
CLAUDE_DIR,
|
|
45
45
|
DIRS,
|
|
@@ -319,4 +319,4 @@ export {
|
|
|
319
319
|
compileAllAgentPlugins,
|
|
320
320
|
printAgentCompilationSummary
|
|
321
321
|
};
|
|
322
|
-
//# sourceMappingURL=chunk-
|
|
322
|
+
//# sourceMappingURL=chunk-UQM5YPPJ.js.map
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
import {
|
|
3
3
|
FEATURE_FLAGS
|
|
4
4
|
} from "./chunk-HGTC76BX.js";
|
|
5
|
+
import {
|
|
6
|
+
SourceGrid
|
|
7
|
+
} from "./chunk-6YMW4HMX.js";
|
|
5
8
|
import {
|
|
6
9
|
useMeasuredHeight
|
|
7
10
|
} from "./chunk-K77I4XGL.js";
|
|
8
11
|
import {
|
|
9
12
|
SelectionCard
|
|
10
13
|
} from "./chunk-MWGDG4QN.js";
|
|
11
|
-
import {
|
|
12
|
-
SourceGrid
|
|
13
|
-
} from "./chunk-KFDTVSIC.js";
|
|
14
14
|
import {
|
|
15
15
|
ViewTitle
|
|
16
16
|
} from "./chunk-AQYAVLZK.js";
|
|
17
17
|
import {
|
|
18
18
|
useWizardStore
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-QOJAZI72.js";
|
|
20
20
|
import {
|
|
21
21
|
HOTKEY_SET_ALL_LOCAL,
|
|
22
22
|
HOTKEY_SET_ALL_PLUGIN,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
resolveAllSources,
|
|
29
29
|
searchExtraSources
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-CADG5WWP.js";
|
|
31
31
|
import {
|
|
32
32
|
CLI_COLORS,
|
|
33
33
|
DEFAULT_BRANDING
|
|
@@ -181,4 +181,4 @@ var StepSources = ({ projectDir, onContinue, onBack }) => {
|
|
|
181
181
|
export {
|
|
182
182
|
StepSources
|
|
183
183
|
};
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
184
|
+
//# sourceMappingURL=chunk-V5L532ZH.js.map
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
} from "./chunk-HGTC76BX.js";
|
|
9
9
|
import {
|
|
10
10
|
HelpModal
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KYULKBFC.js";
|
|
12
12
|
import {
|
|
13
13
|
useWizardStore
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-QOJAZI72.js";
|
|
15
15
|
import {
|
|
16
16
|
HOTKEY_ACCEPT_DEFAULTS,
|
|
17
17
|
HOTKEY_HELP,
|
|
@@ -203,4 +203,4 @@ var WizardLayout = ({
|
|
|
203
203
|
export {
|
|
204
204
|
WizardLayout
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=chunk-
|
|
206
|
+
//# sourceMappingURL=chunk-VUUGWE6G.js.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
useKeyboardNavigation
|
|
4
|
+
} from "./chunk-KUV24B5M.js";
|
|
5
|
+
import {
|
|
6
|
+
CLI_COLORS,
|
|
7
|
+
UI_SYMBOLS
|
|
8
|
+
} from "./chunk-EGMQ3SXN.js";
|
|
9
|
+
import {
|
|
10
|
+
init_esm_shims
|
|
11
|
+
} from "./chunk-DHET7RCE.js";
|
|
12
|
+
|
|
13
|
+
// src/cli/components/common/select-list.tsx
|
|
14
|
+
init_esm_shims();
|
|
15
|
+
import { useCallback } from "react";
|
|
16
|
+
import { Box, Text } from "ink";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
function SelectList({
|
|
19
|
+
items,
|
|
20
|
+
onSelect,
|
|
21
|
+
onCancel,
|
|
22
|
+
renderItem,
|
|
23
|
+
active
|
|
24
|
+
}) {
|
|
25
|
+
const handleEnter = useCallback(
|
|
26
|
+
(index) => {
|
|
27
|
+
if (items.length > 0 && items[index]) {
|
|
28
|
+
onSelect(items[index].value);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
[items, onSelect]
|
|
32
|
+
);
|
|
33
|
+
const { focusedIndex } = useKeyboardNavigation(
|
|
34
|
+
items.length,
|
|
35
|
+
{ onEnter: handleEnter, onEscape: onCancel },
|
|
36
|
+
{ vimKeys: false, active }
|
|
37
|
+
);
|
|
38
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: items.map((item, index) => {
|
|
39
|
+
const isFocused = index === focusedIndex;
|
|
40
|
+
const marker = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;
|
|
41
|
+
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
42
|
+
/* @__PURE__ */ jsxs(Text, { bold: isFocused, color: isFocused ? CLI_COLORS.PRIMARY : void 0, children: [
|
|
43
|
+
marker,
|
|
44
|
+
" "
|
|
45
|
+
] }),
|
|
46
|
+
renderItem ? renderItem(item, isFocused) : /* @__PURE__ */ jsx(Text, { bold: isFocused, color: isFocused ? CLI_COLORS.PRIMARY : void 0, children: item.label })
|
|
47
|
+
] }, index);
|
|
48
|
+
}) });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export {
|
|
52
|
+
SelectList
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-WF5PMBIR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/common/select-list.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Box, Text } from \"ink\";\nimport { CLI_COLORS, UI_SYMBOLS } from \"../../consts.js\";\nimport { useKeyboardNavigation } from \"../hooks/use-keyboard-navigation.js\";\n\nexport type SelectListItem<T> = {\n value: T;\n label: string;\n};\n\nexport type SelectListProps<T> = {\n items: SelectListItem<T>[];\n onSelect: (value: T) => void;\n onCancel?: () => void;\n renderItem?: (item: SelectListItem<T>, isFocused: boolean) => React.ReactNode;\n active?: boolean;\n};\n\nexport function SelectList<T>({\n items,\n onSelect,\n onCancel,\n renderItem,\n active,\n}: SelectListProps<T>): React.ReactElement {\n const handleEnter = useCallback(\n (index: number) => {\n if (items.length > 0 && items[index]) {\n onSelect(items[index].value);\n }\n },\n [items, onSelect],\n );\n\n const { focusedIndex } = useKeyboardNavigation(\n items.length,\n { onEnter: handleEnter, onEscape: onCancel },\n { vimKeys: false, active },\n );\n\n return (\n <Box flexDirection=\"column\">\n {items.map((item, index) => {\n const isFocused = index === focusedIndex;\n const marker = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;\n\n return (\n <Box key={index}>\n <Text bold={isFocused} color={isFocused ? CLI_COLORS.PRIMARY : undefined}>\n {marker}{\" \"}\n </Text>\n {renderItem ? (\n renderItem(item, isFocused)\n ) : (\n <Text bold={isFocused} color={isFocused ? CLI_COLORS.PRIMARY : undefined}>\n {item.label}\n </Text>\n )}\n </Box>\n );\n })}\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA,SAAgB,mBAAmB;AACnC,SAAS,KAAK,YAAY;AA+Cd,SAME,KANF;AA9BL,SAAS,WAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2C;AACzC,QAAM,cAAc;AAAA,IAClB,CAAC,UAAkB;AACjB,UAAI,MAAM,SAAS,KAAK,MAAM,KAAK,GAAG;AACpC,iBAAS,MAAM,KAAK,EAAE,KAAK;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,CAAC,OAAO,QAAQ;AAAA,EAClB;AAEA,QAAM,EAAE,aAAa,IAAI;AAAA,IACvB,MAAM;AAAA,IACN,EAAE,SAAS,aAAa,UAAU,SAAS;AAAA,IAC3C,EAAE,SAAS,OAAO,OAAO;AAAA,EAC3B;AAEA,SACE,oBAAC,OAAI,eAAc,UAChB,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAM,YAAY,UAAU;AAC5B,UAAM,SAAS,YAAY,WAAW,UAAU,WAAW;AAE3D,WACE,qBAAC,OACC;AAAA,2BAAC,QAAK,MAAM,WAAW,OAAO,YAAY,WAAW,UAAU,QAC5D;AAAA;AAAA,QAAQ;AAAA,SACX;AAAA,MACC,aACC,WAAW,MAAM,SAAS,IAE1B,oBAAC,QAAK,MAAM,WAAW,OAAO,YAAY,WAAW,UAAU,QAC5D,eAAK,OACR;AAAA,SATM,KAWV;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
loadConfigTypesDataInBackground,
|
|
8
8
|
regenerateConfigTypes,
|
|
9
9
|
resolveAuthor
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-CADG5WWP.js";
|
|
11
11
|
import {
|
|
12
12
|
BaseCommand,
|
|
13
13
|
EXIT_CODES
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FCF4WQEI.js";
|
|
15
15
|
import {
|
|
16
16
|
directoryExists,
|
|
17
17
|
ensureDir,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
getErrorMessage,
|
|
20
20
|
verbose,
|
|
21
21
|
writeFile
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
23
23
|
import {
|
|
24
24
|
CLI_BIN_NAME,
|
|
25
25
|
DEFAULT_VERSION,
|
|
@@ -339,4 +339,4 @@ export {
|
|
|
339
339
|
generateSkillRulesTs,
|
|
340
340
|
NewSkill
|
|
341
341
|
};
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
342
|
+
//# sourceMappingURL=chunk-X4RIMJNY.js.map
|
|
@@ -27,11 +27,11 @@ import {
|
|
|
27
27
|
addSource,
|
|
28
28
|
getSourceSummary,
|
|
29
29
|
removeSource
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-CADG5WWP.js";
|
|
31
31
|
import {
|
|
32
32
|
getErrorMessage,
|
|
33
33
|
verbose
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
35
35
|
import {
|
|
36
36
|
CLI_COLORS
|
|
37
37
|
} from "./chunk-EGMQ3SXN.js";
|
|
@@ -270,4 +270,4 @@ var StepSettings = ({
|
|
|
270
270
|
export {
|
|
271
271
|
StepSettings
|
|
272
272
|
};
|
|
273
|
-
//# sourceMappingURL=chunk-
|
|
273
|
+
//# sourceMappingURL=chunk-XB3TYSPL.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-AUNBGZS4.js";
|
|
8
8
|
import {
|
|
9
9
|
useWizardStore
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QOJAZI72.js";
|
|
11
11
|
import {
|
|
12
12
|
useMatrixStore
|
|
13
13
|
} from "./chunk-BKL3DF2Q.js";
|
|
@@ -111,4 +111,4 @@ var StackSelection = ({
|
|
|
111
111
|
export {
|
|
112
112
|
StackSelection
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-XMZNHLV3.js.map
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
Wizard
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UDAHHJIM.js";
|
|
5
|
+
import {
|
|
6
|
+
SelectList
|
|
7
|
+
} from "./chunk-WF5PMBIR.js";
|
|
8
|
+
import {
|
|
9
|
+
KEY_LABEL_ARROWS_VERT,
|
|
10
|
+
KEY_LABEL_ENTER,
|
|
11
|
+
KEY_LABEL_ESC
|
|
12
|
+
} from "./chunk-6VIOO74O.js";
|
|
5
13
|
import {
|
|
6
14
|
STATUS_MESSAGES,
|
|
7
15
|
SUCCESS_MESSAGES
|
|
@@ -21,7 +29,7 @@ import {
|
|
|
21
29
|
installPluginConfig,
|
|
22
30
|
loadProjectConfig,
|
|
23
31
|
loadSkillsMatrixFromSource
|
|
24
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-CADG5WWP.js";
|
|
25
33
|
import {
|
|
26
34
|
getSkill,
|
|
27
35
|
useMatrixStore
|
|
@@ -29,7 +37,7 @@ import {
|
|
|
29
37
|
import {
|
|
30
38
|
BaseCommand,
|
|
31
39
|
EXIT_CODES
|
|
32
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-FCF4WQEI.js";
|
|
33
41
|
import {
|
|
34
42
|
disableBuffering,
|
|
35
43
|
drainBuffer,
|
|
@@ -40,7 +48,7 @@ import {
|
|
|
40
48
|
settingsFileSchema,
|
|
41
49
|
warn,
|
|
42
50
|
warnUnknownFields
|
|
43
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-R3AR4VLZ.js";
|
|
44
52
|
import {
|
|
45
53
|
ASCII_LOGO,
|
|
46
54
|
CLAUDE_DIR,
|
|
@@ -57,9 +65,8 @@ import {
|
|
|
57
65
|
|
|
58
66
|
// src/cli/commands/init.tsx
|
|
59
67
|
init_esm_shims();
|
|
60
|
-
import { useState } from "react";
|
|
61
68
|
import { Flags } from "@oclif/core";
|
|
62
|
-
import { render, Box as Box2, Text as Text2, useApp
|
|
69
|
+
import { render, Box as Box2, Text as Text2, useApp } from "ink";
|
|
63
70
|
import os from "os";
|
|
64
71
|
import path2 from "path";
|
|
65
72
|
|
|
@@ -138,83 +145,51 @@ async function checkPermissions(projectRoot) {
|
|
|
138
145
|
|
|
139
146
|
// src/cli/commands/init.tsx
|
|
140
147
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
148
|
+
function clearTerminalOutput() {
|
|
149
|
+
process.stdout.write("\x1B[2J\x1B[H");
|
|
150
|
+
}
|
|
141
151
|
var DASHBOARD_OPTIONS = [
|
|
142
|
-
{ label: "Edit",
|
|
143
|
-
{ label: "Compile",
|
|
144
|
-
{ label: "Doctor",
|
|
145
|
-
{ label: "List",
|
|
152
|
+
{ label: "Edit", value: "edit" },
|
|
153
|
+
{ label: "Compile", value: "compile" },
|
|
154
|
+
{ label: "Doctor", value: "doctor" },
|
|
155
|
+
{ label: "List", value: "list" }
|
|
146
156
|
];
|
|
147
|
-
var Dashboard = ({
|
|
148
|
-
skillCount,
|
|
149
|
-
agentCount,
|
|
150
|
-
source,
|
|
151
|
-
mode,
|
|
152
|
-
onSelect,
|
|
153
|
-
onCancel
|
|
154
|
-
}) => {
|
|
157
|
+
var Dashboard = ({ onSelect, onCancel }) => {
|
|
155
158
|
const { exit } = useApp();
|
|
156
|
-
const [focusIndex, setFocusIndex] = useState(0);
|
|
157
|
-
useInput((_input, key) => {
|
|
158
|
-
if (key.escape) {
|
|
159
|
-
onCancel();
|
|
160
|
-
exit();
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
if (key.return) {
|
|
164
|
-
onSelect(DASHBOARD_OPTIONS[focusIndex].command);
|
|
165
|
-
exit();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
if (key.leftArrow) {
|
|
169
|
-
setFocusIndex((i) => i > 0 ? i - 1 : DASHBOARD_OPTIONS.length - 1);
|
|
170
|
-
}
|
|
171
|
-
if (key.rightArrow) {
|
|
172
|
-
setFocusIndex((i) => i < DASHBOARD_OPTIONS.length - 1 ? i + 1 : 0);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
159
|
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
|
|
176
160
|
/* @__PURE__ */ jsx2(Text2, { bold: true, children: DEFAULT_BRANDING.NAME }),
|
|
177
161
|
/* @__PURE__ */ jsx2(Text2, { children: " " }),
|
|
178
|
-
/* @__PURE__ */
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
" Mode: ",
|
|
190
|
-
mode === "plugin" ? "Plugin" : "Local"
|
|
191
|
-
] }),
|
|
192
|
-
source && /* @__PURE__ */ jsxs2(Text2, { children: [
|
|
193
|
-
" Source: ",
|
|
194
|
-
source
|
|
195
|
-
] }),
|
|
196
|
-
/* @__PURE__ */ jsx2(Text2, { children: " " }),
|
|
197
|
-
/* @__PURE__ */ jsxs2(Box2, { children: [
|
|
198
|
-
/* @__PURE__ */ jsx2(Text2, { children: " " }),
|
|
199
|
-
DASHBOARD_OPTIONS.map((option, index) => /* @__PURE__ */ jsx2(Box2, { marginRight: 1, children: /* @__PURE__ */ jsxs2(
|
|
200
|
-
Text2,
|
|
201
|
-
{
|
|
202
|
-
color: index === focusIndex ? CLI_COLORS.FOCUS : void 0,
|
|
203
|
-
bold: index === focusIndex,
|
|
204
|
-
children: [
|
|
205
|
-
"[",
|
|
206
|
-
option.label,
|
|
207
|
-
"]"
|
|
208
|
-
]
|
|
162
|
+
/* @__PURE__ */ jsx2(
|
|
163
|
+
SelectList,
|
|
164
|
+
{
|
|
165
|
+
items: DASHBOARD_OPTIONS,
|
|
166
|
+
onSelect: (command) => {
|
|
167
|
+
onSelect(command);
|
|
168
|
+
exit();
|
|
169
|
+
},
|
|
170
|
+
onCancel: () => {
|
|
171
|
+
onCancel();
|
|
172
|
+
exit();
|
|
209
173
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
/* @__PURE__ */ jsx2(Text2, {
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
/* @__PURE__ */ jsx2(Text2, { children: " " }),
|
|
177
|
+
/* @__PURE__ */ jsxs2(Text2, { dimColor: true, children: [
|
|
178
|
+
" ",
|
|
179
|
+
KEY_LABEL_ARROWS_VERT,
|
|
180
|
+
" Navigate ",
|
|
181
|
+
" ",
|
|
182
|
+
KEY_LABEL_ENTER,
|
|
183
|
+
" Confirm ",
|
|
184
|
+
" ",
|
|
185
|
+
KEY_LABEL_ESC,
|
|
186
|
+
" Exit"
|
|
187
|
+
] })
|
|
213
188
|
] });
|
|
214
189
|
};
|
|
215
190
|
var GLOBAL_CONFIG_OPTIONS = [
|
|
216
|
-
{ label: "Edit global installation",
|
|
217
|
-
{ label: "Create new project installation",
|
|
191
|
+
{ label: "Edit global installation", value: "edit-global" },
|
|
192
|
+
{ label: "Create new project installation", value: "create-project" }
|
|
218
193
|
];
|
|
219
194
|
var GlobalConfigPrompt = ({
|
|
220
195
|
globalConfigDir,
|
|
@@ -222,48 +197,38 @@ var GlobalConfigPrompt = ({
|
|
|
222
197
|
onCancel
|
|
223
198
|
}) => {
|
|
224
199
|
const { exit } = useApp();
|
|
225
|
-
const [focusIndex, setFocusIndex] = useState(0);
|
|
226
|
-
useInput((_input, key) => {
|
|
227
|
-
if (key.escape) {
|
|
228
|
-
onCancel();
|
|
229
|
-
exit();
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
if (key.return) {
|
|
233
|
-
onSelect(GLOBAL_CONFIG_OPTIONS[focusIndex].choice);
|
|
234
|
-
exit();
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
if (key.leftArrow) {
|
|
238
|
-
setFocusIndex((i) => i > 0 ? i - 1 : GLOBAL_CONFIG_OPTIONS.length - 1);
|
|
239
|
-
}
|
|
240
|
-
if (key.rightArrow) {
|
|
241
|
-
setFocusIndex((i) => i < GLOBAL_CONFIG_OPTIONS.length - 1 ? i + 1 : 0);
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
200
|
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
|
|
245
201
|
/* @__PURE__ */ jsxs2(Text2, { children: [
|
|
246
202
|
"A global installation was found at ",
|
|
247
203
|
globalConfigDir
|
|
248
204
|
] }),
|
|
249
|
-
/* @__PURE__ */ jsx2(Text2, { children: "What would you like to do?" }),
|
|
250
205
|
/* @__PURE__ */ jsx2(Text2, { children: " " }),
|
|
251
|
-
/* @__PURE__ */
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
{
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
]
|
|
206
|
+
/* @__PURE__ */ jsx2(
|
|
207
|
+
SelectList,
|
|
208
|
+
{
|
|
209
|
+
items: GLOBAL_CONFIG_OPTIONS,
|
|
210
|
+
onSelect: (choice) => {
|
|
211
|
+
onSelect(choice);
|
|
212
|
+
exit();
|
|
213
|
+
},
|
|
214
|
+
onCancel: () => {
|
|
215
|
+
onCancel();
|
|
216
|
+
exit();
|
|
263
217
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
/* @__PURE__ */ jsx2(Text2, {
|
|
218
|
+
}
|
|
219
|
+
),
|
|
220
|
+
/* @__PURE__ */ jsx2(Text2, { children: " " }),
|
|
221
|
+
/* @__PURE__ */ jsxs2(Text2, { dimColor: true, children: [
|
|
222
|
+
" ",
|
|
223
|
+
KEY_LABEL_ARROWS_VERT,
|
|
224
|
+
" Navigate ",
|
|
225
|
+
" ",
|
|
226
|
+
KEY_LABEL_ENTER,
|
|
227
|
+
" Confirm ",
|
|
228
|
+
" ",
|
|
229
|
+
KEY_LABEL_ESC,
|
|
230
|
+
" Exit"
|
|
231
|
+
] })
|
|
267
232
|
] });
|
|
268
233
|
};
|
|
269
234
|
async function getDashboardData(projectDir) {
|
|
@@ -302,10 +267,6 @@ async function showDashboard(projectDir, log) {
|
|
|
302
267
|
/* @__PURE__ */ jsx2(
|
|
303
268
|
Dashboard,
|
|
304
269
|
{
|
|
305
|
-
skillCount: data.skillCount,
|
|
306
|
-
agentCount: data.agentCount,
|
|
307
|
-
source: data.source,
|
|
308
|
-
mode: data.mode,
|
|
309
270
|
onSelect: (command) => {
|
|
310
271
|
selectedCommand = command;
|
|
311
272
|
},
|
|
@@ -316,6 +277,7 @@ async function showDashboard(projectDir, log) {
|
|
|
316
277
|
)
|
|
317
278
|
);
|
|
318
279
|
await waitUntilExit();
|
|
280
|
+
clearTerminalOutput();
|
|
319
281
|
return selectedCommand;
|
|
320
282
|
}
|
|
321
283
|
var Init = class _Init extends BaseCommand {
|
|
@@ -374,6 +336,7 @@ var Init = class _Init extends BaseCommand {
|
|
|
374
336
|
)
|
|
375
337
|
);
|
|
376
338
|
await waitForPrompt();
|
|
339
|
+
clearTerminalOutput();
|
|
377
340
|
if (globalChoice === "edit-global") {
|
|
378
341
|
const selectedCommand = await showDashboard(os.homedir(), (msg) => this.log(msg));
|
|
379
342
|
if (selectedCommand) {
|
|
@@ -592,4 +555,4 @@ export {
|
|
|
592
555
|
showDashboard,
|
|
593
556
|
Init
|
|
594
557
|
};
|
|
595
|
-
//# sourceMappingURL=chunk-
|
|
558
|
+
//# sourceMappingURL=chunk-XYRVAEI6.js.map
|