kyro-ai 3.3.0 → 3.3.2
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/.claude-plugin/plugin.json +1 -1
- package/WORKFLOW.yaml +1 -1
- package/dist/cli/adapters/codex.d.ts.map +1 -1
- package/dist/cli/adapters/codex.js +24 -0
- package/dist/cli/adapters/codex.js.map +1 -1
- package/dist/cli/adapters/command-skills.d.ts +3 -0
- package/dist/cli/adapters/command-skills.d.ts.map +1 -1
- package/dist/cli/adapters/command-skills.js +16 -4
- package/dist/cli/adapters/command-skills.js.map +1 -1
- package/dist/cli/adapters/detection.d.ts +5 -0
- package/dist/cli/adapters/detection.d.ts.map +1 -0
- package/dist/cli/adapters/detection.js +43 -0
- package/dist/cli/adapters/detection.js.map +1 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -1
- package/dist/cli/adapters/opencode.js +94 -7
- package/dist/cli/adapters/opencode.js.map +1 -1
- package/dist/cli/adapters/registry-types.d.ts +31 -0
- package/dist/cli/adapters/registry-types.d.ts.map +1 -1
- package/dist/cli/adapters/registry.d.ts.map +1 -1
- package/dist/cli/adapters/registry.js +34 -3
- package/dist/cli/adapters/registry.js.map +1 -1
- package/dist/cli/adapters/standard.d.ts.map +1 -1
- package/dist/cli/adapters/standard.js +25 -0
- package/dist/cli/adapters/standard.js.map +1 -1
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +4 -0
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands/detect.d.ts +3 -0
- package/dist/cli/commands/detect.d.ts.map +1 -0
- package/dist/cli/commands/detect.js +39 -0
- package/dist/cli/commands/detect.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +26 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +25 -2
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/preflight.d.ts +11 -0
- package/dist/cli/commands/preflight.d.ts.map +1 -0
- package/dist/cli/commands/preflight.js +50 -0
- package/dist/cli/commands/preflight.js.map +1 -0
- package/dist/cli/commands/tui.d.ts.map +1 -1
- package/dist/cli/commands/tui.js +19 -3
- package/dist/cli/commands/tui.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +34 -7
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/drift.d.ts +19 -0
- package/dist/cli/drift.d.ts.map +1 -0
- package/dist/cli/drift.js +136 -0
- package/dist/cli/drift.js.map +1 -0
- package/dist/cli/fs.d.ts.map +1 -1
- package/dist/cli/fs.js +6 -70
- package/dist/cli/fs.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +12 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/injectors/json-merge.d.ts +3 -0
- package/dist/cli/injectors/json-merge.d.ts.map +1 -0
- package/dist/cli/injectors/json-merge.js +136 -0
- package/dist/cli/injectors/json-merge.js.map +1 -0
- package/dist/cli/injectors/managed-block.d.ts +7 -0
- package/dist/cli/injectors/managed-block.d.ts.map +1 -0
- package/dist/cli/injectors/managed-block.js +39 -0
- package/dist/cli/injectors/managed-block.js.map +1 -0
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +20 -0
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/pipeline/operation-steps.d.ts +10 -0
- package/dist/cli/pipeline/operation-steps.d.ts.map +1 -0
- package/dist/cli/pipeline/operation-steps.js +141 -0
- package/dist/cli/pipeline/operation-steps.js.map +1 -0
- package/dist/cli/pipeline/orchestrator.d.ts +12 -0
- package/dist/cli/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/cli/pipeline/orchestrator.js +111 -0
- package/dist/cli/pipeline/orchestrator.js.map +1 -0
- package/dist/cli/pipeline/types.d.ts +40 -0
- package/dist/cli/pipeline/types.d.ts.map +1 -0
- package/dist/cli/pipeline/types.js +3 -0
- package/dist/cli/pipeline/types.js.map +1 -0
- package/dist/cli/types.d.ts +6 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/docs/HOW-TO-USE-OPENCODE.md +10 -6
- package/docs/agent-adapters.md +9 -4
- package/docs/cli.md +48 -2
- package/docs/getting-started.md +8 -0
- package/package.json +3 -2
- package/scripts/check-adapter-fixtures.mjs +595 -0
- package/skills/sprint-forge/assets/modes/ad3c-cycle.md +89 -0
- package/skills/sprint-forge/assets/modes/execute-task.md +5 -3
package/WORKFLOW.yaml
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/codex.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/codex.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM1D,eAAO,MAAM,YAAY,EAAE,iBA+D1B,CAAC"}
|
|
@@ -5,12 +5,33 @@ const constants_1 = require("../constants");
|
|
|
5
5
|
const fs_1 = require("../fs");
|
|
6
6
|
const command_skills_1 = require("./command-skills");
|
|
7
7
|
const standard_1 = require("./standard");
|
|
8
|
+
const detection_1 = require("./detection");
|
|
8
9
|
const AGENTS_PATH = 'AGENTS.md';
|
|
9
10
|
const KYRO_AGENTS_BLOCK = 'agents-md';
|
|
10
11
|
exports.codexAdapter = {
|
|
11
12
|
agent: constants_1.AGENT.CODEX,
|
|
12
13
|
displayName: 'Codex',
|
|
13
14
|
status: 'implemented',
|
|
15
|
+
capabilities() {
|
|
16
|
+
return ['command-skills', 'workspace-agents-block', 'filesystem-detect', 'system-prompt', 'mcp'];
|
|
17
|
+
},
|
|
18
|
+
paths(homeDir) {
|
|
19
|
+
return {
|
|
20
|
+
globalConfigDir: `${homeDir}/.codex`,
|
|
21
|
+
systemPromptPath: `${homeDir}/.codex/AGENTS.md`,
|
|
22
|
+
skillsDir: `${homeDir}/.codex/skills`,
|
|
23
|
+
mcpConfigPath: `${homeDir}/.codex/config.toml`,
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
detect(context) {
|
|
27
|
+
return (0, detection_1.detectFromPaths)(constants_1.AGENT.CODEX, 'codex', this.paths(context.homeDir), context, 'Codex adapter');
|
|
28
|
+
},
|
|
29
|
+
systemPromptStrategy() {
|
|
30
|
+
return 'managed-block';
|
|
31
|
+
},
|
|
32
|
+
mcpStrategy() {
|
|
33
|
+
return 'toml-file';
|
|
34
|
+
},
|
|
14
35
|
buildProjection(plan) {
|
|
15
36
|
(0, command_skills_1.addCommandSkillProjection)(plan);
|
|
16
37
|
plan.push({
|
|
@@ -20,6 +41,9 @@ exports.codexAdapter = {
|
|
|
20
41
|
content: buildAgentsBlock(),
|
|
21
42
|
});
|
|
22
43
|
},
|
|
44
|
+
buildRemoval(plan) {
|
|
45
|
+
plan.push({ action: 'remove-block', path: AGENTS_PATH, blockName: KYRO_AGENTS_BLOCK });
|
|
46
|
+
},
|
|
23
47
|
buildManagedFiles() {
|
|
24
48
|
return (0, command_skills_1.buildCommandSkillManagedFiles)();
|
|
25
49
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/cli/adapters/codex.ts"],"names":[],"mappings":";;;AAAA,4CAAkF;AAClF,8BAAwC;AACxC,qDAA4F;AAC5F,yCAAoD;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/cli/adapters/codex.ts"],"names":[],"mappings":";;;AAAA,4CAAkF;AAClF,8BAAwC;AACxC,qDAA4F;AAC5F,yCAAoD;AAEpD,2CAA8C;AAE9C,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAEzB,QAAA,YAAY,GAAsB;IAC7C,KAAK,EAAE,iBAAK,CAAC,KAAK;IAClB,WAAW,EAAE,OAAO;IACpB,MAAM,EAAE,aAAa;IACrB,YAAY;QACV,OAAO,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;IACnG,CAAC;IACD,KAAK,CAAC,OAAO;QACX,OAAO;YACL,eAAe,EAAE,GAAG,OAAO,SAAS;YACpC,gBAAgB,EAAE,GAAG,OAAO,mBAAmB;YAC/C,SAAS,EAAE,GAAG,OAAO,gBAAgB;YACrC,aAAa,EAAE,GAAG,OAAO,qBAAqB;SAC/C,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,OAAO;QACZ,OAAO,IAAA,2BAAe,EAAC,iBAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACtG,CAAC;IACD,oBAAoB;QAClB,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,WAAW;QACT,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,eAAe,CAAC,IAAI;QAClB,IAAA,0CAAyB,EAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE,gBAAgB,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,YAAY,CAAC,IAAI;QACf,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,iBAAiB;QACf,OAAO,IAAA,8CAA6B,GAAE,CAAC;IACzC,CAAC;IACD,kBAAkB;QAChB,OAAO,CAAC,GAAG,WAAW,IAAI,iBAAiB,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,qBAAqB,CAAC,KAAK,EAAE,WAAW;QACtC,OAAO;YACL,KAAK,EAAE,iBAAK,CAAC,KAAK;YAClB,KAAK;YACL,WAAW;YACX,QAAQ,EAAE,qBAAS;YACnB,YAAY,EAAE,6BAAiB;YAC/B,UAAU,EAAE,6BAAiB;SAC9B,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,QAAQ;QACb,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,iBAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;QAC9F,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,iCAAsB,EAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,YAAY,CAAC;QACxD,IAAI,CAAC,IAAA,oBAAe,EAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,yBAAyB,WAAW,EAAE,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QAC3I,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,gEAAgE,EAAE,CAAC;IAC7H,CAAC;CACF,CAAC;AAEF,SAAS,gBAAgB;IACvB,OAAO,qHAAqH,qBAAS,gEAAgE,yBAAa,0BAA0B,6BAAiB,iMAAiM,CAAC;AACjc,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { KyroCommandName, OperationPlan } from '../types';
|
|
2
2
|
export declare function addCommandSkillProjection(plan: OperationPlan[]): void;
|
|
3
|
+
export declare function addCommandSkillProjectionToRoot(plan: OperationPlan[], skillsRoot: string): void;
|
|
3
4
|
export declare function buildCommandSkillManagedFiles(): string[];
|
|
5
|
+
export declare function buildCommandSkillManagedFilesForRoot(skillsRoot: string): string[];
|
|
4
6
|
export declare function getCommandSkillPath(command: KyroCommandName): string;
|
|
7
|
+
export declare function getCommandSkillPathForRoot(command: KyroCommandName, skillsRoot: string): string;
|
|
5
8
|
//# sourceMappingURL=command-skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-skills.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/command-skills.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE/D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"command-skills.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/command-skills.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE/D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAErE;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAY/F;AAED,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CAExD;AAED,wBAAgB,oCAAoC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAEpE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/F"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addCommandSkillProjection = addCommandSkillProjection;
|
|
4
|
+
exports.addCommandSkillProjectionToRoot = addCommandSkillProjectionToRoot;
|
|
4
5
|
exports.buildCommandSkillManagedFiles = buildCommandSkillManagedFiles;
|
|
6
|
+
exports.buildCommandSkillManagedFilesForRoot = buildCommandSkillManagedFilesForRoot;
|
|
5
7
|
exports.getCommandSkillPath = getCommandSkillPath;
|
|
8
|
+
exports.getCommandSkillPathForRoot = getCommandSkillPathForRoot;
|
|
6
9
|
const constants_1 = require("../constants");
|
|
7
10
|
function addCommandSkillProjection(plan) {
|
|
11
|
+
addCommandSkillProjectionToRoot(plan, constants_1.AGENT_SKILLS_ROOT);
|
|
12
|
+
}
|
|
13
|
+
function addCommandSkillProjectionToRoot(plan, skillsRoot) {
|
|
8
14
|
for (const command of constants_1.COMMAND_NAMES) {
|
|
9
|
-
const path =
|
|
10
|
-
if (plan.some((operation) => operation.
|
|
15
|
+
const path = getCommandSkillPathForRoot(command, skillsRoot);
|
|
16
|
+
if (plan.some((operation) => operation.path === path)) {
|
|
11
17
|
continue;
|
|
12
18
|
}
|
|
13
19
|
plan.push({
|
|
@@ -18,10 +24,16 @@ function addCommandSkillProjection(plan) {
|
|
|
18
24
|
}
|
|
19
25
|
}
|
|
20
26
|
function buildCommandSkillManagedFiles() {
|
|
21
|
-
return constants_1.
|
|
27
|
+
return buildCommandSkillManagedFilesForRoot(constants_1.AGENT_SKILLS_ROOT);
|
|
28
|
+
}
|
|
29
|
+
function buildCommandSkillManagedFilesForRoot(skillsRoot) {
|
|
30
|
+
return constants_1.COMMAND_NAMES.map((command) => getCommandSkillPathForRoot(command, skillsRoot));
|
|
22
31
|
}
|
|
23
32
|
function getCommandSkillPath(command) {
|
|
24
|
-
return
|
|
33
|
+
return getCommandSkillPathForRoot(command, constants_1.AGENT_SKILLS_ROOT);
|
|
34
|
+
}
|
|
35
|
+
function getCommandSkillPathForRoot(command, skillsRoot) {
|
|
36
|
+
return `${skillsRoot}/kyro-${command}/SKILL.md`;
|
|
25
37
|
}
|
|
26
38
|
function buildCommandSkill(command) {
|
|
27
39
|
const title = command === 'wrap-up' ? 'Kyro Wrap-Up' : `Kyro ${capitalize(command)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-skills.js","sourceRoot":"","sources":["../../../src/cli/adapters/command-skills.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"command-skills.js","sourceRoot":"","sources":["../../../src/cli/adapters/command-skills.ts"],"names":[],"mappings":";;AAGA,8DAEC;AAED,0EAYC;AAED,sEAEC;AAED,oFAEC;AAED,kDAEC;AAED,gEAEC;AAnCD,4CAA8G;AAG9G,SAAgB,yBAAyB,CAAC,IAAqB;IAC7D,+BAA+B,CAAC,IAAI,EAAE,6BAAiB,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,+BAA+B,CAAC,IAAqB,EAAE,UAAkB;IACvF,KAAK,MAAM,OAAO,IAAI,yBAAa,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACtD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,OAAO;YACf,IAAI;YACJ,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAgB,6BAA6B;IAC3C,OAAO,oCAAoC,CAAC,6BAAiB,CAAC,CAAC;AACjE,CAAC;AAED,SAAgB,oCAAoC,CAAC,UAAkB;IACrE,OAAO,yBAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAAwB;IAC1D,OAAO,0BAA0B,CAAC,OAAO,EAAE,6BAAiB,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,0BAA0B,CAAC,OAAwB,EAAE,UAAkB;IACrF,OAAO,GAAG,UAAU,SAAS,OAAO,WAAW,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAwB;IACjD,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACrF,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,mBAAmB,OAAO,kBAAkB,WAAW,sGAAsG,KAAK,4BAA4B,8BAAkB,IAAI,OAAO,uEAAuE,qBAAS,qBAAqB,yBAAa,oFAAoF,CAAC;AAC3a,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAwB;IACrD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,qEAAqE,CAAC;IACtG,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,kEAAkE,CAAC;IACpG,OAAO,gEAAgE,CAAC;AAC1E,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Agent } from '../types';
|
|
2
|
+
import type { AdapterPaths, DetectionContext, DetectionResult } from './registry-types';
|
|
3
|
+
export declare function detectFromPaths(agent: Agent, binaryName: string | null, paths: AdapterPaths, context: DetectionContext, fallbackDetail: string): DetectionResult;
|
|
4
|
+
export declare function directoryExists(path: string): boolean;
|
|
5
|
+
//# sourceMappingURL=detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/detection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExF,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,GAAG,eAAe,CAiBhK;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectFromPaths = detectFromPaths;
|
|
4
|
+
exports.directoryExists = directoryExists;
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
function detectFromPaths(agent, binaryName, paths, context, fallbackDetail) {
|
|
8
|
+
const binaryPath = binaryName ? findExecutable(binaryName, context.envPath ?? process.env.PATH ?? '') : null;
|
|
9
|
+
const configPath = paths.globalConfigDir ?? null;
|
|
10
|
+
const configFound = configPath ? directoryExists(configPath) : false;
|
|
11
|
+
const installed = binaryName ? binaryPath !== null : configFound;
|
|
12
|
+
const detail = configPath
|
|
13
|
+
? `config=${configPath}; binary=${binaryPath ?? 'not-found'}`
|
|
14
|
+
: fallbackDetail;
|
|
15
|
+
return {
|
|
16
|
+
agent,
|
|
17
|
+
installed,
|
|
18
|
+
binaryPath,
|
|
19
|
+
configFound,
|
|
20
|
+
configPath,
|
|
21
|
+
detail,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function directoryExists(path) {
|
|
25
|
+
try {
|
|
26
|
+
return (0, node_fs_1.existsSync)(path) && (0, node_fs_1.statSync)(path).isDirectory();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function findExecutable(binaryName, envPath) {
|
|
33
|
+
const extensions = process.platform === 'win32' ? ['', '.exe', '.cmd', '.bat'] : [''];
|
|
34
|
+
for (const directory of envPath.split(node_path_1.delimiter).filter(Boolean)) {
|
|
35
|
+
for (const extension of extensions) {
|
|
36
|
+
const candidate = (0, node_path_1.join)(directory, `${binaryName}${extension}`);
|
|
37
|
+
if ((0, node_fs_1.existsSync)(candidate))
|
|
38
|
+
return candidate;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection.js","sourceRoot":"","sources":["../../../src/cli/adapters/detection.ts"],"names":[],"mappings":";;AAKA,0CAiBC;AAED,0CAMC;AA9BD,qCAA+C;AAC/C,yCAA4C;AAI5C,SAAgB,eAAe,CAAC,KAAY,EAAE,UAAyB,EAAE,KAAmB,EAAE,OAAyB,EAAE,cAAsB;IAC7I,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IACjE,MAAM,MAAM,GAAG,UAAU;QACvB,CAAC,CAAC,UAAU,UAAU,YAAY,UAAU,IAAI,WAAW,EAAE;QAC7D,CAAC,CAAC,cAAc,CAAC;IAEnB,OAAO;QACL,KAAK;QACL,SAAS;QACT,UAAU;QACV,WAAW;QACX,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,IAAI,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,OAAe;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,qBAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC;YAC/D,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAW1D,eAAO,MAAM,eAAe,EAAE,iBAgD7B,CAAC"}
|
|
@@ -3,15 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.openCodeAdapter = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const command_skills_1 = require("./command-skills");
|
|
6
|
-
const
|
|
6
|
+
const fs_1 = require("../fs");
|
|
7
|
+
const detection_1 = require("./detection");
|
|
8
|
+
const OPENCODE_SKILLS_ROOT = '~/.config/opencode/skills';
|
|
9
|
+
const OPENCODE_COMMANDS_ROOT = '~/.config/opencode/commands';
|
|
10
|
+
const OPENCODE_SETTINGS_PATH = '~/.config/opencode/opencode.json';
|
|
11
|
+
const KYRO_OPENCODE_AGENT = 'kyro-orchestrator';
|
|
7
12
|
exports.openCodeAdapter = {
|
|
8
13
|
agent: constants_1.AGENT.OPENCODE,
|
|
9
14
|
displayName: 'OpenCode',
|
|
10
15
|
status: 'implemented',
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
capabilities() {
|
|
17
|
+
return ['command-skills', 'filesystem-detect', 'system-prompt', 'slash-commands'];
|
|
18
|
+
},
|
|
19
|
+
paths(homeDir) {
|
|
20
|
+
return {
|
|
21
|
+
globalConfigDir: `${homeDir}/.config/opencode`,
|
|
22
|
+
systemPromptPath: `${homeDir}/.config/opencode/AGENTS.md`,
|
|
23
|
+
skillsDir: `${homeDir}/.config/opencode/skills`,
|
|
24
|
+
commandsDir: `${homeDir}/.config/opencode/commands`,
|
|
25
|
+
settingsPath: `${homeDir}/.config/opencode/opencode.json`,
|
|
26
|
+
mcpConfigPath: `${homeDir}/.config/opencode/opencode.json`,
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
detect(context) {
|
|
30
|
+
return (0, detection_1.detectFromPaths)(constants_1.AGENT.OPENCODE, 'opencode', this.paths(context.homeDir), context, 'OpenCode adapter');
|
|
31
|
+
},
|
|
32
|
+
systemPromptStrategy() {
|
|
33
|
+
return 'json-agent-overlay';
|
|
34
|
+
},
|
|
35
|
+
mcpStrategy() {
|
|
36
|
+
return 'none';
|
|
37
|
+
},
|
|
38
|
+
buildProjection: addOpenCodeProjection,
|
|
39
|
+
buildRemoval: removeOpenCodeProjection,
|
|
40
|
+
buildManagedFiles: buildOpenCodeManagedFiles,
|
|
13
41
|
buildManagedBlocks() {
|
|
14
|
-
return [];
|
|
42
|
+
return [`${OPENCODE_SETTINGS_PATH}#agent.${KYRO_OPENCODE_AGENT}`];
|
|
15
43
|
},
|
|
16
44
|
buildInstalledAdapter(scope, installedAt) {
|
|
17
45
|
return {
|
|
@@ -19,15 +47,74 @@ exports.openCodeAdapter = {
|
|
|
19
47
|
scope,
|
|
20
48
|
installedAt,
|
|
21
49
|
corePath: constants_1.KYRO_ROOT,
|
|
22
|
-
commandsPath:
|
|
23
|
-
skillsPath:
|
|
50
|
+
commandsPath: OPENCODE_COMMANDS_ROOT,
|
|
51
|
+
skillsPath: OPENCODE_SKILLS_ROOT,
|
|
24
52
|
};
|
|
25
53
|
},
|
|
26
54
|
doctor(manifest) {
|
|
27
55
|
if (!manifest?.adapters.some((adapter) => adapter.agent === constants_1.AGENT.OPENCODE)) {
|
|
28
56
|
return { status: 'warn', name: 'OpenCode adapter', detail: 'not installed in this workspace' };
|
|
29
57
|
}
|
|
30
|
-
return (
|
|
58
|
+
return checkOpenCodeProjection();
|
|
31
59
|
},
|
|
32
60
|
};
|
|
61
|
+
function addOpenCodeProjection(plan) {
|
|
62
|
+
(0, command_skills_1.addCommandSkillProjectionToRoot)(plan, OPENCODE_SKILLS_ROOT);
|
|
63
|
+
for (const command of constants_1.COMMAND_NAMES) {
|
|
64
|
+
plan.push({
|
|
65
|
+
action: 'write',
|
|
66
|
+
path: `${OPENCODE_COMMANDS_ROOT}/kyro/${command}.md`,
|
|
67
|
+
content: buildOpenCodeCommand(command),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
plan.push({
|
|
71
|
+
action: 'merge-json',
|
|
72
|
+
path: OPENCODE_SETTINGS_PATH,
|
|
73
|
+
content: JSON.stringify(buildOpenCodeSettingsOverlay()),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function removeOpenCodeProjection(plan) {
|
|
77
|
+
plan.push({ action: 'remove-json-key', path: OPENCODE_SETTINGS_PATH, jsonPath: `agent.${KYRO_OPENCODE_AGENT}` });
|
|
78
|
+
}
|
|
79
|
+
function buildOpenCodeManagedFiles() {
|
|
80
|
+
return [
|
|
81
|
+
...(0, command_skills_1.buildCommandSkillManagedFilesForRoot)(OPENCODE_SKILLS_ROOT),
|
|
82
|
+
...constants_1.COMMAND_NAMES.map((command) => `${OPENCODE_COMMANDS_ROOT}/kyro/${command}.md`),
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
function buildOpenCodeCommand(command) {
|
|
86
|
+
const description = command === 'forge'
|
|
87
|
+
? 'Run the Kyro forge workflow'
|
|
88
|
+
: command === 'status'
|
|
89
|
+
? 'Show Kyro project status'
|
|
90
|
+
: 'Close the Kyro session';
|
|
91
|
+
return `---\ndescription: ${description}\n---\n\nLoad \`${OPENCODE_SKILLS_ROOT}/kyro-${command}/SKILL.md\` and follow it. The skill must read \`${constants_1.KYRO_COMMANDS_ROOT}/${command}.md\` first, then load only the routed Kyro mode/helper files.\n\nRuntime: \`${constants_1.KYRO_ROOT}/\`\nArtifacts: \`${constants_1.ARTIFACT_ROOT}/{scope}/\`\n\nDo not inline the full Kyro workflow or ask the user to restate it.\n`;
|
|
92
|
+
}
|
|
93
|
+
function buildOpenCodeSettingsOverlay() {
|
|
94
|
+
return {
|
|
95
|
+
agent: {
|
|
96
|
+
[KYRO_OPENCODE_AGENT]: {
|
|
97
|
+
mode: 'primary',
|
|
98
|
+
prompt: buildOpenCodeAgentPrompt(),
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function buildOpenCodeAgentPrompt() {
|
|
104
|
+
return [
|
|
105
|
+
'You are the Kyro workflow orchestrator inside OpenCode.',
|
|
106
|
+
`Use native OpenCode commands in ${OPENCODE_COMMANDS_ROOT}/kyro/ and skills in ${OPENCODE_SKILLS_ROOT}/kyro-*.`,
|
|
107
|
+
`Read ${constants_1.KYRO_COMMANDS_ROOT}/{forge,status,wrap-up}.md first, then load only the routed Kyro mode/helper files.`,
|
|
108
|
+
`Runtime: ${constants_1.KYRO_ROOT}/`,
|
|
109
|
+
`Artifacts: ${constants_1.ARTIFACT_ROOT}/{scope}/`,
|
|
110
|
+
'Do not inline the full Kyro workflow or overwrite non-Kyro OpenCode configuration.',
|
|
111
|
+
].join('\n');
|
|
112
|
+
}
|
|
113
|
+
function checkOpenCodeProjection() {
|
|
114
|
+
const missing = buildOpenCodeManagedFiles().filter((file) => !(0, fs_1.managedPathExists)(file));
|
|
115
|
+
if (missing.length > 0) {
|
|
116
|
+
return { status: 'fail', name: 'OpenCode adapter', detail: `missing ${missing.join(', ')}`, remedy: 'Run kyro sync --agent opencode.' };
|
|
117
|
+
}
|
|
118
|
+
return { status: 'pass', name: 'OpenCode adapter', detail: 'native OpenCode skills and slash commands present' };
|
|
119
|
+
}
|
|
33
120
|
//# sourceMappingURL=opencode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/cli/adapters/opencode.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/cli/adapters/opencode.ts"],"names":[],"mappings":";;;AAAA,4CAAkG;AAElG,qDAAyG;AACzG,8BAA0C;AAC1C,2CAA8C;AAG9C,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AACzD,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAC7D,MAAM,sBAAsB,GAAG,kCAAkC,CAAC;AAClE,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEnC,QAAA,eAAe,GAAsB;IAChD,KAAK,EAAE,iBAAK,CAAC,QAAQ;IACrB,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,aAAa;IACrB,YAAY;QACV,OAAO,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACpF,CAAC;IACD,KAAK,CAAC,OAAO;QACX,OAAO;YACL,eAAe,EAAE,GAAG,OAAO,mBAAmB;YAC9C,gBAAgB,EAAE,GAAG,OAAO,6BAA6B;YACzD,SAAS,EAAE,GAAG,OAAO,0BAA0B;YAC/C,WAAW,EAAE,GAAG,OAAO,4BAA4B;YACnD,YAAY,EAAE,GAAG,OAAO,iCAAiC;YACzD,aAAa,EAAE,GAAG,OAAO,iCAAiC;SAC3D,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,OAAO;QACZ,OAAO,IAAA,2BAAe,EAAC,iBAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC/G,CAAC;IACD,oBAAoB;QAClB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,WAAW;QACT,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,eAAe,EAAE,qBAAqB;IACtC,YAAY,EAAE,wBAAwB;IACtC,iBAAiB,EAAE,yBAAyB;IAC5C,kBAAkB;QAChB,OAAO,CAAC,GAAG,sBAAsB,UAAU,mBAAmB,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,qBAAqB,CAAC,KAAK,EAAE,WAAW;QACtC,OAAO;YACL,KAAK,EAAE,iBAAK,CAAC,QAAQ;YACrB,KAAK;YACL,WAAW;YACX,QAAQ,EAAE,qBAAS;YACnB,YAAY,EAAE,sBAAsB;YACpC,UAAU,EAAE,oBAAoB;SACjC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,QAAQ;QACb,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,iBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;QACjG,CAAC;QACD,OAAO,uBAAuB,EAAE,CAAC;IACnC,CAAC;CACF,CAAC;AAEF,SAAS,qBAAqB,CAAC,IAAqB;IAClD,IAAA,gDAA+B,EAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC5D,KAAK,MAAM,OAAO,IAAI,yBAAa,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,GAAG,sBAAsB,SAAS,OAAO,KAAK;YACpD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI,CAAC;QACR,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC;KACxD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAqB;IACrD,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,mBAAmB,EAAE,EAAE,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;QACL,GAAG,IAAA,qDAAoC,EAAC,oBAAoB,CAAC;QAC7D,GAAG,yBAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,sBAAsB,SAAS,OAAO,KAAK,CAAC;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAwB;IACpD,MAAM,WAAW,GAAG,OAAO,KAAK,OAAO;QACrC,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,OAAO,KAAK,QAAQ;YACpB,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,wBAAwB,CAAC;IAC/B,OAAO,qBAAqB,WAAW,mBAAmB,oBAAoB,SAAS,OAAO,oDAAoD,8BAAkB,IAAI,OAAO,gFAAgF,qBAAS,qBAAqB,yBAAa,sFAAsF,CAAC;AACnY,CAAC;AAED,SAAS,4BAA4B;IACnC,OAAO;QACL,KAAK,EAAE;YACL,CAAC,mBAAmB,CAAC,EAAE;gBACrB,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,wBAAwB,EAAE;aACnC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO;QACL,yDAAyD;QACzD,mCAAmC,sBAAsB,wBAAwB,oBAAoB,UAAU;QAC/G,QAAQ,8BAAkB,qFAAqF;QAC/G,YAAY,qBAAS,GAAG;QACxB,cAAc,yBAAa,WAAW;QACtC,oFAAoF;KACrF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAA,sBAAiB,EAAC,IAAI,CAAC,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAC1I,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;AACnH,CAAC"}
|
|
@@ -1,10 +1,41 @@
|
|
|
1
1
|
import type { Agent, CheckResult, InstallScope, KyroInstalledAdapter, KyroManifest, OperationPlan } from '../types';
|
|
2
2
|
export type AdapterStatus = 'implemented' | 'planned';
|
|
3
|
+
export type AdapterCapability = 'command-skills' | 'workspace-agents-block' | 'system-prompt' | 'mcp' | 'slash-commands' | 'sub-agents' | 'output-styles' | 'filesystem-detect' | 'auto-install';
|
|
4
|
+
export type SystemPromptStrategy = 'managed-block' | 'file-replace' | 'append' | 'instructions-file' | 'json-agent-overlay' | 'none';
|
|
5
|
+
export type MCPStrategy = 'separate-files' | 'merge-json-settings' | 'mcp-json-file' | 'toml-file' | 'yaml-merge' | 'none';
|
|
6
|
+
export interface AdapterPaths {
|
|
7
|
+
globalConfigDir?: string;
|
|
8
|
+
systemPromptPath?: string;
|
|
9
|
+
skillsDir?: string;
|
|
10
|
+
commandsDir?: string;
|
|
11
|
+
settingsPath?: string;
|
|
12
|
+
mcpConfigPath?: string;
|
|
13
|
+
subAgentsDir?: string;
|
|
14
|
+
outputStylesDir?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DetectionContext {
|
|
17
|
+
homeDir: string;
|
|
18
|
+
envPath?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface DetectionResult {
|
|
21
|
+
agent: Agent;
|
|
22
|
+
installed: boolean;
|
|
23
|
+
binaryPath: string | null;
|
|
24
|
+
configFound: boolean;
|
|
25
|
+
configPath: string | null;
|
|
26
|
+
detail: string;
|
|
27
|
+
}
|
|
3
28
|
export interface AdapterDefinition {
|
|
4
29
|
agent: Agent;
|
|
5
30
|
displayName: string;
|
|
6
31
|
status: AdapterStatus;
|
|
32
|
+
capabilities(): AdapterCapability[];
|
|
33
|
+
paths(homeDir: string): AdapterPaths;
|
|
34
|
+
detect(context: DetectionContext): DetectionResult;
|
|
35
|
+
systemPromptStrategy(): SystemPromptStrategy;
|
|
36
|
+
mcpStrategy(): MCPStrategy;
|
|
7
37
|
buildProjection(plan: OperationPlan[]): void;
|
|
38
|
+
buildRemoval(plan: OperationPlan[]): void;
|
|
8
39
|
buildManagedFiles(): string[];
|
|
9
40
|
buildManagedBlocks(): string[];
|
|
10
41
|
buildInstalledAdapter(scope: InstallScope, installedAt: string): KyroInstalledAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/registry-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEpH,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/registry-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEpH,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;AACtD,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,wBAAwB,GACxB,eAAe,GACf,KAAK,GACL,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,cAAc,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,cAAc,GAAG,QAAQ,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,MAAM,CAAC;AACrI,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;AAE3H,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,IAAI,iBAAiB,EAAE,CAAC;IACpC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAAC;IACnD,oBAAoB,IAAI,oBAAoB,CAAC;IAC7C,WAAW,IAAI,WAAW,CAAC;IAC3B,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7C,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC1C,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC9B,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAC/B,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACtF,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,WAAW,CAAC;CACpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAKtC,OAAO,KAAK,EAAE,iBAAiB,EAAmD,MAAM,kBAAkB,CAAC;AA4C3G,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAkCvC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,CAIpE;AAED,wBAAgB,sBAAsB,IAAI,iBAAiB,EAAE,CAE5D;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,CAEnF"}
|
|
@@ -6,13 +6,30 @@ exports.getInstallableAdapters = getInstallableAdapters;
|
|
|
6
6
|
exports.getInstalledAdapterDefinitions = getInstalledAdapterDefinitions;
|
|
7
7
|
const constants_1 = require("../constants");
|
|
8
8
|
const codex_1 = require("./codex");
|
|
9
|
+
const detection_1 = require("./detection");
|
|
9
10
|
const opencode_1 = require("./opencode");
|
|
10
11
|
const standard_1 = require("./standard");
|
|
11
|
-
const plannedAdapter = (agent, displayName) => ({
|
|
12
|
+
const plannedAdapter = (agent, displayName, buildPaths, systemPromptStrategy, mcpStrategy, binaryName) => ({
|
|
12
13
|
agent,
|
|
13
14
|
displayName,
|
|
14
15
|
status: 'planned',
|
|
16
|
+
capabilities() {
|
|
17
|
+
return [];
|
|
18
|
+
},
|
|
19
|
+
paths(homeDir) {
|
|
20
|
+
return buildPaths(homeDir);
|
|
21
|
+
},
|
|
22
|
+
detect(context) {
|
|
23
|
+
return (0, detection_1.detectFromPaths)(agent, binaryName, buildPaths(context.homeDir), context, `${displayName} adapter is planned`);
|
|
24
|
+
},
|
|
25
|
+
systemPromptStrategy() {
|
|
26
|
+
return systemPromptStrategy;
|
|
27
|
+
},
|
|
28
|
+
mcpStrategy() {
|
|
29
|
+
return mcpStrategy;
|
|
30
|
+
},
|
|
15
31
|
buildProjection() { },
|
|
32
|
+
buildRemoval() { },
|
|
16
33
|
buildManagedFiles() {
|
|
17
34
|
return [];
|
|
18
35
|
},
|
|
@@ -30,8 +47,22 @@ exports.ADAPTERS = [
|
|
|
30
47
|
standard_1.standardAgentsAdapter,
|
|
31
48
|
opencode_1.openCodeAdapter,
|
|
32
49
|
codex_1.codexAdapter,
|
|
33
|
-
plannedAdapter(constants_1.AGENT.CLAUDE, 'Claude plugin')
|
|
34
|
-
|
|
50
|
+
plannedAdapter(constants_1.AGENT.CLAUDE, 'Claude plugin', (homeDir) => ({
|
|
51
|
+
globalConfigDir: `${homeDir}/.claude`,
|
|
52
|
+
systemPromptPath: `${homeDir}/.claude/CLAUDE.md`,
|
|
53
|
+
skillsDir: `${homeDir}/.claude/skills`,
|
|
54
|
+
commandsDir: `${homeDir}/.claude/commands`,
|
|
55
|
+
settingsPath: `${homeDir}/.claude/settings.json`,
|
|
56
|
+
mcpConfigPath: `${homeDir}/.claude/mcp`,
|
|
57
|
+
subAgentsDir: `${homeDir}/.claude/agents`,
|
|
58
|
+
outputStylesDir: `${homeDir}/.claude/output-styles`,
|
|
59
|
+
}), 'managed-block', 'separate-files', 'claude'),
|
|
60
|
+
plannedAdapter(constants_1.AGENT.CURSOR, 'Cursor', (homeDir) => ({
|
|
61
|
+
globalConfigDir: `${homeDir}/.cursor`,
|
|
62
|
+
systemPromptPath: `${homeDir}/.cursor/rules/kyro-ai.mdc`,
|
|
63
|
+
skillsDir: `${homeDir}/.cursor/skills`,
|
|
64
|
+
mcpConfigPath: `${homeDir}/.cursor/mcp.json`,
|
|
65
|
+
}), 'instructions-file', 'mcp-json-file', null),
|
|
35
66
|
];
|
|
36
67
|
function getAdapterDefinition(agent) {
|
|
37
68
|
const definition = exports.ADAPTERS.find((adapter) => adapter.agent === agent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/adapters/registry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/adapters/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/standard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/standard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,eAAO,MAAM,qBAAqB,EAAE,iBAiDnC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAMhE"}
|
|
@@ -5,11 +5,36 @@ exports.checkCommandProjection = checkCommandProjection;
|
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
6
|
const fs_1 = require("../fs");
|
|
7
7
|
const command_skills_1 = require("./command-skills");
|
|
8
|
+
const detection_1 = require("./detection");
|
|
8
9
|
exports.standardAgentsAdapter = {
|
|
9
10
|
agent: constants_1.AGENT.STANDARD,
|
|
10
11
|
displayName: 'Standard .agents',
|
|
11
12
|
status: 'implemented',
|
|
13
|
+
capabilities() {
|
|
14
|
+
return ['command-skills'];
|
|
15
|
+
},
|
|
16
|
+
paths(homeDir) {
|
|
17
|
+
return {
|
|
18
|
+
globalConfigDir: `${homeDir}/.agents`,
|
|
19
|
+
skillsDir: `${homeDir}/.agents/skills`,
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
detect(context) {
|
|
23
|
+
const paths = this.paths(context.homeDir);
|
|
24
|
+
const result = (0, detection_1.detectFromPaths)(constants_1.AGENT.STANDARD, null, paths, context, 'standard .agents compatibility adapter');
|
|
25
|
+
return {
|
|
26
|
+
...result,
|
|
27
|
+
detail: `config=${result.configPath ?? 'none'}; binary=none; compatibility=always-available`,
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
systemPromptStrategy() {
|
|
31
|
+
return 'none';
|
|
32
|
+
},
|
|
33
|
+
mcpStrategy() {
|
|
34
|
+
return 'none';
|
|
35
|
+
},
|
|
12
36
|
buildProjection: command_skills_1.addCommandSkillProjection,
|
|
37
|
+
buildRemoval() { },
|
|
13
38
|
buildManagedFiles: command_skills_1.buildCommandSkillManagedFiles,
|
|
14
39
|
buildManagedBlocks() {
|
|
15
40
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.js","sourceRoot":"","sources":["../../../src/cli/adapters/standard.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"standard.js","sourceRoot":"","sources":["../../../src/cli/adapters/standard.ts"],"names":[],"mappings":";;;AA0DA,wDAMC;AAhED,4CAAmE;AACnE,8BAA4C;AAG5C,qDAA4F;AAC5F,2CAA8C;AAEjC,QAAA,qBAAqB,GAAsB;IACtD,KAAK,EAAE,iBAAK,CAAC,QAAQ;IACrB,WAAW,EAAE,kBAAkB;IAC/B,MAAM,EAAE,aAAa;IACrB,YAAY;QACV,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,OAAO;QACX,OAAO;YACL,eAAe,EAAE,GAAG,OAAO,UAAU;YACrC,SAAS,EAAE,GAAG,OAAO,iBAAiB;SACvC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,iBAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,CAAC,CAAC;QAC/G,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,UAAU,MAAM,CAAC,UAAU,IAAI,MAAM,+CAA+C;SAC7F,CAAC;IACJ,CAAC;IACD,oBAAoB;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,WAAW;QACT,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,eAAe,EAAE,0CAAyB;IAC1C,YAAY,KAAI,CAAC;IACjB,iBAAiB,EAAE,8CAA6B;IAChD,kBAAkB;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,qBAAqB,CAAC,KAAK,EAAE,WAAW;QACtC,OAAO;YACL,KAAK,EAAE,iBAAK,CAAC,QAAQ;YACrB,KAAK;YACL,WAAW;YACX,QAAQ,EAAE,qBAAS;YACnB,YAAY,EAAE,6BAAiB;YAC/B,UAAU,EAAE,6BAAiB;SAC9B,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,QAAQ;QACb,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,iBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;QACzG,CAAC;QACD,OAAO,sBAAsB,CAAC,0BAA0B,CAAC,CAAC;IAC5D,CAAC;CACF,CAAC;AAEF,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,OAAO,GAAG,IAAA,8CAA6B,GAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAA,wBAAmB,EAAC,IAAI,CAAC,CAAC,CAAC;IAC7F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACrG,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;AACnF,CAAC"}
|
package/dist/cli/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAUA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAoD5C"}
|
package/dist/cli/app.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runCli = runCli;
|
|
4
4
|
const doctor_1 = require("./commands/doctor");
|
|
5
|
+
const detect_1 = require("./commands/detect");
|
|
5
6
|
const install_1 = require("./commands/install");
|
|
6
7
|
const tui_1 = require("./commands/tui");
|
|
7
8
|
const repair_1 = require("./commands/repair");
|
|
@@ -36,6 +37,9 @@ async function runCli() {
|
|
|
36
37
|
case 'install':
|
|
37
38
|
(0, install_1.install)(options);
|
|
38
39
|
break;
|
|
40
|
+
case 'detect':
|
|
41
|
+
(0, detect_1.detect)(options);
|
|
42
|
+
break;
|
|
39
43
|
case 'doctor':
|
|
40
44
|
(0, doctor_1.doctor)(options);
|
|
41
45
|
break;
|
package/dist/cli/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":";;AAUA,wBAoDC;AA9DD,8CAA2C;AAC3C,8CAA2C;AAC3C,gDAAmD;AACnD,wCAAwC;AACxC,8CAA2C;AAC3C,4CAAmD;AACnD,oDAAiD;AACjD,iCAAyE;AACzE,uCAAyC;AAElC,KAAK,UAAU,MAAM;IAC1B,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,IAAA,YAAM,GAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,IAAA,gBAAS,GAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,IAAA,yBAAkB,GAAE,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAA,uBAAgB,EAAC,OAAO,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,IAAA,iBAAO,EAAC,OAAO,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,QAAQ;YACX,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;YAChB,MAAM;QACR,KAAK,QAAQ;YACX,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;YAChB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,MAAM;YACT,IAAA,cAAI,EAAC,OAAO,CAAC,CAAC;YACd,MAAM;QACR,KAAK,WAAW;YACd,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAC;YACnB,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,oBAAoB,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/detect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,IAAI,CA6BzE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detect = detect;
|
|
4
|
+
const node_os_1 = require("node:os");
|
|
5
|
+
const registry_1 = require("../adapters/registry");
|
|
6
|
+
function detect(options) {
|
|
7
|
+
const adapters = selectedAdapters(options.agents);
|
|
8
|
+
const results = adapters.map((adapter) => {
|
|
9
|
+
const detection = adapter.detect({ homeDir: (0, node_os_1.homedir)(), envPath: process.env.PATH ?? '' });
|
|
10
|
+
return {
|
|
11
|
+
agent: adapter.agent,
|
|
12
|
+
displayName: adapter.displayName,
|
|
13
|
+
status: adapter.status,
|
|
14
|
+
installed: detection.installed,
|
|
15
|
+
binaryPath: detection.binaryPath,
|
|
16
|
+
configFound: detection.configFound,
|
|
17
|
+
configPath: detection.configPath,
|
|
18
|
+
capabilities: adapter.capabilities(),
|
|
19
|
+
systemPromptStrategy: adapter.systemPromptStrategy(),
|
|
20
|
+
mcpStrategy: adapter.mcpStrategy(),
|
|
21
|
+
detail: detection.detail,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
if (options.json) {
|
|
25
|
+
console.log(JSON.stringify({ adapters: results }, null, 2));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
for (const result of results) {
|
|
29
|
+
const state = result.installed ? 'detected' : 'not-detected';
|
|
30
|
+
const capabilityText = result.capabilities.length > 0 ? result.capabilities.join(',') : 'none';
|
|
31
|
+
console.log(`[${state}] ${result.agent}: status=${result.status}; config=${result.configPath ?? 'none'}; binary=${result.binaryPath ?? 'not-found'}; capabilities=${capabilityText}; systemPromptStrategy=${result.systemPromptStrategy}; mcpStrategy=${result.mcpStrategy}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function selectedAdapters(agents) {
|
|
35
|
+
if (agents.length === 0)
|
|
36
|
+
return registry_1.ADAPTERS;
|
|
37
|
+
return agents.map((agent) => (0, registry_1.getAdapterDefinition)(agent));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/cli/commands/detect.ts"],"names":[],"mappings":";;AAKA,wBA6BC;AAlCD,qCAAkC;AAClC,mDAAsE;AAItE,SAAgB,MAAM,CAAC,OAA4C;IACjE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAA,iBAAO,GAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1F,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;YACpC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE;YACpD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;YAClC,MAAM,EAAE,SAAS,CAAC,MAAM;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,UAAU,IAAI,MAAM,YAAY,MAAM,CAAC,UAAU,IAAI,WAAW,kBAAkB,cAAc,0BAA0B,MAAM,CAAC,oBAAoB,iBAAiB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAChR,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA4B;IACpD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,mBAAQ,CAAC;IACzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|