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.
Files changed (140) hide show
  1. package/.claude-plugin/README.md +29 -0
  2. package/.claude-plugin/marketplace.json +52 -0
  3. package/.claude-plugin/plugin.json +40 -0
  4. package/.claude-plugin/settings.json +16 -0
  5. package/LICENSE +201 -0
  6. package/README.md +331 -0
  7. package/WORKFLOW.yaml +36 -0
  8. package/agents/orchestrator.md +393 -0
  9. package/commands/forge.md +55 -0
  10. package/commands/status.md +92 -0
  11. package/commands/wrap-up.md +85 -0
  12. package/config.json +17 -0
  13. package/contexts/init.md +64 -0
  14. package/contexts/review.md +89 -0
  15. package/contexts/sprint.md +90 -0
  16. package/dist/cli/adapters/codex.d.ts +3 -0
  17. package/dist/cli/adapters/codex.d.ts.map +1 -0
  18. package/dist/cli/adapters/codex.js +55 -0
  19. package/dist/cli/adapters/codex.js.map +1 -0
  20. package/dist/cli/adapters/command-skills.d.ts +5 -0
  21. package/dist/cli/adapters/command-skills.d.ts.map +1 -0
  22. package/dist/cli/adapters/command-skills.js +41 -0
  23. package/dist/cli/adapters/command-skills.js.map +1 -0
  24. package/dist/cli/adapters/opencode.d.ts +5 -0
  25. package/dist/cli/adapters/opencode.d.ts.map +1 -0
  26. package/dist/cli/adapters/opencode.js +41 -0
  27. package/dist/cli/adapters/opencode.js.map +1 -0
  28. package/dist/cli/adapters/registry-types.d.ts +13 -0
  29. package/dist/cli/adapters/registry-types.d.ts.map +1 -0
  30. package/dist/cli/adapters/registry-types.js +3 -0
  31. package/dist/cli/adapters/registry-types.js.map +1 -0
  32. package/dist/cli/adapters/registry.d.ts +7 -0
  33. package/dist/cli/adapters/registry.d.ts.map +1 -0
  34. package/dist/cli/adapters/registry.js +46 -0
  35. package/dist/cli/adapters/registry.js.map +1 -0
  36. package/dist/cli/app.d.ts +2 -0
  37. package/dist/cli/app.d.ts.map +1 -0
  38. package/dist/cli/app.js +46 -0
  39. package/dist/cli/app.js.map +1 -0
  40. package/dist/cli/commands/doctor.d.ts +2 -0
  41. package/dist/cli/commands/doctor.d.ts.map +1 -0
  42. package/dist/cli/commands/doctor.js +133 -0
  43. package/dist/cli/commands/doctor.js.map +1 -0
  44. package/dist/cli/commands/install.d.ts +4 -0
  45. package/dist/cli/commands/install.d.ts.map +1 -0
  46. package/dist/cli/commands/install.js +42 -0
  47. package/dist/cli/commands/install.js.map +1 -0
  48. package/dist/cli/commands/tui.d.ts +2 -0
  49. package/dist/cli/commands/tui.d.ts.map +1 -0
  50. package/dist/cli/commands/tui.js +35 -0
  51. package/dist/cli/commands/tui.js.map +1 -0
  52. package/dist/cli/commands/uninstall.d.ts +3 -0
  53. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  54. package/dist/cli/commands/uninstall.js +33 -0
  55. package/dist/cli/commands/uninstall.js.map +1 -0
  56. package/dist/cli/constants.d.ts +23 -0
  57. package/dist/cli/constants.d.ts.map +1 -0
  58. package/dist/cli/constants.js +27 -0
  59. package/dist/cli/constants.js.map +1 -0
  60. package/dist/cli/fs.d.ts +12 -0
  61. package/dist/cli/fs.d.ts.map +1 -0
  62. package/dist/cli/fs.js +133 -0
  63. package/dist/cli/fs.js.map +1 -0
  64. package/dist/cli/help.d.ts +4 -0
  65. package/dist/cli/help.d.ts.map +1 -0
  66. package/dist/cli/help.js +28 -0
  67. package/dist/cli/help.js.map +1 -0
  68. package/dist/cli/install-plan.d.ts +3 -0
  69. package/dist/cli/install-plan.d.ts.map +1 -0
  70. package/dist/cli/install-plan.js +93 -0
  71. package/dist/cli/install-plan.js.map +1 -0
  72. package/dist/cli/options.d.ts +8 -0
  73. package/dist/cli/options.d.ts.map +1 -0
  74. package/dist/cli/options.js +99 -0
  75. package/dist/cli/options.js.map +1 -0
  76. package/dist/cli/state.d.ts +4 -0
  77. package/dist/cli/state.d.ts.map +1 -0
  78. package/dist/cli/state.js +13 -0
  79. package/dist/cli/state.js.map +1 -0
  80. package/dist/cli/types.d.ts +50 -0
  81. package/dist/cli/types.d.ts.map +1 -0
  82. package/dist/cli/types.js +3 -0
  83. package/dist/cli/types.js.map +1 -0
  84. package/dist/cli.d.ts +3 -0
  85. package/dist/cli.d.ts.map +1 -0
  86. package/dist/cli.js +10 -0
  87. package/dist/cli.js.map +1 -0
  88. package/dist/index.d.ts +10 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +12 -0
  91. package/dist/index.js.map +1 -0
  92. package/docs/HOW-TO-USE-CODEX.md +82 -0
  93. package/docs/HOW-TO-USE-OPENCODE.md +93 -0
  94. package/docs/agent-adapters.md +152 -0
  95. package/docs/agents-reference.md +153 -0
  96. package/docs/architecture.md +159 -0
  97. package/docs/architecture.mmd +21 -0
  98. package/docs/cli.md +87 -0
  99. package/docs/commands-reference.md +138 -0
  100. package/docs/context-management.md +92 -0
  101. package/docs/getting-started.md +165 -0
  102. package/docs/harness-migration.md +95 -0
  103. package/docs/programmatic-usage.md +109 -0
  104. package/docs/rules-guide.md +216 -0
  105. package/package.json +78 -0
  106. package/rules/context-persistence.md +54 -0
  107. package/rules/estimation.md +56 -0
  108. package/rules/learning-rules.md +66 -0
  109. package/rules/quality-gates.md +65 -0
  110. package/rules/sprint-discipline.md +49 -0
  111. package/scripts/check-markdown-links.mjs +97 -0
  112. package/scripts/check-versions.mjs +46 -0
  113. package/scripts/make-cli-executable.mjs +12 -0
  114. package/settings.example.json +27 -0
  115. package/skills/qa-review/SKILL.md +660 -0
  116. package/skills/qa-review/manifest.json +41 -0
  117. package/skills/sprint-forge/SKILL.md +260 -0
  118. package/skills/sprint-forge/assets/README.md +31 -0
  119. package/skills/sprint-forge/assets/helpers/analysis-guide.md +207 -0
  120. package/skills/sprint-forge/assets/helpers/analyzer.md +83 -0
  121. package/skills/sprint-forge/assets/helpers/debt-tracker.md +122 -0
  122. package/skills/sprint-forge/assets/helpers/handoff.md +103 -0
  123. package/skills/sprint-forge/assets/helpers/learner.md +69 -0
  124. package/skills/sprint-forge/assets/helpers/metrics.md +81 -0
  125. package/skills/sprint-forge/assets/helpers/reentry-generator.md +121 -0
  126. package/skills/sprint-forge/assets/helpers/reviewer.md +71 -0
  127. package/skills/sprint-forge/assets/helpers/sprint-generator.md +145 -0
  128. package/skills/sprint-forge/assets/modes/INIT.md +204 -0
  129. package/skills/sprint-forge/assets/modes/SPRINT.md +253 -0
  130. package/skills/sprint-forge/assets/modes/STATUS.md +145 -0
  131. package/skills/sprint-forge/assets/templates/PROJECT-README.md +107 -0
  132. package/skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md +132 -0
  133. package/skills/sprint-forge/assets/templates/ROADMAP.md +126 -0
  134. package/skills/sprint-forge/assets/templates/SPRINT.md +189 -0
  135. package/skills/sprint-forge/manifest.json +165 -0
  136. package/templates/split-claude-md/AGENTS.md +96 -0
  137. package/templates/split-claude-md/CLAUDE.md +67 -0
  138. package/templates/split-claude-md/COMMANDS.md +37 -0
  139. package/templates/split-claude-md/LEARNED.md +39 -0
  140. 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,4 @@
1
+ import type { KyroManifest, KyroProjectState } from './types';
2
+ export declare function readProjectState(): KyroProjectState | null;
3
+ export declare function readManifest(): KyroManifest | null;
4
+ //# sourceMappingURL=state.d.ts.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -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
@@ -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"}
@@ -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).