kyro-ai 3.2.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/.claude-plugin/README.md +29 -0
- package/.claude-plugin/marketplace.json +52 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.claude-plugin/settings.json +16 -0
- package/LICENSE +201 -0
- package/README.md +331 -0
- package/WORKFLOW.yaml +36 -0
- package/agents/orchestrator.md +393 -0
- package/commands/forge.md +55 -0
- package/commands/status.md +92 -0
- package/commands/wrap-up.md +85 -0
- package/config.json +17 -0
- package/contexts/init.md +64 -0
- package/contexts/review.md +89 -0
- package/contexts/sprint.md +90 -0
- package/dist/cli/adapters/codex.d.ts +3 -0
- package/dist/cli/adapters/codex.d.ts.map +1 -0
- package/dist/cli/adapters/codex.js +55 -0
- package/dist/cli/adapters/codex.js.map +1 -0
- package/dist/cli/adapters/command-skills.d.ts +5 -0
- package/dist/cli/adapters/command-skills.d.ts.map +1 -0
- package/dist/cli/adapters/command-skills.js +41 -0
- package/dist/cli/adapters/command-skills.js.map +1 -0
- package/dist/cli/adapters/opencode.d.ts +5 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -0
- package/dist/cli/adapters/opencode.js +41 -0
- package/dist/cli/adapters/opencode.js.map +1 -0
- package/dist/cli/adapters/registry-types.d.ts +13 -0
- package/dist/cli/adapters/registry-types.d.ts.map +1 -0
- package/dist/cli/adapters/registry-types.js +3 -0
- package/dist/cli/adapters/registry-types.js.map +1 -0
- package/dist/cli/adapters/registry.d.ts +7 -0
- package/dist/cli/adapters/registry.d.ts.map +1 -0
- package/dist/cli/adapters/registry.js +46 -0
- package/dist/cli/adapters/registry.js.map +1 -0
- package/dist/cli/app.d.ts +2 -0
- package/dist/cli/app.d.ts.map +1 -0
- package/dist/cli/app.js +46 -0
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +133 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/install.d.ts +4 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +42 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/tui.d.ts +2 -0
- package/dist/cli/commands/tui.d.ts.map +1 -0
- package/dist/cli/commands/tui.js +35 -0
- package/dist/cli/commands/tui.js.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +3 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.js +33 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/constants.d.ts +23 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +27 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/fs.d.ts +12 -0
- package/dist/cli/fs.d.ts.map +1 -0
- package/dist/cli/fs.js +133 -0
- package/dist/cli/fs.js.map +1 -0
- package/dist/cli/help.d.ts +4 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +28 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/install-plan.d.ts +3 -0
- package/dist/cli/install-plan.d.ts.map +1 -0
- package/dist/cli/install-plan.js +93 -0
- package/dist/cli/install-plan.js.map +1 -0
- package/dist/cli/options.d.ts +8 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +99 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/state.d.ts +4 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli/state.js +13 -0
- package/dist/cli/state.js.map +1 -0
- package/dist/cli/types.d.ts +50 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/docs/HOW-TO-USE-CODEX.md +82 -0
- package/docs/HOW-TO-USE-OPENCODE.md +93 -0
- package/docs/agent-adapters.md +152 -0
- package/docs/agents-reference.md +153 -0
- package/docs/architecture.md +159 -0
- package/docs/architecture.mmd +21 -0
- package/docs/cli.md +87 -0
- package/docs/commands-reference.md +138 -0
- package/docs/context-management.md +92 -0
- package/docs/getting-started.md +165 -0
- package/docs/harness-migration.md +95 -0
- package/docs/programmatic-usage.md +109 -0
- package/docs/rules-guide.md +216 -0
- package/package.json +78 -0
- package/rules/context-persistence.md +54 -0
- package/rules/estimation.md +56 -0
- package/rules/learning-rules.md +66 -0
- package/rules/quality-gates.md +65 -0
- package/rules/sprint-discipline.md +49 -0
- package/scripts/check-markdown-links.mjs +97 -0
- package/scripts/check-versions.mjs +46 -0
- package/scripts/make-cli-executable.mjs +12 -0
- package/settings.example.json +27 -0
- package/skills/qa-review/SKILL.md +660 -0
- package/skills/qa-review/manifest.json +41 -0
- package/skills/sprint-forge/SKILL.md +260 -0
- package/skills/sprint-forge/assets/README.md +31 -0
- package/skills/sprint-forge/assets/helpers/analysis-guide.md +207 -0
- package/skills/sprint-forge/assets/helpers/analyzer.md +83 -0
- package/skills/sprint-forge/assets/helpers/debt-tracker.md +122 -0
- package/skills/sprint-forge/assets/helpers/handoff.md +103 -0
- package/skills/sprint-forge/assets/helpers/learner.md +69 -0
- package/skills/sprint-forge/assets/helpers/metrics.md +81 -0
- package/skills/sprint-forge/assets/helpers/reentry-generator.md +121 -0
- package/skills/sprint-forge/assets/helpers/reviewer.md +71 -0
- package/skills/sprint-forge/assets/helpers/sprint-generator.md +145 -0
- package/skills/sprint-forge/assets/modes/INIT.md +204 -0
- package/skills/sprint-forge/assets/modes/SPRINT.md +253 -0
- package/skills/sprint-forge/assets/modes/STATUS.md +145 -0
- package/skills/sprint-forge/assets/templates/PROJECT-README.md +107 -0
- package/skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md +132 -0
- package/skills/sprint-forge/assets/templates/ROADMAP.md +126 -0
- package/skills/sprint-forge/assets/templates/SPRINT.md +189 -0
- package/skills/sprint-forge/manifest.json +165 -0
- package/templates/split-claude-md/AGENTS.md +96 -0
- package/templates/split-claude-md/CLAUDE.md +67 -0
- package/templates/split-claude-md/COMMANDS.md +37 -0
- package/templates/split-claude-md/LEARNED.md +39 -0
- package/templates/split-claude-md/SOUL.md +107 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.doctor = doctor;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const fs_1 = require("../fs");
|
|
8
|
+
const help_1 = require("../help");
|
|
9
|
+
const state_1 = require("../state");
|
|
10
|
+
const registry_1 = require("../adapters/registry");
|
|
11
|
+
function doctor() {
|
|
12
|
+
const checks = runDoctorChecks();
|
|
13
|
+
let failed = false;
|
|
14
|
+
for (const check of checks) {
|
|
15
|
+
const icon = check.status === 'pass' ? 'PASS' : check.status === 'warn' ? 'WARN' : 'FAIL';
|
|
16
|
+
console.log(`[${icon}] ${check.name}: ${check.detail}`);
|
|
17
|
+
if (check.remedy)
|
|
18
|
+
console.log(` Remedy: ${check.remedy}`);
|
|
19
|
+
if (check.status === 'fail')
|
|
20
|
+
failed = true;
|
|
21
|
+
}
|
|
22
|
+
if (failed)
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
function runDoctorChecks() {
|
|
26
|
+
return [
|
|
27
|
+
checkPackageVersionSync(),
|
|
28
|
+
checkPackageAssets(),
|
|
29
|
+
checkClaudePlugin(),
|
|
30
|
+
checkProjectState(),
|
|
31
|
+
checkWorkspaceCore(),
|
|
32
|
+
...checkAdapterProjections(),
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
function checkPackageVersionSync() {
|
|
36
|
+
try {
|
|
37
|
+
const pkgVersion = (0, help_1.readPackageVersion)();
|
|
38
|
+
const pluginVersion = (0, fs_1.readJsonFromPackage)('.claude-plugin/plugin.json').version;
|
|
39
|
+
const workflowVersion = readYamlVersion('WORKFLOW.yaml');
|
|
40
|
+
if (pkgVersion !== pluginVersion || pkgVersion !== workflowVersion) {
|
|
41
|
+
return {
|
|
42
|
+
status: 'fail',
|
|
43
|
+
name: 'package versions',
|
|
44
|
+
detail: `package=${pkgVersion}, plugin=${pluginVersion}, workflow=${workflowVersion}`,
|
|
45
|
+
remedy: 'Run npm run check:versions and align version fields.',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return { status: 'pass', name: 'package versions', detail: `all versions match ${pkgVersion}` };
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return { status: 'fail', name: 'package versions', detail: errorMessage(error) };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function checkPackageAssets() {
|
|
55
|
+
const required = ['agents/orchestrator.md', 'commands/forge.md', 'commands/status.md', 'commands/wrap-up.md', 'skills/sprint-forge/SKILL.md', 'skills/qa-review/SKILL.md'];
|
|
56
|
+
const missing = required.filter((file) => !(0, node_fs_1.existsSync)((0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, file)));
|
|
57
|
+
if (missing.length > 0) {
|
|
58
|
+
return { status: 'fail', name: 'package assets', detail: `missing ${missing.join(', ')}` };
|
|
59
|
+
}
|
|
60
|
+
return { status: 'pass', name: 'package assets', detail: 'required Kyro assets exist' };
|
|
61
|
+
}
|
|
62
|
+
function checkClaudePlugin() {
|
|
63
|
+
const pluginPath = (0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, '.claude-plugin/plugin.json');
|
|
64
|
+
if (!(0, node_fs_1.existsSync)(pluginPath)) {
|
|
65
|
+
return { status: 'fail', name: 'Claude plugin adapter', detail: '.claude-plugin/plugin.json missing' };
|
|
66
|
+
}
|
|
67
|
+
return { status: 'pass', name: 'Claude plugin adapter', detail: 'first-class adapter assets present' };
|
|
68
|
+
}
|
|
69
|
+
function checkProjectState() {
|
|
70
|
+
const state = (0, state_1.readProjectState)();
|
|
71
|
+
if (!state) {
|
|
72
|
+
return {
|
|
73
|
+
status: 'warn',
|
|
74
|
+
name: 'workspace state',
|
|
75
|
+
detail: `${constants_1.KYRO_STATE_PATH} not found`,
|
|
76
|
+
remedy: 'Run kyro install --agent opencode --scope workspace.',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (state.schemaVersion !== 1 || state.artifactRoot !== constants_1.ARTIFACT_ROOT || !Array.isArray(state.scopes)) {
|
|
80
|
+
return { status: 'fail', name: 'workspace state', detail: `${constants_1.KYRO_STATE_PATH} has invalid shape` };
|
|
81
|
+
}
|
|
82
|
+
return { status: 'pass', name: 'workspace state', detail: `${constants_1.KYRO_STATE_PATH} is valid` };
|
|
83
|
+
}
|
|
84
|
+
function checkWorkspaceCore() {
|
|
85
|
+
const manifest = (0, state_1.readManifest)();
|
|
86
|
+
if (!manifest) {
|
|
87
|
+
return {
|
|
88
|
+
status: 'warn',
|
|
89
|
+
name: 'workspace core',
|
|
90
|
+
detail: `${constants_1.KYRO_MANIFEST_PATH} not found`,
|
|
91
|
+
remedy: 'Run kyro install.',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const missing = manifest.managedFiles.filter((file) => !(0, fs_1.workspaceFileExists)(file));
|
|
95
|
+
if (missing.length > 0) {
|
|
96
|
+
return {
|
|
97
|
+
status: 'fail',
|
|
98
|
+
name: 'workspace core',
|
|
99
|
+
detail: `missing managed files: ${missing.slice(0, 5).join(', ')}${missing.length > 5 ? '...' : ''}`,
|
|
100
|
+
remedy: 'Run kyro sync.',
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return { status: 'pass', name: 'workspace core', detail: `${manifest.managedFiles.length} managed files present` };
|
|
104
|
+
}
|
|
105
|
+
function checkAdapterProjections() {
|
|
106
|
+
const manifest = (0, state_1.readManifest)();
|
|
107
|
+
if (!manifest)
|
|
108
|
+
return [];
|
|
109
|
+
return manifest.adapters.map((installedAdapter) => {
|
|
110
|
+
try {
|
|
111
|
+
return (0, registry_1.getAdapterDefinition)(installedAdapter.agent).doctor(manifest);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return {
|
|
115
|
+
status: 'fail',
|
|
116
|
+
name: `${installedAdapter.agent} adapter`,
|
|
117
|
+
detail: errorMessage(error),
|
|
118
|
+
remedy: 'Run kyro sync or reinstall the adapter.',
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function readYamlVersion(file) {
|
|
124
|
+
const text = (0, fs_1.readPackageText)(file);
|
|
125
|
+
const match = text.match(/^version:\s*["']?([^"'\n]+)["']?$/m);
|
|
126
|
+
if (!match)
|
|
127
|
+
throw new Error(`Could not parse version from ${file}`);
|
|
128
|
+
return match[1];
|
|
129
|
+
}
|
|
130
|
+
function errorMessage(error) {
|
|
131
|
+
return error instanceof Error ? error.message : String(error);
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAgBjD;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAiB9C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.install = install;
|
|
4
|
+
exports.sync = sync;
|
|
5
|
+
const install_plan_1 = require("../install-plan");
|
|
6
|
+
const fs_1 = require("../fs");
|
|
7
|
+
const options_1 = require("../options");
|
|
8
|
+
const state_1 = require("../state");
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
function install(options) {
|
|
11
|
+
(0, options_1.assertWorkspaceScope)(options.scope);
|
|
12
|
+
(0, options_1.assertInstallableAgents)(options.agents);
|
|
13
|
+
const plan = (0, install_plan_1.buildInstallPlan)(options.agents, options.scope);
|
|
14
|
+
(0, fs_1.printPlan)('Install plan', plan);
|
|
15
|
+
if (options.dryRun) {
|
|
16
|
+
console.log('Dry run complete. No files changed.');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
(0, fs_1.applyPlan)(plan);
|
|
20
|
+
console.log(`Kyro installed for: ${options.agents.join(', ')}`);
|
|
21
|
+
console.log(`State: ${constants_1.KYRO_STATE_PATH}`);
|
|
22
|
+
console.log(`Core: ${constants_1.KYRO_ROOT}/`);
|
|
23
|
+
}
|
|
24
|
+
function sync(options) {
|
|
25
|
+
(0, options_1.assertWorkspaceScope)(options.scope);
|
|
26
|
+
const manifest = (0, state_1.readManifest)();
|
|
27
|
+
if (!manifest) {
|
|
28
|
+
throw new Error('Kyro is not installed in this workspace. Run kyro install first.');
|
|
29
|
+
}
|
|
30
|
+
const agents = options.agents.length > 0 ? options.agents : manifest.adapters.map((adapter) => adapter.agent);
|
|
31
|
+
(0, options_1.assertInstallableAgents)(agents);
|
|
32
|
+
const unique = (0, options_1.uniqueAgents)(agents);
|
|
33
|
+
const plan = (0, install_plan_1.buildInstallPlan)(unique, constants_1.SCOPE.WORKSPACE);
|
|
34
|
+
(0, fs_1.printPlan)('Sync plan', plan);
|
|
35
|
+
if (options.dryRun) {
|
|
36
|
+
console.log('Dry run complete. No files changed.');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
(0, fs_1.applyPlan)(plan);
|
|
40
|
+
console.log(`Kyro synced for: ${unique.join(', ')}`);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":";;AAOA,0BAgBC;AAED,oBAiBC;AA1CD,kDAAmD;AACnD,8BAA6C;AAC7C,wCAAyF;AACzF,oCAAwC;AACxC,4CAAiE;AAGjE,SAAgB,OAAO,CAAC,OAAmB;IACzC,IAAA,8BAAoB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,IAAA,iCAAuB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,IAAA,+BAAgB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAA,cAAS,EAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAEhC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAA,cAAS,EAAC,IAAI,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,UAAU,2BAAe,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,SAAS,qBAAS,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,IAAI,CAAC,OAAmB;IACtC,IAAA,8BAAoB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAA,oBAAY,GAAE,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9G,IAAA,iCAAuB,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAA,+BAAgB,EAAC,MAAM,EAAE,iBAAK,CAAC,SAAS,CAAC,CAAC;IACvD,IAAA,cAAS,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IACD,IAAA,cAAS,EAAC,IAAI,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tui.ts"],"names":[],"mappings":"AAMA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB5C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runTui = runTui;
|
|
4
|
+
const promises_1 = require("node:readline/promises");
|
|
5
|
+
const node_process_1 = require("node:process");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const doctor_1 = require("./doctor");
|
|
8
|
+
const install_1 = require("./install");
|
|
9
|
+
async function runTui() {
|
|
10
|
+
const rl = (0, promises_1.createInterface)({ input: node_process_1.stdin, output: node_process_1.stdout });
|
|
11
|
+
try {
|
|
12
|
+
console.log('Kyro — Multi-Agent Harness');
|
|
13
|
+
console.log('1) Install OpenCode adapter in this workspace');
|
|
14
|
+
console.log('2) Install Codex adapter in this workspace');
|
|
15
|
+
console.log('3) Run doctor');
|
|
16
|
+
console.log('4) Exit');
|
|
17
|
+
const answer = await rl.question('Select an option: ');
|
|
18
|
+
if (answer.trim() === '1') {
|
|
19
|
+
(0, install_1.install)({ agents: [constants_1.AGENT.OPENCODE], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false });
|
|
20
|
+
}
|
|
21
|
+
else if (answer.trim() === '2') {
|
|
22
|
+
(0, install_1.install)({ agents: [constants_1.AGENT.CODEX], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false });
|
|
23
|
+
}
|
|
24
|
+
else if (answer.trim() === '3') {
|
|
25
|
+
(0, doctor_1.doctor)();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log('No changes made.');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
rl.close();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/cli/commands/tui.ts"],"names":[],"mappings":";;AAMA,wBAqBC;AA3BD,qDAAyD;AACzD,+CAAgE;AAChE,4CAA4C;AAC5C,qCAAkC;AAClC,uCAAoC;AAE7B,KAAK,UAAU,MAAM;IAC1B,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAL,oBAAK,EAAE,MAAM,EAAN,qBAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC1B,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,iBAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,CAAC,iBAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,IAAA,eAAM,GAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAC;AAE1D,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CA6BnD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uninstall = uninstall;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const fs_1 = require("../fs");
|
|
6
|
+
const options_1 = require("../options");
|
|
7
|
+
const state_1 = require("../state");
|
|
8
|
+
function uninstall(options) {
|
|
9
|
+
(0, options_1.assertWorkspaceScope)(options.scope);
|
|
10
|
+
const manifest = (0, state_1.readManifest)();
|
|
11
|
+
if (!manifest) {
|
|
12
|
+
console.log('Kyro is not installed in this workspace. No changes made.');
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const plan = (manifest.managedBlocks ?? [])
|
|
16
|
+
.map((blockRef) => {
|
|
17
|
+
const [path, blockName] = blockRef.split('#');
|
|
18
|
+
return { action: 'remove-block', path, blockName };
|
|
19
|
+
});
|
|
20
|
+
plan.push(...[...manifest.managedFiles]
|
|
21
|
+
.sort((a, b) => b.length - a.length)
|
|
22
|
+
.map((filePath) => ({ action: 'remove', path: filePath })));
|
|
23
|
+
plan.push({ action: 'remove', path: constants_1.KYRO_ROOT });
|
|
24
|
+
(0, fs_1.printPlan)('Uninstall plan', plan);
|
|
25
|
+
if (options.dryRun) {
|
|
26
|
+
console.log('Dry run complete. No files changed.');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
(0, fs_1.applyPlan)(plan);
|
|
30
|
+
console.log('Kyro managed workspace files removed.');
|
|
31
|
+
console.log(`Note: ${constants_1.KYRO_STATE_PATH} is preserved so scope history is not lost.`);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":";;AAMA,8BA6BC;AAnCD,4CAA0D;AAC1D,8BAA6C;AAC7C,wCAAkD;AAClD,oCAAwC;AAGxC,SAAgB,SAAS,CAAC,OAAmB;IAC3C,IAAA,8BAAoB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAA,oBAAY,GAAE,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAoB,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;SACzD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,cAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;SACnC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAS,EAAE,CAAC,CAAC;IACjD,IAAA,cAAS,EAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAElC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAA,cAAS,EAAC,IAAI,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,SAAS,2BAAe,6CAA6C,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const AGENT: {
|
|
2
|
+
readonly OPENCODE: "opencode";
|
|
3
|
+
readonly CLAUDE: "claude";
|
|
4
|
+
readonly CODEX: "codex";
|
|
5
|
+
readonly CURSOR: "cursor";
|
|
6
|
+
};
|
|
7
|
+
export declare const SCOPE: {
|
|
8
|
+
readonly WORKSPACE: "workspace";
|
|
9
|
+
readonly GLOBAL: "global";
|
|
10
|
+
};
|
|
11
|
+
export declare const COMMAND_NAMES: readonly ["forge", "status", "wrap-up"];
|
|
12
|
+
export declare const PACKAGE_ROOT: string;
|
|
13
|
+
export declare const WORKSPACE_ROOT: string;
|
|
14
|
+
export declare const WORKFLOW_NAME = "kyro-ai";
|
|
15
|
+
export declare const ARTIFACT_ROOT = ".agents/kyro/scopes";
|
|
16
|
+
export declare const KYRO_ROOT = ".agents/kyro/internal";
|
|
17
|
+
export declare const KYRO_CORE_ROOT = ".agents/kyro/internal/core";
|
|
18
|
+
export declare const KYRO_COMMANDS_ROOT = ".agents/kyro/internal/commands";
|
|
19
|
+
export declare const KYRO_SKILLS_ROOT = ".agents/kyro/internal/skills";
|
|
20
|
+
export declare const AGENT_SKILLS_ROOT = ".agents/skills";
|
|
21
|
+
export declare const KYRO_STATE_PATH = ".agents/kyro/internal/kyro.json";
|
|
22
|
+
export declare const KYRO_MANIFEST_PATH = ".agents/kyro/internal/manifest.json";
|
|
23
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;CAKR,CAAC;AAEX,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAEX,eAAO,MAAM,aAAa,yCAA0C,CAAC;AAErE,eAAO,MAAM,YAAY,QAA8B,CAAC;AACxD,eAAO,MAAM,cAAc,QAAgB,CAAC;AAC5C,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,SAAS,0BAA0B,CAAC;AACjD,eAAO,MAAM,cAAc,+BAAsB,CAAC;AAClD,eAAO,MAAM,kBAAkB,mCAA0B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,iCAAwB,CAAC;AACtD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,eAAe,oCAA2B,CAAC;AACxD,eAAO,MAAM,kBAAkB,wCAA+B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KYRO_MANIFEST_PATH = exports.KYRO_STATE_PATH = exports.AGENT_SKILLS_ROOT = exports.KYRO_SKILLS_ROOT = exports.KYRO_COMMANDS_ROOT = exports.KYRO_CORE_ROOT = exports.KYRO_ROOT = exports.ARTIFACT_ROOT = exports.WORKFLOW_NAME = exports.WORKSPACE_ROOT = exports.PACKAGE_ROOT = exports.COMMAND_NAMES = exports.SCOPE = exports.AGENT = void 0;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
exports.AGENT = {
|
|
6
|
+
OPENCODE: 'opencode',
|
|
7
|
+
CLAUDE: 'claude',
|
|
8
|
+
CODEX: 'codex',
|
|
9
|
+
CURSOR: 'cursor',
|
|
10
|
+
};
|
|
11
|
+
exports.SCOPE = {
|
|
12
|
+
WORKSPACE: 'workspace',
|
|
13
|
+
GLOBAL: 'global',
|
|
14
|
+
};
|
|
15
|
+
exports.COMMAND_NAMES = ['forge', 'status', 'wrap-up'];
|
|
16
|
+
exports.PACKAGE_ROOT = (0, node_path_1.resolve)(__dirname, '../..');
|
|
17
|
+
exports.WORKSPACE_ROOT = process.cwd();
|
|
18
|
+
exports.WORKFLOW_NAME = 'kyro-ai';
|
|
19
|
+
exports.ARTIFACT_ROOT = '.agents/kyro/scopes';
|
|
20
|
+
exports.KYRO_ROOT = '.agents/kyro/internal';
|
|
21
|
+
exports.KYRO_CORE_ROOT = `${exports.KYRO_ROOT}/core`;
|
|
22
|
+
exports.KYRO_COMMANDS_ROOT = `${exports.KYRO_ROOT}/commands`;
|
|
23
|
+
exports.KYRO_SKILLS_ROOT = `${exports.KYRO_ROOT}/skills`;
|
|
24
|
+
exports.AGENT_SKILLS_ROOT = '.agents/skills';
|
|
25
|
+
exports.KYRO_STATE_PATH = `${exports.KYRO_ROOT}/kyro.json`;
|
|
26
|
+
exports.KYRO_MANIFEST_PATH = `${exports.KYRO_ROOT}/manifest.json`;
|
|
27
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEvB,QAAA,KAAK,GAAG;IACnB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAEE,QAAA,KAAK,GAAG;IACnB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAEE,QAAA,aAAa,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAExD,QAAA,YAAY,GAAG,IAAA,mBAAO,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,aAAa,GAAG,qBAAqB,CAAC;AACtC,QAAA,SAAS,GAAG,uBAAuB,CAAC;AACpC,QAAA,cAAc,GAAG,GAAG,iBAAS,OAAO,CAAC;AACrC,QAAA,kBAAkB,GAAG,GAAG,iBAAS,WAAW,CAAC;AAC7C,QAAA,gBAAgB,GAAG,GAAG,iBAAS,SAAS,CAAC;AACzC,QAAA,iBAAiB,GAAG,gBAAgB,CAAC;AACrC,QAAA,eAAe,GAAG,GAAG,iBAAS,YAAY,CAAC;AAC3C,QAAA,kBAAkB,GAAG,GAAG,iBAAS,gBAAgB,CAAC"}
|
package/dist/cli/fs.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { OperationPlan } from './types';
|
|
2
|
+
export declare function applyPlan(plan: OperationPlan[]): void;
|
|
3
|
+
export declare function printPlan(title: string, plan: OperationPlan[]): void;
|
|
4
|
+
export declare function addCopyDirectoryPlan(plan: OperationPlan[], sourceDir: string, targetDir: string): void;
|
|
5
|
+
export declare function addCopyFilePlan(plan: OperationPlan[], source: string, target: string): void;
|
|
6
|
+
export declare function listRelativeFiles(sourceDir: string): string[];
|
|
7
|
+
export declare function readJsonFromPackage<T>(file: string): T;
|
|
8
|
+
export declare function readJsonFromWorkspace<T>(file: string): T | null;
|
|
9
|
+
export declare function readPackageText(file: string): string;
|
|
10
|
+
export declare function workspaceFileExists(file: string): boolean;
|
|
11
|
+
export declare function hasManagedBlock(file: string, blockName: string): boolean;
|
|
12
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/cli/fs.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CA2BrD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAOpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAItG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7D;AAaD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAEtD;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAI/D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAIxE"}
|
package/dist/cli/fs.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyPlan = applyPlan;
|
|
4
|
+
exports.printPlan = printPlan;
|
|
5
|
+
exports.addCopyDirectoryPlan = addCopyDirectoryPlan;
|
|
6
|
+
exports.addCopyFilePlan = addCopyFilePlan;
|
|
7
|
+
exports.listRelativeFiles = listRelativeFiles;
|
|
8
|
+
exports.readJsonFromPackage = readJsonFromPackage;
|
|
9
|
+
exports.readJsonFromWorkspace = readJsonFromWorkspace;
|
|
10
|
+
exports.readPackageText = readPackageText;
|
|
11
|
+
exports.workspaceFileExists = workspaceFileExists;
|
|
12
|
+
exports.hasManagedBlock = hasManagedBlock;
|
|
13
|
+
const node_fs_1 = require("node:fs");
|
|
14
|
+
const node_path_1 = require("node:path");
|
|
15
|
+
const constants_1 = require("./constants");
|
|
16
|
+
function applyPlan(plan) {
|
|
17
|
+
for (const operation of plan) {
|
|
18
|
+
const target = (0, node_path_1.resolve)(constants_1.WORKSPACE_ROOT, operation.path);
|
|
19
|
+
if (operation.action === 'mkdir') {
|
|
20
|
+
(0, node_fs_1.mkdirSync)(target, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
else if (operation.action === 'write') {
|
|
23
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
|
|
24
|
+
(0, node_fs_1.writeFileSync)(target, operation.content ?? '', 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
else if (operation.action === 'copy') {
|
|
27
|
+
if (!operation.source)
|
|
28
|
+
throw new Error(`Copy operation missing source for ${operation.path}`);
|
|
29
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
|
|
30
|
+
(0, node_fs_1.copyFileSync)((0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, operation.source), target);
|
|
31
|
+
}
|
|
32
|
+
else if (operation.action === 'remove') {
|
|
33
|
+
(0, node_fs_1.rmSync)(target, { recursive: true, force: true });
|
|
34
|
+
}
|
|
35
|
+
else if (operation.action === 'upsert-block') {
|
|
36
|
+
if (!operation.blockName)
|
|
37
|
+
throw new Error(`Block operation missing blockName for ${operation.path}`);
|
|
38
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
|
|
39
|
+
const existing = (0, node_fs_1.existsSync)(target) ? (0, node_fs_1.readFileSync)(target, 'utf-8') : '';
|
|
40
|
+
(0, node_fs_1.writeFileSync)(target, upsertManagedBlock(existing, operation.blockName, operation.content ?? ''), 'utf-8');
|
|
41
|
+
}
|
|
42
|
+
else if (operation.action === 'remove-block') {
|
|
43
|
+
if (!operation.blockName)
|
|
44
|
+
throw new Error(`Block operation missing blockName for ${operation.path}`);
|
|
45
|
+
if ((0, node_fs_1.existsSync)(target)) {
|
|
46
|
+
const existing = (0, node_fs_1.readFileSync)(target, 'utf-8');
|
|
47
|
+
(0, node_fs_1.writeFileSync)(target, removeManagedBlock(existing, operation.blockName), 'utf-8');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function printPlan(title, plan) {
|
|
53
|
+
console.log(title);
|
|
54
|
+
for (const operation of plan) {
|
|
55
|
+
const source = operation.source ? ` <= ${operation.source}` : '';
|
|
56
|
+
const block = operation.blockName ? ` # ${operation.blockName}` : '';
|
|
57
|
+
console.log(`- ${operation.action} ${operation.path}${block}${source}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function addCopyDirectoryPlan(plan, sourceDir, targetDir) {
|
|
61
|
+
for (const file of listRelativeFiles(sourceDir)) {
|
|
62
|
+
addCopyFilePlan(plan, `${sourceDir}/${file}`, `${targetDir}/${file}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function addCopyFilePlan(plan, source, target) {
|
|
66
|
+
plan.push({ action: 'copy', source, path: target });
|
|
67
|
+
}
|
|
68
|
+
function listRelativeFiles(sourceDir) {
|
|
69
|
+
const absolute = (0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, sourceDir);
|
|
70
|
+
const files = [];
|
|
71
|
+
walkFiles(absolute, files, absolute);
|
|
72
|
+
return files.sort();
|
|
73
|
+
}
|
|
74
|
+
function walkFiles(current, files, root) {
|
|
75
|
+
for (const entry of (0, node_fs_1.readdirSync)(current, { withFileTypes: true })) {
|
|
76
|
+
const full = (0, node_path_1.join)(current, entry.name);
|
|
77
|
+
if (entry.isDirectory()) {
|
|
78
|
+
walkFiles(full, files, root);
|
|
79
|
+
}
|
|
80
|
+
else if (entry.isFile()) {
|
|
81
|
+
files.push((0, node_path_1.relative)(root, full));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function readJsonFromPackage(file) {
|
|
86
|
+
return JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, file), 'utf-8'));
|
|
87
|
+
}
|
|
88
|
+
function readJsonFromWorkspace(file) {
|
|
89
|
+
const path = (0, node_path_1.resolve)(constants_1.WORKSPACE_ROOT, file);
|
|
90
|
+
if (!(0, node_fs_1.existsSync)(path))
|
|
91
|
+
return null;
|
|
92
|
+
return JSON.parse((0, node_fs_1.readFileSync)(path, 'utf-8'));
|
|
93
|
+
}
|
|
94
|
+
function readPackageText(file) {
|
|
95
|
+
return (0, node_fs_1.readFileSync)((0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, file), 'utf-8');
|
|
96
|
+
}
|
|
97
|
+
function workspaceFileExists(file) {
|
|
98
|
+
return (0, node_fs_1.existsSync)((0, node_path_1.resolve)(constants_1.WORKSPACE_ROOT, file));
|
|
99
|
+
}
|
|
100
|
+
function hasManagedBlock(file, blockName) {
|
|
101
|
+
const path = (0, node_path_1.resolve)(constants_1.WORKSPACE_ROOT, file);
|
|
102
|
+
if (!(0, node_fs_1.existsSync)(path))
|
|
103
|
+
return false;
|
|
104
|
+
return (0, node_fs_1.readFileSync)(path, 'utf-8').includes(startMarker(blockName)) && (0, node_fs_1.readFileSync)(path, 'utf-8').includes(endMarker(blockName));
|
|
105
|
+
}
|
|
106
|
+
function upsertManagedBlock(existing, blockName, content) {
|
|
107
|
+
const block = formatManagedBlock(blockName, content);
|
|
108
|
+
const pattern = managedBlockPattern(blockName);
|
|
109
|
+
if (pattern.test(existing)) {
|
|
110
|
+
return existing.replace(pattern, block);
|
|
111
|
+
}
|
|
112
|
+
const separator = existing.trim().length === 0 ? '' : '\n\n';
|
|
113
|
+
return `${existing.trimEnd()}${separator}${block}\n`;
|
|
114
|
+
}
|
|
115
|
+
function removeManagedBlock(existing, blockName) {
|
|
116
|
+
return existing.replace(managedBlockPattern(blockName), '').trimEnd() + '\n';
|
|
117
|
+
}
|
|
118
|
+
function formatManagedBlock(blockName, content) {
|
|
119
|
+
return `${startMarker(blockName)}\n${content.trim()}\n${endMarker(blockName)}`;
|
|
120
|
+
}
|
|
121
|
+
function managedBlockPattern(blockName) {
|
|
122
|
+
return new RegExp(`${escapeRegExp(startMarker(blockName))}[\\s\\S]*?${escapeRegExp(endMarker(blockName))}\\n?`, 'm');
|
|
123
|
+
}
|
|
124
|
+
function startMarker(blockName) {
|
|
125
|
+
return `<!-- kyro-ai:${blockName}:start -->`;
|
|
126
|
+
}
|
|
127
|
+
function endMarker(blockName) {
|
|
128
|
+
return `<!-- kyro-ai:${blockName}:end -->`;
|
|
129
|
+
}
|
|
130
|
+
function escapeRegExp(value) {
|
|
131
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/cli/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAUtD"}
|
package/dist/cli/help.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readPackageVersion = readPackageVersion;
|
|
4
|
+
exports.printHelp = printHelp;
|
|
5
|
+
exports.printCommandHelp = printCommandHelp;
|
|
6
|
+
const fs_1 = require("./fs");
|
|
7
|
+
function readPackageVersion() {
|
|
8
|
+
return (0, fs_1.readJsonFromPackage)('package.json').version;
|
|
9
|
+
}
|
|
10
|
+
function printHelp() {
|
|
11
|
+
console.log(`Kyro — Multi-Agent Harness\n\nUsage:\n kyro Open interactive TUI\n kyro install [options] Install Kyro adapter assets\n kyro doctor Check package/workspace health\n kyro sync [options] Refresh managed workspace assets\n kyro uninstall [options] Remove managed workspace assets\n\nOptions:\n --agent <name> Agent adapter: opencode, codex\n --scope <scope> Install scope: workspace (default)\n --dry-run Preview changes\n --yes, -y Skip confirmation prompts where available\n --help, -h Show help\n --version, -v Show version\n\nExamples:\n kyro install --agent opencode --scope workspace --dry-run\n kyro install --agent opencode --scope workspace --yes
|
|
12
|
+
kyro install --agent codex --scope workspace --yes\n kyro doctor\n`);
|
|
13
|
+
}
|
|
14
|
+
function printCommandHelp(command) {
|
|
15
|
+
if (command === 'install') {
|
|
16
|
+
console.log('Usage: kyro install --agent opencode --scope workspace [--dry-run] [--yes]');
|
|
17
|
+
}
|
|
18
|
+
else if (command === 'sync') {
|
|
19
|
+
console.log('Usage: kyro sync [--agent opencode] [--dry-run]');
|
|
20
|
+
}
|
|
21
|
+
else if (command === 'uninstall') {
|
|
22
|
+
console.log('Usage: kyro uninstall [--dry-run] [--yes]');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
printHelp();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":";;AAEA,gDAEC;AAED,8BAGC;AAED,4CAUC;AArBD,6BAA2C;AAE3C,SAAgB,kBAAkB;IAChC,OAAO,IAAA,wBAAmB,EAAsB,cAAc,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;sEACwD,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,SAAS,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-plan.d.ts","sourceRoot":"","sources":["../../src/cli/install-plan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAkC,aAAa,EAAE,MAAM,SAAS,CAAC;AAElG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,CAsCtF"}
|