@agents-inc/cli 0.82.0 → 0.82.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{chunk-J3ZWLR5Z.js → chunk-35ESNSF5.js} +4 -4
  3. package/dist/{chunk-2E25UBLM.js → chunk-3BDCU5QB.js} +3 -3
  4. package/dist/{chunk-XNHMUPIJ.js → chunk-3MXMYHO3.js} +17 -17
  5. package/dist/{chunk-XNHMUPIJ.js.map → chunk-3MXMYHO3.js.map} +1 -1
  6. package/dist/{chunk-DWIB547V.js → chunk-3PB7KSF7.js} +4 -4
  7. package/dist/{chunk-LKDQLCS3.js → chunk-5AHKXBNC.js} +2 -2
  8. package/dist/{chunk-TJ62CLXB.js → chunk-5BRHJD7Q.js} +2 -2
  9. package/dist/{chunk-K2RQU5HR.js → chunk-63E7LOLB.js} +2 -2
  10. package/dist/{chunk-SXGCCUTH.js → chunk-AAW3PYXA.js} +10 -2
  11. package/dist/chunk-AAW3PYXA.js.map +1 -0
  12. package/dist/{chunk-W642FYQJ.js → chunk-AD2UT2TN.js} +2 -2
  13. package/dist/{chunk-L7SKXTUO.js → chunk-C4I4Q33M.js} +2 -2
  14. package/dist/{chunk-EB5E7IKL.js → chunk-FBLRTXEA.js} +4 -4
  15. package/dist/{chunk-AW7LLMZZ.js → chunk-FIXWR56O.js} +2 -2
  16. package/dist/{chunk-WO433W2G.js → chunk-FS4YWW36.js} +2 -2
  17. package/dist/{chunk-RLKRDDJD.js → chunk-GEU62YD2.js} +2 -2
  18. package/dist/{chunk-Y7GAKUM7.js → chunk-IMO6EQKT.js} +2 -2
  19. package/dist/{chunk-BFLAAMMA.js → chunk-IMP35ETG.js} +17 -17
  20. package/dist/chunk-IMP35ETG.js.map +1 -0
  21. package/dist/{chunk-UXIZK65O.js → chunk-JQDOUNHF.js} +23 -15
  22. package/dist/chunk-JQDOUNHF.js.map +1 -0
  23. package/dist/{chunk-WVLBGBRU.js → chunk-K76AXQ7A.js} +3 -3
  24. package/dist/{chunk-MPTXU4VS.js → chunk-KB6LCTCD.js} +16 -8
  25. package/dist/chunk-KB6LCTCD.js.map +1 -0
  26. package/dist/{chunk-JQNN2SVG.js → chunk-KEW246HB.js} +2 -2
  27. package/dist/{chunk-PY7C6CUI.js → chunk-KZLGBHDZ.js} +3 -3
  28. package/dist/{chunk-HWDEPKIR.js → chunk-LOB3OU2D.js} +5 -5
  29. package/dist/chunk-LOB3OU2D.js.map +1 -0
  30. package/dist/{chunk-2GI4NKKO.js → chunk-LQ3EJBUN.js} +6 -3
  31. package/dist/chunk-LQ3EJBUN.js.map +1 -0
  32. package/dist/{chunk-A5MK4XJB.js → chunk-M2CS5EOK.js} +5 -5
  33. package/dist/{chunk-WYODBBUA.js → chunk-RTXJLZ7A.js} +4 -4
  34. package/dist/commands/build/plugins.js +4 -4
  35. package/dist/commands/build/stack.js +4 -4
  36. package/dist/commands/compile.js +4 -4
  37. package/dist/commands/config/index.js +4 -4
  38. package/dist/commands/config/path.js +3 -3
  39. package/dist/commands/config/show.js +4 -4
  40. package/dist/commands/diff.js +3 -3
  41. package/dist/commands/doctor.js +3 -3
  42. package/dist/commands/edit.js +68 -20
  43. package/dist/commands/edit.js.map +1 -1
  44. package/dist/commands/eject.js +3 -3
  45. package/dist/commands/import/skill.js +3 -3
  46. package/dist/commands/info.js +3 -3
  47. package/dist/commands/init.js +19 -19
  48. package/dist/commands/list.js +3 -3
  49. package/dist/commands/new/agent.js +4 -4
  50. package/dist/commands/new/marketplace.js +4 -4
  51. package/dist/commands/new/skill.js +4 -4
  52. package/dist/commands/outdated.js +3 -3
  53. package/dist/commands/search.js +3 -3
  54. package/dist/commands/uninstall.js +3 -3
  55. package/dist/commands/update.js +4 -4
  56. package/dist/commands/validate.js +3 -3
  57. package/dist/components/wizard/category-grid.js +2 -2
  58. package/dist/components/wizard/category-grid.test.js +8 -8
  59. package/dist/components/wizard/domain-selection.js +6 -6
  60. package/dist/components/wizard/help-modal.js +8 -1
  61. package/dist/components/wizard/source-grid.js +2 -2
  62. package/dist/components/wizard/source-grid.test.js +8 -8
  63. package/dist/components/wizard/stack-selection.js +5 -5
  64. package/dist/components/wizard/step-agents.js +6 -6
  65. package/dist/components/wizard/step-agents.test.js +9 -9
  66. package/dist/components/wizard/step-build.js +6 -6
  67. package/dist/components/wizard/step-build.test.js +9 -9
  68. package/dist/components/wizard/step-confirm.js +3 -3
  69. package/dist/components/wizard/step-confirm.test.js +7 -7
  70. package/dist/components/wizard/step-settings.js +4 -4
  71. package/dist/components/wizard/step-settings.test.js +7 -7
  72. package/dist/components/wizard/step-sources.js +6 -6
  73. package/dist/components/wizard/step-sources.test.js +9 -9
  74. package/dist/components/wizard/step-stack.js +6 -6
  75. package/dist/components/wizard/step-stack.test.js +7 -7
  76. package/dist/components/wizard/wizard-layout.js +7 -7
  77. package/dist/components/wizard/wizard.js +18 -18
  78. package/dist/config-exports.js +1 -1
  79. package/dist/hooks/init.js +19 -19
  80. package/dist/{source-loader-V5MKKNZF.js → source-loader-FMDHHYDQ.js} +4 -4
  81. package/dist/{source-manager-S64CYXPA.js → source-manager-YMJ4Z5UG.js} +4 -4
  82. package/dist/stores/wizard-store.js +4 -4
  83. package/dist/stores/wizard-store.test.js +31 -7
  84. package/dist/stores/wizard-store.test.js.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/chunk-2GI4NKKO.js.map +0 -1
  87. package/dist/chunk-BFLAAMMA.js.map +0 -1
  88. package/dist/chunk-HWDEPKIR.js.map +0 -1
  89. package/dist/chunk-MPTXU4VS.js.map +0 -1
  90. package/dist/chunk-SXGCCUTH.js.map +0 -1
  91. package/dist/chunk-UXIZK65O.js.map +0 -1
  92. /package/dist/{chunk-J3ZWLR5Z.js.map → chunk-35ESNSF5.js.map} +0 -0
  93. /package/dist/{chunk-2E25UBLM.js.map → chunk-3BDCU5QB.js.map} +0 -0
  94. /package/dist/{chunk-DWIB547V.js.map → chunk-3PB7KSF7.js.map} +0 -0
  95. /package/dist/{chunk-LKDQLCS3.js.map → chunk-5AHKXBNC.js.map} +0 -0
  96. /package/dist/{chunk-TJ62CLXB.js.map → chunk-5BRHJD7Q.js.map} +0 -0
  97. /package/dist/{chunk-K2RQU5HR.js.map → chunk-63E7LOLB.js.map} +0 -0
  98. /package/dist/{chunk-W642FYQJ.js.map → chunk-AD2UT2TN.js.map} +0 -0
  99. /package/dist/{chunk-L7SKXTUO.js.map → chunk-C4I4Q33M.js.map} +0 -0
  100. /package/dist/{chunk-EB5E7IKL.js.map → chunk-FBLRTXEA.js.map} +0 -0
  101. /package/dist/{chunk-AW7LLMZZ.js.map → chunk-FIXWR56O.js.map} +0 -0
  102. /package/dist/{chunk-WO433W2G.js.map → chunk-FS4YWW36.js.map} +0 -0
  103. /package/dist/{chunk-RLKRDDJD.js.map → chunk-GEU62YD2.js.map} +0 -0
  104. /package/dist/{chunk-Y7GAKUM7.js.map → chunk-IMO6EQKT.js.map} +0 -0
  105. /package/dist/{chunk-WVLBGBRU.js.map → chunk-K76AXQ7A.js.map} +0 -0
  106. /package/dist/{chunk-JQNN2SVG.js.map → chunk-KEW246HB.js.map} +0 -0
  107. /package/dist/{chunk-PY7C6CUI.js.map → chunk-KZLGBHDZ.js.map} +0 -0
  108. /package/dist/{chunk-A5MK4XJB.js.map → chunk-M2CS5EOK.js.map} +0 -0
  109. /package/dist/{chunk-WYODBBUA.js.map → chunk-RTXJLZ7A.js.map} +0 -0
  110. /package/dist/{source-loader-V5MKKNZF.js.map → source-loader-FMDHHYDQ.js.map} +0 -0
  111. /package/dist/{source-manager-S64CYXPA.js.map → source-manager-YMJ4Z5UG.js.map} +0 -0
@@ -1,34 +1,34 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  WizardLayout
4
- } from "./chunk-HWDEPKIR.js";
4
+ } from "./chunk-LOB3OU2D.js";
5
5
  import {
6
6
  StepSettings
7
- } from "./chunk-LKDQLCS3.js";
7
+ } from "./chunk-5AHKXBNC.js";
8
8
  import {
9
9
  StepSources
10
- } from "./chunk-DWIB547V.js";
10
+ } from "./chunk-3PB7KSF7.js";
11
11
  import {
12
12
  StepStack
13
- } from "./chunk-K2RQU5HR.js";
13
+ } from "./chunk-63E7LOLB.js";
14
14
  import {
15
15
  StepAgents
16
- } from "./chunk-J3ZWLR5Z.js";
16
+ } from "./chunk-35ESNSF5.js";
17
17
  import {
18
18
  StepBuild
19
- } from "./chunk-A5MK4XJB.js";
19
+ } from "./chunk-M2CS5EOK.js";
20
20
  import {
21
21
  StepConfirm
22
- } from "./chunk-L7SKXTUO.js";
22
+ } from "./chunk-C4I4Q33M.js";
23
23
  import {
24
24
  DomainSelection
25
- } from "./chunk-WYODBBUA.js";
25
+ } from "./chunk-RTXJLZ7A.js";
26
26
  import {
27
27
  getStackName
28
- } from "./chunk-WO433W2G.js";
28
+ } from "./chunk-FS4YWW36.js";
29
29
  import {
30
30
  useWizardStore
31
- } from "./chunk-2GI4NKKO.js";
31
+ } from "./chunk-LQ3EJBUN.js";
32
32
  import {
33
33
  cliTheme
34
34
  } from "./chunk-HEQVUIHQ.js";
@@ -42,11 +42,11 @@ import {
42
42
  import {
43
43
  resolveAlias,
44
44
  validateSelection
45
- } from "./chunk-MPTXU4VS.js";
45
+ } from "./chunk-KB6LCTCD.js";
46
46
  import {
47
47
  findStack,
48
48
  matrix
49
- } from "./chunk-XNHMUPIJ.js";
49
+ } from "./chunk-3MXMYHO3.js";
50
50
  import {
51
51
  CLI_COLORS
52
52
  } from "./chunk-6PGL2XMY.js";
@@ -71,7 +71,8 @@ function useWizardInitialization({
71
71
  installedSkillConfigs,
72
72
  installedAgentConfigs,
73
73
  lockedSkillIds,
74
- lockedAgentNames
74
+ lockedAgentNames,
75
+ isEditingFromGlobalScope
75
76
  }) {
76
77
  const initialized = useRef(false);
77
78
  if (!initialized.current) {
@@ -97,6 +98,9 @@ function useWizardInitialization({
97
98
  ...lockedAgentNames?.length && { lockedAgentNames }
98
99
  });
99
100
  }
101
+ if (isEditingFromGlobalScope) {
102
+ useWizardStore.setState({ isEditingFromGlobalScope });
103
+ }
100
104
  }
101
105
  }
102
106
 
@@ -164,6 +168,7 @@ var Wizard = ({
164
168
  installedAgentConfigs,
165
169
  lockedSkillIds,
166
170
  lockedAgentNames,
171
+ isEditingFromGlobalScope,
167
172
  projectDir,
168
173
  startupMessages
169
174
  }) => {
@@ -182,7 +187,8 @@ var Wizard = ({
182
187
  installedSkillConfigs,
183
188
  installedAgentConfigs,
184
189
  lockedSkillIds,
185
- lockedAgentNames
190
+ lockedAgentNames,
191
+ isEditingFromGlobalScope
186
192
  });
187
193
  const buildStepProps = useBuildStepProps({ store, installedSkillIds });
188
194
  useInput((input, key) => {
@@ -211,6 +217,7 @@ var Wizard = ({
211
217
  return;
212
218
  }
213
219
  if (isHotkey(input, HOTKEY_SCOPE) && store.step === "build") {
220
+ if (store.isEditingFromGlobalScope) return;
214
221
  const focused = store.focusedSkillId;
215
222
  if (focused) {
216
223
  store.toggleSkillScope(focused);
@@ -218,6 +225,7 @@ var Wizard = ({
218
225
  return;
219
226
  }
220
227
  if (isHotkey(input, HOTKEY_SCOPE) && store.step === "agents") {
228
+ if (store.isEditingFromGlobalScope) return;
221
229
  const focused = store.focusedAgentId;
222
230
  if (focused) {
223
231
  store.toggleAgentScope(focused);
@@ -334,4 +342,4 @@ var Wizard = ({
334
342
  export {
335
343
  Wizard
336
344
  };
337
- //# sourceMappingURL=chunk-UXIZK65O.js.map
345
+ //# sourceMappingURL=chunk-JQDOUNHF.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 { DomainSelection } from \"./domain-selection.js\";\nimport { resolveAlias, validateSelection } from \"../../lib/matrix/index.js\";\nimport { matrix, findStack } from \"../../lib/matrix/matrix-provider.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 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 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 isEditingFromGlobalScope?: boolean;\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 logo,\n initialStep,\n initialDomains,\n initialAgents,\n installedSkillIds,\n installedSkillConfigs,\n installedAgentConfigs,\n lockedSkillIds,\n lockedAgentNames,\n isEditingFromGlobalScope,\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 isEditingFromGlobalScope,\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 // Steps with their own ESC handling (via useInput in child components):\n // - \"stack\": StackSelection handles ESC via onCancel prop\n // - \"domains\": DomainSelection handles ESC via CheckboxGrid onBack\n // - \"build\": StepBuild handles ESC via its own useInput\n // - \"sources\": StepSources handles ESC via onBack prop\n // - \"confirm\": StepConfirm handles ESC via onBack prop\n // - \"agents\": StepAgents handles ESC via its own useInput\n // All steps handle their own ESC, so this is a no-op.\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 if (store.isEditingFromGlobalScope) return;\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 if (store.isEditingFromGlobalScope) return;\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 = findStack(store.selectedStackId);\n if (!stack) {\n throw new Error(`Stack not found: ${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 \"domains\":\n return <DomainSelection />;\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 version={version} logo={logo} startupMessages={startupMessages}>\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 isEditingFromGlobalScope?: boolean;\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 isEditingFromGlobalScope,\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, currentDomainIndex: 0 });\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 if (isEditingFromGlobalScope) {\n useWizardStore.setState({ isEditingFromGlobalScope });\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 { matrix } from \"../../lib/matrix/matrix-provider.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 = matrix.categories[categoryId];\n const exclusive = cat?.exclusive ?? true;\n store.toggleTechnology(domain, categoryId, techId, exclusive);\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 filterIncompatible: store.filterIncompatible,\n installedSkillIds,\n onToggle,\n onToggleLabels: store.toggleShowLabels,\n onToggleFilterIncompatible: store.toggleFilterIncompatible,\n onContinue,\n onBack,\n };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-4QA5TIBU.js";
8
8
  import {
9
9
  useWizardStore
10
- } from "./chunk-2GI4NKKO.js";
10
+ } from "./chunk-LQ3EJBUN.js";
11
11
  import {
12
12
  matrix
13
- } from "./chunk-XNHMUPIJ.js";
13
+ } from "./chunk-3MXMYHO3.js";
14
14
  import {
15
15
  CLI_COLORS,
16
16
  DEFAULT_SCRATCH_DOMAINS,
@@ -191,4 +191,4 @@ var StackSelection = ({ onCancel }) => {
191
191
  export {
192
192
  StackSelection
193
193
  };
194
- //# sourceMappingURL=chunk-WVLBGBRU.js.map
194
+ //# sourceMappingURL=chunk-K76AXQ7A.js.map
@@ -14,7 +14,7 @@ import {
14
14
  matrix,
15
15
  typedEntries,
16
16
  typedKeys
17
- } from "./chunk-XNHMUPIJ.js";
17
+ } from "./chunk-3MXMYHO3.js";
18
18
  import {
19
19
  SKILL_ID_PATTERN,
20
20
  agentFrontmatterValidationSchema,
@@ -94,7 +94,7 @@ import {
94
94
  defaultCategories,
95
95
  defaultRules,
96
96
  defaultStacks
97
- } from "./chunk-BFLAAMMA.js";
97
+ } from "./chunk-IMP35ETG.js";
98
98
  import {
99
99
  init_esm_shims
100
100
  } from "./chunk-DHET7RCE.js";
@@ -587,18 +587,26 @@ function splitConfigByScope(config) {
587
587
  for (const agent of globalAgents) {
588
588
  const agentStack = config.stack[agent.name];
589
589
  if (agentStack) {
590
- const filtered = {};
590
+ const globalFiltered = {};
591
+ const projectFiltered = {};
591
592
  for (const [category, assignments] of typedEntries(
592
593
  agentStack
593
594
  )) {
594
595
  if (!assignments) continue;
595
596
  const globalOnly = assignments.filter((a) => globalSkillIds.has(a.id));
597
+ const projectOnly = assignments.filter((a) => !globalSkillIds.has(a.id));
596
598
  if (globalOnly.length > 0) {
597
- filtered[category] = globalOnly;
599
+ globalFiltered[category] = globalOnly;
598
600
  }
601
+ if (projectOnly.length > 0) {
602
+ projectFiltered[category] = projectOnly;
603
+ }
604
+ }
605
+ if (typedKeys(globalFiltered).length > 0) {
606
+ globalStack[agent.name] = globalFiltered;
599
607
  }
600
- if (typedKeys(filtered).length > 0) {
601
- globalStack[agent.name] = filtered;
608
+ if (typedKeys(projectFiltered).length > 0) {
609
+ projectStack[agent.name] = projectFiltered;
602
610
  }
603
611
  }
604
612
  }
@@ -996,7 +1004,7 @@ function loadConfigTypesDataInBackground(sourceFlag, projectDir) {
996
1004
  if (!await directoryExists(claudeSrcDir)) {
997
1005
  throw new Error(`${CLAUDE_SRC_DIR}/ not found \u2014 run '${CLI_BIN_NAME} init' first`);
998
1006
  }
999
- const { loadSkillsMatrixFromSource: loadSkillsMatrixFromSource2 } = await import("./source-loader-V5MKKNZF.js");
1007
+ const { loadSkillsMatrixFromSource: loadSkillsMatrixFromSource2 } = await import("./source-loader-FMDHHYDQ.js");
1000
1008
  const { loadAllAgents: loadAllAgents2 } = await import("./loader-4XPDVCZK.js");
1001
1009
  const sourceResult = await loadSkillsMatrixFromSource2({
1002
1010
  sourceFlag,
@@ -5611,4 +5619,4 @@ export {
5611
5619
  validateAllPlugins,
5612
5620
  printPluginValidationResult
5613
5621
  };
5614
- //# sourceMappingURL=chunk-MPTXU4VS.js.map
5622
+ //# sourceMappingURL=chunk-KB6LCTCD.js.map