kyro-ai 3.3.1 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/WORKFLOW.yaml +1 -1
  3. package/dist/cli/adapters/codex.d.ts.map +1 -1
  4. package/dist/cli/adapters/codex.js +24 -0
  5. package/dist/cli/adapters/codex.js.map +1 -1
  6. package/dist/cli/adapters/command-skills.d.ts +3 -0
  7. package/dist/cli/adapters/command-skills.d.ts.map +1 -1
  8. package/dist/cli/adapters/command-skills.js +16 -4
  9. package/dist/cli/adapters/command-skills.js.map +1 -1
  10. package/dist/cli/adapters/detection.d.ts +5 -0
  11. package/dist/cli/adapters/detection.d.ts.map +1 -0
  12. package/dist/cli/adapters/detection.js +43 -0
  13. package/dist/cli/adapters/detection.js.map +1 -0
  14. package/dist/cli/adapters/opencode.d.ts.map +1 -1
  15. package/dist/cli/adapters/opencode.js +94 -7
  16. package/dist/cli/adapters/opencode.js.map +1 -1
  17. package/dist/cli/adapters/registry-types.d.ts +31 -0
  18. package/dist/cli/adapters/registry-types.d.ts.map +1 -1
  19. package/dist/cli/adapters/registry.d.ts.map +1 -1
  20. package/dist/cli/adapters/registry.js +34 -3
  21. package/dist/cli/adapters/registry.js.map +1 -1
  22. package/dist/cli/adapters/standard.d.ts.map +1 -1
  23. package/dist/cli/adapters/standard.js +25 -0
  24. package/dist/cli/adapters/standard.js.map +1 -1
  25. package/dist/cli/app.d.ts.map +1 -1
  26. package/dist/cli/app.js +4 -0
  27. package/dist/cli/app.js.map +1 -1
  28. package/dist/cli/commands/detect.d.ts +3 -0
  29. package/dist/cli/commands/detect.d.ts.map +1 -0
  30. package/dist/cli/commands/detect.js +39 -0
  31. package/dist/cli/commands/detect.js.map +1 -0
  32. package/dist/cli/commands/doctor.d.ts +1 -1
  33. package/dist/cli/commands/doctor.d.ts.map +1 -1
  34. package/dist/cli/commands/doctor.js +26 -2
  35. package/dist/cli/commands/doctor.js.map +1 -1
  36. package/dist/cli/commands/install.d.ts.map +1 -1
  37. package/dist/cli/commands/install.js +25 -2
  38. package/dist/cli/commands/install.js.map +1 -1
  39. package/dist/cli/commands/preflight.d.ts +11 -0
  40. package/dist/cli/commands/preflight.d.ts.map +1 -0
  41. package/dist/cli/commands/preflight.js +50 -0
  42. package/dist/cli/commands/preflight.js.map +1 -0
  43. package/dist/cli/commands/tui.d.ts.map +1 -1
  44. package/dist/cli/commands/tui.js +19 -3
  45. package/dist/cli/commands/tui.js.map +1 -1
  46. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  47. package/dist/cli/commands/uninstall.js +34 -7
  48. package/dist/cli/commands/uninstall.js.map +1 -1
  49. package/dist/cli/drift.d.ts +19 -0
  50. package/dist/cli/drift.d.ts.map +1 -0
  51. package/dist/cli/drift.js +136 -0
  52. package/dist/cli/drift.js.map +1 -0
  53. package/dist/cli/fs.d.ts.map +1 -1
  54. package/dist/cli/fs.js +6 -70
  55. package/dist/cli/fs.js.map +1 -1
  56. package/dist/cli/help.d.ts.map +1 -1
  57. package/dist/cli/help.js +12 -3
  58. package/dist/cli/help.js.map +1 -1
  59. package/dist/cli/injectors/json-merge.d.ts +3 -0
  60. package/dist/cli/injectors/json-merge.d.ts.map +1 -0
  61. package/dist/cli/injectors/json-merge.js +136 -0
  62. package/dist/cli/injectors/json-merge.js.map +1 -0
  63. package/dist/cli/injectors/managed-block.d.ts +7 -0
  64. package/dist/cli/injectors/managed-block.d.ts.map +1 -0
  65. package/dist/cli/injectors/managed-block.js +39 -0
  66. package/dist/cli/injectors/managed-block.js.map +1 -0
  67. package/dist/cli/options.d.ts.map +1 -1
  68. package/dist/cli/options.js +20 -0
  69. package/dist/cli/options.js.map +1 -1
  70. package/dist/cli/pipeline/operation-steps.d.ts +10 -0
  71. package/dist/cli/pipeline/operation-steps.d.ts.map +1 -0
  72. package/dist/cli/pipeline/operation-steps.js +141 -0
  73. package/dist/cli/pipeline/operation-steps.js.map +1 -0
  74. package/dist/cli/pipeline/orchestrator.d.ts +12 -0
  75. package/dist/cli/pipeline/orchestrator.d.ts.map +1 -0
  76. package/dist/cli/pipeline/orchestrator.js +111 -0
  77. package/dist/cli/pipeline/orchestrator.js.map +1 -0
  78. package/dist/cli/pipeline/types.d.ts +40 -0
  79. package/dist/cli/pipeline/types.d.ts.map +1 -0
  80. package/dist/cli/pipeline/types.js +3 -0
  81. package/dist/cli/pipeline/types.js.map +1 -0
  82. package/dist/cli/types.d.ts +6 -1
  83. package/dist/cli/types.d.ts.map +1 -1
  84. package/docs/HOW-TO-USE-OPENCODE.md +10 -6
  85. package/docs/agent-adapters.md +9 -4
  86. package/docs/cli.md +48 -2
  87. package/docs/getting-started.md +8 -0
  88. package/package.json +3 -2
  89. package/scripts/check-adapter-fixtures.mjs +595 -0
  90. package/docs/kyro-adapter-architecture-redesign.md +0 -987
package/dist/cli/fs.js CHANGED
@@ -17,55 +17,18 @@ const node_fs_1 = require("node:fs");
17
17
  const node_os_1 = require("node:os");
18
18
  const node_path_1 = require("node:path");
19
19
  const constants_1 = require("./constants");
20
+ const managed_block_1 = require("./injectors/managed-block");
21
+ const operation_steps_1 = require("./pipeline/operation-steps");
20
22
  function applyPlan(plan) {
21
- for (const operation of plan) {
22
- const target = resolveManagedPath(operation.path);
23
- if (operation.action === 'mkdir') {
24
- (0, node_fs_1.mkdirSync)(target, { recursive: true });
25
- }
26
- else if (operation.action === 'write') {
27
- (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
28
- (0, node_fs_1.writeFileSync)(target, operation.content ?? '', 'utf-8');
29
- }
30
- else if (operation.action === 'copy') {
31
- if (!operation.source)
32
- throw new Error(`Copy operation missing source for ${operation.path}`);
33
- (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
34
- (0, node_fs_1.copyFileSync)((0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, operation.source), target);
35
- }
36
- else if (operation.action === 'remove') {
37
- (0, node_fs_1.rmSync)(target, { recursive: true, force: true });
38
- }
39
- else if (operation.action === 'symlink') {
40
- if (!operation.source)
41
- throw new Error(`Symlink operation missing source for ${operation.path}`);
42
- (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
43
- (0, node_fs_1.rmSync)(target, { recursive: true, force: true });
44
- (0, node_fs_1.symlinkSync)(resolveManagedPath(operation.source), target, 'dir');
45
- }
46
- else if (operation.action === 'upsert-block') {
47
- if (!operation.blockName)
48
- throw new Error(`Block operation missing blockName for ${operation.path}`);
49
- (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
50
- const existing = (0, node_fs_1.existsSync)(target) ? (0, node_fs_1.readFileSync)(target, 'utf-8') : '';
51
- (0, node_fs_1.writeFileSync)(target, upsertManagedBlock(existing, operation.blockName, operation.content ?? ''), 'utf-8');
52
- }
53
- else if (operation.action === 'remove-block') {
54
- if (!operation.blockName)
55
- throw new Error(`Block operation missing blockName for ${operation.path}`);
56
- if ((0, node_fs_1.existsSync)(target)) {
57
- const existing = (0, node_fs_1.readFileSync)(target, 'utf-8');
58
- (0, node_fs_1.writeFileSync)(target, removeManagedBlock(existing, operation.blockName), 'utf-8');
59
- }
60
- }
61
- }
23
+ (0, operation_steps_1.applyOperationPlan)(plan, { packageRoot: constants_1.PACKAGE_ROOT, resolveManagedPath });
62
24
  }
63
25
  function printPlan(title, plan) {
64
26
  console.log(title);
65
27
  for (const operation of plan) {
66
28
  const source = operation.source ? ` <= ${operation.source}` : '';
67
29
  const block = operation.blockName ? ` # ${operation.blockName}` : '';
68
- console.log(`- ${operation.action} ${operation.path}${block}${source}`);
30
+ const jsonPath = operation.jsonPath ? ` # ${operation.jsonPath}` : '';
31
+ console.log(`- ${operation.action} ${operation.path}${block}${jsonPath}${source}`);
69
32
  }
70
33
  }
71
34
  function addCopyDirectoryPlan(plan, sourceDir, targetDir) {
@@ -126,33 +89,6 @@ function hasManagedBlock(file, blockName) {
126
89
  if (!(0, node_fs_1.existsSync)(path))
127
90
  return false;
128
91
  const text = (0, node_fs_1.readFileSync)(path, 'utf-8');
129
- return text.includes(startMarker(blockName)) && text.includes(endMarker(blockName));
130
- }
131
- function upsertManagedBlock(existing, blockName, content) {
132
- const block = formatManagedBlock(blockName, content);
133
- const pattern = managedBlockPattern(blockName);
134
- if (pattern.test(existing)) {
135
- return existing.replace(pattern, block);
136
- }
137
- const separator = existing.trim().length === 0 ? '' : '\n\n';
138
- return `${existing.trimEnd()}${separator}${block}\n`;
139
- }
140
- function removeManagedBlock(existing, blockName) {
141
- return existing.replace(managedBlockPattern(blockName), '').trimEnd() + '\n';
142
- }
143
- function formatManagedBlock(blockName, content) {
144
- return `${startMarker(blockName)}\n${content.trim()}\n${endMarker(blockName)}`;
145
- }
146
- function managedBlockPattern(blockName) {
147
- return new RegExp(`${escapeRegExp(startMarker(blockName))}[\\s\\S]*?${escapeRegExp(endMarker(blockName))}\\n?`, 'm');
148
- }
149
- function startMarker(blockName) {
150
- return `<!-- kyro-ai:${blockName}:start -->`;
151
- }
152
- function endMarker(blockName) {
153
- return `<!-- kyro-ai:${blockName}:end -->`;
154
- }
155
- function escapeRegExp(value) {
156
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
92
+ return (0, managed_block_1.hasManagedBlockContent)(text, blockName);
157
93
  }
158
94
  //# sourceMappingURL=fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/cli/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/cli/fs.ts"],"names":[],"mappings":"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"}
@@ -1 +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,CA6BhC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAgBtD"}
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,CAmChC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBtD"}
package/dist/cli/help.js CHANGED
@@ -13,6 +13,7 @@ function printHelp() {
13
13
  Usage:
14
14
  kyro Open interactive TUI
15
15
  kyro install Install Kyro standard .agents assets
16
+ kyro detect Detect local agent adapters
16
17
  kyro doctor Check package/workspace health
17
18
  kyro repair [options] Repair scoped JSON artifacts from Markdown
18
19
  kyro scope <subcommand> List, inspect, or set active Kyro scopes
@@ -25,6 +26,10 @@ Options:
25
26
  --kyro-scope <scope> Select Kyro artifact scope
26
27
  --tokens Include token/context budget audit for doctor
27
28
  --artifacts Include Kyro artifact integrity audit for doctor
29
+ --adapters Include adapter inventory for doctor
30
+ --json Print machine-readable output where supported
31
+ --purge-adapter-assets Remove adapter-owned entrypoint files during uninstall
32
+ --prune Clean stale runtime versions and orphaned managed files (sync only)
28
33
  --dry-run Preview changes
29
34
  --yes, -y Skip confirmation prompts where available
30
35
  --help, -h Show help
@@ -32,6 +37,7 @@ Options:
32
37
 
33
38
  Examples:
34
39
  kyro install --scope workspace --dry-run
40
+ kyro detect --json
35
41
  kyro doctor --tokens --artifacts
36
42
  kyro repair --kyro-scope auth-refactor --dry-run
37
43
  kyro scope list
@@ -41,8 +47,11 @@ function printCommandHelp(command) {
41
47
  if (command === 'install') {
42
48
  console.log('Usage: kyro install [--agent standard|opencode|codex] --scope workspace [--dry-run] [--yes]');
43
49
  }
50
+ else if (command === 'detect') {
51
+ console.log('Usage: kyro detect [--agent standard|opencode|codex|claude|cursor] [--json]');
52
+ }
44
53
  else if (command === 'doctor') {
45
- console.log('Usage: kyro doctor [--tokens] [--artifacts] [--kyro-scope <scope>]');
54
+ console.log('Usage: kyro doctor [--tokens] [--artifacts] [--adapters] [--kyro-scope <scope>]');
46
55
  }
47
56
  else if (command === 'repair') {
48
57
  console.log('Usage: kyro repair [--kyro-scope <scope>] [--dry-run] [--yes]');
@@ -51,10 +60,10 @@ function printCommandHelp(command) {
51
60
  console.log('Usage: kyro scope list | inspect <scope> | set-active <scope>');
52
61
  }
53
62
  else if (command === 'sync') {
54
- console.log('Usage: kyro sync [--agent standard|opencode|codex] [--dry-run]');
63
+ console.log('Usage: kyro sync [--agent standard|opencode|codex] [--prune] [--dry-run]');
55
64
  }
56
65
  else if (command === 'uninstall') {
57
- console.log('Usage: kyro uninstall [--dry-run] [--yes]');
66
+ console.log('Usage: kyro uninstall [--purge-adapter-assets] [--dry-run] [--yes]');
58
67
  }
59
68
  else {
60
69
  printHelp();
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":";;AAEA,gDAEC;AAED,8BA6BC;AAED,4CAgBC;AArDD,6BAA2C;AAE3C,SAAgB,kBAAkB;IAChC,OAAO,IAAA,wBAAmB,EAAsB,cAAc,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Bb,CAAC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;IAC7G,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IACpF,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAChF,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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":";;AAEA,gDAEC;AAED,8BAmCC;AAED,4CAkBC;AA7DD,6BAA2C;AAE3C,SAAgB,kBAAkB;IAChC,OAAO,IAAA,wBAAmB,EAAsB,cAAc,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCb,CAAC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;IAC7G,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC7F,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IACjG,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,SAAS,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function mergeJsonObjectContent(existing: string, patchContent: string): string;
2
+ export declare function removeJsonPathContent(existing: string, jsonPath: string): string;
3
+ //# sourceMappingURL=json-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-merge.d.ts","sourceRoot":"","sources":["../../../src/cli/injectors/json-merge.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKhF"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeJsonObjectContent = mergeJsonObjectContent;
4
+ exports.removeJsonPathContent = removeJsonPathContent;
5
+ function mergeJsonObjectContent(existing, patchContent) {
6
+ const base = existing.trim() === '' ? {} : parseJsonObject(existing);
7
+ const patch = parseJsonObject(patchContent);
8
+ return `${JSON.stringify(deepMerge(base, patch), null, 2)}\n`;
9
+ }
10
+ function removeJsonPathContent(existing, jsonPath) {
11
+ if (existing.trim() === '')
12
+ return `${JSON.stringify({}, null, 2)}\n`;
13
+ const base = parseJsonObject(existing);
14
+ removeJsonPath(base, jsonPath.split('.').filter(Boolean));
15
+ return `${JSON.stringify(base, null, 2)}\n`;
16
+ }
17
+ function parseJsonObject(content) {
18
+ const parsed = JSON.parse(stripJsonCommentsAndTrailingCommas(content));
19
+ if (!isPlainObject(parsed))
20
+ throw new Error('JSON merge target must be an object');
21
+ return parsed;
22
+ }
23
+ function deepMerge(base, patch) {
24
+ const merged = { ...base };
25
+ for (const [key, patchValue] of Object.entries(patch)) {
26
+ const baseValue = merged[key];
27
+ if (isPlainObject(baseValue) && isPlainObject(patchValue)) {
28
+ merged[key] = deepMerge(baseValue, patchValue);
29
+ }
30
+ else {
31
+ merged[key] = patchValue;
32
+ }
33
+ }
34
+ return merged;
35
+ }
36
+ function isPlainObject(value) {
37
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
38
+ }
39
+ function removeJsonPath(target, path) {
40
+ if (path.length === 0)
41
+ return;
42
+ const [head, ...tail] = path;
43
+ if (tail.length === 0) {
44
+ delete target[head];
45
+ return;
46
+ }
47
+ const child = target[head];
48
+ if (isPlainObject(child))
49
+ removeJsonPath(child, tail);
50
+ }
51
+ function stripJsonCommentsAndTrailingCommas(content) {
52
+ return stripTrailingCommas(stripJsonComments(content));
53
+ }
54
+ function stripJsonComments(content) {
55
+ let output = '';
56
+ let inString = false;
57
+ let escaping = false;
58
+ for (let index = 0; index < content.length; index += 1) {
59
+ const char = content[index];
60
+ const next = content[index + 1];
61
+ if (inString) {
62
+ output += char;
63
+ if (escaping) {
64
+ escaping = false;
65
+ }
66
+ else if (char === '\\') {
67
+ escaping = true;
68
+ }
69
+ else if (char === '"') {
70
+ inString = false;
71
+ }
72
+ continue;
73
+ }
74
+ if (char === '"') {
75
+ inString = true;
76
+ output += char;
77
+ }
78
+ else if (char === '/' && next === '/') {
79
+ index += 1;
80
+ while (index + 1 < content.length && content[index + 1] !== '\n')
81
+ index += 1;
82
+ }
83
+ else if (char === '/' && next === '*') {
84
+ index += 1;
85
+ while (index + 1 < content.length && !(content[index] === '*' && content[index + 1] === '/'))
86
+ index += 1;
87
+ index += 1;
88
+ }
89
+ else {
90
+ output += char;
91
+ }
92
+ }
93
+ return output;
94
+ }
95
+ function stripTrailingCommas(content) {
96
+ let output = '';
97
+ let inString = false;
98
+ let escaping = false;
99
+ for (let index = 0; index < content.length; index += 1) {
100
+ const char = content[index];
101
+ if (inString) {
102
+ output += char;
103
+ if (escaping) {
104
+ escaping = false;
105
+ }
106
+ else if (char === '\\') {
107
+ escaping = true;
108
+ }
109
+ else if (char === '"') {
110
+ inString = false;
111
+ }
112
+ continue;
113
+ }
114
+ if (char === '"') {
115
+ inString = true;
116
+ output += char;
117
+ continue;
118
+ }
119
+ if (char === ',') {
120
+ const nextNonWhitespace = findNextNonWhitespace(content, index + 1);
121
+ if (nextNonWhitespace === '}' || nextNonWhitespace === ']')
122
+ continue;
123
+ }
124
+ output += char;
125
+ }
126
+ return output;
127
+ }
128
+ function findNextNonWhitespace(content, start) {
129
+ for (let index = start; index < content.length; index += 1) {
130
+ const char = content[index];
131
+ if (!/\s/.test(char))
132
+ return char;
133
+ }
134
+ return null;
135
+ }
136
+ //# sourceMappingURL=json-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-merge.js","sourceRoot":"","sources":["../../../src/cli/injectors/json-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function upsertManagedBlock(existing: string, blockName: string, content: string): string;
2
+ export declare function removeManagedBlock(existing: string, blockName: string): string;
3
+ export declare function hasManagedBlockContent(existing: string, blockName: string): boolean;
4
+ export declare function formatManagedBlock(blockName: string, content: string): string;
5
+ export declare function startMarker(blockName: string): string;
6
+ export declare function endMarker(blockName: string): string;
7
+ //# sourceMappingURL=managed-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-block.d.ts","sourceRoot":"","sources":["../../../src/cli/injectors/managed-block.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ/F;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.upsertManagedBlock = upsertManagedBlock;
4
+ exports.removeManagedBlock = removeManagedBlock;
5
+ exports.hasManagedBlockContent = hasManagedBlockContent;
6
+ exports.formatManagedBlock = formatManagedBlock;
7
+ exports.startMarker = startMarker;
8
+ exports.endMarker = endMarker;
9
+ function upsertManagedBlock(existing, blockName, content) {
10
+ const block = formatManagedBlock(blockName, content);
11
+ const pattern = managedBlockPattern(blockName);
12
+ if (pattern.test(existing)) {
13
+ return existing.replace(pattern, block);
14
+ }
15
+ const separator = existing.trim().length === 0 ? '' : '\n\n';
16
+ return `${existing.trimEnd()}${separator}${block}\n`;
17
+ }
18
+ function removeManagedBlock(existing, blockName) {
19
+ return existing.replace(managedBlockPattern(blockName), '').trimEnd() + '\n';
20
+ }
21
+ function hasManagedBlockContent(existing, blockName) {
22
+ return existing.includes(startMarker(blockName)) && existing.includes(endMarker(blockName));
23
+ }
24
+ function formatManagedBlock(blockName, content) {
25
+ return `${startMarker(blockName)}\n${content.trim()}\n${endMarker(blockName)}`;
26
+ }
27
+ function startMarker(blockName) {
28
+ return `<!-- kyro-ai:${blockName}:start -->`;
29
+ }
30
+ function endMarker(blockName) {
31
+ return `<!-- kyro-ai:${blockName}:end -->`;
32
+ }
33
+ function managedBlockPattern(blockName) {
34
+ return new RegExp(`${escapeRegExp(startMarker(blockName))}[\\s\\S]*?${escapeRegExp(endMarker(blockName))}\\n?`, 'm');
35
+ }
36
+ function escapeRegExp(value) {
37
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
38
+ }
39
+ //# sourceMappingURL=managed-block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-block.js","sourceRoot":"","sources":["../../../src/cli/injectors/managed-block.ts"],"names":[],"mappings":";;AAAA,gDAQC;AAED,gDAEC;AAED,wDAEC;AAED,gDAEC;AAED,kCAEC;AAED,8BAEC;AA5BD,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,SAAiB,EAAE,OAAe;IACrF,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,SAAiB;IACpE,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC/E,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB,EAAE,SAAiB;IACxE,OAAO,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,OAAe;IACnE,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,SAAgB,WAAW,CAAC,SAAiB;IAC3C,OAAO,gBAAgB,SAAS,YAAY,CAAC;AAC/C,CAAC;AAED,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO,gBAAgB,SAAS,UAAU,CAAC;AAC7C,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,aAAa,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
@@ -1 +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,CA4DvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAQ/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"}
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,CA4EvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAQ/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"}
@@ -16,7 +16,11 @@ function parseOptions(args) {
16
16
  let help = false;
17
17
  let tokens = false;
18
18
  let artifacts = false;
19
+ let adapters = false;
19
20
  let kyroScope = null;
21
+ let json = false;
22
+ let purgeAdapterAssets = false;
23
+ let prune = false;
20
24
  for (let i = 0; i < args.length; i += 1) {
21
25
  const arg = args[i];
22
26
  if (arg === '--dry-run') {
@@ -34,6 +38,18 @@ function parseOptions(args) {
34
38
  else if (arg === '--artifacts') {
35
39
  artifacts = true;
36
40
  }
41
+ else if (arg === '--adapters') {
42
+ adapters = true;
43
+ }
44
+ else if (arg === '--json') {
45
+ json = true;
46
+ }
47
+ else if (arg === '--purge-adapter-assets') {
48
+ purgeAdapterAssets = true;
49
+ }
50
+ else if (arg === '--prune') {
51
+ prune = true;
52
+ }
37
53
  else if (arg === '--kyro-scope') {
38
54
  const value = args[i + 1];
39
55
  if (!value)
@@ -79,7 +95,11 @@ function parseOptions(args) {
79
95
  help,
80
96
  tokens,
81
97
  artifacts,
98
+ adapters,
82
99
  kyroScope,
100
+ json,
101
+ purgeAdapterAssets,
102
+ prune,
83
103
  };
84
104
  }
85
105
  function parseAgent(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { OperationPlan } from '../types';
2
+ import type { StagePlan } from './types';
3
+ interface OperationExecutionContext {
4
+ packageRoot: string;
5
+ resolveManagedPath(path: string): string;
6
+ }
7
+ export declare function applyOperationPlan(plan: OperationPlan[], context: OperationExecutionContext): void;
8
+ export declare function operationPlanToStagePlan(plan: OperationPlan[], context: OperationExecutionContext): StagePlan;
9
+ export {};
10
+ //# sourceMappingURL=operation-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-steps.d.ts","sourceRoot":"","sources":["../../../src/cli/pipeline/operation-steps.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAkB,SAAS,EAAQ,MAAM,SAAS,CAAC;AAE/D,UAAU,yBAAyB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C;AAQD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAGlG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,yBAAyB,GAAG,SAAS,CAK7G"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyOperationPlan = applyOperationPlan;
4
+ exports.operationPlanToStagePlan = operationPlanToStagePlan;
5
+ const node_fs_1 = require("node:fs");
6
+ const node_os_1 = require("node:os");
7
+ const node_path_1 = require("node:path");
8
+ const managed_block_1 = require("../injectors/managed-block");
9
+ const json_merge_1 = require("../injectors/json-merge");
10
+ const orchestrator_1 = require("./orchestrator");
11
+ function applyOperationPlan(plan, context) {
12
+ const result = new orchestrator_1.PipelineOrchestrator('stop-on-error').execute(operationPlanToStagePlan(plan, context));
13
+ if (result.error)
14
+ throw formatPipelineError(result);
15
+ }
16
+ function operationPlanToStagePlan(plan, context) {
17
+ return {
18
+ prepare: [],
19
+ apply: plan.map((operation, index) => new OperationStep(index, operation, context)),
20
+ };
21
+ }
22
+ class OperationStep {
23
+ operation;
24
+ context;
25
+ id;
26
+ description;
27
+ snapshot = null;
28
+ constructor(index, operation, context) {
29
+ this.operation = operation;
30
+ this.context = context;
31
+ this.id = `${index}:${operation.action}:${operation.path}`;
32
+ this.description = `${operation.action} ${operation.path}`;
33
+ }
34
+ run() {
35
+ const target = this.context.resolveManagedPath(this.operation.path);
36
+ this.snapshot = snapshotTarget(target);
37
+ applyOperation(this.operation, target, this.context);
38
+ }
39
+ rollback() {
40
+ if (!this.snapshot)
41
+ return;
42
+ restoreTarget(this.context.resolveManagedPath(this.operation.path), this.snapshot);
43
+ }
44
+ }
45
+ function applyOperation(operation, target, context) {
46
+ if (operation.action === 'mkdir') {
47
+ (0, node_fs_1.mkdirSync)(target, { recursive: true });
48
+ }
49
+ else if (operation.action === 'write') {
50
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
51
+ (0, node_fs_1.writeFileSync)(target, operation.content ?? '', 'utf-8');
52
+ }
53
+ else if (operation.action === 'copy') {
54
+ if (!operation.source)
55
+ throw new Error(`Copy operation missing source for ${operation.path}`);
56
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
57
+ (0, node_fs_1.copyFileSync)((0, node_path_1.resolve)(context.packageRoot, operation.source), target);
58
+ }
59
+ else if (operation.action === 'remove') {
60
+ (0, node_fs_1.rmSync)(target, { recursive: true, force: true });
61
+ }
62
+ else if (operation.action === 'rmdir-if-empty') {
63
+ if ((0, node_fs_1.existsSync)(target) && (0, node_fs_1.lstatSync)(target).isDirectory() && (0, node_fs_1.readdirSync)(target).length === 0) {
64
+ (0, node_fs_1.rmdirSync)(target);
65
+ }
66
+ }
67
+ else if (operation.action === 'symlink') {
68
+ if (!operation.source)
69
+ throw new Error(`Symlink operation missing source for ${operation.path}`);
70
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
71
+ (0, node_fs_1.rmSync)(target, { recursive: true, force: true });
72
+ (0, node_fs_1.symlinkSync)(context.resolveManagedPath(operation.source), target, 'dir');
73
+ }
74
+ else if (operation.action === 'upsert-block') {
75
+ if (!operation.blockName)
76
+ throw new Error(`Block operation missing blockName for ${operation.path}`);
77
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
78
+ const existing = (0, node_fs_1.existsSync)(target) ? (0, node_fs_1.readFileSync)(target, 'utf-8') : '';
79
+ (0, node_fs_1.writeFileSync)(target, (0, managed_block_1.upsertManagedBlock)(existing, operation.blockName, operation.content ?? ''), 'utf-8');
80
+ }
81
+ else if (operation.action === 'remove-block') {
82
+ if (!operation.blockName)
83
+ throw new Error(`Block operation missing blockName for ${operation.path}`);
84
+ if ((0, node_fs_1.existsSync)(target)) {
85
+ const existing = (0, node_fs_1.readFileSync)(target, 'utf-8');
86
+ (0, node_fs_1.writeFileSync)(target, (0, managed_block_1.removeManagedBlock)(existing, operation.blockName), 'utf-8');
87
+ }
88
+ }
89
+ else if (operation.action === 'merge-json') {
90
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
91
+ const existing = (0, node_fs_1.existsSync)(target) ? (0, node_fs_1.readFileSync)(target, 'utf-8') : '';
92
+ (0, node_fs_1.writeFileSync)(target, (0, json_merge_1.mergeJsonObjectContent)(existing, operation.content ?? '{}'), 'utf-8');
93
+ }
94
+ else if (operation.action === 'remove-json-key') {
95
+ if (!operation.jsonPath)
96
+ throw new Error(`JSON remove operation missing jsonPath for ${operation.path}`);
97
+ if ((0, node_fs_1.existsSync)(target)) {
98
+ const existing = (0, node_fs_1.readFileSync)(target, 'utf-8');
99
+ (0, node_fs_1.writeFileSync)(target, (0, json_merge_1.removeJsonPathContent)(existing, operation.jsonPath), 'utf-8');
100
+ }
101
+ }
102
+ }
103
+ function snapshotTarget(target) {
104
+ if (!(0, node_fs_1.existsSync)(target))
105
+ return { kind: 'missing' };
106
+ const stat = (0, node_fs_1.lstatSync)(target);
107
+ if (stat.isSymbolicLink()) {
108
+ return { kind: 'symlink', link: (0, node_fs_1.readlinkSync)(target) };
109
+ }
110
+ if (stat.isDirectory()) {
111
+ const backupRoot = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'kyro-pipeline-'));
112
+ const backupPath = (0, node_path_1.join)(backupRoot, 'target');
113
+ (0, node_fs_1.cpSync)(target, backupPath, { recursive: true, verbatimSymlinks: true });
114
+ return { kind: 'directory', backupPath };
115
+ }
116
+ return { kind: 'file', content: (0, node_fs_1.readFileSync)(target), mode: stat.mode };
117
+ }
118
+ function restoreTarget(target, snapshot) {
119
+ (0, node_fs_1.rmSync)(target, { recursive: true, force: true });
120
+ if (snapshot.kind === 'missing')
121
+ return;
122
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
123
+ if (snapshot.kind === 'file') {
124
+ (0, node_fs_1.writeFileSync)(target, snapshot.content);
125
+ (0, node_fs_1.chmodSync)(target, snapshot.mode);
126
+ }
127
+ else if (snapshot.kind === 'directory') {
128
+ (0, node_fs_1.cpSync)(snapshot.backupPath, target, { recursive: true, verbatimSymlinks: true });
129
+ (0, node_fs_1.rmSync)((0, node_path_1.dirname)(snapshot.backupPath), { recursive: true, force: true });
130
+ }
131
+ else if (snapshot.kind === 'symlink') {
132
+ (0, node_fs_1.symlinkSync)(snapshot.link, target);
133
+ }
134
+ }
135
+ function formatPipelineError(result) {
136
+ const message = result.rollback && !result.rollback.success
137
+ ? `Apply failed and rollback failed: ${result.error?.message ?? 'unknown error'}`
138
+ : `Apply failed and rollback completed: ${result.error?.message ?? 'unknown error'}`;
139
+ return new Error(message);
140
+ }
141
+ //# sourceMappingURL=operation-steps.js.map