@agents-inc/cli 0.60.1 → 0.64.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 +48 -0
- package/README.md +23 -172
- package/dist/{chunk-G6WHCALR.js → chunk-3YNT3NX3.js} +13 -11
- package/dist/chunk-3YNT3NX3.js.map +1 -0
- package/dist/{chunk-WF6RM73R.js → chunk-4C7CSZC5.js} +27 -149
- package/dist/chunk-4C7CSZC5.js.map +1 -0
- package/dist/{chunk-EMIUPGPL.js → chunk-4KVBH2X4.js} +33 -14
- package/dist/chunk-4KVBH2X4.js.map +1 -0
- package/dist/{chunk-KIWFEBKH.js → chunk-52THXN5G.js} +14 -5
- package/dist/chunk-52THXN5G.js.map +1 -0
- package/dist/{chunk-TZXYBG3R.js → chunk-53URJ5XK.js} +448 -153
- package/dist/chunk-53URJ5XK.js.map +1 -0
- package/dist/{chunk-MKCHLXMY.js → chunk-6DEK3TDF.js} +10 -10
- package/dist/chunk-6DEK3TDF.js.map +1 -0
- package/dist/{chunk-SDKCQXWE.js → chunk-6IK2TCK7.js} +13 -6
- package/dist/chunk-6IK2TCK7.js.map +1 -0
- package/dist/chunk-6VIOO74O.js +51 -0
- package/dist/chunk-6VIOO74O.js.map +1 -0
- package/dist/{chunk-52XO4ULK.js → chunk-7DI3HGKL.js} +32 -14
- package/dist/chunk-7DI3HGKL.js.map +1 -0
- package/dist/{chunk-MGNYPVOJ.js → chunk-AQYAVLZK.js} +2 -2
- package/dist/{chunk-BNQ5O6LE.js → chunk-AUNBGZS4.js} +2 -2
- package/dist/chunk-BGPGQF35.js +248 -0
- package/dist/chunk-BGPGQF35.js.map +1 -0
- package/dist/chunk-BKL3DF2Q.js +45 -0
- package/dist/chunk-BKL3DF2Q.js.map +1 -0
- package/dist/{chunk-AX3SZZWA.js → chunk-BKTPEATV.js} +13 -6
- package/dist/chunk-BKTPEATV.js.map +1 -0
- package/dist/{chunk-H7WJK7NJ.js → chunk-CKPJTMNC.js} +13 -6
- package/dist/chunk-CKPJTMNC.js.map +1 -0
- package/dist/{chunk-MR6OBL3B.js → chunk-CXRVM7BA.js} +2 -4
- package/dist/chunk-CXRVM7BA.js.map +1 -0
- package/dist/{chunk-VR3CDXDT.js → chunk-EE5EPS32.js} +2 -2
- package/dist/{chunk-6OWHQ7HM.js → chunk-EGMQ3SXN.js} +2 -11
- package/dist/{chunk-6OWHQ7HM.js.map → chunk-EGMQ3SXN.js.map} +1 -1
- package/dist/{chunk-BMJZBLP7.js → chunk-EZ35IPXZ.js} +10 -7
- package/dist/chunk-EZ35IPXZ.js.map +1 -0
- package/dist/{chunk-OCEFD7V6.js → chunk-F3REOP7N.js} +3 -3
- package/dist/{chunk-C577AJE7.js → chunk-FGLUQSVU.js} +3 -3
- package/dist/{chunk-SEJF7CGJ.js → chunk-J4POGAJF.js} +24 -24
- package/dist/chunk-J4POGAJF.js.map +1 -0
- package/dist/{chunk-O6BA7Q2B.js → chunk-KFDTVSIC.js} +18 -8
- package/dist/chunk-KFDTVSIC.js.map +1 -0
- package/dist/{chunk-LWXRUR6B.js → chunk-LMZXL5RQ.js} +2 -2
- package/dist/{chunk-LWXRUR6B.js.map → chunk-LMZXL5RQ.js.map} +1 -1
- package/dist/{chunk-7FMEMXJ4.js → chunk-MOMI77PL.js} +100 -59
- package/dist/chunk-MOMI77PL.js.map +1 -0
- package/dist/{chunk-BFD5NZQ4.js → chunk-MVYJVKVT.js} +19 -11
- package/dist/chunk-MVYJVKVT.js.map +1 -0
- package/dist/{chunk-X5EG4EFP.js → chunk-MWGDG4QN.js} +2 -2
- package/dist/{chunk-TGLRDEEL.js → chunk-O2HK3NTG.js} +10 -6
- package/dist/chunk-O2HK3NTG.js.map +1 -0
- package/dist/{chunk-6G3KZSO4.js → chunk-OORWBS6F.js} +45 -52
- package/dist/chunk-OORWBS6F.js.map +1 -0
- package/dist/{chunk-CIG7IKX3.js → chunk-OV5UJWS5.js} +4 -4
- package/dist/{chunk-RO6LX3UV.js → chunk-R46CB36B.js} +5 -5
- package/dist/{chunk-52M2XF3W.js → chunk-RG3KDXMR.js} +16 -8
- package/dist/chunk-RG3KDXMR.js.map +1 -0
- package/dist/{chunk-MMFQNJPE.js → chunk-SXGBPQY6.js} +3 -3
- package/dist/chunk-SXGBPQY6.js.map +1 -0
- package/dist/{chunk-XUDTFI4M.js → chunk-T5DJCIUP.js} +2 -2
- package/dist/{chunk-AJJJE7F7.js → chunk-TQLDQ3XZ.js} +2 -2
- package/dist/{chunk-SZRK3VOR.js → chunk-WSMQ5GAP.js} +33 -21
- package/dist/chunk-WSMQ5GAP.js.map +1 -0
- package/dist/{chunk-WYVDNGJB.js → chunk-XMLCXRTS.js} +3 -3
- package/dist/{chunk-K6OLORQL.js → chunk-YEGPTBX5.js} +4 -4
- package/dist/{chunk-YHCYKUA3.js → chunk-ZFY5EMDV.js} +5 -5
- package/dist/{chunk-BKJHAJQW.js → chunk-ZYUASJUN.js} +7 -4
- package/dist/chunk-ZYUASJUN.js.map +1 -0
- package/dist/commands/build/marketplace.js +4 -4
- package/dist/commands/build/plugins.js +7 -6
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +7 -6
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +79 -138
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/index.js +7 -6
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/path.js +6 -5
- package/dist/commands/config/path.js.map +1 -1
- package/dist/commands/config/show.js +7 -6
- package/dist/commands/diff.js +6 -5
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +11 -15
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +63 -69
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +13 -13
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +7 -6
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +14 -16
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +32 -30
- package/dist/commands/list.js +6 -5
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new/agent.js +7 -6
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/marketplace.js +28 -11
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/new/skill.js +7 -6
- package/dist/commands/outdated.js +6 -5
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +13 -11
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +9 -10
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +12 -8
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +20 -42
- package/dist/commands/validate.js.map +1 -1
- package/dist/components/skill-search/skill-search.js +4 -3
- package/dist/components/wizard/category-grid.js +5 -3
- package/dist/components/wizard/category-grid.test.js +242 -194
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/checkbox-grid.js +5 -5
- package/dist/components/wizard/checkbox-grid.test.js +5 -5
- package/dist/components/wizard/domain-selection.js +12 -11
- package/dist/components/wizard/help-modal.js +3 -2
- package/dist/components/wizard/menu-item.js +1 -1
- package/dist/components/wizard/search-modal.js +3 -2
- 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/section-progress.js +2 -2
- package/dist/components/wizard/section-progress.test.js +3 -3
- package/dist/components/wizard/section-progress.test.js.map +1 -1
- package/dist/components/wizard/selection-card.js +2 -2
- package/dist/components/wizard/source-grid.js +6 -4
- package/dist/components/wizard/source-grid.test.js +65 -40
- package/dist/components/wizard/source-grid.test.js.map +1 -1
- package/dist/components/wizard/stack-selection.js +9 -8
- package/dist/components/wizard/step-agents.js +11 -10
- package/dist/components/wizard/step-agents.test.js +28 -25
- package/dist/components/wizard/step-agents.test.js.map +1 -1
- package/dist/components/wizard/step-build.js +12 -10
- package/dist/components/wizard/step-build.test.js +28 -34
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +6 -4
- package/dist/components/wizard/step-confirm.test.js +11 -15
- package/dist/components/wizard/step-confirm.test.js.map +1 -1
- package/dist/components/wizard/step-refine.js +3 -2
- package/dist/components/wizard/step-refine.test.js +3 -2
- package/dist/components/wizard/step-refine.test.js.map +1 -1
- package/dist/components/wizard/step-settings.js +10 -8
- package/dist/components/wizard/step-settings.test.js +17 -13
- package/dist/components/wizard/step-settings.test.js.map +1 -1
- package/dist/components/wizard/step-sources.js +13 -11
- package/dist/components/wizard/step-sources.test.js +17 -14
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +15 -14
- package/dist/components/wizard/step-stack.test.js +42 -38
- package/dist/components/wizard/step-stack.test.js.map +1 -1
- package/dist/components/wizard/view-title.js +2 -2
- package/dist/components/wizard/wizard-layout.js +10 -8
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard-tabs.test.js +2 -2
- package/dist/components/wizard/wizard.js +29 -27
- package/dist/hooks/init.js +32 -30
- package/dist/hooks/init.js.map +1 -1
- package/dist/{loader-2O32KKAQ.js → loader-4YOZCFIP.js} +4 -4
- package/dist/plugins/dummy-skill/.claude-plugin/.content-hash +1 -0
- package/dist/plugins/dummy-skill/.claude-plugin/plugin.json +13 -0
- package/dist/{source-loader-A6B3NDI4.js → source-loader-O5RMYUBW.js} +6 -5
- package/dist/{source-manager-Q7IQSGIX.js → source-manager-NKLL6HCL.js} +6 -5
- package/dist/stores/matrix-store.js +15 -0
- package/dist/stores/matrix-store.js.map +1 -0
- package/dist/stores/matrix-store.test.js +146 -0
- package/dist/stores/matrix-store.test.js.map +1 -0
- package/dist/stores/wizard-store.js +6 -5
- package/dist/stores/wizard-store.test.js +159 -107
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-52M2XF3W.js.map +0 -1
- package/dist/chunk-52XO4ULK.js.map +0 -1
- package/dist/chunk-6G3KZSO4.js.map +0 -1
- package/dist/chunk-7FMEMXJ4.js.map +0 -1
- package/dist/chunk-AX3SZZWA.js.map +0 -1
- package/dist/chunk-BFD5NZQ4.js.map +0 -1
- package/dist/chunk-BKJHAJQW.js.map +0 -1
- package/dist/chunk-BMJZBLP7.js.map +0 -1
- package/dist/chunk-EMIUPGPL.js.map +0 -1
- package/dist/chunk-G6WHCALR.js.map +0 -1
- package/dist/chunk-H7WJK7NJ.js.map +0 -1
- package/dist/chunk-KIWFEBKH.js.map +0 -1
- package/dist/chunk-MKCHLXMY.js.map +0 -1
- package/dist/chunk-MMFQNJPE.js.map +0 -1
- package/dist/chunk-MR6OBL3B.js.map +0 -1
- package/dist/chunk-O6BA7Q2B.js.map +0 -1
- package/dist/chunk-SDKCQXWE.js.map +0 -1
- package/dist/chunk-SEJF7CGJ.js.map +0 -1
- package/dist/chunk-SZRK3VOR.js.map +0 -1
- package/dist/chunk-TC3NHO34.js +0 -151
- package/dist/chunk-TC3NHO34.js.map +0 -1
- package/dist/chunk-TGLRDEEL.js.map +0 -1
- package/dist/chunk-TZXYBG3R.js.map +0 -1
- package/dist/chunk-WF6RM73R.js.map +0 -1
- /package/dist/{chunk-MGNYPVOJ.js.map → chunk-AQYAVLZK.js.map} +0 -0
- /package/dist/{chunk-BNQ5O6LE.js.map → chunk-AUNBGZS4.js.map} +0 -0
- /package/dist/{chunk-VR3CDXDT.js.map → chunk-EE5EPS32.js.map} +0 -0
- /package/dist/{chunk-OCEFD7V6.js.map → chunk-F3REOP7N.js.map} +0 -0
- /package/dist/{chunk-C577AJE7.js.map → chunk-FGLUQSVU.js.map} +0 -0
- /package/dist/{chunk-X5EG4EFP.js.map → chunk-MWGDG4QN.js.map} +0 -0
- /package/dist/{chunk-CIG7IKX3.js.map → chunk-OV5UJWS5.js.map} +0 -0
- /package/dist/{chunk-RO6LX3UV.js.map → chunk-R46CB36B.js.map} +0 -0
- /package/dist/{chunk-XUDTFI4M.js.map → chunk-T5DJCIUP.js.map} +0 -0
- /package/dist/{chunk-AJJJE7F7.js.map → chunk-TQLDQ3XZ.js.map} +0 -0
- /package/dist/{chunk-WYVDNGJB.js.map → chunk-XMLCXRTS.js.map} +0 -0
- /package/dist/{chunk-K6OLORQL.js.map → chunk-YEGPTBX5.js.map} +0 -0
- /package/dist/{chunk-YHCYKUA3.js.map → chunk-ZFY5EMDV.js.map} +0 -0
- /package/dist/{loader-2O32KKAQ.js.map → loader-4YOZCFIP.js.map} +0 -0
- /package/dist/{source-loader-A6B3NDI4.js.map → source-loader-O5RMYUBW.js.map} +0 -0
- /package/dist/{source-manager-Q7IQSGIX.js.map → source-manager-NKLL6HCL.js.map} +0 -0
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getAgentDefinitions
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-ZFY5EMDV.js";
|
|
5
5
|
import {
|
|
6
6
|
compileStackPlugin,
|
|
7
7
|
loadStacks,
|
|
8
8
|
printStackCompilationSummary
|
|
9
|
-
} from "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
9
|
+
} from "../../chunk-53URJ5XK.js";
|
|
10
|
+
import "../../chunk-F3REOP7N.js";
|
|
11
11
|
import "../../chunk-T4EXUIBY.js";
|
|
12
|
+
import "../../chunk-BKL3DF2Q.js";
|
|
12
13
|
import {
|
|
13
14
|
BaseCommand,
|
|
14
15
|
EXIT_CODES
|
|
15
|
-
} from "../../chunk-
|
|
16
|
+
} from "../../chunk-EE5EPS32.js";
|
|
16
17
|
import {
|
|
17
18
|
setVerbose
|
|
18
|
-
} from "../../chunk-
|
|
19
|
+
} from "../../chunk-LMZXL5RQ.js";
|
|
19
20
|
import {
|
|
20
21
|
PROJECT_ROOT,
|
|
21
22
|
STACKS_FILE_PATH
|
|
22
|
-
} from "../../chunk-
|
|
23
|
+
} from "../../chunk-EGMQ3SXN.js";
|
|
23
24
|
import "../../chunk-EC3UJRKZ.js";
|
|
24
25
|
import {
|
|
25
26
|
init_esm_shims
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/build/stack.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags } from \"@oclif/core\";\nimport { Select } from \"@inkjs/ui\";\nimport { render, Box, Text } from \"ink\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../../base-command\";\nimport { setVerbose } from \"../../utils/logger\";\nimport { PROJECT_ROOT, STACKS_FILE_PATH } from \"../../consts\";\nimport { compileStackPlugin, printStackCompilationSummary, loadStacks } from \"../../lib/stacks\";\nimport { getAgentDefinitions } from \"../../lib/agents\";\nimport { EXIT_CODES } from \"../../lib/exit-codes\";\n\nconst DEFAULT_OUTPUT_DIR = \"dist/stacks\";\n\ntype StackSelectorProps = {\n availableStacks: string[];\n onSelect: (stackId: string) => void;\n};\n\nconst StackSelector: React.FC<StackSelectorProps> = ({ availableStacks, onSelect }) => {\n return (\n <Box flexDirection=\"column\">\n <Text>Select a stack to compile:</Text>\n <Select\n options={availableStacks.map((name) => ({\n value: name,\n label: name,\n }))}\n onChange={(value) => {\n onSelect(value);\n }}\n />\n </Box>\n );\n};\n\nexport default class BuildStack extends BaseCommand {\n static summary = \"Build a stack into a standalone plugin\";\n\n static description =\n \"Build a stack into a standalone plugin (requires skills repo). If no stack is specified, you will be prompted to select one.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --stack frontend-stack\",\n \"<%= config.bin %> <%= command.id %> --stack frontend-stack --output-dir ./plugins\",\n \"<%= config.bin %> <%= command.id %> --agent-source /path/to/agents --refresh\",\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n stack: Flags.string({\n description: \"Stack ID to compile (directory name in src/stacks/)\",\n }),\n \"output-dir\": Flags.string({\n char: \"o\",\n description: \"Output directory\",\n default: DEFAULT_OUTPUT_DIR,\n }),\n \"agent-source\": Flags.string({\n description: \"Agent partials source (default: local CLI)\",\n }),\n refresh: Flags.boolean({\n description: \"Force refresh remote agent source\",\n default: false,\n }),\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(BuildStack);\n\n setVerbose(flags.verbose);\n\n const projectRoot = process.cwd();\n const outputDir = path.resolve(projectRoot, flags[\"output-dir\"]);\n\n let stackId = flags.stack;\n\n if (!stackId) {\n const stacks = await loadStacks(projectRoot);\n const availableStacks = stacks.map((s) => s.id).sort();\n\n if (availableStacks.length === 0) {\n this.error(`No stacks found in ${STACKS_FILE_PATH}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n stackId = await new Promise<string>((resolve, reject) => {\n const { waitUntilExit } = render(\n <StackSelector\n availableStacks={availableStacks}\n onSelect={(selected) => {\n resolve(selected);\n }}\n />,\n );\n\n waitUntilExit().catch(reject);\n }).catch(() => {\n this.log(\"Cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n });\n }\n\n this.log(\"\");\n this.log(`Compiling stack plugin: ${stackId}`);\n this.log(` Output directory: ${outputDir}`);\n this.log(\"\");\n\n let agentSourcePath: string;\n try {\n this.log(flags[\"agent-source\"] ? \"Fetching agent partials...\" : \"Loading agent partials...\");\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n forceRefresh: flags.refresh,\n });\n agentSourcePath = agentDefs.sourcePath;\n this.log(\n flags[\"agent-source\"]\n ? `Agent partials fetched from: ${flags[\"agent-source\"]}`\n : `Agent partials loaded from: ${PROJECT_ROOT}`,\n );\n } catch (error) {\n this.log(\"Failed to load agent partials\");\n this.handleError(error);\n }\n\n try {\n this.log(`Compiling stack \"${stackId}\"...`);\n\n const result = await compileStackPlugin({\n stackId,\n outputDir,\n projectRoot,\n agentSourcePath,\n });\n\n this.log(`Compiled stack plugin: ${result.stackName}`);\n\n printStackCompilationSummary(result);\n\n this.log(\"\");\n this.logSuccess(\"Stack plugin compilation complete!\");\n } catch (error) {\n this.log(\"Compilation failed\");\n this.handleError(error);\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/build/stack.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags } from \"@oclif/core\";\nimport { Select } from \"@inkjs/ui\";\nimport { render, Box, Text } from \"ink\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../../base-command\";\nimport { setVerbose } from \"../../utils/logger\";\nimport { PROJECT_ROOT, STACKS_FILE_PATH } from \"../../consts\";\nimport { compileStackPlugin, printStackCompilationSummary, loadStacks } from \"../../lib/stacks\";\nimport { getAgentDefinitions } from \"../../lib/agents\";\nimport { EXIT_CODES } from \"../../lib/exit-codes\";\n\nconst DEFAULT_OUTPUT_DIR = \"dist/stacks\";\n\ntype StackSelectorProps = {\n availableStacks: string[];\n onSelect: (stackId: string) => void;\n};\n\nconst StackSelector: React.FC<StackSelectorProps> = ({ availableStacks, onSelect }) => {\n return (\n <Box flexDirection=\"column\">\n <Text>Select a stack to compile:</Text>\n <Select\n options={availableStacks.map((name) => ({\n value: name,\n label: name,\n }))}\n onChange={(value) => {\n onSelect(value);\n }}\n />\n </Box>\n );\n};\n\nexport default class BuildStack extends BaseCommand {\n static summary = \"Build a stack into a standalone plugin\";\n\n static description =\n \"Build a stack into a standalone plugin (requires skills repo). If no stack is specified, you will be prompted to select one.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --stack frontend-stack\",\n \"<%= config.bin %> <%= command.id %> --stack frontend-stack --output-dir ./plugins\",\n \"<%= config.bin %> <%= command.id %> --agent-source /path/to/agents --refresh\",\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n stack: Flags.string({\n description: \"Stack ID to compile (directory name in src/stacks/)\",\n }),\n \"output-dir\": Flags.string({\n char: \"o\",\n description: \"Output directory\",\n default: DEFAULT_OUTPUT_DIR,\n }),\n \"agent-source\": Flags.string({\n description: \"Agent partials source (default: local CLI)\",\n }),\n refresh: Flags.boolean({\n description: \"Force refresh remote agent source\",\n default: false,\n }),\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(BuildStack);\n\n setVerbose(flags.verbose);\n\n const projectRoot = process.cwd();\n const outputDir = path.resolve(projectRoot, flags[\"output-dir\"]);\n\n let stackId = flags.stack;\n\n if (!stackId) {\n const stacks = await loadStacks(projectRoot);\n const availableStacks = stacks.map((s) => s.id).sort();\n\n if (availableStacks.length === 0) {\n this.error(`No stacks found in ${STACKS_FILE_PATH}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n stackId = await new Promise<string>((resolve, reject) => {\n const { waitUntilExit } = render(\n <StackSelector\n availableStacks={availableStacks}\n onSelect={(selected) => {\n resolve(selected);\n }}\n />,\n );\n\n waitUntilExit().catch(reject);\n }).catch(() => {\n this.log(\"Cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n });\n }\n\n this.log(\"\");\n this.log(`Compiling stack plugin: ${stackId}`);\n this.log(` Output directory: ${outputDir}`);\n this.log(\"\");\n\n let agentSourcePath: string;\n try {\n this.log(flags[\"agent-source\"] ? \"Fetching agent partials...\" : \"Loading agent partials...\");\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n forceRefresh: flags.refresh,\n });\n agentSourcePath = agentDefs.sourcePath;\n this.log(\n flags[\"agent-source\"]\n ? `Agent partials fetched from: ${flags[\"agent-source\"]}`\n : `Agent partials loaded from: ${PROJECT_ROOT}`,\n );\n } catch (error) {\n this.log(\"Failed to load agent partials\");\n this.handleError(error);\n }\n\n try {\n this.log(`Compiling stack \"${stackId}\"...`);\n\n const result = await compileStackPlugin({\n stackId,\n outputDir,\n projectRoot,\n agentSourcePath,\n });\n\n this.log(`Compiled stack plugin: ${result.stackName}`);\n\n printStackCompilationSummary(result);\n\n this.log(\"\");\n this.logSuccess(\"Stack plugin compilation complete!\");\n } catch (error) {\n this.log(\"Compilation failed\");\n this.handleError(error);\n }\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/commands/compile.js
CHANGED
|
@@ -2,47 +2,45 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getAgentDefinitions,
|
|
4
4
|
recompileAgents
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-ZFY5EMDV.js";
|
|
6
6
|
import {
|
|
7
7
|
ERROR_MESSAGES,
|
|
8
8
|
INFO_MESSAGES,
|
|
9
|
-
STATUS_MESSAGES
|
|
10
|
-
|
|
11
|
-
} from "../chunk-MR6OBL3B.js";
|
|
9
|
+
STATUS_MESSAGES
|
|
10
|
+
} from "../chunk-CXRVM7BA.js";
|
|
12
11
|
import {
|
|
13
|
-
|
|
12
|
+
detectGlobalInstallation,
|
|
13
|
+
detectProjectInstallation,
|
|
14
14
|
discoverAllPluginSkills,
|
|
15
|
-
getStackSkillIds,
|
|
16
|
-
loadProjectConfigFromDir,
|
|
17
15
|
resolveSource
|
|
18
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-53URJ5XK.js";
|
|
19
17
|
import {
|
|
20
18
|
parseFrontmatter
|
|
21
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-F3REOP7N.js";
|
|
22
20
|
import {
|
|
23
21
|
typedEntries,
|
|
24
22
|
typedKeys
|
|
25
23
|
} from "../chunk-T4EXUIBY.js";
|
|
24
|
+
import "../chunk-BKL3DF2Q.js";
|
|
26
25
|
import {
|
|
27
26
|
BaseCommand,
|
|
28
27
|
EXIT_CODES
|
|
29
|
-
} from "../chunk-
|
|
28
|
+
} from "../chunk-EE5EPS32.js";
|
|
30
29
|
import {
|
|
31
30
|
directoryExists,
|
|
32
|
-
ensureDir,
|
|
33
31
|
fileExists,
|
|
34
32
|
glob,
|
|
35
33
|
readFile,
|
|
36
34
|
setVerbose,
|
|
37
35
|
verbose,
|
|
38
36
|
warn
|
|
39
|
-
} from "../chunk-
|
|
37
|
+
} from "../chunk-LMZXL5RQ.js";
|
|
40
38
|
import {
|
|
41
39
|
CLI_BIN_NAME,
|
|
42
40
|
GLOBAL_INSTALL_ROOT,
|
|
43
41
|
LOCAL_SKILLS_PATH,
|
|
44
42
|
STANDARD_FILES
|
|
45
|
-
} from "../chunk-
|
|
43
|
+
} from "../chunk-EGMQ3SXN.js";
|
|
46
44
|
import "../chunk-EC3UJRKZ.js";
|
|
47
45
|
import {
|
|
48
46
|
init_esm_shims
|
|
@@ -107,11 +105,10 @@ function mergeSkills(...skillSources) {
|
|
|
107
105
|
}
|
|
108
106
|
var Compile = class _Compile extends BaseCommand {
|
|
109
107
|
static summary = "Compile agents using local skills and agent definitions";
|
|
110
|
-
static description = "Compile agents with resolved skill references.
|
|
108
|
+
static description = "Compile agents with resolved skill references. Compiles to the Claude plugin directory.";
|
|
111
109
|
static examples = [
|
|
112
110
|
"<%= config.bin %> <%= command.id %>",
|
|
113
|
-
"<%= config.bin %> <%= command.id %> --verbose"
|
|
114
|
-
"<%= config.bin %> <%= command.id %> --output ./agents"
|
|
111
|
+
"<%= config.bin %> <%= command.id %> --verbose"
|
|
115
112
|
];
|
|
116
113
|
static flags = {
|
|
117
114
|
...BaseCommand.baseFlags,
|
|
@@ -122,41 +119,48 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
122
119
|
}),
|
|
123
120
|
"agent-source": Flags.string({
|
|
124
121
|
description: "Remote agent partials source (default: local CLI)"
|
|
125
|
-
}),
|
|
126
|
-
output: Flags.string({
|
|
127
|
-
char: "o",
|
|
128
|
-
description: "Output directory for compiled agents (skips plugin mode)"
|
|
129
122
|
})
|
|
130
123
|
};
|
|
131
124
|
async run() {
|
|
132
125
|
const { flags } = await this.parse(_Compile);
|
|
133
126
|
setVerbose(flags.verbose);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
const installation = await detectInstallation();
|
|
142
|
-
if (!installation) {
|
|
127
|
+
const cwd = process.cwd();
|
|
128
|
+
const homeDir = os.homedir();
|
|
129
|
+
const globalInstallation = await detectGlobalInstallation();
|
|
130
|
+
const projectInstallation = cwd === homeDir ? null : await detectProjectInstallation(cwd);
|
|
131
|
+
if (!globalInstallation && !projectInstallation) {
|
|
143
132
|
this.error(ERROR_MESSAGES.NO_INSTALLATION, {
|
|
144
133
|
exit: EXIT_CODES.ERROR
|
|
145
134
|
});
|
|
146
135
|
}
|
|
147
|
-
|
|
148
|
-
|
|
136
|
+
await this.resolveSourceForCompile(flags);
|
|
137
|
+
const agentDefs = await this.loadAgentDefsForCompile(flags);
|
|
138
|
+
let totalPassesWithSkills = 0;
|
|
139
|
+
if (globalInstallation) {
|
|
140
|
+
const hadSkills = await this.runCompilePass({
|
|
141
|
+
label: "Global",
|
|
142
|
+
projectDir: homeDir,
|
|
143
|
+
installation: globalInstallation,
|
|
144
|
+
agentDefs,
|
|
145
|
+
flags
|
|
146
|
+
});
|
|
147
|
+
if (hadSkills) totalPassesWithSkills++;
|
|
149
148
|
}
|
|
150
|
-
if (
|
|
151
|
-
this.
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
149
|
+
if (projectInstallation) {
|
|
150
|
+
const hadSkills = await this.runCompilePass({
|
|
151
|
+
label: "Project",
|
|
152
|
+
projectDir: cwd,
|
|
153
|
+
installation: projectInstallation,
|
|
154
|
+
agentDefs,
|
|
155
|
+
flags
|
|
157
156
|
});
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
if (hadSkills) totalPassesWithSkills++;
|
|
158
|
+
}
|
|
159
|
+
if (totalPassesWithSkills === 0) {
|
|
160
|
+
this.error(
|
|
161
|
+
`No skills found. Add skills with '${CLI_BIN_NAME} add <skill>' or create in .claude/skills/.`,
|
|
162
|
+
{ exit: EXIT_CODES.ERROR }
|
|
163
|
+
);
|
|
160
164
|
}
|
|
161
165
|
}
|
|
162
166
|
async discoverAllSkills(projectDir = process.cwd()) {
|
|
@@ -177,11 +181,7 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
177
181
|
const allSkills = mergeSkills(pluginSkills, globalLocalSkills, localSkills);
|
|
178
182
|
const totalSkillCount = typedKeys(allSkills).length;
|
|
179
183
|
if (totalSkillCount === 0) {
|
|
180
|
-
|
|
181
|
-
this.error(
|
|
182
|
-
`No skills found. Add skills with '${CLI_BIN_NAME} add <skill>' or create in .claude/skills/.`,
|
|
183
|
-
{ exit: EXIT_CODES.ERROR }
|
|
184
|
-
);
|
|
184
|
+
return { allSkills, totalSkillCount };
|
|
185
185
|
}
|
|
186
186
|
if (pluginSkillCount > 0 && totalSkillCount > pluginSkillCount) {
|
|
187
187
|
const localCount = totalSkillCount - pluginSkillCount;
|
|
@@ -195,56 +195,18 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
195
195
|
}
|
|
196
196
|
return { allSkills, totalSkillCount };
|
|
197
197
|
}
|
|
198
|
-
async
|
|
199
|
-
|
|
200
|
-
try {
|
|
201
|
-
const sourceConfig = await resolveSource(flags.source);
|
|
202
|
-
this.log(`Source: ${sourceConfig.sourceOrigin}`);
|
|
203
|
-
} catch (error) {
|
|
204
|
-
this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);
|
|
205
|
-
this.handleError(error);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
async loadAgentDefsForCompile(flags) {
|
|
209
|
-
const projectDir = process.cwd();
|
|
210
|
-
this.log(
|
|
211
|
-
flags["agent-source"] ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS : STATUS_MESSAGES.LOADING_AGENT_PARTIALS
|
|
212
|
-
);
|
|
213
|
-
try {
|
|
214
|
-
const agentDefs = await getAgentDefinitions(flags["agent-source"], {
|
|
215
|
-
projectDir
|
|
216
|
-
});
|
|
217
|
-
this.log(flags["agent-source"] ? "Agent partials fetched" : "Agent partials loaded");
|
|
218
|
-
verbose(` Agents: ${agentDefs.agentsDir}`);
|
|
219
|
-
verbose(` Templates: ${agentDefs.templatesDir}`);
|
|
220
|
-
return agentDefs;
|
|
221
|
-
} catch (error) {
|
|
222
|
-
this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);
|
|
223
|
-
return this.handleError(error);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
async runPluginModeCompile(flags, installation) {
|
|
198
|
+
async runCompilePass(params) {
|
|
199
|
+
const { label, projectDir, installation, agentDefs, flags } = params;
|
|
227
200
|
this.log("");
|
|
228
|
-
this.log(
|
|
201
|
+
this.log(`Compiling ${label.toLowerCase()} agents...`);
|
|
229
202
|
this.log("");
|
|
230
|
-
const projectDir = installation.projectDir;
|
|
231
|
-
const agentsDir = installation.agentsDir;
|
|
232
|
-
this.log("Using individual plugin mode");
|
|
233
203
|
verbose(` Project: ${projectDir}`);
|
|
234
|
-
verbose(` Agents: ${agentsDir}`);
|
|
235
|
-
const
|
|
236
|
-
if (
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const stackSkillCount = config.stack ? getStackSkillIds(config.stack).length : 0;
|
|
240
|
-
this.log(`Using config (${agentCount} agents, ${stackSkillCount} skills)`);
|
|
241
|
-
verbose(` Config: ${loaded.configPath}`);
|
|
242
|
-
} else {
|
|
243
|
-
verbose(` No config found - using defaults`);
|
|
204
|
+
verbose(` Agents: ${installation.agentsDir}`);
|
|
205
|
+
const { allSkills, totalSkillCount } = await this.discoverAllSkills(projectDir);
|
|
206
|
+
if (totalSkillCount === 0) {
|
|
207
|
+
this.log(`No skills found for ${label.toLowerCase()} pass, skipping`);
|
|
208
|
+
return false;
|
|
244
209
|
}
|
|
245
|
-
const { allSkills } = await this.discoverAllSkills(projectDir);
|
|
246
|
-
await this.resolveSourceForCompile(flags);
|
|
247
|
-
const agentDefs = await this.loadAgentDefsForCompile(flags);
|
|
248
210
|
this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);
|
|
249
211
|
try {
|
|
250
212
|
const recompileResult = await recompileAgents({
|
|
@@ -252,17 +214,17 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
252
214
|
sourcePath: agentDefs.sourcePath,
|
|
253
215
|
skills: allSkills,
|
|
254
216
|
projectDir,
|
|
255
|
-
outputDir: agentsDir
|
|
217
|
+
outputDir: installation.agentsDir
|
|
256
218
|
});
|
|
257
219
|
if (recompileResult.failed.length > 0) {
|
|
258
220
|
this.log(
|
|
259
|
-
`Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`
|
|
221
|
+
`Recompiled ${recompileResult.compiled.length} ${label.toLowerCase()} agents (${recompileResult.failed.length} failed)`
|
|
260
222
|
);
|
|
261
223
|
for (const warning of recompileResult.warnings) {
|
|
262
224
|
this.warn(warning);
|
|
263
225
|
}
|
|
264
226
|
} else if (recompileResult.compiled.length > 0) {
|
|
265
|
-
this.log(`Recompiled ${recompileResult.compiled.length} agents`);
|
|
227
|
+
this.log(`Recompiled ${recompileResult.compiled.length} ${label.toLowerCase()} agents`);
|
|
266
228
|
} else {
|
|
267
229
|
this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);
|
|
268
230
|
}
|
|
@@ -274,58 +236,37 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
274
236
|
this.handleError(error);
|
|
275
237
|
}
|
|
276
238
|
this.log("");
|
|
277
|
-
this.logSuccess(
|
|
239
|
+
this.logSuccess(`${label} compile complete!`);
|
|
278
240
|
this.log("");
|
|
241
|
+
return true;
|
|
279
242
|
}
|
|
280
|
-
async
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
243
|
+
async resolveSourceForCompile(flags) {
|
|
244
|
+
this.log(STATUS_MESSAGES.RESOLVING_SOURCE);
|
|
245
|
+
try {
|
|
246
|
+
const sourceConfig = await resolveSource(flags.source);
|
|
247
|
+
this.log(`Source: ${sourceConfig.sourceOrigin}`);
|
|
248
|
+
} catch (error) {
|
|
249
|
+
this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);
|
|
250
|
+
this.handleError(error);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async loadAgentDefsForCompile(flags) {
|
|
291
254
|
const projectDir = process.cwd();
|
|
292
|
-
this.log(
|
|
255
|
+
this.log(
|
|
256
|
+
flags["agent-source"] ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS : STATUS_MESSAGES.LOADING_AGENT_PARTIALS
|
|
257
|
+
);
|
|
293
258
|
try {
|
|
294
|
-
const
|
|
295
|
-
pluginDir: projectDir,
|
|
296
|
-
sourcePath: agentDefs.sourcePath,
|
|
297
|
-
skills: allSkills,
|
|
298
|
-
outputDir,
|
|
259
|
+
const agentDefs = await getAgentDefinitions(flags["agent-source"], {
|
|
299
260
|
projectDir
|
|
300
261
|
});
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
for (const warning of recompileResult.warnings) {
|
|
306
|
-
this.warn(warning);
|
|
307
|
-
}
|
|
308
|
-
} else if (recompileResult.compiled.length > 0) {
|
|
309
|
-
this.log(`Compiled ${recompileResult.compiled.length} agents`);
|
|
310
|
-
} else {
|
|
311
|
-
this.log(INFO_MESSAGES.NO_AGENTS_TO_COMPILE);
|
|
312
|
-
}
|
|
313
|
-
if (recompileResult.compiled.length > 0) {
|
|
314
|
-
verbose(` Compiled: ${recompileResult.compiled.join(", ")}`);
|
|
315
|
-
this.log("");
|
|
316
|
-
this.log("Agents compiled to:");
|
|
317
|
-
this.log(` ${outputDir}`);
|
|
318
|
-
for (const agentName of recompileResult.compiled) {
|
|
319
|
-
this.log(` ${agentName}.md`);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
262
|
+
this.log(flags["agent-source"] ? "Agent partials fetched" : "Agent partials loaded");
|
|
263
|
+
verbose(` Agents: ${agentDefs.agentsDir}`);
|
|
264
|
+
verbose(` Templates: ${agentDefs.templatesDir}`);
|
|
265
|
+
return agentDefs;
|
|
322
266
|
} catch (error) {
|
|
323
|
-
this.log(ERROR_MESSAGES.
|
|
324
|
-
this.handleError(error);
|
|
267
|
+
this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);
|
|
268
|
+
return this.handleError(error);
|
|
325
269
|
}
|
|
326
|
-
this.log("");
|
|
327
|
-
this.logSuccess(SUCCESS_MESSAGES.CUSTOM_COMPILE_COMPLETE);
|
|
328
|
-
this.log("");
|
|
329
270
|
}
|
|
330
271
|
};
|
|
331
272
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/commands/compile.ts"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport os from \"os\";\nimport path from \"path\";\nimport { BaseCommand } from \"../base-command\";\nimport { setVerbose, verbose, warn } from \"../utils/logger\";\nimport { discoverAllPluginSkills } from \"../lib/plugins\";\nimport { getAgentDefinitions } from \"../lib/agents\";\nimport { resolveSource, loadProjectConfigFromDir } from \"../lib/configuration\";\nimport { directoryExists, ensureDir, glob, readFile, fileExists } from \"../utils/fs\";\nimport { recompileAgents } from \"../lib/agents\";\nimport { parseFrontmatter } from \"../lib/loading\";\nimport { CLI_BIN_NAME, GLOBAL_INSTALL_ROOT, LOCAL_SKILLS_PATH, STANDARD_FILES } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport {\n ERROR_MESSAGES,\n SUCCESS_MESSAGES,\n STATUS_MESSAGES,\n INFO_MESSAGES,\n} from \"../utils/messages\";\nimport { detectInstallation, type Installation } from \"../lib/installation\";\nimport type { AgentSourcePaths, SkillDefinition, SkillDefinitionMap, SkillId } from \"../types\";\nimport { getStackSkillIds } from \"../lib/stacks/stacks-loader\";\nimport { typedEntries, typedKeys } from \"../utils/typed-object\";\n\nasync function loadSkillsFromDir(skillsDir: string, pathPrefix = \"\"): Promise<SkillDefinitionMap> {\n const skills: SkillDefinitionMap = {};\n\n if (!(await directoryExists(skillsDir))) {\n return skills;\n }\n\n const skillFiles = await glob(\"**/SKILL.md\", skillsDir);\n\n for (const skillFile of skillFiles) {\n const skillPath = path.join(skillsDir, skillFile);\n const skillDir = path.dirname(skillPath);\n const relativePath = path.relative(skillsDir, skillDir);\n const skillDirName = path.basename(skillDir);\n\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n if (!(await fileExists(metadataPath))) {\n const displayPath = pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`;\n warn(\n `Skill '${skillDirName}' in '${displayPath}' is missing ${STANDARD_FILES.METADATA_YAML} — skipped. Add ${STANDARD_FILES.METADATA_YAML} to register it with the CLI.`,\n );\n continue;\n }\n\n try {\n const content = await readFile(skillPath);\n const frontmatter = parseFrontmatter(content, skillPath);\n\n const skillName = frontmatter?.name || path.basename(skillDir);\n // Boundary cast: skill name from frontmatter/directory is an untyped string\n const canonicalId = skillName as SkillId;\n\n const skill: SkillDefinition = {\n id: canonicalId,\n path: pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`,\n description: frontmatter?.description || \"\",\n };\n\n skills[canonicalId] = skill;\n verbose(` Loaded skill: ${canonicalId}`);\n } catch (error) {\n verbose(` Failed to load skill: ${skillFile} - ${error}`);\n }\n }\n\n return skills;\n}\n\nasync function discoverLocalProjectSkills(projectDir: string): Promise<SkillDefinitionMap> {\n const localSkillsDir = path.join(projectDir, LOCAL_SKILLS_PATH);\n return loadSkillsFromDir(localSkillsDir, LOCAL_SKILLS_PATH);\n}\n\n/** Later sources take precedence over earlier ones */\nfunction mergeSkills(...skillSources: SkillDefinitionMap[]): SkillDefinitionMap {\n const merged: SkillDefinitionMap = {};\n\n for (const source of skillSources) {\n for (const [id, skill] of typedEntries<SkillId, SkillDefinition | undefined>(source)) {\n if (skill) {\n merged[id] = skill;\n }\n }\n }\n\n return merged;\n}\n\ntype CompileFlags = {\n source?: string;\n \"agent-source\"?: string;\n verbose: boolean;\n};\n\ntype DiscoveredSkills = {\n allSkills: SkillDefinitionMap;\n totalSkillCount: number;\n};\n\nexport default class Compile extends BaseCommand {\n static summary = \"Compile agents using local skills and agent definitions\";\n\n static description =\n \"Compile agents with resolved skill references. By default, compiles to the Claude plugin directory. Use --output to compile to a custom directory.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --verbose\",\n \"<%= config.bin %> <%= command.id %> --output ./agents\",\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory for compiled agents (skips plugin mode)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Compile);\n\n setVerbose(flags.verbose);\n\n if (flags.output) {\n await this.runCustomOutputCompile({\n ...flags,\n output: flags.output,\n });\n return;\n }\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n if (installation.projectDir === os.homedir()) {\n this.log(\"Using global installation from ~/.claude-src/\");\n }\n\n if (installation.mode === \"local\") {\n this.log(\"\");\n this.log(\"Local Mode Compile (auto-detected)\");\n this.log(\"\");\n await this.runCustomOutputCompile({\n ...flags,\n output: installation.agentsDir,\n });\n } else {\n await this.runPluginModeCompile(flags, installation);\n }\n }\n\n private async discoverAllSkills(projectDir: string = process.cwd()): Promise<DiscoveredSkills> {\n this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);\n\n const pluginSkills = await discoverAllPluginSkills(projectDir);\n const pluginSkillCount = typedKeys<SkillId>(pluginSkills).length;\n verbose(` Found ${pluginSkillCount} skills from installed plugins`);\n\n // Load global local skills (skip if projectDir is already the home directory to avoid double-loading)\n const isGlobalProject = projectDir === GLOBAL_INSTALL_ROOT;\n const globalLocalSkillsDir = path.join(GLOBAL_INSTALL_ROOT, LOCAL_SKILLS_PATH);\n const globalLocalSkills = isGlobalProject\n ? {}\n : await loadSkillsFromDir(globalLocalSkillsDir, LOCAL_SKILLS_PATH);\n const globalLocalSkillCount = typedKeys<SkillId>(globalLocalSkills).length;\n if (globalLocalSkillCount > 0) {\n verbose(` Found ${globalLocalSkillCount} global local skills from ~/.claude/skills/`);\n }\n\n const localSkills = await discoverLocalProjectSkills(projectDir);\n const localSkillCount = typedKeys<SkillId>(localSkills).length;\n verbose(` Found ${localSkillCount} local skills from .claude/skills/`);\n\n // Global skills loaded first, project skills second — project wins on conflict (later sources override)\n const allSkills = mergeSkills(pluginSkills, globalLocalSkills, localSkills);\n const totalSkillCount = typedKeys<SkillId>(allSkills).length;\n\n if (totalSkillCount === 0) {\n this.log(ERROR_MESSAGES.NO_SKILLS_FOUND);\n this.error(\n `No skills found. Add skills with '${CLI_BIN_NAME} add <skill>' or create in .claude/skills/.`,\n { exit: EXIT_CODES.ERROR },\n );\n }\n\n if (pluginSkillCount > 0 && totalSkillCount > pluginSkillCount) {\n const localCount = totalSkillCount - pluginSkillCount;\n this.log(\n `Discovered ${totalSkillCount} skills (${pluginSkillCount} from plugins, ${localCount} local)`,\n );\n } else if (pluginSkillCount > 0) {\n this.log(`Discovered ${pluginSkillCount} skills from plugins`);\n } else {\n this.log(`Discovered ${totalSkillCount} local skills`);\n }\n\n return { allSkills, totalSkillCount };\n }\n\n private async resolveSourceForCompile(flags: CompileFlags): Promise<void> {\n this.log(STATUS_MESSAGES.RESOLVING_SOURCE);\n try {\n const sourceConfig = await resolveSource(flags.source);\n this.log(`Source: ${sourceConfig.sourceOrigin}`);\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);\n this.handleError(error);\n }\n }\n\n private async loadAgentDefsForCompile(flags: CompileFlags): Promise<AgentSourcePaths> {\n const projectDir = process.cwd();\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n projectDir,\n });\n this.log(flags[\"agent-source\"] ? \"Agent partials fetched\" : \"Agent partials loaded\");\n verbose(` Agents: ${agentDefs.agentsDir}`);\n verbose(` Templates: ${agentDefs.templatesDir}`);\n return agentDefs;\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);\n return this.handleError(error);\n }\n }\n\n private async runPluginModeCompile(\n flags: CompileFlags,\n installation: Installation,\n ): Promise<void> {\n this.log(\"\");\n this.log(\"Plugin Mode Compile\");\n this.log(\"\");\n\n const projectDir = installation.projectDir;\n const agentsDir = installation.agentsDir;\n\n this.log(\"Using individual plugin mode\");\n verbose(` Project: ${projectDir}`);\n verbose(` Agents: ${agentsDir}`);\n\n const loaded = await loadProjectConfigFromDir(projectDir);\n if (loaded) {\n const config = loaded.config;\n const agentCount = config.agents?.length ?? 0;\n const stackSkillCount = config.stack ? getStackSkillIds(config.stack).length : 0;\n this.log(`Using config (${agentCount} agents, ${stackSkillCount} skills)`);\n verbose(` Config: ${loaded.configPath}`);\n } else {\n verbose(` No config found - using defaults`);\n }\n\n const { allSkills } = await this.discoverAllSkills(projectDir);\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n projectDir,\n outputDir: agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`Recompiled ${recompileResult.compiled.length} agents`);\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.PLUGIN_COMPILE_COMPLETE);\n this.log(\"\");\n }\n\n private async runCustomOutputCompile(flags: CompileFlags & { output: string }): Promise<void> {\n const outputDir = path.resolve(process.cwd(), flags.output);\n this.log(\"\");\n this.log(\"Custom Output Compile\");\n this.log(\"\");\n this.log(`Output directory: ${outputDir}`);\n this.log(\"\");\n\n await ensureDir(outputDir);\n\n const { allSkills } = await this.discoverAllSkills();\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n const projectDir = process.cwd();\n\n this.log(STATUS_MESSAGES.COMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n outputDir,\n projectDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Compiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`Compiled ${recompileResult.compiled.length} agents`);\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_COMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n this.log(\"\");\n this.log(\"Agents compiled to:\");\n this.log(` ${outputDir}`);\n for (const agentName of recompileResult.compiled) {\n this.log(` ${agentName}.md`);\n }\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.CUSTOM_COMPILE_COMPLETE);\n this.log(\"\");\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/compile.ts"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport os from \"os\";\nimport path from \"path\";\nimport { BaseCommand } from \"../base-command\";\nimport { setVerbose, verbose, warn } from \"../utils/logger\";\nimport { discoverAllPluginSkills } from \"../lib/plugins\";\nimport { getAgentDefinitions } from \"../lib/agents\";\nimport { resolveSource } from \"../lib/configuration\";\nimport { directoryExists, glob, readFile, fileExists } from \"../utils/fs\";\nimport { recompileAgents } from \"../lib/agents\";\nimport { parseFrontmatter } from \"../lib/loading\";\nimport { CLI_BIN_NAME, GLOBAL_INSTALL_ROOT, LOCAL_SKILLS_PATH, STANDARD_FILES } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport { ERROR_MESSAGES, STATUS_MESSAGES, INFO_MESSAGES } from \"../utils/messages\";\nimport {\n detectGlobalInstallation,\n detectProjectInstallation,\n type Installation,\n} from \"../lib/installation\";\nimport type { AgentSourcePaths, SkillDefinition, SkillDefinitionMap, SkillId } from \"../types\";\nimport { typedEntries, typedKeys } from \"../utils/typed-object\";\n\nasync function loadSkillsFromDir(skillsDir: string, pathPrefix = \"\"): Promise<SkillDefinitionMap> {\n const skills: SkillDefinitionMap = {};\n\n if (!(await directoryExists(skillsDir))) {\n return skills;\n }\n\n const skillFiles = await glob(\"**/SKILL.md\", skillsDir);\n\n for (const skillFile of skillFiles) {\n const skillPath = path.join(skillsDir, skillFile);\n const skillDir = path.dirname(skillPath);\n const relativePath = path.relative(skillsDir, skillDir);\n const skillDirName = path.basename(skillDir);\n\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n if (!(await fileExists(metadataPath))) {\n const displayPath = pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`;\n warn(\n `Skill '${skillDirName}' in '${displayPath}' is missing ${STANDARD_FILES.METADATA_YAML} — skipped. Add ${STANDARD_FILES.METADATA_YAML} to register it with the CLI.`,\n );\n continue;\n }\n\n try {\n const content = await readFile(skillPath);\n const frontmatter = parseFrontmatter(content, skillPath);\n\n const skillName = frontmatter?.name || path.basename(skillDir);\n // Boundary cast: skill name from frontmatter/directory is an untyped string\n const canonicalId = skillName as SkillId;\n\n const skill: SkillDefinition = {\n id: canonicalId,\n path: pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`,\n description: frontmatter?.description || \"\",\n };\n\n skills[canonicalId] = skill;\n verbose(` Loaded skill: ${canonicalId}`);\n } catch (error) {\n verbose(` Failed to load skill: ${skillFile} - ${error}`);\n }\n }\n\n return skills;\n}\n\nasync function discoverLocalProjectSkills(projectDir: string): Promise<SkillDefinitionMap> {\n const localSkillsDir = path.join(projectDir, LOCAL_SKILLS_PATH);\n return loadSkillsFromDir(localSkillsDir, LOCAL_SKILLS_PATH);\n}\n\n/** Later sources take precedence over earlier ones */\nfunction mergeSkills(...skillSources: SkillDefinitionMap[]): SkillDefinitionMap {\n const merged: SkillDefinitionMap = {};\n\n for (const source of skillSources) {\n for (const [id, skill] of typedEntries<SkillId, SkillDefinition | undefined>(source)) {\n if (skill) {\n merged[id] = skill;\n }\n }\n }\n\n return merged;\n}\n\ntype CompileFlags = {\n source?: string;\n \"agent-source\"?: string;\n verbose: boolean;\n};\n\ntype DiscoveredSkills = {\n allSkills: SkillDefinitionMap;\n totalSkillCount: number;\n};\n\nexport default class Compile extends BaseCommand {\n static summary = \"Compile agents using local skills and agent definitions\";\n\n static description =\n \"Compile agents with resolved skill references. Compiles to the Claude plugin directory.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --verbose\",\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Compile);\n\n setVerbose(flags.verbose);\n\n const cwd = process.cwd();\n const homeDir = os.homedir();\n\n const globalInstallation = await detectGlobalInstallation();\n // Skip project detection when cwd is home directory to avoid double-compile\n const projectInstallation = cwd === homeDir ? null : await detectProjectInstallation(cwd);\n\n if (!globalInstallation && !projectInstallation) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n let totalPassesWithSkills = 0;\n\n if (globalInstallation) {\n const hadSkills = await this.runCompilePass({\n label: \"Global\",\n projectDir: homeDir,\n installation: globalInstallation,\n agentDefs,\n flags,\n });\n if (hadSkills) totalPassesWithSkills++;\n }\n\n if (projectInstallation) {\n const hadSkills = await this.runCompilePass({\n label: \"Project\",\n projectDir: cwd,\n installation: projectInstallation,\n agentDefs,\n flags,\n });\n if (hadSkills) totalPassesWithSkills++;\n }\n\n if (totalPassesWithSkills === 0) {\n this.error(\n `No skills found. Add skills with '${CLI_BIN_NAME} add <skill>' or create in .claude/skills/.`,\n { exit: EXIT_CODES.ERROR },\n );\n }\n }\n\n private async discoverAllSkills(projectDir: string = process.cwd()): Promise<DiscoveredSkills> {\n this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);\n\n const pluginSkills = await discoverAllPluginSkills(projectDir);\n const pluginSkillCount = typedKeys<SkillId>(pluginSkills).length;\n verbose(` Found ${pluginSkillCount} skills from installed plugins`);\n\n // Load global local skills (skip if projectDir is already the home directory to avoid double-loading)\n const isGlobalProject = projectDir === GLOBAL_INSTALL_ROOT;\n const globalLocalSkillsDir = path.join(GLOBAL_INSTALL_ROOT, LOCAL_SKILLS_PATH);\n const globalLocalSkills = isGlobalProject\n ? {}\n : await loadSkillsFromDir(globalLocalSkillsDir, LOCAL_SKILLS_PATH);\n const globalLocalSkillCount = typedKeys<SkillId>(globalLocalSkills).length;\n if (globalLocalSkillCount > 0) {\n verbose(` Found ${globalLocalSkillCount} global local skills from ~/.claude/skills/`);\n }\n\n const localSkills = await discoverLocalProjectSkills(projectDir);\n const localSkillCount = typedKeys<SkillId>(localSkills).length;\n verbose(` Found ${localSkillCount} local skills from .claude/skills/`);\n\n // Global skills loaded first, project skills second — project wins on conflict (later sources override)\n const allSkills = mergeSkills(pluginSkills, globalLocalSkills, localSkills);\n const totalSkillCount = typedKeys<SkillId>(allSkills).length;\n\n if (totalSkillCount === 0) {\n return { allSkills, totalSkillCount };\n }\n\n if (pluginSkillCount > 0 && totalSkillCount > pluginSkillCount) {\n const localCount = totalSkillCount - pluginSkillCount;\n this.log(\n `Discovered ${totalSkillCount} skills (${pluginSkillCount} from plugins, ${localCount} local)`,\n );\n } else if (pluginSkillCount > 0) {\n this.log(`Discovered ${pluginSkillCount} skills from plugins`);\n } else {\n this.log(`Discovered ${totalSkillCount} local skills`);\n }\n\n return { allSkills, totalSkillCount };\n }\n\n private async runCompilePass(params: {\n label: string;\n projectDir: string;\n installation: Installation;\n agentDefs: AgentSourcePaths;\n flags: CompileFlags;\n }): Promise<boolean> {\n const { label, projectDir, installation, agentDefs, flags } = params;\n\n this.log(\"\");\n this.log(`Compiling ${label.toLowerCase()} agents...`);\n this.log(\"\");\n\n verbose(` Project: ${projectDir}`);\n verbose(` Agents: ${installation.agentsDir}`);\n\n const { allSkills, totalSkillCount } = await this.discoverAllSkills(projectDir);\n\n if (totalSkillCount === 0) {\n this.log(`No skills found for ${label.toLowerCase()} pass, skipping`);\n return false;\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n projectDir,\n outputDir: installation.agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Recompiled ${recompileResult.compiled.length} ${label.toLowerCase()} agents (${recompileResult.failed.length} failed)`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`Recompiled ${recompileResult.compiled.length} ${label.toLowerCase()} agents`);\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(`${label} compile complete!`);\n this.log(\"\");\n\n return true;\n }\n\n private async resolveSourceForCompile(flags: CompileFlags): Promise<void> {\n this.log(STATUS_MESSAGES.RESOLVING_SOURCE);\n try {\n const sourceConfig = await resolveSource(flags.source);\n this.log(`Source: ${sourceConfig.sourceOrigin}`);\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);\n this.handleError(error);\n }\n }\n\n private async loadAgentDefsForCompile(flags: CompileFlags): Promise<AgentSourcePaths> {\n const projectDir = process.cwd();\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n projectDir,\n });\n this.log(flags[\"agent-source\"] ? \"Agent partials fetched\" : \"Agent partials loaded\");\n verbose(` Agents: ${agentDefs.agentsDir}`);\n verbose(` Templates: ${agentDefs.templatesDir}`);\n return agentDefs;\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);\n return this.handleError(error);\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigShow
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-YEGPTBX5.js";
|
|
5
|
+
import "../../chunk-53URJ5XK.js";
|
|
6
|
+
import "../../chunk-F3REOP7N.js";
|
|
7
7
|
import "../../chunk-T4EXUIBY.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-BKL3DF2Q.js";
|
|
9
|
+
import "../../chunk-EE5EPS32.js";
|
|
10
|
+
import "../../chunk-LMZXL5RQ.js";
|
|
11
|
+
import "../../chunk-EGMQ3SXN.js";
|
|
11
12
|
import "../../chunk-EC3UJRKZ.js";
|
|
12
13
|
import {
|
|
13
14
|
init_esm_shims
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/config/index.ts"],"sourcesContent":["import ConfigShow from \"./show.js\";\n\nexport default class Config extends ConfigShow {\n static summary = \"Show current effective configuration\";\n static description =\n \"Display the current effective configuration with all layers (env, project, default)\";\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/config/index.ts"],"sourcesContent":["import ConfigShow from \"./show.js\";\n\nexport default class Config extends ConfigShow {\n static summary = \"Show current effective configuration\";\n static description =\n \"Display the current effective configuration with all layers (env, project, default)\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA,IAAqB,SAArB,cAAoC,WAAW;AAAA,EAC7C,OAAO,UAAU;AAAA,EACjB,OAAO,cACL;AACJ;","names":[]}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getProjectConfigPath
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-53URJ5XK.js";
|
|
5
|
+
import "../../chunk-F3REOP7N.js";
|
|
6
6
|
import "../../chunk-T4EXUIBY.js";
|
|
7
|
+
import "../../chunk-BKL3DF2Q.js";
|
|
7
8
|
import {
|
|
8
9
|
BaseCommand
|
|
9
|
-
} from "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
10
|
+
} from "../../chunk-EE5EPS32.js";
|
|
11
|
+
import "../../chunk-LMZXL5RQ.js";
|
|
12
|
+
import "../../chunk-EGMQ3SXN.js";
|
|
12
13
|
import "../../chunk-EC3UJRKZ.js";
|
|
13
14
|
import {
|
|
14
15
|
init_esm_shims
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/config/path.ts"],"sourcesContent":["import { BaseCommand } from \"../../base-command.js\";\nimport { getProjectConfigPath } from \"../../lib/configuration/index.js\";\n\nexport default class ConfigPath extends BaseCommand {\n static summary = \"Show configuration file paths\";\n static description = \"Display the file path for the project configuration file\";\n\n static flags = {\n ...BaseCommand.baseFlags,\n };\n\n async run(): Promise<void> {\n await this.parse(ConfigPath);\n\n const projectDir = process.cwd();\n\n this.log(\"\\nConfiguration File Paths:\\n\");\n this.log(`Project: ${getProjectConfigPath(projectDir)}`);\n this.log(\"\");\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/config/path.ts"],"sourcesContent":["import { BaseCommand } from \"../../base-command.js\";\nimport { getProjectConfigPath } from \"../../lib/configuration/index.js\";\n\nexport default class ConfigPath extends BaseCommand {\n static summary = \"Show configuration file paths\";\n static description = \"Display the file path for the project configuration file\";\n\n static flags = {\n ...BaseCommand.baseFlags,\n };\n\n async run(): Promise<void> {\n await this.parse(ConfigPath);\n\n const projectDir = process.cwd();\n\n this.log(\"\\nConfiguration File Paths:\\n\");\n this.log(`Project: ${getProjectConfigPath(projectDir)}`);\n this.log(\"\");\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAGA,IAAqB,aAArB,MAAqB,oBAAmB,YAAY;AAAA,EAClD,OAAO,UAAU;AAAA,EACjB,OAAO,cAAc;AAAA,EAErB,OAAO,QAAQ;AAAA,IACb,GAAG,YAAY;AAAA,EACjB;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,WAAU;AAE3B,UAAM,aAAa,QAAQ,IAAI;AAE/B,SAAK,IAAI,+BAA+B;AACxC,SAAK,IAAI,YAAY,qBAAqB,UAAU,CAAC,EAAE;AACvD,SAAK,IAAI,EAAE;AAAA,EACb;AACF;","names":[]}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigShow
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-YEGPTBX5.js";
|
|
5
|
+
import "../../chunk-53URJ5XK.js";
|
|
6
|
+
import "../../chunk-F3REOP7N.js";
|
|
7
7
|
import "../../chunk-T4EXUIBY.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-BKL3DF2Q.js";
|
|
9
|
+
import "../../chunk-EE5EPS32.js";
|
|
10
|
+
import "../../chunk-LMZXL5RQ.js";
|
|
11
|
+
import "../../chunk-EGMQ3SXN.js";
|
|
11
12
|
import "../../chunk-EC3UJRKZ.js";
|
|
12
13
|
import "../../chunk-DHET7RCE.js";
|
|
13
14
|
export {
|
package/dist/commands/diff.js
CHANGED
|
@@ -2,24 +2,25 @@
|
|
|
2
2
|
import {
|
|
3
3
|
loadSkillsMatrixFromSource,
|
|
4
4
|
readForkedFromMetadata
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-53URJ5XK.js";
|
|
6
|
+
import "../chunk-F3REOP7N.js";
|
|
7
7
|
import "../chunk-T4EXUIBY.js";
|
|
8
|
+
import "../chunk-BKL3DF2Q.js";
|
|
8
9
|
import {
|
|
9
10
|
BaseCommand,
|
|
10
11
|
EXIT_CODES
|
|
11
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-EE5EPS32.js";
|
|
12
13
|
import {
|
|
13
14
|
fileExists,
|
|
14
15
|
getErrorMessage,
|
|
15
16
|
listDirectories,
|
|
16
17
|
readFile
|
|
17
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-LMZXL5RQ.js";
|
|
18
19
|
import {
|
|
19
20
|
CLI_BIN_NAME,
|
|
20
21
|
LOCAL_SKILLS_PATH,
|
|
21
22
|
STANDARD_FILES
|
|
22
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-EGMQ3SXN.js";
|
|
23
24
|
import "../chunk-EC3UJRKZ.js";
|
|
24
25
|
import {
|
|
25
26
|
init_esm_shims
|