@agents-inc/cli 0.85.0 → 0.87.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 +20 -0
- package/dist/{chunk-6VGBO6SZ.js → chunk-5M6Q5UQO.js} +2 -2
- package/dist/chunk-5UJJQFET.js +564 -0
- package/dist/chunk-5UJJQFET.js.map +1 -0
- package/dist/{chunk-TXW257CU.js → chunk-7FFNNDJQ.js} +181 -202
- package/dist/chunk-7FFNNDJQ.js.map +1 -0
- package/dist/{chunk-YJ2URWF7.js → chunk-B6MYECV6.js} +2 -2
- package/dist/{chunk-G2MINRWX.js → chunk-C5IYJ42F.js} +2 -2
- package/dist/{chunk-7UZUDHP7.js → chunk-CXWBVBDM.js} +2 -2
- package/dist/{chunk-CYPCJ536.js → chunk-FBZR46GC.js} +92 -92
- package/dist/chunk-FBZR46GC.js.map +1 -0
- package/dist/{chunk-LTFGEVTM.js → chunk-HH3AWXF4.js} +3 -3
- package/dist/{chunk-2XVLQDNI.js → chunk-HSLVCKVQ.js} +3 -3
- package/dist/{chunk-TAQGYJIS.js → chunk-HZ2IBXVQ.js} +3 -3
- package/dist/{chunk-LN76TJJP.js → chunk-HZQOFFKA.js} +10 -10
- package/dist/{chunk-W7LHI54P.js → chunk-I44YG6VI.js} +2 -2
- package/dist/{chunk-FT46LN7K.js → chunk-I5AZKNNL.js} +7 -8
- package/dist/chunk-I5AZKNNL.js.map +1 -0
- package/dist/chunk-J6PI73YV.js +68 -0
- package/dist/chunk-J6PI73YV.js.map +1 -0
- package/dist/{chunk-L7COG2EX.js → chunk-LZ7XQ3IU.js} +2 -2
- package/dist/{chunk-LMR7VAP3.js → chunk-MMTMXLI4.js} +2 -2
- package/dist/chunk-N6A7A4RA.js +16 -0
- package/dist/chunk-N6A7A4RA.js.map +1 -0
- package/dist/{chunk-WJKD6EGK.js → chunk-NUU3U43A.js} +5 -6
- package/dist/chunk-NUU3U43A.js.map +1 -0
- package/dist/{chunk-YYIWB42G.js → chunk-Q4DMIPZB.js} +2 -2
- package/dist/{chunk-YSLDMYWP.js → chunk-SGZOFIFF.js} +2 -2
- package/dist/{chunk-FKXD3EXJ.js → chunk-TMTUTUEV.js} +42 -228
- package/dist/chunk-TMTUTUEV.js.map +1 -0
- package/dist/{chunk-WCCWQ56J.js → chunk-UNEJKTLP.js} +3 -3
- package/dist/{chunk-ZGD7PLLC.js → chunk-ZOWRO7UQ.js} +3 -3
- package/dist/commands/build/marketplace.js +3 -3
- package/dist/commands/build/plugins.js +5 -5
- package/dist/commands/build/stack.js +5 -5
- package/dist/commands/compile.js +77 -171
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/index.js +5 -5
- package/dist/commands/config/path.js +4 -4
- package/dist/commands/config/show.js +5 -5
- package/dist/commands/diff.js +161 -167
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +68 -83
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +275 -209
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +206 -124
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +175 -144
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +58 -102
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.js +19 -16
- package/dist/commands/list.js +4 -4
- package/dist/commands/new/agent.js +124 -102
- package/dist/commands/new/agent.js.map +1 -1
- package/dist/commands/new/marketplace.js +6 -6
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/new/skill.js +328 -15
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +16 -24
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +166 -132
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +269 -189
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +238 -219
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate.js +4 -4
- package/dist/components/skill-search/skill-search.js +2 -1
- package/dist/components/wizard/category-grid.test.js +4 -4
- package/dist/components/wizard/domain-selection.js +5 -5
- package/dist/components/wizard/help-modal.js +5 -5
- package/dist/components/wizard/source-grid.test.js +4 -4
- package/dist/components/wizard/stack-selection.js +5 -5
- package/dist/components/wizard/step-agents.js +5 -5
- package/dist/components/wizard/step-agents.test.js +5 -5
- package/dist/components/wizard/step-build.js +5 -5
- package/dist/components/wizard/step-build.test.js +5 -5
- package/dist/components/wizard/step-confirm.test.js +4 -4
- package/dist/components/wizard/step-settings.js +4 -4
- package/dist/components/wizard/step-settings.test.js +7 -7
- package/dist/components/wizard/step-sources.js +5 -5
- package/dist/components/wizard/step-sources.test.js +5 -5
- package/dist/components/wizard/step-stack.js +6 -6
- package/dist/components/wizard/step-stack.test.js +6 -6
- package/dist/components/wizard/wizard-layout.js +6 -6
- package/dist/components/wizard/wizard.js +14 -14
- package/dist/hooks/init.js +19 -16
- package/dist/hooks/init.js.map +1 -1
- package/dist/{loader-GT2A7R7U.js → loader-GSEGPK64.js} +3 -3
- package/dist/{source-loader-TNQW4P47.js → source-loader-OGFTIRIX.js} +4 -4
- package/dist/{source-manager-INRXRFJE.js → source-manager-FMMDDVZA.js} +4 -4
- package/dist/stores/wizard-store.js +4 -4
- package/dist/stores/wizard-store.test.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-AABH2HSE.js +0 -340
- package/dist/chunk-AABH2HSE.js.map +0 -1
- package/dist/chunk-CYPCJ536.js.map +0 -1
- package/dist/chunk-FKXD3EXJ.js.map +0 -1
- package/dist/chunk-FT46LN7K.js.map +0 -1
- package/dist/chunk-TXW257CU.js.map +0 -1
- package/dist/chunk-WJKD6EGK.js.map +0 -1
- /package/dist/{chunk-6VGBO6SZ.js.map → chunk-5M6Q5UQO.js.map} +0 -0
- /package/dist/{chunk-YJ2URWF7.js.map → chunk-B6MYECV6.js.map} +0 -0
- /package/dist/{chunk-G2MINRWX.js.map → chunk-C5IYJ42F.js.map} +0 -0
- /package/dist/{chunk-7UZUDHP7.js.map → chunk-CXWBVBDM.js.map} +0 -0
- /package/dist/{chunk-LTFGEVTM.js.map → chunk-HH3AWXF4.js.map} +0 -0
- /package/dist/{chunk-2XVLQDNI.js.map → chunk-HSLVCKVQ.js.map} +0 -0
- /package/dist/{chunk-TAQGYJIS.js.map → chunk-HZ2IBXVQ.js.map} +0 -0
- /package/dist/{chunk-LN76TJJP.js.map → chunk-HZQOFFKA.js.map} +0 -0
- /package/dist/{chunk-W7LHI54P.js.map → chunk-I44YG6VI.js.map} +0 -0
- /package/dist/{chunk-L7COG2EX.js.map → chunk-LZ7XQ3IU.js.map} +0 -0
- /package/dist/{chunk-LMR7VAP3.js.map → chunk-MMTMXLI4.js.map} +0 -0
- /package/dist/{chunk-YYIWB42G.js.map → chunk-Q4DMIPZB.js.map} +0 -0
- /package/dist/{chunk-YSLDMYWP.js.map → chunk-SGZOFIFF.js.map} +0 -0
- /package/dist/{chunk-WCCWQ56J.js.map → chunk-UNEJKTLP.js.map} +0 -0
- /package/dist/{chunk-ZGD7PLLC.js.map → chunk-ZOWRO7UQ.js.map} +0 -0
- /package/dist/{loader-GT2A7R7U.js.map → loader-GSEGPK64.js.map} +0 -0
- /package/dist/{source-loader-TNQW4P47.js.map → source-loader-OGFTIRIX.js.map} +0 -0
- /package/dist/{source-manager-INRXRFJE.js.map → source-manager-FMMDDVZA.js.map} +0 -0
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
} from "./chunk-NL5EB57E.js";
|
|
14
14
|
import {
|
|
15
15
|
HelpModal
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-CXWBVBDM.js";
|
|
17
17
|
import {
|
|
18
18
|
useWizardStore
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-HSLVCKVQ.js";
|
|
20
20
|
import {
|
|
21
21
|
HOTKEY_FILTER_INCOMPATIBLE,
|
|
22
22
|
HOTKEY_HELP,
|
|
@@ -250,4 +250,4 @@ var WizardLayout = ({
|
|
|
250
250
|
export {
|
|
251
251
|
WizardLayout
|
|
252
252
|
};
|
|
253
|
-
//# sourceMappingURL=chunk-
|
|
253
|
+
//# sourceMappingURL=chunk-UNEJKTLP.js.map
|
|
@@ -24,11 +24,11 @@ import {
|
|
|
24
24
|
addSource,
|
|
25
25
|
getSourceSummary,
|
|
26
26
|
removeSource
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-TMTUTUEV.js";
|
|
28
28
|
import {
|
|
29
29
|
getErrorMessage,
|
|
30
30
|
verbose
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-NUU3U43A.js";
|
|
32
32
|
import {
|
|
33
33
|
CLI_COLORS
|
|
34
34
|
} from "./chunk-6PGL2XMY.js";
|
|
@@ -263,4 +263,4 @@ var StepSettings = ({
|
|
|
263
263
|
export {
|
|
264
264
|
StepSettings
|
|
265
265
|
};
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
266
|
+
//# sourceMappingURL=chunk-ZOWRO7UQ.js.map
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
generateMarketplace,
|
|
4
4
|
getMarketplaceStats,
|
|
5
5
|
writeMarketplace
|
|
6
|
-
} from "../../chunk-
|
|
6
|
+
} from "../../chunk-I44YG6VI.js";
|
|
7
7
|
import {
|
|
8
8
|
BaseCommand
|
|
9
|
-
} from "../../chunk-
|
|
9
|
+
} from "../../chunk-MMTMXLI4.js";
|
|
10
10
|
import {
|
|
11
11
|
setVerbose
|
|
12
|
-
} from "../../chunk-
|
|
12
|
+
} from "../../chunk-NUU3U43A.js";
|
|
13
13
|
import "../../chunk-6XWHJHNZ.js";
|
|
14
14
|
import {
|
|
15
15
|
DEFAULT_BRANDING,
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
import {
|
|
3
3
|
compileAllAgentPlugins,
|
|
4
4
|
printAgentCompilationSummary
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-FBZR46GC.js";
|
|
6
6
|
import {
|
|
7
7
|
compileAllSkillPlugins,
|
|
8
8
|
compileSkillPlugin,
|
|
9
9
|
printCompilationSummary
|
|
10
|
-
} from "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
10
|
+
} from "../../chunk-TMTUTUEV.js";
|
|
11
|
+
import "../../chunk-B6MYECV6.js";
|
|
12
12
|
import "../../chunk-ANXHMG32.js";
|
|
13
13
|
import {
|
|
14
14
|
BaseCommand
|
|
15
|
-
} from "../../chunk-
|
|
15
|
+
} from "../../chunk-MMTMXLI4.js";
|
|
16
16
|
import {
|
|
17
17
|
setVerbose
|
|
18
|
-
} from "../../chunk-
|
|
18
|
+
} from "../../chunk-NUU3U43A.js";
|
|
19
19
|
import "../../chunk-6XWHJHNZ.js";
|
|
20
20
|
import {
|
|
21
21
|
DIRS
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getAgentDefinitions
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-FBZR46GC.js";
|
|
5
5
|
import {
|
|
6
6
|
compileStackPlugin,
|
|
7
7
|
loadStacks,
|
|
8
8
|
printStackCompilationSummary
|
|
9
|
-
} from "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
9
|
+
} from "../../chunk-TMTUTUEV.js";
|
|
10
|
+
import "../../chunk-B6MYECV6.js";
|
|
11
11
|
import "../../chunk-ANXHMG32.js";
|
|
12
12
|
import {
|
|
13
13
|
BaseCommand,
|
|
14
14
|
EXIT_CODES
|
|
15
|
-
} from "../../chunk-
|
|
15
|
+
} from "../../chunk-MMTMXLI4.js";
|
|
16
16
|
import {
|
|
17
17
|
setVerbose
|
|
18
|
-
} from "../../chunk-
|
|
18
|
+
} from "../../chunk-NUU3U43A.js";
|
|
19
19
|
import "../../chunk-6XWHJHNZ.js";
|
|
20
20
|
import {
|
|
21
21
|
PROJECT_ROOT,
|
package/dist/commands/compile.js
CHANGED
|
@@ -1,47 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
getAgentDefinitions,
|
|
4
|
-
recompileAgents
|
|
5
|
-
} from "../chunk-CYPCJ536.js";
|
|
6
2
|
import {
|
|
7
3
|
ERROR_MESSAGES,
|
|
8
4
|
INFO_MESSAGES,
|
|
9
5
|
STATUS_MESSAGES
|
|
10
6
|
} from "../chunk-B7KZLXHV.js";
|
|
11
7
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
parseFrontmatter
|
|
21
|
-
} from "../chunk-YJ2URWF7.js";
|
|
8
|
+
compileAgents,
|
|
9
|
+
detectBothInstallations,
|
|
10
|
+
discoverInstalledSkills,
|
|
11
|
+
loadAgentDefs
|
|
12
|
+
} from "../chunk-5UJJQFET.js";
|
|
13
|
+
import "../chunk-N6A7A4RA.js";
|
|
14
|
+
import "../chunk-FBZR46GC.js";
|
|
22
15
|
import {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
resolveSource
|
|
17
|
+
} from "../chunk-TMTUTUEV.js";
|
|
18
|
+
import "../chunk-B6MYECV6.js";
|
|
19
|
+
import "../chunk-ANXHMG32.js";
|
|
26
20
|
import {
|
|
27
21
|
BaseCommand,
|
|
28
22
|
EXIT_CODES
|
|
29
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-MMTMXLI4.js";
|
|
30
24
|
import {
|
|
31
|
-
directoryExists,
|
|
32
|
-
fileExists,
|
|
33
|
-
glob,
|
|
34
|
-
readFile,
|
|
35
25
|
setVerbose,
|
|
36
|
-
verbose
|
|
37
|
-
|
|
38
|
-
} from "../chunk-WJKD6EGK.js";
|
|
26
|
+
verbose
|
|
27
|
+
} from "../chunk-NUU3U43A.js";
|
|
39
28
|
import "../chunk-6XWHJHNZ.js";
|
|
40
29
|
import {
|
|
41
|
-
CLI_BIN_NAME
|
|
42
|
-
GLOBAL_INSTALL_ROOT,
|
|
43
|
-
LOCAL_SKILLS_PATH,
|
|
44
|
-
STANDARD_FILES
|
|
30
|
+
CLI_BIN_NAME
|
|
45
31
|
} from "../chunk-6PGL2XMY.js";
|
|
46
32
|
import "../chunk-NPMMU4GY.js";
|
|
47
33
|
import {
|
|
@@ -52,62 +38,6 @@ import {
|
|
|
52
38
|
init_esm_shims();
|
|
53
39
|
import { Flags } from "@oclif/core";
|
|
54
40
|
import os from "os";
|
|
55
|
-
import path from "path";
|
|
56
|
-
async function loadSkillsFromDir(skillsDir, pathPrefix = "") {
|
|
57
|
-
const skills = {};
|
|
58
|
-
if (!await directoryExists(skillsDir)) {
|
|
59
|
-
return skills;
|
|
60
|
-
}
|
|
61
|
-
const skillFiles = await glob("**/SKILL.md", skillsDir);
|
|
62
|
-
for (const skillFile of skillFiles) {
|
|
63
|
-
const skillPath = path.join(skillsDir, skillFile);
|
|
64
|
-
const skillDir = path.dirname(skillPath);
|
|
65
|
-
const relativePath = path.relative(skillsDir, skillDir);
|
|
66
|
-
const skillDirName = path.basename(skillDir);
|
|
67
|
-
const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);
|
|
68
|
-
if (!await fileExists(metadataPath)) {
|
|
69
|
-
const displayPath = pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`;
|
|
70
|
-
warn(
|
|
71
|
-
`Skill '${skillDirName}' in '${displayPath}' is missing ${STANDARD_FILES.METADATA_YAML} \u2014 skipped. Add ${STANDARD_FILES.METADATA_YAML} to register it with the CLI.`
|
|
72
|
-
);
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
try {
|
|
76
|
-
const content = await readFile(skillPath);
|
|
77
|
-
const frontmatter = parseFrontmatter(content, skillPath);
|
|
78
|
-
if (!frontmatter?.name) {
|
|
79
|
-
warn(`Skipping skill in '${skillDirName}': missing or invalid frontmatter name`);
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
const canonicalId = frontmatter.name;
|
|
83
|
-
const skill = {
|
|
84
|
-
id: canonicalId,
|
|
85
|
-
path: pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`,
|
|
86
|
-
description: frontmatter?.description || ""
|
|
87
|
-
};
|
|
88
|
-
skills[canonicalId] = skill;
|
|
89
|
-
verbose(` Loaded skill: ${canonicalId}`);
|
|
90
|
-
} catch (error) {
|
|
91
|
-
verbose(` Failed to load skill: ${skillFile} - ${error}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return skills;
|
|
95
|
-
}
|
|
96
|
-
async function discoverLocalProjectSkills(projectDir) {
|
|
97
|
-
const localSkillsDir = path.join(projectDir, LOCAL_SKILLS_PATH);
|
|
98
|
-
return loadSkillsFromDir(localSkillsDir, LOCAL_SKILLS_PATH);
|
|
99
|
-
}
|
|
100
|
-
function mergeSkills(...skillSources) {
|
|
101
|
-
const merged = {};
|
|
102
|
-
for (const source of skillSources) {
|
|
103
|
-
for (const [id, skill] of typedEntries(source)) {
|
|
104
|
-
if (skill) {
|
|
105
|
-
merged[id] = skill;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return merged;
|
|
110
|
-
}
|
|
111
41
|
var Compile = class _Compile extends BaseCommand {
|
|
112
42
|
static summary = "Compile agents using local skills and agent definitions";
|
|
113
43
|
static description = "Compile agents with resolved skill references. Compiles to the Claude plugin directory.";
|
|
@@ -130,37 +60,65 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
130
60
|
const { flags } = await this.parse(_Compile);
|
|
131
61
|
setVerbose(flags.verbose);
|
|
132
62
|
const cwd = process.cwd();
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
63
|
+
const installations = await this.detectInstallations(cwd);
|
|
64
|
+
await this.resolveAndLogSource(flags.source);
|
|
65
|
+
const agentDefs = await this.loadAgentDefsOrFail(flags, cwd);
|
|
66
|
+
await this.compileAllScopes(installations, agentDefs, cwd);
|
|
67
|
+
}
|
|
68
|
+
async detectInstallations(cwd) {
|
|
69
|
+
const installations = await detectBothInstallations(cwd);
|
|
70
|
+
if (!installations.global && !installations.project) {
|
|
137
71
|
this.error(ERROR_MESSAGES.NO_INSTALLATION, {
|
|
138
72
|
exit: EXIT_CODES.ERROR
|
|
139
73
|
});
|
|
140
74
|
}
|
|
141
|
-
|
|
142
|
-
|
|
75
|
+
return installations;
|
|
76
|
+
}
|
|
77
|
+
async resolveAndLogSource(sourceFlag) {
|
|
78
|
+
this.log(STATUS_MESSAGES.RESOLVING_SOURCE);
|
|
79
|
+
try {
|
|
80
|
+
const sourceConfig = await resolveSource(sourceFlag);
|
|
81
|
+
this.log(`Source: ${sourceConfig.sourceOrigin}`);
|
|
82
|
+
} catch (error) {
|
|
83
|
+
this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);
|
|
84
|
+
this.handleError(error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async loadAgentDefsOrFail(flags, cwd) {
|
|
88
|
+
this.log(
|
|
89
|
+
flags["agent-source"] ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS : STATUS_MESSAGES.LOADING_AGENT_PARTIALS
|
|
90
|
+
);
|
|
91
|
+
try {
|
|
92
|
+
const defs = await loadAgentDefs(flags["agent-source"], { projectDir: cwd });
|
|
93
|
+
this.log(flags["agent-source"] ? "Agent partials fetched" : "Agent partials loaded");
|
|
94
|
+
verbose(` Agents: ${defs.agentSourcePaths.agentsDir}`);
|
|
95
|
+
verbose(` Templates: ${defs.agentSourcePaths.templatesDir}`);
|
|
96
|
+
return defs;
|
|
97
|
+
} catch (error) {
|
|
98
|
+
this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);
|
|
99
|
+
this.handleError(error);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async compileAllScopes(installations, agentDefs, cwd) {
|
|
103
|
+
const homeDir = os.homedir();
|
|
143
104
|
let totalPassesWithSkills = 0;
|
|
144
|
-
|
|
145
|
-
if (globalInstallation) {
|
|
105
|
+
if (installations.global) {
|
|
146
106
|
const hadSkills = await this.runCompilePass({
|
|
147
107
|
label: "Global",
|
|
148
108
|
projectDir: homeDir,
|
|
149
|
-
installation:
|
|
150
|
-
agentDefs,
|
|
151
|
-
|
|
152
|
-
scopeFilter: hasBothScopes ? "global" : void 0
|
|
109
|
+
installation: installations.global,
|
|
110
|
+
sourcePath: agentDefs.sourcePath,
|
|
111
|
+
scopeFilter: installations.hasBoth ? "global" : void 0
|
|
153
112
|
});
|
|
154
113
|
if (hadSkills) totalPassesWithSkills++;
|
|
155
114
|
}
|
|
156
|
-
if (
|
|
115
|
+
if (installations.project) {
|
|
157
116
|
const hadSkills = await this.runCompilePass({
|
|
158
117
|
label: "Project",
|
|
159
118
|
projectDir: cwd,
|
|
160
|
-
installation:
|
|
161
|
-
agentDefs,
|
|
162
|
-
|
|
163
|
-
scopeFilter: hasBothScopes ? "project" : void 0
|
|
119
|
+
installation: installations.project,
|
|
120
|
+
sourcePath: agentDefs.sourcePath,
|
|
121
|
+
scopeFilter: installations.hasBoth ? "project" : void 0
|
|
164
122
|
});
|
|
165
123
|
if (hadSkills) totalPassesWithSkills++;
|
|
166
124
|
}
|
|
@@ -171,46 +129,26 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
171
129
|
);
|
|
172
130
|
}
|
|
173
131
|
}
|
|
174
|
-
async discoverAllSkills(projectDir
|
|
132
|
+
async discoverAllSkills(projectDir) {
|
|
175
133
|
this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if (globalPluginSkillCount > 0) {
|
|
180
|
-
verbose(` Found ${globalPluginSkillCount} skills from global plugins`);
|
|
181
|
-
}
|
|
182
|
-
const globalLocalSkillsDir = path.join(GLOBAL_INSTALL_ROOT, LOCAL_SKILLS_PATH);
|
|
183
|
-
const globalLocalSkills = isGlobalProject ? {} : await loadSkillsFromDir(globalLocalSkillsDir, LOCAL_SKILLS_PATH);
|
|
184
|
-
const globalLocalSkillCount = typedKeys(globalLocalSkills).length;
|
|
185
|
-
if (globalLocalSkillCount > 0) {
|
|
186
|
-
verbose(` Found ${globalLocalSkillCount} global local skills from ~/.claude/skills/`);
|
|
187
|
-
}
|
|
188
|
-
const pluginSkills = await discoverAllPluginSkills(projectDir);
|
|
189
|
-
const pluginSkillCount = typedKeys(pluginSkills).length;
|
|
190
|
-
verbose(` Found ${pluginSkillCount} skills from installed plugins`);
|
|
191
|
-
const localSkills = await discoverLocalProjectSkills(projectDir);
|
|
192
|
-
const localSkillCount = typedKeys(localSkills).length;
|
|
193
|
-
verbose(` Found ${localSkillCount} local skills from .claude/skills/`);
|
|
194
|
-
const allSkills = mergeSkills(globalPluginSkills, globalLocalSkills, pluginSkills, localSkills);
|
|
195
|
-
const totalSkillCount = typedKeys(allSkills).length;
|
|
196
|
-
if (totalSkillCount === 0) {
|
|
197
|
-
return { allSkills, totalSkillCount };
|
|
134
|
+
const result = await discoverInstalledSkills(projectDir);
|
|
135
|
+
if (result.totalSkillCount === 0) {
|
|
136
|
+
return result;
|
|
198
137
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const localCount = totalSkillCount - totalPluginSkillCount;
|
|
138
|
+
if (result.pluginSkillCount > 0 && result.totalSkillCount > result.pluginSkillCount) {
|
|
139
|
+
const localCount = result.totalSkillCount - result.pluginSkillCount;
|
|
202
140
|
this.log(
|
|
203
|
-
`Discovered ${totalSkillCount} skills (${
|
|
141
|
+
`Discovered ${result.totalSkillCount} skills (${result.pluginSkillCount} from plugins, ${localCount} local)`
|
|
204
142
|
);
|
|
205
|
-
} else if (
|
|
206
|
-
this.log(`Discovered ${
|
|
143
|
+
} else if (result.pluginSkillCount > 0) {
|
|
144
|
+
this.log(`Discovered ${result.pluginSkillCount} skills from plugins`);
|
|
207
145
|
} else {
|
|
208
|
-
this.log(`Discovered ${totalSkillCount} local skills`);
|
|
146
|
+
this.log(`Discovered ${result.totalSkillCount} local skills`);
|
|
209
147
|
}
|
|
210
|
-
return
|
|
148
|
+
return result;
|
|
211
149
|
}
|
|
212
150
|
async runCompilePass(params) {
|
|
213
|
-
const { label, projectDir, installation,
|
|
151
|
+
const { label, projectDir, installation, sourcePath, scopeFilter } = params;
|
|
214
152
|
this.log("");
|
|
215
153
|
this.log(`Compiling ${label.toLowerCase()} agents...`);
|
|
216
154
|
this.log("");
|
|
@@ -221,19 +159,15 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
221
159
|
this.log(`No skills found for ${label.toLowerCase()} pass, skipping`);
|
|
222
160
|
return false;
|
|
223
161
|
}
|
|
224
|
-
const loadedConfig = await loadProjectConfigFromDir(projectDir);
|
|
225
|
-
const agentScopeMap = loadedConfig?.config ? buildAgentScopeMap(loadedConfig.config) : void 0;
|
|
226
|
-
const filteredAgents = scopeFilter && loadedConfig?.config?.agents ? loadedConfig.config.agents.filter((a) => a.scope === scopeFilter).map((a) => a.name) : void 0;
|
|
227
162
|
this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);
|
|
228
163
|
try {
|
|
229
|
-
const recompileResult = await
|
|
230
|
-
pluginDir: projectDir,
|
|
231
|
-
sourcePath: agentDefs.sourcePath,
|
|
232
|
-
skills: allSkills,
|
|
164
|
+
const recompileResult = await compileAgents({
|
|
233
165
|
projectDir,
|
|
166
|
+
sourcePath,
|
|
167
|
+
skills: allSkills,
|
|
168
|
+
pluginDir: projectDir,
|
|
234
169
|
outputDir: installation.agentsDir,
|
|
235
|
-
|
|
236
|
-
agents: filteredAgents
|
|
170
|
+
scopeFilter
|
|
237
171
|
});
|
|
238
172
|
if (recompileResult.failed.length > 0) {
|
|
239
173
|
this.log(
|
|
@@ -259,34 +193,6 @@ var Compile = class _Compile extends BaseCommand {
|
|
|
259
193
|
this.log("");
|
|
260
194
|
return true;
|
|
261
195
|
}
|
|
262
|
-
async resolveSourceForCompile(flags) {
|
|
263
|
-
this.log(STATUS_MESSAGES.RESOLVING_SOURCE);
|
|
264
|
-
try {
|
|
265
|
-
const sourceConfig = await resolveSource(flags.source);
|
|
266
|
-
this.log(`Source: ${sourceConfig.sourceOrigin}`);
|
|
267
|
-
} catch (error) {
|
|
268
|
-
this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);
|
|
269
|
-
this.handleError(error);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
async loadAgentDefsForCompile(flags) {
|
|
273
|
-
const projectDir = process.cwd();
|
|
274
|
-
this.log(
|
|
275
|
-
flags["agent-source"] ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS : STATUS_MESSAGES.LOADING_AGENT_PARTIALS
|
|
276
|
-
);
|
|
277
|
-
try {
|
|
278
|
-
const agentDefs = await getAgentDefinitions(flags["agent-source"], {
|
|
279
|
-
projectDir
|
|
280
|
-
});
|
|
281
|
-
this.log(flags["agent-source"] ? "Agent partials fetched" : "Agent partials loaded");
|
|
282
|
-
verbose(` Agents: ${agentDefs.agentsDir}`);
|
|
283
|
-
verbose(` Templates: ${agentDefs.templatesDir}`);
|
|
284
|
-
return agentDefs;
|
|
285
|
-
} catch (error) {
|
|
286
|
-
this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);
|
|
287
|
-
return this.handleError(error);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
196
|
};
|
|
291
197
|
export {
|
|
292
198
|
Compile as default
|
|
@@ -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, 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 buildAgentScopeMap,\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 if (!frontmatter?.name) {\n warn(`Skipping skill in '${skillDirName}': missing or invalid frontmatter name`);\n continue;\n }\n\n const canonicalId = frontmatter.name;\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 // When both installations exist, filter each pass to its own scope to prevent\n // the project pass from overwriting global agents with zero-skill versions\n // (the project config's stack only has project agent entries).\n const hasBothScopes = !!globalInstallation && !!projectInstallation;\n\n if (globalInstallation) {\n const hadSkills = await this.runCompilePass({\n label: \"Global\",\n projectDir: homeDir,\n installation: globalInstallation,\n agentDefs,\n flags,\n scopeFilter: hasBothScopes ? \"global\" : undefined,\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 scopeFilter: hasBothScopes ? \"project\" : undefined,\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 // Load global plugins (skip if projectDir is already the home directory to avoid double-loading)\n const isGlobalProject = projectDir === os.homedir();\n const globalPluginSkills = isGlobalProject ? {} : await discoverAllPluginSkills(os.homedir());\n const globalPluginSkillCount = typedKeys<SkillId>(globalPluginSkills).length;\n if (globalPluginSkillCount > 0) {\n verbose(` Found ${globalPluginSkillCount} skills from global plugins`);\n }\n\n // Load global local skills (skip if projectDir is already the home directory to avoid double-loading)\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 pluginSkills = await discoverAllPluginSkills(projectDir);\n const pluginSkillCount = typedKeys<SkillId>(pluginSkills).length;\n verbose(` Found ${pluginSkillCount} skills from installed plugins`);\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(globalPluginSkills, globalLocalSkills, pluginSkills, localSkills);\n const totalSkillCount = typedKeys<SkillId>(allSkills).length;\n\n if (totalSkillCount === 0) {\n return { allSkills, totalSkillCount };\n }\n\n const totalPluginSkillCount = globalPluginSkillCount + pluginSkillCount;\n if (totalPluginSkillCount > 0 && totalSkillCount > totalPluginSkillCount) {\n const localCount = totalSkillCount - totalPluginSkillCount;\n this.log(\n `Discovered ${totalSkillCount} skills (${totalPluginSkillCount} from plugins, ${localCount} local)`,\n );\n } else if (totalPluginSkillCount > 0) {\n this.log(`Discovered ${totalPluginSkillCount} 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 /** When true, only compile agents matching this scope (filters out agents handled by another pass) */\n scopeFilter?: \"project\" | \"global\";\n }): Promise<boolean> {\n const { label, projectDir, installation, agentDefs, flags, scopeFilter } = 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 // Load config to build scope map so agents are routed to the correct directory\n const loadedConfig = await loadProjectConfigFromDir(projectDir);\n const agentScopeMap = loadedConfig?.config\n ? buildAgentScopeMap(loadedConfig.config)\n : undefined;\n\n // When a scope filter is active, only compile agents matching that scope.\n // This prevents the project pass from overwriting global agents (which were already compiled\n // in the global pass) with zero-skill versions (the project stack only has project entries).\n const filteredAgents =\n scopeFilter && loadedConfig?.config?.agents\n ? loadedConfig.config.agents.filter((a) => a.scope === scopeFilter).map((a) => a.name)\n : undefined;\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 agentScopeMap,\n agents: filteredAgents,\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
|
+
{"version":3,"sources":["../../src/cli/commands/compile.ts"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport os from \"os\";\nimport { BaseCommand } from \"../base-command\";\nimport { setVerbose, verbose } from \"../utils/logger\";\nimport {\n detectBothInstallations,\n type BothInstallations,\n loadAgentDefs,\n type AgentDefs,\n compileAgents,\n discoverInstalledSkills,\n type DiscoveredSkills,\n} from \"../lib/operations\";\nimport { resolveSource } from \"../lib/configuration\";\nimport { CLI_BIN_NAME } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport { ERROR_MESSAGES, STATUS_MESSAGES, INFO_MESSAGES } from \"../utils/messages\";\nimport { type Installation } from \"../lib/installation\";\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 setVerbose(flags.verbose);\n const cwd = process.cwd();\n\n const installations = await this.detectInstallations(cwd);\n await this.resolveAndLogSource(flags.source);\n const agentDefs = await this.loadAgentDefsOrFail(flags, cwd);\n await this.compileAllScopes(installations, agentDefs, cwd);\n }\n\n private async detectInstallations(cwd: string): Promise<BothInstallations> {\n const installations = await detectBothInstallations(cwd);\n\n if (!installations.global && !installations.project) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n return installations;\n }\n\n private async resolveAndLogSource(sourceFlag?: string): Promise<void> {\n this.log(STATUS_MESSAGES.RESOLVING_SOURCE);\n try {\n const sourceConfig = await resolveSource(sourceFlag);\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 loadAgentDefsOrFail(\n flags: { \"agent-source\"?: string },\n cwd: string,\n ): Promise<AgentDefs> {\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n try {\n const defs = await loadAgentDefs(flags[\"agent-source\"], { projectDir: cwd });\n this.log(flags[\"agent-source\"] ? \"Agent partials fetched\" : \"Agent partials loaded\");\n verbose(` Agents: ${defs.agentSourcePaths.agentsDir}`);\n verbose(` Templates: ${defs.agentSourcePaths.templatesDir}`);\n return defs;\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);\n this.handleError(error);\n }\n }\n\n private async compileAllScopes(\n installations: BothInstallations,\n agentDefs: AgentDefs,\n cwd: string,\n ): Promise<void> {\n const homeDir = os.homedir();\n let totalPassesWithSkills = 0;\n\n // When both installations exist, filter each pass to its own scope to prevent\n // the project pass from overwriting global agents with zero-skill versions\n // (the project config's stack only has project agent entries).\n if (installations.global) {\n const hadSkills = await this.runCompilePass({\n label: \"Global\",\n projectDir: homeDir,\n installation: installations.global,\n sourcePath: agentDefs.sourcePath,\n scopeFilter: installations.hasBoth ? \"global\" : undefined,\n });\n if (hadSkills) totalPassesWithSkills++;\n }\n\n if (installations.project) {\n const hadSkills = await this.runCompilePass({\n label: \"Project\",\n projectDir: cwd,\n installation: installations.project,\n sourcePath: agentDefs.sourcePath,\n scopeFilter: installations.hasBoth ? \"project\" : undefined,\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): Promise<DiscoveredSkills> {\n this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);\n const result = await discoverInstalledSkills(projectDir);\n\n if (result.totalSkillCount === 0) {\n return result;\n }\n\n if (result.pluginSkillCount > 0 && result.totalSkillCount > result.pluginSkillCount) {\n const localCount = result.totalSkillCount - result.pluginSkillCount;\n this.log(\n `Discovered ${result.totalSkillCount} skills (${result.pluginSkillCount} from plugins, ${localCount} local)`,\n );\n } else if (result.pluginSkillCount > 0) {\n this.log(`Discovered ${result.pluginSkillCount} skills from plugins`);\n } else {\n this.log(`Discovered ${result.totalSkillCount} local skills`);\n }\n\n return result;\n }\n\n private async runCompilePass(params: {\n label: string;\n projectDir: string;\n installation: Installation;\n sourcePath: string;\n scopeFilter?: \"project\" | \"global\";\n }): Promise<boolean> {\n const { label, projectDir, installation, sourcePath, scopeFilter } = 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 compileAgents({\n projectDir,\n sourcePath,\n skills: allSkills,\n pluginDir: projectDir,\n outputDir: installation.agentsDir,\n scopeFilter,\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"],"mappings":"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","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigShow
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-HZ2IBXVQ.js";
|
|
5
|
+
import "../../chunk-TMTUTUEV.js";
|
|
6
|
+
import "../../chunk-B6MYECV6.js";
|
|
7
7
|
import "../../chunk-ANXHMG32.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-MMTMXLI4.js";
|
|
9
|
+
import "../../chunk-NUU3U43A.js";
|
|
10
10
|
import "../../chunk-6XWHJHNZ.js";
|
|
11
11
|
import "../../chunk-6PGL2XMY.js";
|
|
12
12
|
import "../../chunk-NPMMU4GY.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getProjectConfigPath
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-TMTUTUEV.js";
|
|
5
|
+
import "../../chunk-B6MYECV6.js";
|
|
6
6
|
import "../../chunk-ANXHMG32.js";
|
|
7
7
|
import {
|
|
8
8
|
BaseCommand
|
|
9
|
-
} from "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
9
|
+
} from "../../chunk-MMTMXLI4.js";
|
|
10
|
+
import "../../chunk-NUU3U43A.js";
|
|
11
11
|
import "../../chunk-6XWHJHNZ.js";
|
|
12
12
|
import "../../chunk-6PGL2XMY.js";
|
|
13
13
|
import "../../chunk-NPMMU4GY.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigShow
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-HZ2IBXVQ.js";
|
|
5
|
+
import "../../chunk-TMTUTUEV.js";
|
|
6
|
+
import "../../chunk-B6MYECV6.js";
|
|
7
7
|
import "../../chunk-ANXHMG32.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-MMTMXLI4.js";
|
|
9
|
+
import "../../chunk-NUU3U43A.js";
|
|
10
10
|
import "../../chunk-6XWHJHNZ.js";
|
|
11
11
|
import "../../chunk-6PGL2XMY.js";
|
|
12
12
|
import "../../chunk-NPMMU4GY.js";
|