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,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildInstallPlan = buildInstallPlan;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const registry_1 = require("./adapters/registry");
|
|
6
|
+
const fs_1 = require("./fs");
|
|
7
|
+
const help_1 = require("./help");
|
|
8
|
+
const state_1 = require("./state");
|
|
9
|
+
function buildInstallPlan(agents, scope) {
|
|
10
|
+
const now = new Date().toISOString();
|
|
11
|
+
const packageVersion = (0, help_1.readPackageVersion)();
|
|
12
|
+
const state = mergeProjectState(agents, scope, now);
|
|
13
|
+
const manifestAgents = state.installedAdapters.map((adapter) => adapter.agent);
|
|
14
|
+
const adapters = state.installedAdapters;
|
|
15
|
+
const managedFiles = buildManagedFiles(manifestAgents);
|
|
16
|
+
const managedBlocks = buildManagedBlocks(manifestAgents);
|
|
17
|
+
const manifest = {
|
|
18
|
+
schemaVersion: 1,
|
|
19
|
+
packageName: constants_1.WORKFLOW_NAME,
|
|
20
|
+
packageVersion,
|
|
21
|
+
installedAt: now,
|
|
22
|
+
installScope: scope,
|
|
23
|
+
managedFiles,
|
|
24
|
+
managedBlocks,
|
|
25
|
+
adapters,
|
|
26
|
+
};
|
|
27
|
+
const plan = [
|
|
28
|
+
{ action: 'mkdir', path: constants_1.ARTIFACT_ROOT },
|
|
29
|
+
{ action: 'write', path: constants_1.KYRO_STATE_PATH, content: `${JSON.stringify(state, null, 2)}\n` },
|
|
30
|
+
{ action: 'mkdir', path: constants_1.KYRO_ROOT },
|
|
31
|
+
{ action: 'write', path: constants_1.KYRO_MANIFEST_PATH, content: `${JSON.stringify(manifest, null, 2)}\n` },
|
|
32
|
+
{ action: 'write', path: `${constants_1.KYRO_ROOT}/KYRO.md`, content: buildKyroBootstrap() },
|
|
33
|
+
];
|
|
34
|
+
(0, fs_1.addCopyDirectoryPlan)(plan, 'agents', `${constants_1.KYRO_CORE_ROOT}/agents`);
|
|
35
|
+
(0, fs_1.addCopyDirectoryPlan)(plan, 'commands', constants_1.KYRO_COMMANDS_ROOT);
|
|
36
|
+
(0, fs_1.addCopyDirectoryPlan)(plan, 'skills', constants_1.KYRO_SKILLS_ROOT);
|
|
37
|
+
(0, fs_1.addCopyFilePlan)(plan, 'config.json', `${constants_1.KYRO_CORE_ROOT}/config.json`);
|
|
38
|
+
(0, fs_1.addCopyFilePlan)(plan, 'WORKFLOW.yaml', `${constants_1.KYRO_CORE_ROOT}/WORKFLOW.yaml`);
|
|
39
|
+
for (const adapter of (0, registry_1.getInstalledAdapterDefinitions)(manifestAgents)) {
|
|
40
|
+
adapter.buildProjection(plan);
|
|
41
|
+
}
|
|
42
|
+
return plan;
|
|
43
|
+
}
|
|
44
|
+
function mergeProjectState(agents, scope, installedAt) {
|
|
45
|
+
const existing = (0, state_1.readProjectState)();
|
|
46
|
+
const base = existing ?? {
|
|
47
|
+
schemaVersion: 1,
|
|
48
|
+
artifactRoot: constants_1.ARTIFACT_ROOT,
|
|
49
|
+
scopes: [],
|
|
50
|
+
activeScope: null,
|
|
51
|
+
installedAdapters: [],
|
|
52
|
+
};
|
|
53
|
+
const adaptersByAgent = new Map();
|
|
54
|
+
for (const adapter of base.installedAdapters) {
|
|
55
|
+
adaptersByAgent.set(adapter.agent, adapter);
|
|
56
|
+
}
|
|
57
|
+
for (const agent of agents) {
|
|
58
|
+
adaptersByAgent.set(agent, (0, registry_1.getAdapterDefinition)(agent).buildInstalledAdapter(scope, installedAt));
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
schemaVersion: 1,
|
|
62
|
+
artifactRoot: constants_1.ARTIFACT_ROOT,
|
|
63
|
+
scopes: [...base.scopes],
|
|
64
|
+
activeScope: base.activeScope,
|
|
65
|
+
installedAdapters: [...adaptersByAgent.values()].sort((a, b) => a.agent.localeCompare(b.agent)),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function buildManagedFiles(agents) {
|
|
69
|
+
const files = [
|
|
70
|
+
constants_1.KYRO_MANIFEST_PATH,
|
|
71
|
+
`${constants_1.KYRO_ROOT}/KYRO.md`,
|
|
72
|
+
`${constants_1.KYRO_CORE_ROOT}/config.json`,
|
|
73
|
+
`${constants_1.KYRO_CORE_ROOT}/WORKFLOW.yaml`,
|
|
74
|
+
];
|
|
75
|
+
files.push(...(0, fs_1.listRelativeFiles)('agents').map((file) => `${constants_1.KYRO_CORE_ROOT}/agents/${file}`));
|
|
76
|
+
files.push(...(0, fs_1.listRelativeFiles)('commands').map((file) => `${constants_1.KYRO_COMMANDS_ROOT}/${file}`));
|
|
77
|
+
files.push(...(0, fs_1.listRelativeFiles)('skills').map((file) => `${constants_1.KYRO_SKILLS_ROOT}/${file}`));
|
|
78
|
+
for (const adapter of (0, registry_1.getInstalledAdapterDefinitions)(agents)) {
|
|
79
|
+
files.push(...adapter.buildManagedFiles());
|
|
80
|
+
}
|
|
81
|
+
return [...new Set(files)].sort();
|
|
82
|
+
}
|
|
83
|
+
function buildKyroBootstrap() {
|
|
84
|
+
return `# Kyro Workspace Harness\n\nThis directory is managed by Kyro.\n\n- Core assets: \`${constants_1.KYRO_CORE_ROOT}/\`\n- Commands: \`${constants_1.KYRO_COMMANDS_ROOT}/\`\n- Skills: \`${constants_1.KYRO_SKILLS_ROOT}/\`\n- Project state: \`${constants_1.KYRO_STATE_PATH}\`\n\nUse installed agent commands/skills when available. Do not require users to invoke Kyro workflows through natural-language fallbacks unless the host agent has no native command or skill mechanism.\n`;
|
|
85
|
+
}
|
|
86
|
+
function buildManagedBlocks(agents) {
|
|
87
|
+
const blocks = [];
|
|
88
|
+
for (const adapter of (0, registry_1.getInstalledAdapterDefinitions)(agents)) {
|
|
89
|
+
blocks.push(...adapter.buildManagedBlocks());
|
|
90
|
+
}
|
|
91
|
+
return [...new Set(blocks)].sort();
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=install-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-plan.js","sourceRoot":"","sources":["../../src/cli/install-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Agent, CliOptions, InstallScope } from './types';
|
|
2
|
+
export declare function parseOptions(args: string[]): CliOptions;
|
|
3
|
+
export declare function parseAgent(value: string): Agent;
|
|
4
|
+
export declare function parseScope(value: string): InstallScope;
|
|
5
|
+
export declare function uniqueAgents(agents: Agent[]): Agent[];
|
|
6
|
+
export declare function assertWorkspaceScope(scope: InstallScope): void;
|
|
7
|
+
export declare function assertInstallableAgents(agents: Agent[]): void;
|
|
8
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA2CvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAO/C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAItD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAErD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAI9D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAK7D"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseOptions = parseOptions;
|
|
4
|
+
exports.parseAgent = parseAgent;
|
|
5
|
+
exports.parseScope = parseScope;
|
|
6
|
+
exports.uniqueAgents = uniqueAgents;
|
|
7
|
+
exports.assertWorkspaceScope = assertWorkspaceScope;
|
|
8
|
+
exports.assertInstallableAgents = assertInstallableAgents;
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const registry_1 = require("./adapters/registry");
|
|
11
|
+
function parseOptions(args) {
|
|
12
|
+
const agents = [];
|
|
13
|
+
let scope = constants_1.SCOPE.WORKSPACE;
|
|
14
|
+
let dryRun = false;
|
|
15
|
+
let yes = false;
|
|
16
|
+
let help = false;
|
|
17
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
18
|
+
const arg = args[i];
|
|
19
|
+
if (arg === '--dry-run') {
|
|
20
|
+
dryRun = true;
|
|
21
|
+
}
|
|
22
|
+
else if (arg === '--yes' || arg === '-y') {
|
|
23
|
+
yes = true;
|
|
24
|
+
}
|
|
25
|
+
else if (arg === '--help' || arg === '-h') {
|
|
26
|
+
help = true;
|
|
27
|
+
}
|
|
28
|
+
else if (arg === '--agent' || arg === '--agents') {
|
|
29
|
+
const value = args[i + 1];
|
|
30
|
+
if (!value)
|
|
31
|
+
throw new Error(`${arg} requires a value`);
|
|
32
|
+
agents.push(...parseAgents(value));
|
|
33
|
+
i += 1;
|
|
34
|
+
}
|
|
35
|
+
else if (arg.startsWith('--agent=')) {
|
|
36
|
+
agents.push(...parseAgents(arg.slice('--agent='.length)));
|
|
37
|
+
}
|
|
38
|
+
else if (arg.startsWith('--agents=')) {
|
|
39
|
+
agents.push(...parseAgents(arg.slice('--agents='.length)));
|
|
40
|
+
}
|
|
41
|
+
else if (arg === '--scope') {
|
|
42
|
+
const value = args[i + 1];
|
|
43
|
+
if (!value)
|
|
44
|
+
throw new Error('--scope requires a value');
|
|
45
|
+
scope = parseScope(value);
|
|
46
|
+
i += 1;
|
|
47
|
+
}
|
|
48
|
+
else if (arg.startsWith('--scope=')) {
|
|
49
|
+
scope = parseScope(arg.slice('--scope='.length));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw new Error(`Unknown option: ${arg}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
agents: uniqueAgents(agents.length > 0 ? agents : [constants_1.AGENT.OPENCODE]),
|
|
57
|
+
scope,
|
|
58
|
+
dryRun,
|
|
59
|
+
yes,
|
|
60
|
+
help,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function parseAgent(value) {
|
|
64
|
+
const normalized = value.toLowerCase();
|
|
65
|
+
if (normalized === 'opencode')
|
|
66
|
+
return constants_1.AGENT.OPENCODE;
|
|
67
|
+
if (normalized === 'claude' || normalized === 'claude-code')
|
|
68
|
+
return constants_1.AGENT.CLAUDE;
|
|
69
|
+
if (normalized === 'codex')
|
|
70
|
+
return constants_1.AGENT.CODEX;
|
|
71
|
+
if (normalized === 'cursor')
|
|
72
|
+
return constants_1.AGENT.CURSOR;
|
|
73
|
+
throw new Error(`Unsupported agent: ${value}. Supported now: ${(0, registry_1.getInstallableAdapters)().map((adapter) => adapter.agent).join(', ')}. Use root AGENTS.md for cross-agent instructions; no generic adapter is installed.`);
|
|
74
|
+
}
|
|
75
|
+
function parseScope(value) {
|
|
76
|
+
if (value === constants_1.SCOPE.WORKSPACE)
|
|
77
|
+
return constants_1.SCOPE.WORKSPACE;
|
|
78
|
+
if (value === constants_1.SCOPE.GLOBAL)
|
|
79
|
+
return constants_1.SCOPE.GLOBAL;
|
|
80
|
+
throw new Error(`Unsupported scope: ${value}. Use workspace or global.`);
|
|
81
|
+
}
|
|
82
|
+
function uniqueAgents(agents) {
|
|
83
|
+
return [...new Set(agents)];
|
|
84
|
+
}
|
|
85
|
+
function assertWorkspaceScope(scope) {
|
|
86
|
+
if (scope !== constants_1.SCOPE.WORKSPACE) {
|
|
87
|
+
throw new Error('Only --scope workspace is implemented in Plan B Sprint 1. Global install is planned but not active yet.');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function assertInstallableAgents(agents) {
|
|
91
|
+
const unsupported = agents.filter((agent) => (0, registry_1.getAdapterDefinition)(agent).status !== 'implemented');
|
|
92
|
+
if (unsupported.length > 0) {
|
|
93
|
+
throw new Error(`Agent adapter not implemented yet: ${unsupported.join(', ')}. Implemented now: ${(0, registry_1.getInstallableAdapters)().map((adapter) => adapter.agent).join(', ')}. Claude plugin remains first-class through .claude-plugin/.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function parseAgents(value) {
|
|
97
|
+
return value.split(',').map((item) => parseAgent(item.trim())).filter(Boolean);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D,wBAAgB,gBAAgB,IAAI,gBAAgB,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,IAAI,YAAY,GAAG,IAAI,CAElD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readProjectState = readProjectState;
|
|
4
|
+
exports.readManifest = readManifest;
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const fs_1 = require("./fs");
|
|
7
|
+
function readProjectState() {
|
|
8
|
+
return (0, fs_1.readJsonFromWorkspace)(constants_1.KYRO_STATE_PATH);
|
|
9
|
+
}
|
|
10
|
+
function readManifest() {
|
|
11
|
+
return (0, fs_1.readJsonFromWorkspace)(constants_1.KYRO_MANIFEST_PATH);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":";;AAIA,4CAEC;AAED,oCAEC;AAVD,2CAAkE;AAClE,6BAA6C;AAG7C,SAAgB,gBAAgB;IAC9B,OAAO,IAAA,0BAAqB,EAAmB,2BAAe,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,IAAA,0BAAqB,EAAe,8BAAkB,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AGENT, COMMAND_NAMES, SCOPE } from './constants';
|
|
2
|
+
export type Agent = (typeof AGENT)[keyof typeof AGENT];
|
|
3
|
+
export type InstallScope = (typeof SCOPE)[keyof typeof SCOPE];
|
|
4
|
+
export type KyroCommandName = (typeof COMMAND_NAMES)[number];
|
|
5
|
+
export interface KyroInstalledAdapter {
|
|
6
|
+
agent: Agent;
|
|
7
|
+
scope: InstallScope;
|
|
8
|
+
installedAt: string;
|
|
9
|
+
corePath: string;
|
|
10
|
+
commandsPath?: string;
|
|
11
|
+
skillsPath?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface KyroProjectState {
|
|
14
|
+
schemaVersion: 1;
|
|
15
|
+
artifactRoot: string;
|
|
16
|
+
scopes: string[];
|
|
17
|
+
activeScope: string | null;
|
|
18
|
+
installedAdapters: KyroInstalledAdapter[];
|
|
19
|
+
}
|
|
20
|
+
export interface KyroManifest {
|
|
21
|
+
schemaVersion: 1;
|
|
22
|
+
packageName: string;
|
|
23
|
+
packageVersion: string;
|
|
24
|
+
installedAt: string;
|
|
25
|
+
installScope: InstallScope;
|
|
26
|
+
managedFiles: string[];
|
|
27
|
+
managedBlocks: string[];
|
|
28
|
+
adapters: KyroInstalledAdapter[];
|
|
29
|
+
}
|
|
30
|
+
export interface CliOptions {
|
|
31
|
+
agents: Agent[];
|
|
32
|
+
scope: InstallScope;
|
|
33
|
+
dryRun: boolean;
|
|
34
|
+
yes: boolean;
|
|
35
|
+
help: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface OperationPlan {
|
|
38
|
+
action: 'write' | 'copy' | 'mkdir' | 'remove' | 'upsert-block' | 'remove-block';
|
|
39
|
+
path: string;
|
|
40
|
+
source?: string;
|
|
41
|
+
content?: string;
|
|
42
|
+
blockName?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface CheckResult {
|
|
45
|
+
status: 'pass' | 'warn' | 'fail';
|
|
46
|
+
name: string;
|
|
47
|
+
detail: string;
|
|
48
|
+
remedy?: string;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":""}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const app_1 = require("./cli/app");
|
|
5
|
+
void (0, app_1.runCli)().catch((error) => {
|
|
6
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
7
|
+
console.error(`ERROR: ${message}`);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,mCAAmC;AAEnC,KAAK,IAAA,YAAM,GAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACrC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const KYRO_WORKFLOW: {
|
|
2
|
+
readonly name: "kyro-ai";
|
|
3
|
+
readonly stateModel: "markdown";
|
|
4
|
+
readonly artifactRoot: ".agents/kyro/scopes";
|
|
5
|
+
readonly commands: readonly ["forge", "status", "wrap-up"];
|
|
6
|
+
readonly agents: readonly ["orchestrator"];
|
|
7
|
+
readonly skills: readonly ["sprint-forge", "qa-review"];
|
|
8
|
+
};
|
|
9
|
+
export type KyroWorkflow = typeof KYRO_WORKFLOW;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KYRO_WORKFLOW = void 0;
|
|
4
|
+
exports.KYRO_WORKFLOW = {
|
|
5
|
+
name: 'kyro-ai',
|
|
6
|
+
stateModel: 'markdown',
|
|
7
|
+
artifactRoot: '.agents/kyro/scopes',
|
|
8
|
+
commands: ['forge', 'status', 'wrap-up'],
|
|
9
|
+
agents: ['orchestrator'],
|
|
10
|
+
skills: ['sprint-forge', 'qa-review']
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,UAAU;IACtB,YAAY,EAAE,qBAAqB;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IACxC,MAAM,EAAE,CAAC,cAAc,CAAC;IACxB,MAAM,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;CAC7B,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Codex Adapter Guide
|
|
2
|
+
|
|
3
|
+
This guide describes manual Kyro usage with Codex-style agents. Native command or skill registration depends on the specific Codex environment; Kyro compatibility comes from referencing portable markdown files.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
mkdir -p .skills .agents .agents/kyro/scopes
|
|
11
|
+
|
|
12
|
+
cp -r kyro-ai/skills/sprint-forge .skills/
|
|
13
|
+
cp -r kyro-ai/skills/qa-review .skills/
|
|
14
|
+
cp kyro-ai/agents/orchestrator.md .agents/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Onboarding Prompt
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
Use Kyro for this project.
|
|
23
|
+
|
|
24
|
+
Read:
|
|
25
|
+
- .agents/orchestrator.md
|
|
26
|
+
- .skills/sprint-forge/SKILL.md
|
|
27
|
+
- .skills/qa-review/SKILL.md
|
|
28
|
+
|
|
29
|
+
Persist workflow artifacts under .agents/kyro/scopes/{scope}/.
|
|
30
|
+
If slash commands are unavailable, use these intents:
|
|
31
|
+
- forge = analyze/plan/execute/review/close
|
|
32
|
+
- status = read artifacts and report progress/debt
|
|
33
|
+
- wrap-up = close the session and update re-entry prompts
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Common Flows
|
|
39
|
+
|
|
40
|
+
### Review
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
@file .skills/qa-review/SKILL.md
|
|
44
|
+
|
|
45
|
+
Review this change and return APPROVED, APPROVED WITH NOTES,
|
|
46
|
+
CHANGES REQUIRED, or REJECTED.
|
|
47
|
+
|
|
48
|
+
Context:
|
|
49
|
+
- Scope: {scope}
|
|
50
|
+
- Sprint artifacts: .agents/kyro/scopes/{scope}/
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Forge
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
@file .agents/orchestrator.md
|
|
57
|
+
@file .skills/sprint-forge/SKILL.md
|
|
58
|
+
@file .skills/qa-review/SKILL.md
|
|
59
|
+
|
|
60
|
+
Run the forge intent for {scope}.
|
|
61
|
+
Use .agents/kyro/scopes/{scope}/ for findings, roadmap, phases,
|
|
62
|
+
handoffs, and re-entry prompts.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Status
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
@file .skills/sprint-forge/SKILL.md
|
|
69
|
+
|
|
70
|
+
Run the status intent for .agents/kyro/scopes/{scope}/.
|
|
71
|
+
Report sprint progress, open debt, aged debt, blockers, and next action.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Limitations
|
|
77
|
+
|
|
78
|
+
- Codex environments may not register Kyro slash commands automatically.
|
|
79
|
+
- Artifact persistence depends on the agent writing files correctly.
|
|
80
|
+
- Learned rules work through `.agents/kyro/scopes/rules.md`, not through a runtime service.
|
|
81
|
+
|
|
82
|
+
For generic setup and Cursor/OpenCode notes, see [Agent Adapters](agent-adapters.md).
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# OpenCode Adapter Guide
|
|
2
|
+
|
|
3
|
+
This guide describes manual Kyro usage with OpenCode-style agents. Native command or skill registration depends on the host environment; Kyro compatibility comes from referencing portable markdown files.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
mkdir -p .skills .agents .agents/kyro/scopes
|
|
11
|
+
|
|
12
|
+
cp -r kyro-ai/skills/sprint-forge .skills/
|
|
13
|
+
cp -r kyro-ai/skills/qa-review .skills/
|
|
14
|
+
cp kyro-ai/agents/orchestrator.md .agents/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Recommended project structure:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
your-project/
|
|
21
|
+
├── .agents/
|
|
22
|
+
│ ├── orchestrator.md
|
|
23
|
+
│ └── core/
|
|
24
|
+
│ └── {scope}/
|
|
25
|
+
├── .skills/
|
|
26
|
+
│ ├── sprint-forge/
|
|
27
|
+
│ └── qa-review/
|
|
28
|
+
└── src/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Onboarding Prompt
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
Use Kyro for this project.
|
|
37
|
+
|
|
38
|
+
Read:
|
|
39
|
+
@file .agents/orchestrator.md
|
|
40
|
+
@file .skills/sprint-forge/SKILL.md
|
|
41
|
+
@file .skills/qa-review/SKILL.md
|
|
42
|
+
|
|
43
|
+
Persist workflow artifacts under .agents/kyro/scopes/{scope}/.
|
|
44
|
+
If slash commands are unavailable, use:
|
|
45
|
+
- forge = analyze/plan/execute/review/close
|
|
46
|
+
- status = read artifacts and report progress/debt
|
|
47
|
+
- wrap-up = close session and update re-entry prompts
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Example Flows
|
|
53
|
+
|
|
54
|
+
### Sprint Planning
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
@file .agents/orchestrator.md
|
|
58
|
+
@file .skills/sprint-forge/SKILL.md
|
|
59
|
+
|
|
60
|
+
Run the forge intent for {scope}.
|
|
61
|
+
Create or update ROADMAP.md, findings, and the next sprint under
|
|
62
|
+
.agents/kyro/scopes/{scope}/.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### QA Review
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
@file .skills/qa-review/SKILL.md
|
|
69
|
+
@file .agents/kyro/scopes/{scope}/RE-ENTRY-PROMPTS.md
|
|
70
|
+
|
|
71
|
+
Review the current implementation against the sprint plan.
|
|
72
|
+
Return blockers first, then warnings, then approval status.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Session Wrap-Up
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
@file .agents/orchestrator.md
|
|
79
|
+
@file .skills/sprint-forge/SKILL.md
|
|
80
|
+
|
|
81
|
+
Run the wrap-up intent for {scope}.
|
|
82
|
+
Update retro notes, debt status, re-entry prompts, and proposed learned rules.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Limitations
|
|
88
|
+
|
|
89
|
+
- OpenCode may not register Kyro commands or skills natively.
|
|
90
|
+
- You must ensure generated artifacts are saved under `.agents/kyro/scopes/{scope}/`.
|
|
91
|
+
- Learned rules are markdown-based and must be maintained in `rules.md`.
|
|
92
|
+
|
|
93
|
+
For the generic adapter contract and Cursor notes, see [Agent Adapters](agent-adapters.md).
|